posthog-js 1.231.0 → 1.231.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/all-external-dependencies.js +1 -1
- package/dist/all-external-dependencies.js.map +1 -1
- package/dist/array.full.es5.js +1 -1
- package/dist/array.full.es5.js.map +1 -1
- package/dist/array.full.js +1 -1
- package/dist/array.full.js.map +1 -1
- package/dist/array.full.no-external.js +1 -1
- package/dist/array.full.no-external.js.map +1 -1
- package/dist/array.js +1 -1
- package/dist/array.no-external.js +1 -1
- package/dist/customizations.full.js +1 -1
- package/dist/main.js +1 -1
- package/dist/module.full.js +1 -1
- package/dist/module.full.js.map +1 -1
- package/dist/module.full.no-external.js +1 -1
- package/dist/module.full.no-external.js.map +1 -1
- package/dist/module.js +1 -1
- package/dist/module.no-external.js +1 -1
- package/dist/posthog-recorder.js +1 -1
- package/dist/posthog-recorder.js.map +1 -1
- package/dist/src/extensions/surveys.d.ts +3 -0
- package/dist/surveys-preview.js +1 -1
- package/dist/surveys-preview.js.map +1 -1
- package/dist/surveys.js +1 -1
- package/dist/surveys.js.map +1 -1
- package/lib/package.json +4 -4
- package/lib/src/extensions/surveys.d.ts +3 -0
- package/lib/src/extensions/surveys.jsx +35 -19
- package/lib/src/extensions/surveys.jsx.map +1 -1
- package/package.json +4 -4
- package/react/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog-recorder.js","sources":["../node_modules/.pnpm/@posthog+rrweb-record@0.0.10/node_modules/@posthog/rrweb-record/dist/rrweb-record.js","../node_modules/.pnpm/@posthog+rrweb-plugin-console-record@0.0.10_@posthog+rrweb-utils@0.0.9_@posthog+rrweb@0.0.9/node_modules/@posthog/rrweb-plugin-console-record/dist/rrweb-plugin-console-record.js","../src/utils/globals.ts","../src/types.ts","../src/utils/type-utils.ts","../src/utils/logger.ts","../src/utils/index.ts","../src/utils/request-utils.ts","../src/extensions/replay/rrweb-plugins/patch.ts","../src/extensions/replay/external/denylist.ts","../src/extensions/replay/config.ts","../src/extensions/replay/external/network-plugin.ts","../src/entrypoints/posthog-recorder.ts"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$3 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$3 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nfunction angularZoneUnpatchedAlternative$1(key) {\n var _a2, _b;\n const angularUnpatchedVersionSymbol = (_b = (_a2 = globalThis == null ? void 0 : globalThis.Zone) == null ? void 0 : _a2.__symbol__) == null ? void 0 : _b.call(_a2, key);\n if (angularUnpatchedVersionSymbol && globalThis[angularUnpatchedVersionSymbol]) {\n return globalThis[angularUnpatchedVersionSymbol];\n } else {\n return void 0;\n }\n}\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const candidate = angularZoneUnpatchedAlternative$1(key) || globalThis[key];\n const defaultPrototype = candidate.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods) {\n untaintedBasePrototype$1[key] = candidate.prototype;\n return candidate.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return candidate.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nfunction patch$1(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1,\n patch: patch$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n let sheetHref = s2.href;\n if (!sheetHref && s2.ownerNode && s2.ownerNode.ownerDocument) {\n sheetHref = s2.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, sheetHref)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x = 0; x < canvas.width; x += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x,\n y,\n Math.min(chunkSize, canvas.width - x),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nconst normalizationCache = /* @__PURE__ */ new Map();\nconst splitCache = /* @__PURE__ */ new Map();\nfunction normalizeCssString(cssText) {\n if (!normalizationCache.has(cssText)) {\n const normalized = cssText.replace(/(\\/\\*[^*]*\\*\\/)|[\\s;]/g, \"\");\n normalizationCache.set(cssText, normalized);\n }\n return normalizationCache.get(cssText);\n}\nfunction splitCssText(cssText, style) {\n const og = cssText;\n if (splitCache.has(cssText)) {\n return splitCache.get(cssText);\n }\n const childNodes2 = Array.from(style.childNodes);\n const splits = [];\n let iterLimit = 0;\n if (childNodes2.length > 1 && cssText && typeof cssText === \"string\") {\n let cssTextNorm = normalizeCssString(cssText);\n const normFactor = cssTextNorm.length / cssText.length;\n for (let i2 = 1; i2 < childNodes2.length; i2++) {\n if (childNodes2[i2].textContent && typeof childNodes2[i2].textContent === \"string\") {\n const textContentNorm = normalizeCssString(childNodes2[i2].textContent);\n let j = 3;\n for (; j < textContentNorm.length; j++) {\n if (\n // keep consuming css identifiers (to get a decent chunk more quickly)\n textContentNorm[j].match(/[a-zA-Z0-9]/) || // substring needs to be unique to this section\n textContentNorm.indexOf(textContentNorm.substring(0, j), 1) !== -1\n ) {\n continue;\n }\n break;\n }\n for (; j < textContentNorm.length; j++) {\n const bit = textContentNorm.substring(0, j);\n const bits = cssTextNorm.split(bit);\n let splitNorm = -1;\n if (bits.length === 2) {\n splitNorm = cssTextNorm.indexOf(bit);\n } else if (bits.length > 2 && bits[0] === \"\" && childNodes2[i2 - 1].textContent !== \"\") {\n splitNorm = cssTextNorm.indexOf(bit, 1);\n }\n if (splitNorm !== -1) {\n let k = Math.floor(splitNorm / normFactor);\n for (; k > 0 && k < cssText.length; ) {\n iterLimit += 1;\n if (iterLimit > 50 * childNodes2.length) {\n splits.push(cssText);\n return splits;\n }\n const normPart = normalizeCssString(cssText.substring(0, k));\n if (normPart.length === splitNorm) {\n splits.push(cssText.substring(0, k));\n cssText = cssText.substring(k);\n cssTextNorm = cssTextNorm.substring(splitNorm);\n break;\n } else if (normPart.length < splitNorm) {\n k += Math.max(\n 1,\n Math.floor((splitNorm - normPart.length) / normFactor)\n );\n } else {\n k -= Math.max(\n 1,\n Math.floor((normPart.length - splitNorm) * normFactor)\n );\n }\n }\n break;\n }\n }\n }\n }\n }\n splits.push(cssText);\n if (og) {\n splitCache.set(og, splits);\n }\n return splits;\n}\nfunction markCssSplits(cssText, style) {\n return splitCssText(cssText, style).join(\"/* rr_split */\");\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$3.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId,\n cssCaptured\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$3.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$3.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n const { needsMask, maskTextFn, rootId, cssCaptured } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let textContent2 = \"\";\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isScript) {\n textContent2 = \"SCRIPT_PLACEHOLDER\";\n } else if (!cssCaptured) {\n textContent2 = index$1.textContent(n2);\n if (isStyle && textContent2) {\n textContent2 = absolutifyURLs(textContent2, getHref(options.doc));\n }\n }\n if (!isStyle && !isScript && textContent2 && needsMask) {\n textContent2 = maskTextFn ? maskTextFn(textContent2, index$1.parentElement(n2)) : textContent2.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$3.Text,\n textContent: textContent2 || \"\",\n rootId\n };\n}\nfunction findStylesheet(doc, href) {\n return Array.from(doc.styleSheets).find((s2) => s2.href === href);\n}\nfunction hrefFrom(n2) {\n return n2.href;\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const href = hrefFrom(n2);\n if (href) {\n let stylesheet = findStylesheet(doc, href);\n if (!stylesheet && href.includes(\".css\")) {\n const rootDomain = window.location.origin;\n const stylesheetPath = href.replace(window.location.href, \"\");\n const potentialStylesheetHref = rootDomain + \"/\" + stylesheetPath;\n stylesheet = findStylesheet(doc, potentialStylesheetHref);\n }\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n }\n if (tagName === \"style\" && n2.sheet) {\n let cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n if (n2.childNodes.length > 1) {\n cssText = markCssSplits(cssText, n2);\n }\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n try {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n } catch {\n attributes.rr_open_mode = \"modal\";\n attributes.ph_rr_could_not_detect_modal = true;\n }\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$3.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$3.Comment) {\n return true;\n } else if (sn.type === NodeType$3.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" && sn.attributes.as === \"script\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false,\n cssCaptured = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n cssCaptured\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$3.Text && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$3.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$3.Document || serializedNode.type === NodeType$3.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n cssCaptured: false\n };\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n if (serializedNode.type === NodeType$3.Element && serializedNode.attributes._cssText !== void 0 && typeof serializedNode.attributes._cssText === \"string\") {\n bypassOptions.cssCaptured = true;\n }\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$3.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar hasRequiredPicocolors_browser$1;\nfunction requirePicocolors_browser$1() {\n if (hasRequiredPicocolors_browser$1) return picocolors_browser$1.exports;\n hasRequiredPicocolors_browser$1 = 1;\n var x = String;\n var create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x, blackBright: x, redBright: x, greenBright: x, yellowBright: x, blueBright: x, magentaBright: x, cyanBright: x, whiteBright: x, bgBlackBright: x, bgRedBright: x, bgGreenBright: x, bgYellowBright: x, bgBlueBright: x, bgMagentaBright: x, bgCyanBright: x, bgWhiteBright: x };\n };\n picocolors_browser$1.exports = create();\n picocolors_browser$1.exports.createColors = create;\n return picocolors_browser$1.exports;\n}\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nvar cssSyntaxError$1;\nvar hasRequiredCssSyntaxError$1;\nfunction requireCssSyntaxError$1() {\n if (hasRequiredCssSyntaxError$1) return cssSyntaxError$1;\n hasRequiredCssSyntaxError$1 = 1;\n let pico = /* @__PURE__ */ requirePicocolors_browser$1();\n let terminalHighlight = require$$2$1;\n class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin) {\n this.plugin = plugin;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"<css input>\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n let aside = (text) => text;\n let mark = (text) => text;\n let highlight = (text) => text;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n if (terminalHighlight) {\n highlight = (text) => terminalHighlight(text);\n }\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20;\n let subLineStart = Math.max(0, this.column - padding);\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n );\n let subLine = line.slice(subLineStart, subLineEnd);\n let spacing2 = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, Math.min(this.column - 1, padding - 1)).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + highlight(subLine) + \"\\n \" + spacing2 + mark(\"^\");\n }\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + highlight(line) + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + highlight(line);\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n }\n cssSyntaxError$1 = CssSyntaxError;\n CssSyntaxError.default = CssSyntaxError;\n return cssSyntaxError$1;\n}\nvar stringifier$1;\nvar hasRequiredStringifier$1;\nfunction requireStringifier$1() {\n if (hasRequiredStringifier$1) return stringifier$1;\n hasRequiredStringifier$1 = 1;\n const DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n };\n function capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n }\n class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n }\n stringifier$1 = Stringifier;\n Stringifier.default = Stringifier;\n return stringifier$1;\n}\nvar stringify_1$1;\nvar hasRequiredStringify$1;\nfunction requireStringify$1() {\n if (hasRequiredStringify$1) return stringify_1$1;\n hasRequiredStringify$1 = 1;\n let Stringifier = requireStringifier$1();\n function stringify(node2, builder) {\n let str = new Stringifier(builder);\n str.stringify(node2);\n }\n stringify_1$1 = stringify;\n stringify.default = stringify;\n return stringify_1$1;\n}\nvar symbols$1 = {};\nvar hasRequiredSymbols$1;\nfunction requireSymbols$1() {\n if (hasRequiredSymbols$1) return symbols$1;\n hasRequiredSymbols$1 = 1;\n symbols$1.isClean = Symbol(\"isClean\");\n symbols$1.my = Symbol(\"my\");\n return symbols$1;\n}\nvar node$1;\nvar hasRequiredNode$1;\nfunction requireNode$1() {\n if (hasRequiredNode$1) return node$1;\n hasRequiredNode$1 = 1;\n let CssSyntaxError = requireCssSyntaxError$1();\n let Stringifier = requireStringifier$1();\n let stringify = requireStringify$1();\n let { isClean, my } = requireSymbols$1();\n function cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n }\n function sourceOffset(inputCSS, position) {\n if (position && typeof position.offset !== \"undefined\") {\n return position.offset;\n }\n let column = 1;\n let line = 1;\n let offset = 0;\n for (let i2 = 0; i2 < inputCSS.length; i2++) {\n if (line === position.line && column === position.column) {\n offset = i2;\n break;\n }\n if (inputCSS[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return offset;\n }\n class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean] = false;\n this[my] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true;\n }\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n );\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2);\n }\n return pos;\n }\n positionInside(index2) {\n let column = this.source.start.column;\n let line = this.source.start.line;\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let offset = sourceOffset(inputString, this.source.start);\n let end = offset + index2;\n for (let i2 = offset; i2 < end; i2++) {\n if (inputString[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n );\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2);\n end = this.positionInside(\n index2 + opts.word.length\n );\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n }\n node$1 = Node2;\n Node2.default = Node2;\n return node$1;\n}\nvar comment$1;\nvar hasRequiredComment$1;\nfunction requireComment$1() {\n if (hasRequiredComment$1) return comment$1;\n hasRequiredComment$1 = 1;\n let Node2 = requireNode$1();\n class Comment extends Node2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n }\n comment$1 = Comment;\n Comment.default = Comment;\n return comment$1;\n}\nvar declaration$1;\nvar hasRequiredDeclaration$1;\nfunction requireDeclaration$1() {\n if (hasRequiredDeclaration$1) return declaration$1;\n hasRequiredDeclaration$1 = 1;\n let Node2 = requireNode$1();\n class Declaration extends Node2 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n declaration$1 = Declaration;\n Declaration.default = Declaration;\n return declaration$1;\n}\nvar container$1;\nvar hasRequiredContainer$1;\nfunction requireContainer$1() {\n if (hasRequiredContainer$1) return container$1;\n hasRequiredContainer$1 = 1;\n let Comment = requireComment$1();\n let Declaration = requireDeclaration$1();\n let Node2 = requireNode$1();\n let { isClean, my } = requireSymbols$1();\n let AtRule, parse, Root, Rule;\n function cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n }\n function markTreeDirty(node2) {\n node2[isClean] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markTreeDirty(i2);\n }\n }\n }\n class Container extends Node2 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration(nodes)];\n } else if (nodes.selector || nodes.selectors) {\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean]) markTreeDirty(i2);\n if (!i2.raws) i2.raws = {};\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n Container.registerParse = (dependant) => {\n parse = dependant;\n };\n Container.registerRule = (dependant) => {\n Rule = dependant;\n };\n Container.registerAtRule = (dependant) => {\n AtRule = dependant;\n };\n Container.registerRoot = (dependant) => {\n Root = dependant;\n };\n container$1 = Container;\n Container.default = Container;\n Container.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root.prototype);\n }\n node2[my] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container.rebuild(child);\n });\n }\n };\n return container$1;\n}\nvar atRule$1;\nvar hasRequiredAtRule$1;\nfunction requireAtRule$1() {\n if (hasRequiredAtRule$1) return atRule$1;\n hasRequiredAtRule$1 = 1;\n let Container = requireContainer$1();\n class AtRule extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n }\n atRule$1 = AtRule;\n AtRule.default = AtRule;\n Container.registerAtRule(AtRule);\n return atRule$1;\n}\nvar document$1$1;\nvar hasRequiredDocument$1;\nfunction requireDocument$1() {\n if (hasRequiredDocument$1) return document$1$1;\n hasRequiredDocument$1 = 1;\n let Container = requireContainer$1();\n let LazyResult, Processor;\n class Document2 extends Container {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n }\n Document2.registerLazyResult = (dependant) => {\n LazyResult = dependant;\n };\n Document2.registerProcessor = (dependant) => {\n Processor = dependant;\n };\n document$1$1 = Document2;\n Document2.default = Document2;\n return document$1$1;\n}\nvar nonSecure$1;\nvar hasRequiredNonSecure$1;\nfunction requireNonSecure$1() {\n if (hasRequiredNonSecure$1) return nonSecure$1;\n hasRequiredNonSecure$1 = 1;\n let urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\n let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size | 0;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n };\n let nanoid = (size = 21) => {\n let id = \"\";\n let i2 = size | 0;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n };\n nonSecure$1 = { nanoid, customAlphabet };\n return nonSecure$1;\n}\nvar previousMap$1;\nvar hasRequiredPreviousMap$1;\nfunction requirePreviousMap$1() {\n if (hasRequiredPreviousMap$1) return previousMap$1;\n hasRequiredPreviousMap$1 = 1;\n let { existsSync, readFileSync } = require$$2$1;\n let { dirname, join } = require$$2$1;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n function fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n }\n class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n let uriMatch = text.match(charsetUri) || text.match(uri);\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length));\n }\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri);\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n }\n previousMap$1 = PreviousMap;\n PreviousMap.default = PreviousMap;\n return previousMap$1;\n}\nvar input$1;\nvar hasRequiredInput$1;\nfunction requireInput$1() {\n if (hasRequiredInput$1) return input$1;\n hasRequiredInput$1 = 1;\n let { nanoid } = /* @__PURE__ */ requireNonSecure$1();\n let { isAbsolute, resolve } = require$$2$1;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n let { fileURLToPath, pathToFileURL } = require$$2$1;\n let CssSyntaxError = requireCssSyntaxError$1();\n let PreviousMap = requirePreviousMap$1();\n let terminalHighlight = require$$2$1;\n let fromOffsetCache = Symbol(\"fromOffsetCache\");\n let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n let pathAvailable = Boolean(resolve && isAbsolute);\n class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n this.document = this.css;\n if (opts.document) this.document = opts.document.toString();\n if (opts.from) {\n if (!pathAvailable || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve(opts.from);\n }\n }\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"<input css \" + nanoid(6) + \">\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let endColumn, endLine, result2;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL) {\n result2.input.url = pathToFileURL(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n }\n input$1 = Input;\n Input.default = Input;\n if (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input);\n }\n return input$1;\n}\nvar root$1;\nvar hasRequiredRoot$1;\nfunction requireRoot$1() {\n if (hasRequiredRoot$1) return root$1;\n hasRequiredRoot$1 = 1;\n let Container = requireContainer$1();\n let LazyResult, Processor;\n class Root extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n }\n Root.registerLazyResult = (dependant) => {\n LazyResult = dependant;\n };\n Root.registerProcessor = (dependant) => {\n Processor = dependant;\n };\n root$1 = Root;\n Root.default = Root;\n Container.registerRoot(Root);\n return root$1;\n}\nvar list_1$1;\nvar hasRequiredList$1;\nfunction requireList$1() {\n if (hasRequiredList$1) return list_1$1;\n hasRequiredList$1 = 1;\n let list = {\n comma(string) {\n return list.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n };\n list_1$1 = list;\n list.default = list;\n return list_1$1;\n}\nvar rule$1;\nvar hasRequiredRule$1;\nfunction requireRule$1() {\n if (hasRequiredRule$1) return rule$1;\n hasRequiredRule$1 = 1;\n let Container = requireContainer$1();\n let list = requireList$1();\n class Rule extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep);\n }\n }\n rule$1 = Rule;\n Rule.default = Rule;\n Container.registerRule(Rule);\n return rule$1;\n}\nvar fromJSON_1$1;\nvar hasRequiredFromJSON$1;\nfunction requireFromJSON$1() {\n if (hasRequiredFromJSON$1) return fromJSON_1$1;\n hasRequiredFromJSON$1 = 1;\n let AtRule = requireAtRule$1();\n let Comment = requireComment$1();\n let Declaration = requireDeclaration$1();\n let Input = requireInput$1();\n let PreviousMap = requirePreviousMap$1();\n let Root = requireRoot$1();\n let Rule = requireRule$1();\n function fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n }\n fromJSON_1$1 = fromJSON;\n fromJSON.default = fromJSON;\n return fromJSON_1$1;\n}\nvar mapGenerator$1;\nvar hasRequiredMapGenerator$1;\nfunction requireMapGenerator$1() {\n if (hasRequiredMapGenerator$1) return mapGenerator$1;\n hasRequiredMapGenerator$1 = 1;\n let { dirname, relative, resolve, sep } = require$$2$1;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n let { pathToFileURL } = require$$2$1;\n let Input = requireInput$1();\n let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n let pathAvailable = Boolean(dirname && resolve && relative && sep);\n class MapGenerator {\n constructor(stringify, root2, opts, cssString) {\n this.stringify = stringify;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.startsWith(\"# sourceMappingURL=\")) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"<no source>\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let last, lines;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n }\n mapGenerator$1 = MapGenerator;\n return mapGenerator$1;\n}\nvar tokenize$1;\nvar hasRequiredTokenize$1;\nfunction requireTokenize$1() {\n if (hasRequiredTokenize$1) return tokenize$1;\n hasRequiredTokenize$1 = 1;\n const SINGLE_QUOTE = \"'\".charCodeAt(0);\n const DOUBLE_QUOTE = '\"'.charCodeAt(0);\n const BACKSLASH = \"\\\\\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NEWLINE = \"\\n\".charCodeAt(0);\n const SPACE = \" \".charCodeAt(0);\n const FEED = \"\\f\".charCodeAt(0);\n const TAB = \"\t\".charCodeAt(0);\n const CR = \"\\r\".charCodeAt(0);\n const OPEN_SQUARE = \"[\".charCodeAt(0);\n const CLOSE_SQUARE = \"]\".charCodeAt(0);\n const OPEN_PARENTHESES = \"(\".charCodeAt(0);\n const CLOSE_PARENTHESES = \")\".charCodeAt(0);\n const OPEN_CURLY = \"{\".charCodeAt(0);\n const CLOSE_CURLY = \"}\".charCodeAt(0);\n const SEMICOLON = \";\".charCodeAt(0);\n const ASTERISK = \"*\".charCodeAt(0);\n const COLON = \":\".charCodeAt(0);\n const AT = \"@\".charCodeAt(0);\n const RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\n const RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\n const RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\n const RE_HEX_ESCAPE = /[\\da-f]/i;\n tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, content, escape, next, quote;\n let currentToken, escaped, escapePos, n2, prev;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n };\n return tokenize$1;\n}\nvar parser$1;\nvar hasRequiredParser$1;\nfunction requireParser$1() {\n if (hasRequiredParser$1) return parser$1;\n hasRequiredParser$1 = 1;\n let AtRule = requireAtRule$1();\n let Comment = requireComment$1();\n let Declaration = requireDeclaration$1();\n let Root = requireRoot$1();\n let Rule = requireRule$1();\n let tokenizer = requireTokenize$1();\n const SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n };\n function findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n }\n class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let prev, token, type;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().startsWith(\"!\") && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().startsWith(\"!\")) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n }\n parser$1 = Parser;\n return parser$1;\n}\nvar parse_1$1;\nvar hasRequiredParse$1;\nfunction requireParse$1() {\n if (hasRequiredParse$1) return parse_1$1;\n hasRequiredParse$1 = 1;\n let Container = requireContainer$1();\n let Input = requireInput$1();\n let Parser = requireParser$1();\n function parse(css, opts) {\n let input2 = new Input(css, opts);\n let parser2 = new Parser(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n }\n parse_1$1 = parse;\n parse.default = parse;\n Container.registerParse(parse);\n return parse_1$1;\n}\nvar warning$1;\nvar hasRequiredWarning$1;\nfunction requireWarning$1() {\n if (hasRequiredWarning$1) return warning$1;\n hasRequiredWarning$1 = 1;\n class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n }\n warning$1 = Warning;\n Warning.default = Warning;\n return warning$1;\n}\nvar result$1;\nvar hasRequiredResult$1;\nfunction requireResult$1() {\n if (hasRequiredResult$1) return result$1;\n hasRequiredResult$1 = 1;\n let Warning = requireWarning$1();\n class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n }\n result$1 = Result;\n Result.default = Result;\n return result$1;\n}\nvar warnOnce$1;\nvar hasRequiredWarnOnce$1;\nfunction requireWarnOnce$1() {\n if (hasRequiredWarnOnce$1) return warnOnce$1;\n hasRequiredWarnOnce$1 = 1;\n let printed = {};\n warnOnce$1 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n };\n return warnOnce$1;\n}\nvar lazyResult$1;\nvar hasRequiredLazyResult$1;\nfunction requireLazyResult$1() {\n if (hasRequiredLazyResult$1) return lazyResult$1;\n hasRequiredLazyResult$1 = 1;\n let Container = requireContainer$1();\n let Document2 = requireDocument$1();\n let MapGenerator = requireMapGenerator$1();\n let parse = requireParse$1();\n let Result = requireResult$1();\n let Root = requireRoot$1();\n let stringify = requireStringify$1();\n let { isClean, my } = requireSymbols$1();\n let warnOnce2 = requireWarnOnce$1();\n const TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n };\n const PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n };\n const NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n };\n const CHILDREN = 0;\n function isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n }\n function getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n }\n function toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n }\n function cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n }\n let postcss2 = {};\n class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult || css instanceof Result) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container.rebuild(root2);\n }\n }\n this.result = new Result(processor2, root2, opts);\n this.helpers = { ...postcss2, postcss: postcss2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin) => {\n if (typeof plugin === \"object\" && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) };\n } else {\n return plugin;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin.postcssPlugin;\n let pluginVer = plugin.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin, cb]);\n };\n for (let plugin of this.plugins) {\n if (typeof plugin === \"object\") {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === \"object\") {\n for (let filter in plugin[event]) {\n if (filter === \"*\") {\n add(plugin, event, plugin[event][filter]);\n } else {\n add(\n plugin,\n event + \"-\" + filter.toLowerCase(),\n plugin[event][filter]\n );\n }\n }\n } else if (typeof plugin[event] === \"function\") {\n add(plugin, event, plugin[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin = this.plugins[i2];\n let promise = this.runOnRoot(plugin);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin;\n try {\n if (typeof plugin === \"object\" && plugin.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin.Once(this.result.root, this.helpers);\n } else if (typeof plugin === \"function\") {\n return plugin(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n }\n LazyResult.registerPostcss = (dependant) => {\n postcss2 = dependant;\n };\n lazyResult$1 = LazyResult;\n LazyResult.default = LazyResult;\n Root.registerLazyResult(LazyResult);\n Document2.registerLazyResult(LazyResult);\n return lazyResult$1;\n}\nvar noWorkResult$1;\nvar hasRequiredNoWorkResult$1;\nfunction requireNoWorkResult$1() {\n if (hasRequiredNoWorkResult$1) return noWorkResult$1;\n hasRequiredNoWorkResult$1 = 1;\n let MapGenerator = requireMapGenerator$1();\n let parse = requireParse$1();\n const Result = requireResult$1();\n let stringify = requireStringify$1();\n let warnOnce2 = requireWarnOnce$1();\n class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify;\n this.result = new Result(this._processor, root2, this._opts);\n this.result.css = css;\n let self2 = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self2.root;\n }\n });\n let map = new MapGenerator(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n }\n noWorkResult$1 = NoWorkResult;\n NoWorkResult.default = NoWorkResult;\n return noWorkResult$1;\n}\nvar processor$1;\nvar hasRequiredProcessor$1;\nfunction requireProcessor$1() {\n if (hasRequiredProcessor$1) return processor$1;\n hasRequiredProcessor$1 = 1;\n let Document2 = requireDocument$1();\n let LazyResult = requireLazyResult$1();\n let NoWorkResult = requireNoWorkResult$1();\n let Root = requireRoot$1();\n class Processor {\n constructor(plugins = []) {\n this.version = \"8.5.1\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult(this, css, opts);\n } else {\n return new LazyResult(this, css, opts);\n }\n }\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n }\n }\n processor$1 = Processor;\n Processor.default = Processor;\n Root.registerProcessor(Processor);\n Document2.registerProcessor(Processor);\n return processor$1;\n}\nvar postcss_1$1;\nvar hasRequiredPostcss$1;\nfunction requirePostcss$1() {\n if (hasRequiredPostcss$1) return postcss_1$1;\n hasRequiredPostcss$1 = 1;\n let AtRule = requireAtRule$1();\n let Comment = requireComment$1();\n let Container = requireContainer$1();\n let CssSyntaxError = requireCssSyntaxError$1();\n let Declaration = requireDeclaration$1();\n let Document2 = requireDocument$1();\n let fromJSON = requireFromJSON$1();\n let Input = requireInput$1();\n let LazyResult = requireLazyResult$1();\n let list = requireList$1();\n let Node2 = requireNode$1();\n let parse = requireParse$1();\n let Processor = requireProcessor$1();\n let Result = requireResult$1();\n let Root = requireRoot$1();\n let Rule = requireRule$1();\n let stringify = requireStringify$1();\n let Warning = requireWarning$1();\n function postcss2(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor(plugins);\n }\n postcss2.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss2([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n };\n postcss2.stringify = stringify;\n postcss2.parse = parse;\n postcss2.fromJSON = fromJSON;\n postcss2.list = list;\n postcss2.comment = (defaults) => new Comment(defaults);\n postcss2.atRule = (defaults) => new AtRule(defaults);\n postcss2.decl = (defaults) => new Declaration(defaults);\n postcss2.rule = (defaults) => new Rule(defaults);\n postcss2.root = (defaults) => new Root(defaults);\n postcss2.document = (defaults) => new Document2(defaults);\n postcss2.CssSyntaxError = CssSyntaxError;\n postcss2.Declaration = Declaration;\n postcss2.Container = Container;\n postcss2.Processor = Processor;\n postcss2.Document = Document2;\n postcss2.Comment = Comment;\n postcss2.Warning = Warning;\n postcss2.AtRule = AtRule;\n postcss2.Result = Result;\n postcss2.Input = Input;\n postcss2.Rule = Rule;\n postcss2.Root = Root;\n postcss2.Node = Node2;\n LazyResult.registerPostcss(postcss2);\n postcss_1$1 = postcss2;\n postcss2.default = postcss2;\n return postcss_1$1;\n}\nvar safeParser$1$1;\nvar hasRequiredSafeParser$1;\nfunction requireSafeParser$1() {\n if (hasRequiredSafeParser$1) return safeParser$1$1;\n hasRequiredSafeParser$1 = 1;\n let Comment = requireComment$1();\n let Parser = requireParser$1();\n let tokenizer = requireTokenize$1();\n class SafeParser extends Parser {\n checkMissedSemicolon() {\n }\n comment(token) {\n let node2 = new Comment();\n this.init(node2, token[2]);\n let pos = this.input.fromOffset(token[3]) || this.input.fromOffset(this.input.css.length - 1);\n node2.source.end = {\n column: pos.col,\n line: pos.line,\n offset: token[3] + 1\n };\n let text = token[1].slice(2);\n if (text.slice(-2) === \"*/\") text = text.slice(0, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer(this.input, { ignoreErrors: true });\n }\n decl(tokens) {\n if (tokens.length > 1 && tokens.some((i2) => i2[0] === \"word\")) {\n super.decl(tokens);\n }\n }\n doubleColon() {\n }\n endFile() {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n while (this.current.parent) {\n this.current = this.current.parent;\n this.current.raws.after = \"\";\n }\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n precheckMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let nextStart, prevEnd;\n for (nextStart = colon - 1; nextStart >= 0; nextStart--) {\n if (tokens[nextStart][0] === \"word\") break;\n }\n if (nextStart === 0 || nextStart < 0) return;\n for (prevEnd = nextStart - 1; prevEnd >= 0; prevEnd--) {\n if (tokens[prevEnd][0] !== \"space\") {\n prevEnd += 1;\n break;\n }\n }\n let other = tokens.slice(nextStart);\n let spaces = tokens.slice(prevEnd, nextStart);\n tokens.splice(prevEnd, tokens.length - prevEnd);\n this.spaces = spaces.map((i2) => i2[1]).join(\"\");\n this.decl(other);\n }\n unclosedBracket() {\n }\n unexpectedClose() {\n this.current.raws.after += \"}\";\n }\n unknownWord(tokens) {\n this.spaces += tokens.map((i2) => i2[1]).join(\"\");\n }\n unnamedAtrule(node2) {\n node2.name = \"\";\n }\n }\n safeParser$1$1 = SafeParser;\n return safeParser$1$1;\n}\nvar safeParse$1;\nvar hasRequiredSafeParse$1;\nfunction requireSafeParse$1() {\n if (hasRequiredSafeParse$1) return safeParse$1;\n hasRequiredSafeParse$1 = 1;\n let { Input } = requirePostcss$1();\n let SafeParser = requireSafeParser$1();\n safeParse$1 = function safeParse2(css, opts) {\n let input2 = new Input(css, opts);\n let parser2 = new SafeParser(input2);\n parser2.parse();\n return parser2.root;\n };\n return safeParse$1;\n}\nrequireSafeParse$1();\nvar postcssExports$1 = requirePostcss$1();\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcssExports$1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar hasRequiredPicocolors_browser;\nfunction requirePicocolors_browser() {\n if (hasRequiredPicocolors_browser) return picocolors_browser.exports;\n hasRequiredPicocolors_browser = 1;\n var x = String;\n var create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x, blackBright: x, redBright: x, greenBright: x, yellowBright: x, blueBright: x, magentaBright: x, cyanBright: x, whiteBright: x, bgBlackBright: x, bgRedBright: x, bgGreenBright: x, bgYellowBright: x, bgBlueBright: x, bgMagentaBright: x, bgCyanBright: x, bgWhiteBright: x };\n };\n picocolors_browser.exports = create();\n picocolors_browser.exports.createColors = create;\n return picocolors_browser.exports;\n}\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nvar cssSyntaxError;\nvar hasRequiredCssSyntaxError;\nfunction requireCssSyntaxError() {\n if (hasRequiredCssSyntaxError) return cssSyntaxError;\n hasRequiredCssSyntaxError = 1;\n let pico = /* @__PURE__ */ requirePicocolors_browser();\n let terminalHighlight = require$$2;\n class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin) {\n this.plugin = plugin;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"<css input>\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n let aside = (text) => text;\n let mark = (text) => text;\n let highlight = (text) => text;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n if (terminalHighlight) {\n highlight = (text) => terminalHighlight(text);\n }\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20;\n let subLineStart = Math.max(0, this.column - padding);\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n );\n let subLine = line.slice(subLineStart, subLineEnd);\n let spacing2 = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, Math.min(this.column - 1, padding - 1)).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + highlight(subLine) + \"\\n \" + spacing2 + mark(\"^\");\n }\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + highlight(line) + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + highlight(line);\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n }\n cssSyntaxError = CssSyntaxError;\n CssSyntaxError.default = CssSyntaxError;\n return cssSyntaxError;\n}\nvar stringifier;\nvar hasRequiredStringifier;\nfunction requireStringifier() {\n if (hasRequiredStringifier) return stringifier;\n hasRequiredStringifier = 1;\n const DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n };\n function capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n }\n class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n }\n stringifier = Stringifier;\n Stringifier.default = Stringifier;\n return stringifier;\n}\nvar stringify_1;\nvar hasRequiredStringify;\nfunction requireStringify() {\n if (hasRequiredStringify) return stringify_1;\n hasRequiredStringify = 1;\n let Stringifier = requireStringifier();\n function stringify(node2, builder) {\n let str = new Stringifier(builder);\n str.stringify(node2);\n }\n stringify_1 = stringify;\n stringify.default = stringify;\n return stringify_1;\n}\nvar symbols = {};\nvar hasRequiredSymbols;\nfunction requireSymbols() {\n if (hasRequiredSymbols) return symbols;\n hasRequiredSymbols = 1;\n symbols.isClean = Symbol(\"isClean\");\n symbols.my = Symbol(\"my\");\n return symbols;\n}\nvar node;\nvar hasRequiredNode;\nfunction requireNode() {\n if (hasRequiredNode) return node;\n hasRequiredNode = 1;\n let CssSyntaxError = requireCssSyntaxError();\n let Stringifier = requireStringifier();\n let stringify = requireStringify();\n let { isClean, my } = requireSymbols();\n function cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n }\n function sourceOffset(inputCSS, position) {\n if (position && typeof position.offset !== \"undefined\") {\n return position.offset;\n }\n let column = 1;\n let line = 1;\n let offset = 0;\n for (let i2 = 0; i2 < inputCSS.length; i2++) {\n if (line === position.line && column === position.column) {\n offset = i2;\n break;\n }\n if (inputCSS[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return offset;\n }\n class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean] = false;\n this[my] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true;\n }\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n );\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2);\n }\n return pos;\n }\n positionInside(index2) {\n let column = this.source.start.column;\n let line = this.source.start.line;\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let offset = sourceOffset(inputString, this.source.start);\n let end = offset + index2;\n for (let i2 = offset; i2 < end; i2++) {\n if (inputString[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n );\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2);\n end = this.positionInside(\n index2 + opts.word.length\n );\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n }\n node = Node2;\n Node2.default = Node2;\n return node;\n}\nvar comment;\nvar hasRequiredComment;\nfunction requireComment() {\n if (hasRequiredComment) return comment;\n hasRequiredComment = 1;\n let Node2 = requireNode();\n class Comment extends Node2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n }\n comment = Comment;\n Comment.default = Comment;\n return comment;\n}\nvar declaration;\nvar hasRequiredDeclaration;\nfunction requireDeclaration() {\n if (hasRequiredDeclaration) return declaration;\n hasRequiredDeclaration = 1;\n let Node2 = requireNode();\n class Declaration extends Node2 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n declaration = Declaration;\n Declaration.default = Declaration;\n return declaration;\n}\nvar container;\nvar hasRequiredContainer;\nfunction requireContainer() {\n if (hasRequiredContainer) return container;\n hasRequiredContainer = 1;\n let Comment = requireComment();\n let Declaration = requireDeclaration();\n let Node2 = requireNode();\n let { isClean, my } = requireSymbols();\n let AtRule, parse, Root, Rule;\n function cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n }\n function markTreeDirty(node2) {\n node2[isClean] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markTreeDirty(i2);\n }\n }\n }\n class Container extends Node2 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration(nodes)];\n } else if (nodes.selector || nodes.selectors) {\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean]) markTreeDirty(i2);\n if (!i2.raws) i2.raws = {};\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n Container.registerParse = (dependant) => {\n parse = dependant;\n };\n Container.registerRule = (dependant) => {\n Rule = dependant;\n };\n Container.registerAtRule = (dependant) => {\n AtRule = dependant;\n };\n Container.registerRoot = (dependant) => {\n Root = dependant;\n };\n container = Container;\n Container.default = Container;\n Container.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root.prototype);\n }\n node2[my] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container.rebuild(child);\n });\n }\n };\n return container;\n}\nvar atRule;\nvar hasRequiredAtRule;\nfunction requireAtRule() {\n if (hasRequiredAtRule) return atRule;\n hasRequiredAtRule = 1;\n let Container = requireContainer();\n class AtRule extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n }\n atRule = AtRule;\n AtRule.default = AtRule;\n Container.registerAtRule(AtRule);\n return atRule;\n}\nvar document$1;\nvar hasRequiredDocument;\nfunction requireDocument() {\n if (hasRequiredDocument) return document$1;\n hasRequiredDocument = 1;\n let Container = requireContainer();\n let LazyResult, Processor;\n class Document2 extends Container {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n }\n Document2.registerLazyResult = (dependant) => {\n LazyResult = dependant;\n };\n Document2.registerProcessor = (dependant) => {\n Processor = dependant;\n };\n document$1 = Document2;\n Document2.default = Document2;\n return document$1;\n}\nvar nonSecure;\nvar hasRequiredNonSecure;\nfunction requireNonSecure() {\n if (hasRequiredNonSecure) return nonSecure;\n hasRequiredNonSecure = 1;\n let urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\n let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size | 0;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n };\n let nanoid = (size = 21) => {\n let id = \"\";\n let i2 = size | 0;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n };\n nonSecure = { nanoid, customAlphabet };\n return nonSecure;\n}\nvar previousMap;\nvar hasRequiredPreviousMap;\nfunction requirePreviousMap() {\n if (hasRequiredPreviousMap) return previousMap;\n hasRequiredPreviousMap = 1;\n let { existsSync, readFileSync } = require$$2;\n let { dirname, join } = require$$2;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n function fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n }\n class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n let uriMatch = text.match(charsetUri) || text.match(uri);\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length));\n }\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri);\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n }\n previousMap = PreviousMap;\n PreviousMap.default = PreviousMap;\n return previousMap;\n}\nvar input;\nvar hasRequiredInput;\nfunction requireInput() {\n if (hasRequiredInput) return input;\n hasRequiredInput = 1;\n let { nanoid } = /* @__PURE__ */ requireNonSecure();\n let { isAbsolute, resolve } = require$$2;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n let { fileURLToPath, pathToFileURL } = require$$2;\n let CssSyntaxError = requireCssSyntaxError();\n let PreviousMap = requirePreviousMap();\n let terminalHighlight = require$$2;\n let fromOffsetCache = Symbol(\"fromOffsetCache\");\n let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n let pathAvailable = Boolean(resolve && isAbsolute);\n class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n this.document = this.css;\n if (opts.document) this.document = opts.document.toString();\n if (opts.from) {\n if (!pathAvailable || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve(opts.from);\n }\n }\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"<input css \" + nanoid(6) + \">\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let endColumn, endLine, result2;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL) {\n result2.input.url = pathToFileURL(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n }\n input = Input;\n Input.default = Input;\n if (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input);\n }\n return input;\n}\nvar root;\nvar hasRequiredRoot;\nfunction requireRoot() {\n if (hasRequiredRoot) return root;\n hasRequiredRoot = 1;\n let Container = requireContainer();\n let LazyResult, Processor;\n class Root extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n }\n Root.registerLazyResult = (dependant) => {\n LazyResult = dependant;\n };\n Root.registerProcessor = (dependant) => {\n Processor = dependant;\n };\n root = Root;\n Root.default = Root;\n Container.registerRoot(Root);\n return root;\n}\nvar list_1;\nvar hasRequiredList;\nfunction requireList() {\n if (hasRequiredList) return list_1;\n hasRequiredList = 1;\n let list = {\n comma(string) {\n return list.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n };\n list_1 = list;\n list.default = list;\n return list_1;\n}\nvar rule;\nvar hasRequiredRule;\nfunction requireRule() {\n if (hasRequiredRule) return rule;\n hasRequiredRule = 1;\n let Container = requireContainer();\n let list = requireList();\n class Rule extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep);\n }\n }\n rule = Rule;\n Rule.default = Rule;\n Container.registerRule(Rule);\n return rule;\n}\nvar fromJSON_1;\nvar hasRequiredFromJSON;\nfunction requireFromJSON() {\n if (hasRequiredFromJSON) return fromJSON_1;\n hasRequiredFromJSON = 1;\n let AtRule = requireAtRule();\n let Comment = requireComment();\n let Declaration = requireDeclaration();\n let Input = requireInput();\n let PreviousMap = requirePreviousMap();\n let Root = requireRoot();\n let Rule = requireRule();\n function fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n }\n fromJSON_1 = fromJSON;\n fromJSON.default = fromJSON;\n return fromJSON_1;\n}\nvar mapGenerator;\nvar hasRequiredMapGenerator;\nfunction requireMapGenerator() {\n if (hasRequiredMapGenerator) return mapGenerator;\n hasRequiredMapGenerator = 1;\n let { dirname, relative, resolve, sep } = require$$2;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n let { pathToFileURL } = require$$2;\n let Input = requireInput();\n let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n let pathAvailable = Boolean(dirname && resolve && relative && sep);\n class MapGenerator {\n constructor(stringify, root2, opts, cssString) {\n this.stringify = stringify;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.startsWith(\"# sourceMappingURL=\")) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"<no source>\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let last, lines;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n }\n mapGenerator = MapGenerator;\n return mapGenerator;\n}\nvar tokenize;\nvar hasRequiredTokenize;\nfunction requireTokenize() {\n if (hasRequiredTokenize) return tokenize;\n hasRequiredTokenize = 1;\n const SINGLE_QUOTE = \"'\".charCodeAt(0);\n const DOUBLE_QUOTE = '\"'.charCodeAt(0);\n const BACKSLASH = \"\\\\\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NEWLINE = \"\\n\".charCodeAt(0);\n const SPACE = \" \".charCodeAt(0);\n const FEED = \"\\f\".charCodeAt(0);\n const TAB = \"\t\".charCodeAt(0);\n const CR = \"\\r\".charCodeAt(0);\n const OPEN_SQUARE = \"[\".charCodeAt(0);\n const CLOSE_SQUARE = \"]\".charCodeAt(0);\n const OPEN_PARENTHESES = \"(\".charCodeAt(0);\n const CLOSE_PARENTHESES = \")\".charCodeAt(0);\n const OPEN_CURLY = \"{\".charCodeAt(0);\n const CLOSE_CURLY = \"}\".charCodeAt(0);\n const SEMICOLON = \";\".charCodeAt(0);\n const ASTERISK = \"*\".charCodeAt(0);\n const COLON = \":\".charCodeAt(0);\n const AT = \"@\".charCodeAt(0);\n const RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\n const RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\n const RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\n const RE_HEX_ESCAPE = /[\\da-f]/i;\n tokenize = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, content, escape, next, quote;\n let currentToken, escaped, escapePos, n2, prev;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n };\n return tokenize;\n}\nvar parser;\nvar hasRequiredParser;\nfunction requireParser() {\n if (hasRequiredParser) return parser;\n hasRequiredParser = 1;\n let AtRule = requireAtRule();\n let Comment = requireComment();\n let Declaration = requireDeclaration();\n let Root = requireRoot();\n let Rule = requireRule();\n let tokenizer = requireTokenize();\n const SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n };\n function findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n }\n class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let prev, token, type;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().startsWith(\"!\") && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().startsWith(\"!\")) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n }\n parser = Parser;\n return parser;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n let Container = requireContainer();\n let Input = requireInput();\n let Parser = requireParser();\n function parse(css, opts) {\n let input2 = new Input(css, opts);\n let parser2 = new Parser(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n }\n parse_1 = parse;\n parse.default = parse;\n Container.registerParse(parse);\n return parse_1;\n}\nvar warning;\nvar hasRequiredWarning;\nfunction requireWarning() {\n if (hasRequiredWarning) return warning;\n hasRequiredWarning = 1;\n class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n }\n warning = Warning;\n Warning.default = Warning;\n return warning;\n}\nvar result;\nvar hasRequiredResult;\nfunction requireResult() {\n if (hasRequiredResult) return result;\n hasRequiredResult = 1;\n let Warning = requireWarning();\n class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n }\n result = Result;\n Result.default = Result;\n return result;\n}\nvar warnOnce;\nvar hasRequiredWarnOnce;\nfunction requireWarnOnce() {\n if (hasRequiredWarnOnce) return warnOnce;\n hasRequiredWarnOnce = 1;\n let printed = {};\n warnOnce = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n };\n return warnOnce;\n}\nvar lazyResult;\nvar hasRequiredLazyResult;\nfunction requireLazyResult() {\n if (hasRequiredLazyResult) return lazyResult;\n hasRequiredLazyResult = 1;\n let Container = requireContainer();\n let Document2 = requireDocument();\n let MapGenerator = requireMapGenerator();\n let parse = requireParse();\n let Result = requireResult();\n let Root = requireRoot();\n let stringify = requireStringify();\n let { isClean, my } = requireSymbols();\n let warnOnce2 = requireWarnOnce();\n const TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n };\n const PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n };\n const NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n };\n const CHILDREN = 0;\n function isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n }\n function getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n }\n function toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n }\n function cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n }\n let postcss2 = {};\n class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult || css instanceof Result) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container.rebuild(root2);\n }\n }\n this.result = new Result(processor2, root2, opts);\n this.helpers = { ...postcss2, postcss: postcss2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin) => {\n if (typeof plugin === \"object\" && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) };\n } else {\n return plugin;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin.postcssPlugin;\n let pluginVer = plugin.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin, cb]);\n };\n for (let plugin of this.plugins) {\n if (typeof plugin === \"object\") {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === \"object\") {\n for (let filter in plugin[event]) {\n if (filter === \"*\") {\n add(plugin, event, plugin[event][filter]);\n } else {\n add(\n plugin,\n event + \"-\" + filter.toLowerCase(),\n plugin[event][filter]\n );\n }\n }\n } else if (typeof plugin[event] === \"function\") {\n add(plugin, event, plugin[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin = this.plugins[i2];\n let promise = this.runOnRoot(plugin);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin;\n try {\n if (typeof plugin === \"object\" && plugin.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin.Once(this.result.root, this.helpers);\n } else if (typeof plugin === \"function\") {\n return plugin(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n }\n LazyResult.registerPostcss = (dependant) => {\n postcss2 = dependant;\n };\n lazyResult = LazyResult;\n LazyResult.default = LazyResult;\n Root.registerLazyResult(LazyResult);\n Document2.registerLazyResult(LazyResult);\n return lazyResult;\n}\nvar noWorkResult;\nvar hasRequiredNoWorkResult;\nfunction requireNoWorkResult() {\n if (hasRequiredNoWorkResult) return noWorkResult;\n hasRequiredNoWorkResult = 1;\n let MapGenerator = requireMapGenerator();\n let parse = requireParse();\n const Result = requireResult();\n let stringify = requireStringify();\n let warnOnce2 = requireWarnOnce();\n class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify;\n this.result = new Result(this._processor, root2, this._opts);\n this.result.css = css;\n let self2 = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self2.root;\n }\n });\n let map = new MapGenerator(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n }\n noWorkResult = NoWorkResult;\n NoWorkResult.default = NoWorkResult;\n return noWorkResult;\n}\nvar processor;\nvar hasRequiredProcessor;\nfunction requireProcessor() {\n if (hasRequiredProcessor) return processor;\n hasRequiredProcessor = 1;\n let Document2 = requireDocument();\n let LazyResult = requireLazyResult();\n let NoWorkResult = requireNoWorkResult();\n let Root = requireRoot();\n class Processor {\n constructor(plugins = []) {\n this.version = \"8.5.1\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult(this, css, opts);\n } else {\n return new LazyResult(this, css, opts);\n }\n }\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n }\n }\n processor = Processor;\n Processor.default = Processor;\n Root.registerProcessor(Processor);\n Document2.registerProcessor(Processor);\n return processor;\n}\nvar postcss_1;\nvar hasRequiredPostcss;\nfunction requirePostcss() {\n if (hasRequiredPostcss) return postcss_1;\n hasRequiredPostcss = 1;\n let AtRule = requireAtRule();\n let Comment = requireComment();\n let Container = requireContainer();\n let CssSyntaxError = requireCssSyntaxError();\n let Declaration = requireDeclaration();\n let Document2 = requireDocument();\n let fromJSON = requireFromJSON();\n let Input = requireInput();\n let LazyResult = requireLazyResult();\n let list = requireList();\n let Node2 = requireNode();\n let parse = requireParse();\n let Processor = requireProcessor();\n let Result = requireResult();\n let Root = requireRoot();\n let Rule = requireRule();\n let stringify = requireStringify();\n let Warning = requireWarning();\n function postcss2(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor(plugins);\n }\n postcss2.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss2([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n };\n postcss2.stringify = stringify;\n postcss2.parse = parse;\n postcss2.fromJSON = fromJSON;\n postcss2.list = list;\n postcss2.comment = (defaults) => new Comment(defaults);\n postcss2.atRule = (defaults) => new AtRule(defaults);\n postcss2.decl = (defaults) => new Declaration(defaults);\n postcss2.rule = (defaults) => new Rule(defaults);\n postcss2.root = (defaults) => new Root(defaults);\n postcss2.document = (defaults) => new Document2(defaults);\n postcss2.CssSyntaxError = CssSyntaxError;\n postcss2.Declaration = Declaration;\n postcss2.Container = Container;\n postcss2.Processor = Processor;\n postcss2.Document = Document2;\n postcss2.Comment = Comment;\n postcss2.Warning = Warning;\n postcss2.AtRule = AtRule;\n postcss2.Result = Result;\n postcss2.Input = Input;\n postcss2.Rule = Rule;\n postcss2.Root = Root;\n postcss2.Node = Node2;\n LazyResult.registerPostcss(postcss2);\n postcss_1 = postcss2;\n postcss2.default = postcss2;\n return postcss_1;\n}\nvar safeParser$1;\nvar hasRequiredSafeParser;\nfunction requireSafeParser() {\n if (hasRequiredSafeParser) return safeParser$1;\n hasRequiredSafeParser = 1;\n let Comment = requireComment();\n let Parser = requireParser();\n let tokenizer = requireTokenize();\n class SafeParser extends Parser {\n checkMissedSemicolon() {\n }\n comment(token) {\n let node2 = new Comment();\n this.init(node2, token[2]);\n let pos = this.input.fromOffset(token[3]) || this.input.fromOffset(this.input.css.length - 1);\n node2.source.end = {\n column: pos.col,\n line: pos.line,\n offset: token[3] + 1\n };\n let text = token[1].slice(2);\n if (text.slice(-2) === \"*/\") text = text.slice(0, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer(this.input, { ignoreErrors: true });\n }\n decl(tokens) {\n if (tokens.length > 1 && tokens.some((i2) => i2[0] === \"word\")) {\n super.decl(tokens);\n }\n }\n doubleColon() {\n }\n endFile() {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n while (this.current.parent) {\n this.current = this.current.parent;\n this.current.raws.after = \"\";\n }\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n precheckMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let nextStart, prevEnd;\n for (nextStart = colon - 1; nextStart >= 0; nextStart--) {\n if (tokens[nextStart][0] === \"word\") break;\n }\n if (nextStart === 0 || nextStart < 0) return;\n for (prevEnd = nextStart - 1; prevEnd >= 0; prevEnd--) {\n if (tokens[prevEnd][0] !== \"space\") {\n prevEnd += 1;\n break;\n }\n }\n let other = tokens.slice(nextStart);\n let spaces = tokens.slice(prevEnd, nextStart);\n tokens.splice(prevEnd, tokens.length - prevEnd);\n this.spaces = spaces.map((i2) => i2[1]).join(\"\");\n this.decl(other);\n }\n unclosedBracket() {\n }\n unexpectedClose() {\n this.current.raws.after += \"}\";\n }\n unknownWord(tokens) {\n this.spaces += tokens.map((i2) => i2[1]).join(\"\");\n }\n unnamedAtrule(node2) {\n node2.name = \"\";\n }\n }\n safeParser$1 = SafeParser;\n return safeParser$1;\n}\nvar safeParse;\nvar hasRequiredSafeParse;\nfunction requireSafeParse() {\n if (hasRequiredSafeParse) return safeParse;\n hasRequiredSafeParse = 1;\n let { Input } = requirePostcss();\n let SafeParser = requireSafeParser();\n safeParse = function safeParse2(css, opts) {\n let input2 = new Input(css, opts);\n let parser2 = new SafeParser(input2);\n parser2.parse();\n return parser2.root;\n };\n return safeParse;\n}\nrequireSafeParse();\nvar postcssExports = requirePostcss();\nconst postcss = /* @__PURE__ */ getDefaultExportFromCjs(postcssExports);\npostcss.stringify;\npostcss.fromJSON;\npostcss.plugin;\npostcss.parse;\npostcss.list;\npostcss.document;\npostcss.comment;\npostcss.atRule;\npostcss.rule;\npostcss.decl;\npostcss.root;\npostcss.CssSyntaxError;\npostcss.Declaration;\npostcss.Container;\npostcss.Processor;\npostcss.Document;\npostcss.Comment;\npostcss.Warning;\npostcss.AtRule;\npostcss.Result;\npostcss.Input;\npostcss.Rule;\npostcss.Root;\npostcss.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nfunction angularZoneUnpatchedAlternative(key) {\n var _a2, _b;\n const angularUnpatchedVersionSymbol = (_b = (_a2 = globalThis == null ? void 0 : globalThis.Zone) == null ? void 0 : _a2.__symbol__) == null ? void 0 : _b.call(_a2, key);\n if (angularUnpatchedVersionSymbol && globalThis[angularUnpatchedVersionSymbol]) {\n return globalThis[angularUnpatchedVersionSymbol];\n } else {\n return void 0;\n }\n}\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const candidate = angularZoneUnpatchedAlternative(key) || globalThis[key];\n const defaultPrototype = candidate.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods) {\n untaintedBasePrototype[key] = candidate.prototype;\n return candidate.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return candidate.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor,\n patch\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2)) {\n return;\n }\n let cssCaptured = false;\n if (n2.nodeType === Node.TEXT_NODE) {\n const parentTag = parent.tagName;\n if (parentTag === \"TEXTAREA\") {\n return;\n } else if (parentTag === \"STYLE\" && this.addedSet.has(parent)) {\n cssCaptured = true;\n }\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n cssCaptured\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin of o2.plugins) {\n pluginHandlers.push(\n plugin.observer(plugin.callback, currentWindow, plugin.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list = variableListFor$1(ctx, name);\n let index2 = list.indexOf(value);\n if (index2 === -1) {\n index2 = list.length;\n list.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst jsContent = '(function() {\\n \"use strict\";\\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\\n var lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\\n for (var i = 0; i < chars.length; i++) {\\n lookup[chars.charCodeAt(i)] = i;\\n }\\n var encode = function(arraybuffer) {\\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\\n for (i2 = 0; i2 < len; i2 += 3) {\\n base64 += chars[bytes[i2] >> 2];\\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\\n base64 += chars[bytes[i2 + 2] & 63];\\n }\\n if (len % 3 === 2) {\\n base64 = base64.substring(0, base64.length - 1) + \"=\";\\n } else if (len % 3 === 1) {\\n base64 = base64.substring(0, base64.length - 2) + \"==\";\\n }\\n return base64;\\n };\\n const lastBlobMap = /* @__PURE__ */ new Map();\\n const transparentBlobMap = /* @__PURE__ */ new Map();\\n async function getTransparentBlobFor(width, height, dataURLOptions) {\\n const id = `${width}-${height}`;\\n if (\"OffscreenCanvas\" in globalThis) {\\n if (transparentBlobMap.has(id)) return transparentBlobMap.get(id);\\n const offscreen = new OffscreenCanvas(width, height);\\n offscreen.getContext(\"2d\");\\n const blob = await offscreen.convertToBlob(dataURLOptions);\\n const arrayBuffer = await blob.arrayBuffer();\\n const base64 = encode(arrayBuffer);\\n transparentBlobMap.set(id, base64);\\n return base64;\\n } else {\\n return \"\";\\n }\\n }\\n const worker = self;\\n worker.onmessage = async function(e) {\\n if (\"OffscreenCanvas\" in globalThis) {\\n const { id, bitmap, width, height, dataURLOptions } = e.data;\\n const transparentBase64 = getTransparentBlobFor(\\n width,\\n height,\\n dataURLOptions\\n );\\n const offscreen = new OffscreenCanvas(width, height);\\n const ctx = offscreen.getContext(\"2d\");\\n ctx.drawImage(bitmap, 0, 0);\\n bitmap.close();\\n const blob = await offscreen.convertToBlob(dataURLOptions);\\n const type = blob.type;\\n const arrayBuffer = await blob.arrayBuffer();\\n const base64 = encode(arrayBuffer);\\n if (!lastBlobMap.has(id) && await transparentBase64 === base64) {\\n lastBlobMap.set(id, base64);\\n return worker.postMessage({ id });\\n }\\n if (lastBlobMap.get(id) === base64) return worker.postMessage({ id });\\n worker.postMessage({\\n id,\\n type,\\n base64,\\n width,\\n height\\n });\\n lastBlobMap.set(id, base64);\\n } else {\\n return worker.postMessage({ id: e.data.id });\\n }\\n };\\n})();\\n//# sourceMappingURL=image-bitmap-data-url-worker-IJpC7g_b.js.map\\n';\nconst blob = typeof self !== \"undefined\" && self.Blob && new Blob([jsContent], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (self.URL || self.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;charset=utf-8,\" + encodeURIComponent(jsContent),\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n const searchCanvas = (haystack) => {\n haystack.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n haystack.querySelectorAll(\"*\").forEach((elem) => {\n if (elem.shadowRoot) {\n searchCanvas(elem.shadowRoot);\n }\n });\n };\n searchCanvas(win.document);\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const width = canvas.clientWidth || canvas.width;\n const height = canvas.clientHeight || canvas.height;\n const bitmap = await createImageBitmap(canvas, {\n resizeWidth: width,\n resizeHeight: height\n });\n worker.postMessage(\n {\n id,\n bitmap,\n width,\n height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x) => x * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin of plugins || []) {\n if (plugin.eventProcessor) {\n e2 = plugin.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin of plugins || []) {\n if (plugin.getMirror)\n plugin.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nconst { addCustomEvent } = record;\nconst { freezePage } = record;\nconst { takeFullSnapshot } = record;\nexport {\n record\n};\n//# sourceMappingURL=rrweb-record.js.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nclass StackFrame {\n constructor(obj) {\n __publicField(this, \"fileName\");\n __publicField(this, \"functionName\");\n __publicField(this, \"lineNumber\");\n __publicField(this, \"columnNumber\");\n this.fileName = obj.fileName || \"\";\n this.functionName = obj.functionName || \"\";\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n toString() {\n const lineNumber = this.lineNumber || \"\";\n const columnNumber = this.columnNumber || \"\";\n if (this.functionName)\n return `${this.functionName} (${this.fileName}:${lineNumber}:${columnNumber})`;\n return `${this.fileName}:${lineNumber}:${columnNumber}`;\n }\n}\nconst FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nconst ErrorStackParser = {\n /**\n * Given an Error object, extract the most information from it.\n */\n parse: function(error) {\n if (!error) {\n return [];\n }\n if (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error.stacktrace !== \"undefined\" || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error[\"opera#sourceloc\"] !== \"undefined\"\n ) {\n return this.parseOpera(\n error\n );\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n console.warn(\n \"[console-record-plugin]: Failed to parse error object:\",\n error\n );\n return [];\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function(urlLike) {\n if (urlLike.indexOf(\":\") === -1) {\n return [urlLike];\n }\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n if (!parts) throw new Error(`Cannot parse given url: ${urlLike}`);\n return [parts[1], parts[2] || void 0, parts[3] || void 0];\n },\n parseV8OrIE: function(error) {\n const filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\"(eval \") > -1) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(\\),.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\");\n const location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const tokens = sanitizedLine.split(/\\s+/).slice(1);\n const locationParts = this.extractLocation(\n location ? location[1] : tokens.pop()\n );\n const functionName = tokens.join(\" \") || void 0;\n const fileName = [\"eval\", \"<anonymous>\"].indexOf(locationParts[0]) > -1 ? void 0 : locationParts[0];\n return new StackFrame({\n functionName,\n fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n },\n parseFFOrSafari: function(error) {\n const filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\" > eval\") > -1) {\n line = line.replace(\n / line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g,\n \":$1\"\n );\n }\n if (line.indexOf(\"@\") === -1 && line.indexOf(\":\") === -1) {\n return new StackFrame({\n functionName: line\n });\n } else {\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : void 0;\n const locationParts = this.extractLocation(\n line.replace(functionNameRegex, \"\")\n );\n return new StackFrame({\n functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }\n }, this);\n },\n parseOpera: function(e) {\n if (!e.stacktrace || e.message.indexOf(\"\\n\") > -1 && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function(e) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n })\n );\n }\n }\n return result;\n },\n parseOpera10: function(e) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || void 0,\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n })\n );\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function(error) {\n const filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function(line) {\n const tokens = line.split(\"@\");\n const locationParts = this.extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(/<anonymous function(: (\\w+))?>/, \"$2\").replace(/\\([^)]*\\)/g, \"\") || void 0;\n return new StackFrame({\n functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n }\n};\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return \"\";\n }\n let path = \"\";\n while (node.parentElement) {\n let name = node.localName;\n if (!name) {\n break;\n }\n name = name.toLowerCase();\n const parent = node.parentElement;\n const domSiblings = [];\n if (parent.children && parent.children.length > 0) {\n for (let i = 0; i < parent.children.length; i++) {\n const sibling = parent.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name += `:eq(${domSiblings.indexOf(node)})`;\n }\n path = name + (path ? \">\" + path : \"\");\n node = parent;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isObjTooDeep(obj, limit) {\n if (limit === 0) {\n return true;\n }\n const keys = Object.keys(obj);\n for (const key of keys) {\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n const options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4\n };\n Object.assign(options, stringifyOptions);\n const stack = [];\n const keys = [];\n return JSON.stringify(\n obj,\n function(key, value) {\n if (stack.length > 0) {\n const thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = \"[Circular ~]\";\n } else {\n value = \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n }\n }\n } else {\n stack.push(value);\n }\n if (value === null) return value;\n if (value === void 0) return \"undefined\";\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if (typeof value === \"bigint\") {\n return value.toString() + \"n\";\n }\n if (value instanceof Event) {\n const eventResult = {};\n for (const eventKey in value) {\n const eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(\n eventValue.length ? eventValue[0] : null\n );\n } else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n } else if (value instanceof Node) {\n if (value instanceof HTMLElement) {\n return value ? value.outerHTML : \"\";\n }\n return value.nodeName;\n } else if (value instanceof Error) {\n return value.stack ? value.stack + \"\\nEnd of stack for Error object\" : value.name + \": \" + value.message;\n }\n return value;\n }\n );\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === \"function\") {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n let str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = `${str.slice(0, options.stringLengthLimit)}...`;\n }\n return str;\n }\n}\nconst defaultLogOptions = {\n level: [\n \"assert\",\n \"clear\",\n \"count\",\n \"countReset\",\n \"debug\",\n \"dir\",\n \"dirxml\",\n \"error\",\n \"group\",\n \"groupCollapsed\",\n \"groupEnd\",\n \"info\",\n \"log\",\n \"table\",\n \"time\",\n \"timeEnd\",\n \"timeLog\",\n \"trace\",\n \"warn\"\n ],\n lengthThreshold: 1e3,\n logger: \"console\"\n};\nfunction initLogObserver(cb, win, options) {\n const logOptions = options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions;\n const loggerType = logOptions.logger;\n if (!loggerType) {\n return () => {\n };\n }\n let logger;\n if (typeof loggerType === \"string\") {\n logger = win[loggerType];\n } else {\n logger = loggerType;\n }\n let logCount = 0;\n let inStack = false;\n const cancelHandlers = [];\n if (logOptions.level.includes(\"error\")) {\n const errorHandler = (event) => {\n const message = event.message, error = event.error;\n const trace = ErrorStackParser.parse(error).map(\n (stackFrame) => stackFrame.toString()\n );\n const payload = [stringify(message, logOptions.stringifyOptions)];\n cb({\n level: \"error\",\n trace,\n payload\n });\n };\n win.addEventListener(\"error\", errorHandler);\n cancelHandlers.push(() => {\n win.removeEventListener(\"error\", errorHandler);\n });\n const unhandledrejectionHandler = (event) => {\n let error;\n let payload;\n if (event.reason instanceof Error) {\n error = event.reason;\n payload = [\n stringify(\n `Uncaught (in promise) ${error.name}: ${error.message}`,\n logOptions.stringifyOptions\n )\n ];\n } else {\n error = new Error();\n payload = [\n stringify(\"Uncaught (in promise)\", logOptions.stringifyOptions),\n stringify(event.reason, logOptions.stringifyOptions)\n ];\n }\n const trace = ErrorStackParser.parse(error).map(\n (stackFrame) => stackFrame.toString()\n );\n cb({\n level: \"error\",\n trace,\n payload\n });\n };\n win.addEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n cancelHandlers.push(() => {\n win.removeEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n });\n }\n for (const levelType of logOptions.level) {\n cancelHandlers.push(replace(logger, levelType));\n }\n return () => {\n cancelHandlers.forEach((h) => h());\n };\n function replace(_logger, level) {\n if (!_logger[level]) {\n return () => {\n };\n }\n return patch(\n _logger,\n level,\n (original) => {\n return (...args) => {\n original.apply(this, args);\n if (level === \"assert\" && !!args[0]) {\n return;\n }\n if (inStack) {\n return;\n }\n inStack = true;\n try {\n const trace = ErrorStackParser.parse(new Error()).map((stackFrame) => stackFrame.toString()).splice(1);\n const argsForPayload = level === \"assert\" ? args.slice(1) : args;\n const payload = argsForPayload.map(\n (s) => stringify(s, logOptions.stringifyOptions)\n );\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level,\n trace,\n payload\n });\n } else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: \"warn\",\n trace: [],\n payload: [\n stringify(\"The number of log records reached the threshold.\")\n ]\n });\n }\n } catch (error) {\n original(\"rrweb logger error:\", error, ...args);\n } finally {\n inStack = false;\n }\n };\n }\n );\n }\n}\nconst PLUGIN_NAME = \"rrweb/console@1\";\nconst getRecordConsolePlugin = (options) => ({\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options\n});\nexport {\n PLUGIN_NAME,\n getRecordConsolePlugin\n};\n//# sourceMappingURL=rrweb-plugin-console-record.js.map\n","import { ErrorProperties } from '../extensions/exception-autocapture/error-conversion'\nimport type { PostHog } from '../posthog-core'\nimport { SessionIdManager } from '../sessionid'\nimport {\n DeadClicksAutoCaptureConfig,\n ErrorConversionArgs,\n ErrorMetadata,\n Properties,\n RemoteConfig,\n SiteAppLoader,\n} from '../types'\n\n/*\n * Global helpers to protect access to browser globals in a way that is safer for different targets\n * like DOM, SSR, Web workers etc.\n *\n * NOTE: Typically we want the \"window\" but globalThis works for both the typical browser context as\n * well as other contexts such as the web worker context. Window is still exported for any bits that explicitly require it.\n * If in doubt - export the global you need from this file and use that as an optional value. This way the code path is forced\n * to handle the case where the global is not available.\n */\n\n// eslint-disable-next-line no-restricted-globals\nconst win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\n\nexport type AssignableWindow = Window &\n typeof globalThis &\n Record<string, any> & {\n __PosthogExtensions__?: PostHogExtensions\n\n _POSTHOG_REMOTE_CONFIG?: Record<\n string,\n {\n config: RemoteConfig\n siteApps: SiteAppLoader[]\n }\n >\n }\n\n/**\n * This is our contract between (potentially) lazily loaded extensions and the SDK\n * changes to this interface can be breaking changes for users of the SDK\n */\n\nexport type PostHogExtensionKind =\n | 'toolbar'\n | 'exception-autocapture'\n | 'web-vitals'\n | 'recorder'\n | 'tracing-headers'\n | 'surveys'\n | 'dead-clicks-autocapture'\n | 'remote-config'\n\nexport interface LazyLoadedDeadClicksAutocaptureInterface {\n start: (observerTarget: Node) => void\n stop: () => void\n}\n\ninterface PostHogExtensions {\n loadExternalDependency?: (\n posthog: PostHog,\n kind: PostHogExtensionKind,\n callback: (error?: string | Event, event?: Event) => void\n ) => void\n\n loadSiteApp?: (posthog: PostHog, appUrl: string, callback: (error?: string | Event, event?: Event) => void) => void\n\n parseErrorAsProperties?: ({ error, event }: ErrorConversionArgs, metadata?: ErrorMetadata) => ErrorProperties\n errorWrappingFunctions?: {\n wrapOnError: (captureFn: (props: Properties) => void) => () => void\n wrapUnhandledRejection: (captureFn: (props: Properties) => void) => () => void\n }\n rrweb?: { record: any; version: string }\n rrwebPlugins?: { getRecordConsolePlugin: any; getRecordNetworkPlugin?: any }\n canActivateRepeatedly?: (survey: any) => boolean\n generateSurveys?: (posthog: PostHog) => any | undefined\n postHogWebVitalsCallbacks?: {\n onLCP: (metric: any) => void\n onCLS: (metric: any) => void\n onFCP: (metric: any) => void\n onINP: (metric: any) => void\n }\n tracingHeadersPatchFns?: {\n _patchFetch: (sessionManager?: SessionIdManager) => () => void\n _patchXHR: (sessionManager?: SessionIdManager) => () => void\n }\n initDeadClicksAutocapture?: (\n ph: PostHog,\n config: DeadClicksAutoCaptureConfig\n ) => LazyLoadedDeadClicksAutocaptureInterface\n}\n\nconst global: typeof globalThis | undefined = typeof globalThis !== 'undefined' ? globalThis : win\n\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n\nexport const navigator = global?.navigator\nexport const document = global?.document\nexport const location = global?.location\nexport const fetch = global?.fetch\nexport const XMLHttpRequest =\n global?.XMLHttpRequest && 'withCredentials' in new global.XMLHttpRequest() ? global.XMLHttpRequest : undefined\nexport const AbortController = global?.AbortController\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: AssignableWindow = win ?? ({} as any)\n\nexport { win as window }\n","import type { recordOptions } from './extensions/replay/types/rrweb'\nimport type { SegmentAnalytics } from './extensions/segment-integration'\nimport { PostHog } from './posthog-core'\n\nexport type Property = any\nexport type Properties = Record<string, Property>\n\nexport const COPY_AUTOCAPTURE_EVENT = '$copy_autocapture'\n\nexport const knownUnsafeEditableEvent = [\n '$snapshot',\n '$pageview',\n '$pageleave',\n '$set',\n 'survey dismissed',\n 'survey sent',\n 'survey shown',\n '$identify',\n '$groupidentify',\n '$create_alias',\n '$$client_ingestion_warning',\n '$web_experiment_applied',\n '$feature_enrollment_update',\n '$feature_flag_called',\n] as const\n\n/**\n * These events can be processed by the `beforeCapture` function\n * but can cause unexpected confusion in data.\n *\n * Some features of PostHog rely on receiving 100% of these events\n */\nexport type KnownUnsafeEditableEvent = (typeof knownUnsafeEditableEvent)[number]\n\n/**\n * These are known events PostHog events that can be processed by the `beforeCapture` function\n * That means PostHog functionality does not rely on receiving 100% of these for calculations\n * So, it is safe to sample them to reduce the volume of events sent to PostHog\n */\nexport type KnownEventName =\n | '$heatmaps_data'\n | '$opt_in'\n | '$exception'\n | '$$heatmap'\n | '$web_vitals'\n | '$dead_click'\n | '$autocapture'\n | typeof COPY_AUTOCAPTURE_EVENT\n | '$rageclick'\n\nexport type EventName =\n | KnownUnsafeEditableEvent\n | KnownEventName\n // magic value so that the type of EventName is a set of known strings or any other string\n // which means you get autocomplete for known strings\n // but no type complaints when you add an arbitrary string\n | (string & {})\n\nexport interface CaptureResult {\n uuid: string\n event: EventName\n properties: Properties\n $set?: Properties\n $set_once?: Properties\n timestamp?: Date\n}\n\nexport type AutocaptureCompatibleElement = 'a' | 'button' | 'form' | 'input' | 'select' | 'textarea' | 'label'\nexport type DomAutocaptureEvents = 'click' | 'change' | 'submit'\n\n/**\n * If an array is passed for an allowlist, autocapture events will only be sent for elements matching\n * at least one of the elements in the array. Multiple allowlists can be used\n */\nexport interface AutocaptureConfig {\n /**\n * List of URLs to allow autocapture on, can be strings to match\n * or regexes e.g. ['https://example.com', 'test.com/.*']\n * this is useful when you want to autocapture on specific pages only\n *\n * if you set both url_allowlist and url_ignorelist,\n * we check the allowlist first and then the ignorelist.\n * the ignorelist can override the allowlist\n */\n url_allowlist?: (string | RegExp)[]\n\n /**\n * List of URLs to not allow autocapture on, can be strings to match\n * or regexes e.g. ['https://example.com', 'test.com/.*']\n * this is useful when you want to autocapture on most pages but not some specific ones\n *\n * if you set both url_allowlist and url_ignorelist,\n * we check the allowlist first and then the ignorelist.\n * the ignorelist can override the allowlist\n */\n url_ignorelist?: (string | RegExp)[]\n\n /**\n * List of DOM events to allow autocapture on e.g. ['click', 'change', 'submit']\n */\n dom_event_allowlist?: DomAutocaptureEvents[]\n\n /**\n * List of DOM elements to allow autocapture on\n * e.g. ['a', 'button', 'form', 'input', 'select', 'textarea', 'label']\n *\n * We consider the tree of elements from the root to the target element of the click event\n * so for the tree `div > div > button > svg`\n * if the allowlist has `button` then we allow the capture when the `button` or the `svg` is the click target\n * but not if either of the `div`s are detected as the click target\n */\n element_allowlist?: AutocaptureCompatibleElement[]\n\n /**\n * List of CSS selectors to allow autocapture on\n * e.g. ['[ph-capture]']\n * we consider the tree of elements from the root to the target element of the click event\n * so for the tree div > div > button > svg\n * and allow list config `['[id]']`\n * we will capture the click if the click-target or its parents has any id\n *\n * Everything is allowed when there's no allowlist\n */\n css_selector_allowlist?: string[]\n\n /**\n * Exclude certain element attributes from autocapture\n * E.g. ['aria-label'] or [data-attr-pii]\n */\n element_attribute_ignorelist?: string[]\n\n /**\n * When set to true, autocapture will capture the text of any element that is cut or copied.\n */\n capture_copied_text?: boolean\n}\n\nexport interface BootstrapConfig {\n distinctID?: string\n isIdentifiedID?: boolean\n featureFlags?: Record<string, boolean | string>\n featureFlagPayloads?: Record<string, JsonType>\n\n /**\n * Optionally provide a sessionID, this is so that you can provide an existing sessionID here to continue a user's session across a domain or device. It MUST be:\n * - unique to this user\n * - a valid UUID v7\n * - the timestamp part must be <= the timestamp of the first event in the session\n * - the timestamp of the last event in the session must be < the timestamp part + 24 hours\n * **/\n sessionID?: string\n}\n\nexport type SupportedWebVitalsMetrics = 'LCP' | 'CLS' | 'FCP' | 'INP'\n\nexport interface PerformanceCaptureConfig {\n /**\n * Works with session replay to use the browser's native performance observer to capture performance metrics\n */\n network_timing?: boolean\n\n /**\n * Use chrome's web vitals library to wrap fetch and capture web vitals\n */\n web_vitals?: boolean\n\n /**\n * We observe very large values reported by the Chrome web vitals library\n * These outliers are likely not real, useful values, and we exclude them\n * You can set this to 0 in order to include all values, NB this is not recommended\n *\n * @default 15 * 60 * 1000 (15 minutes)\n */\n __web_vitals_max_value?: number\n\n /**\n * By default all 4 metrics are captured\n * You can set this config to restrict which metrics are captured\n * e.g. ['CLS', 'FCP'] to only capture those two metrics\n * NB setting this does not override whether the capture is enabled\n *\n * @default ['LCP', 'CLS', 'FCP', 'INP']\n */\n web_vitals_allowed_metrics?: SupportedWebVitalsMetrics[]\n\n /**\n * We delay flushing web vitals metrics to reduce the number of events we send\n * This is the maximum time we will wait before sending the metrics\n *\n * @default 5000\n */\n web_vitals_delayed_flush_ms?: number\n}\n\nexport interface DeadClickCandidate {\n node: Element\n originalEvent: MouseEvent\n timestamp: number\n // time between click and the most recent scroll\n scrollDelayMs?: number\n // time between click and the most recent mutation\n mutationDelayMs?: number\n // time between click and the most recent selection changed event\n selectionChangedDelayMs?: number\n // if neither scroll nor mutation seen before threshold passed\n absoluteDelayMs?: number\n}\n\nexport type DeadClicksAutoCaptureConfig = {\n /**\n * We'll not consider a click to be a dead click, if it's followed by a scroll within `scroll_threshold_ms` milliseconds\n *\n * @default 100\n */\n scroll_threshold_ms?: number\n\n /**\n * We'll not consider a click to be a dead click, if it's followed by a selection change within `selection_change_threshold_ms` milliseconds\n *\n * @default 100\n */\n selection_change_threshold_ms?: number\n\n /**\n * We'll not consider a click to be a dead click, if it's followed by a mutation within `mutation_threshold_ms` milliseconds\n *\n * @default 2500\n */\n mutation_threshold_ms?: number\n\n /**\n * Allows setting behavior for when a dead click is captured.\n * For e.g. to support capture to heatmaps\n *\n * If not provided the default behavior is to auto-capture dead click events\n *\n * Only intended to be provided by our own SDK\n */\n __onCapture?: ((click: DeadClickCandidate, properties: Properties) => void) | undefined\n} & Pick<AutocaptureConfig, 'element_attribute_ignorelist'>\n\nexport interface HeatmapConfig {\n /**\n * How often to send batched data in `$heatmap_data` events\n * If set to 0 or not set, sends using the default interval of 1 second\n *\n * @default 1000\n */\n flush_interval_milliseconds: number\n}\n\nexport type BeforeSendFn = (cr: CaptureResult | null) => CaptureResult | null\n\n/**\n * Configuration options for the PostHog JavaScript SDK.\n * @see https://posthog.com/docs/libraries/js#config\n */\nexport interface PostHogConfig {\n /** URL of your PostHog instance.\n *\n * @default 'https://us.i.posthog.com'\n */\n api_host: string\n\n /**\n * If using a reverse proxy for `api_host` then this should be the actual PostHog app URL (e.g. https://us.posthog.com).\n * This ensures that links to PostHog point to the correct host.\n *\n * @default null\n */\n ui_host: string | null\n\n /**\n * The transport method to use for API requests.\n *\n * @default 'fetch'\n */\n api_transport?: 'XHR' | 'fetch'\n\n /**\n * The token for your PostHog project.\n * It should NOT be provided manually in the config, but rather passed as the first parameter to `posthog.init()`.\n */\n token: string\n\n /**\n * The name this instance will be identified by.\n * You don't need to set this most of the time,\n * but can be useful if you have several Posthog instances running at the same time.\n *\n * @default 'posthog'\n */\n name: string\n\n /**\n * Determines whether PostHog should autocapture events.\n * This setting does not affect capturing pageview events (see `capture_pageview`).\n *\n * @default true\n */\n autocapture: boolean | AutocaptureConfig\n\n /**\n * Determines whether PostHog should capture rage clicks.\n *\n * @default true\n */\n rageclick: boolean\n\n /**\n * Determines if cookie should be set on the top level domain (example.com).\n * If PostHog-js is loaded on a subdomain (test.example.com), and `cross_subdomain_cookie` is set to false,\n * it'll set the cookie on the subdomain only (test.example.com).\n *\n * NOTE: It will be set to `false` if we detect that the domain is a subdomain of a platform that is excluded from cross-subdomain cookie setting.\n * The current list of excluded platforms is `herokuapp.com`, `vercel.app`, and `netlify.app`.\n *\n * @see `isCrossDomainCookie`\n * @default true\n */\n cross_subdomain_cookie: boolean\n\n /**\n * Determines how PostHog stores information about the user. See [persistence](https://posthog.com/docs/libraries/js#persistence) for details.\n *\n * @default 'localStorage+cookie'\n */\n persistence: 'localStorage' | 'cookie' | 'memory' | 'localStorage+cookie' | 'sessionStorage'\n\n /**\n * The name for the super properties persistent store\n *\n * @default ''\n */\n persistence_name: string\n\n /** @deprecated - Use 'persistence_name' instead */\n cookie_name?: string\n\n /**\n * A function to be called once the PostHog scripts have loaded successfully.\n *\n * @param posthog_instance - The PostHog instance that has been loaded.\n */\n loaded: (posthog_instance: PostHog) => void\n\n /**\n * Determines whether PostHog should save referrer information.\n *\n * @default true\n */\n save_referrer: boolean\n\n /**\n * Determines whether PostHog should save marketing parameters.\n * These are `utm_*` paramaters and friends.\n *\n * @see {CAMPAIGN_PARAMS} from './utils/event-utils' - Default campaign parameters like utm_source, utm_medium, etc.\n * @default true\n */\n save_campaign_params: boolean\n\n /** @deprecated - Use `save_campaign_params` instead */\n store_google?: boolean\n\n /**\n * Used to extend the list of campaign parameters that are saved by default.\n *\n * @see {CAMPAIGN_PARAMS} from './utils/event-utils' - Default campaign parameters like utm_source, utm_medium, etc.\n * @default []\n */\n custom_campaign_params: string[]\n\n /**\n * Used to extend the list of user agents that are blocked by default.\n *\n * @see {DEFAULT_BLOCKED_UA_STRS} from './utils/blocked-uas' - Default list of blocked user agents.\n * @default []\n */\n custom_blocked_useragents: string[]\n\n /**\n * Determines whether PostHog should be in debug mode.\n * You can enable this to get more detailed logging.\n *\n * You can also enable this on your website by appending `?__posthog_debug=true` at the end of your URL\n * You can also call `posthog.debug()` in your code to enable debug mode\n *\n * @default false\n */\n debug: boolean\n\n /** @deprecated Use `debug` instead */\n verbose?: boolean\n\n /**\n * Determines whether PostHog should capture pageview events automatically.\n *\n * @default true\n */\n capture_pageview: boolean\n\n /**\n * Determines whether PostHog should capture pageleave events.\n * If set to `true`, it will capture pageleave events for all pages.\n * If set to `'if_capture_pageview'`, it will only capture pageleave events if `capture_pageview` is also set to `true`.\n *\n * @default 'if_capture_pageview'\n */\n capture_pageleave: boolean | 'if_capture_pageview'\n\n /**\n * Determines the number of days to store cookies for.\n *\n * @default 365\n */\n cookie_expiration: number\n\n /**\n * Determines whether PostHog should upgrade old cookies.\n * If set to `true`, the library will check for a cookie from our old js library and import super properties from it, then the old cookie is deleted.\n * This option only works in the initialization, so make sure you set it when you create the library.\n *\n * @default false\n */\n upgrade: boolean\n\n /**\n * Determines whether PostHog should disable session recording.\n *\n * @default false\n */\n disable_session_recording: boolean\n\n /**\n * Determines whether PostHog should disable persistence.\n * If set to `true`, the library will not save any data to the browser. It will also delete any data previously saved to the browser.\n *\n * @default false\n */\n disable_persistence: boolean\n\n /** @deprecated - use `disable_persistence` instead */\n disable_cookie?: boolean\n\n /**\n * Determines whether PostHog should disable surveys.\n *\n * @default false\n */\n disable_surveys: boolean\n\n /**\n * Determines whether PostHog should disable web experiments.\n *\n * Currently disabled while we're in BETA. It will be toggled to `true` in a future release.\n *\n * @default true\n */\n disable_web_experiments: boolean\n\n /**\n * Determines whether PostHog should disable any external dependency loading.\n * This will prevent PostHog from requesting any external scripts such as those needed for Session Replay, Surveys or Site Apps.\n *\n * @default false\n */\n disable_external_dependency_loading: boolean\n\n /**\n * A function to be called when a script is being loaded.\n * This can be used to modify the script before it is loaded.\n * This is useful for adding a nonce to the script, for example.\n *\n * @param script - The script element that is being loaded.\n * @returns The modified script element, or null if the script should not be loaded.\n */\n prepare_external_dependency_script?: (script: HTMLScriptElement) => HTMLScriptElement | null\n\n /**\n * A function to be called when a stylesheet is being loaded.\n * This can be used to modify the stylesheet before it is loaded.\n * This is useful for adding a nonce to the stylesheet, for example.\n *\n * @param stylesheet - The stylesheet element that is being loaded.\n * @returns The modified stylesheet element, or null if the stylesheet should not be loaded.\n */\n prepare_external_dependency_stylesheet?: (stylesheet: HTMLStyleElement) => HTMLStyleElement | null\n\n /**\n * Determines whether PostHog should enable recording console logs.\n * When undefined, it falls back to the remote config setting.\n *\n * @default undefined\n */\n enable_recording_console_log?: boolean\n\n /**\n * Determines whether PostHog should use secure cookies.\n * If this is `true`, PostHog cookies will be marked as secure,\n * meaning they will only be transmitted over HTTPS.\n *\n * @default window.location.protocol === 'https:'\n */\n secure_cookie: boolean\n\n /**\n * Determines whether PostHog should capture IP addresses.\n *\n * @default true\n */\n ip: boolean\n\n /**\n * Determines if users should be opted out of PostHog tracking by default,\n * requiring additional logic to opt them into capturing by calling `posthog.opt_in_capturing()`.\n *\n * @default false\n */\n opt_out_capturing_by_default: boolean\n\n /**\n * Determines where we'll save the information about whether users are opted out of capturing.\n *\n * @default 'localStorage'\n */\n opt_out_capturing_persistence_type: 'localStorage' | 'cookie'\n\n /**\n * Determines if users should be opted out of browser data storage by this PostHog instance by default,\n * requiring additional logic to opt them into capturing by calling `posthog.opt_in_capturing()`.\n *\n * @default false\n */\n opt_out_persistence_by_default?: boolean\n\n /**\n * Determines if users should be opted out of user agent filtering such as googlebot or other bots.\n * If this is set to `true`, PostHog will set `$browser_type` to either `bot` or `browser` for all events,\n * but will process all events as if they were from a browser.\n *\n * @default false\n */\n opt_out_useragent_filter: boolean\n\n /**\n * Determines the prefix for the cookie used to store the information about whether users are opted out of capturing.\n * When `null`, it falls back to the default prefix found in `consent.ts`.\n *\n * @default null\n */\n opt_out_capturing_cookie_prefix: string | null\n\n /**\n * Determines if users should be opted in to site apps.\n *\n * @default false\n */\n opt_in_site_apps: boolean\n\n /**\n * Determines whether PostHog should respect the Do Not Track header when computing\n * consent in `ConsentManager`.\n *\n * @see `ConsentManager`\n * @default false\n */\n respect_dnt: boolean\n\n /**\n * A list of properties that should never be sent with capture calls.\n *\n * @default []\n */\n property_denylist: string[]\n\n /** @deprecated - use `property_denylist` instead */\n property_blacklist?: string[]\n\n /**\n * A list of headers that should be sent with requests to the PostHog API.\n *\n * @default {}\n */\n request_headers: { [header_name: string]: string }\n\n /** @deprecated - use `request_headers` instead */\n xhr_headers?: { [header_name: string]: string }\n\n /**\n * A function that is called when a request to the PostHog API fails.\n *\n * @param error - The `RequestResponse` object that occurred.\n */\n on_request_error?: (error: RequestResponse) => void\n\n /** @deprecated - use `on_request_error` instead */\n on_xhr_error?: (failedRequest: XMLHttpRequest) => void\n\n /**\n * Determines whether PostHog should batch requests to the PostHog API.\n *\n * @default true\n */\n request_batching: boolean\n\n /**\n * Determines the maximum length of the properties string that can be sent with capture calls.\n *\n * @default 65535\n */\n properties_string_max_length: number\n\n /**\n * Determines the session recording options.\n *\n * @see `SessionRecordingOptions`\n * @default {}\n */\n session_recording: SessionRecordingOptions\n\n /**\n * Determines the session idle timeout in seconds.\n * Any new event that's happened after this timeout will create a new session.\n *\n * @default 30 * 60 -- 30 minutes\n */\n session_idle_timeout_seconds: number\n\n /**\n * Prevent autocapture from capturing any attribute names on elements.\n *\n * @default false\n */\n mask_all_element_attributes: boolean\n\n /**\n * Prevent autocapture from capturing `textContent` on elements.\n *\n * @default false\n */\n mask_all_text: boolean\n\n /**\n * Prevent autocapture from capturing personal data properties.\n * These include campaign parameters, UTM parameters, and other parameters that could be considered personal data under e.g. GDPR.\n *\n * @default false\n */\n mask_personal_data_properties: boolean\n\n /**\n * Custom list of personal data properties to mask.\n *\n * @default []\n */\n custom_personal_data_properties: string[]\n\n /**\n * One of the very first things the PostHog library does when init() is called\n * is make a request to the /decide endpoint on PostHog's backend.\n * This endpoint contains information on how to run the PostHog library\n * so events are properly received in the backend.\n *\n * This endpoint is required to run most features of the library.\n * However, if you're not using any of the described features,\n * you may wish to turn off the call completely to avoid an extra request\n * and reduce resource usage on both the client and the server.\n *\n * @default false\n */\n advanced_disable_decide: boolean\n\n /**\n * Will keep /decide running, but without any feature flag requests\n *\n * @default false\n */\n advanced_disable_feature_flags: boolean\n\n /**\n * Stops from firing feature flag requests on first page load.\n * Only requests feature flags when user identity or properties are updated,\n * or you manually request for flags to be loaded.\n *\n * @default false\n */\n advanced_disable_feature_flags_on_first_load: boolean\n\n /**\n * Determines whether PostHog should disable toolbar metrics.\n * This is our internal instrumentation for our toolbar in your website.\n *\n * @default false\n */\n advanced_disable_toolbar_metrics: boolean\n\n /**\n * Sets timeout for fetching feature flags\n *\n * @default 3000\n */\n feature_flag_request_timeout_ms: number\n\n /**\n * Sets timeout for fetching surveys\n *\n * @default 10000\n */\n surveys_request_timeout_ms: number\n\n /**\n * Function to get the device ID.\n * This doesn't usually need to be set, but can be useful if you want to use a custom device ID.\n *\n * @param uuid - The UUID we would use for the device ID.\n * @returns The device ID.\n *\n * @default (uuid) => uuid\n */\n get_device_id: (uuid: string) => string\n\n /**\n * This function or array of functions - if provided - are called immediately before sending data to the server.\n * It allows you to edit data before it is sent, or choose not to send it all.\n * if provided as an array the functions are called in the order they are provided\n * any one function returning null means the event will not be sent\n */\n before_send?: BeforeSendFn | BeforeSendFn[]\n\n /** @deprecated - use `before_send` instead */\n sanitize_properties: ((properties: Properties, event_name: string) => Properties) | null\n\n /** @deprecated - use `before_send` instead */\n _onCapture: (eventName: string, eventData: CaptureResult) => void\n\n /**\n * Determines whether to capture performance metrics.\n * These include Network Timing and Web Vitals.\n *\n * When `undefined`, fallback to the remote configuration.\n * If `false`, neither network timing nor web vitals will work.\n * If an object, that will override the remote configuration.\n *\n * @see {PerformanceCaptureConfig}\n * @default undefined\n */\n capture_performance?: boolean | PerformanceCaptureConfig\n\n /**\n * Determines whether to disable compression when sending events to the server.\n * WARNING: Should only be used for testing. Could negatively impact performance.\n *\n * @default false\n */\n disable_compression: boolean\n\n /**\n * An object containing the `distinctID`, `isIdentifiedID`, and `featureFlags` keys,\n * where `distinctID` is a string, and `featureFlags` is an object of key-value pairs.\n *\n * Since there is a delay between initializing PostHog and fetching feature flags,\n * feature flags are not always available immediately.\n * This makes them unusable if you want to do something like redirecting a user\n * to a different page based on a feature flag.\n *\n * You can, therefore, fetch the feature flags in your server and pre-fill them here,\n * allowing PostHog to know the feature flag values immediately.\n *\n * After the SDK fetches feature flags from PostHog, it will use those flag values instead of bootstrapped ones.\n *\n * @default {}\n */\n bootstrap: BootstrapConfig\n\n /**\n * The segment analytics object.\n *\n * @see https://posthog.com/docs/libraries/segment\n */\n segment?: SegmentAnalytics\n\n /**\n * Determines whether to capture heatmaps.\n *\n * @see {HeatmapConfig}\n * @default undefined\n */\n capture_heatmaps?: boolean | HeatmapConfig\n\n /* @deprecated - use `capture_heatmaps` instead */\n enable_heatmaps?: boolean\n\n /**\n * Determines whether to capture dead clicks.\n *\n * @see {DeadClicksAutoCaptureConfig}\n * @default undefined\n */\n capture_dead_clicks?: boolean | DeadClicksAutoCaptureConfig\n\n /**\n * Determines whether to capture exceptions.\n *\n * @default undefined\n */\n capture_exceptions?: boolean\n\n /**\n * Determines whether to disable scroll properties.\n * These allow you to keep track of how far down someone scrolled in your website.\n *\n * @default false\n */\n disable_scroll_properties?: boolean\n\n /**\n * Let the pageview scroll stats use a custom css selector for the root element, e.g. `main`\n * It will use `window.document.documentElement` if not specified.\n */\n scroll_root_selector?: string | string[]\n\n /**\n * You can control whether events from PostHog-js have person processing enabled with the `person_profiles` config setting.\n * There are three options:\n * - `person_profiles: 'always'` - we will process persons data for all events\n * - `person_profiles: 'never'` - we won't process persons for any event. This means that anonymous users will not be merged once they sign up or login, so you lose the ability to create funnels that track users from anonymous to identified. All events (including `$identify`) will be sent with `$process_person_profile: False`.\n * - `person_profiles: 'identified_only'` _(default)_ - we will only process persons when you call `posthog.identify`, `posthog.alias`, `posthog.setPersonProperties`, `posthog.group`, `posthog.setPersonPropertiesForFlags` or `posthog.setGroupPropertiesForFlags` Anonymous users won't get person profiles.\n *\n * @default 'identified_only'\n */\n person_profiles?: 'always' | 'never' | 'identified_only'\n\n /** @deprecated - use `person_profiles` instead */\n process_person?: 'always' | 'never' | 'identified_only'\n\n /**\n * Client side rate limiting\n */\n rate_limiting?: {\n /**\n * The average number of events per second that should be permitted\n *\n * @default 10\n */\n events_per_second?: number\n\n /**\n * How many events can be captured in a burst. This defaults to 10 times the events_per_second count\n *\n * @default 10 * `events_per_second`\n */\n events_burst_limit?: number\n }\n\n /**\n * Used when sending data via `fetch`, use with care.\n * This is intentionally meant to be used with NextJS `fetch`\n *\n * Incorrect `cache` usage may cause out-of-date data for feature flags, actions tracking, etc.\n * See https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\n */\n fetch_options?: {\n cache?: RequestInit['cache']\n next_options?: NextOptions\n }\n\n /**\n * Used to change the behavior of the request queue.\n * This is an advanced feature and should be used with caution.\n */\n request_queue_config?: RequestQueueConfig\n\n // ------- PREVIEW CONFIGS -------\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Whether to wrap fetch and add tracing headers to the request\n * */\n __add_tracing_headers?: boolean\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Enables the new RemoteConfig approach to loading config instead of decide\n * */\n __preview_remote_config?: boolean\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Whether to send a sentinel value for distinct id, device id, and session id, which will be replaced server-side by a cookieless hash\n * */\n __preview_experimental_cookieless_mode?: boolean\n\n // ------- RETIRED CONFIGS - NO REPLACEMENT OR USAGE -------\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n api_method?: string\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n inapp_protocol?: string\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n inapp_link_new_window?: boolean\n}\n\nexport interface SessionRecordingOptions {\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-no-capture'\n */\n blockClass?: string | RegExp\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default null\n */\n blockSelector?: string | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-ignore-input'\n */\n ignoreClass?: string | RegExp\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-mask'\n */\n maskTextClass?: string | RegExp\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskTextSelector?: string | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskTextFn?: ((text: string, element?: HTMLElement) => string) | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskAllInputs?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskInputOptions?: recordOptions['maskInputOptions']\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskInputFn?: ((text: string, element?: HTMLElement) => string) | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default {}\n */\n slimDOMOptions?: recordOptions['slimDOMOptions']\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n collectFonts?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default true\n */\n inlineStylesheet?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordCrossOriginIframes?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordHeaders?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordBody?: boolean\n\n /**\n * Allows local config to override remote canvas recording settings from the decide response\n */\n captureCanvas?: SessionRecordingCanvasOptions\n\n /**\n * Modify the network request before it is captured. Returning null or undefined stops it being captured\n */\n maskCapturedNetworkRequestFn?: ((data: CapturedNetworkRequest) => CapturedNetworkRequest | null | undefined) | null\n\n /** @deprecated - use maskCapturedNetworkRequestFn instead */\n maskNetworkRequestFn?: ((data: NetworkRequest) => NetworkRequest | null | undefined) | null\n\n /**\n * ADVANCED: while a user is active we take a full snapshot of the browser every interval.\n * For very few sites playback performance might be better with different interval.\n * Set to 0 to disable\n *\n * @default 1000 * 60 * 5 (5 minutes)\n */\n full_snapshot_interval_millis?: number\n\n /**\n * ADVANCED: whether to partially compress rrweb events before sending them to the server,\n * defaults to true, can be set to false to disable partial compression\n * NB requests are still compressed when sent to the server regardless of this setting\n *\n * @default true\n */\n compress_events?: boolean\n\n /**\n * ADVANCED: alters the threshold before a recording considers a user has become idle.\n * Normally only altered alongside changes to session_idle_timeout_ms.\n *\n * @default 1000 * 60 * 5 (5 minutes)\n */\n session_idle_threshold_ms?: number\n\n /**\n * ADVANCED: alters the refill rate for the token bucket mutation throttling\n * Normally only altered alongside posthog support guidance.\n * Accepts values between 0 and 100\n *\n * @default 10\n */\n __mutationRateLimiterRefillRate?: number\n\n /**\n * ADVANCED: alters the bucket size for the token bucket mutation throttling\n * Normally only altered alongside posthog support guidance.\n * Accepts values between 0 and 100\n *\n * @default 100\n */\n __mutationRateLimiterBucketSize?: number\n}\n\nexport type SessionIdChangedCallback = (\n sessionId: string,\n windowId: string | null | undefined,\n changeReason?: { noSessionId: boolean; activityTimeout: boolean; sessionPastMaximumLength: boolean }\n) => void\n\nexport enum Compression {\n GZipJS = 'gzip-js',\n Base64 = 'base64',\n}\n\n// Request types - these should be kept minimal to what request.ts needs\n\n// Minimal class to allow interop between different request methods (xhr / fetch)\nexport interface RequestResponse {\n statusCode: number\n text?: string\n json?: any\n}\n\nexport type RequestCallback = (response: RequestResponse) => void\n\n// See https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\ntype NextOptions = { revalidate: false | 0 | number; tags: string[] }\n\nexport interface RequestWithOptions {\n url: string\n // Data can be a single object or an array of objects when batched\n data?: Record<string, any> | Record<string, any>[]\n headers?: Record<string, any>\n transport?: 'XHR' | 'fetch' | 'sendBeacon'\n method?: 'POST' | 'GET'\n urlQueryArgs?: { compression: Compression }\n callback?: RequestCallback\n timeout?: number\n noRetries?: boolean\n compression?: Compression | 'best-available'\n fetchOptions?: {\n cache?: RequestInit['cache']\n next?: NextOptions\n }\n}\n\n// Queued request types - the same as a request but with additional queueing information\n\nexport interface QueuedRequestWithOptions extends RequestWithOptions {\n /** key of queue, e.g. 'sessionRecording' vs 'event' */\n batchKey?: string\n}\n\n// Used explicitly for retriable requests\nexport interface RetriableRequestWithOptions extends QueuedRequestWithOptions {\n retriesPerformedSoFar?: number\n}\n\n// we used to call a request that was sent to the queue with options attached `RequestQueueOptions`\n// so we can't call the options used to configure the behavior of the RequestQueue that as well,\n// so instead we call them config\nexport interface RequestQueueConfig {\n /**\n * ADVANCED - alters the frequency which PostHog sends events to the server.\n * generally speaking this is only set when apps have automatic page refreshes, or very short visits.\n * Defaults to 3 seconds when not set\n * Allowed values between 250 and 5000\n * */\n flush_interval_ms?: number\n}\n\nexport interface CaptureOptions {\n /**\n * Used when `$identify` is called\n * Will set person properties overriding previous values\n */\n $set?: Properties\n\n /**\n * Used when `$identify` is called\n * Will set person properties but only once, it will NOT override previous values\n */\n $set_once?: Properties\n\n /**\n * Used to override the desired endpoint for the captured event\n */\n _url?: string\n\n /**\n * key of queue, e.g. 'sessionRecording' vs 'event'\n */\n _batchKey?: string\n\n /**\n * If set, overrides and disables config.properties_string_max_length\n */\n _noTruncate?: boolean\n\n /**\n * If set, skips the batched queue\n */\n send_instantly?: boolean\n\n /**\n * If set, skips the client side rate limiting\n */\n skip_client_rate_limiting?: boolean\n\n /**\n * If set, overrides the desired transport method\n */\n transport?: RequestWithOptions['transport']\n\n /**\n * If set, overrides the current timestamp\n */\n timestamp?: Date\n}\n\nexport type FlagVariant = { flag: string; variant: string }\n\nexport type SessionRecordingCanvasOptions = {\n /**\n * If set, records the canvas\n *\n * @default false\n */\n recordCanvas?: boolean | null\n\n /**\n * If set, records the canvas at the given FPS\n * Can be set in the remote configuration\n * Limited between 0 and 12\n * When canvas recording is enabled, if this is not set locally, then remote config sets this as 4\n *\n * @default null-ish\n */\n canvasFps?: number | null\n\n /**\n * If set, records the canvas at the given quality\n * Can be set in the remote configuration\n * Must be a string that is a valid decimal between 0 and 1\n * When canvas recording is enabled, if this is not set locally, then remote config sets this as \"0.4\"\n *\n * @default null-ish\n */\n canvasQuality?: string | null\n}\n\n/**\n * Remote configuration for the PostHog instance\n *\n * All of these settings can be configured directly in your PostHog instance\n * Any configuration set in the client overrides the information from the server\n */\nexport interface RemoteConfig {\n /**\n * Supported compression algorithms\n */\n supportedCompression: Compression[]\n\n /**\n * If set, disables autocapture\n */\n autocapture_opt_out?: boolean\n\n /**\n * originally capturePerformance was replay only and so boolean true\n * is equivalent to { network_timing: true }\n * now capture performance can be separately enabled within replay\n * and as a standalone web vitals tracker\n * people can have them enabled separately\n * they work standalone but enhance each other\n * TODO: deprecate this so we make a new config that doesn't need this explanation\n */\n capturePerformance?: boolean | PerformanceCaptureConfig\n\n /**\n * Whether we should use a custom endpoint for analytics\n *\n * @default { endpoint: \"/e\" }\n */\n analytics?: {\n endpoint?: string\n }\n\n /**\n * Whether the `$elements_chain` property should be sent as a string or as an array\n *\n * @default false\n */\n elementsChainAsString?: boolean\n\n /**\n * This is currently in development and may have breaking changes without a major version bump\n */\n autocaptureExceptions?: boolean | { endpoint?: string }\n\n /**\n * Session recording configuration options\n */\n sessionRecording?: SessionRecordingCanvasOptions & {\n endpoint?: string\n consoleLogRecordingEnabled?: boolean\n // the API returns a decimal between 0 and 1 as a string\n sampleRate?: string | null\n minimumDurationMilliseconds?: number\n linkedFlag?: string | FlagVariant | null\n networkPayloadCapture?: Pick<NetworkRecordOptions, 'recordBody' | 'recordHeaders'>\n masking?: Pick<SessionRecordingOptions, 'maskAllInputs' | 'maskTextSelector'>\n urlTriggers?: SessionRecordingUrlTrigger[]\n scriptConfig?: { script?: string | undefined }\n urlBlocklist?: SessionRecordingUrlTrigger[]\n eventTriggers?: string[]\n }\n\n /**\n * Whether surveys are enabled\n */\n surveys?: boolean\n\n /**\n * Parameters for the toolbar\n */\n toolbarParams: ToolbarParams\n\n /**\n * @deprecated renamed to toolbarParams, still present on older API responses\n */\n editorParams?: ToolbarParams\n\n /**\n * @deprecated, moved to toolbarParams\n */\n toolbarVersion: 'toolbar'\n\n /**\n * Whether the user is authenticated\n */\n isAuthenticated: boolean\n\n /**\n * List of site apps with their IDs and URLs\n */\n siteApps: { id: string; url: string }[]\n\n /**\n * Whether heatmaps are enabled\n */\n heatmaps?: boolean\n\n /**\n * Whether to only capture identified users by default\n */\n defaultIdentifiedOnly?: boolean\n\n /**\n * Whether to capture dead clicks\n */\n captureDeadClicks?: boolean\n\n /**\n * Indicates if the team has any flags enabled (if not we don't need to load them)\n */\n hasFeatureFlags?: boolean\n}\n\n/**\n * Decide returns everything we have on the remote config plus feature flags and their payloads\n */\nexport interface DecideResponse extends RemoteConfig {\n featureFlags: Record<string, string | boolean>\n featureFlagPayloads: Record<string, JsonType>\n errorsWhileComputingFlags: boolean\n requestId?: string\n}\n\nexport type SiteAppGlobals = {\n event: {\n uuid: string\n event: EventName\n properties: Properties\n timestamp?: Date\n elements_chain?: string\n distinct_id?: string\n }\n person: {\n properties: Properties\n }\n groups: Record<string, { id: string; type: string; properties: Properties }>\n}\n\nexport type SiteAppLoader = {\n id: string\n init: (config: { posthog: PostHog; callback: (success: boolean) => void }) => {\n processEvent?: (globals: SiteAppGlobals) => void\n }\n}\n\nexport type SiteApp = {\n id: string\n loaded: boolean\n errored: boolean\n processedBuffer: boolean\n processEvent?: (globals: SiteAppGlobals) => void\n}\n\nexport type FeatureFlagsCallback = (\n flags: string[],\n variants: Record<string, string | boolean>,\n context?: {\n errorsLoading?: boolean\n }\n) => void\n\nexport type RemoteConfigFeatureFlagCallback = (payload: JsonType) => void\n\nexport interface PersistentStore {\n is_supported: () => boolean\n error: (error: any) => void\n parse: (name: string) => any\n get: (name: string) => any\n set: (\n name: string,\n value: any,\n expire_days?: number | null,\n cross_subdomain?: boolean,\n secure?: boolean,\n debug?: boolean\n ) => void\n remove: (name: string, cross_subdomain?: boolean) => void\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type Breaker = {}\nexport type EventHandler = (event: Event) => boolean | void\n\nexport type ToolbarUserIntent = 'add-action' | 'edit-action'\nexport type ToolbarSource = 'url' | 'localstorage'\nexport type ToolbarVersion = 'toolbar'\n\n/* sync with posthog */\nexport interface ToolbarParams {\n token?: string /** public posthog-js token */\n temporaryToken?: string /** private temporary user token */\n actionId?: number\n userIntent?: ToolbarUserIntent\n source?: ToolbarSource\n toolbarVersion?: ToolbarVersion\n instrument?: boolean\n distinctId?: string\n userEmail?: string\n dataAttributes?: string[]\n featureFlags?: Record<string, string | boolean>\n}\n\nexport type SnippetArrayItem = [method: string, ...args: any[]]\n\nexport type JsonRecord = { [key: string]: JsonType }\nexport type JsonType = string | number | boolean | null | undefined | JsonRecord | Array<JsonType>\n\n/** A feature that isn't publicly available yet.*/\nexport interface EarlyAccessFeature {\n // Sync this with the backend's EarlyAccessFeatureSerializer!\n name: string\n description: string\n stage: 'concept' | 'alpha' | 'beta'\n documentationUrl: string | null\n flagKey: string | null\n}\n\nexport type EarlyAccessFeatureStage = 'concept' | 'alpha' | 'beta' | 'general-availability'\nexport type EarlyAccessFeatureCallback = (earlyAccessFeatures: EarlyAccessFeature[]) => void\n\nexport interface EarlyAccessFeatureResponse {\n earlyAccessFeatures: EarlyAccessFeature[]\n}\n\nexport type Headers = Record<string, string>\n\n/* for rrweb/network@1\n ** when that is released as part of rrweb this can be removed\n ** don't rely on this type, it may change without notice\n */\nexport type InitiatorType =\n | 'audio'\n | 'beacon'\n | 'body'\n | 'css'\n | 'early-hint'\n | 'embed'\n | 'fetch'\n | 'frame'\n | 'iframe'\n | 'icon'\n | 'image'\n | 'img'\n | 'input'\n | 'link'\n | 'navigation'\n | 'object'\n | 'ping'\n | 'script'\n | 'track'\n | 'video'\n | 'xmlhttprequest'\n\nexport type NetworkRecordOptions = {\n initiatorTypes?: InitiatorType[]\n maskRequestFn?: (data: CapturedNetworkRequest) => CapturedNetworkRequest | undefined\n recordHeaders?: boolean | { request: boolean; response: boolean }\n recordBody?: boolean | string[] | { request: boolean | string[]; response: boolean | string[] }\n recordInitialRequests?: boolean\n /**\n * whether to record PerformanceEntry events for network requests\n */\n recordPerformance?: boolean\n /**\n * the PerformanceObserver will only observe these entry types\n */\n performanceEntryTypeToObserve: string[]\n /**\n * the maximum size of the request/response body to record\n * NB this will be at most 1MB even if set larger\n */\n payloadSizeLimitBytes: number\n /**\n * some domains we should never record the payload\n * for example other companies session replay ingestion payloads aren't super useful but are gigantic\n * if this isn't provided we use a default list\n * if this is provided - we add the provided list to the default list\n * i.e. we never record the payloads on the default deny list\n */\n payloadHostDenyList?: string[]\n}\n\n/** @deprecated - use CapturedNetworkRequest instead */\nexport type NetworkRequest = {\n url: string\n}\n\n// In rrweb this is called NetworkRequest, but we already exposed that as having only URL\n// we also want to vary from the rrweb NetworkRequest because we want to include\n// all PerformanceEntry properties too.\n// that has 4 required properties\n// readonly duration: DOMHighResTimeStamp;\n// readonly entryType: string;\n// readonly name: string;\n// readonly startTime: DOMHighResTimeStamp;\n// NB: properties below here are ALPHA, don't rely on them, they may change without notice\n\n// we mirror PerformanceEntry since we read into this type from a PerformanceObserver,\n// but we don't want to inherit its readonly-iness\ntype Writable<T> = { -readonly [P in keyof T]: T[P] }\n\nexport type CapturedNetworkRequest = Writable<Omit<PerformanceEntry, 'toJSON'>> & {\n // properties below here are ALPHA, don't rely on them, they may change without notice\n method?: string\n initiatorType?: InitiatorType\n status?: number\n timeOrigin?: number\n timestamp?: number\n startTime?: number\n endTime?: number\n requestHeaders?: Headers\n requestBody?: string | null\n responseHeaders?: Headers\n responseBody?: string | null\n // was this captured before fetch/xhr could have been wrapped\n isInitial?: boolean\n}\n\nexport type ErrorConversionArgs = {\n event: string | Event\n error?: Error\n}\n\nexport type ErrorEventArgs = [\n event: string | Event,\n source?: string | undefined,\n lineno?: number | undefined,\n colno?: number | undefined,\n error?: Error | undefined,\n]\n\nexport type ErrorMetadata = {\n handled?: boolean\n synthetic?: boolean\n syntheticException?: Error\n overrideExceptionType?: string\n overrideExceptionMessage?: string\n defaultExceptionType?: string\n defaultExceptionMessage?: string\n}\n\n// levels originally copied from Sentry to work with the sentry integration\n// and to avoid relying on a frequently changing @sentry/types dependency\n// but provided as an array of literal types, so we can constrain the level below\nexport const severityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'] as const\nexport declare type SeverityLevel = (typeof severityLevels)[number]\n\nexport interface ErrorProperties {\n $exception_type: string\n $exception_message: string\n $exception_level: SeverityLevel\n $exception_source?: string\n $exception_lineno?: number\n $exception_colno?: number\n $exception_DOMException_code?: string\n $exception_is_synthetic?: boolean\n $exception_stack_trace_raw?: string\n $exception_handled?: boolean\n $exception_personURL?: string\n}\n\nexport interface ErrorConversions {\n errorToProperties: (args: ErrorEventArgs) => ErrorProperties\n unhandledRejectionToProperties: (args: [ev: PromiseRejectionEvent]) => ErrorProperties\n}\n\nexport interface SessionRecordingUrlTrigger {\n url: string\n matching: 'regex'\n}\n","import { window } from './globals'\nimport { knownUnsafeEditableEvent, KnownUnsafeEditableEvent } from '../types'\nimport { includes } from './string-utils'\n\n// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const isFunction = (x: unknown): x is (...args: any[]) => any => {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return typeof x === 'function'\n}\n\nexport const isNativeFunction = (x: unknown): x is (...args: any[]) => any =>\n isFunction(x) && x.toString().indexOf('[native code]') !== -1\n\n// When angular patches functions they pass the above `isNativeFunction` check (at least the MutationObserver)\nexport const isAngularZonePresent = (): boolean => {\n return !!(window as any).Zone\n}\n\n// Underscore Addons\nexport const isObject = (x: unknown): x is Record<string, any> => {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !isArray(x)\n}\nexport const isEmptyObject = (x: unknown) => {\n if (isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const isUndefined = (x: unknown): x is undefined => x === void 0\n\nexport const isString = (x: unknown): x is string => {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\n\nexport const isEmptyString = (x: unknown): boolean => isString(x) && x.trim().length === 0\n\nexport const isNull = (x: unknown): x is null => {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\n\n/*\n sometimes you want to check if something is null or undefined\n that's what this is for\n */\nexport const isNullish = (x: unknown): x is null | undefined => isUndefined(x) || isNull(x)\n\nexport const isNumber = (x: unknown): x is number => {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const isBoolean = (x: unknown): x is boolean => {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n\nexport const isDocument = (x: unknown): x is Document => {\n // eslint-disable-next-line posthog-js/no-direct-document-check\n return x instanceof Document\n}\n\nexport const isFormData = (x: unknown): x is FormData => {\n // eslint-disable-next-line posthog-js/no-direct-form-data-check\n return x instanceof FormData\n}\n\nexport const isFile = (x: unknown): x is File => {\n // eslint-disable-next-line posthog-js/no-direct-file-check\n return x instanceof File\n}\n\nexport const isError = (x: unknown): x is Error => {\n return x instanceof Error\n}\n\nexport const isKnownUnsafeEditableEvent = (x: unknown): x is KnownUnsafeEditableEvent => {\n return includes(knownUnsafeEditableEvent as unknown as string[], x)\n}\n","import Config from '../config'\nimport { isUndefined } from './type-utils'\nimport { assignableWindow, window } from './globals'\n\nexport type Logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => void\n info: (...args: any[]) => void\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n critical: (...args: any[]) => void\n uninitializedWarning: (methodName: string) => void\n createLogger: (prefix: string) => Logger\n}\n\nconst _createLogger = (prefix: string): Logger => {\n const logger: Logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if (\n window &&\n (Config.DEBUG || assignableWindow.POSTHOG_DEBUG) &&\n !isUndefined(window.console) &&\n window.console\n ) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(prefix, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(prefix, ...args)\n },\n\n uninitializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n\n createLogger: (additionalPrefix: string) => _createLogger(`${prefix} ${additionalPrefix}`),\n }\n return logger\n}\n\nexport const logger = _createLogger('[PostHog.js]')\n\nexport const createLogger = logger.createLogger\n","import { Breaker, Properties } from '../types'\nimport { hasOwnProperty, isArray, isFormData, isNull, isNullish, isString } from './type-utils'\nimport { logger } from './logger'\nimport { nativeForEach, nativeIndexOf } from './globals'\n\nconst breaker: Breaker = {}\n\nexport function eachArray<E = any>(\n obj: E[] | null | undefined,\n iterator: (value: E, key: number) => void | Breaker,\n thisArg?: any\n): void {\n if (isArray(obj)) {\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg)\n } else if ('length' in obj && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return\n }\n }\n }\n }\n}\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\nexport function each(obj: any, iterator: (value: any, key: any) => void | Breaker, thisArg?: any): void {\n if (isNullish(obj)) {\n return\n }\n if (isArray(obj)) {\n return eachArray(obj, iterator, thisArg)\n }\n if (isFormData(obj)) {\n for (const pair of obj.entries()) {\n if (iterator.call(thisArg, pair[1], pair[0]) === breaker) {\n return\n }\n }\n return\n }\n for (const key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(thisArg, obj[key], key) === breaker) {\n return\n }\n }\n }\n}\n\nexport const extend = function (obj: Record<string, any>, ...args: Record<string, any>[]): Record<string, any> {\n eachArray(args, function (source) {\n for (const prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop]\n }\n }\n })\n return obj\n}\n\nexport const extendArray = function <T>(obj: T[], ...args: T[][]): T[] {\n eachArray(args, function (source) {\n eachArray(source, function (item) {\n obj.push(item)\n })\n })\n return obj\n}\n\nexport const include = function (\n obj: null | string | Array<any> | Record<string, any>,\n target: any\n): boolean | Breaker {\n let found = false\n if (isNull(obj)) {\n return found\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1\n }\n each(obj, function (value) {\n if (found || (found = value === target)) {\n return breaker\n }\n return\n })\n return found\n}\n\n/**\n * Object.entries() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\nexport function entries<T = any>(obj: Record<string, T>): [string, T][] {\n const ownProps = Object.keys(obj)\n let i = ownProps.length\n const resArray = new Array(i) // preallocate the Array\n\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]]\n }\n return resArray\n}\n\nexport const trySafe = function <T>(fn: () => T): T | undefined {\n try {\n return fn()\n } catch {\n return undefined\n }\n}\n\nexport const safewrap = function <F extends (...args: any[]) => any = (...args: any[]) => any>(f: F): F {\n return function (...args) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return f.apply(this, args)\n } catch (e) {\n logger.critical(\n 'Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.'\n )\n logger.critical(e)\n }\n } as F\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const safewrapClass = function (klass: Function, functions: string[]): void {\n for (let i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = safewrap(klass.prototype[functions[i]])\n }\n}\n\nexport const stripEmptyProperties = function (p: Properties): Properties {\n const ret: Properties = {}\n each(p, function (v, k) {\n if (isString(v) && v.length > 0) {\n ret[k] = v\n }\n })\n return ret\n}\n\n/**\n * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @returns {{}|undefined|*}\n */\nfunction deepCircularCopy<T extends Record<string, any> = Record<string, any>>(\n value: T,\n customizer?: <K extends keyof T = keyof T>(value: T[K], key?: K) => T[K]\n): T | undefined {\n const COPY_IN_PROGRESS_SET = new Set()\n\n function internalDeepCircularCopy(value: T, key?: string): T | undefined {\n if (value !== Object(value)) return customizer ? customizer(value as any, key) : value // primitive value\n\n if (COPY_IN_PROGRESS_SET.has(value)) return undefined\n COPY_IN_PROGRESS_SET.add(value)\n let result: T\n\n if (isArray(value)) {\n result = [] as any as T\n eachArray(value, (it) => {\n result.push(internalDeepCircularCopy(it))\n })\n } else {\n result = {} as T\n each(value, (val, key) => {\n if (!COPY_IN_PROGRESS_SET.has(val)) {\n ;(result as any)[key] = internalDeepCircularCopy(val, key)\n }\n })\n }\n return result\n }\n return internalDeepCircularCopy(value)\n}\n\nexport function _copyAndTruncateStrings<T extends Record<string, any> = Record<string, any>>(\n object: T,\n maxStringLength: number | null\n): T {\n return deepCircularCopy(object, (value: any) => {\n if (isString(value) && !isNull(maxStringLength)) {\n return (value as string).slice(0, maxStringLength)\n }\n return value\n }) as T\n}\n\n// NOTE: Update PostHogConfig docs if you change this list\n// We will not try to catch all bullets here, but we should make an effort to catch the most common ones\n// You should be highly against adding more to this list, because ultimately customers can configure\n// their `cross_subdomain_cookie` setting to anything they want.\nconst EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE = ['herokuapp.com', 'vercel.app', 'netlify.app']\nexport function isCrossDomainCookie(documentLocation: Location | undefined) {\n const hostname = documentLocation?.hostname\n\n if (!isString(hostname)) {\n return false\n }\n // split and slice isn't a great way to match arbitrary domains,\n // but it's good enough for ensuring we only match herokuapp.com when it is the TLD\n // for the hostname\n const lastTwoParts = hostname.split('.').slice(-2).join('.')\n\n for (const excluded of EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE) {\n if (lastTwoParts === excluded) {\n return false\n }\n }\n\n return true\n}\n\nexport function find<T>(value: T[], predicate: (value: T) => boolean): T | undefined {\n for (let i = 0; i < value.length; i++) {\n if (predicate(value[i])) {\n return value[i]\n }\n }\n return undefined\n}\n\n// Use this instead of element.addEventListener to avoid eslint errors\n// this properly implements the default options for passive event listeners\nexport function addEventListener(\n element: Window | Document | Element | undefined,\n event: string,\n callback: EventListener,\n options?: AddEventListenerOptions\n): void {\n const { capture = false, passive = true } = options ?? {}\n\n // This is the only place where we are allowed to call this function\n // because the whole idea is that we should be calling this instead of the built-in one\n // eslint-disable-next-line posthog-js/no-add-event-listener\n element?.addEventListener(event, callback, { capture, passive })\n}\n","import { each } from './'\n\nimport { isArray, isFile, isUndefined } from './type-utils'\nimport { logger } from './logger'\nimport { document } from './globals'\n\nconst localDomains = ['localhost', '127.0.0.1']\n\n/**\n * IE11 doesn't support `new URL`\n * so we can create an anchor element and use that to parse the URL\n * there's a lot of overlap between HTMLHyperlinkElementUtils and URL\n * meaning useful properties like `pathname` are available on both\n */\nexport const convertToURL = (url: string): HTMLAnchorElement | null => {\n const location = document?.createElement('a')\n if (isUndefined(location)) {\n return null\n }\n\n location.href = url\n return location\n}\n\nexport const formDataToQuery = function (formdata: Record<string, any> | FormData, arg_separator = '&'): string {\n let use_val: string\n let use_key: string\n const tph_arr: string[] = []\n\n each(formdata, function (val: File | string | undefined, key: string | undefined) {\n // the key might be literally the string undefined for e.g. if {undefined: 'something'}\n if (isUndefined(val) || isUndefined(key) || key === 'undefined') {\n return\n }\n\n use_val = encodeURIComponent(isFile(val) ? val.name : val.toString())\n use_key = encodeURIComponent(key)\n tph_arr[tph_arr.length] = use_key + '=' + use_val\n })\n\n return tph_arr.join(arg_separator)\n}\n\n// NOTE: Once we get rid of IE11/op_mini we can start using URLSearchParams\nexport const getQueryParam = function (url: string, param: string): string {\n const withoutHash: string = url.split('#')[0] || ''\n\n // Split only on the first ? to sort problem out for those with multiple ?s\n // and then remove them\n const queryParams: string = withoutHash.split(/\\?(.*)/)[1] || ''\n const cleanedQueryParams = queryParams.replace(/^\\?+/g, '')\n\n const queryParts = cleanedQueryParams.split('&')\n let keyValuePair\n\n for (let i = 0; i < queryParts.length; i++) {\n const parts = queryParts[i].split('=')\n if (parts[0] === param) {\n keyValuePair = parts\n break\n }\n }\n\n if (!isArray(keyValuePair) || keyValuePair.length < 2) {\n return ''\n } else {\n let result = keyValuePair[1]\n try {\n result = decodeURIComponent(result)\n } catch {\n logger.error('Skipping decoding for malformed query param: ' + result)\n }\n return result.replace(/\\+/g, ' ')\n }\n}\n\n// replace any query params in the url with the provided mask value. Tries to keep the URL as instant as possible,\n// including preserving malformed text in most cases\nexport const maskQueryParams = function <T extends string | undefined>(\n url: T,\n maskedParams: string[] | undefined,\n mask: string\n): T extends string ? string : undefined {\n if (!url || !maskedParams || !maskedParams.length) {\n return url as any\n }\n\n const splitHash = url.split('#')\n const withoutHash: string = splitHash[0] || ''\n const hash = splitHash[1]\n\n const splitQuery: string[] = withoutHash.split('?')\n const queryString: string = splitQuery[1]\n const urlWithoutQueryAndHash: string = splitQuery[0]\n const queryParts = (queryString || '').split('&')\n\n // use an array of strings rather than an object to preserve ordering and duplicates\n const paramStrings: string[] = []\n\n for (let i = 0; i < queryParts.length; i++) {\n const keyValuePair = queryParts[i].split('=')\n if (!isArray(keyValuePair)) {\n continue\n } else if (maskedParams.includes(keyValuePair[0])) {\n paramStrings.push(keyValuePair[0] + '=' + mask)\n } else {\n paramStrings.push(queryParts[i])\n }\n }\n\n let result = urlWithoutQueryAndHash\n if (queryString != null) {\n result += '?' + paramStrings.join('&')\n }\n if (hash != null) {\n result += '#' + hash\n }\n\n return result as any\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n const matches = hash.match(new RegExp(param + '=([^&]*)'))\n return matches ? matches[1] : null\n}\n\nexport const isLocalhost = (): boolean => {\n return localDomains.includes(location.hostname)\n}\n","// import { patch } from 'rrweb/typings/utils'\n// copied from https://github.com/rrweb-io/rrweb/blob/8aea5b00a4dfe5a6f59bd2ae72bb624f45e51e81/packages/rrweb/src/utils.ts#L129\n// which was copied from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nimport { isFunction } from '../../../utils/type-utils'\n\nexport function patch(\n source: { [key: string]: any },\n name: string,\n replacement: (...args: unknown[]) => unknown\n): () => void {\n try {\n if (!(name in source)) {\n return () => {\n //\n }\n }\n\n const original = source[name] as () => unknown\n const wrapped = replacement(original)\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (isFunction(wrapped)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n wrapped.prototype = wrapped.prototype || {}\n Object.defineProperties(wrapped, {\n __posthog_wrapped__: {\n enumerable: false,\n value: true,\n },\n })\n }\n\n source[name] = wrapped\n\n return () => {\n source[name] = original\n }\n } catch {\n return () => {\n //\n }\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n}\n","import { NetworkRecordOptions } from '../../../types'\n\nfunction hostnameFromURL(url: string | URL | RequestInfo): string | null {\n try {\n if (typeof url === 'string') {\n return new URL(url).hostname\n }\n if ('url' in url) {\n return new URL(url.url).hostname\n }\n return url.hostname\n } catch {\n return null\n }\n}\n\nexport function isHostOnDenyList(url: string | URL | Request, options: NetworkRecordOptions) {\n const hostname = hostnameFromURL(url)\n const defaultNotDenied = { hostname, isHostDenied: false }\n\n if (!options.payloadHostDenyList?.length || !hostname?.trim().length) {\n return defaultNotDenied\n }\n\n for (const deny of options.payloadHostDenyList) {\n if (hostname.endsWith(deny)) {\n return { hostname, isHostDenied: true }\n }\n }\n\n return defaultNotDenied\n}\n","import { CapturedNetworkRequest, NetworkRecordOptions, PostHogConfig } from '../../types'\nimport { isFunction, isNullish, isString, isUndefined } from '../../utils/type-utils'\nimport { convertToURL } from '../../utils/request-utils'\nimport { logger } from '../../utils/logger'\nimport { shouldCaptureValue } from '../../autocapture-utils'\nimport { each } from '../../utils'\n\nconst LOGGER_PREFIX = '[SessionRecording]'\n\nconst REDACTED = 'redacted'\n\nexport const defaultNetworkOptions: Required<NetworkRecordOptions> = {\n initiatorTypes: [\n 'audio',\n 'beacon',\n 'body',\n 'css',\n 'early-hint',\n 'embed',\n 'fetch',\n 'frame',\n 'iframe',\n 'icon',\n 'image',\n 'img',\n 'input',\n 'link',\n 'navigation',\n 'object',\n 'ping',\n 'script',\n 'track',\n 'video',\n 'xmlhttprequest',\n ],\n maskRequestFn: (data: CapturedNetworkRequest) => data,\n recordHeaders: false,\n recordBody: false,\n recordInitialRequests: false,\n recordPerformance: false,\n performanceEntryTypeToObserve: [\n // 'event', // This is too noisy as it covers all browser events\n 'first-input',\n // 'mark', // Mark is used too liberally. We would need to filter for specific marks\n // 'measure', // Measure is used too liberally. We would need to filter for specific measures\n 'navigation',\n 'paint',\n 'resource',\n ],\n payloadSizeLimitBytes: 1000000,\n payloadHostDenyList: [\n '.lr-ingest.io',\n '.ingest.sentry.io',\n '.clarity.ms',\n // NB no leading dot here\n 'analytics.google.com',\n ],\n}\n\nconst HEADER_DENY_LIST = [\n 'authorization',\n 'x-forwarded-for',\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-real-ip',\n 'remote-addr',\n 'forwarded',\n 'proxy-authorization',\n 'x-csrf-token',\n 'x-csrftoken',\n 'x-xsrf-token',\n]\n\nconst PAYLOAD_CONTENT_DENY_LIST = [\n 'password',\n 'secret',\n 'passwd',\n 'api_key',\n 'apikey',\n 'auth',\n 'credentials',\n 'mysql_pwd',\n 'privatekey',\n 'private_key',\n 'token',\n]\n\n// we always remove headers on the deny list because we never want to capture this sensitive data\nconst removeAuthorizationHeader = (data: CapturedNetworkRequest): CapturedNetworkRequest => {\n const headers = data.requestHeaders\n if (!isNullish(headers)) {\n each(Object.keys(headers ?? {}), (header) => {\n if (HEADER_DENY_LIST.includes(header.toLowerCase())) {\n headers[header] = REDACTED\n }\n })\n }\n return data\n}\n\nconst POSTHOG_PATHS_TO_IGNORE = ['/s/', '/e/', '/i/']\n// want to ignore posthog paths when capturing requests, or we can get trapped in a loop\n// because calls to PostHog would be reported using a call to PostHog which would be reported....\nconst ignorePostHogPaths = (\n data: CapturedNetworkRequest,\n apiHostConfig: PostHogConfig['api_host']\n): CapturedNetworkRequest | undefined => {\n const url = convertToURL(data.name)\n\n // we need to account for api host config as e.g. pathname could be /ingest/s/ and we want to ignore that\n let replaceValue = apiHostConfig.indexOf('http') === 0 ? convertToURL(apiHostConfig)?.pathname : apiHostConfig\n if (replaceValue === '/') {\n replaceValue = ''\n }\n const pathname = url?.pathname.replace(replaceValue || '', '')\n\n if (url && pathname && POSTHOG_PATHS_TO_IGNORE.some((path) => pathname.indexOf(path) === 0)) {\n return undefined\n }\n return data\n}\n\nfunction estimateBytes(payload: string): number {\n return new Blob([payload]).size\n}\n\nfunction enforcePayloadSizeLimit(\n payload: string | null | undefined,\n headers: Record<string, any> | undefined,\n limit: number,\n description: string\n): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n\n let requestContentLength: string | number = headers?.['content-length'] || estimateBytes(payload)\n if (isString(requestContentLength)) {\n requestContentLength = parseInt(requestContentLength)\n }\n\n if (requestContentLength > limit) {\n return LOGGER_PREFIX + ` ${description} body too large to record (${requestContentLength} bytes)`\n }\n\n return payload\n}\n\n// people can have arbitrarily large payloads on their site, but we don't want to ingest them\nconst limitPayloadSize = (\n options: NetworkRecordOptions\n): ((data: CapturedNetworkRequest | undefined) => CapturedNetworkRequest | undefined) => {\n // the smallest of 1MB or the specified limit if there is one\n const limit = Math.min(1000000, options.payloadSizeLimitBytes ?? 1000000)\n\n return (data) => {\n if (data?.requestBody) {\n data.requestBody = enforcePayloadSizeLimit(data.requestBody, data.requestHeaders, limit, 'Request')\n }\n\n if (data?.responseBody) {\n data.responseBody = enforcePayloadSizeLimit(data.responseBody, data.responseHeaders, limit, 'Response')\n }\n\n return data\n }\n}\n\nfunction scrubPayload(payload: string | null | undefined, label: 'Request' | 'Response'): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n let scrubbed = payload\n\n if (!shouldCaptureValue(scrubbed, false)) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED\n }\n each(PAYLOAD_CONTENT_DENY_LIST, (text) => {\n if (scrubbed?.length && scrubbed?.indexOf(text) !== -1) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED + ' as might contain: ' + text\n }\n })\n\n return scrubbed\n}\n\nfunction scrubPayloads(capturedRequest: CapturedNetworkRequest | undefined): CapturedNetworkRequest | undefined {\n if (isUndefined(capturedRequest)) {\n return undefined\n }\n\n capturedRequest.requestBody = scrubPayload(capturedRequest.requestBody, 'Request')\n capturedRequest.responseBody = scrubPayload(capturedRequest.responseBody, 'Response')\n\n return capturedRequest\n}\n\n/**\n * whether a maskRequestFn is provided or not,\n * we ensure that we remove the denied header from requests\n * we _never_ want to record that header by accident\n * if someone complains then we'll add an opt-in to let them override it\n */\nexport const buildNetworkRequestOptions = (\n instanceConfig: PostHogConfig,\n remoteNetworkOptions: Pick<\n NetworkRecordOptions,\n 'recordHeaders' | 'recordBody' | 'recordPerformance' | 'payloadHostDenyList'\n >\n): NetworkRecordOptions => {\n const config: NetworkRecordOptions = {\n payloadSizeLimitBytes: defaultNetworkOptions.payloadSizeLimitBytes,\n performanceEntryTypeToObserve: [...defaultNetworkOptions.performanceEntryTypeToObserve],\n payloadHostDenyList: [\n ...(remoteNetworkOptions.payloadHostDenyList || []),\n ...defaultNetworkOptions.payloadHostDenyList,\n ],\n }\n // client can always disable despite remote options\n const canRecordHeaders =\n instanceConfig.session_recording.recordHeaders === false ? false : remoteNetworkOptions.recordHeaders\n const canRecordBody =\n instanceConfig.session_recording.recordBody === false ? false : remoteNetworkOptions.recordBody\n const canRecordPerformance =\n instanceConfig.capture_performance === false ? false : remoteNetworkOptions.recordPerformance\n\n const payloadLimiter = limitPayloadSize(config)\n\n const enforcedCleaningFn: NetworkRecordOptions['maskRequestFn'] = (d: CapturedNetworkRequest) =>\n payloadLimiter(ignorePostHogPaths(removeAuthorizationHeader(d), instanceConfig.api_host))\n\n const hasDeprecatedMaskFunction = isFunction(instanceConfig.session_recording.maskNetworkRequestFn)\n\n if (hasDeprecatedMaskFunction && isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)) {\n logger.warn(\n 'Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.'\n )\n }\n\n if (hasDeprecatedMaskFunction) {\n instanceConfig.session_recording.maskCapturedNetworkRequestFn = (data: CapturedNetworkRequest) => {\n const cleanedURL = instanceConfig.session_recording.maskNetworkRequestFn!({ url: data.name })\n return {\n ...data,\n name: cleanedURL?.url,\n } as CapturedNetworkRequest\n }\n }\n\n config.maskRequestFn = isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)\n ? (data) => {\n const cleanedRequest = enforcedCleaningFn(data)\n return cleanedRequest\n ? (instanceConfig.session_recording.maskCapturedNetworkRequestFn?.(cleanedRequest) ?? undefined)\n : undefined\n }\n : (data) => scrubPayloads(enforcedCleaningFn(data))\n\n return {\n ...defaultNetworkOptions,\n ...config,\n recordHeaders: canRecordHeaders,\n recordBody: canRecordBody,\n recordPerformance: canRecordPerformance,\n recordInitialRequests: canRecordPerformance,\n }\n}\n","/// <reference lib=\"dom\" />\n\n// rrweb/network@1 code starts\n// most of what is below here will be removed when rrweb release their code for this\n// see https://github.com/rrweb-io/rrweb/pull/1105\n\n// NB adopted from https://github.com/rrweb-io/rrweb/pull/1105 which looks like it will be accepted into rrweb\n// however, in the PR, it throws when the performance observer data is not available\n// and assumes it is running in a browser with the Request API (i.e. not IE11)\n// copying here so that we can use it before rrweb adopt it\nimport type { IWindow, listenerHandler, RecordPlugin } from '@rrweb/types'\nimport { CapturedNetworkRequest, Headers, InitiatorType, NetworkRecordOptions } from '../../../types'\nimport {\n isArray,\n isBoolean,\n isDocument,\n isFormData,\n isNull,\n isNullish,\n isObject,\n isString,\n isUndefined,\n} from '../../../utils/type-utils'\nimport { createLogger } from '../../../utils/logger'\nimport { formDataToQuery } from '../../../utils/request-utils'\nimport { patch } from '../rrweb-plugins/patch'\nimport { isHostOnDenyList } from '../../../extensions/replay/external/denylist'\nimport { defaultNetworkOptions } from '../config'\n\nconst logger = createLogger('[Recorder]')\n\nexport type NetworkData = {\n requests: CapturedNetworkRequest[]\n isInitial?: boolean\n}\n\ntype networkCallback = (data: NetworkData) => void\n\nconst isNavigationTiming = (entry: PerformanceEntry): entry is PerformanceNavigationTiming =>\n entry.entryType === 'navigation'\nconst isResourceTiming = (entry: PerformanceEntry): entry is PerformanceResourceTiming => entry.entryType === 'resource'\n\ntype ObservedPerformanceEntry = (PerformanceNavigationTiming | PerformanceResourceTiming) & {\n responseStatus?: number\n}\n\nexport function findLast<T>(array: Array<T>, predicate: (value: T) => boolean): T | undefined {\n const length = array.length\n for (let i = length - 1; i >= 0; i -= 1) {\n if (predicate(array[i])) {\n return array[i]\n }\n }\n return undefined\n}\n\nfunction initPerformanceObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>) {\n // if we are only observing timings then we could have a single observer for all types, with buffer true,\n // but we are going to filter by initiatorType _if we are wrapping fetch and xhr as the wrapped functions\n // will deal with those.\n // so we have a block which captures requests from before fetch/xhr is wrapped\n // these are marked `isInitial` so playback can display them differently if needed\n // they will never have method/status/headers/body because they are pre-wrapping that provides that\n if (options.recordInitialRequests) {\n const initialPerformanceEntries = win.performance\n .getEntries()\n .filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) && options.initiatorTypes.includes(entry.initiatorType as InitiatorType))\n )\n cb({\n requests: initialPerformanceEntries.flatMap((entry) =>\n prepareRequest({ entry, method: undefined, status: undefined, networkRequest: {}, isInitial: true })\n ),\n isInitial: true,\n })\n }\n const observer = new win.PerformanceObserver((entries) => {\n // if recordBody or recordHeaders is true then we don't want to record fetch or xhr here\n // as the wrapped functions will do that. Otherwise, this filter becomes a noop\n // because we do want to record them here\n const wrappedInitiatorFilter = (entry: ObservedPerformanceEntry) =>\n options.recordBody || options.recordHeaders\n ? entry.initiatorType !== 'xmlhttprequest' && entry.initiatorType !== 'fetch'\n : true\n\n const performanceEntries = entries.getEntries().filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) &&\n options.initiatorTypes.includes(entry.initiatorType as InitiatorType) &&\n // TODO if we are _only_ capturing timing we don't want to filter initiator here\n wrappedInitiatorFilter(entry))\n )\n\n cb({\n requests: performanceEntries.flatMap((entry) =>\n prepareRequest({ entry, method: undefined, status: undefined, networkRequest: {} })\n ),\n })\n })\n // compat checked earlier\n // eslint-disable-next-line compat/compat\n const entryTypes = PerformanceObserver.supportedEntryTypes.filter((x) =>\n options.performanceEntryTypeToObserve.includes(x)\n )\n // initial records are gathered above, so we don't need to observe and buffer each type separately\n observer.observe({ entryTypes })\n return () => {\n observer.disconnect()\n }\n}\n\nfunction shouldRecordHeaders(type: 'request' | 'response', recordHeaders: NetworkRecordOptions['recordHeaders']) {\n return !!recordHeaders && (isBoolean(recordHeaders) || recordHeaders[type])\n}\n\nexport function shouldRecordBody({\n type,\n recordBody,\n headers,\n url,\n}: {\n type: 'request' | 'response'\n headers: Headers\n url: string | URL | RequestInfo\n recordBody: NetworkRecordOptions['recordBody']\n}) {\n function matchesContentType(contentTypes: string[]) {\n const contentTypeHeader = Object.keys(headers).find((key) => key.toLowerCase() === 'content-type')\n const contentType = contentTypeHeader && headers[contentTypeHeader]\n return contentTypes.some((ct) => contentType?.includes(ct))\n }\n\n /**\n * particularly in canvas applications we see many requests to blob URLs\n * e.g. blob:https://video_url\n * these blob/object URLs are local to the browser, we can never capture that body\n * so we can just return false here\n */\n function isBlobURL(url: string | URL | RequestInfo) {\n try {\n if (typeof url === 'string') {\n return url.startsWith('blob:')\n }\n if (url instanceof URL) {\n return url.protocol === 'blob:'\n }\n if (url instanceof Request) {\n return isBlobURL(url.url)\n }\n return false\n } catch {\n return false\n }\n }\n if (!recordBody) return false\n if (isBlobURL(url)) return false\n if (isBoolean(recordBody)) return true\n if (isArray(recordBody)) return matchesContentType(recordBody)\n const recordBodyType = recordBody[type]\n if (isBoolean(recordBodyType)) return recordBodyType\n return matchesContentType(recordBodyType)\n}\n\nasync function getRequestPerformanceEntry(\n win: IWindow,\n initiatorType: string,\n url: string,\n start?: number,\n end?: number,\n attempt = 0\n): Promise<PerformanceResourceTiming | null> {\n if (attempt > 10) {\n logger.warn('Failed to get performance entry for request', { url, initiatorType })\n return null\n }\n const urlPerformanceEntries = win.performance.getEntriesByName(url) as PerformanceResourceTiming[]\n const performanceEntry = findLast(\n urlPerformanceEntries,\n (entry) =>\n isResourceTiming(entry) &&\n entry.initiatorType === initiatorType &&\n (isUndefined(start) || entry.startTime >= start) &&\n (isUndefined(end) || entry.startTime <= end)\n )\n if (!performanceEntry) {\n await new Promise((resolve) => setTimeout(resolve, 50 * attempt))\n return getRequestPerformanceEntry(win, initiatorType, url, start, end, attempt + 1)\n }\n return performanceEntry\n}\n\n/**\n * According to MDN https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response\n * xhr response is typed as any but can be an ArrayBuffer, a Blob, a Document, a JavaScript object,\n * or a string, depending on the value of XMLHttpRequest.responseType, that contains the response entity body.\n *\n * XHR request body is Document | XMLHttpRequestBodyInit | null | undefined\n */\nfunction _tryReadXHRBody({\n body,\n options,\n url,\n}: {\n body: Document | XMLHttpRequestBodyInit | any | null | undefined\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): string | null {\n if (isNullish(body)) {\n return null\n }\n\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return hostname + ' is in deny list'\n }\n\n if (isString(body)) {\n return body\n }\n\n if (isDocument(body)) {\n return body.textContent\n }\n\n if (isFormData(body)) {\n return formDataToQuery(body)\n }\n\n if (isObject(body)) {\n try {\n return JSON.stringify(body)\n } catch {\n return '[SessionReplay] Failed to stringify response object'\n }\n }\n\n return '[SessionReplay] Cannot read body of type ' + toString.call(body)\n}\n\nfunction initXhrObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>): listenerHandler {\n if (!options.initiatorTypes.includes('xmlhttprequest')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n\n const restorePatch = patch(\n win.XMLHttpRequest.prototype,\n 'open',\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (originalOpen: typeof XMLHttpRequest.prototype.open) => {\n return function (\n method: string,\n url: string | URL,\n async = true,\n username?: string | null,\n password?: string | null\n ) {\n // because this function is returned in its actual context `this` _is_ an XMLHttpRequest\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const xhr = this as XMLHttpRequest\n\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url)\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let start: number | undefined\n let end: number | undefined\n\n const requestHeaders: Headers = {}\n const originalSetRequestHeader = xhr.setRequestHeader.bind(xhr)\n xhr.setRequestHeader = (header: string, value: string) => {\n requestHeaders[header] = value\n return originalSetRequestHeader(header, value)\n }\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n\n const originalSend = xhr.send.bind(xhr)\n xhr.send = (body) => {\n if (\n shouldRecordBody({\n type: 'request',\n headers: requestHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.requestBody = _tryReadXHRBody({ body, options, url })\n }\n start = win.performance.now()\n return originalSend(body)\n }\n\n // This is very tricky code, and making it passive won't bring many performance benefits,\n // so let's ignore the rule here.\n // eslint-disable-next-line posthog-js/no-add-event-listener\n xhr.addEventListener('readystatechange', () => {\n if (xhr.readyState !== xhr.DONE) {\n return\n }\n end = win.performance.now()\n const responseHeaders: Headers = {}\n const rawHeaders = xhr.getAllResponseHeaders()\n const headers = rawHeaders.trim().split(/[\\r\\n]+/)\n headers.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift()\n const value = parts.join(': ')\n if (header) {\n responseHeaders[header] = value\n }\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (\n shouldRecordBody({\n type: 'response',\n headers: responseHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.responseBody = _tryReadXHRBody({ body: xhr.response, options, url })\n }\n getRequestPerformanceEntry(win, 'xmlhttprequest', req.url, start, end)\n .then((entry) => {\n const requests = prepareRequest({\n entry,\n method: method,\n status: xhr?.status,\n networkRequest,\n start,\n end,\n url: url.toString(),\n initiatorType: 'xmlhttprequest',\n })\n cb({ requests })\n })\n .catch(() => {\n //\n })\n })\n\n originalOpen.call(xhr, method, url, async, username, password)\n }\n }\n )\n return () => {\n restorePatch()\n }\n}\n\n/**\n * Check if this PerformanceEntry is either a PerformanceResourceTiming or a PerformanceNavigationTiming\n * NB PerformanceNavigationTiming extends PerformanceResourceTiming\n * Here we don't care which interface it implements as both expose `serverTimings`\n */\nconst exposesServerTiming = (event: PerformanceEntry | null): event is PerformanceResourceTiming =>\n !isNull(event) && (event.entryType === 'navigation' || event.entryType === 'resource')\n\nfunction prepareRequest({\n entry,\n method,\n status,\n networkRequest,\n isInitial,\n start,\n end,\n url,\n initiatorType,\n}: {\n entry: PerformanceResourceTiming | null\n method: string | undefined\n status: number | undefined\n networkRequest: Partial<CapturedNetworkRequest>\n isInitial?: boolean\n start?: number\n end?: number\n // if there is no performance observer entry, we still need to know the url\n url?: string\n // if there is no performance observer entry, we can provide the initiatorType\n initiatorType?: string\n}): CapturedNetworkRequest[] {\n start = entry ? entry.startTime : start\n end = entry ? entry.responseEnd : end\n\n // kudos to sentry javascript sdk for excellent background on why to use Date.now() here\n // https://github.com/getsentry/sentry-javascript/blob/e856e40b6e71a73252e788cd42b5260f81c9c88e/packages/utils/src/time.ts#L70\n // can't start observer if performance.now() is not available\n // eslint-disable-next-line compat/compat\n const timeOrigin = Math.floor(Date.now() - performance.now())\n // clickhouse can't ingest timestamps that are floats\n // (in this case representing fractions of a millisecond we don't care about anyway)\n // use timeOrigin if we really can't gather a start time\n const timestamp = Math.floor(timeOrigin + (start || 0))\n\n const entryJSON = entry ? entry.toJSON() : { name: url }\n\n const requests: CapturedNetworkRequest[] = [\n {\n ...entryJSON,\n startTime: isUndefined(start) ? undefined : Math.round(start),\n endTime: isUndefined(end) ? undefined : Math.round(end),\n timeOrigin,\n timestamp,\n method: method,\n initiatorType: initiatorType ? initiatorType : entry ? (entry.initiatorType as InitiatorType) : undefined,\n status,\n requestHeaders: networkRequest.requestHeaders,\n requestBody: networkRequest.requestBody,\n responseHeaders: networkRequest.responseHeaders,\n responseBody: networkRequest.responseBody,\n isInitial,\n },\n ]\n\n if (exposesServerTiming(entry)) {\n for (const timing of entry.serverTiming || []) {\n requests.push({\n timeOrigin,\n timestamp,\n startTime: Math.round(entry.startTime),\n name: timing.name,\n duration: timing.duration,\n // the spec has a closed list of possible types\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry/entryType\n // but, we need to know this was a server timing so that we know to\n // match it to the appropriate navigation or resource timing\n // that matching will have to be on timestamp and $current_url\n entryType: 'serverTiming',\n })\n }\n }\n\n return requests\n}\n\nconst contentTypePrefixDenyList = ['video/', 'audio/']\n\nfunction _checkForCannotReadResponseBody({\n r,\n options,\n url,\n}: {\n r: Response\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): string | null {\n if (r.headers.get('Transfer-Encoding') === 'chunked') {\n return 'Chunked Transfer-Encoding is not supported'\n }\n\n // `get` and `has` are case-insensitive\n // but return the header value with the casing that was supplied\n const contentType = r.headers.get('Content-Type')?.toLowerCase()\n const contentTypeIsDenied = contentTypePrefixDenyList.some((prefix) => contentType?.startsWith(prefix))\n if (contentType && contentTypeIsDenied) {\n return `Content-Type ${contentType} is not supported`\n }\n\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return hostname + ' is in deny list'\n }\n\n return null\n}\n\nfunction _tryReadBody(r: Request | Response): Promise<string> {\n // there are now already multiple places where we're using Promise...\n // eslint-disable-next-line compat/compat\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => resolve('[SessionReplay] Timeout while trying to read body'), 500)\n try {\n r.clone()\n .text()\n .then(\n (txt) => resolve(txt),\n (reason) => reject(reason)\n )\n .finally(() => clearTimeout(timeout))\n } catch {\n clearTimeout(timeout)\n resolve('[SessionReplay] Failed to read body')\n }\n })\n}\n\nasync function _tryReadRequestBody({\n r,\n options,\n url,\n}: {\n r: Request\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): Promise<string> {\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return Promise.resolve(hostname + ' is in deny list')\n }\n\n return _tryReadBody(r)\n}\n\nasync function _tryReadResponseBody({\n r,\n options,\n url,\n}: {\n r: Response\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): Promise<string> {\n const cannotReadBodyReason: string | null = _checkForCannotReadResponseBody({ r, options, url })\n if (!isNull(cannotReadBodyReason)) {\n return Promise.resolve(cannotReadBodyReason)\n }\n\n return _tryReadBody(r)\n}\n\nfunction initFetchObserver(\n cb: networkCallback,\n win: IWindow,\n options: Required<NetworkRecordOptions>\n): listenerHandler {\n if (!options.initiatorTypes.includes('fetch')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const restorePatch = patch(win, 'fetch', (originalFetch: typeof fetch) => {\n return async function (url: URL | RequestInfo, init?: RequestInit | undefined) {\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url, init)\n let res: Response | undefined\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let start: number | undefined\n let end: number | undefined\n\n try {\n const requestHeaders: Headers = {}\n req.headers.forEach((value, header) => {\n requestHeaders[header] = value\n })\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n if (\n shouldRecordBody({\n type: 'request',\n headers: requestHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.requestBody = await _tryReadRequestBody({ r: req, options, url })\n }\n\n start = win.performance.now()\n res = await originalFetch(req)\n end = win.performance.now()\n\n const responseHeaders: Headers = {}\n res.headers.forEach((value, header) => {\n responseHeaders[header] = value\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (\n shouldRecordBody({\n type: 'response',\n headers: responseHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.responseBody = await _tryReadResponseBody({ r: res, options, url })\n }\n\n return res\n } finally {\n getRequestPerformanceEntry(win, 'fetch', req.url, start, end)\n .then((entry) => {\n const requests = prepareRequest({\n entry,\n method: req.method,\n status: res?.status,\n networkRequest,\n start,\n end,\n url: req.url,\n initiatorType: 'fetch',\n })\n cb({ requests })\n })\n .catch(() => {\n //\n })\n }\n }\n })\n return () => {\n restorePatch()\n }\n}\n\nlet initialisedHandler: listenerHandler | null = null\n\nfunction initNetworkObserver(\n callback: networkCallback,\n win: IWindow, // top window or in an iframe\n options: NetworkRecordOptions\n): listenerHandler {\n if (!('performance' in win)) {\n return () => {\n //\n }\n }\n\n if (initialisedHandler) {\n logger.warn('Network observer already initialised, doing nothing')\n return () => {\n // the first caller should already have this handler and will be responsible for teardown\n }\n }\n\n const networkOptions = (\n options ? Object.assign({}, defaultNetworkOptions, options) : defaultNetworkOptions\n ) as Required<NetworkRecordOptions>\n\n const cb: networkCallback = (data) => {\n const requests: CapturedNetworkRequest[] = []\n data.requests.forEach((request) => {\n const maskedRequest = networkOptions.maskRequestFn(request)\n if (maskedRequest) {\n requests.push(maskedRequest)\n }\n })\n\n if (requests.length > 0) {\n callback({ ...data, requests })\n }\n }\n const performanceObserver = initPerformanceObserver(cb, win, networkOptions)\n\n // only wrap fetch and xhr if headers or body are being recorded\n let xhrObserver: listenerHandler = () => {}\n let fetchObserver: listenerHandler = () => {}\n if (networkOptions.recordHeaders || networkOptions.recordBody) {\n xhrObserver = initXhrObserver(cb, win, networkOptions)\n fetchObserver = initFetchObserver(cb, win, networkOptions)\n }\n\n initialisedHandler = () => {\n performanceObserver()\n xhrObserver()\n fetchObserver()\n }\n return initialisedHandler\n}\n\n// use the plugin name so that when this functionality is adopted into rrweb\n// we can remove this plugin and use the core functionality with the same data\nexport const NETWORK_PLUGIN_NAME = 'rrweb/network@1'\n\n// TODO how should this be typed?\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const getRecordNetworkPlugin: (options?: NetworkRecordOptions) => RecordPlugin = (options) => {\n return {\n name: NETWORK_PLUGIN_NAME,\n observer: initNetworkObserver,\n options: options,\n }\n}\n\n// rrweb/networ@1 ends\n","import { record as rrwebRecord } from '@posthog/rrweb-record'\nimport { getRecordConsolePlugin } from '@posthog/rrweb-plugin-console-record'\nimport { assignableWindow } from '../utils/globals'\nimport { getRecordNetworkPlugin } from '../extensions/replay/external/network-plugin'\n\nassignableWindow.__PosthogExtensions__ = assignableWindow.__PosthogExtensions__ || {}\nassignableWindow.__PosthogExtensions__.rrwebPlugins = { getRecordConsolePlugin, getRecordNetworkPlugin }\nassignableWindow.__PosthogExtensions__.rrweb = { record: rrwebRecord, version: 'v2' }\n\n// we used to put all of these items directly on window, and now we put it on __PosthogExtensions__\n// but that means that old clients which lazily load this extension are looking in the wrong place\n// yuck,\n// so we also put them directly on the window\n// when 1.161.1 is the oldest version seen in production we can remove this\nassignableWindow.rrweb = { record: rrwebRecord, version: 'v2' }\nassignableWindow.rrwebConsoleRecord = { getRecordConsolePlugin }\nassignableWindow.getRecordNetworkPlugin = getRecordNetworkPlugin\n\nexport default rrwebRecord\n"],"names":["_a","__defProp","Object","defineProperty","__publicField","obj","key","value","__defNormalProp","enumerable","configurable","writable","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$3","NodeType2","testableAccessors$1","Node","ShadowRoot","Element","MutationObserver","testableMethods$1","untaintedBasePrototype$1","getUntaintedPrototype$1","candidate","_a2","_b","angularUnpatchedVersionSymbol","globalThis","Zone","__symbol__","call","angularZoneUnpatchedAlternative$1","defaultPrototype","prototype","accessorNames","isUntaintedAccessors","Boolean","every","accessor","getOwnPropertyDescriptor","get","toString","includes","methodNames","isUntaintedMethods","method","iframeEl","document","createElement","body","appendChild","win","contentWindow","untaintedObject","removeChild","_unused","untaintedAccessorCache$1","getUntaintedAccessor$1","instance","cacheKey","String","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","bind","untaintedMethod","index$1","childNodes","n2","parentNode","parentElement","textContent","contains","other","getRootNode","host","styleSheets","shadowRoot","querySelector","selectors","querySelectorAll","mutationObserver","constructor","patch","source","name","replacement","original","wrapped","defineProperties","__rrweb_original__","_unused2","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","rules","cssRules","sheetHref","href","ownerNode","ownerDocument","location","stringifiedRules","Array","from","rule2","stringifyRule","join","cssText","replace","error","isCSSImportRule","importStringified","styleSheet","split","length","statement","JSON","stringify","layerName","push","supportsText","media","mediaText","escapeImportStatement","absolutifyURLs","regex","ruleStringified","isCSSStyleRule","selectorText","Mirror","this","Map","WeakMap","getId","id","getMeta","getNode","idNodeMap","getIds","keys","nodeMetaMap","removeNodeFromMap","delete","forEach","childNode","has","hasNode","node2","add","meta","set","oldNode","reset","maskInputValue","_ref","element","maskInputOptions","tagName","type","maskInputFn","text","actualType","toLowerCase","repeat","str","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","path","baseURL","_ref2","url","URL","window","err","match","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","test","concat","extractOrigin","indexOf","slice","stack","parts","part","pop","normalizationCache","splitCache","normalizeCssString","normalized","markCssSplits","style","og","childNodes2","splits","iterLimit","cssTextNorm","normFactor","i2","textContentNorm","j","substring","bit","bits","splitNorm","k","Math","floor","normPart","max","splitCssText","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","genId","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","trim","getHref","isSVGElement","el","ownerSVGElement","customHref","a2","startsWith","setAttribute","transformAttribute","pos","collectCharacters","regEx","chars2","exec","output","descriptorsStr","inParens","c2","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","closest","matches","e2","serializeNode","options","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","cssCaptured","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","isCustomElement","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attributes","len","attr","hrefFrom","stylesheet","findStylesheet","rel","_cssText","sheet","checked","selected","open","rr_open_mode","_unused3","ph_rr_could_not_detect_modal","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","getAttribute","priorCrossOrigin","crossOrigin","recordInlineImage","removeEventListener","naturalWidth","naturalHeight","drawImage","complete","addEventListener","console","warn","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parent","parentTagName","textContent2","isStyle","isScript","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","find","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","assign","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","readyState","fired","blankUrl","setTimeout","timer","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","hasOwnProperty","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","arguments","apply","d","hasRequiredPicocolors_browser$1","picocolors_browser$1","exports","requirePicocolors_browser$1","create","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","createColors","cssSyntaxError$1","hasRequiredCssSyntaxError$1","stringifier$1","hasRequiredStringifier$1","stringify_1$1","hasRequiredStringify$1","require$$2$1","freeze","__proto__","Symbol","toStringTag","requireCssSyntaxError$1","pico","terminalHighlight","CssSyntaxError","Error","message","line","column","file","plugin","super","reason","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","color","css","aside","mark","highlight","lines","start","end","maxWidth","map","index2","number","gutter","subLineStart","subLineEnd","subLine","spacing2","padding","spacing","code","requireStringifier$1","DEFAULT_RAW","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier","builder","atrule","params","rawValue","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","step","last","child","before","left","right","decl","string","prop","important","own","first","root2","root","rawCache","toUpperCase","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","p","rawSemicolon","rule","ownSemicolon","requireStringify$1","hasRequiredSymbols$1","node$1","hasRequiredNode$1","comment$1","hasRequiredComment$1","declaration$1","hasRequiredDeclaration$1","container$1","hasRequiredContainer$1","atRule$1","hasRequiredAtRule$1","document$1$1","hasRequiredDocument$1","nonSecure$1","hasRequiredNonSecure$1","previousMap$1","hasRequiredPreviousMap$1","input$1","hasRequiredInput$1","root$1","hasRequiredRoot$1","list_1$1","hasRequiredList$1","rule$1","hasRequiredRule$1","fromJSON_1$1","hasRequiredFromJSON$1","mapGenerator$1","hasRequiredMapGenerator$1","tokenize$1","hasRequiredTokenize$1","parser$1","hasRequiredParser$1","parse_1$1","hasRequiredParse$1","warning$1","hasRequiredWarning$1","result$1","hasRequiredResult$1","warnOnce$1","hasRequiredWarnOnce$1","lazyResult$1","hasRequiredLazyResult$1","noWorkResult$1","hasRequiredNoWorkResult$1","processor$1","hasRequiredProcessor$1","postcss_1$1","hasRequiredPostcss$1","safeParser$1$1","hasRequiredSafeParser$1","safeParse$1","hasRequiredSafeParse$1","symbols$1","requireSymbols$1","isClean","my","requireNode$1","cloneNode","cloned","isArray","sourceOffset","inputCSS","position","offset","Node2","defaults","undefined","clone","append","addToError","postcssNode","input","insertAfter","overrides","insertBefore","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","markClean","next","index","positionBy","positionInside","word","inputString","prev","endIndex","defaultType","remove","replaceWith","bookmark","foundSelf","result2","toJSON","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","node","proxyOf","requireComment$1","requireDeclaration$1","Declaration","variable","requireContainer$1","AtRule","parse","Root","Rule","cleanSource","markTreeDirty","Container","children","normalize","each","callback","iterator","getIterator","indexes","condition","lastEach","args","cb","exist","existIndex","reverse","splice","sample","selector","processed","rebuild","prepend","unshift","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","setPrototypeOf","requireAtRule$1","requireDocument$1","LazyResult","Processor","Document2","_objectSpread","toResult","registerLazyResult","registerProcessor","requireNonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","requirePreviousMap$1","existsSync","readFileSync","dirname","SourceMapConsumer","SourceMapGenerator","PreviousMap","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","uriMatch","decodeURIComponent","substr","baseUriMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","lastIndexOf","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","requireInput$1","isAbsolute","resolve","fileURLToPath","pathToFileURL","fromOffsetCache","sourceMapAvailable","pathAvailable","Input","hasBOM","mapResolve","fromOffset","col","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","protocol","sourceContentFor","json","registerInput","requireRoot$1","ignore","requireList$1","list","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","requireRule$1","values","sep","requireMapGenerator$1","relative","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","encodeURIComponent","fileURL","encodeURI","requireTokenize$1","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","quote","currentToken","escaped","escapePos","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","requireParser$1","tokenizer","SAFE_COMMENT_NEIGHBOR","empty","spaces","createTokenizer","shift","unnamedAtrule","init","brackets","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","entries","doubleColon","customProperty","findLastWithPosition","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","cache","hasWord","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","reduce","all","lastTokenType","requireParse$1","Parser","parser2","process","env","NODE_ENV","requireWarning$1","Warning","range","opt","requireResult$1","Result","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","filter","requireWarnOnce$1","printed","requireLazyResult$1","MapGenerator","warnOnce2","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","AtRuleExit","CommentExit","DeclarationExit","DocumentExit","Once","OnceExit","prepare","RootExit","RuleExit","NOT_VISITORS","CHILDREN","isPromise","then","getEvents","toStack","eventIndex","events","visitorIndex","visitors","cleanMarks","postcss2","stringified","syntax","parser","result","helpers","postcss","plugins","async","Promise","reject","processing","runAsync","catch","onRejected","finally","onFinally","getAsyncError","handleError","postcssVersion","pluginName","pluginVer","runtimeVer","version","b","parseInt","prepareVisitors","listeners","event","hasListener","_this","_asyncToGenerator","promise","runOnRoot","visitTick","_loop","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","requireProcessor$1","NoWorkResult","_processor","_css","_opts","_map","self2","generatedCSS","generatedMap","_root","requireNoWorkResult$1","use","requirePostcss$1","fromJSON","ownInputs","inputHydrated","_defaults$source","requireFromJSON$1","initializer","warningPrinted","creator","LANG","transformer","processOpts","pluginOpts","atRule","SafeParser","nextStart","prevEnd","requireSafeParser$1","requireSafeParse$1","postcss$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","hasRequiredPicocolors_browser","picocolors_browser","requirePicocolors_browser","cssSyntaxError","hasRequiredCssSyntaxError","hasRequiredStringifier","stringify_1","hasRequiredStringify","require$$2","requireCssSyntaxError","requireStringifier","requireStringify","hasRequiredSymbols","hasRequiredNode","hasRequiredComment","declaration","hasRequiredDeclaration","container","hasRequiredContainer","hasRequiredAtRule","document$1","hasRequiredDocument","nonSecure","hasRequiredNonSecure","previousMap","hasRequiredPreviousMap","hasRequiredInput","hasRequiredRoot","list_1","hasRequiredList","hasRequiredRule","fromJSON_1","hasRequiredFromJSON","mapGenerator","hasRequiredMapGenerator","tokenize","hasRequiredTokenize","hasRequiredParser","parse_1","hasRequiredParse","warning","hasRequiredWarning","hasRequiredResult","warnOnce","hasRequiredWarnOnce","lazyResult","hasRequiredLazyResult","noWorkResult","hasRequiredNoWorkResult","hasRequiredProcessor","postcss_1","hasRequiredPostcss","safeParser$1","hasRequiredSafeParser","safeParse","hasRequiredSafeParse","symbols","requireSymbols","requireNode","requireComment","requireDeclaration","requireContainer","requireAtRule","requireDocument","requireNonSecure","requirePreviousMap","requireInput","requireRoot","requireList","requireRule","requireMapGenerator","requireTokenize","requireParser","requireParse","requireWarning","requireResult","requireWarnOnce","requireLazyResult","_this2","_loop2","requireProcessor","requireNoWorkResult","requirePostcss","_defaults$source2","requireFromJSON","requireSafeParser","requireSafeParse","BaseRRNode","childIterator","firstChild","nextSibling","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","getUntaintedPrototype","angularZoneUnpatchedAlternative","_unused4","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","_unused5","on","fn","target","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","timeout","now","Date","leading","remaining","context","trailing","hookSetter","isRevoked","receiver","nowTimestamp","getWindowScroll","_c","_d","scrollingElement","pageXOffset","documentElement","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","getTime","StyleSheetMirror","_this$styleIDMap$get","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","head","addNode","__ln","previousSibling","tail","removeNode","errorHandler","moveKey","parentId","MutationBuffer","Set","mutations","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","parentTag","addedSet","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","isAncestorInSet","droppedSet","tailNode","unhandledNode","payload","texts","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","item","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","queue","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","size","_mirror2","_isParentRemoved","_isAncestorInSet","callbackWrapper","rrwebWrapped","mutationBuffers","getEventTarget","composedPath","_unused6","initMutationObserver","rootEl","mutationBuffer","observer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","_ref4","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","endsWith","eventKey","eventName","handler","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","h","initScrollObserver","_ref5","scrollCb","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","initAdoptedStyleSheetObserver","host2","_ref13","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mutation","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","_ref3","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","_ref6","_ref7","lastH","lastW","initViewportResizeObserver","inputHandler","_ref8","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","_ref16","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","_ref9","_ref10","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","replaceSync","deleteRule","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","_ref11","typeKey","_ref12","initStyleSheetObserver","_ref14","_ref15","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","initStyleDeclarationObserver","collectFonts","_ref17","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","_ref18","define","initCustomElementObserver","pluginHandlers","disconnect","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","ctor","contextMap","variableListFor$1","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","_unused8","patchGLPrototype","getOwnPropertyNames","recordArgs","_unused9","hookHandler","setter","takeFullSnapshot$1","jsContent","blob","self","Blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","_this3","canvasContextReset","snapshotInProgressMap","onmessage","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","takeCanvasSnapshots","getCanvas","matchedCanvas","searchCanvas","requestAnimationFrame","haystack","elem","_ref19","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","resizeWidth","resizeHeight","postMessage","_x","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","_unused7","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","_this4","adoptedStyleSheetData","styleIds","CSSRule","r2","_loop5","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","destroy","recording","cleanFrame","debug","n","t2","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","date","email","month","search","tel","time","week","select","password","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","global","nativeForEach","navigator","fetch","XMLHttpRequest","AbortController","userAgent","Compression","assignableWindow","nativeIsArray","ObjProto","isFunction","isObject","isUndefined","isString","isNull","isNullish","isBoolean","isDocument","isFormData","FormData","_createLogger","prefix","logger","_log","level","consoleLog","_len","_key","info","_len2","_key2","_len3","_key3","_len4","_key4","critical","_len5","_key5","uninitializedWarning","methodName","createLogger","additionalPrefix","breaker","i","l","eachArray","pair","formDataToQuery","formdata","use_val","use_key","arg_separator","tph_arr","val","File","__posthog_wrapped__","isHostOnDenyList","_options$payloadHostD","hostname","hostnameFromURL","defaultNotDenied","isHostDenied","payloadHostDenyList","deny","defaultNetworkOptions","initiatorTypes","maskRequestFn","recordHeaders","recordBody","recordInitialRequests","recordPerformance","performanceEntryTypeToObserve","payloadSizeLimitBytes","isNavigationTiming","entry","entryType","isResourceTiming","initPerformanceObserver","initialPerformanceEntries","performance","getEntries","initiatorType","requests","flatMap","prepareRequest","status","networkRequest","isInitial","PerformanceObserver","performanceEntries","wrappedInitiatorFilter","entryTypes","supportedEntryTypes","shouldRecordHeaders","shouldRecordBody","headers","matchesContentType","contentTypes","contentTypeHeader","contentType","ct","isBlobURL","Request","recordBodyType","getRequestPerformanceEntry","_x2","_x3","_x4","_x5","_getRequestPerformanceEntry","attempt","performanceEntry","predicate","findLast","getEntriesByName","startTime","_tryReadXHRBody","exposesServerTiming","responseEnd","timeOrigin","round","endTime","requestHeaders","requestBody","responseHeaders","responseBody","timing","serverTiming","duration","contentTypePrefixDenyList","_tryReadBody","r","txt","_tryReadRequestBody2","_tryReadResponseBody2","cannotReadBodyReason","_r$headers$get","contentTypeIsDenied","_checkForCannotReadResponseBody","initFetchObserver","recordRequestHeaders","recordResponseHeaders","restorePatch","originalFetch","res","req","header","_x6","_tryReadRequestBody","_x7","_tryReadResponseBody","_res","_x8","_x9","initialisedHandler","initNetworkObserver","networkOptions","request","maskedRequest","performanceObserver","xhrObserver","fetchObserver","originalOpen","username","xhr","originalSetRequestHeader","setRequestHeader","originalSend","send","DONE","getAllResponseHeaders","response","initXhrObserver","getRecordNetworkPlugin","__PosthogExtensions__","rrwebPlugins","getRecordConsolePlugin","rrweb","rrwebRecord","rrwebConsoleRecord"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"posthog-recorder.js","sources":["../node_modules/.pnpm/@posthog+rrweb-record@0.0.13/node_modules/@posthog/rrweb-record/dist/rrweb-record.js","../node_modules/.pnpm/@posthog+rrweb-plugin-console-record@0.0.13_@posthog+rrweb-utils@0.0.9_@posthog+rrweb@0.0.9/node_modules/@posthog/rrweb-plugin-console-record/dist/rrweb-plugin-console-record.js","../src/utils/globals.ts","../src/types.ts","../src/utils/type-utils.ts","../src/utils/logger.ts","../src/utils/index.ts","../src/utils/request-utils.ts","../src/extensions/replay/rrweb-plugins/patch.ts","../src/extensions/replay/external/denylist.ts","../src/extensions/replay/config.ts","../src/extensions/replay/external/network-plugin.ts","../src/entrypoints/posthog-recorder.ts"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a;\nvar __defProp$1 = Object.defineProperty;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField$1 = (obj, key, value) => __defNormalProp$1(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType$1$1 = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType$1$1 || {});\nconst testableAccessors$1 = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods$1 = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype$1 = {};\nfunction angularZoneUnpatchedAlternative$1(key) {\n var _a2, _b;\n const angularUnpatchedVersionSymbol = (_b = (_a2 = globalThis == null ? void 0 : globalThis.Zone) == null ? void 0 : _a2.__symbol__) == null ? void 0 : _b.call(_a2, key);\n if (angularUnpatchedVersionSymbol && globalThis[angularUnpatchedVersionSymbol]) {\n return globalThis[angularUnpatchedVersionSymbol];\n } else {\n return void 0;\n }\n}\nfunction getUntaintedPrototype$1(key) {\n if (untaintedBasePrototype$1[key])\n return untaintedBasePrototype$1[key];\n const candidate = angularZoneUnpatchedAlternative$1(key) || globalThis[key];\n const defaultPrototype = candidate.prototype;\n const accessorNames = key in testableAccessors$1 ? testableAccessors$1[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods$1 ? testableMethods$1[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods) {\n untaintedBasePrototype$1[key] = candidate.prototype;\n return candidate.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return candidate.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype$1[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache$1 = {};\nfunction getUntaintedAccessor$1(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache$1[cacheKey])\n return untaintedAccessorCache$1[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache$1[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache$1 = {};\nfunction getUntaintedMethod$1(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache$1[cacheKey])\n return untaintedMethodCache$1[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype$1(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache$1[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"parentElement\");\n}\nfunction textContent$1(n2) {\n return getUntaintedAccessor$1(\"Node\", n2, \"textContent\");\n}\nfunction contains$1(n2, other) {\n return getUntaintedMethod$1(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode$1(n2) {\n return getUntaintedMethod$1(\"Node\", n2, \"getRootNode\")();\n}\nfunction host$1(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor$1(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets$1(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot$1(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor$1(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll$1(n2, selectors) {\n return getUntaintedAccessor$1(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor$1() {\n return getUntaintedPrototype$1(\"MutationObserver\").constructor;\n}\nfunction patch$1(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nconst index$1 = {\n childNodes: childNodes$1,\n parentNode: parentNode$1,\n parentElement: parentElement$1,\n textContent: textContent$1,\n contains: contains$1,\n getRootNode: getRootNode$1,\n host: host$1,\n styleSheets: styleSheets$1,\n shadowRoot: shadowRoot$1,\n querySelector: querySelector$1,\n querySelectorAll: querySelectorAll$1,\n mutationObserver: mutationObserverCtor$1,\n patch: patch$1\n};\nfunction isElement(n2) {\n return n2.nodeType === n2.ELEMENT_NODE;\n}\nfunction isShadowRoot(n2) {\n const hostEl = (\n // anchor and textarea elements also have a `host` property\n // but only shadow roots have a `mode` property\n n2 && \"host\" in n2 && \"mode\" in n2 && index$1.host(n2) || null\n );\n return Boolean(\n hostEl && \"shadowRoot\" in hostEl && index$1.shadowRoot(hostEl) === n2\n );\n}\nfunction isNativeShadowDom(shadowRoot2) {\n return Object.prototype.toString.call(shadowRoot2) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n cssText = cssText.replace(\n /\\sbackground-clip:\\s*text;/g,\n \" -webkit-background-clip: text; background-clip: text;\"\n );\n }\n return cssText;\n}\nfunction escapeImportStatement(rule2) {\n const { cssText } = rule2;\n if (cssText.split('\"').length < 3) return cssText;\n const statement = [\"@import\", `url(${JSON.stringify(rule2.href)})`];\n if (rule2.layerName === \"\") {\n statement.push(`layer`);\n } else if (rule2.layerName) {\n statement.push(`layer(${rule2.layerName})`);\n }\n if (rule2.supportsText) {\n statement.push(`supports(${rule2.supportsText})`);\n }\n if (rule2.media.length) {\n statement.push(rule2.media.mediaText);\n }\n return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s2) {\n try {\n const rules2 = s2.rules || s2.cssRules;\n if (!rules2) {\n return null;\n }\n const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, s2.href)\n ).join(\"\");\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n } catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule2, sheetHref) {\n if (isCSSImportRule(rule2)) {\n let importStringified;\n try {\n importStringified = // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule2.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule2);\n } catch (error) {\n importStringified = rule2.cssText;\n }\n if (rule2.styleSheet.href) {\n return absolutifyURLs(importStringified, rule2.styleSheet.href);\n }\n return importStringified;\n } else {\n let ruleStringified = rule2.cssText;\n if (isCSSStyleRule(rule2) && rule2.selectorText.includes(\":\")) {\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule2) {\n return \"styleSheet\" in rule2;\n}\nfunction isCSSStyleRule(rule2) {\n return \"selectorText\" in rule2;\n}\nclass Mirror {\n constructor() {\n __publicField$1(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n __publicField$1(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n }\n getId(n2) {\n var _a2;\n if (!n2) return -1;\n const id = (_a2 = this.getMeta(n2)) == null ? void 0 : _a2.id;\n return id ?? -1;\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n2) {\n return this.nodeMetaMap.get(n2) || null;\n }\n // removes the node from idNodeMap\n // doesn't remove the node from nodeMetaMap\n removeNodeFromMap(n2) {\n const id = this.getId(n2);\n this.idNodeMap.delete(id);\n if (n2.childNodes) {\n n2.childNodes.forEach(\n (childNode) => this.removeNodeFromMap(childNode)\n );\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node2) {\n return this.nodeMetaMap.has(node2);\n }\n add(n2, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n2);\n this.nodeMetaMap.set(n2, meta);\n }\n replace(id, n2) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta) this.nodeMetaMap.set(n2, meta);\n }\n this.idNodeMap.set(id, n2);\n }\n reset() {\n this.idNodeMap = /* @__PURE__ */ new Map();\n this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n }\n}\nfunction createMirror$2() {\n return new Mirror();\n}\nfunction maskInputValue({\n element,\n maskInputOptions,\n tagName,\n type,\n value,\n maskInputFn\n}) {\n let text = value || \"\";\n const actualType = type && toLowerCase(type);\n if (maskInputOptions[tagName.toLowerCase()] || actualType && maskInputOptions[actualType]) {\n if (maskInputFn) {\n text = maskInputFn(text, element);\n } else {\n text = \"*\".repeat(text.length);\n }\n }\n return text;\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return true;\n const chunkSize = 50;\n for (let x = 0; x < canvas.width; x += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n const pixelBuffer = new Uint32Array(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n originalGetImageData.call(\n ctx,\n x,\n y,\n Math.min(chunkSize, canvas.width - x),\n Math.min(chunkSize, canvas.height - y)\n ).data.buffer\n );\n if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n ) : null;\n}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, baseURL ?? window.location.href);\n } catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return (match == null ? void 0 : match[1]) ?? null;\n}\nfunction extractOrigin(url) {\n let origin = \"\";\n if (url.indexOf(\"//\") > -1) {\n origin = url.split(\"/\").slice(0, 3).join(\"/\");\n } else {\n origin = url.split(\"/\")[0];\n }\n origin = origin.split(\"?\")[0];\n return origin;\n}\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absolutifyURLs(cssText, href) {\n return (cssText || \"\").replace(\n URL_IN_CSS_REF,\n (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || \"\";\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === \"/\") {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split(\"/\");\n const parts = filePath.split(\"/\");\n stack.pop();\n for (const part of parts) {\n if (part === \".\") {\n continue;\n } else if (part === \"..\") {\n stack.pop();\n } else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n }\n );\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName$1(element) {\n if (element instanceof HTMLFormElement) {\n return \"form\";\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return \"div\";\n }\n return processedTagName;\n}\nlet canvasService;\nlet canvasCtx;\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === \"\") {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars2;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars2 = match[0];\n pos += chars2.length;\n return chars2;\n }\n return \"\";\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === \",\") {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n } else {\n let descriptorsStr = \"\";\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c2 = attributeValue.charAt(pos);\n if (c2 === \"\") {\n output.push((url + descriptorsStr).trim());\n break;\n } else if (!inParens) {\n if (c2 === \",\") {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n } else if (c2 === \"(\") {\n inParens = true;\n }\n } else {\n if (c2 === \")\") {\n inParens = false;\n }\n }\n descriptorsStr += c2;\n pos += 1;\n }\n }\n }\n return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === \"\") {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a2 = cachedDocument.get(doc);\n if (!a2) {\n a2 = doc.createElement(\"a\");\n cachedDocument.set(doc, a2);\n }\n if (!customHref) {\n customHref = \"\";\n } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n return customHref;\n }\n a2.setAttribute(\"href\", customHref);\n return a2.href;\n}\nfunction transformAttribute(doc, tagName, name, value) {\n if (!value) {\n return value;\n }\n if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n return absoluteToDoc(doc, value);\n } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n return absoluteToDoc(doc, value);\n } else if (name === \"srcset\") {\n return getAbsoluteSrcsetString(doc, value);\n } else if (name === \"style\") {\n return absolutifyURLs(value, getHref(doc));\n } else if (tagName === \"object\" && name === \"data\") {\n return absoluteToDoc(doc, value);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector) {\n try {\n if (typeof blockClass === \"string\") {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n } else {\n for (let eIndex = element.classList.length; eIndex--; ) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n } catch (e2) {\n }\n return false;\n}\nfunction classMatchesRegex(node2, regex, checkAncestors) {\n if (!node2) return false;\n if (node2.nodeType !== node2.ELEMENT_NODE) {\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n }\n for (let eIndex = node2.classList.length; eIndex--; ) {\n const className = node2.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n if (!checkAncestors) return false;\n return classMatchesRegex(index$1.parentNode(node2), regex, checkAncestors);\n}\nfunction needMaskingText(node2, maskTextClass, maskTextSelector, checkAncestors) {\n let el;\n if (isElement(node2)) {\n el = node2;\n if (!index$1.childNodes(el).length) {\n return false;\n }\n } else if (index$1.parentElement(node2) === null) {\n return false;\n } else {\n el = index$1.parentElement(node2);\n }\n try {\n if (typeof maskTextClass === \"string\") {\n if (checkAncestors) {\n if (el.closest(`.${maskTextClass}`)) return true;\n } else {\n if (el.classList.contains(maskTextClass)) return true;\n }\n } else {\n if (classMatchesRegex(el, maskTextClass, checkAncestors)) return true;\n }\n if (maskTextSelector) {\n if (checkAncestors) {\n if (el.closest(maskTextSelector)) return true;\n } else {\n if (el.matches(maskTextSelector)) return true;\n }\n }\n } catch (e2) {\n }\n return false;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n } catch (error) {\n return;\n }\n if (readyState !== \"complete\") {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = \"about:blank\";\n if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n setTimeout(listener, 0);\n return iframeEl.addEventListener(\"load\", listener);\n }\n iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n } catch (error) {\n return;\n }\n if (styleSheetLoaded) return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener(\"load\", () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false\n } = options;\n const rootId = getRootId(doc, mirror2);\n switch (n2.nodeType) {\n case n2.DOCUMENT_NODE:\n if (n2.compatMode !== \"CSS1Compat\") {\n return {\n type: NodeType$1$1.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$1$1.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$1$1.DocumentType,\n name: n2.name,\n publicId: n2.publicId,\n systemId: n2.systemId,\n rootId\n };\n case n2.ELEMENT_NODE:\n return serializeElementNode(n2, {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId\n });\n case n2.TEXT_NODE:\n return serializeTextNode(n2, {\n doc,\n needsMask,\n maskTextFn,\n rootId\n });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$1$1.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$1$1.Comment,\n textContent: index$1.textContent(n2) || \"\",\n rootId\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror2) {\n if (!mirror2.hasNode(doc)) return void 0;\n const docId = mirror2.getId(doc);\n return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n2, options) {\n var _a2;\n const { needsMask, maskTextFn, rootId } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let text = index$1.textContent(n2);\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isStyle && text) {\n try {\n if (n2.nextSibling || n2.previousSibling) {\n } else if ((_a2 = parent.sheet) == null ? void 0 : _a2.cssRules) {\n text = stringifyStylesheet(parent.sheet);\n }\n } catch (err) {\n console.warn(\n `Cannot get CSS styles from text's parentNode. Error: ${err}`,\n n2\n );\n }\n text = absolutifyURLs(text, getHref(options.doc));\n }\n if (isScript) {\n text = \"SCRIPT_PLACEHOLDER\";\n }\n if (!isStyle && !isScript && text && needsMask) {\n text = maskTextFn ? maskTextFn(text, index$1.parentElement(n2)) : text.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$1$1.Text,\n textContent: text || \"\",\n isStyle,\n rootId\n };\n}\nfunction findStylesheet(doc, href) {\n return Array.from(doc.styleSheets).find((s2) => s2.href === href);\n}\nfunction hrefFrom(n2) {\n return n2.href;\n}\nfunction serializeElementNode(n2, options) {\n const {\n doc,\n blockClass,\n blockSelector,\n inlineStylesheet,\n maskInputOptions = {},\n maskInputFn,\n dataURLOptions = {},\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement = false,\n rootId\n } = options;\n const needBlock = _isBlockedElement(n2, blockClass, blockSelector);\n const tagName = getValidTagName$1(n2);\n let attributes = {};\n const len = n2.attributes.length;\n for (let i2 = 0; i2 < len; i2++) {\n const attr = n2.attributes[i2];\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(\n doc,\n tagName,\n toLowerCase(attr.name),\n attr.value\n );\n }\n }\n if (tagName === \"link\" && inlineStylesheet) {\n const href = hrefFrom(n2);\n if (href) {\n let stylesheet = findStylesheet(doc, href);\n if (!stylesheet && href.includes(\".css\")) {\n const rootDomain = window.location.origin;\n const stylesheetPath = href.replace(window.location.href, \"\");\n const potentialStylesheetHref = rootDomain + \"/\" + stylesheetPath;\n stylesheet = findStylesheet(doc, potentialStylesheetHref);\n }\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = cssText;\n }\n }\n }\n if (tagName === \"style\" && n2.sheet && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n !(n2.innerText || index$1.textContent(n2) || \"\").trim().length) {\n const cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\n attributes._cssText = cssText;\n }\n }\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n const value = n2.value;\n const checked = n2.checked;\n if (attributes.type !== \"radio\" && attributes.type !== \"checkbox\" && attributes.type !== \"submit\" && attributes.type !== \"button\" && value) {\n attributes.value = maskInputValue({\n element: n2,\n type: getInputType(n2),\n tagName,\n value,\n maskInputOptions,\n maskInputFn\n });\n } else if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === \"option\") {\n if (n2.selected && !maskInputOptions[\"select\"]) {\n attributes.selected = true;\n } else {\n delete attributes.selected;\n }\n }\n if (tagName === \"dialog\" && n2.open) {\n try {\n attributes.rr_open_mode = n2.matches(\"dialog:modal\") ? \"modal\" : \"non-modal\";\n } catch {\n attributes.rr_open_mode = \"modal\";\n attributes.ph_rr_could_not_detect_modal = true;\n }\n }\n if (tagName === \"canvas\" && recordCanvas) {\n if (n2.__context === \"2d\") {\n if (!is2DCanvasBlank(n2)) {\n attributes.rr_dataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n }\n } else if (!(\"__context\" in n2)) {\n const canvasDataURL = n2.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n const blankCanvas = doc.createElement(\"canvas\");\n blankCanvas.width = n2.width;\n blankCanvas.height = n2.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === \"img\" && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement(\"canvas\");\n canvasCtx = canvasService.getContext(\"2d\");\n }\n const image = n2;\n const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n const priorCrossOrigin = image.crossOrigin;\n const recordInlineImage = () => {\n image.removeEventListener(\"load\", recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(\n dataURLOptions.type,\n dataURLOptions.quality\n );\n } catch (err) {\n if (image.crossOrigin !== \"anonymous\") {\n image.crossOrigin = \"anonymous\";\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n return;\n } else {\n console.warn(\n `Cannot inline img src=${imageSrc}! Error: ${err}`\n );\n }\n }\n if (image.crossOrigin === \"anonymous\") {\n priorCrossOrigin ? attributes.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n }\n };\n if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n else image.addEventListener(\"load\", recordInlineImage);\n }\n if (tagName === \"audio\" || tagName === \"video\") {\n const mediaAttributes = attributes;\n mediaAttributes.rr_mediaState = n2.paused ? \"paused\" : \"played\";\n mediaAttributes.rr_mediaCurrentTime = n2.currentTime;\n mediaAttributes.rr_mediaPlaybackRate = n2.playbackRate;\n mediaAttributes.rr_mediaMuted = n2.muted;\n mediaAttributes.rr_mediaLoop = n2.loop;\n mediaAttributes.rr_mediaVolume = n2.volume;\n }\n if (!newlyAddedElement) {\n if (n2.scrollLeft) {\n attributes.rr_scrollLeft = n2.scrollLeft;\n }\n if (n2.scrollTop) {\n attributes.rr_scrollTop = n2.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n2.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`\n };\n }\n if (tagName === \"iframe\" && !keepIframeSrcFn(attributes.src)) {\n if (!n2.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName)) isCustomElement = true;\n } catch (e2) {\n }\n return {\n type: NodeType$1$1.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n2) || void 0,\n needBlock,\n rootId,\n isCustom: isCustomElement\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === void 0 || maybeAttr === null) {\n return \"\";\n } else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$1$1.Comment) {\n return true;\n } else if (sn.type === NodeType$1$1.Element) {\n if (slimDOMOptions.script && // script tag\n (sn.tagName === \"script\" || // (module)preload link\n sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" && sn.attributes.as === \"script\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n return true;\n } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n /^msapplication-tile(image|color)$/\n ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n return true;\n } else if (sn.tagName === \"meta\") {\n if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n return true;\n } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n return true;\n } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n return true;\n } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n2, options) {\n const {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild = false,\n inlineStylesheet = true,\n maskInputOptions = {},\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions = {},\n inlineImages = false,\n recordCanvas = false,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout = 5e3,\n onStylesheetLoad,\n stylesheetLoadTimeout = 5e3,\n keepIframeSrcFn = () => false,\n newlyAddedElement = false\n } = options;\n let { needsMask } = options;\n let { preserveWhiteSpace = true } = options;\n if (!needsMask) {\n const checkAncestors = needsMask === void 0;\n needsMask = needMaskingText(\n n2,\n maskTextClass,\n maskTextSelector,\n checkAncestors\n );\n }\n const _serializedNode = serializeNode(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement\n });\n if (!_serializedNode) {\n console.warn(n2, \"not serialized\");\n return null;\n }\n let id;\n if (mirror2.hasNode(n2)) {\n id = mirror2.getId(n2);\n } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType$1$1.Text && !_serializedNode.isStyle && !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, \"\").length) {\n id = IGNORED_NODE;\n } else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror2.add(n2, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n2);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$1$1.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRootEl = index$1.shadowRoot(n2);\n if (shadowRootEl && isNativeShadowDom(shadowRootEl))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$1$1.Document || serializedNode.type === NodeType$1$1.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$1$1.Element && serializedNode.tagName === \"head\") {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n };\n if (serializedNode.type === NodeType$1$1.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\n for (const childN of Array.from(index$1.childNodes(n2))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n let shadowRootEl = null;\n if (isElement(n2) && (shadowRootEl = index$1.shadowRoot(n2))) {\n for (const childN of Array.from(index$1.childNodes(shadowRootEl))) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(shadowRootEl) && (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n const parent = index$1.parentNode(n2);\n if (parent && isShadowRoot(parent) && isNativeShadowDom(parent)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$1$1.Element && serializedNode.tagName === \"iframe\") {\n onceIframeLoaded(\n n2,\n () => {\n const iframeDoc = n2.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedIframeNode) {\n onIframeLoad(\n n2,\n serializedIframeNode\n );\n }\n }\n },\n iframeLoadTimeout\n );\n }\n if (serializedNode.type === NodeType$1$1.Element && serializedNode.tagName === \"link\" && typeof serializedNode.attributes.rel === \"string\" && (serializedNode.attributes.rel === \"stylesheet\" || serializedNode.attributes.rel === \"preload\" && typeof serializedNode.attributes.href === \"string\" && extractFileExtension(serializedNode.attributes.href) === \"css\")) {\n onceStylesheetLoaded(\n n2,\n () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n2, {\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n needsMask,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn\n });\n if (serializedLinkNode) {\n onStylesheetLoad(\n n2,\n serializedLinkNode\n );\n }\n }\n },\n stylesheetLoadTimeout\n );\n }\n return serializedNode;\n}\nfunction snapshot(n2, options) {\n const {\n mirror: mirror2 = new Mirror(),\n blockClass = \"rr-block\",\n blockSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n inlineImages = false,\n recordCanvas = false,\n maskAllInputs = false,\n maskTextFn,\n maskInputFn,\n slimDOM = false,\n dataURLOptions,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn = () => false\n } = options || {};\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : maskAllInputs === false ? {\n password: true\n } : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n // if true: set of sensible options that should not throw away any information\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === \"all\",\n // destructive\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true\n }\n ) : slimDOM === false ? {} : slimDOM;\n return serializeNodeWithId(n2, {\n doc: n2,\n mirror: mirror2,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false\n });\n}\nfunction getDefaultExportFromCjs$1(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nfunction getAugmentedNamespace$1(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser$1 = { exports: {} };\nvar hasRequiredPicocolors_browser$1;\nfunction requirePicocolors_browser$1() {\n if (hasRequiredPicocolors_browser$1) return picocolors_browser$1.exports;\n hasRequiredPicocolors_browser$1 = 1;\n var x = String;\n var create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x, blackBright: x, redBright: x, greenBright: x, yellowBright: x, blueBright: x, magentaBright: x, cyanBright: x, whiteBright: x, bgBlackBright: x, bgRedBright: x, bgGreenBright: x, bgYellowBright: x, bgBlueBright: x, bgMagentaBright: x, bgCyanBright: x, bgWhiteBright: x };\n };\n picocolors_browser$1.exports = create();\n picocolors_browser$1.exports.createColors = create;\n return picocolors_browser$1.exports;\n}\nconst __viteBrowserExternal$2 = {};\nconst __viteBrowserExternal$1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2$1 = /* @__PURE__ */ getAugmentedNamespace$1(__viteBrowserExternal$1$1);\nvar cssSyntaxError$1;\nvar hasRequiredCssSyntaxError$1;\nfunction requireCssSyntaxError$1() {\n if (hasRequiredCssSyntaxError$1) return cssSyntaxError$1;\n hasRequiredCssSyntaxError$1 = 1;\n let pico = /* @__PURE__ */ requirePicocolors_browser$1();\n let terminalHighlight = require$$2$1;\n class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin) {\n this.plugin = plugin;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"<css input>\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n let aside = (text) => text;\n let mark = (text) => text;\n let highlight = (text) => text;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n if (terminalHighlight) {\n highlight = (text) => terminalHighlight(text);\n }\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20;\n let subLineStart = Math.max(0, this.column - padding);\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n );\n let subLine = line.slice(subLineStart, subLineEnd);\n let spacing2 = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, Math.min(this.column - 1, padding - 1)).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + highlight(subLine) + \"\\n \" + spacing2 + mark(\"^\");\n }\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + highlight(line) + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + highlight(line);\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n }\n cssSyntaxError$1 = CssSyntaxError;\n CssSyntaxError.default = CssSyntaxError;\n return cssSyntaxError$1;\n}\nvar stringifier$1;\nvar hasRequiredStringifier$1;\nfunction requireStringifier$1() {\n if (hasRequiredStringifier$1) return stringifier$1;\n hasRequiredStringifier$1 = 1;\n const DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n };\n function capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n }\n class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n }\n stringifier$1 = Stringifier;\n Stringifier.default = Stringifier;\n return stringifier$1;\n}\nvar stringify_1$1;\nvar hasRequiredStringify$1;\nfunction requireStringify$1() {\n if (hasRequiredStringify$1) return stringify_1$1;\n hasRequiredStringify$1 = 1;\n let Stringifier = requireStringifier$1();\n function stringify(node2, builder) {\n let str = new Stringifier(builder);\n str.stringify(node2);\n }\n stringify_1$1 = stringify;\n stringify.default = stringify;\n return stringify_1$1;\n}\nvar symbols$1 = {};\nvar hasRequiredSymbols$1;\nfunction requireSymbols$1() {\n if (hasRequiredSymbols$1) return symbols$1;\n hasRequiredSymbols$1 = 1;\n symbols$1.isClean = Symbol(\"isClean\");\n symbols$1.my = Symbol(\"my\");\n return symbols$1;\n}\nvar node$1;\nvar hasRequiredNode$1;\nfunction requireNode$1() {\n if (hasRequiredNode$1) return node$1;\n hasRequiredNode$1 = 1;\n let CssSyntaxError = requireCssSyntaxError$1();\n let Stringifier = requireStringifier$1();\n let stringify = requireStringify$1();\n let { isClean, my } = requireSymbols$1();\n function cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n }\n function sourceOffset(inputCSS, position) {\n if (position && typeof position.offset !== \"undefined\") {\n return position.offset;\n }\n let column = 1;\n let line = 1;\n let offset = 0;\n for (let i2 = 0; i2 < inputCSS.length; i2++) {\n if (line === position.line && column === position.column) {\n offset = i2;\n break;\n }\n if (inputCSS[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return offset;\n }\n class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean] = false;\n this[my] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true;\n }\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n );\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2);\n }\n return pos;\n }\n positionInside(index2) {\n let column = this.source.start.column;\n let line = this.source.start.line;\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let offset = sourceOffset(inputString, this.source.start);\n let end = offset + index2;\n for (let i2 = offset; i2 < end; i2++) {\n if (inputString[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n );\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2);\n end = this.positionInside(\n index2 + opts.word.length\n );\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n }\n node$1 = Node2;\n Node2.default = Node2;\n return node$1;\n}\nvar comment$1;\nvar hasRequiredComment$1;\nfunction requireComment$1() {\n if (hasRequiredComment$1) return comment$1;\n hasRequiredComment$1 = 1;\n let Node2 = requireNode$1();\n class Comment extends Node2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n }\n comment$1 = Comment;\n Comment.default = Comment;\n return comment$1;\n}\nvar declaration$1;\nvar hasRequiredDeclaration$1;\nfunction requireDeclaration$1() {\n if (hasRequiredDeclaration$1) return declaration$1;\n hasRequiredDeclaration$1 = 1;\n let Node2 = requireNode$1();\n class Declaration extends Node2 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n declaration$1 = Declaration;\n Declaration.default = Declaration;\n return declaration$1;\n}\nvar container$1;\nvar hasRequiredContainer$1;\nfunction requireContainer$1() {\n if (hasRequiredContainer$1) return container$1;\n hasRequiredContainer$1 = 1;\n let Comment = requireComment$1();\n let Declaration = requireDeclaration$1();\n let Node2 = requireNode$1();\n let { isClean, my } = requireSymbols$1();\n let AtRule, parse, Root, Rule;\n function cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n }\n function markTreeDirty(node2) {\n node2[isClean] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markTreeDirty(i2);\n }\n }\n }\n class Container extends Node2 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration(nodes)];\n } else if (nodes.selector || nodes.selectors) {\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean]) markTreeDirty(i2);\n if (!i2.raws) i2.raws = {};\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n Container.registerParse = (dependant) => {\n parse = dependant;\n };\n Container.registerRule = (dependant) => {\n Rule = dependant;\n };\n Container.registerAtRule = (dependant) => {\n AtRule = dependant;\n };\n Container.registerRoot = (dependant) => {\n Root = dependant;\n };\n container$1 = Container;\n Container.default = Container;\n Container.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root.prototype);\n }\n node2[my] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container.rebuild(child);\n });\n }\n };\n return container$1;\n}\nvar atRule$1;\nvar hasRequiredAtRule$1;\nfunction requireAtRule$1() {\n if (hasRequiredAtRule$1) return atRule$1;\n hasRequiredAtRule$1 = 1;\n let Container = requireContainer$1();\n class AtRule extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n }\n atRule$1 = AtRule;\n AtRule.default = AtRule;\n Container.registerAtRule(AtRule);\n return atRule$1;\n}\nvar document$1$1;\nvar hasRequiredDocument$1;\nfunction requireDocument$1() {\n if (hasRequiredDocument$1) return document$1$1;\n hasRequiredDocument$1 = 1;\n let Container = requireContainer$1();\n let LazyResult, Processor;\n class Document2 extends Container {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n }\n Document2.registerLazyResult = (dependant) => {\n LazyResult = dependant;\n };\n Document2.registerProcessor = (dependant) => {\n Processor = dependant;\n };\n document$1$1 = Document2;\n Document2.default = Document2;\n return document$1$1;\n}\nvar nonSecure$1;\nvar hasRequiredNonSecure$1;\nfunction requireNonSecure$1() {\n if (hasRequiredNonSecure$1) return nonSecure$1;\n hasRequiredNonSecure$1 = 1;\n let urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\n let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size | 0;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n };\n let nanoid = (size = 21) => {\n let id = \"\";\n let i2 = size | 0;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n };\n nonSecure$1 = { nanoid, customAlphabet };\n return nonSecure$1;\n}\nvar previousMap$1;\nvar hasRequiredPreviousMap$1;\nfunction requirePreviousMap$1() {\n if (hasRequiredPreviousMap$1) return previousMap$1;\n hasRequiredPreviousMap$1 = 1;\n let { existsSync, readFileSync } = require$$2$1;\n let { dirname, join } = require$$2$1;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n function fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n }\n class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n let uriMatch = text.match(charsetUri) || text.match(uri);\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length));\n }\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri);\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n }\n previousMap$1 = PreviousMap;\n PreviousMap.default = PreviousMap;\n return previousMap$1;\n}\nvar input$1;\nvar hasRequiredInput$1;\nfunction requireInput$1() {\n if (hasRequiredInput$1) return input$1;\n hasRequiredInput$1 = 1;\n let { nanoid } = /* @__PURE__ */ requireNonSecure$1();\n let { isAbsolute, resolve } = require$$2$1;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n let { fileURLToPath, pathToFileURL } = require$$2$1;\n let CssSyntaxError = requireCssSyntaxError$1();\n let PreviousMap = requirePreviousMap$1();\n let terminalHighlight = require$$2$1;\n let fromOffsetCache = Symbol(\"fromOffsetCache\");\n let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n let pathAvailable = Boolean(resolve && isAbsolute);\n class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n this.document = this.css;\n if (opts.document) this.document = opts.document.toString();\n if (opts.from) {\n if (!pathAvailable || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve(opts.from);\n }\n }\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"<input css \" + nanoid(6) + \">\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let endColumn, endLine, result2;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL) {\n result2.input.url = pathToFileURL(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n }\n input$1 = Input;\n Input.default = Input;\n if (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input);\n }\n return input$1;\n}\nvar root$1;\nvar hasRequiredRoot$1;\nfunction requireRoot$1() {\n if (hasRequiredRoot$1) return root$1;\n hasRequiredRoot$1 = 1;\n let Container = requireContainer$1();\n let LazyResult, Processor;\n class Root extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n }\n Root.registerLazyResult = (dependant) => {\n LazyResult = dependant;\n };\n Root.registerProcessor = (dependant) => {\n Processor = dependant;\n };\n root$1 = Root;\n Root.default = Root;\n Container.registerRoot(Root);\n return root$1;\n}\nvar list_1$1;\nvar hasRequiredList$1;\nfunction requireList$1() {\n if (hasRequiredList$1) return list_1$1;\n hasRequiredList$1 = 1;\n let list = {\n comma(string) {\n return list.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n };\n list_1$1 = list;\n list.default = list;\n return list_1$1;\n}\nvar rule$1;\nvar hasRequiredRule$1;\nfunction requireRule$1() {\n if (hasRequiredRule$1) return rule$1;\n hasRequiredRule$1 = 1;\n let Container = requireContainer$1();\n let list = requireList$1();\n class Rule extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep);\n }\n }\n rule$1 = Rule;\n Rule.default = Rule;\n Container.registerRule(Rule);\n return rule$1;\n}\nvar fromJSON_1$1;\nvar hasRequiredFromJSON$1;\nfunction requireFromJSON$1() {\n if (hasRequiredFromJSON$1) return fromJSON_1$1;\n hasRequiredFromJSON$1 = 1;\n let AtRule = requireAtRule$1();\n let Comment = requireComment$1();\n let Declaration = requireDeclaration$1();\n let Input = requireInput$1();\n let PreviousMap = requirePreviousMap$1();\n let Root = requireRoot$1();\n let Rule = requireRule$1();\n function fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n }\n fromJSON_1$1 = fromJSON;\n fromJSON.default = fromJSON;\n return fromJSON_1$1;\n}\nvar mapGenerator$1;\nvar hasRequiredMapGenerator$1;\nfunction requireMapGenerator$1() {\n if (hasRequiredMapGenerator$1) return mapGenerator$1;\n hasRequiredMapGenerator$1 = 1;\n let { dirname, relative, resolve, sep } = require$$2$1;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2$1;\n let { pathToFileURL } = require$$2$1;\n let Input = requireInput$1();\n let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n let pathAvailable = Boolean(dirname && resolve && relative && sep);\n class MapGenerator {\n constructor(stringify, root2, opts, cssString) {\n this.stringify = stringify;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.startsWith(\"# sourceMappingURL=\")) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"<no source>\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let last, lines;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n }\n mapGenerator$1 = MapGenerator;\n return mapGenerator$1;\n}\nvar tokenize$1;\nvar hasRequiredTokenize$1;\nfunction requireTokenize$1() {\n if (hasRequiredTokenize$1) return tokenize$1;\n hasRequiredTokenize$1 = 1;\n const SINGLE_QUOTE = \"'\".charCodeAt(0);\n const DOUBLE_QUOTE = '\"'.charCodeAt(0);\n const BACKSLASH = \"\\\\\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NEWLINE = \"\\n\".charCodeAt(0);\n const SPACE = \" \".charCodeAt(0);\n const FEED = \"\\f\".charCodeAt(0);\n const TAB = \"\t\".charCodeAt(0);\n const CR = \"\\r\".charCodeAt(0);\n const OPEN_SQUARE = \"[\".charCodeAt(0);\n const CLOSE_SQUARE = \"]\".charCodeAt(0);\n const OPEN_PARENTHESES = \"(\".charCodeAt(0);\n const CLOSE_PARENTHESES = \")\".charCodeAt(0);\n const OPEN_CURLY = \"{\".charCodeAt(0);\n const CLOSE_CURLY = \"}\".charCodeAt(0);\n const SEMICOLON = \";\".charCodeAt(0);\n const ASTERISK = \"*\".charCodeAt(0);\n const COLON = \":\".charCodeAt(0);\n const AT = \"@\".charCodeAt(0);\n const RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\n const RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\n const RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\n const RE_HEX_ESCAPE = /[\\da-f]/i;\n tokenize$1 = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, content, escape, next, quote;\n let currentToken, escaped, escapePos, n2, prev;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n };\n return tokenize$1;\n}\nvar parser$1;\nvar hasRequiredParser$1;\nfunction requireParser$1() {\n if (hasRequiredParser$1) return parser$1;\n hasRequiredParser$1 = 1;\n let AtRule = requireAtRule$1();\n let Comment = requireComment$1();\n let Declaration = requireDeclaration$1();\n let Root = requireRoot$1();\n let Rule = requireRule$1();\n let tokenizer = requireTokenize$1();\n const SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n };\n function findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n }\n class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let prev, token, type;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().startsWith(\"!\") && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().startsWith(\"!\")) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n }\n parser$1 = Parser;\n return parser$1;\n}\nvar parse_1$1;\nvar hasRequiredParse$1;\nfunction requireParse$1() {\n if (hasRequiredParse$1) return parse_1$1;\n hasRequiredParse$1 = 1;\n let Container = requireContainer$1();\n let Input = requireInput$1();\n let Parser = requireParser$1();\n function parse(css, opts) {\n let input2 = new Input(css, opts);\n let parser2 = new Parser(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n }\n parse_1$1 = parse;\n parse.default = parse;\n Container.registerParse(parse);\n return parse_1$1;\n}\nvar warning$1;\nvar hasRequiredWarning$1;\nfunction requireWarning$1() {\n if (hasRequiredWarning$1) return warning$1;\n hasRequiredWarning$1 = 1;\n class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n }\n warning$1 = Warning;\n Warning.default = Warning;\n return warning$1;\n}\nvar result$1;\nvar hasRequiredResult$1;\nfunction requireResult$1() {\n if (hasRequiredResult$1) return result$1;\n hasRequiredResult$1 = 1;\n let Warning = requireWarning$1();\n class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n }\n result$1 = Result;\n Result.default = Result;\n return result$1;\n}\nvar warnOnce$1;\nvar hasRequiredWarnOnce$1;\nfunction requireWarnOnce$1() {\n if (hasRequiredWarnOnce$1) return warnOnce$1;\n hasRequiredWarnOnce$1 = 1;\n let printed = {};\n warnOnce$1 = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n };\n return warnOnce$1;\n}\nvar lazyResult$1;\nvar hasRequiredLazyResult$1;\nfunction requireLazyResult$1() {\n if (hasRequiredLazyResult$1) return lazyResult$1;\n hasRequiredLazyResult$1 = 1;\n let Container = requireContainer$1();\n let Document2 = requireDocument$1();\n let MapGenerator = requireMapGenerator$1();\n let parse = requireParse$1();\n let Result = requireResult$1();\n let Root = requireRoot$1();\n let stringify = requireStringify$1();\n let { isClean, my } = requireSymbols$1();\n let warnOnce2 = requireWarnOnce$1();\n const TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n };\n const PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n };\n const NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n };\n const CHILDREN = 0;\n function isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n }\n function getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n }\n function toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n }\n function cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n }\n let postcss2 = {};\n class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult || css instanceof Result) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container.rebuild(root2);\n }\n }\n this.result = new Result(processor2, root2, opts);\n this.helpers = { ...postcss2, postcss: postcss2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin) => {\n if (typeof plugin === \"object\" && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) };\n } else {\n return plugin;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin.postcssPlugin;\n let pluginVer = plugin.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin, cb]);\n };\n for (let plugin of this.plugins) {\n if (typeof plugin === \"object\") {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === \"object\") {\n for (let filter in plugin[event]) {\n if (filter === \"*\") {\n add(plugin, event, plugin[event][filter]);\n } else {\n add(\n plugin,\n event + \"-\" + filter.toLowerCase(),\n plugin[event][filter]\n );\n }\n }\n } else if (typeof plugin[event] === \"function\") {\n add(plugin, event, plugin[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin = this.plugins[i2];\n let promise = this.runOnRoot(plugin);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin;\n try {\n if (typeof plugin === \"object\" && plugin.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin.Once(this.result.root, this.helpers);\n } else if (typeof plugin === \"function\") {\n return plugin(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n }\n LazyResult.registerPostcss = (dependant) => {\n postcss2 = dependant;\n };\n lazyResult$1 = LazyResult;\n LazyResult.default = LazyResult;\n Root.registerLazyResult(LazyResult);\n Document2.registerLazyResult(LazyResult);\n return lazyResult$1;\n}\nvar noWorkResult$1;\nvar hasRequiredNoWorkResult$1;\nfunction requireNoWorkResult$1() {\n if (hasRequiredNoWorkResult$1) return noWorkResult$1;\n hasRequiredNoWorkResult$1 = 1;\n let MapGenerator = requireMapGenerator$1();\n let parse = requireParse$1();\n const Result = requireResult$1();\n let stringify = requireStringify$1();\n let warnOnce2 = requireWarnOnce$1();\n class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify;\n this.result = new Result(this._processor, root2, this._opts);\n this.result.css = css;\n let self2 = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self2.root;\n }\n });\n let map = new MapGenerator(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n }\n noWorkResult$1 = NoWorkResult;\n NoWorkResult.default = NoWorkResult;\n return noWorkResult$1;\n}\nvar processor$1;\nvar hasRequiredProcessor$1;\nfunction requireProcessor$1() {\n if (hasRequiredProcessor$1) return processor$1;\n hasRequiredProcessor$1 = 1;\n let Document2 = requireDocument$1();\n let LazyResult = requireLazyResult$1();\n let NoWorkResult = requireNoWorkResult$1();\n let Root = requireRoot$1();\n class Processor {\n constructor(plugins = []) {\n this.version = \"8.5.1\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult(this, css, opts);\n } else {\n return new LazyResult(this, css, opts);\n }\n }\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n }\n }\n processor$1 = Processor;\n Processor.default = Processor;\n Root.registerProcessor(Processor);\n Document2.registerProcessor(Processor);\n return processor$1;\n}\nvar postcss_1$1;\nvar hasRequiredPostcss$1;\nfunction requirePostcss$1() {\n if (hasRequiredPostcss$1) return postcss_1$1;\n hasRequiredPostcss$1 = 1;\n let AtRule = requireAtRule$1();\n let Comment = requireComment$1();\n let Container = requireContainer$1();\n let CssSyntaxError = requireCssSyntaxError$1();\n let Declaration = requireDeclaration$1();\n let Document2 = requireDocument$1();\n let fromJSON = requireFromJSON$1();\n let Input = requireInput$1();\n let LazyResult = requireLazyResult$1();\n let list = requireList$1();\n let Node2 = requireNode$1();\n let parse = requireParse$1();\n let Processor = requireProcessor$1();\n let Result = requireResult$1();\n let Root = requireRoot$1();\n let Rule = requireRule$1();\n let stringify = requireStringify$1();\n let Warning = requireWarning$1();\n function postcss2(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor(plugins);\n }\n postcss2.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss2([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n };\n postcss2.stringify = stringify;\n postcss2.parse = parse;\n postcss2.fromJSON = fromJSON;\n postcss2.list = list;\n postcss2.comment = (defaults) => new Comment(defaults);\n postcss2.atRule = (defaults) => new AtRule(defaults);\n postcss2.decl = (defaults) => new Declaration(defaults);\n postcss2.rule = (defaults) => new Rule(defaults);\n postcss2.root = (defaults) => new Root(defaults);\n postcss2.document = (defaults) => new Document2(defaults);\n postcss2.CssSyntaxError = CssSyntaxError;\n postcss2.Declaration = Declaration;\n postcss2.Container = Container;\n postcss2.Processor = Processor;\n postcss2.Document = Document2;\n postcss2.Comment = Comment;\n postcss2.Warning = Warning;\n postcss2.AtRule = AtRule;\n postcss2.Result = Result;\n postcss2.Input = Input;\n postcss2.Rule = Rule;\n postcss2.Root = Root;\n postcss2.Node = Node2;\n LazyResult.registerPostcss(postcss2);\n postcss_1$1 = postcss2;\n postcss2.default = postcss2;\n return postcss_1$1;\n}\nvar safeParser$1$1;\nvar hasRequiredSafeParser$1;\nfunction requireSafeParser$1() {\n if (hasRequiredSafeParser$1) return safeParser$1$1;\n hasRequiredSafeParser$1 = 1;\n let Comment = requireComment$1();\n let Parser = requireParser$1();\n let tokenizer = requireTokenize$1();\n class SafeParser extends Parser {\n checkMissedSemicolon() {\n }\n comment(token) {\n let node2 = new Comment();\n this.init(node2, token[2]);\n let pos = this.input.fromOffset(token[3]) || this.input.fromOffset(this.input.css.length - 1);\n node2.source.end = {\n column: pos.col,\n line: pos.line,\n offset: token[3] + 1\n };\n let text = token[1].slice(2);\n if (text.slice(-2) === \"*/\") text = text.slice(0, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer(this.input, { ignoreErrors: true });\n }\n decl(tokens) {\n if (tokens.length > 1 && tokens.some((i2) => i2[0] === \"word\")) {\n super.decl(tokens);\n }\n }\n doubleColon() {\n }\n endFile() {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n while (this.current.parent) {\n this.current = this.current.parent;\n this.current.raws.after = \"\";\n }\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n precheckMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let nextStart, prevEnd;\n for (nextStart = colon - 1; nextStart >= 0; nextStart--) {\n if (tokens[nextStart][0] === \"word\") break;\n }\n if (nextStart === 0 || nextStart < 0) return;\n for (prevEnd = nextStart - 1; prevEnd >= 0; prevEnd--) {\n if (tokens[prevEnd][0] !== \"space\") {\n prevEnd += 1;\n break;\n }\n }\n let other = tokens.slice(nextStart);\n let spaces = tokens.slice(prevEnd, nextStart);\n tokens.splice(prevEnd, tokens.length - prevEnd);\n this.spaces = spaces.map((i2) => i2[1]).join(\"\");\n this.decl(other);\n }\n unclosedBracket() {\n }\n unexpectedClose() {\n this.current.raws.after += \"}\";\n }\n unknownWord(tokens) {\n this.spaces += tokens.map((i2) => i2[1]).join(\"\");\n }\n unnamedAtrule(node2) {\n node2.name = \"\";\n }\n }\n safeParser$1$1 = SafeParser;\n return safeParser$1$1;\n}\nvar safeParse$1;\nvar hasRequiredSafeParse$1;\nfunction requireSafeParse$1() {\n if (hasRequiredSafeParse$1) return safeParse$1;\n hasRequiredSafeParse$1 = 1;\n let { Input } = requirePostcss$1();\n let SafeParser = requireSafeParser$1();\n safeParse$1 = function safeParse2(css, opts) {\n let input2 = new Input(css, opts);\n let parser2 = new SafeParser(input2);\n parser2.parse();\n return parser2.root;\n };\n return safeParse$1;\n}\nrequireSafeParse$1();\nvar postcssExports$1 = requirePostcss$1();\nconst postcss$1 = /* @__PURE__ */ getDefaultExportFromCjs$1(postcssExports$1);\npostcss$1.stringify;\npostcss$1.fromJSON;\npostcss$1.plugin;\npostcss$1.parse;\npostcss$1.list;\npostcss$1.document;\npostcss$1.comment;\npostcss$1.atRule;\npostcss$1.rule;\npostcss$1.decl;\npostcss$1.root;\npostcss$1.CssSyntaxError;\npostcss$1.Declaration;\npostcss$1.Container;\npostcss$1.Processor;\npostcss$1.Document;\npostcss$1.Comment;\npostcss$1.Warning;\npostcss$1.AtRule;\npostcss$1.Result;\npostcss$1.Input;\npostcss$1.Rule;\npostcss$1.Root;\npostcss$1.Node;\nvar __defProp2 = Object.defineProperty;\nvar __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField2 = (obj, key, value) => __defNormalProp2(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nfunction getAugmentedNamespace(n2) {\n if (n2.__esModule) return n2;\n var f2 = n2.default;\n if (typeof f2 == \"function\") {\n var a2 = function a22() {\n if (this instanceof a22) {\n return Reflect.construct(f2, arguments, this.constructor);\n }\n return f2.apply(this, arguments);\n };\n a2.prototype = f2.prototype;\n } else a2 = {};\n Object.defineProperty(a2, \"__esModule\", { value: true });\n Object.keys(n2).forEach(function(k) {\n var d = Object.getOwnPropertyDescriptor(n2, k);\n Object.defineProperty(a2, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return n2[k];\n }\n });\n });\n return a2;\n}\nvar picocolors_browser = { exports: {} };\nvar hasRequiredPicocolors_browser;\nfunction requirePicocolors_browser() {\n if (hasRequiredPicocolors_browser) return picocolors_browser.exports;\n hasRequiredPicocolors_browser = 1;\n var x = String;\n var create = function() {\n return { isColorSupported: false, reset: x, bold: x, dim: x, italic: x, underline: x, inverse: x, hidden: x, strikethrough: x, black: x, red: x, green: x, yellow: x, blue: x, magenta: x, cyan: x, white: x, gray: x, bgBlack: x, bgRed: x, bgGreen: x, bgYellow: x, bgBlue: x, bgMagenta: x, bgCyan: x, bgWhite: x, blackBright: x, redBright: x, greenBright: x, yellowBright: x, blueBright: x, magentaBright: x, cyanBright: x, whiteBright: x, bgBlackBright: x, bgRedBright: x, bgGreenBright: x, bgYellowBright: x, bgBlueBright: x, bgMagentaBright: x, bgCyanBright: x, bgWhiteBright: x };\n };\n picocolors_browser.exports = create();\n picocolors_browser.exports.createColors = create;\n return picocolors_browser.exports;\n}\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$2 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\nvar cssSyntaxError;\nvar hasRequiredCssSyntaxError;\nfunction requireCssSyntaxError() {\n if (hasRequiredCssSyntaxError) return cssSyntaxError;\n hasRequiredCssSyntaxError = 1;\n let pico = /* @__PURE__ */ requirePicocolors_browser();\n let terminalHighlight = require$$2;\n class CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message);\n this.name = \"CssSyntaxError\";\n this.reason = message;\n if (file) {\n this.file = file;\n }\n if (source) {\n this.source = source;\n }\n if (plugin) {\n this.plugin = plugin;\n }\n if (typeof line !== \"undefined\" && typeof column !== \"undefined\") {\n if (typeof line === \"number\") {\n this.line = line;\n this.column = column;\n } else {\n this.line = line.line;\n this.column = line.column;\n this.endLine = column.line;\n this.endColumn = column.column;\n }\n }\n this.setMessage();\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n setMessage() {\n this.message = this.plugin ? this.plugin + \": \" : \"\";\n this.message += this.file ? this.file : \"<css input>\";\n if (typeof this.line !== \"undefined\") {\n this.message += \":\" + this.line + \":\" + this.column;\n }\n this.message += \": \" + this.reason;\n }\n showSourceCode(color) {\n if (!this.source) return \"\";\n let css = this.source;\n if (color == null) color = pico.isColorSupported;\n let aside = (text) => text;\n let mark = (text) => text;\n let highlight = (text) => text;\n if (color) {\n let { bold, gray, red } = pico.createColors(true);\n mark = (text) => bold(red(text));\n aside = (text) => gray(text);\n if (terminalHighlight) {\n highlight = (text) => terminalHighlight(text);\n }\n }\n let lines = css.split(/\\r?\\n/);\n let start = Math.max(this.line - 3, 0);\n let end = Math.min(this.line + 2, lines.length);\n let maxWidth = String(end).length;\n return lines.slice(start, end).map((line, index2) => {\n let number = start + 1 + index2;\n let gutter = \" \" + (\" \" + number).slice(-maxWidth) + \" | \";\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20;\n let subLineStart = Math.max(0, this.column - padding);\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n );\n let subLine = line.slice(subLineStart, subLineEnd);\n let spacing2 = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, Math.min(this.column - 1, padding - 1)).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + highlight(subLine) + \"\\n \" + spacing2 + mark(\"^\");\n }\n let spacing = aside(gutter.replace(/\\d/g, \" \")) + line.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n return mark(\">\") + aside(gutter) + highlight(line) + \"\\n \" + spacing + mark(\"^\");\n }\n return \" \" + aside(gutter) + highlight(line);\n }).join(\"\\n\");\n }\n toString() {\n let code = this.showSourceCode();\n if (code) {\n code = \"\\n\\n\" + code + \"\\n\";\n }\n return this.name + \": \" + this.message + code;\n }\n }\n cssSyntaxError = CssSyntaxError;\n CssSyntaxError.default = CssSyntaxError;\n return cssSyntaxError;\n}\nvar stringifier;\nvar hasRequiredStringifier;\nfunction requireStringifier() {\n if (hasRequiredStringifier) return stringifier;\n hasRequiredStringifier = 1;\n const DEFAULT_RAW = {\n after: \"\\n\",\n beforeClose: \"\\n\",\n beforeComment: \"\\n\",\n beforeDecl: \"\\n\",\n beforeOpen: \" \",\n beforeRule: \"\\n\",\n colon: \": \",\n commentLeft: \" \",\n commentRight: \" \",\n emptyBody: \"\",\n indent: \" \",\n semicolon: false\n };\n function capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n }\n class Stringifier {\n constructor(builder) {\n this.builder = builder;\n }\n atrule(node2, semicolon) {\n let name = \"@\" + node2.name;\n let params = node2.params ? this.rawValue(node2, \"params\") : \"\";\n if (typeof node2.raws.afterName !== \"undefined\") {\n name += node2.raws.afterName;\n } else if (params) {\n name += \" \";\n }\n if (node2.nodes) {\n this.block(node2, name + params);\n } else {\n let end = (node2.raws.between || \"\") + (semicolon ? \";\" : \"\");\n this.builder(name + params + end, node2);\n }\n }\n beforeAfter(node2, detect) {\n let value;\n if (node2.type === \"decl\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (node2.type === \"comment\") {\n value = this.raw(node2, null, \"beforeComment\");\n } else if (detect === \"before\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else {\n value = this.raw(node2, null, \"beforeClose\");\n }\n let buf = node2.parent;\n let depth = 0;\n while (buf && buf.type !== \"root\") {\n depth += 1;\n buf = buf.parent;\n }\n if (value.includes(\"\\n\")) {\n let indent = this.raw(node2, null, \"indent\");\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent;\n }\n }\n return value;\n }\n block(node2, start) {\n let between = this.raw(node2, \"between\", \"beforeOpen\");\n this.builder(start + between + \"{\", node2, \"start\");\n let after;\n if (node2.nodes && node2.nodes.length) {\n this.body(node2);\n after = this.raw(node2, \"after\");\n } else {\n after = this.raw(node2, \"after\", \"emptyBody\");\n }\n if (after) this.builder(after);\n this.builder(\"}\", node2, \"end\");\n }\n body(node2) {\n let last = node2.nodes.length - 1;\n while (last > 0) {\n if (node2.nodes[last].type !== \"comment\") break;\n last -= 1;\n }\n let semicolon = this.raw(node2, \"semicolon\");\n for (let i2 = 0; i2 < node2.nodes.length; i2++) {\n let child = node2.nodes[i2];\n let before = this.raw(child, \"before\");\n if (before) this.builder(before);\n this.stringify(child, last !== i2 || semicolon);\n }\n }\n comment(node2) {\n let left = this.raw(node2, \"left\", \"commentLeft\");\n let right = this.raw(node2, \"right\", \"commentRight\");\n this.builder(\"/*\" + left + node2.text + right + \"*/\", node2);\n }\n decl(node2, semicolon) {\n let between = this.raw(node2, \"between\", \"colon\");\n let string = node2.prop + between + this.rawValue(node2, \"value\");\n if (node2.important) {\n string += node2.raws.important || \" !important\";\n }\n if (semicolon) string += \";\";\n this.builder(string, node2);\n }\n document(node2) {\n this.body(node2);\n }\n raw(node2, own, detect) {\n let value;\n if (!detect) detect = own;\n if (own) {\n value = node2.raws[own];\n if (typeof value !== \"undefined\") return value;\n }\n let parent = node2.parent;\n if (detect === \"before\") {\n if (!parent || parent.type === \"root\" && parent.first === node2) {\n return \"\";\n }\n if (parent && parent.type === \"document\") {\n return \"\";\n }\n }\n if (!parent) return DEFAULT_RAW[detect];\n let root2 = node2.root();\n if (!root2.rawCache) root2.rawCache = {};\n if (typeof root2.rawCache[detect] !== \"undefined\") {\n return root2.rawCache[detect];\n }\n if (detect === \"before\" || detect === \"after\") {\n return this.beforeAfter(node2, detect);\n } else {\n let method = \"raw\" + capitalize(detect);\n if (this[method]) {\n value = this[method](root2, node2);\n } else {\n root2.walk((i2) => {\n value = i2.raws[own];\n if (typeof value !== \"undefined\") return false;\n });\n }\n }\n if (typeof value === \"undefined\") value = DEFAULT_RAW[detect];\n root2.rawCache[detect] = value;\n return value;\n }\n rawBeforeClose(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length > 0) {\n if (typeof i2.raws.after !== \"undefined\") {\n value = i2.raws.after;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawBeforeComment(root2, node2) {\n let value;\n root2.walkComments((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeDecl\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeDecl(root2, node2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n });\n if (typeof value === \"undefined\") {\n value = this.raw(node2, null, \"beforeRule\");\n } else if (value) {\n value = value.replace(/\\S/g, \"\");\n }\n return value;\n }\n rawBeforeOpen(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.type !== \"decl\") {\n value = i2.raws.between;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawBeforeRule(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && (i2.parent !== root2 || root2.first !== i2)) {\n if (typeof i2.raws.before !== \"undefined\") {\n value = i2.raws.before;\n if (value.includes(\"\\n\")) {\n value = value.replace(/[^\\n]+$/, \"\");\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/\\S/g, \"\");\n return value;\n }\n rawColon(root2) {\n let value;\n root2.walkDecls((i2) => {\n if (typeof i2.raws.between !== \"undefined\") {\n value = i2.raws.between.replace(/[^\\s:]/g, \"\");\n return false;\n }\n });\n return value;\n }\n rawEmptyBody(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length === 0) {\n value = i2.raws.after;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawIndent(root2) {\n if (root2.raws.indent) return root2.raws.indent;\n let value;\n root2.walk((i2) => {\n let p = i2.parent;\n if (p && p !== root2 && p.parent && p.parent === root2) {\n if (typeof i2.raws.before !== \"undefined\") {\n let parts = i2.raws.before.split(\"\\n\");\n value = parts[parts.length - 1];\n value = value.replace(/\\S/g, \"\");\n return false;\n }\n }\n });\n return value;\n }\n rawSemicolon(root2) {\n let value;\n root2.walk((i2) => {\n if (i2.nodes && i2.nodes.length && i2.last.type === \"decl\") {\n value = i2.raws.semicolon;\n if (typeof value !== \"undefined\") return false;\n }\n });\n return value;\n }\n rawValue(node2, prop) {\n let value = node2[prop];\n let raw = node2.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n }\n return value;\n }\n root(node2) {\n this.body(node2);\n if (node2.raws.after) this.builder(node2.raws.after);\n }\n rule(node2) {\n this.block(node2, this.rawValue(node2, \"selector\"));\n if (node2.raws.ownSemicolon) {\n this.builder(node2.raws.ownSemicolon, node2, \"end\");\n }\n }\n stringify(node2, semicolon) {\n if (!this[node2.type]) {\n throw new Error(\n \"Unknown AST node type \" + node2.type + \". Maybe you need to change PostCSS stringifier.\"\n );\n }\n this[node2.type](node2, semicolon);\n }\n }\n stringifier = Stringifier;\n Stringifier.default = Stringifier;\n return stringifier;\n}\nvar stringify_1;\nvar hasRequiredStringify;\nfunction requireStringify() {\n if (hasRequiredStringify) return stringify_1;\n hasRequiredStringify = 1;\n let Stringifier = requireStringifier();\n function stringify(node2, builder) {\n let str = new Stringifier(builder);\n str.stringify(node2);\n }\n stringify_1 = stringify;\n stringify.default = stringify;\n return stringify_1;\n}\nvar symbols = {};\nvar hasRequiredSymbols;\nfunction requireSymbols() {\n if (hasRequiredSymbols) return symbols;\n hasRequiredSymbols = 1;\n symbols.isClean = Symbol(\"isClean\");\n symbols.my = Symbol(\"my\");\n return symbols;\n}\nvar node;\nvar hasRequiredNode;\nfunction requireNode() {\n if (hasRequiredNode) return node;\n hasRequiredNode = 1;\n let CssSyntaxError = requireCssSyntaxError();\n let Stringifier = requireStringifier();\n let stringify = requireStringify();\n let { isClean, my } = requireSymbols();\n function cloneNode(obj, parent) {\n let cloned = new obj.constructor();\n for (let i2 in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i2)) {\n continue;\n }\n if (i2 === \"proxyCache\") continue;\n let value = obj[i2];\n let type = typeof value;\n if (i2 === \"parent\" && type === \"object\") {\n if (parent) cloned[i2] = parent;\n } else if (i2 === \"source\") {\n cloned[i2] = value;\n } else if (Array.isArray(value)) {\n cloned[i2] = value.map((j) => cloneNode(j, cloned));\n } else {\n if (type === \"object\" && value !== null) value = cloneNode(value);\n cloned[i2] = value;\n }\n }\n return cloned;\n }\n function sourceOffset(inputCSS, position) {\n if (position && typeof position.offset !== \"undefined\") {\n return position.offset;\n }\n let column = 1;\n let line = 1;\n let offset = 0;\n for (let i2 = 0; i2 < inputCSS.length; i2++) {\n if (line === position.line && column === position.column) {\n offset = i2;\n break;\n }\n if (inputCSS[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return offset;\n }\n class Node2 {\n constructor(defaults = {}) {\n this.raws = {};\n this[isClean] = false;\n this[my] = true;\n for (let name in defaults) {\n if (name === \"nodes\") {\n this.nodes = [];\n for (let node2 of defaults[name]) {\n if (typeof node2.clone === \"function\") {\n this.append(node2.clone());\n } else {\n this.append(node2);\n }\n }\n } else {\n this[name] = defaults[name];\n }\n }\n }\n addToError(error) {\n error.postcssNode = this;\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s2 = this.source;\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s2.input.from}:${s2.start.line}:${s2.start.column}$&`\n );\n }\n return error;\n }\n after(add) {\n this.parent.insertAfter(this, add);\n return this;\n }\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name];\n }\n return this;\n }\n before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n }\n clone(overrides = {}) {\n let cloned = cloneNode(this);\n for (let name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n }\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts);\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n );\n }\n return new CssSyntaxError(message);\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"prop\" || prop === \"value\" || prop === \"name\" || prop === \"params\" || prop === \"important\" || /* c8 ignore next */\n prop === \"text\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true;\n }\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false;\n let next = this;\n while (next = next.parent) {\n next[isClean] = false;\n }\n }\n }\n next() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 + 1];\n }\n positionBy(opts) {\n let pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n );\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) pos = this.positionInside(index2);\n }\n return pos;\n }\n positionInside(index2) {\n let column = this.source.start.column;\n let line = this.source.start.line;\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let offset = sourceOffset(inputString, this.source.start);\n let end = offset + index2;\n for (let i2 = offset; i2 < end; i2++) {\n if (inputString[i2] === \"\\n\") {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n return { column, line };\n }\n prev() {\n if (!this.parent) return void 0;\n let index2 = this.parent.index(this);\n return this.parent.nodes[index2 - 1];\n }\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n };\n let end = this.source.end ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n } : {\n column: start.column + 1,\n line: start.line\n };\n if (opts.word) {\n let inputString = \"document\" in this.source.input ? this.source.input.document : this.source.input.css;\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n );\n let index2 = stringRepresentation.indexOf(opts.word);\n if (index2 !== -1) {\n start = this.positionInside(index2);\n end = this.positionInside(\n index2 + opts.word.length\n );\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n };\n } else if (opts.index) {\n start = this.positionInside(opts.index);\n }\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n };\n } else if (typeof opts.endIndex === \"number\") {\n end = this.positionInside(opts.endIndex);\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1);\n }\n }\n if (end.line < start.line || end.line === start.line && end.column <= start.column) {\n end = { column: start.column + 1, line: start.line };\n }\n return { end, start };\n }\n raw(prop, defaultType) {\n let str = new Stringifier();\n return str.raw(this, prop, defaultType);\n }\n remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = void 0;\n return this;\n }\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this;\n let foundSelf = false;\n for (let node2 of nodes) {\n if (node2 === this) {\n foundSelf = true;\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node2);\n bookmark = node2;\n } else {\n this.parent.insertBefore(bookmark, node2);\n }\n }\n if (!foundSelf) {\n this.remove();\n }\n }\n return this;\n }\n root() {\n let result2 = this;\n while (result2.parent && result2.parent.type !== \"document\") {\n result2 = result2.parent;\n }\n return result2;\n }\n toJSON(_, inputs) {\n let fixed = {};\n let emitInputs = inputs == null;\n inputs = inputs || /* @__PURE__ */ new Map();\n let inputsNextIndex = 0;\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n continue;\n }\n if (name === \"parent\" || name === \"proxyCache\") continue;\n let value = this[name];\n if (Array.isArray(value)) {\n fixed[name] = value.map((i2) => {\n if (typeof i2 === \"object\" && i2.toJSON) {\n return i2.toJSON(null, inputs);\n } else {\n return i2;\n }\n });\n } else if (typeof value === \"object\" && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs);\n } else if (name === \"source\") {\n let inputId = inputs.get(value.input);\n if (inputId == null) {\n inputId = inputsNextIndex;\n inputs.set(value.input, inputsNextIndex);\n inputsNextIndex++;\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n };\n } else {\n fixed[name] = value;\n }\n }\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map((input2) => input2.toJSON());\n }\n return fixed;\n }\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor());\n }\n return this.proxyCache;\n }\n toString(stringifier2 = stringify) {\n if (stringifier2.stringify) stringifier2 = stringifier2.stringify;\n let result2 = \"\";\n stringifier2(this, (i2) => {\n result2 += i2;\n });\n return result2;\n }\n warn(result2, text, opts) {\n let data = { node: this };\n for (let i2 in opts) data[i2] = opts[i2];\n return result2.warn(text, data);\n }\n get proxyOf() {\n return this;\n }\n }\n node = Node2;\n Node2.default = Node2;\n return node;\n}\nvar comment;\nvar hasRequiredComment;\nfunction requireComment() {\n if (hasRequiredComment) return comment;\n hasRequiredComment = 1;\n let Node2 = requireNode();\n class Comment extends Node2 {\n constructor(defaults) {\n super(defaults);\n this.type = \"comment\";\n }\n }\n comment = Comment;\n Comment.default = Comment;\n return comment;\n}\nvar declaration;\nvar hasRequiredDeclaration;\nfunction requireDeclaration() {\n if (hasRequiredDeclaration) return declaration;\n hasRequiredDeclaration = 1;\n let Node2 = requireNode();\n class Declaration extends Node2 {\n constructor(defaults) {\n if (defaults && typeof defaults.value !== \"undefined\" && typeof defaults.value !== \"string\") {\n defaults = { ...defaults, value: String(defaults.value) };\n }\n super(defaults);\n this.type = \"decl\";\n }\n get variable() {\n return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n }\n }\n declaration = Declaration;\n Declaration.default = Declaration;\n return declaration;\n}\nvar container;\nvar hasRequiredContainer;\nfunction requireContainer() {\n if (hasRequiredContainer) return container;\n hasRequiredContainer = 1;\n let Comment = requireComment();\n let Declaration = requireDeclaration();\n let Node2 = requireNode();\n let { isClean, my } = requireSymbols();\n let AtRule, parse, Root, Rule;\n function cleanSource(nodes) {\n return nodes.map((i2) => {\n if (i2.nodes) i2.nodes = cleanSource(i2.nodes);\n delete i2.source;\n return i2;\n });\n }\n function markTreeDirty(node2) {\n node2[isClean] = false;\n if (node2.proxyOf.nodes) {\n for (let i2 of node2.proxyOf.nodes) {\n markTreeDirty(i2);\n }\n }\n }\n class Container extends Node2 {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last);\n for (let node2 of nodes) this.proxyOf.nodes.push(node2);\n }\n this.markDirty();\n return this;\n }\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween);\n if (this.nodes) {\n for (let node2 of this.nodes) node2.cleanRaws(keepBetween);\n }\n }\n each(callback) {\n if (!this.proxyOf.nodes) return void 0;\n let iterator = this.getIterator();\n let index2, result2;\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index2 = this.indexes[iterator];\n result2 = callback(this.proxyOf.nodes[index2], index2);\n if (result2 === false) break;\n this.indexes[iterator] += 1;\n }\n delete this.indexes[iterator];\n return result2;\n }\n every(condition) {\n return this.nodes.every(condition);\n }\n getIterator() {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n let iterator = this.lastEach;\n this.indexes[iterator] = 0;\n return iterator;\n }\n getProxyProcessor() {\n return {\n get(node2, prop) {\n if (prop === \"proxyOf\") {\n return node2;\n } else if (!node2[prop]) {\n return node2[prop];\n } else if (prop === \"each\" || typeof prop === \"string\" && prop.startsWith(\"walk\")) {\n return (...args) => {\n return node2[prop](\n ...args.map((i2) => {\n if (typeof i2 === \"function\") {\n return (child, index2) => i2(child.toProxy(), index2);\n } else {\n return i2;\n }\n })\n );\n };\n } else if (prop === \"every\" || prop === \"some\") {\n return (cb) => {\n return node2[prop](\n (child, ...other) => cb(child.toProxy(), ...other)\n );\n };\n } else if (prop === \"root\") {\n return () => node2.root().toProxy();\n } else if (prop === \"nodes\") {\n return node2.nodes.map((i2) => i2.toProxy());\n } else if (prop === \"first\" || prop === \"last\") {\n return node2[prop].toProxy();\n } else {\n return node2[prop];\n }\n },\n set(node2, prop, value) {\n if (node2[prop] === value) return true;\n node2[prop] = value;\n if (prop === \"name\" || prop === \"params\" || prop === \"selector\") {\n node2.markDirty();\n }\n return true;\n }\n };\n }\n index(child) {\n if (typeof child === \"number\") return child;\n if (child.proxyOf) child = child.proxyOf;\n return this.proxyOf.nodes.indexOf(child);\n }\n insertAfter(exist, add) {\n let existIndex = this.index(exist);\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex < index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n insertBefore(exist, add) {\n let existIndex = this.index(exist);\n let type = existIndex === 0 ? \"prepend\" : false;\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse();\n existIndex = this.index(exist);\n for (let node2 of nodes) this.proxyOf.nodes.splice(existIndex, 0, node2);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (existIndex <= index2) {\n this.indexes[id] = index2 + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n normalize(nodes, sample) {\n if (typeof nodes === \"string\") {\n nodes = cleanSource(parse(nodes).nodes);\n } else if (typeof nodes === \"undefined\") {\n nodes = [];\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type === \"root\" && this.type !== \"document\") {\n nodes = nodes.nodes.slice(0);\n for (let i2 of nodes) {\n if (i2.parent) i2.parent.removeChild(i2, \"ignore\");\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === \"undefined\") {\n throw new Error(\"Value field is missed in node creation\");\n } else if (typeof nodes.value !== \"string\") {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration(nodes)];\n } else if (nodes.selector || nodes.selectors) {\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment(nodes)];\n } else {\n throw new Error(\"Unknown node type in node creation\");\n }\n let processed = nodes.map((i2) => {\n if (!i2[my]) Container.rebuild(i2);\n i2 = i2.proxyOf;\n if (i2.parent) i2.parent.removeChild(i2);\n if (i2[isClean]) markTreeDirty(i2);\n if (!i2.raws) i2.raws = {};\n if (typeof i2.raws.before === \"undefined\") {\n if (sample && typeof sample.raws.before !== \"undefined\") {\n i2.raws.before = sample.raws.before.replace(/\\S/g, \"\");\n }\n }\n i2.parent = this.proxyOf;\n return i2;\n });\n return processed;\n }\n prepend(...children) {\n children = children.reverse();\n for (let child of children) {\n let nodes = this.normalize(child, this.first, \"prepend\").reverse();\n for (let node2 of nodes) this.proxyOf.nodes.unshift(node2);\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n this.markDirty();\n return this;\n }\n push(child) {\n child.parent = this;\n this.proxyOf.nodes.push(child);\n return this;\n }\n removeAll() {\n for (let node2 of this.proxyOf.nodes) node2.parent = void 0;\n this.proxyOf.nodes = [];\n this.markDirty();\n return this;\n }\n removeChild(child) {\n child = this.index(child);\n this.proxyOf.nodes[child].parent = void 0;\n this.proxyOf.nodes.splice(child, 1);\n let index2;\n for (let id in this.indexes) {\n index2 = this.indexes[id];\n if (index2 >= child) {\n this.indexes[id] = index2 - 1;\n }\n }\n this.markDirty();\n return this;\n }\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n this.walkDecls((decl) => {\n if (opts.props && !opts.props.includes(decl.prop)) return;\n if (opts.fast && !decl.value.includes(opts.fast)) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n this.markDirty();\n return this;\n }\n some(condition) {\n return this.nodes.some(condition);\n }\n walk(callback) {\n return this.each((child, i2) => {\n let result2;\n try {\n result2 = callback(child, i2);\n } catch (e2) {\n throw child.addToError(e2);\n }\n if (result2 !== false && child.walk) {\n result2 = child.walk(callback);\n }\n return result2;\n });\n }\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk((child, i2) => {\n if (child.type === \"atrule\") {\n return callback(child, i2);\n }\n });\n }\n if (name instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && name.test(child.name)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"atrule\" && child.name === name) {\n return callback(child, i2);\n }\n });\n }\n walkComments(callback) {\n return this.walk((child, i2) => {\n if (child.type === \"comment\") {\n return callback(child, i2);\n }\n });\n }\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk((child, i2) => {\n if (child.type === \"decl\") {\n return callback(child, i2);\n }\n });\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && prop.test(child.prop)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"decl\" && child.prop === prop) {\n return callback(child, i2);\n }\n });\n }\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk((child, i2) => {\n if (child.type === \"rule\") {\n return callback(child, i2);\n }\n });\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && selector.test(child.selector)) {\n return callback(child, i2);\n }\n });\n }\n return this.walk((child, i2) => {\n if (child.type === \"rule\" && child.selector === selector) {\n return callback(child, i2);\n }\n });\n }\n get first() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[0];\n }\n get last() {\n if (!this.proxyOf.nodes) return void 0;\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n }\n }\n Container.registerParse = (dependant) => {\n parse = dependant;\n };\n Container.registerRule = (dependant) => {\n Rule = dependant;\n };\n Container.registerAtRule = (dependant) => {\n AtRule = dependant;\n };\n Container.registerRoot = (dependant) => {\n Root = dependant;\n };\n container = Container;\n Container.default = Container;\n Container.rebuild = (node2) => {\n if (node2.type === \"atrule\") {\n Object.setPrototypeOf(node2, AtRule.prototype);\n } else if (node2.type === \"rule\") {\n Object.setPrototypeOf(node2, Rule.prototype);\n } else if (node2.type === \"decl\") {\n Object.setPrototypeOf(node2, Declaration.prototype);\n } else if (node2.type === \"comment\") {\n Object.setPrototypeOf(node2, Comment.prototype);\n } else if (node2.type === \"root\") {\n Object.setPrototypeOf(node2, Root.prototype);\n }\n node2[my] = true;\n if (node2.nodes) {\n node2.nodes.forEach((child) => {\n Container.rebuild(child);\n });\n }\n };\n return container;\n}\nvar atRule;\nvar hasRequiredAtRule;\nfunction requireAtRule() {\n if (hasRequiredAtRule) return atRule;\n hasRequiredAtRule = 1;\n let Container = requireContainer();\n class AtRule extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"atrule\";\n }\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.append(...children);\n }\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = [];\n return super.prepend(...children);\n }\n }\n atRule = AtRule;\n AtRule.default = AtRule;\n Container.registerAtRule(AtRule);\n return atRule;\n}\nvar document$1;\nvar hasRequiredDocument;\nfunction requireDocument() {\n if (hasRequiredDocument) return document$1;\n hasRequiredDocument = 1;\n let Container = requireContainer();\n let LazyResult, Processor;\n class Document2 extends Container {\n constructor(defaults) {\n super({ type: \"document\", ...defaults });\n if (!this.nodes) {\n this.nodes = [];\n }\n }\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n }\n Document2.registerLazyResult = (dependant) => {\n LazyResult = dependant;\n };\n Document2.registerProcessor = (dependant) => {\n Processor = dependant;\n };\n document$1 = Document2;\n Document2.default = Document2;\n return document$1;\n}\nvar nonSecure;\nvar hasRequiredNonSecure;\nfunction requireNonSecure() {\n if (hasRequiredNonSecure) return nonSecure;\n hasRequiredNonSecure = 1;\n let urlAlphabet = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\n let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = \"\";\n let i2 = size | 0;\n while (i2--) {\n id += alphabet[Math.random() * alphabet.length | 0];\n }\n return id;\n };\n };\n let nanoid = (size = 21) => {\n let id = \"\";\n let i2 = size | 0;\n while (i2--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n };\n nonSecure = { nanoid, customAlphabet };\n return nonSecure;\n}\nvar previousMap;\nvar hasRequiredPreviousMap;\nfunction requirePreviousMap() {\n if (hasRequiredPreviousMap) return previousMap;\n hasRequiredPreviousMap = 1;\n let { existsSync, readFileSync } = require$$2;\n let { dirname, join } = require$$2;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n function fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, \"base64\").toString();\n } else {\n return window.atob(str);\n }\n }\n class PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return;\n this.loadAnnotation(css);\n this.inline = this.startWith(this.annotation, \"data:\");\n let prev = opts.map ? opts.map.prev : void 0;\n let text = this.loadMap(opts.from, prev);\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from;\n }\n if (this.mapFile) this.root = dirname(this.mapFile);\n if (text) this.text = text;\n }\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text);\n }\n return this.consumerCache;\n }\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n let baseUri = /^data:application\\/json;base64,/;\n let charsetUri = /^data:application\\/json;charset=utf-?8,/;\n let uri = /^data:application\\/json,/;\n let uriMatch = text.match(charsetUri) || text.match(uri);\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length));\n }\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri);\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length));\n }\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error(\"Unsupported source map encoding \" + encoding);\n }\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n }\n isMap(map) {\n if (typeof map !== \"object\") return false;\n return typeof map.mappings === \"string\" || typeof map._mappings === \"string\" || Array.isArray(map.sections);\n }\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g);\n if (!comments) return;\n let start = css.lastIndexOf(comments.pop());\n let end = css.indexOf(\"*/\", start);\n if (start > -1 && end > -1) {\n this.annotation = this.getAnnotationURL(css.substring(start, end));\n }\n }\n loadFile(path) {\n this.root = dirname(path);\n if (existsSync(path)) {\n this.mapFile = path;\n return readFileSync(path, \"utf-8\").toString().trim();\n }\n }\n loadMap(file, prev) {\n if (prev === false) return false;\n if (prev) {\n if (typeof prev === \"string\") {\n return prev;\n } else if (typeof prev === \"function\") {\n let prevPath = prev(file);\n if (prevPath) {\n let map = this.loadFile(prevPath);\n if (!map) {\n throw new Error(\n \"Unable to load previous source map: \" + prevPath.toString()\n );\n }\n return map;\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString();\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error(\n \"Unsupported previous source map format: \" + prev.toString()\n );\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n let map = this.annotation;\n if (file) map = join(dirname(file), map);\n return this.loadFile(map);\n }\n }\n startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n }\n withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n }\n }\n previousMap = PreviousMap;\n PreviousMap.default = PreviousMap;\n return previousMap;\n}\nvar input;\nvar hasRequiredInput;\nfunction requireInput() {\n if (hasRequiredInput) return input;\n hasRequiredInput = 1;\n let { nanoid } = /* @__PURE__ */ requireNonSecure();\n let { isAbsolute, resolve } = require$$2;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n let { fileURLToPath, pathToFileURL } = require$$2;\n let CssSyntaxError = requireCssSyntaxError();\n let PreviousMap = requirePreviousMap();\n let terminalHighlight = require$$2;\n let fromOffsetCache = Symbol(\"fromOffsetCache\");\n let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n let pathAvailable = Boolean(resolve && isAbsolute);\n class Input {\n constructor(css, opts = {}) {\n if (css === null || typeof css === \"undefined\" || typeof css === \"object\" && !css.toString) {\n throw new Error(`PostCSS received ${css} instead of CSS string`);\n }\n this.css = css.toString();\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\") {\n this.hasBOM = true;\n this.css = this.css.slice(1);\n } else {\n this.hasBOM = false;\n }\n this.document = this.css;\n if (opts.document) this.document = opts.document.toString();\n if (opts.from) {\n if (!pathAvailable || /^\\w+:\\/\\//.test(opts.from) || isAbsolute(opts.from)) {\n this.file = opts.from;\n } else {\n this.file = resolve(opts.from);\n }\n }\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts);\n if (map.text) {\n this.map = map;\n let file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n }\n if (!this.file) {\n this.id = \"<input css \" + nanoid(6) + \">\";\n }\n if (this.map) this.map.file = this.from;\n }\n error(message, line, column, opts = {}) {\n let endColumn, endLine, result2;\n if (line && typeof line === \"object\") {\n let start = line;\n let end = column;\n if (typeof start.offset === \"number\") {\n let pos = this.fromOffset(start.offset);\n line = pos.line;\n column = pos.col;\n } else {\n line = start.line;\n column = start.column;\n }\n if (typeof end.offset === \"number\") {\n let pos = this.fromOffset(end.offset);\n endLine = pos.line;\n endColumn = pos.col;\n } else {\n endLine = end.line;\n endColumn = end.column;\n }\n } else if (!column) {\n let pos = this.fromOffset(line);\n line = pos.line;\n column = pos.col;\n }\n let origin = this.origin(line, column, endLine, endColumn);\n if (origin) {\n result2 = new CssSyntaxError(\n message,\n origin.endLine === void 0 ? origin.line : { column: origin.column, line: origin.line },\n origin.endLine === void 0 ? origin.column : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n );\n } else {\n result2 = new CssSyntaxError(\n message,\n endLine === void 0 ? line : { column, line },\n endLine === void 0 ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n );\n }\n result2.input = { column, endColumn, endLine, line, source: this.css };\n if (this.file) {\n if (pathToFileURL) {\n result2.input.url = pathToFileURL(this.file).toString();\n }\n result2.input.file = this.file;\n }\n return result2;\n }\n fromOffset(offset) {\n let lastLine, lineToIndex;\n if (!this[fromOffsetCache]) {\n let lines = this.css.split(\"\\n\");\n lineToIndex = new Array(lines.length);\n let prevIndex = 0;\n for (let i2 = 0, l2 = lines.length; i2 < l2; i2++) {\n lineToIndex[i2] = prevIndex;\n prevIndex += lines[i2].length + 1;\n }\n this[fromOffsetCache] = lineToIndex;\n } else {\n lineToIndex = this[fromOffsetCache];\n }\n lastLine = lineToIndex[lineToIndex.length - 1];\n let min = 0;\n if (offset >= lastLine) {\n min = lineToIndex.length - 1;\n } else {\n let max = lineToIndex.length - 2;\n let mid;\n while (min < max) {\n mid = min + (max - min >> 1);\n if (offset < lineToIndex[mid]) {\n max = mid - 1;\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1;\n } else {\n min = mid;\n break;\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n };\n }\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || \".\", file);\n }\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false;\n let consumer = this.map.consumer();\n let from = consumer.originalPositionFor({ column, line });\n if (!from.source) return false;\n let to;\n if (typeof endLine === \"number\") {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine });\n }\n let fromUrl;\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source);\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n );\n }\n let result2 = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n };\n if (fromUrl.protocol === \"file:\") {\n if (fileURLToPath) {\n result2.file = fileURLToPath(fromUrl);\n } else {\n throw new Error(`file: protocol is not available in this PostCSS build`);\n }\n }\n let source = consumer.sourceContentFor(from.source);\n if (source) result2.source = source;\n return result2;\n }\n toJSON() {\n let json = {};\n for (let name of [\"hasBOM\", \"css\", \"file\", \"id\"]) {\n if (this[name] != null) {\n json[name] = this[name];\n }\n }\n if (this.map) {\n json.map = { ...this.map };\n if (json.map.consumerCache) {\n json.map.consumerCache = void 0;\n }\n }\n return json;\n }\n get from() {\n return this.file || this.id;\n }\n }\n input = Input;\n Input.default = Input;\n if (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input);\n }\n return input;\n}\nvar root;\nvar hasRequiredRoot;\nfunction requireRoot() {\n if (hasRequiredRoot) return root;\n hasRequiredRoot = 1;\n let Container = requireContainer();\n let LazyResult, Processor;\n class Root extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"root\";\n if (!this.nodes) this.nodes = [];\n }\n normalize(child, sample, type) {\n let nodes = super.normalize(child);\n if (sample) {\n if (type === \"prepend\") {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (let node2 of nodes) {\n node2.raws.before = sample.raws.before;\n }\n }\n }\n return nodes;\n }\n removeChild(child, ignore) {\n let index2 = this.index(child);\n if (!ignore && index2 === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index2].raws.before;\n }\n return super.removeChild(child);\n }\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n }\n Root.registerLazyResult = (dependant) => {\n LazyResult = dependant;\n };\n Root.registerProcessor = (dependant) => {\n Processor = dependant;\n };\n root = Root;\n Root.default = Root;\n Container.registerRoot(Root);\n return root;\n}\nvar list_1;\nvar hasRequiredList;\nfunction requireList() {\n if (hasRequiredList) return list_1;\n hasRequiredList = 1;\n let list = {\n comma(string) {\n return list.split(string, [\",\"], true);\n },\n space(string) {\n let spaces = [\" \", \"\\n\", \"\t\"];\n return list.split(string, spaces);\n },\n split(string, separators, last) {\n let array = [];\n let current = \"\";\n let split = false;\n let func = 0;\n let inQuote = false;\n let prevQuote = \"\";\n let escape = false;\n for (let letter of string) {\n if (escape) {\n escape = false;\n } else if (letter === \"\\\\\") {\n escape = true;\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true;\n prevQuote = letter;\n } else if (letter === \"(\") {\n func += 1;\n } else if (letter === \")\") {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.includes(letter)) split = true;\n }\n if (split) {\n if (current !== \"\") array.push(current.trim());\n current = \"\";\n split = false;\n } else {\n current += letter;\n }\n }\n if (last || current !== \"\") array.push(current.trim());\n return array;\n }\n };\n list_1 = list;\n list.default = list;\n return list_1;\n}\nvar rule;\nvar hasRequiredRule;\nfunction requireRule() {\n if (hasRequiredRule) return rule;\n hasRequiredRule = 1;\n let Container = requireContainer();\n let list = requireList();\n class Rule extends Container {\n constructor(defaults) {\n super(defaults);\n this.type = \"rule\";\n if (!this.nodes) this.nodes = [];\n }\n get selectors() {\n return list.comma(this.selector);\n }\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null;\n let sep = match ? match[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n this.selector = values.join(sep);\n }\n }\n rule = Rule;\n Rule.default = Rule;\n Container.registerRule(Rule);\n return rule;\n}\nvar fromJSON_1;\nvar hasRequiredFromJSON;\nfunction requireFromJSON() {\n if (hasRequiredFromJSON) return fromJSON_1;\n hasRequiredFromJSON = 1;\n let AtRule = requireAtRule();\n let Comment = requireComment();\n let Declaration = requireDeclaration();\n let Input = requireInput();\n let PreviousMap = requirePreviousMap();\n let Root = requireRoot();\n let Rule = requireRule();\n function fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map((n2) => fromJSON(n2));\n let { inputs: ownInputs, ...defaults } = json;\n if (ownInputs) {\n inputs = [];\n for (let input2 of ownInputs) {\n let inputHydrated = { ...input2, __proto__: Input.prototype };\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n };\n }\n inputs.push(inputHydrated);\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map((n2) => fromJSON(n2, inputs));\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source;\n defaults.source = source;\n if (inputId != null) {\n defaults.source.input = inputs[inputId];\n }\n }\n if (defaults.type === \"root\") {\n return new Root(defaults);\n } else if (defaults.type === \"decl\") {\n return new Declaration(defaults);\n } else if (defaults.type === \"rule\") {\n return new Rule(defaults);\n } else if (defaults.type === \"comment\") {\n return new Comment(defaults);\n } else if (defaults.type === \"atrule\") {\n return new AtRule(defaults);\n } else {\n throw new Error(\"Unknown node type: \" + json.type);\n }\n }\n fromJSON_1 = fromJSON;\n fromJSON.default = fromJSON;\n return fromJSON_1;\n}\nvar mapGenerator;\nvar hasRequiredMapGenerator;\nfunction requireMapGenerator() {\n if (hasRequiredMapGenerator) return mapGenerator;\n hasRequiredMapGenerator = 1;\n let { dirname, relative, resolve, sep } = require$$2;\n let { SourceMapConsumer, SourceMapGenerator } = require$$2;\n let { pathToFileURL } = require$$2;\n let Input = requireInput();\n let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator);\n let pathAvailable = Boolean(dirname && resolve && relative && sep);\n class MapGenerator {\n constructor(stringify, root2, opts, cssString) {\n this.stringify = stringify;\n this.mapOpts = opts.map || {};\n this.root = root2;\n this.opts = opts;\n this.css = cssString;\n this.originalCSS = cssString;\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute;\n this.memoizedFileURLs = /* @__PURE__ */ new Map();\n this.memoizedPaths = /* @__PURE__ */ new Map();\n this.memoizedURLs = /* @__PURE__ */ new Map();\n }\n addAnnotation() {\n let content;\n if (this.isInline()) {\n content = \"data:application/json;base64,\" + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === \"string\") {\n content = this.mapOpts.annotation;\n } else if (typeof this.mapOpts.annotation === \"function\") {\n content = this.mapOpts.annotation(this.opts.to, this.root);\n } else {\n content = this.outputFile() + \".map\";\n }\n let eol = \"\\n\";\n if (this.css.includes(\"\\r\\n\")) eol = \"\\r\\n\";\n this.css += eol + \"/*# sourceMappingURL=\" + content + \" */\";\n }\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file));\n let root2 = prev.root || dirname(prev.file);\n let map;\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = null;\n }\n } else {\n map = prev.consumer();\n }\n this.map.applySourceMap(map, from, this.toUrl(this.path(root2)));\n }\n }\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n if (this.root) {\n let node2;\n for (let i2 = this.root.nodes.length - 1; i2 >= 0; i2--) {\n node2 = this.root.nodes[i2];\n if (node2.type !== \"comment\") continue;\n if (node2.text.startsWith(\"# sourceMappingURL=\")) {\n this.root.removeChild(i2);\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\");\n }\n }\n generate() {\n this.clearAnnotation();\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap();\n } else {\n let result2 = \"\";\n this.stringify(this.root, (i2) => {\n result2 += i2;\n });\n return [result2];\n }\n }\n generateMap() {\n if (this.root) {\n this.generateString();\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer();\n prev.file = this.outputFile();\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n });\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n });\n }\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.root && this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n }\n generateString() {\n this.css = \"\";\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n });\n let line = 1;\n let column = 1;\n let noSource = \"<no source>\";\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: \"\"\n };\n let last, lines;\n this.stringify(this.root, (str, node2, type) => {\n this.css += str;\n if (node2 && type !== \"end\") {\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n if (node2.source && node2.source.start) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.start.line;\n mapping.original.column = node2.source.start.column - 1;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n this.map.addMapping(mapping);\n }\n }\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf(\"\\n\");\n column = str.length - last;\n } else {\n column += str.length;\n }\n if (node2 && type !== \"start\") {\n let p = node2.parent || { raws: {} };\n let childless = node2.type === \"decl\" || node2.type === \"atrule\" && !node2.nodes;\n if (!childless || node2 !== p.last || p.raws.semicolon) {\n if (node2.source && node2.source.end) {\n mapping.source = this.sourcePath(node2);\n mapping.original.line = node2.source.end.line;\n mapping.original.column = node2.source.end.column - 1;\n mapping.generated.line = line;\n mapping.generated.column = column - 2;\n this.map.addMapping(mapping);\n } else {\n mapping.source = noSource;\n mapping.original.line = 1;\n mapping.original.column = 0;\n mapping.generated.line = line;\n mapping.generated.column = column - 1;\n this.map.addMapping(mapping);\n }\n }\n }\n });\n }\n isAnnotation() {\n if (this.isInline()) {\n return true;\n }\n if (typeof this.mapOpts.annotation !== \"undefined\") {\n return this.mapOpts.annotation;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.annotation);\n }\n return true;\n }\n isInline() {\n if (typeof this.mapOpts.inline !== \"undefined\") {\n return this.mapOpts.inline;\n }\n let annotation = this.mapOpts.annotation;\n if (typeof annotation !== \"undefined\" && annotation !== true) {\n return false;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.inline);\n }\n return true;\n }\n isMap() {\n if (typeof this.opts.map !== \"undefined\") {\n return !!this.opts.map;\n }\n return this.previous().length > 0;\n }\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== \"undefined\") {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some((i2) => i2.withContent());\n }\n return true;\n }\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to);\n } else if (this.opts.from) {\n return this.path(this.opts.from);\n } else {\n return \"to.css\";\n }\n }\n path(file) {\n if (this.mapOpts.absolute) return file;\n if (file.charCodeAt(0) === 60) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n let cached = this.memoizedPaths.get(file);\n if (cached) return cached;\n let from = this.opts.to ? dirname(this.opts.to) : \".\";\n if (typeof this.mapOpts.annotation === \"string\") {\n from = dirname(resolve(from, this.mapOpts.annotation));\n }\n let path = relative(from, file);\n this.memoizedPaths.set(file, path);\n return path;\n }\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = [];\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source && node2.source.input.map) {\n let map = node2.source.input.map;\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map);\n }\n }\n });\n } else {\n let input2 = new Input(this.originalCSS, this.opts);\n if (input2.map) this.previousMaps.push(input2.map);\n }\n }\n return this.previousMaps;\n }\n setSourcesContent() {\n let already = {};\n if (this.root) {\n this.root.walk((node2) => {\n if (node2.source) {\n let from = node2.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n let fromUrl = this.usesFileUrls ? this.toFileUrl(from) : this.toUrl(this.path(from));\n this.map.setSourceContent(fromUrl, node2.source.input.css);\n }\n }\n });\n } else if (this.css) {\n let from = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n this.map.setSourceContent(from, this.css);\n }\n }\n sourcePath(node2) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from);\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node2.source.input.from);\n } else {\n return this.toUrl(this.path(node2.source.input.from));\n }\n }\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString(\"base64\");\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n }\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path);\n if (cached) return cached;\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString();\n this.memoizedFileURLs.set(path, fileURL);\n return fileURL;\n } else {\n throw new Error(\n \"`map.absolute` option is not available in this PostCSS build\"\n );\n }\n }\n toUrl(path) {\n let cached = this.memoizedURLs.get(path);\n if (cached) return cached;\n if (sep === \"\\\\\") {\n path = path.replace(/\\\\/g, \"/\");\n }\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent);\n this.memoizedURLs.set(path, url);\n return url;\n }\n }\n mapGenerator = MapGenerator;\n return mapGenerator;\n}\nvar tokenize;\nvar hasRequiredTokenize;\nfunction requireTokenize() {\n if (hasRequiredTokenize) return tokenize;\n hasRequiredTokenize = 1;\n const SINGLE_QUOTE = \"'\".charCodeAt(0);\n const DOUBLE_QUOTE = '\"'.charCodeAt(0);\n const BACKSLASH = \"\\\\\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NEWLINE = \"\\n\".charCodeAt(0);\n const SPACE = \" \".charCodeAt(0);\n const FEED = \"\\f\".charCodeAt(0);\n const TAB = \"\t\".charCodeAt(0);\n const CR = \"\\r\".charCodeAt(0);\n const OPEN_SQUARE = \"[\".charCodeAt(0);\n const CLOSE_SQUARE = \"]\".charCodeAt(0);\n const OPEN_PARENTHESES = \"(\".charCodeAt(0);\n const CLOSE_PARENTHESES = \")\".charCodeAt(0);\n const OPEN_CURLY = \"{\".charCodeAt(0);\n const CLOSE_CURLY = \"}\".charCodeAt(0);\n const SEMICOLON = \";\".charCodeAt(0);\n const ASTERISK = \"*\".charCodeAt(0);\n const COLON = \":\".charCodeAt(0);\n const AT = \"@\".charCodeAt(0);\n const RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g;\n const RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g;\n const RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/;\n const RE_HEX_ESCAPE = /[\\da-f]/i;\n tokenize = function tokenizer(input2, options = {}) {\n let css = input2.css.valueOf();\n let ignore = options.ignoreErrors;\n let code, content, escape, next, quote;\n let currentToken, escaped, escapePos, n2, prev;\n let length = css.length;\n let pos = 0;\n let buffer = [];\n let returned = [];\n function position() {\n return pos;\n }\n function unclosed(what) {\n throw input2.error(\"Unclosed \" + what, pos);\n }\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n function nextToken(opts) {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;\n code = css.charCodeAt(pos);\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n currentToken = [\"space\", css.slice(pos, next)];\n pos = next - 1;\n break;\n }\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code);\n currentToken = [controlChar, controlChar, pos];\n break;\n }\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : \"\";\n n2 = css.charCodeAt(pos + 1);\n if (prev === \"url\" && n2 !== SINGLE_QUOTE && n2 !== DOUBLE_QUOTE && n2 !== SPACE && n2 !== NEWLINE && n2 !== TAB && n2 !== FEED && n2 !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(\")\", next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos;\n break;\n } else {\n unclosed(\"bracket\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"brackets\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n next = css.indexOf(\")\", pos + 1);\n content = css.slice(pos, next + 1);\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = [\"(\", \"(\", pos];\n } else {\n currentToken = [\"brackets\", content, pos, next];\n pos = next;\n }\n }\n break;\n }\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1;\n break;\n } else {\n unclosed(\"string\");\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n currentToken = [\"string\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case AT: {\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n currentToken = [\"at-word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n case BACKSLASH: {\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n pos = next;\n break;\n }\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf(\"*/\", pos + 2) + 1;\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length;\n } else {\n unclosed(\"comment\");\n }\n }\n currentToken = [\"comment\", css.slice(pos, next + 1), pos, next];\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n currentToken = [\"word\", css.slice(pos, next + 1), pos, next];\n buffer.push(currentToken);\n pos = next;\n }\n break;\n }\n }\n pos++;\n return currentToken;\n }\n function back(token) {\n returned.push(token);\n }\n return {\n back,\n endOfFile,\n nextToken,\n position\n };\n };\n return tokenize;\n}\nvar parser;\nvar hasRequiredParser;\nfunction requireParser() {\n if (hasRequiredParser) return parser;\n hasRequiredParser = 1;\n let AtRule = requireAtRule();\n let Comment = requireComment();\n let Declaration = requireDeclaration();\n let Root = requireRoot();\n let Rule = requireRule();\n let tokenizer = requireTokenize();\n const SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n };\n function findLastWithPosition(tokens) {\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n let token = tokens[i2];\n let pos = token[3] || token[2];\n if (pos) return pos;\n }\n }\n class Parser {\n constructor(input2) {\n this.input = input2;\n this.root = new Root();\n this.current = this.root;\n this.spaces = \"\";\n this.semicolon = false;\n this.createTokenizer();\n this.root.source = { input: input2, start: { column: 1, line: 1, offset: 0 } };\n }\n atrule(token) {\n let node2 = new AtRule();\n node2.name = token[1].slice(1);\n if (node2.name === \"\") {\n this.unnamedAtrule(node2, token);\n }\n this.init(node2, token[2]);\n let type;\n let prev;\n let shift;\n let last = false;\n let open = false;\n let params = [];\n let brackets = [];\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n type = token[0];\n if (type === \"(\" || type === \"[\") {\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (type === \"{\" && brackets.length > 0) {\n brackets.push(\"}\");\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n }\n if (brackets.length === 0) {\n if (type === \";\") {\n node2.source.end = this.getPosition(token[2]);\n node2.source.end.offset++;\n this.semicolon = true;\n break;\n } else if (type === \"{\") {\n open = true;\n break;\n } else if (type === \"}\") {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === \"space\") {\n prev = params[--shift];\n }\n if (prev) {\n node2.source.end = this.getPosition(prev[3] || prev[2]);\n node2.source.end.offset++;\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n } else {\n params.push(token);\n }\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n node2.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node2.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node2, \"params\", params);\n if (last) {\n token = params[params.length - 1];\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n this.spaces = node2.raws.between;\n node2.raws.between = \"\";\n }\n } else {\n node2.raws.afterName = \"\";\n node2.params = \"\";\n }\n if (open) {\n node2.nodes = [];\n this.current = node2;\n }\n }\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let founded = 0;\n let token;\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== \"space\") {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error(\n \"Missed semicolon\",\n token[0] === \"word\" ? token[3] + 1 : token[2]\n );\n }\n colon(tokens) {\n let brackets = 0;\n let prev, token, type;\n for (let [i2, element] of tokens.entries()) {\n token = element;\n type = token[0];\n if (type === \"(\") {\n brackets += 1;\n }\n if (type === \")\") {\n brackets -= 1;\n }\n if (brackets === 0 && type === \":\") {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === \"word\" && prev[1] === \"progid\") {\n continue;\n } else {\n return i2;\n }\n }\n prev = token;\n }\n return false;\n }\n comment(token) {\n let node2 = new Comment();\n this.init(node2, token[2]);\n node2.source.end = this.getPosition(token[3] || token[2]);\n node2.source.end.offset++;\n let text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer(this.input);\n }\n decl(tokens, customProperty) {\n let node2 = new Declaration();\n this.init(node2, tokens[0][2]);\n let last = tokens[tokens.length - 1];\n if (last[0] === \";\") {\n this.semicolon = true;\n tokens.pop();\n }\n node2.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n );\n node2.source.end.offset++;\n while (tokens[0][0] !== \"word\") {\n if (tokens.length === 1) this.unknownWord(tokens);\n node2.raws.before += tokens.shift()[1];\n }\n node2.source.start = this.getPosition(tokens[0][2]);\n node2.prop = \"\";\n while (tokens.length) {\n let type = tokens[0][0];\n if (type === \":\" || type === \"space\" || type === \"comment\") {\n break;\n }\n node2.prop += tokens.shift()[1];\n }\n node2.raws.between = \"\";\n let token;\n while (tokens.length) {\n token = tokens.shift();\n if (token[0] === \":\") {\n node2.raws.between += token[1];\n break;\n } else {\n if (token[0] === \"word\" && /\\w/.test(token[1])) {\n this.unknownWord([token]);\n }\n node2.raws.between += token[1];\n }\n }\n if (node2.prop[0] === \"_\" || node2.prop[0] === \"*\") {\n node2.raws.before += node2.prop[0];\n node2.prop = node2.prop.slice(1);\n }\n let firstSpaces = [];\n let next;\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n firstSpaces.push(tokens.shift());\n }\n this.precheckMissedSemicolon(tokens);\n for (let i2 = tokens.length - 1; i2 >= 0; i2--) {\n token = tokens[i2];\n if (token[1].toLowerCase() === \"!important\") {\n node2.important = true;\n let string = this.stringFrom(tokens, i2);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== \" !important\") node2.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === \"important\") {\n let cache = tokens.slice(0);\n let str = \"\";\n for (let j = i2; j > 0; j--) {\n let type = cache[j][0];\n if (str.trim().startsWith(\"!\") && type !== \"space\") {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().startsWith(\"!\")) {\n node2.important = true;\n node2.raws.important = str;\n tokens = cache;\n }\n }\n if (token[0] !== \"space\" && token[0] !== \"comment\") {\n break;\n }\n }\n let hasWord = tokens.some((i2) => i2[0] !== \"space\" && i2[0] !== \"comment\");\n if (hasWord) {\n node2.raws.between += firstSpaces.map((i2) => i2[1]).join(\"\");\n firstSpaces = [];\n }\n this.raw(node2, \"value\", firstSpaces.concat(tokens), customProperty);\n if (node2.value.includes(\":\") && !customProperty) {\n this.checkMissedSemicolon(tokens);\n }\n }\n doubleColon(token) {\n throw this.input.error(\n \"Double colon\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n emptyRule(token) {\n let node2 = new Rule();\n this.init(node2, token[2]);\n node2.selector = \"\";\n node2.raws.between = \"\";\n this.current = node2;\n }\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.spaces = \"\";\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2]);\n this.current.source.end.offset++;\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n }\n endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === \"rule\" && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = \"\";\n }\n }\n }\n // Helpers\n getPosition(offset) {\n let pos = this.input.fromOffset(offset);\n return {\n column: pos.col,\n line: pos.line,\n offset\n };\n }\n init(node2, offset) {\n this.current.push(node2);\n node2.source = {\n input: this.input,\n start: this.getPosition(offset)\n };\n node2.raws.before = this.spaces;\n this.spaces = \"\";\n if (node2.type !== \"comment\") this.semicolon = false;\n }\n other(start) {\n let end = false;\n let type = null;\n let colon = false;\n let bracket = null;\n let brackets = [];\n let customProperty = start[1].startsWith(\"--\");\n let tokens = [];\n let token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n if (type === \"(\" || type === \"[\") {\n if (!bracket) bracket = token;\n brackets.push(type === \"(\" ? \")\" : \"]\");\n } else if (customProperty && colon && type === \"{\") {\n if (!bracket) bracket = token;\n brackets.push(\"}\");\n } else if (brackets.length === 0) {\n if (type === \";\") {\n if (colon) {\n this.decl(tokens, customProperty);\n return;\n } else {\n break;\n }\n } else if (type === \"{\") {\n this.rule(tokens);\n return;\n } else if (type === \"}\") {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === \":\") {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n token = this.tokenizer.nextToken();\n }\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== \"space\" && token !== \"comment\") break;\n this.tokenizer.back(tokens.pop());\n }\n }\n this.decl(tokens, customProperty);\n } else {\n this.unknownWord(tokens);\n }\n }\n parse() {\n let token;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n switch (token[0]) {\n case \"space\":\n this.spaces += token[1];\n break;\n case \";\":\n this.freeSemicolon(token);\n break;\n case \"}\":\n this.end(token);\n break;\n case \"comment\":\n this.comment(token);\n break;\n case \"at-word\":\n this.atrule(token);\n break;\n case \"{\":\n this.emptyRule(token);\n break;\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n }\n precheckMissedSemicolon() {\n }\n raw(node2, prop, tokens, customProperty) {\n let token, type;\n let length = tokens.length;\n let value = \"\";\n let clean = true;\n let next, prev;\n for (let i2 = 0; i2 < length; i2 += 1) {\n token = tokens[i2];\n type = token[0];\n if (type === \"space\" && i2 === length - 1 && !customProperty) {\n clean = false;\n } else if (type === \"comment\") {\n prev = tokens[i2 - 1] ? tokens[i2 - 1][0] : \"empty\";\n next = tokens[i2 + 1] ? tokens[i2 + 1][0] : \"empty\";\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === \",\") {\n clean = false;\n } else {\n value += token[1];\n }\n } else {\n clean = false;\n }\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i2) => all + i2[1], \"\");\n node2.raws[prop] = { raw, value };\n }\n node2[prop] = value;\n }\n rule(tokens) {\n tokens.pop();\n let node2 = new Rule();\n this.init(node2, tokens[0][2]);\n node2.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node2, \"selector\", tokens);\n this.current = node2;\n }\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\" && lastTokenType !== \"comment\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n // Errors\n spacesAndCommentsFromStart(tokens) {\n let next;\n let spaces = \"\";\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== \"space\" && next !== \"comment\") break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n }\n spacesFromEnd(tokens) {\n let lastTokenType;\n let spaces = \"\";\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== \"space\") break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n }\n stringFrom(tokens, from) {\n let result2 = \"\";\n for (let i2 = from; i2 < tokens.length; i2++) {\n result2 += tokens[i2][1];\n }\n tokens.splice(from, tokens.length - from);\n return result2;\n }\n unclosedBlock() {\n let pos = this.current.source.start;\n throw this.input.error(\"Unclosed block\", pos.line, pos.column);\n }\n unclosedBracket(bracket) {\n throw this.input.error(\n \"Unclosed bracket\",\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n );\n }\n unexpectedClose(token) {\n throw this.input.error(\n \"Unexpected }\",\n { offset: token[2] },\n { offset: token[2] + 1 }\n );\n }\n unknownWord(tokens) {\n throw this.input.error(\n \"Unknown word\",\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n );\n }\n unnamedAtrule(node2, token) {\n throw this.input.error(\n \"At-rule without name\",\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n );\n }\n }\n parser = Parser;\n return parser;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n let Container = requireContainer();\n let Input = requireInput();\n let Parser = requireParser();\n function parse(css, opts) {\n let input2 = new Input(css, opts);\n let parser2 = new Parser(input2);\n try {\n parser2.parse();\n } catch (e2) {\n if (process.env.NODE_ENV !== \"production\") {\n if (e2.name === \"CssSyntaxError\" && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser\";\n } else if (/\\.sass/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser\";\n } else if (/\\.less$/i.test(opts.from)) {\n e2.message += \"\\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser\";\n }\n }\n }\n throw e2;\n }\n return parser2.root;\n }\n parse_1 = parse;\n parse.default = parse;\n Container.registerParse(parse);\n return parse_1;\n}\nvar warning;\nvar hasRequiredWarning;\nfunction requireWarning() {\n if (hasRequiredWarning) return warning;\n hasRequiredWarning = 1;\n class Warning {\n constructor(text, opts = {}) {\n this.type = \"warning\";\n this.text = text;\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts);\n this.line = range.start.line;\n this.column = range.start.column;\n this.endLine = range.end.line;\n this.endColumn = range.end.column;\n }\n for (let opt in opts) this[opt] = opts[opt];\n }\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message;\n }\n if (this.plugin) {\n return this.plugin + \": \" + this.text;\n }\n return this.text;\n }\n }\n warning = Warning;\n Warning.default = Warning;\n return warning;\n}\nvar result;\nvar hasRequiredResult;\nfunction requireResult() {\n if (hasRequiredResult) return result;\n hasRequiredResult = 1;\n let Warning = requireWarning();\n class Result {\n constructor(processor2, root2, opts) {\n this.processor = processor2;\n this.messages = [];\n this.root = root2;\n this.opts = opts;\n this.css = void 0;\n this.map = void 0;\n }\n toString() {\n return this.css;\n }\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n let warning2 = new Warning(text, opts);\n this.messages.push(warning2);\n return warning2;\n }\n warnings() {\n return this.messages.filter((i2) => i2.type === \"warning\");\n }\n get content() {\n return this.css;\n }\n }\n result = Result;\n Result.default = Result;\n return result;\n}\nvar warnOnce;\nvar hasRequiredWarnOnce;\nfunction requireWarnOnce() {\n if (hasRequiredWarnOnce) return warnOnce;\n hasRequiredWarnOnce = 1;\n let printed = {};\n warnOnce = function warnOnce2(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(message);\n }\n };\n return warnOnce;\n}\nvar lazyResult;\nvar hasRequiredLazyResult;\nfunction requireLazyResult() {\n if (hasRequiredLazyResult) return lazyResult;\n hasRequiredLazyResult = 1;\n let Container = requireContainer();\n let Document2 = requireDocument();\n let MapGenerator = requireMapGenerator();\n let parse = requireParse();\n let Result = requireResult();\n let Root = requireRoot();\n let stringify = requireStringify();\n let { isClean, my } = requireSymbols();\n let warnOnce2 = requireWarnOnce();\n const TYPE_TO_CLASS_NAME = {\n atrule: \"AtRule\",\n comment: \"Comment\",\n decl: \"Declaration\",\n document: \"Document\",\n root: \"Root\",\n rule: \"Rule\"\n };\n const PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n };\n const NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n };\n const CHILDREN = 0;\n function isPromise(obj) {\n return typeof obj === \"object\" && typeof obj.then === \"function\";\n }\n function getEvents(node2) {\n let key = false;\n let type = TYPE_TO_CLASS_NAME[node2.type];\n if (node2.type === \"decl\") {\n key = node2.prop.toLowerCase();\n } else if (node2.type === \"atrule\") {\n key = node2.name.toLowerCase();\n }\n if (key && node2.append) {\n return [\n type,\n type + \"-\" + key,\n CHILDREN,\n type + \"Exit\",\n type + \"Exit-\" + key\n ];\n } else if (key) {\n return [type, type + \"-\" + key, type + \"Exit\", type + \"Exit-\" + key];\n } else if (node2.append) {\n return [type, CHILDREN, type + \"Exit\"];\n } else {\n return [type, type + \"Exit\"];\n }\n }\n function toStack(node2) {\n let events;\n if (node2.type === \"document\") {\n events = [\"Document\", CHILDREN, \"DocumentExit\"];\n } else if (node2.type === \"root\") {\n events = [\"Root\", CHILDREN, \"RootExit\"];\n } else {\n events = getEvents(node2);\n }\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node: node2,\n visitorIndex: 0,\n visitors: []\n };\n }\n function cleanMarks(node2) {\n node2[isClean] = false;\n if (node2.nodes) node2.nodes.forEach((i2) => cleanMarks(i2));\n return node2;\n }\n let postcss2 = {};\n class LazyResult {\n constructor(processor2, css, opts) {\n this.stringified = false;\n this.processed = false;\n let root2;\n if (typeof css === \"object\" && css !== null && (css.type === \"root\" || css.type === \"document\")) {\n root2 = cleanMarks(css);\n } else if (css instanceof LazyResult || css instanceof Result) {\n root2 = cleanMarks(css.root);\n if (css.map) {\n if (typeof opts.map === \"undefined\") opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n let parser2 = parse;\n if (opts.syntax) parser2 = opts.syntax.parse;\n if (opts.parser) parser2 = opts.parser;\n if (parser2.parse) parser2 = parser2.parse;\n try {\n root2 = parser2(css, opts);\n } catch (error) {\n this.processed = true;\n this.error = error;\n }\n if (root2 && !root2[my]) {\n Container.rebuild(root2);\n }\n }\n this.result = new Result(processor2, root2, opts);\n this.helpers = { ...postcss2, postcss: postcss2, result: this.result };\n this.plugins = this.processor.plugins.map((plugin) => {\n if (typeof plugin === \"object\" && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) };\n } else {\n return plugin;\n }\n });\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n if (this.processed) return Promise.resolve(this.result);\n if (!this.processing) {\n this.processing = this.runAsync();\n }\n return this.processing;\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n getAsyncError() {\n throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n }\n handleError(error, node2) {\n let plugin = this.result.lastPlugin;\n try {\n if (node2) node2.addToError(error);\n this.error = error;\n if (error.name === \"CssSyntaxError\" && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== \"production\") {\n let pluginName = plugin.postcssPlugin;\n let pluginVer = plugin.postcssVersion;\n let runtimeVer = this.result.processor.version;\n let a2 = pluginVer.split(\".\");\n let b = runtimeVer.split(\".\");\n if (a2[0] !== b[0] || parseInt(a2[1]) > parseInt(b[1])) {\n console.error(\n \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + runtimeVer + \", but \" + pluginName + \" uses \" + pluginVer + \". Perhaps this is the source of the error below.\"\n );\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n return error;\n }\n prepareVisitors() {\n this.listeners = {};\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = [];\n this.listeners[type].push([plugin, cb]);\n };\n for (let plugin of this.plugins) {\n if (typeof plugin === \"object\") {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n );\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === \"object\") {\n for (let filter in plugin[event]) {\n if (filter === \"*\") {\n add(plugin, event, plugin[event][filter]);\n } else {\n add(\n plugin,\n event + \"-\" + filter.toLowerCase(),\n plugin[event][filter]\n );\n }\n }\n } else if (typeof plugin[event] === \"function\") {\n add(plugin, event, plugin[event]);\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0;\n }\n async runAsync() {\n this.plugin = 0;\n for (let i2 = 0; i2 < this.plugins.length; i2++) {\n let plugin = this.plugins[i2];\n let promise = this.runOnRoot(plugin);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (error) {\n throw this.handleError(error);\n }\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n let stack = [toStack(root2)];\n while (stack.length > 0) {\n let promise = this.visitTick(stack);\n if (isPromise(promise)) {\n try {\n await promise;\n } catch (e2) {\n let node2 = stack[stack.length - 1].node;\n throw this.handleError(e2, node2);\n }\n }\n }\n }\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin;\n try {\n if (root2.type === \"document\") {\n let roots = root2.nodes.map(\n (subRoot) => visitor(subRoot, this.helpers)\n );\n await Promise.all(roots);\n } else {\n await visitor(root2, this.helpers);\n }\n } catch (e2) {\n throw this.handleError(e2);\n }\n }\n }\n }\n this.processed = true;\n return this.stringify();\n }\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin;\n try {\n if (typeof plugin === \"object\" && plugin.Once) {\n if (this.result.root.type === \"document\") {\n let roots = this.result.root.nodes.map(\n (root2) => plugin.Once(root2, this.helpers)\n );\n if (isPromise(roots[0])) {\n return Promise.all(roots);\n }\n return roots;\n }\n return plugin.Once(this.result.root, this.helpers);\n } else if (typeof plugin === \"function\") {\n return plugin(this.result.root, this.result);\n }\n } catch (error) {\n throw this.handleError(error);\n }\n }\n stringify() {\n if (this.error) throw this.error;\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n let opts = this.result.opts;\n let str = stringify;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n let map = new MapGenerator(str, this.result.root, this.result.opts);\n let data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n }\n sync() {\n if (this.error) throw this.error;\n if (this.processed) return this.result;\n this.processed = true;\n if (this.processing) {\n throw this.getAsyncError();\n }\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin);\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n this.prepareVisitors();\n if (this.hasListener) {\n let root2 = this.result.root;\n while (!root2[isClean]) {\n root2[isClean] = true;\n this.walkSync(root2);\n }\n if (this.listeners.OnceExit) {\n if (root2.type === \"document\") {\n for (let subRoot of root2.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot);\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root2);\n }\n }\n }\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this.opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this.css;\n }\n visitSync(visitors, node2) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin;\n let promise;\n try {\n promise = visitor(node2, this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2.proxyOf);\n }\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n return true;\n }\n if (isPromise(promise)) {\n throw this.getAsyncError();\n }\n }\n }\n visitTick(stack) {\n let visit2 = stack[stack.length - 1];\n let { node: node2, visitors } = visit2;\n if (node2.type !== \"root\" && node2.type !== \"document\" && !node2.parent) {\n stack.pop();\n return;\n }\n if (visitors.length > 0 && visit2.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit2.visitorIndex];\n visit2.visitorIndex += 1;\n if (visit2.visitorIndex === visitors.length) {\n visit2.visitors = [];\n visit2.visitorIndex = 0;\n }\n this.result.lastPlugin = plugin;\n try {\n return visitor(node2.toProxy(), this.helpers);\n } catch (e2) {\n throw this.handleError(e2, node2);\n }\n }\n if (visit2.iterator !== 0) {\n let iterator = visit2.iterator;\n let child;\n while (child = node2.nodes[node2.indexes[iterator]]) {\n node2.indexes[iterator] += 1;\n if (!child[isClean]) {\n child[isClean] = true;\n stack.push(toStack(child));\n return;\n }\n }\n visit2.iterator = 0;\n delete node2.indexes[iterator];\n }\n let events = visit2.events;\n while (visit2.eventIndex < events.length) {\n let event = events[visit2.eventIndex];\n visit2.eventIndex += 1;\n if (event === CHILDREN) {\n if (node2.nodes && node2.nodes.length) {\n node2[isClean] = true;\n visit2.iterator = node2.getIterator();\n }\n return;\n } else if (this.listeners[event]) {\n visit2.visitors = this.listeners[event];\n return;\n }\n }\n stack.pop();\n }\n walkSync(node2) {\n node2[isClean] = true;\n let events = getEvents(node2);\n for (let event of events) {\n if (event === CHILDREN) {\n if (node2.nodes) {\n node2.each((child) => {\n if (!child[isClean]) this.walkSync(child);\n });\n }\n } else {\n let visitors = this.listeners[event];\n if (visitors) {\n if (this.visitSync(visitors, node2.toProxy())) return;\n }\n }\n }\n }\n warnings() {\n return this.sync().warnings();\n }\n get content() {\n return this.stringify().content;\n }\n get css() {\n return this.stringify().css;\n }\n get map() {\n return this.stringify().map;\n }\n get messages() {\n return this.sync().messages;\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n return this.sync().root;\n }\n get [Symbol.toStringTag]() {\n return \"LazyResult\";\n }\n }\n LazyResult.registerPostcss = (dependant) => {\n postcss2 = dependant;\n };\n lazyResult = LazyResult;\n LazyResult.default = LazyResult;\n Root.registerLazyResult(LazyResult);\n Document2.registerLazyResult(LazyResult);\n return lazyResult;\n}\nvar noWorkResult;\nvar hasRequiredNoWorkResult;\nfunction requireNoWorkResult() {\n if (hasRequiredNoWorkResult) return noWorkResult;\n hasRequiredNoWorkResult = 1;\n let MapGenerator = requireMapGenerator();\n let parse = requireParse();\n const Result = requireResult();\n let stringify = requireStringify();\n let warnOnce2 = requireWarnOnce();\n class NoWorkResult {\n constructor(processor2, css, opts) {\n css = css.toString();\n this.stringified = false;\n this._processor = processor2;\n this._css = css;\n this._opts = opts;\n this._map = void 0;\n let root2;\n let str = stringify;\n this.result = new Result(this._processor, root2, this._opts);\n this.result.css = css;\n let self2 = this;\n Object.defineProperty(this.result, \"root\", {\n get() {\n return self2.root;\n }\n });\n let map = new MapGenerator(str, root2, this._opts, css);\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate();\n if (generatedCSS) {\n this.result.css = generatedCSS;\n }\n if (generatedMap) {\n this.result.map = generatedMap;\n }\n } else {\n map.clearAnnotation();\n this.result.css = map.css;\n }\n }\n async() {\n if (this.error) return Promise.reject(this.error);\n return Promise.resolve(this.result);\n }\n catch(onRejected) {\n return this.async().catch(onRejected);\n }\n finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n }\n sync() {\n if (this.error) throw this.error;\n return this.result;\n }\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!(\"from\" in this._opts)) {\n warnOnce2(\n \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n );\n }\n }\n return this.async().then(onFulfilled, onRejected);\n }\n toString() {\n return this._css;\n }\n warnings() {\n return [];\n }\n get content() {\n return this.result.css;\n }\n get css() {\n return this.result.css;\n }\n get map() {\n return this.result.map;\n }\n get messages() {\n return [];\n }\n get opts() {\n return this.result.opts;\n }\n get processor() {\n return this.result.processor;\n }\n get root() {\n if (this._root) {\n return this._root;\n }\n let root2;\n let parser2 = parse;\n try {\n root2 = parser2(this._css, this._opts);\n } catch (error) {\n this.error = error;\n }\n if (this.error) {\n throw this.error;\n } else {\n this._root = root2;\n return root2;\n }\n }\n get [Symbol.toStringTag]() {\n return \"NoWorkResult\";\n }\n }\n noWorkResult = NoWorkResult;\n NoWorkResult.default = NoWorkResult;\n return noWorkResult;\n}\nvar processor;\nvar hasRequiredProcessor;\nfunction requireProcessor() {\n if (hasRequiredProcessor) return processor;\n hasRequiredProcessor = 1;\n let Document2 = requireDocument();\n let LazyResult = requireLazyResult();\n let NoWorkResult = requireNoWorkResult();\n let Root = requireRoot();\n class Processor {\n constructor(plugins = []) {\n this.version = \"8.5.1\";\n this.plugins = this.normalize(plugins);\n }\n normalize(plugins) {\n let normalized = [];\n for (let i2 of plugins) {\n if (i2.postcss === true) {\n i2 = i2();\n } else if (i2.postcss) {\n i2 = i2.postcss;\n }\n if (typeof i2 === \"object\" && Array.isArray(i2.plugins)) {\n normalized = normalized.concat(i2.plugins);\n } else if (typeof i2 === \"object\" && i2.postcssPlugin) {\n normalized.push(i2);\n } else if (typeof i2 === \"function\") {\n normalized.push(i2);\n } else if (typeof i2 === \"object\" && (i2.parse || i2.stringify)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\n \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n );\n }\n } else {\n throw new Error(i2 + \" is not a PostCSS plugin\");\n }\n }\n return normalized;\n }\n process(css, opts = {}) {\n if (!this.plugins.length && !opts.parser && !opts.stringifier && !opts.syntax) {\n return new NoWorkResult(this, css, opts);\n } else {\n return new LazyResult(this, css, opts);\n }\n }\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n }\n }\n processor = Processor;\n Processor.default = Processor;\n Root.registerProcessor(Processor);\n Document2.registerProcessor(Processor);\n return processor;\n}\nvar postcss_1;\nvar hasRequiredPostcss;\nfunction requirePostcss() {\n if (hasRequiredPostcss) return postcss_1;\n hasRequiredPostcss = 1;\n let AtRule = requireAtRule();\n let Comment = requireComment();\n let Container = requireContainer();\n let CssSyntaxError = requireCssSyntaxError();\n let Declaration = requireDeclaration();\n let Document2 = requireDocument();\n let fromJSON = requireFromJSON();\n let Input = requireInput();\n let LazyResult = requireLazyResult();\n let list = requireList();\n let Node2 = requireNode();\n let parse = requireParse();\n let Processor = requireProcessor();\n let Result = requireResult();\n let Root = requireRoot();\n let Rule = requireRule();\n let stringify = requireStringify();\n let Warning = requireWarning();\n function postcss2(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new Processor(plugins);\n }\n postcss2.plugin = function plugin(name, initializer) {\n let warningPrinted = false;\n function creator(...args) {\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true;\n console.warn(\n name + \": postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration\"\n );\n if (process.env.LANG && process.env.LANG.startsWith(\"cn\")) {\n console.warn(\n name + \": 里面 postcss.plugin 被弃用. 迁移指南:\\nhttps://www.w3ctech.com/topic/2226\"\n );\n }\n }\n let transformer = initializer(...args);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new Processor().version;\n return transformer;\n }\n let cache;\n Object.defineProperty(creator, \"postcss\", {\n get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n creator.process = function(css, processOpts, pluginOpts) {\n return postcss2([creator(pluginOpts)]).process(css, processOpts);\n };\n return creator;\n };\n postcss2.stringify = stringify;\n postcss2.parse = parse;\n postcss2.fromJSON = fromJSON;\n postcss2.list = list;\n postcss2.comment = (defaults) => new Comment(defaults);\n postcss2.atRule = (defaults) => new AtRule(defaults);\n postcss2.decl = (defaults) => new Declaration(defaults);\n postcss2.rule = (defaults) => new Rule(defaults);\n postcss2.root = (defaults) => new Root(defaults);\n postcss2.document = (defaults) => new Document2(defaults);\n postcss2.CssSyntaxError = CssSyntaxError;\n postcss2.Declaration = Declaration;\n postcss2.Container = Container;\n postcss2.Processor = Processor;\n postcss2.Document = Document2;\n postcss2.Comment = Comment;\n postcss2.Warning = Warning;\n postcss2.AtRule = AtRule;\n postcss2.Result = Result;\n postcss2.Input = Input;\n postcss2.Rule = Rule;\n postcss2.Root = Root;\n postcss2.Node = Node2;\n LazyResult.registerPostcss(postcss2);\n postcss_1 = postcss2;\n postcss2.default = postcss2;\n return postcss_1;\n}\nvar safeParser$1;\nvar hasRequiredSafeParser;\nfunction requireSafeParser() {\n if (hasRequiredSafeParser) return safeParser$1;\n hasRequiredSafeParser = 1;\n let Comment = requireComment();\n let Parser = requireParser();\n let tokenizer = requireTokenize();\n class SafeParser extends Parser {\n checkMissedSemicolon() {\n }\n comment(token) {\n let node2 = new Comment();\n this.init(node2, token[2]);\n let pos = this.input.fromOffset(token[3]) || this.input.fromOffset(this.input.css.length - 1);\n node2.source.end = {\n column: pos.col,\n line: pos.line,\n offset: token[3] + 1\n };\n let text = token[1].slice(2);\n if (text.slice(-2) === \"*/\") text = text.slice(0, -2);\n if (/^\\s*$/.test(text)) {\n node2.text = \"\";\n node2.raws.left = text;\n node2.raws.right = \"\";\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n node2.text = match[2];\n node2.raws.left = match[1];\n node2.raws.right = match[3];\n }\n }\n createTokenizer() {\n this.tokenizer = tokenizer(this.input, { ignoreErrors: true });\n }\n decl(tokens) {\n if (tokens.length > 1 && tokens.some((i2) => i2[0] === \"word\")) {\n super.decl(tokens);\n }\n }\n doubleColon() {\n }\n endFile() {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || \"\") + this.spaces;\n while (this.current.parent) {\n this.current = this.current.parent;\n this.current.raws.after = \"\";\n }\n this.root.source.end = this.getPosition(this.tokenizer.position());\n }\n precheckMissedSemicolon(tokens) {\n let colon = this.colon(tokens);\n if (colon === false) return;\n let nextStart, prevEnd;\n for (nextStart = colon - 1; nextStart >= 0; nextStart--) {\n if (tokens[nextStart][0] === \"word\") break;\n }\n if (nextStart === 0 || nextStart < 0) return;\n for (prevEnd = nextStart - 1; prevEnd >= 0; prevEnd--) {\n if (tokens[prevEnd][0] !== \"space\") {\n prevEnd += 1;\n break;\n }\n }\n let other = tokens.slice(nextStart);\n let spaces = tokens.slice(prevEnd, nextStart);\n tokens.splice(prevEnd, tokens.length - prevEnd);\n this.spaces = spaces.map((i2) => i2[1]).join(\"\");\n this.decl(other);\n }\n unclosedBracket() {\n }\n unexpectedClose() {\n this.current.raws.after += \"}\";\n }\n unknownWord(tokens) {\n this.spaces += tokens.map((i2) => i2[1]).join(\"\");\n }\n unnamedAtrule(node2) {\n node2.name = \"\";\n }\n }\n safeParser$1 = SafeParser;\n return safeParser$1;\n}\nvar safeParse;\nvar hasRequiredSafeParse;\nfunction requireSafeParse() {\n if (hasRequiredSafeParse) return safeParse;\n hasRequiredSafeParse = 1;\n let { Input } = requirePostcss();\n let SafeParser = requireSafeParser();\n safeParse = function safeParse2(css, opts) {\n let input2 = new Input(css, opts);\n let parser2 = new SafeParser(input2);\n parser2.parse();\n return parser2.root;\n };\n return safeParse;\n}\nrequireSafeParse();\nvar postcssExports = requirePostcss();\nconst postcss = /* @__PURE__ */ getDefaultExportFromCjs(postcssExports);\npostcss.stringify;\npostcss.fromJSON;\npostcss.plugin;\npostcss.parse;\npostcss.list;\npostcss.document;\npostcss.comment;\npostcss.atRule;\npostcss.rule;\npostcss.decl;\npostcss.root;\npostcss.CssSyntaxError;\npostcss.Declaration;\npostcss.Container;\npostcss.Processor;\npostcss.Document;\npostcss.Comment;\npostcss.Warning;\npostcss.AtRule;\npostcss.Result;\npostcss.Input;\npostcss.Rule;\npostcss.Root;\npostcss.Node;\nclass BaseRRNode {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n constructor(..._args) {\n __publicField2(this, \"parentElement\", null);\n __publicField2(this, \"parentNode\", null);\n __publicField2(this, \"ownerDocument\");\n __publicField2(this, \"firstChild\", null);\n __publicField2(this, \"lastChild\", null);\n __publicField2(this, \"previousSibling\", null);\n __publicField2(this, \"nextSibling\", null);\n __publicField2(this, \"ELEMENT_NODE\", 1);\n __publicField2(this, \"TEXT_NODE\", 3);\n __publicField2(this, \"nodeType\");\n __publicField2(this, \"nodeName\");\n __publicField2(this, \"RRNodeType\");\n }\n get childNodes() {\n const childNodes2 = [];\n let childIterator = this.firstChild;\n while (childIterator) {\n childNodes2.push(childIterator);\n childIterator = childIterator.nextSibling;\n }\n return childNodes2;\n }\n contains(node2) {\n if (!(node2 instanceof BaseRRNode)) return false;\n else if (node2.ownerDocument !== this.ownerDocument) return false;\n else if (node2 === this) return true;\n while (node2.parentNode) {\n if (node2.parentNode === this) return true;\n node2 = node2.parentNode;\n }\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n appendChild(_newChild) {\n throw new Error(\n `RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n insertBefore(_newChild, _refChild) {\n throw new Error(\n `RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n removeChild(_node) {\n throw new Error(\n `RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`\n );\n }\n toString() {\n return \"RRNode\";\n }\n}\nconst testableAccessors = {\n Node: [\"childNodes\", \"parentNode\", \"parentElement\", \"textContent\"],\n ShadowRoot: [\"host\", \"styleSheets\"],\n Element: [\"shadowRoot\", \"querySelector\", \"querySelectorAll\"],\n MutationObserver: []\n};\nconst testableMethods = {\n Node: [\"contains\", \"getRootNode\"],\n ShadowRoot: [\"getSelection\"],\n Element: [],\n MutationObserver: [\"constructor\"]\n};\nconst untaintedBasePrototype = {};\nfunction angularZoneUnpatchedAlternative(key) {\n var _a2, _b;\n const angularUnpatchedVersionSymbol = (_b = (_a2 = globalThis == null ? void 0 : globalThis.Zone) == null ? void 0 : _a2.__symbol__) == null ? void 0 : _b.call(_a2, key);\n if (angularUnpatchedVersionSymbol && globalThis[angularUnpatchedVersionSymbol]) {\n return globalThis[angularUnpatchedVersionSymbol];\n } else {\n return void 0;\n }\n}\nfunction getUntaintedPrototype(key) {\n if (untaintedBasePrototype[key])\n return untaintedBasePrototype[key];\n const candidate = angularZoneUnpatchedAlternative(key) || globalThis[key];\n const defaultPrototype = candidate.prototype;\n const accessorNames = key in testableAccessors ? testableAccessors[key] : void 0;\n const isUntaintedAccessors = Boolean(\n accessorNames && // @ts-expect-error 2345\n accessorNames.every(\n (accessor) => {\n var _a2, _b;\n return Boolean(\n (_b = (_a2 = Object.getOwnPropertyDescriptor(defaultPrototype, accessor)) == null ? void 0 : _a2.get) == null ? void 0 : _b.toString().includes(\"[native code]\")\n );\n }\n )\n );\n const methodNames = key in testableMethods ? testableMethods[key] : void 0;\n const isUntaintedMethods = Boolean(\n methodNames && methodNames.every(\n // @ts-expect-error 2345\n (method) => {\n var _a2;\n return typeof defaultPrototype[method] === \"function\" && ((_a2 = defaultPrototype[method]) == null ? void 0 : _a2.toString().includes(\"[native code]\"));\n }\n )\n );\n if (isUntaintedAccessors && isUntaintedMethods) {\n untaintedBasePrototype[key] = candidate.prototype;\n return candidate.prototype;\n }\n try {\n const iframeEl = document.createElement(\"iframe\");\n document.body.appendChild(iframeEl);\n const win = iframeEl.contentWindow;\n if (!win) return candidate.prototype;\n const untaintedObject = win[key].prototype;\n document.body.removeChild(iframeEl);\n if (!untaintedObject) return defaultPrototype;\n return untaintedBasePrototype[key] = untaintedObject;\n } catch {\n return defaultPrototype;\n }\n}\nconst untaintedAccessorCache = {};\nfunction getUntaintedAccessor(key, instance, accessor) {\n var _a2;\n const cacheKey = `${key}.${String(accessor)}`;\n if (untaintedAccessorCache[cacheKey])\n return untaintedAccessorCache[cacheKey].call(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedAccessor = (_a2 = Object.getOwnPropertyDescriptor(\n untaintedPrototype,\n accessor\n )) == null ? void 0 : _a2.get;\n if (!untaintedAccessor) return instance[accessor];\n untaintedAccessorCache[cacheKey] = untaintedAccessor;\n return untaintedAccessor.call(instance);\n}\nconst untaintedMethodCache = {};\nfunction getUntaintedMethod(key, instance, method) {\n const cacheKey = `${key}.${String(method)}`;\n if (untaintedMethodCache[cacheKey])\n return untaintedMethodCache[cacheKey].bind(\n instance\n );\n const untaintedPrototype = getUntaintedPrototype(key);\n const untaintedMethod = untaintedPrototype[method];\n if (typeof untaintedMethod !== \"function\") return instance[method];\n untaintedMethodCache[cacheKey] = untaintedMethod;\n return untaintedMethod.bind(instance);\n}\nfunction childNodes(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"childNodes\");\n}\nfunction parentNode(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentNode\");\n}\nfunction parentElement(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"parentElement\");\n}\nfunction textContent(n2) {\n return getUntaintedAccessor(\"Node\", n2, \"textContent\");\n}\nfunction contains(n2, other) {\n return getUntaintedMethod(\"Node\", n2, \"contains\")(other);\n}\nfunction getRootNode(n2) {\n return getUntaintedMethod(\"Node\", n2, \"getRootNode\")();\n}\nfunction host(n2) {\n if (!n2 || !(\"host\" in n2)) return null;\n return getUntaintedAccessor(\"ShadowRoot\", n2, \"host\");\n}\nfunction styleSheets(n2) {\n return n2.styleSheets;\n}\nfunction shadowRoot(n2) {\n if (!n2 || !(\"shadowRoot\" in n2)) return null;\n return getUntaintedAccessor(\"Element\", n2, \"shadowRoot\");\n}\nfunction querySelector(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelector\")(selectors);\n}\nfunction querySelectorAll(n2, selectors) {\n return getUntaintedAccessor(\"Element\", n2, \"querySelectorAll\")(selectors);\n}\nfunction mutationObserverCtor() {\n return getUntaintedPrototype(\"MutationObserver\").constructor;\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nconst index = {\n childNodes,\n parentNode,\n parentElement,\n textContent,\n contains,\n getRootNode,\n host,\n styleSheets,\n shadowRoot,\n querySelector,\n querySelectorAll,\n mutationObserver: mutationObserverCtor,\n patch\n};\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = \"Please stop import mirror directly. Instead of that,\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\r\\nor you can use record.mirror to access the mirror instance during recording.\";\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n};\nif (typeof window !== \"undefined\" && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === \"map\") {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n}\nfunction throttle(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function(...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(\n target,\n key,\n isRevoked ? d : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n }\n }\n );\n return () => hookSetter(target, key, original || {}, true);\n}\nlet nowTimestamp = Date.now;\nif (!/* @__PURE__ */ /[1-9][0-9]{12}/.test(Date.now().toString())) {\n nowTimestamp = () => (/* @__PURE__ */ new Date()).getTime();\n}\nfunction getWindowScroll(win) {\n var _a2, _b, _c, _d;\n const doc = win.document;\n return {\n left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== void 0 ? win.pageXOffset : doc.documentElement.scrollLeft || (doc == null ? void 0 : doc.body) && ((_a2 = index.parentElement(doc.body)) == null ? void 0 : _a2.scrollLeft) || ((_b = doc == null ? void 0 : doc.body) == null ? void 0 : _b.scrollLeft) || 0,\n top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== void 0 ? win.pageYOffset : (doc == null ? void 0 : doc.documentElement.scrollTop) || (doc == null ? void 0 : doc.body) && ((_c = index.parentElement(doc.body)) == null ? void 0 : _c.scrollTop) || ((_d = doc == null ? void 0 : doc.body) == null ? void 0 : _d.scrollTop) || 0\n };\n}\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight;\n}\nfunction getWindowWidth() {\n return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth;\n}\nfunction closestElementOfNode(node2) {\n if (!node2) {\n return null;\n }\n const el = node2.nodeType === node2.ELEMENT_NODE ? node2 : index.parentElement(node2);\n return el;\n}\nfunction isBlocked(node2, blockClass, blockSelector, checkAncestors) {\n if (!node2) {\n return false;\n }\n const el = closestElementOfNode(node2);\n if (!el) {\n return false;\n }\n try {\n if (typeof blockClass === \"string\") {\n if (el.classList.contains(blockClass)) return true;\n if (checkAncestors && el.closest(\".\" + blockClass) !== null) return true;\n } else {\n if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n }\n } catch (e2) {\n }\n if (blockSelector) {\n if (el.matches(blockSelector)) return true;\n if (checkAncestors && el.closest(blockSelector) !== null) return true;\n }\n return false;\n}\nfunction isSerialized(n2, mirror2) {\n return mirror2.getId(n2) !== -1;\n}\nfunction isIgnored(n2, mirror2, slimDOMOptions) {\n if (n2.tagName === \"TITLE\" && slimDOMOptions.headTitleMutations) {\n return true;\n }\n return mirror2.getId(n2) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror2) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror2.getId(target);\n if (!mirror2.has(id)) {\n return true;\n }\n const parent = index.parentNode(target);\n if (parent && parent.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!parent) {\n return true;\n }\n return isAncestorRemoved(parent, mirror2);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill$1(win = window) {\n if (\"NodeList\" in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype.forEach;\n }\n if (\"DOMTokenList\" in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype.forEach;\n }\n}\nfunction isSerializedIframe(n2, mirror2) {\n return Boolean(n2.nodeName === \"IFRAME\" && mirror2.getMeta(n2));\n}\nfunction isSerializedStylesheet(n2, mirror2) {\n return Boolean(\n n2.nodeName === \"LINK\" && n2.nodeType === n2.ELEMENT_NODE && n2.getAttribute && n2.getAttribute(\"rel\") === \"stylesheet\" && mirror2.getMeta(n2)\n );\n}\nfunction hasShadowRoot(n2) {\n if (!n2) return false;\n if (n2 instanceof BaseRRNode && \"shadowRoot\" in n2) {\n return Boolean(n2.shadowRoot);\n }\n return Boolean(index.shadowRoot(n2));\n}\nclass StyleSheetMirror {\n constructor() {\n __publicField(this, \"id\", 1);\n __publicField(this, \"styleIDMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"idStyleMap\", /* @__PURE__ */ new Map());\n }\n getId(stylesheet) {\n return this.styleIDMap.get(stylesheet) ?? -1;\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n /**\n * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n */\n add(stylesheet, id) {\n if (this.has(stylesheet)) return this.getId(stylesheet);\n let newId;\n if (id === void 0) {\n newId = this.id++;\n } else newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = /* @__PURE__ */ new WeakMap();\n this.idStyleMap = /* @__PURE__ */ new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n2) {\n var _a2;\n let shadowHost = null;\n if (\"getRootNode\" in n2 && ((_a2 = index.getRootNode(n2)) == null ? void 0 : _a2.nodeType) === Node.DOCUMENT_FRAGMENT_NODE && index.host(index.getRootNode(n2)))\n shadowHost = index.host(index.getRootNode(n2));\n return shadowHost;\n}\nfunction getRootShadowHost(n2) {\n let rootShadowHost = n2;\n let shadowHost;\n while (shadowHost = getShadowHost(rootShadowHost))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n const shadowHost = getRootShadowHost(n2);\n return index.contains(doc, shadowHost);\n}\nfunction inDom(n2) {\n const doc = n2.ownerDocument;\n if (!doc) return false;\n return index.contains(doc, n2) || shadowHostInDom(n2);\n}\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nfunction isNodeInLinkedList(n2) {\n return \"__ln\" in n2;\n}\nclass DoubleLinkedList {\n constructor() {\n __publicField(this, \"length\", 0);\n __publicField(this, \"head\", null);\n __publicField(this, \"tail\", null);\n }\n get(position) {\n if (position >= this.length) {\n throw new Error(\"Position outside of list range\");\n }\n let current = this.head;\n for (let index2 = 0; index2 < position; index2++) {\n current = (current == null ? void 0 : current.next) || null;\n }\n return current;\n }\n addNode(n2) {\n const node2 = {\n value: n2,\n previous: null,\n next: null\n };\n n2.__ln = node2;\n if (n2.previousSibling && isNodeInLinkedList(n2.previousSibling)) {\n const current = n2.previousSibling.__ln.next;\n node2.next = current;\n node2.previous = n2.previousSibling.__ln;\n n2.previousSibling.__ln.next = node2;\n if (current) {\n current.previous = node2;\n }\n } else if (n2.nextSibling && isNodeInLinkedList(n2.nextSibling) && n2.nextSibling.__ln.previous) {\n const current = n2.nextSibling.__ln.previous;\n node2.previous = current;\n node2.next = n2.nextSibling.__ln;\n n2.nextSibling.__ln.previous = node2;\n if (current) {\n current.next = node2;\n }\n } else {\n if (this.head) {\n this.head.previous = node2;\n }\n node2.next = this.head;\n this.head = node2;\n }\n if (node2.next === null) {\n this.tail = node2;\n }\n this.length++;\n }\n removeNode(n2) {\n const current = n2.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n } else {\n this.tail = null;\n }\n } else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n } else {\n this.tail = current.previous;\n }\n }\n if (n2.__ln) {\n delete n2.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"texts\", []);\n __publicField(this, \"attributes\", []);\n __publicField(this, \"attributeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"removes\", []);\n __publicField(this, \"mapRemoves\", []);\n __publicField(this, \"movedMap\", {});\n __publicField(this, \"addedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"movedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"droppedSet\", /* @__PURE__ */ new Set());\n __publicField(this, \"removesSubTreeCache\", /* @__PURE__ */ new Set());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"blockClass\");\n __publicField(this, \"blockSelector\");\n __publicField(this, \"maskTextClass\");\n __publicField(this, \"maskTextSelector\");\n __publicField(this, \"inlineStylesheet\");\n __publicField(this, \"maskInputOptions\");\n __publicField(this, \"maskTextFn\");\n __publicField(this, \"maskInputFn\");\n __publicField(this, \"keepIframeSrcFn\");\n __publicField(this, \"recordCanvas\");\n __publicField(this, \"inlineImages\");\n __publicField(this, \"slimDOMOptions\");\n __publicField(this, \"dataURLOptions\");\n __publicField(this, \"doc\");\n __publicField(this, \"mirror\");\n __publicField(this, \"iframeManager\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"shadowDomManager\");\n __publicField(this, \"canvasManager\");\n __publicField(this, \"processedNodeManager\");\n __publicField(this, \"unattachedDoc\");\n __publicField(this, \"processMutations\", (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n });\n __publicField(this, \"emit\", () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = /* @__PURE__ */ new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n2) => {\n let ns = n2;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n2) => {\n const parent = index.parentNode(n2);\n if (!parent || !inDom(n2) || parent.tagName === \"TEXTAREA\") {\n return;\n }\n const parentId = isShadowRoot(parent) ? this.mirror.getId(getShadowHost(n2)) : this.mirror.getId(parent);\n const nextId = getNextId(n2);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n2);\n }\n const sn = serializeNodeWithId(n2, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskTextClass: this.maskTextClass,\n maskTextSelector: this.maskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(\n currentN\n );\n }\n if (hasShadowRoot(n2)) {\n this.shadowDomManager.addShadowRoot(index.shadowRoot(n2), this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n }\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n2 of this.movedSet) {\n if (isParentRemoved(this.removesSubTreeCache, n2, this.mirror) && !this.movedSet.has(index.parentNode(n2))) {\n continue;\n }\n pushAdd(n2);\n }\n for (const n2 of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n2) && !isParentRemoved(this.removesSubTreeCache, n2, this.mirror)) {\n pushAdd(n2);\n } else if (isAncestorInSet(this.movedSet, n2)) {\n pushAdd(n2);\n } else {\n this.droppedSet.add(n2);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node2 = null;\n if (candidate) {\n const parentId = this.mirror.getId(index.parentNode(candidate.value));\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node2 = candidate;\n }\n }\n if (!node2) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(index.parentNode(_node.value));\n const nextId = getNextId(_node.value);\n if (nextId === -1) continue;\n else if (parentId !== -1) {\n node2 = _node;\n break;\n } else {\n const unhandledNode = _node.value;\n const parent = index.parentNode(unhandledNode);\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = index.host(parent);\n const parentId2 = this.mirror.getId(shadowHost);\n if (parentId2 !== -1) {\n node2 = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node2) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node2.previous;\n addList.removeNode(node2.value);\n pushAdd(node2.value);\n }\n const payload = {\n texts: this.texts.map((text) => {\n const n2 = text.node;\n const parent = index.parentNode(n2);\n if (parent && parent.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(parent);\n }\n return {\n id: this.mirror.getId(n2),\n value: text.value\n };\n }).filter((text) => !addedIds.has(text.id)).filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes.map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === \"string\") {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split(\"var(\").length === attributes.style.split(\"var(\").length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes\n };\n }).filter((attribute) => !addedIds.has(attribute.id)).filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds\n };\n if (!payload.texts.length && !payload.attributes.length && !payload.removes.length && !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = /* @__PURE__ */ new WeakMap();\n this.removes = [];\n this.addedSet = /* @__PURE__ */ new Set();\n this.movedSet = /* @__PURE__ */ new Set();\n this.droppedSet = /* @__PURE__ */ new Set();\n this.removesSubTreeCache = /* @__PURE__ */ new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n });\n __publicField(this, \"genTextAreaValueMutation\", (textarea) => {\n let item = this.attributeMap.get(textarea);\n if (!item) {\n item = {\n node: textarea,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(textarea, item);\n }\n item.attributes.value = Array.from(\n index.childNodes(textarea),\n (cn) => index.textContent(cn) || \"\"\n ).join(\"\");\n });\n __publicField(this, \"processMutation\", (m) => {\n if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n return;\n }\n switch (m.type) {\n case \"characterData\": {\n const value = index.textContent(m.target);\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) && value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(\n m.target,\n this.maskTextClass,\n this.maskTextSelector,\n true\n // checkAncestors\n ) && value ? this.maskTextFn ? this.maskTextFn(value, closestElementOfNode(m.target)) : value.replace(/[\\S]/g, \"*\") : value,\n node: m.target\n });\n }\n break;\n }\n case \"attributes\": {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === \"value\") {\n const type = getInputType(target);\n value = maskInputValue({\n element: target,\n maskInputOptions: this.maskInputOptions,\n tagName: target.tagName,\n type,\n value,\n maskInputFn: this.maskInputFn\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === \"IFRAME\" && attributeName === \"src\" && !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = \"rr_src\";\n } else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {}\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === \"type\" && target.tagName === \"INPUT\" && (m.oldValue || \"\").toLowerCase() === \"password\") {\n target.setAttribute(\"data-rr-is-password\", \"true\");\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(\n this.doc,\n toLowerCase(target.tagName),\n toLowerCase(attributeName),\n value\n );\n if (attributeName === \"style\") {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc = document.implementation.createHTMLDocument();\n } catch (e2) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement(\"span\");\n if (m.oldValue) {\n old.setAttribute(\"style\", m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) || newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === \"\") {\n item.styleDiff[pname] = newValue;\n } else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n } else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === \"\") {\n item.styleDiff[pname] = false;\n }\n }\n } else if (attributeName === \"open\" && target.tagName === \"DIALOG\") {\n if (target.matches(\"dialog:modal\")) {\n item.attributes[\"rr_open_mode\"] = \"modal\";\n } else {\n item.attributes[\"rr_open_mode\"] = \"non-modal\";\n }\n }\n }\n break;\n }\n case \"childList\": {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n return;\n if (m.target.tagName === \"TEXTAREA\") {\n this.genTextAreaValueMutation(m.target);\n return;\n }\n m.addedNodes.forEach((n2) => this.genAdds(n2, m.target));\n m.removedNodes.forEach((n2) => {\n const nodeId = this.mirror.getId(n2);\n const parentId = isShadowRoot(m.target) ? this.mirror.getId(index.host(m.target)) : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) || isIgnored(n2, this.mirror, this.slimDOMOptions) || !isSerialized(n2, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n2)) {\n deepDelete(this.addedSet, n2);\n this.droppedSet.add(n2);\n } else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n2) && this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n2);\n } else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target) ? true : void 0\n });\n processRemoves(n2, this.removesSubTreeCache);\n }\n this.mapRemoves.push(n2);\n });\n break;\n }\n }\n });\n __publicField(this, \"genAdds\", (n2, target) => {\n if (this.processedNodeManager.inOtherBuffer(n2, this)) return;\n if (this.addedSet.has(n2) || this.movedSet.has(n2)) return;\n if (this.mirror.hasNode(n2)) {\n if (isIgnored(n2, this.mirror, this.slimDOMOptions)) {\n return;\n }\n this.movedSet.add(n2);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n2), targetId)] = true;\n }\n } else {\n this.addedSet.add(n2);\n this.droppedSet.delete(n2);\n }\n if (!isBlocked(n2, this.blockClass, this.blockSelector, false)) {\n index.childNodes(n2).forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n2)) {\n index.childNodes(index.shadowRoot(n2)).forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n2);\n });\n }\n }\n });\n }\n init(options) {\n [\n \"mutationCb\",\n \"blockClass\",\n \"blockSelector\",\n \"maskTextClass\",\n \"maskTextSelector\",\n \"inlineStylesheet\",\n \"maskInputOptions\",\n \"maskTextFn\",\n \"maskInputFn\",\n \"keepIframeSrcFn\",\n \"recordCanvas\",\n \"inlineImages\",\n \"slimDOMOptions\",\n \"dataURLOptions\",\n \"doc\",\n \"mirror\",\n \"iframeManager\",\n \"stylesheetManager\",\n \"shadowDomManager\",\n \"canvasManager\",\n \"processedNodeManager\"\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n2) {\n addsSet.delete(n2);\n index.childNodes(n2).forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction processRemoves(n2, cache) {\n const queue = [n2];\n while (queue.length) {\n const next = queue.pop();\n if (cache.has(next)) continue;\n cache.add(next);\n index.childNodes(next).forEach((n22) => queue.push(n22));\n }\n return;\n}\nfunction isParentRemoved(removes, n2, mirror2) {\n if (removes.size === 0) return false;\n return _isParentRemoved(removes, n2);\n}\nfunction _isParentRemoved(removes, n2, _mirror2) {\n const node2 = index.parentNode(n2);\n if (!node2) return false;\n return removes.has(node2);\n}\nfunction isAncestorInSet(set, n2) {\n if (set.size === 0) return false;\n return _isAncestorInSet(set, n2);\n}\nfunction _isAncestorInSet(set, n2) {\n const parent = index.parentNode(n2);\n if (!parent) {\n return false;\n }\n if (set.has(parent)) {\n return true;\n }\n return _isAncestorInSet(set, parent);\n}\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = void 0;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = (...rest) => {\n try {\n return cb(...rest);\n } catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return;\n }\n throw error;\n }\n };\n return rrwebWrapped;\n};\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if (\"composedPath\" in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n } else if (\"path\" in event && event.path.length) {\n return event.path[0];\n }\n } catch {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n const observer = new (mutationObserverCtor())(\n callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer))\n );\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction initMoveObserver({\n mousemoveCb,\n sampling,\n doc,\n mirror: mirror2\n}) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === \"number\" ? sampling.mousemoveCallback : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle(\n callbackWrapper(\n (source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(\n positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }),\n source\n );\n positions = [];\n timeBaseline = null;\n }\n ),\n callbackThreshold\n );\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt) ? evt.changedTouches[0] : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror2.getId(target),\n timeOffset: nowTimestamp() - timeBaseline\n });\n wrappedCb(\n typeof DragEvent !== \"undefined\" && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent ? IncrementalSource.MouseMove : IncrementalSource.TouchMove\n );\n }),\n threshold,\n {\n trailing: false\n }\n )\n );\n const handlers = [\n on(\"mousemove\", updatePosition, doc),\n on(\"touchmove\", updatePosition, doc),\n on(\"drag\", updatePosition, doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({\n mouseInteractionCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true || sampling.mouseInteraction === void 0 ? {} : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if (\"pointerType\" in event) {\n switch (event.pointerType) {\n case \"mouse\":\n pointerType = PointerTypes.Mouse;\n break;\n case \"touch\":\n pointerType = PointerTypes.Touch;\n break;\n case \"pen\":\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = \"TouchStart\";\n } else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = \"TouchEnd\";\n }\n } else if (pointerType === PointerTypes.Pen) ;\n } else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if (thisEventKey.startsWith(\"Touch\") && pointerType === PointerTypes.Touch || thisEventKey.startsWith(\"Mouse\") && pointerType === PointerTypes.Mouse) {\n pointerType = null;\n }\n } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e2 = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e2) {\n return;\n }\n const id = mirror2.getId(target);\n const { clientX, clientY } = e2;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...pointerType !== null && { pointerType }\n });\n };\n };\n Object.keys(MouseInteractions).filter(\n (key) => Number.isNaN(Number(key)) && !key.endsWith(\"_Departed\") && disableMap[key] !== false\n ).forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace(\n \"mouse\",\n \"pointer\"\n );\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({\n scrollCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n sampling\n}) {\n const updatePosition = callbackWrapper(\n throttle(\n callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const id = mirror2.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top\n });\n } else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop\n });\n }\n }),\n sampling.scroll || 100\n )\n );\n return on(\"scroll\", updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(\n throttle(\n callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height)\n });\n lastH = height;\n lastW = width;\n }\n }),\n 200\n )\n );\n return on(\"resize\", updateDimension, win);\n}\nconst INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap = /* @__PURE__ */ new WeakMap();\nfunction initInputObserver({\n inputCb,\n doc,\n mirror: mirror2,\n blockClass,\n blockSelector,\n ignoreClass,\n ignoreSelector,\n maskInputOptions,\n maskInputFn,\n sampling,\n userTriggeredOnInput\n}) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && target.tagName;\n if (target && tagName === \"OPTION\") {\n target = index.parentElement(target);\n }\n if (!target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n if (target.classList.contains(ignoreClass) || ignoreSelector && target.matches(ignoreSelector)) {\n return;\n }\n let text = target.value;\n let isChecked = false;\n const type = getInputType(target) || \"\";\n if (type === \"radio\" || type === \"checkbox\") {\n isChecked = target.checked;\n } else if (maskInputOptions[tagName.toLowerCase()] || maskInputOptions[type]) {\n text = maskInputValue({\n element: target,\n maskInputOptions,\n tagName,\n type,\n value: text,\n maskInputFn\n });\n }\n cbWithDedup(\n target,\n userTriggeredOnInput ? { text, isChecked, userTriggered } : { text, isChecked }\n );\n const name = target.name;\n if (type === \"radio\" && name && isChecked) {\n doc.querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`).forEach((el) => {\n if (el !== target) {\n const text2 = el.value;\n cbWithDedup(\n el,\n userTriggeredOnInput ? { text: text2, isChecked: !isChecked, userTriggered: false } : { text: text2, isChecked: !isChecked }\n );\n }\n });\n }\n }\n function cbWithDedup(target, v2) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue || lastInputValue.text !== v2.text || lastInputValue.isChecked !== v2.isChecked) {\n lastInputValueMap.set(target, v2);\n const id = mirror2.getId(target);\n callbackWrapper(inputCb)({\n ...v2,\n id\n });\n }\n }\n const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n const handlers = events.map(\n (eventName) => on(eventName, callbackWrapper(eventHandler), doc)\n );\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n currentWindow.HTMLInputElement.prototype,\n \"value\"\n );\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, \"value\"],\n [currentWindow.HTMLInputElement.prototype, \"checked\"],\n [currentWindow.HTMLSelectElement.prototype, \"value\"],\n [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n // Some UI library use selectedIndex to set select value\n [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n [currentWindow.HTMLOptionElement.prototype, \"selected\"]\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(\n ...hookProperties.map(\n (p) => hookSetter(\n p[0],\n p[1],\n {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false\n // userTriggered to false as this could well be programmatic\n });\n }\n },\n false,\n currentWindow\n )\n )\n );\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule2) {\n const positions = [];\n function recurse(childRule, pos) {\n if (hasNestedCSSRule(\"CSSGroupingRule\") && childRule.parentRule instanceof CSSGroupingRule || hasNestedCSSRule(\"CSSMediaRule\") && childRule.parentRule instanceof CSSMediaRule || hasNestedCSSRule(\"CSSSupportsRule\") && childRule.parentRule instanceof CSSSupportsRule || hasNestedCSSRule(\"CSSConditionRule\") && childRule.parentRule instanceof CSSConditionRule) {\n const rules2 = Array.from(\n childRule.parentRule.cssRules\n );\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n } else if (childRule.parentStyleSheet) {\n const rules2 = Array.from(childRule.parentStyleSheet.cssRules);\n const index2 = rules2.indexOf(childRule);\n pos.unshift(index2);\n }\n return pos;\n }\n return recurse(rule2, positions);\n}\nfunction getIdAndStyleId(sheet, mirror2, styleMirror) {\n let id, styleId;\n if (!sheet) return {};\n if (sheet.ownerNode) id = mirror2.getId(sheet.ownerNode);\n else styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror: mirror2, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule: rule2, index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2 = this.cssRules.length) {\n const rule2 = `${selector} { ${styleBlock} }`;\n return win.CSSStyleSheet.prototype.insertRule.apply(this, [rule2, index2]);\n };\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index: index2 }]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n win.CSSStyleSheet.prototype.removeRule = function(index2) {\n return win.CSSStyleSheet.prototype.deleteRule.apply(this, [index2]);\n };\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n } else {\n if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n insertRule: type.prototype.insertRule,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n deleteRule: type.prototype.deleteRule\n };\n type.prototype.insertRule = new Proxy(\n unmodifiedFunctions[typeKey].insertRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [rule2, index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule: rule2,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index2 || 0\n // defaults to 0\n ]\n }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n type.prototype.deleteRule = new Proxy(\n unmodifiedFunctions[typeKey].deleteRule,\n {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n const [index2] = argumentsList;\n const { id, styleId } = getIdAndStyleId(\n thisArg.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index2] }\n ]\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n }\n );\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({\n mirror: mirror2,\n stylesheetManager\n}, host2) {\n var _a2, _b, _c;\n let hostId = null;\n if (host2.nodeName === \"#document\") hostId = mirror2.getId(host2);\n else hostId = mirror2.getId(index.host(host2));\n const patchTarget = host2.nodeName === \"#document\" ? (_a2 = host2.defaultView) == null ? void 0 : _a2.Document : (_c = (_b = host2.ownerDocument) == null ? void 0 : _b.defaultView) == null ? void 0 : _c.ShadowRoot;\n const originalPropertyDescriptor = (patchTarget == null ? void 0 : patchTarget.prototype) ? Object.getOwnPropertyDescriptor(\n patchTarget == null ? void 0 : patchTarget.prototype,\n \"adoptedStyleSheets\"\n ) : void 0;\n if (hostId === null || hostId === -1 || !patchTarget || !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n var _a3;\n return (_a3 = originalPropertyDescriptor.get) == null ? void 0 : _a3.call(this);\n },\n set(sheets) {\n var _a3;\n const result2 = (_a3 = originalPropertyDescriptor.set) == null ? void 0 : _a3.call(this, sheets);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n } catch (e2) {\n }\n }\n return result2;\n }\n });\n return callbackWrapper(() => {\n Object.defineProperty(host2, \"adoptedStyleSheets\", {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n get: originalPropertyDescriptor.get,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n set: originalPropertyDescriptor.set\n });\n });\n}\nfunction initStyleDeclarationObserver({\n styleDeclarationCb,\n mirror: mirror2,\n ignoreCSSAttributes,\n stylesheetManager\n}, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper(\n (target, thisArg, argumentsList) => {\n var _a2;\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(\n (_a2 = thisArg.parentRule) == null ? void 0 : _a2.parentStyleSheet,\n mirror2,\n stylesheetManager.styleMirror\n );\n if (id && id !== -1 || styleId && styleId !== -1) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property\n },\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n index: getNestedCSSRulePositions(thisArg.parentRule)\n });\n }\n return target.apply(thisArg, argumentsList);\n }\n )\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({\n mediaInteractionCb,\n blockClass,\n blockSelector,\n mirror: mirror2,\n sampling,\n doc\n}) {\n const handler = callbackWrapper(\n (type) => throttle(\n callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate, loop } = target;\n mediaInteractionCb({\n type,\n id: mirror2.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n loop\n });\n }),\n sampling.media || 500\n )\n );\n const handlers = [\n on(\"play\", handler(MediaInteractions.Play), doc),\n on(\"pause\", handler(MediaInteractions.Pause), doc),\n on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n on(\"ratechange\", handler(MediaInteractions.RateChange), doc)\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = /* @__PURE__ */ new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace2(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== \"string\",\n descriptors,\n fontSource: typeof source === \"string\" ? source : JSON.stringify(Array.from(new Uint8Array(source)))\n });\n return fontFace;\n };\n const restoreHandler = patch(\n doc.fonts,\n \"add\",\n function(original) {\n return function(fontFace) {\n setTimeout(\n callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }),\n 0\n );\n return original.apply(this, [fontFace]);\n };\n }\n );\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror: mirror2, blockClass, blockSelector, selectionCb } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || collapsed && (selection == null ? void 0 : selection.isCollapsed)) return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i2 = 0; i2 < count; i2++) {\n const range = selection.getRangeAt(i2);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) || isBlocked(endContainer, blockClass, blockSelector, true);\n if (blocked) continue;\n ranges.push({\n start: mirror2.getId(startContainer),\n startOffset,\n end: mirror2.getId(endContainer),\n endOffset\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on(\"selectionchange\", updateSelection);\n}\nfunction initCustomElementObserver({\n doc,\n customElementCb\n}) {\n const win = doc.defaultView;\n if (!win || !win.customElements) return () => {\n };\n const restoreHandler = patch(\n win.customElements,\n \"define\",\n function(original) {\n return function(name, constructor, options) {\n try {\n customElementCb({\n define: {\n name\n }\n });\n } catch (e2) {\n console.warn(`Custom element callback failed for ${name}`);\n }\n return original.apply(this, [name, constructor, options]);\n };\n }\n );\n return restoreHandler;\n}\nfunction mergeHooks(o2, hooks) {\n const {\n mutationCb,\n mousemoveCb,\n mouseInteractionCb,\n scrollCb,\n viewportResizeCb,\n inputCb,\n mediaInteractionCb,\n styleSheetRuleCb,\n styleDeclarationCb,\n canvasMutationCb,\n fontCb,\n selectionCb,\n customElementCb\n } = o2;\n o2.mutationCb = (...p) => {\n if (hooks.mutation) {\n hooks.mutation(...p);\n }\n mutationCb(...p);\n };\n o2.mousemoveCb = (...p) => {\n if (hooks.mousemove) {\n hooks.mousemove(...p);\n }\n mousemoveCb(...p);\n };\n o2.mouseInteractionCb = (...p) => {\n if (hooks.mouseInteraction) {\n hooks.mouseInteraction(...p);\n }\n mouseInteractionCb(...p);\n };\n o2.scrollCb = (...p) => {\n if (hooks.scroll) {\n hooks.scroll(...p);\n }\n scrollCb(...p);\n };\n o2.viewportResizeCb = (...p) => {\n if (hooks.viewportResize) {\n hooks.viewportResize(...p);\n }\n viewportResizeCb(...p);\n };\n o2.inputCb = (...p) => {\n if (hooks.input) {\n hooks.input(...p);\n }\n inputCb(...p);\n };\n o2.mediaInteractionCb = (...p) => {\n if (hooks.mediaInteaction) {\n hooks.mediaInteaction(...p);\n }\n mediaInteractionCb(...p);\n };\n o2.styleSheetRuleCb = (...p) => {\n if (hooks.styleSheetRule) {\n hooks.styleSheetRule(...p);\n }\n styleSheetRuleCb(...p);\n };\n o2.styleDeclarationCb = (...p) => {\n if (hooks.styleDeclaration) {\n hooks.styleDeclaration(...p);\n }\n styleDeclarationCb(...p);\n };\n o2.canvasMutationCb = (...p) => {\n if (hooks.canvasMutation) {\n hooks.canvasMutation(...p);\n }\n canvasMutationCb(...p);\n };\n o2.fontCb = (...p) => {\n if (hooks.font) {\n hooks.font(...p);\n }\n fontCb(...p);\n };\n o2.selectionCb = (...p) => {\n if (hooks.selection) {\n hooks.selection(...p);\n }\n selectionCb(...p);\n };\n o2.customElementCb = (...c2) => {\n if (hooks.customElement) {\n hooks.customElement(...c2);\n }\n customElementCb(...c2);\n };\n}\nfunction initObservers(o2, hooks = {}) {\n const currentWindow = o2.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n mergeHooks(o2, hooks);\n let mutationObserver;\n if (o2.recordDOM) {\n mutationObserver = initMutationObserver(o2, o2.doc);\n }\n const mousemoveHandler = initMoveObserver(o2);\n const mouseInteractionHandler = initMouseInteractionObserver(o2);\n const scrollHandler = initScrollObserver(o2);\n const viewportResizeHandler = initViewportResizeObserver(o2, {\n win: currentWindow\n });\n const inputHandler = initInputObserver(o2);\n const mediaInteractionHandler = initMediaInteractionObserver(o2);\n let styleSheetObserver = () => {\n };\n let adoptedStyleSheetObserver = () => {\n };\n let styleDeclarationObserver = () => {\n };\n let fontObserver = () => {\n };\n if (o2.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o2, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o2, o2.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o2, {\n win: currentWindow\n });\n if (o2.collectFonts) {\n fontObserver = initFontObserver(o2);\n }\n }\n const selectionObserver = initSelectionObserver(o2);\n const customElementObserver = initCustomElementObserver(o2);\n const pluginHandlers = [];\n for (const plugin of o2.plugins) {\n pluginHandlers.push(\n plugin.observer(plugin.callback, currentWindow, plugin.options)\n );\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver == null ? void 0 : mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== \"undefined\";\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(\n typeof window[prop] !== \"undefined\" && // Note: Generally, this check _shouldn't_ be necessary\n // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n window[prop].prototype && \"insertRule\" in window[prop].prototype && \"deleteRule\" in window[prop].prototype\n );\n}\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n __publicField(this, \"iframeIdToRemoteIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"iframeRemoteIdToIdMap\", /* @__PURE__ */ new WeakMap());\n this.generateIdFn = generateIdFn;\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map(\n (id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap)\n );\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== \"number\") return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId) return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = /* @__PURE__ */ new WeakMap();\n this.iframeRemoteIdToIdMap = /* @__PURE__ */ new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = /* @__PURE__ */ new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = /* @__PURE__ */ new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\nclass IframeManager {\n constructor(options) {\n __publicField(this, \"iframes\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"crossOriginIframeMirror\", new CrossOriginIframeMirror(genId));\n __publicField(this, \"crossOriginIframeStyleMirror\");\n __publicField(this, \"crossOriginIframeRootIdMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"wrappedEmit\");\n __publicField(this, \"loadListener\");\n __publicField(this, \"stylesheetManager\");\n __publicField(this, \"recordCrossOriginIframes\");\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n this.stylesheetManager.styleMirror.generateId.bind(\n this.stylesheetManager.styleMirror\n )\n );\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener(\"message\", this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n var _a2, _b;\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n });\n if (this.recordCrossOriginIframes)\n (_a2 = iframeEl.contentWindow) == null ? void 0 : _a2.addEventListener(\n \"message\",\n this.handleMessage.bind(this)\n );\n (_b = this.loadListener) == null ? void 0 : _b.call(this, iframeEl);\n if (iframeEl.contentDocument && iframeEl.contentDocument.adoptedStyleSheets && iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(\n iframeEl.contentDocument.adoptedStyleSheets,\n this.mirror.getId(iframeEl.contentDocument)\n );\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== \"rrweb\" || // To filter out the rrweb messages which are forwarded by some sites.\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow) return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl) return;\n const transformedEvent = this.transformCrossOriginEvent(\n iframeEl,\n crossOriginMessageEvent.data.event\n );\n if (transformedEvent)\n this.wrappedEmit(\n transformedEvent,\n crossOriginMessageEvent.data.isCheckout\n );\n }\n transformCrossOriginEvent(iframeEl, e2) {\n var _a2;\n switch (e2.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e2.data.node, iframeEl);\n const rootId = e2.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e2.data.node, rootId);\n return {\n timestamp: e2.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e2.data.node\n }\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true\n }\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e2;\n }\n case EventType.Custom: {\n this.replaceIds(\n e2.data.payload,\n iframeEl,\n [\"id\", \"parentId\", \"previousId\", \"nextId\"]\n );\n return e2;\n }\n case EventType.IncrementalSnapshot: {\n switch (e2.data.source) {\n case IncrementalSource.Mutation: {\n e2.data.adds.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\n \"parentId\",\n \"nextId\",\n \"previousId\"\n ]);\n this.replaceIdOnNode(n2.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n2.node, rootId);\n });\n e2.data.removes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"parentId\", \"id\"]);\n });\n e2.data.attributes.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n e2.data.texts.forEach((n2) => {\n this.replaceIds(n2, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e2.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, [\"id\"]);\n });\n return e2;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n return e2;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleId\"]);\n return e2;\n }\n case IncrementalSource.Font: {\n return e2;\n }\n case IncrementalSource.Selection: {\n e2.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, [\"start\", \"end\"]);\n });\n return e2;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e2.data, iframeEl, [\"id\"]);\n this.replaceStyleIds(e2.data, iframeEl, [\"styleIds\"]);\n (_a2 = e2.data.styles) == null ? void 0 : _a2.forEach((style) => {\n this.replaceStyleIds(style, iframeEl, [\"styleId\"]);\n });\n return e2;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== \"number\") continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(\n iframeEl,\n obj[key]\n );\n } else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node2, iframeEl) {\n this.replaceIds(node2, iframeEl, [\"id\", \"rootId\"]);\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node2, rootId) {\n if (node2.type !== NodeType.Document && !node2.rootId) node2.rootId = rootId;\n if (\"childNodes\" in node2) {\n node2.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n __publicField(this, \"shadowDoms\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"scrollCb\");\n __publicField(this, \"bypassOptions\");\n __publicField(this, \"mirror\");\n __publicField(this, \"restoreHandlers\", []);\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot2, doc) {\n if (!isNativeShadowDom(shadowRoot2)) return;\n if (this.shadowDoms.has(shadowRoot2)) return;\n this.shadowDoms.add(shadowRoot2);\n const observer = initMutationObserver(\n {\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this\n },\n shadowRoot2\n );\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(\n initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n doc: shadowRoot2,\n mirror: this.mirror\n })\n );\n setTimeout(() => {\n if (shadowRoot2.adoptedStyleSheets && shadowRoot2.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(\n shadowRoot2.adoptedStyleSheets,\n this.mirror.getId(index.host(shadowRoot2))\n );\n this.restoreHandlers.push(\n initAdoptedStyleSheetObserver(\n {\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager\n },\n shadowRoot2\n )\n );\n }, 0);\n }\n /**\n * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n */\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n this.patchAttachShadow(\n iframeElement.contentWindow.Element,\n iframeElement.contentDocument\n );\n }\n /**\n * Patch 'attachShadow' to observe newly added shadow doms.\n */\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(\n patch(\n element.prototype,\n \"attachShadow\",\n function(original) {\n return function(option) {\n const sRoot = original.call(this, option);\n const shadowRootEl = index.shadowRoot(this);\n if (shadowRootEl && inDom(this))\n manager.addShadowRoot(shadowRootEl, doc);\n return sRoot;\n };\n }\n )\n );\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n } catch (e2) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = /* @__PURE__ */ new WeakSet();\n }\n}\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\nfor (var i$1 = 0; i$1 < chars.length; i$1++) {\n lookup[chars.charCodeAt(i$1)] = i$1;\n}\nvar encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\n for (i2 = 0; i2 < len; i2 += 3) {\n base64 += chars[bytes[i2] >> 2];\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\n base64 += chars[bytes[i2 + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n return base64;\n};\nconst canvasVarMap = /* @__PURE__ */ new Map();\nfunction variableListFor$1(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = /* @__PURE__ */ new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value || !(isInstanceOfWebGLObject(value, win) || typeof value === \"object\"))\n return;\n const name = value.constructor.name;\n const list = variableListFor$1(ctx, name);\n let index2 = list.indexOf(value);\n if (index2 === -1) {\n index2 = list.length;\n list.push(value);\n }\n return index2;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n } else if (value === null) {\n return value;\n } else if (value instanceof Float32Array || value instanceof Float64Array || value instanceof Int32Array || value instanceof Uint32Array || value instanceof Uint8Array || value instanceof Uint16Array || value instanceof Int16Array || value instanceof Int8Array || value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)]\n };\n } else if (\n // SharedArrayBuffer disabled on most browsers due to spectre.\n // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n // value instanceof SharedArrayBuffer ||\n value instanceof ArrayBuffer\n ) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64\n };\n } else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength\n ]\n };\n } else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof HTMLCanvasElement) {\n const name = \"HTMLImageElement\";\n const src = value.toDataURL();\n return {\n rr_type: name,\n src\n };\n } else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height]\n };\n } else if (isInstanceOfWebGLObject(value, win) || typeof value === \"object\") {\n const name = value.constructor.name;\n const index2 = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index2\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n \"WebGLActiveInfo\",\n \"WebGLBuffer\",\n \"WebGLFramebuffer\",\n \"WebGLProgram\",\n \"WebGLRenderbuffer\",\n \"WebGLShader\",\n \"WebGLShaderPrecisionFormat\",\n \"WebGLTexture\",\n \"WebGLUniformLocation\",\n \"WebGLVertexArrayObject\",\n // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n \"WebGLVertexArrayObjectOES\"\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n (name) => typeof win[name] === \"function\"\n );\n return Boolean(\n supportedWebGLConstructorNames.find(\n (name) => value instanceof win[name]\n )\n );\n};\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(\n win.CanvasRenderingContext2D.prototype\n );\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n win.CanvasRenderingContext2D.prototype,\n prop,\n function(original) {\n return function(...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: recordArgs\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(\n win.CanvasRenderingContext2D.prototype,\n prop,\n {\n set(v2) {\n cb(this.canvas, {\n type: CanvasContext[\"2D\"],\n property: prop,\n args: [v2],\n setter: true\n });\n }\n }\n );\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction getNormalizedContextName(contextType) {\n return contextType === \"experimental-webgl\" ? \"webgl\" : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(\n win.HTMLCanvasElement.prototype,\n \"getContext\",\n function(original) {\n return function(contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!(\"__context\" in this)) this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue && [\"webgl\", \"webgl2\"].includes(ctxName)) {\n if (args[0] && typeof args[0] === \"object\") {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n } else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n console.error(\"failed to patch HTMLCanvasElement.prototype.getContext\");\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if (\n //prop.startsWith('get') || // e.g. getProgramParameter, but too risky\n [\n \"isContextLost\",\n \"canvas\",\n \"drawingBufferWidth\",\n \"drawingBufferHeight\"\n ].includes(prop)\n ) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== \"function\") {\n continue;\n }\n const restoreHandler = patch(\n prototype,\n prop,\n function(original) {\n return function(...args) {\n const result2 = original.apply(this, args);\n saveWebGLVar(result2, win, this);\n if (\"tagName\" in this.canvas && !isBlocked(this.canvas, blockClass, blockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs\n };\n cb(this.canvas, mutation);\n }\n return result2;\n };\n }\n );\n handlers.push(restoreHandler);\n } catch {\n const hookHandler = hookSetter(prototype, prop, {\n set(v2) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v2],\n setter: true\n });\n }\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector) {\n const handlers = [];\n handlers.push(\n ...patchGLPrototype(\n win.WebGLRenderingContext.prototype,\n CanvasContext.WebGL,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n if (typeof win.WebGL2RenderingContext !== \"undefined\") {\n handlers.push(\n ...patchGLPrototype(\n win.WebGL2RenderingContext.prototype,\n CanvasContext.WebGL2,\n cb,\n blockClass,\n blockSelector,\n win\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\nconst jsContent = '(function() {\\n \"use strict\";\\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\\n var lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\\n for (var i = 0; i < chars.length; i++) {\\n lookup[chars.charCodeAt(i)] = i;\\n }\\n var encode = function(arraybuffer) {\\n var bytes = new Uint8Array(arraybuffer), i2, len = bytes.length, base64 = \"\";\\n for (i2 = 0; i2 < len; i2 += 3) {\\n base64 += chars[bytes[i2] >> 2];\\n base64 += chars[(bytes[i2] & 3) << 4 | bytes[i2 + 1] >> 4];\\n base64 += chars[(bytes[i2 + 1] & 15) << 2 | bytes[i2 + 2] >> 6];\\n base64 += chars[bytes[i2 + 2] & 63];\\n }\\n if (len % 3 === 2) {\\n base64 = base64.substring(0, base64.length - 1) + \"=\";\\n } else if (len % 3 === 1) {\\n base64 = base64.substring(0, base64.length - 2) + \"==\";\\n }\\n return base64;\\n };\\n const lastBlobMap = /* @__PURE__ */ new Map();\\n const transparentBlobMap = /* @__PURE__ */ new Map();\\n async function getTransparentBlobFor(width, height, dataURLOptions) {\\n const id = `${width}-${height}`;\\n if (\"OffscreenCanvas\" in globalThis) {\\n if (transparentBlobMap.has(id)) return transparentBlobMap.get(id);\\n const offscreen = new OffscreenCanvas(width, height);\\n offscreen.getContext(\"2d\");\\n const blob = await offscreen.convertToBlob(dataURLOptions);\\n const arrayBuffer = await blob.arrayBuffer();\\n const base64 = encode(arrayBuffer);\\n transparentBlobMap.set(id, base64);\\n return base64;\\n } else {\\n return \"\";\\n }\\n }\\n const worker = self;\\n worker.onmessage = async function(e) {\\n if (\"OffscreenCanvas\" in globalThis) {\\n const { id, bitmap, width, height, dataURLOptions } = e.data;\\n const transparentBase64 = getTransparentBlobFor(\\n width,\\n height,\\n dataURLOptions\\n );\\n const offscreen = new OffscreenCanvas(width, height);\\n const ctx = offscreen.getContext(\"2d\");\\n ctx.drawImage(bitmap, 0, 0);\\n bitmap.close();\\n const blob = await offscreen.convertToBlob(dataURLOptions);\\n const type = blob.type;\\n const arrayBuffer = await blob.arrayBuffer();\\n const base64 = encode(arrayBuffer);\\n if (!lastBlobMap.has(id) && await transparentBase64 === base64) {\\n lastBlobMap.set(id, base64);\\n return worker.postMessage({ id });\\n }\\n if (lastBlobMap.get(id) === base64) return worker.postMessage({ id });\\n worker.postMessage({\\n id,\\n type,\\n base64,\\n width,\\n height\\n });\\n lastBlobMap.set(id, base64);\\n } else {\\n return worker.postMessage({ id: e.data.id });\\n }\\n };\\n})();\\n//# sourceMappingURL=image-bitmap-data-url-worker-IJpC7g_b.js.map\\n';\nconst blob = typeof self !== \"undefined\" && self.Blob && new Blob([jsContent], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options == null ? void 0 : options.name\n });\n worker.addEventListener(\"error\", () => {\n (self.URL || self.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e2) {\n return new Worker(\n \"data:text/javascript;charset=utf-8,\" + encodeURIComponent(jsContent),\n {\n name: options == null ? void 0 : options.name\n }\n );\n } finally {\n objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL);\n }\n}\nclass CanvasManager {\n constructor(options) {\n __publicField(this, \"pendingCanvasMutations\", /* @__PURE__ */ new Map());\n __publicField(this, \"rafStamps\", { latestId: 0, invokeId: null });\n __publicField(this, \"mirror\");\n __publicField(this, \"mutationCb\");\n __publicField(this, \"resetObservers\");\n __publicField(this, \"frozen\", false);\n __publicField(this, \"locked\", false);\n __publicField(this, \"processMutation\", (target, mutation) => {\n const newFrame = this.rafStamps.invokeId && this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n });\n const {\n sampling = \"all\",\n win,\n blockClass,\n blockSelector,\n recordCanvas,\n dataURLOptions\n } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n if (recordCanvas && sampling === \"all\")\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\n if (recordCanvas && typeof sampling === \"number\")\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n dataURLOptions\n });\n }\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n true\n );\n const snapshotInProgressMap = /* @__PURE__ */ new Map();\n const worker = new WorkerWrapper();\n worker.onmessage = (e2) => {\n const { id } = e2.data;\n snapshotInProgressMap.set(id, false);\n if (!(\"base64\" in e2.data)) return;\n const { base64, type, width, height } = e2.data;\n this.mutationCb({\n id,\n type: CanvasContext[\"2D\"],\n commands: [\n {\n property: \"clearRect\",\n // wipe canvas\n args: [0, 0, width, height]\n },\n {\n property: \"drawImage\",\n // draws (semi-transparent) image\n args: [\n {\n rr_type: \"ImageBitmap\",\n args: [\n {\n rr_type: \"Blob\",\n data: [{ rr_type: \"ArrayBuffer\", base64 }],\n type\n }\n ]\n },\n 0,\n 0\n ]\n }\n ]\n });\n };\n const timeBetweenSnapshots = 1e3 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = () => {\n const matchedCanvas = [];\n const searchCanvas = (haystack) => {\n haystack.querySelectorAll(\"canvas\").forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n haystack.querySelectorAll(\"*\").forEach((elem) => {\n if (elem.shadowRoot) {\n searchCanvas(elem.shadowRoot);\n }\n });\n };\n searchCanvas(win.document);\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime && timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas().forEach(async (canvas) => {\n var _a2;\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id)) return;\n if (canvas.width === 0 || canvas.height === 0) return;\n snapshotInProgressMap.set(id, true);\n if ([\"webgl\", \"webgl2\"].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (((_a2 = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a2.preserveDrawingBuffer) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n const width = canvas.clientWidth || canvas.width;\n const height = canvas.clientHeight || canvas.height;\n const bitmap = await createImageBitmap(canvas, {\n resizeWidth: width,\n resizeHeight: height\n });\n worker.postMessage(\n {\n id,\n bitmap,\n width,\n height,\n dataURLOptions: options.dataURLOptions\n },\n [bitmap]\n );\n });\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = requestAnimationFrame(takeCanvasSnapshots);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(\n win,\n blockClass,\n blockSelector,\n false\n );\n const canvas2DReset = initCanvas2DMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n this.processMutation.bind(this),\n win,\n blockClass,\n blockSelector\n );\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n startPendingCanvasMutationFlusher() {\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n requestAnimationFrame(setLatestRAFTimestamp);\n };\n requestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach(\n (_values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n }\n );\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1) return;\n const values = valuesWithType.map((value) => {\n const { type: type2, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\nclass StylesheetManager {\n constructor(options) {\n __publicField(this, \"trackedLinkElements\", /* @__PURE__ */ new WeakSet());\n __publicField(this, \"mutationCb\");\n __publicField(this, \"adoptedStyleSheetCb\");\n __publicField(this, \"styleMirror\", new StyleSheetMirror());\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if (\"_cssText\" in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn.attributes\n }\n ]\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl)) return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0) return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: []\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r2, index2) => ({\n rule: stringifyRule(r2, sheet.href),\n index: index2\n }))\n });\n } else styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = /* @__PURE__ */ new WeakSet();\n }\n // TODO: take snapshot on stylesheet reload by applying event listener\n trackStylesheetInLinkElement(_linkEl) {\n }\n}\nclass ProcessedNodeManager {\n constructor() {\n __publicField(this, \"nodeMap\", /* @__PURE__ */ new WeakMap());\n __publicField(this, \"active\", false);\n }\n inOtherBuffer(node2, thisBuffer) {\n const buffers = this.nodeMap.get(node2);\n return buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer);\n }\n add(node2, buffer) {\n if (!this.active) {\n this.active = true;\n requestAnimationFrame(() => {\n this.nodeMap = /* @__PURE__ */ new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node2, (this.nodeMap.get(node2) || /* @__PURE__ */ new Set()).add(buffer));\n }\n destroy() {\n }\n}\nlet wrappedEmit;\nlet takeFullSnapshot$1;\nlet canvasManager;\nlet recording = false;\ntry {\n if (Array.from([1], (x) => x * 2)[0] !== 2) {\n const cleanFrame = document.createElement(\"iframe\");\n document.body.appendChild(cleanFrame);\n Array.from = ((_a = cleanFrame.contentWindow) == null ? void 0 : _a.Array.from) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n} catch (err) {\n console.debug(\"Unable to override Array.from\", err);\n}\nconst mirror = createMirror$2();\nfunction record(options = {}) {\n const {\n emit,\n checkoutEveryNms,\n checkoutEveryNth,\n blockClass = \"rr-block\",\n blockSelector = null,\n ignoreClass = \"rr-ignore\",\n ignoreSelector = null,\n maskTextClass = \"rr-mask\",\n maskTextSelector = null,\n inlineStylesheet = true,\n maskAllInputs,\n maskInputOptions: _maskInputOptions,\n slimDOMOptions: _slimDOMOptions,\n maskInputFn,\n maskTextFn,\n hooks,\n packFn,\n sampling = {},\n dataURLOptions = {},\n mousemoveWait,\n recordDOM = true,\n recordCanvas = false,\n recordCrossOriginIframes = false,\n recordAfter = options.recordAfter === \"DOMContentLoaded\" ? options.recordAfter : \"load\",\n userTriggeredOnInput = false,\n collectFonts = false,\n inlineImages = false,\n plugins,\n keepIframeSrcFn = () => false,\n ignoreCSSAttributes = /* @__PURE__ */ new Set([]),\n errorHandler: errorHandler2\n } = options;\n registerErrorHandler(errorHandler2);\n const inEmittingFrame = recordCrossOriginIframes ? window.parent === window : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n } catch (e2) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error(\"emit function is required\");\n }\n if (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\n }\n if (mousemoveWait !== void 0 && sampling.mousemove === void 0) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true ? {\n color: true,\n date: true,\n \"datetime-local\": true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n password: true\n } : _maskInputOptions !== void 0 ? _maskInputOptions : { password: true };\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === \"all\" ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n // the following are off for slimDOMOptions === true,\n // as they destroy some (hidden) info:\n headMetaAuthorship: _slimDOMOptions === \"all\",\n headMetaDescKeywords: _slimDOMOptions === \"all\",\n headTitleMutations: _slimDOMOptions === \"all\"\n } : _slimDOMOptions ? _slimDOMOptions : {};\n polyfill$1();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e2) => {\n for (const plugin of plugins || []) {\n if (plugin.eventProcessor) {\n e2 = plugin.eventProcessor(e2);\n }\n }\n if (packFn && // Disable packing events which will be emitted to parent frames.\n !passEmitsToParent) {\n e2 = packFn(e2);\n }\n return e2;\n };\n wrappedEmit = (r2, isCheckout) => {\n var _a2;\n const e2 = r2;\n e2.timestamp = nowTimestamp();\n if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);\n } else if (passEmitsToParent) {\n const message = {\n type: \"rrweb\",\n event: eventProcessor(e2),\n origin: window.location.origin,\n isCheckout\n };\n window.parent.postMessage(message, \"*\");\n }\n if (e2.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e2;\n incrementalSnapshotCount = 0;\n } else if (e2.type === EventType.IncrementalSnapshot) {\n if (e2.data.source === IncrementalSource.Mutation && e2.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot$1(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m\n }\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p\n }\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p\n }\n });\n const wrappedAdoptedStyleSheetEmit = (a2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a2\n }\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit\n });\n const iframeManager = new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit\n });\n for (const plugin of plugins || []) {\n if (plugin.getMirror)\n plugin.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n canvasManager = new CanvasManager({\n recordCanvas,\n mutationCb: wrappedCanvasMutationEmit,\n win: window,\n blockClass,\n blockSelector,\n mirror,\n sampling: sampling.canvas,\n dataURLOptions\n });\n const shadowDomManager = new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager\n },\n mirror\n });\n takeFullSnapshot$1 = (isCheckout = false) => {\n if (!recordDOM) {\n return;\n }\n wrappedEmit(\n {\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight()\n }\n },\n isCheckout\n );\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node2 = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskTextFn,\n maskInputFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n2) => {\n if (isSerializedIframe(n2, mirror)) {\n iframeManager.addIframe(n2);\n }\n if (isSerializedStylesheet(n2, mirror)) {\n stylesheetManager.trackLinkElement(n2);\n }\n if (hasShadowRoot(n2)) {\n shadowDomManager.addShadowRoot(index.shadowRoot(n2), document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn\n });\n if (!node2) {\n return console.warn(\"Failed to snapshot the document\");\n }\n wrappedEmit(\n {\n type: EventType.FullSnapshot,\n data: {\n node: node2,\n initialOffset: getWindowScroll(window)\n }\n },\n isCheckout\n );\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(\n document.adoptedStyleSheets,\n mirror.getId(document)\n );\n };\n try {\n const handlers = [];\n const observe = (doc) => {\n var _a2;\n return callbackWrapper(initObservers)(\n {\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions\n }\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d\n }\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d\n }\n }),\n inputCb: (v2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v2\n }\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p\n }\n }),\n styleSheetRuleCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r2\n }\n }),\n styleDeclarationCb: (r2) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r2\n }\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p\n }\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p\n }\n });\n },\n customElementCb: (c2) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c2\n }\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskTextClass,\n maskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordDOM,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: ((_a2 = plugins == null ? void 0 : plugins.filter((p) => p.observer)) == null ? void 0 : _a2.map((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload\n }\n })\n }))) || []\n },\n hooks\n );\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n } catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot$1();\n handlers.push(observe(document));\n recording = true;\n };\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n init();\n } else {\n handlers.push(\n on(\"DOMContentLoaded\", () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {}\n });\n if (recordAfter === \"DOMContentLoaded\") init();\n })\n );\n handlers.push(\n on(\n \"load\",\n () => {\n wrappedEmit({\n type: EventType.Load,\n data: {}\n });\n if (recordAfter === \"load\") init();\n },\n window\n )\n );\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n recording = false;\n unregisterErrorHandler();\n };\n } catch (error) {\n console.warn(error);\n }\n}\nrecord.addCustomEvent = (tag, payload) => {\n if (!recording) {\n throw new Error(\"please add custom event after start recording\");\n }\n wrappedEmit({\n type: EventType.Custom,\n data: {\n tag,\n payload\n }\n });\n};\nrecord.freezePage = () => {\n mutationBuffers.forEach((buf) => buf.freeze());\n};\nrecord.takeFullSnapshot = (isCheckout) => {\n if (!recording) {\n throw new Error(\"please take full snapshot after start recording\");\n }\n takeFullSnapshot$1(isCheckout);\n};\nrecord.mirror = mirror;\nvar n;\n!function(t2) {\n t2[t2.NotStarted = 0] = \"NotStarted\", t2[t2.Running = 1] = \"Running\", t2[t2.Stopped = 2] = \"Stopped\";\n}(n || (n = {}));\nconst { addCustomEvent } = record;\nconst { freezePage } = record;\nconst { takeFullSnapshot } = record;\nexport {\n record\n};\n//# sourceMappingURL=rrweb-record.js.map\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original\n }\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n } catch {\n return () => {\n };\n }\n}\nclass StackFrame {\n constructor(obj) {\n __publicField(this, \"fileName\");\n __publicField(this, \"functionName\");\n __publicField(this, \"lineNumber\");\n __publicField(this, \"columnNumber\");\n this.fileName = obj.fileName || \"\";\n this.functionName = obj.functionName || \"\";\n this.lineNumber = obj.lineNumber;\n this.columnNumber = obj.columnNumber;\n }\n toString() {\n const lineNumber = this.lineNumber || \"\";\n const columnNumber = this.columnNumber || \"\";\n if (this.functionName)\n return `${this.functionName} (${this.fileName}:${lineNumber}:${columnNumber})`;\n return `${this.fileName}:${lineNumber}:${columnNumber}`;\n }\n}\nconst FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\nconst ErrorStackParser = {\n /**\n * Given an Error object, extract the most information from it.\n */\n parse: function(error) {\n if (!error) {\n return [];\n }\n if (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error.stacktrace !== \"undefined\" || // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n typeof error[\"opera#sourceloc\"] !== \"undefined\"\n ) {\n return this.parseOpera(\n error\n );\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n console.warn(\n \"[console-record-plugin]: Failed to parse error object:\",\n error\n );\n return [];\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function(urlLike) {\n if (urlLike.indexOf(\":\") === -1) {\n return [urlLike];\n }\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n if (!parts) throw new Error(`Cannot parse given url: ${urlLike}`);\n return [parts[1], parts[2] || void 0, parts[3] || void 0];\n },\n parseV8OrIE: function(error) {\n const filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\"(eval \") > -1) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(\\),.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\");\n const location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const tokens = sanitizedLine.split(/\\s+/).slice(1);\n const locationParts = this.extractLocation(\n location ? location[1] : tokens.pop()\n );\n const functionName = tokens.join(\" \") || void 0;\n const fileName = [\"eval\", \"<anonymous>\"].indexOf(locationParts[0]) > -1 ? void 0 : locationParts[0];\n return new StackFrame({\n functionName,\n fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n },\n parseFFOrSafari: function(error) {\n const filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function(line) {\n if (line.indexOf(\" > eval\") > -1) {\n line = line.replace(\n / line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g,\n \":$1\"\n );\n }\n if (line.indexOf(\"@\") === -1 && line.indexOf(\":\") === -1) {\n return new StackFrame({\n functionName: line\n });\n } else {\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : void 0;\n const locationParts = this.extractLocation(\n line.replace(functionNameRegex, \"\")\n );\n return new StackFrame({\n functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }\n }, this);\n },\n parseOpera: function(e) {\n if (!e.stacktrace || e.message.indexOf(\"\\n\") > -1 && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function(e) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n })\n );\n }\n }\n return result;\n },\n parseOpera10: function(e) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || void 0,\n fileName: match[2],\n lineNumber: parseFloat(match[1])\n })\n );\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function(error) {\n const filtered = error.stack.split(\"\\n\").filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function(line) {\n const tokens = line.split(\"@\");\n const locationParts = this.extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(/<anonymous function(: (\\w+))?>/, \"$2\").replace(/\\([^)]*\\)/g, \"\") || void 0;\n return new StackFrame({\n functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2]\n });\n }, this);\n }\n};\nfunction pathToSelector(node) {\n if (!node || !node.outerHTML) {\n return \"\";\n }\n let path = \"\";\n while (node.parentElement) {\n let name = node.localName;\n if (!name) {\n break;\n }\n name = name.toLowerCase();\n const parent = node.parentElement;\n const domSiblings = [];\n if (parent.children && parent.children.length > 0) {\n for (let i = 0; i < parent.children.length; i++) {\n const sibling = parent.children[i];\n if (sibling.localName && sibling.localName.toLowerCase) {\n if (sibling.localName.toLowerCase() === name) {\n domSiblings.push(sibling);\n }\n }\n }\n }\n if (domSiblings.length > 1) {\n name += `:eq(${domSiblings.indexOf(node)})`;\n }\n path = name + (path ? \">\" + path : \"\");\n node = parent;\n }\n return path;\n}\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isObjTooDeep(obj, limit) {\n if (limit === 0) {\n return true;\n }\n const keys = Object.keys(obj);\n for (const key of keys) {\n if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {\n return true;\n }\n }\n return false;\n}\nfunction stringify(obj, stringifyOptions) {\n const options = {\n numOfKeysLimit: 50,\n depthOfLimit: 4\n };\n Object.assign(options, stringifyOptions);\n const stack = [];\n const keys = [];\n return JSON.stringify(\n obj,\n function(key, value) {\n if (stack.length > 0) {\n const thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) {\n if (stack[0] === value) {\n value = \"[Circular ~]\";\n } else {\n value = \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n }\n }\n } else {\n stack.push(value);\n }\n if (value === null) return value;\n if (value === void 0) return \"undefined\";\n if (shouldIgnore(value)) {\n return toString(value);\n }\n if (typeof value === \"bigint\") {\n return value.toString() + \"n\";\n }\n if (value instanceof Event) {\n const eventResult = {};\n for (const eventKey in value) {\n const eventValue = value[eventKey];\n if (Array.isArray(eventValue)) {\n eventResult[eventKey] = pathToSelector(\n eventValue.length ? eventValue[0] : null\n );\n } else {\n eventResult[eventKey] = eventValue;\n }\n }\n return eventResult;\n } else if (value instanceof Node) {\n if (value instanceof HTMLElement) {\n return value ? value.outerHTML : \"\";\n }\n return value.nodeName;\n } else if (value instanceof Error) {\n return value.stack ? value.stack + \"\\nEnd of stack for Error object\" : value.name + \": \" + value.message;\n }\n return value;\n }\n );\n function shouldIgnore(_obj) {\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\n return true;\n }\n if (typeof _obj === \"function\") {\n return true;\n }\n if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {\n return true;\n }\n return false;\n }\n function toString(_obj) {\n let str = _obj.toString();\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\n str = `${str.slice(0, options.stringLengthLimit)}...`;\n }\n return str;\n }\n}\nconst defaultLogOptions = {\n level: [\n \"assert\",\n \"clear\",\n \"count\",\n \"countReset\",\n \"debug\",\n \"dir\",\n \"dirxml\",\n \"error\",\n \"group\",\n \"groupCollapsed\",\n \"groupEnd\",\n \"info\",\n \"log\",\n \"table\",\n \"time\",\n \"timeEnd\",\n \"timeLog\",\n \"trace\",\n \"warn\"\n ],\n lengthThreshold: 1e3,\n logger: \"console\"\n};\nfunction initLogObserver(cb, win, options) {\n const logOptions = options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions;\n const loggerType = logOptions.logger;\n if (!loggerType) {\n return () => {\n };\n }\n let logger;\n if (typeof loggerType === \"string\") {\n logger = win[loggerType];\n } else {\n logger = loggerType;\n }\n let logCount = 0;\n let inStack = false;\n const cancelHandlers = [];\n if (logOptions.level.includes(\"error\")) {\n const errorHandler = (event) => {\n const message = event.message, error = event.error;\n const trace = ErrorStackParser.parse(error).map(\n (stackFrame) => stackFrame.toString()\n );\n const payload = [stringify(message, logOptions.stringifyOptions)];\n cb({\n level: \"error\",\n trace,\n payload\n });\n };\n win.addEventListener(\"error\", errorHandler);\n cancelHandlers.push(() => {\n win.removeEventListener(\"error\", errorHandler);\n });\n const unhandledrejectionHandler = (event) => {\n let error;\n let payload;\n if (event.reason instanceof Error) {\n error = event.reason;\n payload = [\n stringify(\n `Uncaught (in promise) ${error.name}: ${error.message}`,\n logOptions.stringifyOptions\n )\n ];\n } else {\n error = new Error();\n payload = [\n stringify(\"Uncaught (in promise)\", logOptions.stringifyOptions),\n stringify(event.reason, logOptions.stringifyOptions)\n ];\n }\n const trace = ErrorStackParser.parse(error).map(\n (stackFrame) => stackFrame.toString()\n );\n cb({\n level: \"error\",\n trace,\n payload\n });\n };\n win.addEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n cancelHandlers.push(() => {\n win.removeEventListener(\"unhandledrejection\", unhandledrejectionHandler);\n });\n }\n for (const levelType of logOptions.level) {\n cancelHandlers.push(replace(logger, levelType));\n }\n return () => {\n cancelHandlers.forEach((h) => h());\n };\n function replace(_logger, level) {\n if (!_logger[level]) {\n return () => {\n };\n }\n return patch(\n _logger,\n level,\n (original) => {\n return (...args) => {\n original.apply(this, args);\n if (level === \"assert\" && !!args[0]) {\n return;\n }\n if (inStack) {\n return;\n }\n inStack = true;\n try {\n const trace = ErrorStackParser.parse(new Error()).map((stackFrame) => stackFrame.toString()).splice(1);\n const argsForPayload = level === \"assert\" ? args.slice(1) : args;\n const payload = argsForPayload.map(\n (s) => stringify(s, logOptions.stringifyOptions)\n );\n logCount++;\n if (logCount < logOptions.lengthThreshold) {\n cb({\n level,\n trace,\n payload\n });\n } else if (logCount === logOptions.lengthThreshold) {\n cb({\n level: \"warn\",\n trace: [],\n payload: [\n stringify(\"The number of log records reached the threshold.\")\n ]\n });\n }\n } catch (error) {\n original(\"rrweb logger error:\", error, ...args);\n } finally {\n inStack = false;\n }\n };\n }\n );\n }\n}\nconst PLUGIN_NAME = \"rrweb/console@1\";\nconst getRecordConsolePlugin = (options) => ({\n name: PLUGIN_NAME,\n observer: initLogObserver,\n options\n});\nexport {\n PLUGIN_NAME,\n getRecordConsolePlugin\n};\n//# sourceMappingURL=rrweb-plugin-console-record.js.map\n","import { ErrorProperties } from '../extensions/exception-autocapture/error-conversion'\nimport type { PostHog } from '../posthog-core'\nimport { SessionIdManager } from '../sessionid'\nimport {\n DeadClicksAutoCaptureConfig,\n ErrorConversionArgs,\n ErrorMetadata,\n Properties,\n RemoteConfig,\n SiteAppLoader,\n} from '../types'\n\n/*\n * Global helpers to protect access to browser globals in a way that is safer for different targets\n * like DOM, SSR, Web workers etc.\n *\n * NOTE: Typically we want the \"window\" but globalThis works for both the typical browser context as\n * well as other contexts such as the web worker context. Window is still exported for any bits that explicitly require it.\n * If in doubt - export the global you need from this file and use that as an optional value. This way the code path is forced\n * to handle the case where the global is not available.\n */\n\n// eslint-disable-next-line no-restricted-globals\nconst win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\n\nexport type AssignableWindow = Window &\n typeof globalThis &\n Record<string, any> & {\n __PosthogExtensions__?: PostHogExtensions\n\n _POSTHOG_REMOTE_CONFIG?: Record<\n string,\n {\n config: RemoteConfig\n siteApps: SiteAppLoader[]\n }\n >\n }\n\n/**\n * This is our contract between (potentially) lazily loaded extensions and the SDK\n * changes to this interface can be breaking changes for users of the SDK\n */\n\nexport type PostHogExtensionKind =\n | 'toolbar'\n | 'exception-autocapture'\n | 'web-vitals'\n | 'recorder'\n | 'tracing-headers'\n | 'surveys'\n | 'dead-clicks-autocapture'\n | 'remote-config'\n\nexport interface LazyLoadedDeadClicksAutocaptureInterface {\n start: (observerTarget: Node) => void\n stop: () => void\n}\n\ninterface PostHogExtensions {\n loadExternalDependency?: (\n posthog: PostHog,\n kind: PostHogExtensionKind,\n callback: (error?: string | Event, event?: Event) => void\n ) => void\n\n loadSiteApp?: (posthog: PostHog, appUrl: string, callback: (error?: string | Event, event?: Event) => void) => void\n\n parseErrorAsProperties?: ({ error, event }: ErrorConversionArgs, metadata?: ErrorMetadata) => ErrorProperties\n errorWrappingFunctions?: {\n wrapOnError: (captureFn: (props: Properties) => void) => () => void\n wrapUnhandledRejection: (captureFn: (props: Properties) => void) => () => void\n }\n rrweb?: { record: any; version: string }\n rrwebPlugins?: { getRecordConsolePlugin: any; getRecordNetworkPlugin?: any }\n canActivateRepeatedly?: (survey: any) => boolean\n generateSurveys?: (posthog: PostHog) => any | undefined\n postHogWebVitalsCallbacks?: {\n onLCP: (metric: any) => void\n onCLS: (metric: any) => void\n onFCP: (metric: any) => void\n onINP: (metric: any) => void\n }\n tracingHeadersPatchFns?: {\n _patchFetch: (sessionManager?: SessionIdManager) => () => void\n _patchXHR: (sessionManager?: SessionIdManager) => () => void\n }\n initDeadClicksAutocapture?: (\n ph: PostHog,\n config: DeadClicksAutoCaptureConfig\n ) => LazyLoadedDeadClicksAutocaptureInterface\n}\n\nconst global: typeof globalThis | undefined = typeof globalThis !== 'undefined' ? globalThis : win\n\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n\nexport const navigator = global?.navigator\nexport const document = global?.document\nexport const location = global?.location\nexport const fetch = global?.fetch\nexport const XMLHttpRequest =\n global?.XMLHttpRequest && 'withCredentials' in new global.XMLHttpRequest() ? global.XMLHttpRequest : undefined\nexport const AbortController = global?.AbortController\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: AssignableWindow = win ?? ({} as any)\n\nexport { win as window }\n","import type { recordOptions } from './extensions/replay/types/rrweb'\nimport type { SegmentAnalytics } from './extensions/segment-integration'\nimport { PostHog } from './posthog-core'\n\nexport type Property = any\nexport type Properties = Record<string, Property>\n\nexport const COPY_AUTOCAPTURE_EVENT = '$copy_autocapture'\n\nexport const knownUnsafeEditableEvent = [\n '$snapshot',\n '$pageview',\n '$pageleave',\n '$set',\n 'survey dismissed',\n 'survey sent',\n 'survey shown',\n '$identify',\n '$groupidentify',\n '$create_alias',\n '$$client_ingestion_warning',\n '$web_experiment_applied',\n '$feature_enrollment_update',\n '$feature_flag_called',\n] as const\n\n/**\n * These events can be processed by the `beforeCapture` function\n * but can cause unexpected confusion in data.\n *\n * Some features of PostHog rely on receiving 100% of these events\n */\nexport type KnownUnsafeEditableEvent = (typeof knownUnsafeEditableEvent)[number]\n\n/**\n * These are known events PostHog events that can be processed by the `beforeCapture` function\n * That means PostHog functionality does not rely on receiving 100% of these for calculations\n * So, it is safe to sample them to reduce the volume of events sent to PostHog\n */\nexport type KnownEventName =\n | '$heatmaps_data'\n | '$opt_in'\n | '$exception'\n | '$$heatmap'\n | '$web_vitals'\n | '$dead_click'\n | '$autocapture'\n | typeof COPY_AUTOCAPTURE_EVENT\n | '$rageclick'\n\nexport type EventName =\n | KnownUnsafeEditableEvent\n | KnownEventName\n // magic value so that the type of EventName is a set of known strings or any other string\n // which means you get autocomplete for known strings\n // but no type complaints when you add an arbitrary string\n | (string & {})\n\nexport interface CaptureResult {\n uuid: string\n event: EventName\n properties: Properties\n $set?: Properties\n $set_once?: Properties\n timestamp?: Date\n}\n\nexport type AutocaptureCompatibleElement = 'a' | 'button' | 'form' | 'input' | 'select' | 'textarea' | 'label'\nexport type DomAutocaptureEvents = 'click' | 'change' | 'submit'\n\n/**\n * If an array is passed for an allowlist, autocapture events will only be sent for elements matching\n * at least one of the elements in the array. Multiple allowlists can be used\n */\nexport interface AutocaptureConfig {\n /**\n * List of URLs to allow autocapture on, can be strings to match\n * or regexes e.g. ['https://example.com', 'test.com/.*']\n * this is useful when you want to autocapture on specific pages only\n *\n * if you set both url_allowlist and url_ignorelist,\n * we check the allowlist first and then the ignorelist.\n * the ignorelist can override the allowlist\n */\n url_allowlist?: (string | RegExp)[]\n\n /**\n * List of URLs to not allow autocapture on, can be strings to match\n * or regexes e.g. ['https://example.com', 'test.com/.*']\n * this is useful when you want to autocapture on most pages but not some specific ones\n *\n * if you set both url_allowlist and url_ignorelist,\n * we check the allowlist first and then the ignorelist.\n * the ignorelist can override the allowlist\n */\n url_ignorelist?: (string | RegExp)[]\n\n /**\n * List of DOM events to allow autocapture on e.g. ['click', 'change', 'submit']\n */\n dom_event_allowlist?: DomAutocaptureEvents[]\n\n /**\n * List of DOM elements to allow autocapture on\n * e.g. ['a', 'button', 'form', 'input', 'select', 'textarea', 'label']\n *\n * We consider the tree of elements from the root to the target element of the click event\n * so for the tree `div > div > button > svg`\n * if the allowlist has `button` then we allow the capture when the `button` or the `svg` is the click target\n * but not if either of the `div`s are detected as the click target\n */\n element_allowlist?: AutocaptureCompatibleElement[]\n\n /**\n * List of CSS selectors to allow autocapture on\n * e.g. ['[ph-capture]']\n * we consider the tree of elements from the root to the target element of the click event\n * so for the tree div > div > button > svg\n * and allow list config `['[id]']`\n * we will capture the click if the click-target or its parents has any id\n *\n * Everything is allowed when there's no allowlist\n */\n css_selector_allowlist?: string[]\n\n /**\n * Exclude certain element attributes from autocapture\n * E.g. ['aria-label'] or [data-attr-pii]\n */\n element_attribute_ignorelist?: string[]\n\n /**\n * When set to true, autocapture will capture the text of any element that is cut or copied.\n */\n capture_copied_text?: boolean\n}\n\nexport interface BootstrapConfig {\n distinctID?: string\n isIdentifiedID?: boolean\n featureFlags?: Record<string, boolean | string>\n featureFlagPayloads?: Record<string, JsonType>\n\n /**\n * Optionally provide a sessionID, this is so that you can provide an existing sessionID here to continue a user's session across a domain or device. It MUST be:\n * - unique to this user\n * - a valid UUID v7\n * - the timestamp part must be <= the timestamp of the first event in the session\n * - the timestamp of the last event in the session must be < the timestamp part + 24 hours\n * **/\n sessionID?: string\n}\n\nexport type SupportedWebVitalsMetrics = 'LCP' | 'CLS' | 'FCP' | 'INP'\n\nexport interface PerformanceCaptureConfig {\n /**\n * Works with session replay to use the browser's native performance observer to capture performance metrics\n */\n network_timing?: boolean\n\n /**\n * Use chrome's web vitals library to wrap fetch and capture web vitals\n */\n web_vitals?: boolean\n\n /**\n * We observe very large values reported by the Chrome web vitals library\n * These outliers are likely not real, useful values, and we exclude them\n * You can set this to 0 in order to include all values, NB this is not recommended\n *\n * @default 15 * 60 * 1000 (15 minutes)\n */\n __web_vitals_max_value?: number\n\n /**\n * By default all 4 metrics are captured\n * You can set this config to restrict which metrics are captured\n * e.g. ['CLS', 'FCP'] to only capture those two metrics\n * NB setting this does not override whether the capture is enabled\n *\n * @default ['LCP', 'CLS', 'FCP', 'INP']\n */\n web_vitals_allowed_metrics?: SupportedWebVitalsMetrics[]\n\n /**\n * We delay flushing web vitals metrics to reduce the number of events we send\n * This is the maximum time we will wait before sending the metrics\n *\n * @default 5000\n */\n web_vitals_delayed_flush_ms?: number\n}\n\nexport interface DeadClickCandidate {\n node: Element\n originalEvent: MouseEvent\n timestamp: number\n // time between click and the most recent scroll\n scrollDelayMs?: number\n // time between click and the most recent mutation\n mutationDelayMs?: number\n // time between click and the most recent selection changed event\n selectionChangedDelayMs?: number\n // if neither scroll nor mutation seen before threshold passed\n absoluteDelayMs?: number\n}\n\nexport type DeadClicksAutoCaptureConfig = {\n /**\n * We'll not consider a click to be a dead click, if it's followed by a scroll within `scroll_threshold_ms` milliseconds\n *\n * @default 100\n */\n scroll_threshold_ms?: number\n\n /**\n * We'll not consider a click to be a dead click, if it's followed by a selection change within `selection_change_threshold_ms` milliseconds\n *\n * @default 100\n */\n selection_change_threshold_ms?: number\n\n /**\n * We'll not consider a click to be a dead click, if it's followed by a mutation within `mutation_threshold_ms` milliseconds\n *\n * @default 2500\n */\n mutation_threshold_ms?: number\n\n /**\n * Allows setting behavior for when a dead click is captured.\n * For e.g. to support capture to heatmaps\n *\n * If not provided the default behavior is to auto-capture dead click events\n *\n * Only intended to be provided by our own SDK\n */\n __onCapture?: ((click: DeadClickCandidate, properties: Properties) => void) | undefined\n} & Pick<AutocaptureConfig, 'element_attribute_ignorelist'>\n\nexport interface HeatmapConfig {\n /**\n * How often to send batched data in `$heatmap_data` events\n * If set to 0 or not set, sends using the default interval of 1 second\n *\n * @default 1000\n */\n flush_interval_milliseconds: number\n}\n\nexport type BeforeSendFn = (cr: CaptureResult | null) => CaptureResult | null\n\n/**\n * Configuration options for the PostHog JavaScript SDK.\n * @see https://posthog.com/docs/libraries/js#config\n */\nexport interface PostHogConfig {\n /** URL of your PostHog instance.\n *\n * @default 'https://us.i.posthog.com'\n */\n api_host: string\n\n /**\n * If using a reverse proxy for `api_host` then this should be the actual PostHog app URL (e.g. https://us.posthog.com).\n * This ensures that links to PostHog point to the correct host.\n *\n * @default null\n */\n ui_host: string | null\n\n /**\n * The transport method to use for API requests.\n *\n * @default 'fetch'\n */\n api_transport?: 'XHR' | 'fetch'\n\n /**\n * The token for your PostHog project.\n * It should NOT be provided manually in the config, but rather passed as the first parameter to `posthog.init()`.\n */\n token: string\n\n /**\n * The name this instance will be identified by.\n * You don't need to set this most of the time,\n * but can be useful if you have several Posthog instances running at the same time.\n *\n * @default 'posthog'\n */\n name: string\n\n /**\n * Determines whether PostHog should autocapture events.\n * This setting does not affect capturing pageview events (see `capture_pageview`).\n *\n * @default true\n */\n autocapture: boolean | AutocaptureConfig\n\n /**\n * Determines whether PostHog should capture rage clicks.\n *\n * @default true\n */\n rageclick: boolean\n\n /**\n * Determines if cookie should be set on the top level domain (example.com).\n * If PostHog-js is loaded on a subdomain (test.example.com), and `cross_subdomain_cookie` is set to false,\n * it'll set the cookie on the subdomain only (test.example.com).\n *\n * NOTE: It will be set to `false` if we detect that the domain is a subdomain of a platform that is excluded from cross-subdomain cookie setting.\n * The current list of excluded platforms is `herokuapp.com`, `vercel.app`, and `netlify.app`.\n *\n * @see `isCrossDomainCookie`\n * @default true\n */\n cross_subdomain_cookie: boolean\n\n /**\n * Determines how PostHog stores information about the user. See [persistence](https://posthog.com/docs/libraries/js#persistence) for details.\n *\n * @default 'localStorage+cookie'\n */\n persistence: 'localStorage' | 'cookie' | 'memory' | 'localStorage+cookie' | 'sessionStorage'\n\n /**\n * The name for the super properties persistent store\n *\n * @default ''\n */\n persistence_name: string\n\n /** @deprecated - Use 'persistence_name' instead */\n cookie_name?: string\n\n /**\n * A function to be called once the PostHog scripts have loaded successfully.\n *\n * @param posthog_instance - The PostHog instance that has been loaded.\n */\n loaded: (posthog_instance: PostHog) => void\n\n /**\n * Determines whether PostHog should save referrer information.\n *\n * @default true\n */\n save_referrer: boolean\n\n /**\n * Determines whether PostHog should save marketing parameters.\n * These are `utm_*` paramaters and friends.\n *\n * @see {CAMPAIGN_PARAMS} from './utils/event-utils' - Default campaign parameters like utm_source, utm_medium, etc.\n * @default true\n */\n save_campaign_params: boolean\n\n /** @deprecated - Use `save_campaign_params` instead */\n store_google?: boolean\n\n /**\n * Used to extend the list of campaign parameters that are saved by default.\n *\n * @see {CAMPAIGN_PARAMS} from './utils/event-utils' - Default campaign parameters like utm_source, utm_medium, etc.\n * @default []\n */\n custom_campaign_params: string[]\n\n /**\n * Used to extend the list of user agents that are blocked by default.\n *\n * @see {DEFAULT_BLOCKED_UA_STRS} from './utils/blocked-uas' - Default list of blocked user agents.\n * @default []\n */\n custom_blocked_useragents: string[]\n\n /**\n * Determines whether PostHog should be in debug mode.\n * You can enable this to get more detailed logging.\n *\n * You can also enable this on your website by appending `?__posthog_debug=true` at the end of your URL\n * You can also call `posthog.debug()` in your code to enable debug mode\n *\n * @default false\n */\n debug: boolean\n\n /** @deprecated Use `debug` instead */\n verbose?: boolean\n\n /**\n * Determines whether PostHog should capture pageview events automatically.\n *\n * @default true\n */\n capture_pageview: boolean\n\n /**\n * Determines whether PostHog should capture pageleave events.\n * If set to `true`, it will capture pageleave events for all pages.\n * If set to `'if_capture_pageview'`, it will only capture pageleave events if `capture_pageview` is also set to `true`.\n *\n * @default 'if_capture_pageview'\n */\n capture_pageleave: boolean | 'if_capture_pageview'\n\n /**\n * Determines the number of days to store cookies for.\n *\n * @default 365\n */\n cookie_expiration: number\n\n /**\n * Determines whether PostHog should upgrade old cookies.\n * If set to `true`, the library will check for a cookie from our old js library and import super properties from it, then the old cookie is deleted.\n * This option only works in the initialization, so make sure you set it when you create the library.\n *\n * @default false\n */\n upgrade: boolean\n\n /**\n * Determines whether PostHog should disable session recording.\n *\n * @default false\n */\n disable_session_recording: boolean\n\n /**\n * Determines whether PostHog should disable persistence.\n * If set to `true`, the library will not save any data to the browser. It will also delete any data previously saved to the browser.\n *\n * @default false\n */\n disable_persistence: boolean\n\n /** @deprecated - use `disable_persistence` instead */\n disable_cookie?: boolean\n\n /**\n * Determines whether PostHog should disable surveys.\n *\n * @default false\n */\n disable_surveys: boolean\n\n /**\n * Determines whether PostHog should disable web experiments.\n *\n * Currently disabled while we're in BETA. It will be toggled to `true` in a future release.\n *\n * @default true\n */\n disable_web_experiments: boolean\n\n /**\n * Determines whether PostHog should disable any external dependency loading.\n * This will prevent PostHog from requesting any external scripts such as those needed for Session Replay, Surveys or Site Apps.\n *\n * @default false\n */\n disable_external_dependency_loading: boolean\n\n /**\n * A function to be called when a script is being loaded.\n * This can be used to modify the script before it is loaded.\n * This is useful for adding a nonce to the script, for example.\n *\n * @param script - The script element that is being loaded.\n * @returns The modified script element, or null if the script should not be loaded.\n */\n prepare_external_dependency_script?: (script: HTMLScriptElement) => HTMLScriptElement | null\n\n /**\n * A function to be called when a stylesheet is being loaded.\n * This can be used to modify the stylesheet before it is loaded.\n * This is useful for adding a nonce to the stylesheet, for example.\n *\n * @param stylesheet - The stylesheet element that is being loaded.\n * @returns The modified stylesheet element, or null if the stylesheet should not be loaded.\n */\n prepare_external_dependency_stylesheet?: (stylesheet: HTMLStyleElement) => HTMLStyleElement | null\n\n /**\n * Determines whether PostHog should enable recording console logs.\n * When undefined, it falls back to the remote config setting.\n *\n * @default undefined\n */\n enable_recording_console_log?: boolean\n\n /**\n * Determines whether PostHog should use secure cookies.\n * If this is `true`, PostHog cookies will be marked as secure,\n * meaning they will only be transmitted over HTTPS.\n *\n * @default window.location.protocol === 'https:'\n */\n secure_cookie: boolean\n\n /**\n * Determines whether PostHog should capture IP addresses.\n *\n * @default true\n */\n ip: boolean\n\n /**\n * Determines if users should be opted out of PostHog tracking by default,\n * requiring additional logic to opt them into capturing by calling `posthog.opt_in_capturing()`.\n *\n * @default false\n */\n opt_out_capturing_by_default: boolean\n\n /**\n * Determines where we'll save the information about whether users are opted out of capturing.\n *\n * @default 'localStorage'\n */\n opt_out_capturing_persistence_type: 'localStorage' | 'cookie'\n\n /**\n * Determines if users should be opted out of browser data storage by this PostHog instance by default,\n * requiring additional logic to opt them into capturing by calling `posthog.opt_in_capturing()`.\n *\n * @default false\n */\n opt_out_persistence_by_default?: boolean\n\n /**\n * Determines if users should be opted out of user agent filtering such as googlebot or other bots.\n * If this is set to `true`, PostHog will set `$browser_type` to either `bot` or `browser` for all events,\n * but will process all events as if they were from a browser.\n *\n * @default false\n */\n opt_out_useragent_filter: boolean\n\n /**\n * Determines the prefix for the cookie used to store the information about whether users are opted out of capturing.\n * When `null`, it falls back to the default prefix found in `consent.ts`.\n *\n * @default null\n */\n opt_out_capturing_cookie_prefix: string | null\n\n /**\n * Determines if users should be opted in to site apps.\n *\n * @default false\n */\n opt_in_site_apps: boolean\n\n /**\n * Determines whether PostHog should respect the Do Not Track header when computing\n * consent in `ConsentManager`.\n *\n * @see `ConsentManager`\n * @default false\n */\n respect_dnt: boolean\n\n /**\n * A list of properties that should never be sent with capture calls.\n *\n * @default []\n */\n property_denylist: string[]\n\n /** @deprecated - use `property_denylist` instead */\n property_blacklist?: string[]\n\n /**\n * A list of headers that should be sent with requests to the PostHog API.\n *\n * @default {}\n */\n request_headers: { [header_name: string]: string }\n\n /** @deprecated - use `request_headers` instead */\n xhr_headers?: { [header_name: string]: string }\n\n /**\n * A function that is called when a request to the PostHog API fails.\n *\n * @param error - The `RequestResponse` object that occurred.\n */\n on_request_error?: (error: RequestResponse) => void\n\n /** @deprecated - use `on_request_error` instead */\n on_xhr_error?: (failedRequest: XMLHttpRequest) => void\n\n /**\n * Determines whether PostHog should batch requests to the PostHog API.\n *\n * @default true\n */\n request_batching: boolean\n\n /**\n * Determines the maximum length of the properties string that can be sent with capture calls.\n *\n * @default 65535\n */\n properties_string_max_length: number\n\n /**\n * Determines the session recording options.\n *\n * @see `SessionRecordingOptions`\n * @default {}\n */\n session_recording: SessionRecordingOptions\n\n /**\n * Determines the session idle timeout in seconds.\n * Any new event that's happened after this timeout will create a new session.\n *\n * @default 30 * 60 -- 30 minutes\n */\n session_idle_timeout_seconds: number\n\n /**\n * Prevent autocapture from capturing any attribute names on elements.\n *\n * @default false\n */\n mask_all_element_attributes: boolean\n\n /**\n * Prevent autocapture from capturing `textContent` on elements.\n *\n * @default false\n */\n mask_all_text: boolean\n\n /**\n * Prevent autocapture from capturing personal data properties.\n * These include campaign parameters, UTM parameters, and other parameters that could be considered personal data under e.g. GDPR.\n *\n * @default false\n */\n mask_personal_data_properties: boolean\n\n /**\n * Custom list of personal data properties to mask.\n *\n * @default []\n */\n custom_personal_data_properties: string[]\n\n /**\n * One of the very first things the PostHog library does when init() is called\n * is make a request to the /decide endpoint on PostHog's backend.\n * This endpoint contains information on how to run the PostHog library\n * so events are properly received in the backend.\n *\n * This endpoint is required to run most features of the library.\n * However, if you're not using any of the described features,\n * you may wish to turn off the call completely to avoid an extra request\n * and reduce resource usage on both the client and the server.\n *\n * @default false\n */\n advanced_disable_decide: boolean\n\n /**\n * Will keep /decide running, but without any feature flag requests\n *\n * @default false\n */\n advanced_disable_feature_flags: boolean\n\n /**\n * Stops from firing feature flag requests on first page load.\n * Only requests feature flags when user identity or properties are updated,\n * or you manually request for flags to be loaded.\n *\n * @default false\n */\n advanced_disable_feature_flags_on_first_load: boolean\n\n /**\n * Determines whether PostHog should disable toolbar metrics.\n * This is our internal instrumentation for our toolbar in your website.\n *\n * @default false\n */\n advanced_disable_toolbar_metrics: boolean\n\n /**\n * Sets timeout for fetching feature flags\n *\n * @default 3000\n */\n feature_flag_request_timeout_ms: number\n\n /**\n * Sets timeout for fetching surveys\n *\n * @default 10000\n */\n surveys_request_timeout_ms: number\n\n /**\n * Function to get the device ID.\n * This doesn't usually need to be set, but can be useful if you want to use a custom device ID.\n *\n * @param uuid - The UUID we would use for the device ID.\n * @returns The device ID.\n *\n * @default (uuid) => uuid\n */\n get_device_id: (uuid: string) => string\n\n /**\n * This function or array of functions - if provided - are called immediately before sending data to the server.\n * It allows you to edit data before it is sent, or choose not to send it all.\n * if provided as an array the functions are called in the order they are provided\n * any one function returning null means the event will not be sent\n */\n before_send?: BeforeSendFn | BeforeSendFn[]\n\n /** @deprecated - use `before_send` instead */\n sanitize_properties: ((properties: Properties, event_name: string) => Properties) | null\n\n /** @deprecated - use `before_send` instead */\n _onCapture: (eventName: string, eventData: CaptureResult) => void\n\n /**\n * Determines whether to capture performance metrics.\n * These include Network Timing and Web Vitals.\n *\n * When `undefined`, fallback to the remote configuration.\n * If `false`, neither network timing nor web vitals will work.\n * If an object, that will override the remote configuration.\n *\n * @see {PerformanceCaptureConfig}\n * @default undefined\n */\n capture_performance?: boolean | PerformanceCaptureConfig\n\n /**\n * Determines whether to disable compression when sending events to the server.\n * WARNING: Should only be used for testing. Could negatively impact performance.\n *\n * @default false\n */\n disable_compression: boolean\n\n /**\n * An object containing the `distinctID`, `isIdentifiedID`, and `featureFlags` keys,\n * where `distinctID` is a string, and `featureFlags` is an object of key-value pairs.\n *\n * Since there is a delay between initializing PostHog and fetching feature flags,\n * feature flags are not always available immediately.\n * This makes them unusable if you want to do something like redirecting a user\n * to a different page based on a feature flag.\n *\n * You can, therefore, fetch the feature flags in your server and pre-fill them here,\n * allowing PostHog to know the feature flag values immediately.\n *\n * After the SDK fetches feature flags from PostHog, it will use those flag values instead of bootstrapped ones.\n *\n * @default {}\n */\n bootstrap: BootstrapConfig\n\n /**\n * The segment analytics object.\n *\n * @see https://posthog.com/docs/libraries/segment\n */\n segment?: SegmentAnalytics\n\n /**\n * Determines whether to capture heatmaps.\n *\n * @see {HeatmapConfig}\n * @default undefined\n */\n capture_heatmaps?: boolean | HeatmapConfig\n\n /* @deprecated - use `capture_heatmaps` instead */\n enable_heatmaps?: boolean\n\n /**\n * Determines whether to capture dead clicks.\n *\n * @see {DeadClicksAutoCaptureConfig}\n * @default undefined\n */\n capture_dead_clicks?: boolean | DeadClicksAutoCaptureConfig\n\n /**\n * Determines whether to capture exceptions.\n *\n * @default undefined\n */\n capture_exceptions?: boolean\n\n /**\n * Determines whether to disable scroll properties.\n * These allow you to keep track of how far down someone scrolled in your website.\n *\n * @default false\n */\n disable_scroll_properties?: boolean\n\n /**\n * Let the pageview scroll stats use a custom css selector for the root element, e.g. `main`\n * It will use `window.document.documentElement` if not specified.\n */\n scroll_root_selector?: string | string[]\n\n /**\n * You can control whether events from PostHog-js have person processing enabled with the `person_profiles` config setting.\n * There are three options:\n * - `person_profiles: 'always'` - we will process persons data for all events\n * - `person_profiles: 'never'` - we won't process persons for any event. This means that anonymous users will not be merged once they sign up or login, so you lose the ability to create funnels that track users from anonymous to identified. All events (including `$identify`) will be sent with `$process_person_profile: False`.\n * - `person_profiles: 'identified_only'` _(default)_ - we will only process persons when you call `posthog.identify`, `posthog.alias`, `posthog.setPersonProperties`, `posthog.group`, `posthog.setPersonPropertiesForFlags` or `posthog.setGroupPropertiesForFlags` Anonymous users won't get person profiles.\n *\n * @default 'identified_only'\n */\n person_profiles?: 'always' | 'never' | 'identified_only'\n\n /** @deprecated - use `person_profiles` instead */\n process_person?: 'always' | 'never' | 'identified_only'\n\n /**\n * Client side rate limiting\n */\n rate_limiting?: {\n /**\n * The average number of events per second that should be permitted\n *\n * @default 10\n */\n events_per_second?: number\n\n /**\n * How many events can be captured in a burst. This defaults to 10 times the events_per_second count\n *\n * @default 10 * `events_per_second`\n */\n events_burst_limit?: number\n }\n\n /**\n * Used when sending data via `fetch`, use with care.\n * This is intentionally meant to be used with NextJS `fetch`\n *\n * Incorrect `cache` usage may cause out-of-date data for feature flags, actions tracking, etc.\n * See https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\n */\n fetch_options?: {\n cache?: RequestInit['cache']\n next_options?: NextOptions\n }\n\n /**\n * Used to change the behavior of the request queue.\n * This is an advanced feature and should be used with caution.\n */\n request_queue_config?: RequestQueueConfig\n\n // ------- PREVIEW CONFIGS -------\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Whether to wrap fetch and add tracing headers to the request\n * */\n __add_tracing_headers?: boolean\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Enables the new RemoteConfig approach to loading config instead of decide\n * */\n __preview_remote_config?: boolean\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Whether to send a sentinel value for distinct id, device id, and session id, which will be replaced server-side by a cookieless hash\n * */\n __preview_experimental_cookieless_mode?: boolean\n\n // ------- RETIRED CONFIGS - NO REPLACEMENT OR USAGE -------\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n api_method?: string\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n inapp_protocol?: string\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n inapp_link_new_window?: boolean\n}\n\nexport interface SessionRecordingOptions {\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-no-capture'\n */\n blockClass?: string | RegExp\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default null\n */\n blockSelector?: string | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-ignore-input'\n */\n ignoreClass?: string | RegExp\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-mask'\n */\n maskTextClass?: string | RegExp\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskTextSelector?: string | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskTextFn?: ((text: string, element?: HTMLElement) => string) | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskAllInputs?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskInputOptions?: recordOptions['maskInputOptions']\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskInputFn?: ((text: string, element?: HTMLElement) => string) | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default {}\n */\n slimDOMOptions?: recordOptions['slimDOMOptions']\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n collectFonts?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default true\n */\n inlineStylesheet?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordCrossOriginIframes?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordHeaders?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordBody?: boolean\n\n /**\n * Allows local config to override remote canvas recording settings from the decide response\n */\n captureCanvas?: SessionRecordingCanvasOptions\n\n /**\n * Modify the network request before it is captured. Returning null or undefined stops it being captured\n */\n maskCapturedNetworkRequestFn?: ((data: CapturedNetworkRequest) => CapturedNetworkRequest | null | undefined) | null\n\n /** @deprecated - use maskCapturedNetworkRequestFn instead */\n maskNetworkRequestFn?: ((data: NetworkRequest) => NetworkRequest | null | undefined) | null\n\n /**\n * ADVANCED: while a user is active we take a full snapshot of the browser every interval.\n * For very few sites playback performance might be better with different interval.\n * Set to 0 to disable\n *\n * @default 1000 * 60 * 5 (5 minutes)\n */\n full_snapshot_interval_millis?: number\n\n /**\n * ADVANCED: whether to partially compress rrweb events before sending them to the server,\n * defaults to true, can be set to false to disable partial compression\n * NB requests are still compressed when sent to the server regardless of this setting\n *\n * @default true\n */\n compress_events?: boolean\n\n /**\n * ADVANCED: alters the threshold before a recording considers a user has become idle.\n * Normally only altered alongside changes to session_idle_timeout_ms.\n *\n * @default 1000 * 60 * 5 (5 minutes)\n */\n session_idle_threshold_ms?: number\n\n /**\n * ADVANCED: alters the refill rate for the token bucket mutation throttling\n * Normally only altered alongside posthog support guidance.\n * Accepts values between 0 and 100\n *\n * @default 10\n */\n __mutationRateLimiterRefillRate?: number\n\n /**\n * ADVANCED: alters the bucket size for the token bucket mutation throttling\n * Normally only altered alongside posthog support guidance.\n * Accepts values between 0 and 100\n *\n * @default 100\n */\n __mutationRateLimiterBucketSize?: number\n}\n\nexport type SessionIdChangedCallback = (\n sessionId: string,\n windowId: string | null | undefined,\n changeReason?: { noSessionId: boolean; activityTimeout: boolean; sessionPastMaximumLength: boolean }\n) => void\n\nexport enum Compression {\n GZipJS = 'gzip-js',\n Base64 = 'base64',\n}\n\n// Request types - these should be kept minimal to what request.ts needs\n\n// Minimal class to allow interop between different request methods (xhr / fetch)\nexport interface RequestResponse {\n statusCode: number\n text?: string\n json?: any\n}\n\nexport type RequestCallback = (response: RequestResponse) => void\n\n// See https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\ntype NextOptions = { revalidate: false | 0 | number; tags: string[] }\n\nexport interface RequestWithOptions {\n url: string\n // Data can be a single object or an array of objects when batched\n data?: Record<string, any> | Record<string, any>[]\n headers?: Record<string, any>\n transport?: 'XHR' | 'fetch' | 'sendBeacon'\n method?: 'POST' | 'GET'\n urlQueryArgs?: { compression: Compression }\n callback?: RequestCallback\n timeout?: number\n noRetries?: boolean\n compression?: Compression | 'best-available'\n fetchOptions?: {\n cache?: RequestInit['cache']\n next?: NextOptions\n }\n}\n\n// Queued request types - the same as a request but with additional queueing information\n\nexport interface QueuedRequestWithOptions extends RequestWithOptions {\n /** key of queue, e.g. 'sessionRecording' vs 'event' */\n batchKey?: string\n}\n\n// Used explicitly for retriable requests\nexport interface RetriableRequestWithOptions extends QueuedRequestWithOptions {\n retriesPerformedSoFar?: number\n}\n\n// we used to call a request that was sent to the queue with options attached `RequestQueueOptions`\n// so we can't call the options used to configure the behavior of the RequestQueue that as well,\n// so instead we call them config\nexport interface RequestQueueConfig {\n /**\n * ADVANCED - alters the frequency which PostHog sends events to the server.\n * generally speaking this is only set when apps have automatic page refreshes, or very short visits.\n * Defaults to 3 seconds when not set\n * Allowed values between 250 and 5000\n * */\n flush_interval_ms?: number\n}\n\nexport interface CaptureOptions {\n /**\n * Used when `$identify` is called\n * Will set person properties overriding previous values\n */\n $set?: Properties\n\n /**\n * Used when `$identify` is called\n * Will set person properties but only once, it will NOT override previous values\n */\n $set_once?: Properties\n\n /**\n * Used to override the desired endpoint for the captured event\n */\n _url?: string\n\n /**\n * key of queue, e.g. 'sessionRecording' vs 'event'\n */\n _batchKey?: string\n\n /**\n * If set, overrides and disables config.properties_string_max_length\n */\n _noTruncate?: boolean\n\n /**\n * If set, skips the batched queue\n */\n send_instantly?: boolean\n\n /**\n * If set, skips the client side rate limiting\n */\n skip_client_rate_limiting?: boolean\n\n /**\n * If set, overrides the desired transport method\n */\n transport?: RequestWithOptions['transport']\n\n /**\n * If set, overrides the current timestamp\n */\n timestamp?: Date\n}\n\nexport type FlagVariant = { flag: string; variant: string }\n\nexport type SessionRecordingCanvasOptions = {\n /**\n * If set, records the canvas\n *\n * @default false\n */\n recordCanvas?: boolean | null\n\n /**\n * If set, records the canvas at the given FPS\n * Can be set in the remote configuration\n * Limited between 0 and 12\n * When canvas recording is enabled, if this is not set locally, then remote config sets this as 4\n *\n * @default null-ish\n */\n canvasFps?: number | null\n\n /**\n * If set, records the canvas at the given quality\n * Can be set in the remote configuration\n * Must be a string that is a valid decimal between 0 and 1\n * When canvas recording is enabled, if this is not set locally, then remote config sets this as \"0.4\"\n *\n * @default null-ish\n */\n canvasQuality?: string | null\n}\n\n/**\n * Remote configuration for the PostHog instance\n *\n * All of these settings can be configured directly in your PostHog instance\n * Any configuration set in the client overrides the information from the server\n */\nexport interface RemoteConfig {\n /**\n * Supported compression algorithms\n */\n supportedCompression: Compression[]\n\n /**\n * If set, disables autocapture\n */\n autocapture_opt_out?: boolean\n\n /**\n * originally capturePerformance was replay only and so boolean true\n * is equivalent to { network_timing: true }\n * now capture performance can be separately enabled within replay\n * and as a standalone web vitals tracker\n * people can have them enabled separately\n * they work standalone but enhance each other\n * TODO: deprecate this so we make a new config that doesn't need this explanation\n */\n capturePerformance?: boolean | PerformanceCaptureConfig\n\n /**\n * Whether we should use a custom endpoint for analytics\n *\n * @default { endpoint: \"/e\" }\n */\n analytics?: {\n endpoint?: string\n }\n\n /**\n * Whether the `$elements_chain` property should be sent as a string or as an array\n *\n * @default false\n */\n elementsChainAsString?: boolean\n\n /**\n * This is currently in development and may have breaking changes without a major version bump\n */\n autocaptureExceptions?: boolean | { endpoint?: string }\n\n /**\n * Session recording configuration options\n */\n sessionRecording?: SessionRecordingCanvasOptions & {\n endpoint?: string\n consoleLogRecordingEnabled?: boolean\n // the API returns a decimal between 0 and 1 as a string\n sampleRate?: string | null\n minimumDurationMilliseconds?: number\n linkedFlag?: string | FlagVariant | null\n networkPayloadCapture?: Pick<NetworkRecordOptions, 'recordBody' | 'recordHeaders'>\n masking?: Pick<SessionRecordingOptions, 'maskAllInputs' | 'maskTextSelector'>\n urlTriggers?: SessionRecordingUrlTrigger[]\n scriptConfig?: { script?: string | undefined }\n urlBlocklist?: SessionRecordingUrlTrigger[]\n eventTriggers?: string[]\n }\n\n /**\n * Whether surveys are enabled\n */\n surveys?: boolean\n\n /**\n * Parameters for the toolbar\n */\n toolbarParams: ToolbarParams\n\n /**\n * @deprecated renamed to toolbarParams, still present on older API responses\n */\n editorParams?: ToolbarParams\n\n /**\n * @deprecated, moved to toolbarParams\n */\n toolbarVersion: 'toolbar'\n\n /**\n * Whether the user is authenticated\n */\n isAuthenticated: boolean\n\n /**\n * List of site apps with their IDs and URLs\n */\n siteApps: { id: string; url: string }[]\n\n /**\n * Whether heatmaps are enabled\n */\n heatmaps?: boolean\n\n /**\n * Whether to only capture identified users by default\n */\n defaultIdentifiedOnly?: boolean\n\n /**\n * Whether to capture dead clicks\n */\n captureDeadClicks?: boolean\n\n /**\n * Indicates if the team has any flags enabled (if not we don't need to load them)\n */\n hasFeatureFlags?: boolean\n}\n\n/**\n * Decide returns everything we have on the remote config plus feature flags and their payloads\n */\nexport interface DecideResponse extends RemoteConfig {\n featureFlags: Record<string, string | boolean>\n featureFlagPayloads: Record<string, JsonType>\n errorsWhileComputingFlags: boolean\n requestId?: string\n}\n\nexport type SiteAppGlobals = {\n event: {\n uuid: string\n event: EventName\n properties: Properties\n timestamp?: Date\n elements_chain?: string\n distinct_id?: string\n }\n person: {\n properties: Properties\n }\n groups: Record<string, { id: string; type: string; properties: Properties }>\n}\n\nexport type SiteAppLoader = {\n id: string\n init: (config: { posthog: PostHog; callback: (success: boolean) => void }) => {\n processEvent?: (globals: SiteAppGlobals) => void\n }\n}\n\nexport type SiteApp = {\n id: string\n loaded: boolean\n errored: boolean\n processedBuffer: boolean\n processEvent?: (globals: SiteAppGlobals) => void\n}\n\nexport type FeatureFlagsCallback = (\n flags: string[],\n variants: Record<string, string | boolean>,\n context?: {\n errorsLoading?: boolean\n }\n) => void\n\nexport type RemoteConfigFeatureFlagCallback = (payload: JsonType) => void\n\nexport interface PersistentStore {\n is_supported: () => boolean\n error: (error: any) => void\n parse: (name: string) => any\n get: (name: string) => any\n set: (\n name: string,\n value: any,\n expire_days?: number | null,\n cross_subdomain?: boolean,\n secure?: boolean,\n debug?: boolean\n ) => void\n remove: (name: string, cross_subdomain?: boolean) => void\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type Breaker = {}\nexport type EventHandler = (event: Event) => boolean | void\n\nexport type ToolbarUserIntent = 'add-action' | 'edit-action'\nexport type ToolbarSource = 'url' | 'localstorage'\nexport type ToolbarVersion = 'toolbar'\n\n/* sync with posthog */\nexport interface ToolbarParams {\n token?: string /** public posthog-js token */\n temporaryToken?: string /** private temporary user token */\n actionId?: number\n userIntent?: ToolbarUserIntent\n source?: ToolbarSource\n toolbarVersion?: ToolbarVersion\n instrument?: boolean\n distinctId?: string\n userEmail?: string\n dataAttributes?: string[]\n featureFlags?: Record<string, string | boolean>\n}\n\nexport type SnippetArrayItem = [method: string, ...args: any[]]\n\nexport type JsonRecord = { [key: string]: JsonType }\nexport type JsonType = string | number | boolean | null | undefined | JsonRecord | Array<JsonType>\n\n/** A feature that isn't publicly available yet.*/\nexport interface EarlyAccessFeature {\n // Sync this with the backend's EarlyAccessFeatureSerializer!\n name: string\n description: string\n stage: 'concept' | 'alpha' | 'beta'\n documentationUrl: string | null\n flagKey: string | null\n}\n\nexport type EarlyAccessFeatureStage = 'concept' | 'alpha' | 'beta' | 'general-availability'\nexport type EarlyAccessFeatureCallback = (earlyAccessFeatures: EarlyAccessFeature[]) => void\n\nexport interface EarlyAccessFeatureResponse {\n earlyAccessFeatures: EarlyAccessFeature[]\n}\n\nexport type Headers = Record<string, string>\n\n/* for rrweb/network@1\n ** when that is released as part of rrweb this can be removed\n ** don't rely on this type, it may change without notice\n */\nexport type InitiatorType =\n | 'audio'\n | 'beacon'\n | 'body'\n | 'css'\n | 'early-hint'\n | 'embed'\n | 'fetch'\n | 'frame'\n | 'iframe'\n | 'icon'\n | 'image'\n | 'img'\n | 'input'\n | 'link'\n | 'navigation'\n | 'object'\n | 'ping'\n | 'script'\n | 'track'\n | 'video'\n | 'xmlhttprequest'\n\nexport type NetworkRecordOptions = {\n initiatorTypes?: InitiatorType[]\n maskRequestFn?: (data: CapturedNetworkRequest) => CapturedNetworkRequest | undefined\n recordHeaders?: boolean | { request: boolean; response: boolean }\n recordBody?: boolean | string[] | { request: boolean | string[]; response: boolean | string[] }\n recordInitialRequests?: boolean\n /**\n * whether to record PerformanceEntry events for network requests\n */\n recordPerformance?: boolean\n /**\n * the PerformanceObserver will only observe these entry types\n */\n performanceEntryTypeToObserve: string[]\n /**\n * the maximum size of the request/response body to record\n * NB this will be at most 1MB even if set larger\n */\n payloadSizeLimitBytes: number\n /**\n * some domains we should never record the payload\n * for example other companies session replay ingestion payloads aren't super useful but are gigantic\n * if this isn't provided we use a default list\n * if this is provided - we add the provided list to the default list\n * i.e. we never record the payloads on the default deny list\n */\n payloadHostDenyList?: string[]\n}\n\n/** @deprecated - use CapturedNetworkRequest instead */\nexport type NetworkRequest = {\n url: string\n}\n\n// In rrweb this is called NetworkRequest, but we already exposed that as having only URL\n// we also want to vary from the rrweb NetworkRequest because we want to include\n// all PerformanceEntry properties too.\n// that has 4 required properties\n// readonly duration: DOMHighResTimeStamp;\n// readonly entryType: string;\n// readonly name: string;\n// readonly startTime: DOMHighResTimeStamp;\n// NB: properties below here are ALPHA, don't rely on them, they may change without notice\n\n// we mirror PerformanceEntry since we read into this type from a PerformanceObserver,\n// but we don't want to inherit its readonly-iness\ntype Writable<T> = { -readonly [P in keyof T]: T[P] }\n\nexport type CapturedNetworkRequest = Writable<Omit<PerformanceEntry, 'toJSON'>> & {\n // properties below here are ALPHA, don't rely on them, they may change without notice\n method?: string\n initiatorType?: InitiatorType\n status?: number\n timeOrigin?: number\n timestamp?: number\n startTime?: number\n endTime?: number\n requestHeaders?: Headers\n requestBody?: string | null\n responseHeaders?: Headers\n responseBody?: string | null\n // was this captured before fetch/xhr could have been wrapped\n isInitial?: boolean\n}\n\nexport type ErrorConversionArgs = {\n event: string | Event\n error?: Error\n}\n\nexport type ErrorEventArgs = [\n event: string | Event,\n source?: string | undefined,\n lineno?: number | undefined,\n colno?: number | undefined,\n error?: Error | undefined,\n]\n\nexport type ErrorMetadata = {\n handled?: boolean\n synthetic?: boolean\n syntheticException?: Error\n overrideExceptionType?: string\n overrideExceptionMessage?: string\n defaultExceptionType?: string\n defaultExceptionMessage?: string\n}\n\n// levels originally copied from Sentry to work with the sentry integration\n// and to avoid relying on a frequently changing @sentry/types dependency\n// but provided as an array of literal types, so we can constrain the level below\nexport const severityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'] as const\nexport declare type SeverityLevel = (typeof severityLevels)[number]\n\nexport interface ErrorProperties {\n $exception_type: string\n $exception_message: string\n $exception_level: SeverityLevel\n $exception_source?: string\n $exception_lineno?: number\n $exception_colno?: number\n $exception_DOMException_code?: string\n $exception_is_synthetic?: boolean\n $exception_stack_trace_raw?: string\n $exception_handled?: boolean\n $exception_personURL?: string\n}\n\nexport interface ErrorConversions {\n errorToProperties: (args: ErrorEventArgs) => ErrorProperties\n unhandledRejectionToProperties: (args: [ev: PromiseRejectionEvent]) => ErrorProperties\n}\n\nexport interface SessionRecordingUrlTrigger {\n url: string\n matching: 'regex'\n}\n","import { window } from './globals'\nimport { knownUnsafeEditableEvent, KnownUnsafeEditableEvent } from '../types'\nimport { includes } from './string-utils'\n\n// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const isFunction = (x: unknown): x is (...args: any[]) => any => {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return typeof x === 'function'\n}\n\nexport const isNativeFunction = (x: unknown): x is (...args: any[]) => any =>\n isFunction(x) && x.toString().indexOf('[native code]') !== -1\n\n// When angular patches functions they pass the above `isNativeFunction` check (at least the MutationObserver)\nexport const isAngularZonePresent = (): boolean => {\n return !!(window as any).Zone\n}\n\n// Underscore Addons\nexport const isObject = (x: unknown): x is Record<string, any> => {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !isArray(x)\n}\nexport const isEmptyObject = (x: unknown) => {\n if (isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const isUndefined = (x: unknown): x is undefined => x === void 0\n\nexport const isString = (x: unknown): x is string => {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\n\nexport const isEmptyString = (x: unknown): boolean => isString(x) && x.trim().length === 0\n\nexport const isNull = (x: unknown): x is null => {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\n\n/*\n sometimes you want to check if something is null or undefined\n that's what this is for\n */\nexport const isNullish = (x: unknown): x is null | undefined => isUndefined(x) || isNull(x)\n\nexport const isNumber = (x: unknown): x is number => {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const isBoolean = (x: unknown): x is boolean => {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n\nexport const isDocument = (x: unknown): x is Document => {\n // eslint-disable-next-line posthog-js/no-direct-document-check\n return x instanceof Document\n}\n\nexport const isFormData = (x: unknown): x is FormData => {\n // eslint-disable-next-line posthog-js/no-direct-form-data-check\n return x instanceof FormData\n}\n\nexport const isFile = (x: unknown): x is File => {\n // eslint-disable-next-line posthog-js/no-direct-file-check\n return x instanceof File\n}\n\nexport const isError = (x: unknown): x is Error => {\n return x instanceof Error\n}\n\nexport const isKnownUnsafeEditableEvent = (x: unknown): x is KnownUnsafeEditableEvent => {\n return includes(knownUnsafeEditableEvent as unknown as string[], x)\n}\n","import Config from '../config'\nimport { isUndefined } from './type-utils'\nimport { assignableWindow, window } from './globals'\n\nexport type Logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => void\n info: (...args: any[]) => void\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n critical: (...args: any[]) => void\n uninitializedWarning: (methodName: string) => void\n createLogger: (prefix: string) => Logger\n}\n\nconst _createLogger = (prefix: string): Logger => {\n const logger: Logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if (\n window &&\n (Config.DEBUG || assignableWindow.POSTHOG_DEBUG) &&\n !isUndefined(window.console) &&\n window.console\n ) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(prefix, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(prefix, ...args)\n },\n\n uninitializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n\n createLogger: (additionalPrefix: string) => _createLogger(`${prefix} ${additionalPrefix}`),\n }\n return logger\n}\n\nexport const logger = _createLogger('[PostHog.js]')\n\nexport const createLogger = logger.createLogger\n","import { Breaker, Properties } from '../types'\nimport { hasOwnProperty, isArray, isFormData, isNull, isNullish, isString } from './type-utils'\nimport { logger } from './logger'\nimport { nativeForEach, nativeIndexOf } from './globals'\n\nconst breaker: Breaker = {}\n\nexport function eachArray<E = any>(\n obj: E[] | null | undefined,\n iterator: (value: E, key: number) => void | Breaker,\n thisArg?: any\n): void {\n if (isArray(obj)) {\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg)\n } else if ('length' in obj && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return\n }\n }\n }\n }\n}\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\nexport function each(obj: any, iterator: (value: any, key: any) => void | Breaker, thisArg?: any): void {\n if (isNullish(obj)) {\n return\n }\n if (isArray(obj)) {\n return eachArray(obj, iterator, thisArg)\n }\n if (isFormData(obj)) {\n for (const pair of obj.entries()) {\n if (iterator.call(thisArg, pair[1], pair[0]) === breaker) {\n return\n }\n }\n return\n }\n for (const key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(thisArg, obj[key], key) === breaker) {\n return\n }\n }\n }\n}\n\nexport const extend = function (obj: Record<string, any>, ...args: Record<string, any>[]): Record<string, any> {\n eachArray(args, function (source) {\n for (const prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop]\n }\n }\n })\n return obj\n}\n\nexport const extendArray = function <T>(obj: T[], ...args: T[][]): T[] {\n eachArray(args, function (source) {\n eachArray(source, function (item) {\n obj.push(item)\n })\n })\n return obj\n}\n\nexport const include = function (\n obj: null | string | Array<any> | Record<string, any>,\n target: any\n): boolean | Breaker {\n let found = false\n if (isNull(obj)) {\n return found\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1\n }\n each(obj, function (value) {\n if (found || (found = value === target)) {\n return breaker\n }\n return\n })\n return found\n}\n\n/**\n * Object.entries() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\nexport function entries<T = any>(obj: Record<string, T>): [string, T][] {\n const ownProps = Object.keys(obj)\n let i = ownProps.length\n const resArray = new Array(i) // preallocate the Array\n\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]]\n }\n return resArray\n}\n\nexport const trySafe = function <T>(fn: () => T): T | undefined {\n try {\n return fn()\n } catch {\n return undefined\n }\n}\n\nexport const safewrap = function <F extends (...args: any[]) => any = (...args: any[]) => any>(f: F): F {\n return function (...args) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return f.apply(this, args)\n } catch (e) {\n logger.critical(\n 'Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.'\n )\n logger.critical(e)\n }\n } as F\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const safewrapClass = function (klass: Function, functions: string[]): void {\n for (let i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = safewrap(klass.prototype[functions[i]])\n }\n}\n\nexport const stripEmptyProperties = function (p: Properties): Properties {\n const ret: Properties = {}\n each(p, function (v, k) {\n if (isString(v) && v.length > 0) {\n ret[k] = v\n }\n })\n return ret\n}\n\n/**\n * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @returns {{}|undefined|*}\n */\nfunction deepCircularCopy<T extends Record<string, any> = Record<string, any>>(\n value: T,\n customizer?: <K extends keyof T = keyof T>(value: T[K], key?: K) => T[K]\n): T | undefined {\n const COPY_IN_PROGRESS_SET = new Set()\n\n function internalDeepCircularCopy(value: T, key?: string): T | undefined {\n if (value !== Object(value)) return customizer ? customizer(value as any, key) : value // primitive value\n\n if (COPY_IN_PROGRESS_SET.has(value)) return undefined\n COPY_IN_PROGRESS_SET.add(value)\n let result: T\n\n if (isArray(value)) {\n result = [] as any as T\n eachArray(value, (it) => {\n result.push(internalDeepCircularCopy(it))\n })\n } else {\n result = {} as T\n each(value, (val, key) => {\n if (!COPY_IN_PROGRESS_SET.has(val)) {\n ;(result as any)[key] = internalDeepCircularCopy(val, key)\n }\n })\n }\n return result\n }\n return internalDeepCircularCopy(value)\n}\n\nexport function _copyAndTruncateStrings<T extends Record<string, any> = Record<string, any>>(\n object: T,\n maxStringLength: number | null\n): T {\n return deepCircularCopy(object, (value: any) => {\n if (isString(value) && !isNull(maxStringLength)) {\n return (value as string).slice(0, maxStringLength)\n }\n return value\n }) as T\n}\n\n// NOTE: Update PostHogConfig docs if you change this list\n// We will not try to catch all bullets here, but we should make an effort to catch the most common ones\n// You should be highly against adding more to this list, because ultimately customers can configure\n// their `cross_subdomain_cookie` setting to anything they want.\nconst EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE = ['herokuapp.com', 'vercel.app', 'netlify.app']\nexport function isCrossDomainCookie(documentLocation: Location | undefined) {\n const hostname = documentLocation?.hostname\n\n if (!isString(hostname)) {\n return false\n }\n // split and slice isn't a great way to match arbitrary domains,\n // but it's good enough for ensuring we only match herokuapp.com when it is the TLD\n // for the hostname\n const lastTwoParts = hostname.split('.').slice(-2).join('.')\n\n for (const excluded of EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE) {\n if (lastTwoParts === excluded) {\n return false\n }\n }\n\n return true\n}\n\nexport function find<T>(value: T[], predicate: (value: T) => boolean): T | undefined {\n for (let i = 0; i < value.length; i++) {\n if (predicate(value[i])) {\n return value[i]\n }\n }\n return undefined\n}\n\n// Use this instead of element.addEventListener to avoid eslint errors\n// this properly implements the default options for passive event listeners\nexport function addEventListener(\n element: Window | Document | Element | undefined,\n event: string,\n callback: EventListener,\n options?: AddEventListenerOptions\n): void {\n const { capture = false, passive = true } = options ?? {}\n\n // This is the only place where we are allowed to call this function\n // because the whole idea is that we should be calling this instead of the built-in one\n // eslint-disable-next-line posthog-js/no-add-event-listener\n element?.addEventListener(event, callback, { capture, passive })\n}\n","import { each } from './'\n\nimport { isArray, isFile, isUndefined } from './type-utils'\nimport { logger } from './logger'\nimport { document } from './globals'\n\nconst localDomains = ['localhost', '127.0.0.1']\n\n/**\n * IE11 doesn't support `new URL`\n * so we can create an anchor element and use that to parse the URL\n * there's a lot of overlap between HTMLHyperlinkElementUtils and URL\n * meaning useful properties like `pathname` are available on both\n */\nexport const convertToURL = (url: string): HTMLAnchorElement | null => {\n const location = document?.createElement('a')\n if (isUndefined(location)) {\n return null\n }\n\n location.href = url\n return location\n}\n\nexport const formDataToQuery = function (formdata: Record<string, any> | FormData, arg_separator = '&'): string {\n let use_val: string\n let use_key: string\n const tph_arr: string[] = []\n\n each(formdata, function (val: File | string | undefined, key: string | undefined) {\n // the key might be literally the string undefined for e.g. if {undefined: 'something'}\n if (isUndefined(val) || isUndefined(key) || key === 'undefined') {\n return\n }\n\n use_val = encodeURIComponent(isFile(val) ? val.name : val.toString())\n use_key = encodeURIComponent(key)\n tph_arr[tph_arr.length] = use_key + '=' + use_val\n })\n\n return tph_arr.join(arg_separator)\n}\n\n// NOTE: Once we get rid of IE11/op_mini we can start using URLSearchParams\nexport const getQueryParam = function (url: string, param: string): string {\n const withoutHash: string = url.split('#')[0] || ''\n\n // Split only on the first ? to sort problem out for those with multiple ?s\n // and then remove them\n const queryParams: string = withoutHash.split(/\\?(.*)/)[1] || ''\n const cleanedQueryParams = queryParams.replace(/^\\?+/g, '')\n\n const queryParts = cleanedQueryParams.split('&')\n let keyValuePair\n\n for (let i = 0; i < queryParts.length; i++) {\n const parts = queryParts[i].split('=')\n if (parts[0] === param) {\n keyValuePair = parts\n break\n }\n }\n\n if (!isArray(keyValuePair) || keyValuePair.length < 2) {\n return ''\n } else {\n let result = keyValuePair[1]\n try {\n result = decodeURIComponent(result)\n } catch {\n logger.error('Skipping decoding for malformed query param: ' + result)\n }\n return result.replace(/\\+/g, ' ')\n }\n}\n\n// replace any query params in the url with the provided mask value. Tries to keep the URL as instant as possible,\n// including preserving malformed text in most cases\nexport const maskQueryParams = function <T extends string | undefined>(\n url: T,\n maskedParams: string[] | undefined,\n mask: string\n): T extends string ? string : undefined {\n if (!url || !maskedParams || !maskedParams.length) {\n return url as any\n }\n\n const splitHash = url.split('#')\n const withoutHash: string = splitHash[0] || ''\n const hash = splitHash[1]\n\n const splitQuery: string[] = withoutHash.split('?')\n const queryString: string = splitQuery[1]\n const urlWithoutQueryAndHash: string = splitQuery[0]\n const queryParts = (queryString || '').split('&')\n\n // use an array of strings rather than an object to preserve ordering and duplicates\n const paramStrings: string[] = []\n\n for (let i = 0; i < queryParts.length; i++) {\n const keyValuePair = queryParts[i].split('=')\n if (!isArray(keyValuePair)) {\n continue\n } else if (maskedParams.includes(keyValuePair[0])) {\n paramStrings.push(keyValuePair[0] + '=' + mask)\n } else {\n paramStrings.push(queryParts[i])\n }\n }\n\n let result = urlWithoutQueryAndHash\n if (queryString != null) {\n result += '?' + paramStrings.join('&')\n }\n if (hash != null) {\n result += '#' + hash\n }\n\n return result as any\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n const matches = hash.match(new RegExp(param + '=([^&]*)'))\n return matches ? matches[1] : null\n}\n\nexport const isLocalhost = (): boolean => {\n return localDomains.includes(location.hostname)\n}\n","// import { patch } from 'rrweb/typings/utils'\n// copied from https://github.com/rrweb-io/rrweb/blob/8aea5b00a4dfe5a6f59bd2ae72bb624f45e51e81/packages/rrweb/src/utils.ts#L129\n// which was copied from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nimport { isFunction } from '../../../utils/type-utils'\n\nexport function patch(\n source: { [key: string]: any },\n name: string,\n replacement: (...args: unknown[]) => unknown\n): () => void {\n try {\n if (!(name in source)) {\n return () => {\n //\n }\n }\n\n const original = source[name] as () => unknown\n const wrapped = replacement(original)\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (isFunction(wrapped)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n wrapped.prototype = wrapped.prototype || {}\n Object.defineProperties(wrapped, {\n __posthog_wrapped__: {\n enumerable: false,\n value: true,\n },\n })\n }\n\n source[name] = wrapped\n\n return () => {\n source[name] = original\n }\n } catch {\n return () => {\n //\n }\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n}\n","import { NetworkRecordOptions } from '../../../types'\n\nfunction hostnameFromURL(url: string | URL | RequestInfo): string | null {\n try {\n if (typeof url === 'string') {\n return new URL(url).hostname\n }\n if ('url' in url) {\n return new URL(url.url).hostname\n }\n return url.hostname\n } catch {\n return null\n }\n}\n\nexport function isHostOnDenyList(url: string | URL | Request, options: NetworkRecordOptions) {\n const hostname = hostnameFromURL(url)\n const defaultNotDenied = { hostname, isHostDenied: false }\n\n if (!options.payloadHostDenyList?.length || !hostname?.trim().length) {\n return defaultNotDenied\n }\n\n for (const deny of options.payloadHostDenyList) {\n if (hostname.endsWith(deny)) {\n return { hostname, isHostDenied: true }\n }\n }\n\n return defaultNotDenied\n}\n","import { CapturedNetworkRequest, NetworkRecordOptions, PostHogConfig } from '../../types'\nimport { isFunction, isNullish, isString, isUndefined } from '../../utils/type-utils'\nimport { convertToURL } from '../../utils/request-utils'\nimport { logger } from '../../utils/logger'\nimport { shouldCaptureValue } from '../../autocapture-utils'\nimport { each } from '../../utils'\n\nconst LOGGER_PREFIX = '[SessionRecording]'\n\nconst REDACTED = 'redacted'\n\nexport const defaultNetworkOptions: Required<NetworkRecordOptions> = {\n initiatorTypes: [\n 'audio',\n 'beacon',\n 'body',\n 'css',\n 'early-hint',\n 'embed',\n 'fetch',\n 'frame',\n 'iframe',\n 'icon',\n 'image',\n 'img',\n 'input',\n 'link',\n 'navigation',\n 'object',\n 'ping',\n 'script',\n 'track',\n 'video',\n 'xmlhttprequest',\n ],\n maskRequestFn: (data: CapturedNetworkRequest) => data,\n recordHeaders: false,\n recordBody: false,\n recordInitialRequests: false,\n recordPerformance: false,\n performanceEntryTypeToObserve: [\n // 'event', // This is too noisy as it covers all browser events\n 'first-input',\n // 'mark', // Mark is used too liberally. We would need to filter for specific marks\n // 'measure', // Measure is used too liberally. We would need to filter for specific measures\n 'navigation',\n 'paint',\n 'resource',\n ],\n payloadSizeLimitBytes: 1000000,\n payloadHostDenyList: [\n '.lr-ingest.io',\n '.ingest.sentry.io',\n '.clarity.ms',\n // NB no leading dot here\n 'analytics.google.com',\n ],\n}\n\nconst HEADER_DENY_LIST = [\n 'authorization',\n 'x-forwarded-for',\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-real-ip',\n 'remote-addr',\n 'forwarded',\n 'proxy-authorization',\n 'x-csrf-token',\n 'x-csrftoken',\n 'x-xsrf-token',\n]\n\nconst PAYLOAD_CONTENT_DENY_LIST = [\n 'password',\n 'secret',\n 'passwd',\n 'api_key',\n 'apikey',\n 'auth',\n 'credentials',\n 'mysql_pwd',\n 'privatekey',\n 'private_key',\n 'token',\n]\n\n// we always remove headers on the deny list because we never want to capture this sensitive data\nconst removeAuthorizationHeader = (data: CapturedNetworkRequest): CapturedNetworkRequest => {\n const headers = data.requestHeaders\n if (!isNullish(headers)) {\n each(Object.keys(headers ?? {}), (header) => {\n if (HEADER_DENY_LIST.includes(header.toLowerCase())) {\n headers[header] = REDACTED\n }\n })\n }\n return data\n}\n\nconst POSTHOG_PATHS_TO_IGNORE = ['/s/', '/e/', '/i/']\n// want to ignore posthog paths when capturing requests, or we can get trapped in a loop\n// because calls to PostHog would be reported using a call to PostHog which would be reported....\nconst ignorePostHogPaths = (\n data: CapturedNetworkRequest,\n apiHostConfig: PostHogConfig['api_host']\n): CapturedNetworkRequest | undefined => {\n const url = convertToURL(data.name)\n\n // we need to account for api host config as e.g. pathname could be /ingest/s/ and we want to ignore that\n let replaceValue = apiHostConfig.indexOf('http') === 0 ? convertToURL(apiHostConfig)?.pathname : apiHostConfig\n if (replaceValue === '/') {\n replaceValue = ''\n }\n const pathname = url?.pathname.replace(replaceValue || '', '')\n\n if (url && pathname && POSTHOG_PATHS_TO_IGNORE.some((path) => pathname.indexOf(path) === 0)) {\n return undefined\n }\n return data\n}\n\nfunction estimateBytes(payload: string): number {\n return new Blob([payload]).size\n}\n\nfunction enforcePayloadSizeLimit(\n payload: string | null | undefined,\n headers: Record<string, any> | undefined,\n limit: number,\n description: string\n): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n\n let requestContentLength: string | number = headers?.['content-length'] || estimateBytes(payload)\n if (isString(requestContentLength)) {\n requestContentLength = parseInt(requestContentLength)\n }\n\n if (requestContentLength > limit) {\n return LOGGER_PREFIX + ` ${description} body too large to record (${requestContentLength} bytes)`\n }\n\n return payload\n}\n\n// people can have arbitrarily large payloads on their site, but we don't want to ingest them\nconst limitPayloadSize = (\n options: NetworkRecordOptions\n): ((data: CapturedNetworkRequest | undefined) => CapturedNetworkRequest | undefined) => {\n // the smallest of 1MB or the specified limit if there is one\n const limit = Math.min(1000000, options.payloadSizeLimitBytes ?? 1000000)\n\n return (data) => {\n if (data?.requestBody) {\n data.requestBody = enforcePayloadSizeLimit(data.requestBody, data.requestHeaders, limit, 'Request')\n }\n\n if (data?.responseBody) {\n data.responseBody = enforcePayloadSizeLimit(data.responseBody, data.responseHeaders, limit, 'Response')\n }\n\n return data\n }\n}\n\nfunction scrubPayload(payload: string | null | undefined, label: 'Request' | 'Response'): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n let scrubbed = payload\n\n if (!shouldCaptureValue(scrubbed, false)) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED\n }\n each(PAYLOAD_CONTENT_DENY_LIST, (text) => {\n if (scrubbed?.length && scrubbed?.indexOf(text) !== -1) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED + ' as might contain: ' + text\n }\n })\n\n return scrubbed\n}\n\nfunction scrubPayloads(capturedRequest: CapturedNetworkRequest | undefined): CapturedNetworkRequest | undefined {\n if (isUndefined(capturedRequest)) {\n return undefined\n }\n\n capturedRequest.requestBody = scrubPayload(capturedRequest.requestBody, 'Request')\n capturedRequest.responseBody = scrubPayload(capturedRequest.responseBody, 'Response')\n\n return capturedRequest\n}\n\n/**\n * whether a maskRequestFn is provided or not,\n * we ensure that we remove the denied header from requests\n * we _never_ want to record that header by accident\n * if someone complains then we'll add an opt-in to let them override it\n */\nexport const buildNetworkRequestOptions = (\n instanceConfig: PostHogConfig,\n remoteNetworkOptions: Pick<\n NetworkRecordOptions,\n 'recordHeaders' | 'recordBody' | 'recordPerformance' | 'payloadHostDenyList'\n >\n): NetworkRecordOptions => {\n const config: NetworkRecordOptions = {\n payloadSizeLimitBytes: defaultNetworkOptions.payloadSizeLimitBytes,\n performanceEntryTypeToObserve: [...defaultNetworkOptions.performanceEntryTypeToObserve],\n payloadHostDenyList: [\n ...(remoteNetworkOptions.payloadHostDenyList || []),\n ...defaultNetworkOptions.payloadHostDenyList,\n ],\n }\n // client can always disable despite remote options\n const canRecordHeaders =\n instanceConfig.session_recording.recordHeaders === false ? false : remoteNetworkOptions.recordHeaders\n const canRecordBody =\n instanceConfig.session_recording.recordBody === false ? false : remoteNetworkOptions.recordBody\n const canRecordPerformance =\n instanceConfig.capture_performance === false ? false : remoteNetworkOptions.recordPerformance\n\n const payloadLimiter = limitPayloadSize(config)\n\n const enforcedCleaningFn: NetworkRecordOptions['maskRequestFn'] = (d: CapturedNetworkRequest) =>\n payloadLimiter(ignorePostHogPaths(removeAuthorizationHeader(d), instanceConfig.api_host))\n\n const hasDeprecatedMaskFunction = isFunction(instanceConfig.session_recording.maskNetworkRequestFn)\n\n if (hasDeprecatedMaskFunction && isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)) {\n logger.warn(\n 'Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.'\n )\n }\n\n if (hasDeprecatedMaskFunction) {\n instanceConfig.session_recording.maskCapturedNetworkRequestFn = (data: CapturedNetworkRequest) => {\n const cleanedURL = instanceConfig.session_recording.maskNetworkRequestFn!({ url: data.name })\n return {\n ...data,\n name: cleanedURL?.url,\n } as CapturedNetworkRequest\n }\n }\n\n config.maskRequestFn = isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)\n ? (data) => {\n const cleanedRequest = enforcedCleaningFn(data)\n return cleanedRequest\n ? (instanceConfig.session_recording.maskCapturedNetworkRequestFn?.(cleanedRequest) ?? undefined)\n : undefined\n }\n : (data) => scrubPayloads(enforcedCleaningFn(data))\n\n return {\n ...defaultNetworkOptions,\n ...config,\n recordHeaders: canRecordHeaders,\n recordBody: canRecordBody,\n recordPerformance: canRecordPerformance,\n recordInitialRequests: canRecordPerformance,\n }\n}\n","/// <reference lib=\"dom\" />\n\n// rrweb/network@1 code starts\n// most of what is below here will be removed when rrweb release their code for this\n// see https://github.com/rrweb-io/rrweb/pull/1105\n\n// NB adopted from https://github.com/rrweb-io/rrweb/pull/1105 which looks like it will be accepted into rrweb\n// however, in the PR, it throws when the performance observer data is not available\n// and assumes it is running in a browser with the Request API (i.e. not IE11)\n// copying here so that we can use it before rrweb adopt it\nimport type { IWindow, listenerHandler, RecordPlugin } from '@rrweb/types'\nimport { CapturedNetworkRequest, Headers, InitiatorType, NetworkRecordOptions } from '../../../types'\nimport {\n isArray,\n isBoolean,\n isDocument,\n isFormData,\n isNull,\n isNullish,\n isObject,\n isString,\n isUndefined,\n} from '../../../utils/type-utils'\nimport { createLogger } from '../../../utils/logger'\nimport { formDataToQuery } from '../../../utils/request-utils'\nimport { patch } from '../rrweb-plugins/patch'\nimport { isHostOnDenyList } from '../../../extensions/replay/external/denylist'\nimport { defaultNetworkOptions } from '../config'\n\nconst logger = createLogger('[Recorder]')\n\nexport type NetworkData = {\n requests: CapturedNetworkRequest[]\n isInitial?: boolean\n}\n\ntype networkCallback = (data: NetworkData) => void\n\nconst isNavigationTiming = (entry: PerformanceEntry): entry is PerformanceNavigationTiming =>\n entry.entryType === 'navigation'\nconst isResourceTiming = (entry: PerformanceEntry): entry is PerformanceResourceTiming => entry.entryType === 'resource'\n\ntype ObservedPerformanceEntry = (PerformanceNavigationTiming | PerformanceResourceTiming) & {\n responseStatus?: number\n}\n\nexport function findLast<T>(array: Array<T>, predicate: (value: T) => boolean): T | undefined {\n const length = array.length\n for (let i = length - 1; i >= 0; i -= 1) {\n if (predicate(array[i])) {\n return array[i]\n }\n }\n return undefined\n}\n\nfunction initPerformanceObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>) {\n // if we are only observing timings then we could have a single observer for all types, with buffer true,\n // but we are going to filter by initiatorType _if we are wrapping fetch and xhr as the wrapped functions\n // will deal with those.\n // so we have a block which captures requests from before fetch/xhr is wrapped\n // these are marked `isInitial` so playback can display them differently if needed\n // they will never have method/status/headers/body because they are pre-wrapping that provides that\n if (options.recordInitialRequests) {\n const initialPerformanceEntries = win.performance\n .getEntries()\n .filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) && options.initiatorTypes.includes(entry.initiatorType as InitiatorType))\n )\n cb({\n requests: initialPerformanceEntries.flatMap((entry) =>\n prepareRequest({ entry, method: undefined, status: undefined, networkRequest: {}, isInitial: true })\n ),\n isInitial: true,\n })\n }\n const observer = new win.PerformanceObserver((entries) => {\n // if recordBody or recordHeaders is true then we don't want to record fetch or xhr here\n // as the wrapped functions will do that. Otherwise, this filter becomes a noop\n // because we do want to record them here\n const wrappedInitiatorFilter = (entry: ObservedPerformanceEntry) =>\n options.recordBody || options.recordHeaders\n ? entry.initiatorType !== 'xmlhttprequest' && entry.initiatorType !== 'fetch'\n : true\n\n const performanceEntries = entries.getEntries().filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) &&\n options.initiatorTypes.includes(entry.initiatorType as InitiatorType) &&\n // TODO if we are _only_ capturing timing we don't want to filter initiator here\n wrappedInitiatorFilter(entry))\n )\n\n cb({\n requests: performanceEntries.flatMap((entry) =>\n prepareRequest({ entry, method: undefined, status: undefined, networkRequest: {} })\n ),\n })\n })\n // compat checked earlier\n // eslint-disable-next-line compat/compat\n const entryTypes = PerformanceObserver.supportedEntryTypes.filter((x) =>\n options.performanceEntryTypeToObserve.includes(x)\n )\n // initial records are gathered above, so we don't need to observe and buffer each type separately\n observer.observe({ entryTypes })\n return () => {\n observer.disconnect()\n }\n}\n\nfunction shouldRecordHeaders(type: 'request' | 'response', recordHeaders: NetworkRecordOptions['recordHeaders']) {\n return !!recordHeaders && (isBoolean(recordHeaders) || recordHeaders[type])\n}\n\nexport function shouldRecordBody({\n type,\n recordBody,\n headers,\n url,\n}: {\n type: 'request' | 'response'\n headers: Headers\n url: string | URL | RequestInfo\n recordBody: NetworkRecordOptions['recordBody']\n}) {\n function matchesContentType(contentTypes: string[]) {\n const contentTypeHeader = Object.keys(headers).find((key) => key.toLowerCase() === 'content-type')\n const contentType = contentTypeHeader && headers[contentTypeHeader]\n return contentTypes.some((ct) => contentType?.includes(ct))\n }\n\n /**\n * particularly in canvas applications we see many requests to blob URLs\n * e.g. blob:https://video_url\n * these blob/object URLs are local to the browser, we can never capture that body\n * so we can just return false here\n */\n function isBlobURL(url: string | URL | RequestInfo) {\n try {\n if (typeof url === 'string') {\n return url.startsWith('blob:')\n }\n if (url instanceof URL) {\n return url.protocol === 'blob:'\n }\n if (url instanceof Request) {\n return isBlobURL(url.url)\n }\n return false\n } catch {\n return false\n }\n }\n if (!recordBody) return false\n if (isBlobURL(url)) return false\n if (isBoolean(recordBody)) return true\n if (isArray(recordBody)) return matchesContentType(recordBody)\n const recordBodyType = recordBody[type]\n if (isBoolean(recordBodyType)) return recordBodyType\n return matchesContentType(recordBodyType)\n}\n\nasync function getRequestPerformanceEntry(\n win: IWindow,\n initiatorType: string,\n url: string,\n start?: number,\n end?: number,\n attempt = 0\n): Promise<PerformanceResourceTiming | null> {\n if (attempt > 10) {\n logger.warn('Failed to get performance entry for request', { url, initiatorType })\n return null\n }\n const urlPerformanceEntries = win.performance.getEntriesByName(url) as PerformanceResourceTiming[]\n const performanceEntry = findLast(\n urlPerformanceEntries,\n (entry) =>\n isResourceTiming(entry) &&\n entry.initiatorType === initiatorType &&\n (isUndefined(start) || entry.startTime >= start) &&\n (isUndefined(end) || entry.startTime <= end)\n )\n if (!performanceEntry) {\n await new Promise((resolve) => setTimeout(resolve, 50 * attempt))\n return getRequestPerformanceEntry(win, initiatorType, url, start, end, attempt + 1)\n }\n return performanceEntry\n}\n\n/**\n * According to MDN https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response\n * xhr response is typed as any but can be an ArrayBuffer, a Blob, a Document, a JavaScript object,\n * or a string, depending on the value of XMLHttpRequest.responseType, that contains the response entity body.\n *\n * XHR request body is Document | XMLHttpRequestBodyInit | null | undefined\n */\nfunction _tryReadXHRBody({\n body,\n options,\n url,\n}: {\n body: Document | XMLHttpRequestBodyInit | any | null | undefined\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): string | null {\n if (isNullish(body)) {\n return null\n }\n\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return hostname + ' is in deny list'\n }\n\n if (isString(body)) {\n return body\n }\n\n if (isDocument(body)) {\n return body.textContent\n }\n\n if (isFormData(body)) {\n return formDataToQuery(body)\n }\n\n if (isObject(body)) {\n try {\n return JSON.stringify(body)\n } catch {\n return '[SessionReplay] Failed to stringify response object'\n }\n }\n\n return '[SessionReplay] Cannot read body of type ' + toString.call(body)\n}\n\nfunction initXhrObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>): listenerHandler {\n if (!options.initiatorTypes.includes('xmlhttprequest')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n\n const restorePatch = patch(\n win.XMLHttpRequest.prototype,\n 'open',\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (originalOpen: typeof XMLHttpRequest.prototype.open) => {\n return function (\n method: string,\n url: string | URL,\n async = true,\n username?: string | null,\n password?: string | null\n ) {\n // because this function is returned in its actual context `this` _is_ an XMLHttpRequest\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const xhr = this as XMLHttpRequest\n\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url)\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let start: number | undefined\n let end: number | undefined\n\n const requestHeaders: Headers = {}\n const originalSetRequestHeader = xhr.setRequestHeader.bind(xhr)\n xhr.setRequestHeader = (header: string, value: string) => {\n requestHeaders[header] = value\n return originalSetRequestHeader(header, value)\n }\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n\n const originalSend = xhr.send.bind(xhr)\n xhr.send = (body) => {\n if (\n shouldRecordBody({\n type: 'request',\n headers: requestHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.requestBody = _tryReadXHRBody({ body, options, url })\n }\n start = win.performance.now()\n return originalSend(body)\n }\n\n // This is very tricky code, and making it passive won't bring many performance benefits,\n // so let's ignore the rule here.\n // eslint-disable-next-line posthog-js/no-add-event-listener\n xhr.addEventListener('readystatechange', () => {\n if (xhr.readyState !== xhr.DONE) {\n return\n }\n end = win.performance.now()\n const responseHeaders: Headers = {}\n const rawHeaders = xhr.getAllResponseHeaders()\n const headers = rawHeaders.trim().split(/[\\r\\n]+/)\n headers.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift()\n const value = parts.join(': ')\n if (header) {\n responseHeaders[header] = value\n }\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (\n shouldRecordBody({\n type: 'response',\n headers: responseHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.responseBody = _tryReadXHRBody({ body: xhr.response, options, url })\n }\n getRequestPerformanceEntry(win, 'xmlhttprequest', req.url, start, end)\n .then((entry) => {\n const requests = prepareRequest({\n entry,\n method: method,\n status: xhr?.status,\n networkRequest,\n start,\n end,\n url: url.toString(),\n initiatorType: 'xmlhttprequest',\n })\n cb({ requests })\n })\n .catch(() => {\n //\n })\n })\n\n originalOpen.call(xhr, method, url, async, username, password)\n }\n }\n )\n return () => {\n restorePatch()\n }\n}\n\n/**\n * Check if this PerformanceEntry is either a PerformanceResourceTiming or a PerformanceNavigationTiming\n * NB PerformanceNavigationTiming extends PerformanceResourceTiming\n * Here we don't care which interface it implements as both expose `serverTimings`\n */\nconst exposesServerTiming = (event: PerformanceEntry | null): event is PerformanceResourceTiming =>\n !isNull(event) && (event.entryType === 'navigation' || event.entryType === 'resource')\n\nfunction prepareRequest({\n entry,\n method,\n status,\n networkRequest,\n isInitial,\n start,\n end,\n url,\n initiatorType,\n}: {\n entry: PerformanceResourceTiming | null\n method: string | undefined\n status: number | undefined\n networkRequest: Partial<CapturedNetworkRequest>\n isInitial?: boolean\n start?: number\n end?: number\n // if there is no performance observer entry, we still need to know the url\n url?: string\n // if there is no performance observer entry, we can provide the initiatorType\n initiatorType?: string\n}): CapturedNetworkRequest[] {\n start = entry ? entry.startTime : start\n end = entry ? entry.responseEnd : end\n\n // kudos to sentry javascript sdk for excellent background on why to use Date.now() here\n // https://github.com/getsentry/sentry-javascript/blob/e856e40b6e71a73252e788cd42b5260f81c9c88e/packages/utils/src/time.ts#L70\n // can't start observer if performance.now() is not available\n // eslint-disable-next-line compat/compat\n const timeOrigin = Math.floor(Date.now() - performance.now())\n // clickhouse can't ingest timestamps that are floats\n // (in this case representing fractions of a millisecond we don't care about anyway)\n // use timeOrigin if we really can't gather a start time\n const timestamp = Math.floor(timeOrigin + (start || 0))\n\n const entryJSON = entry ? entry.toJSON() : { name: url }\n\n const requests: CapturedNetworkRequest[] = [\n {\n ...entryJSON,\n startTime: isUndefined(start) ? undefined : Math.round(start),\n endTime: isUndefined(end) ? undefined : Math.round(end),\n timeOrigin,\n timestamp,\n method: method,\n initiatorType: initiatorType ? initiatorType : entry ? (entry.initiatorType as InitiatorType) : undefined,\n status,\n requestHeaders: networkRequest.requestHeaders,\n requestBody: networkRequest.requestBody,\n responseHeaders: networkRequest.responseHeaders,\n responseBody: networkRequest.responseBody,\n isInitial,\n },\n ]\n\n if (exposesServerTiming(entry)) {\n for (const timing of entry.serverTiming || []) {\n requests.push({\n timeOrigin,\n timestamp,\n startTime: Math.round(entry.startTime),\n name: timing.name,\n duration: timing.duration,\n // the spec has a closed list of possible types\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry/entryType\n // but, we need to know this was a server timing so that we know to\n // match it to the appropriate navigation or resource timing\n // that matching will have to be on timestamp and $current_url\n entryType: 'serverTiming',\n })\n }\n }\n\n return requests\n}\n\nconst contentTypePrefixDenyList = ['video/', 'audio/']\n\nfunction _checkForCannotReadResponseBody({\n r,\n options,\n url,\n}: {\n r: Response\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): string | null {\n if (r.headers.get('Transfer-Encoding') === 'chunked') {\n return 'Chunked Transfer-Encoding is not supported'\n }\n\n // `get` and `has` are case-insensitive\n // but return the header value with the casing that was supplied\n const contentType = r.headers.get('Content-Type')?.toLowerCase()\n const contentTypeIsDenied = contentTypePrefixDenyList.some((prefix) => contentType?.startsWith(prefix))\n if (contentType && contentTypeIsDenied) {\n return `Content-Type ${contentType} is not supported`\n }\n\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return hostname + ' is in deny list'\n }\n\n return null\n}\n\nfunction _tryReadBody(r: Request | Response): Promise<string> {\n // there are now already multiple places where we're using Promise...\n // eslint-disable-next-line compat/compat\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => resolve('[SessionReplay] Timeout while trying to read body'), 500)\n try {\n r.clone()\n .text()\n .then(\n (txt) => resolve(txt),\n (reason) => reject(reason)\n )\n .finally(() => clearTimeout(timeout))\n } catch {\n clearTimeout(timeout)\n resolve('[SessionReplay] Failed to read body')\n }\n })\n}\n\nasync function _tryReadRequestBody({\n r,\n options,\n url,\n}: {\n r: Request\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): Promise<string> {\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return Promise.resolve(hostname + ' is in deny list')\n }\n\n return _tryReadBody(r)\n}\n\nasync function _tryReadResponseBody({\n r,\n options,\n url,\n}: {\n r: Response\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): Promise<string> {\n const cannotReadBodyReason: string | null = _checkForCannotReadResponseBody({ r, options, url })\n if (!isNull(cannotReadBodyReason)) {\n return Promise.resolve(cannotReadBodyReason)\n }\n\n return _tryReadBody(r)\n}\n\nfunction initFetchObserver(\n cb: networkCallback,\n win: IWindow,\n options: Required<NetworkRecordOptions>\n): listenerHandler {\n if (!options.initiatorTypes.includes('fetch')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const restorePatch = patch(win, 'fetch', (originalFetch: typeof fetch) => {\n return async function (url: URL | RequestInfo, init?: RequestInit | undefined) {\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url, init)\n let res: Response | undefined\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let start: number | undefined\n let end: number | undefined\n\n try {\n const requestHeaders: Headers = {}\n req.headers.forEach((value, header) => {\n requestHeaders[header] = value\n })\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n if (\n shouldRecordBody({\n type: 'request',\n headers: requestHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.requestBody = await _tryReadRequestBody({ r: req, options, url })\n }\n\n start = win.performance.now()\n res = await originalFetch(req)\n end = win.performance.now()\n\n const responseHeaders: Headers = {}\n res.headers.forEach((value, header) => {\n responseHeaders[header] = value\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (\n shouldRecordBody({\n type: 'response',\n headers: responseHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.responseBody = await _tryReadResponseBody({ r: res, options, url })\n }\n\n return res\n } finally {\n getRequestPerformanceEntry(win, 'fetch', req.url, start, end)\n .then((entry) => {\n const requests = prepareRequest({\n entry,\n method: req.method,\n status: res?.status,\n networkRequest,\n start,\n end,\n url: req.url,\n initiatorType: 'fetch',\n })\n cb({ requests })\n })\n .catch(() => {\n //\n })\n }\n }\n })\n return () => {\n restorePatch()\n }\n}\n\nlet initialisedHandler: listenerHandler | null = null\n\nfunction initNetworkObserver(\n callback: networkCallback,\n win: IWindow, // top window or in an iframe\n options: NetworkRecordOptions\n): listenerHandler {\n if (!('performance' in win)) {\n return () => {\n //\n }\n }\n\n if (initialisedHandler) {\n logger.warn('Network observer already initialised, doing nothing')\n return () => {\n // the first caller should already have this handler and will be responsible for teardown\n }\n }\n\n const networkOptions = (\n options ? Object.assign({}, defaultNetworkOptions, options) : defaultNetworkOptions\n ) as Required<NetworkRecordOptions>\n\n const cb: networkCallback = (data) => {\n const requests: CapturedNetworkRequest[] = []\n data.requests.forEach((request) => {\n const maskedRequest = networkOptions.maskRequestFn(request)\n if (maskedRequest) {\n requests.push(maskedRequest)\n }\n })\n\n if (requests.length > 0) {\n callback({ ...data, requests })\n }\n }\n const performanceObserver = initPerformanceObserver(cb, win, networkOptions)\n\n // only wrap fetch and xhr if headers or body are being recorded\n let xhrObserver: listenerHandler = () => {}\n let fetchObserver: listenerHandler = () => {}\n if (networkOptions.recordHeaders || networkOptions.recordBody) {\n xhrObserver = initXhrObserver(cb, win, networkOptions)\n fetchObserver = initFetchObserver(cb, win, networkOptions)\n }\n\n initialisedHandler = () => {\n performanceObserver()\n xhrObserver()\n fetchObserver()\n }\n return initialisedHandler\n}\n\n// use the plugin name so that when this functionality is adopted into rrweb\n// we can remove this plugin and use the core functionality with the same data\nexport const NETWORK_PLUGIN_NAME = 'rrweb/network@1'\n\n// TODO how should this be typed?\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const getRecordNetworkPlugin: (options?: NetworkRecordOptions) => RecordPlugin = (options) => {\n return {\n name: NETWORK_PLUGIN_NAME,\n observer: initNetworkObserver,\n options: options,\n }\n}\n\n// rrweb/networ@1 ends\n","import { record as rrwebRecord } from '@posthog/rrweb-record'\nimport { getRecordConsolePlugin } from '@posthog/rrweb-plugin-console-record'\nimport { assignableWindow } from '../utils/globals'\nimport { getRecordNetworkPlugin } from '../extensions/replay/external/network-plugin'\n\nassignableWindow.__PosthogExtensions__ = assignableWindow.__PosthogExtensions__ || {}\nassignableWindow.__PosthogExtensions__.rrwebPlugins = { getRecordConsolePlugin, getRecordNetworkPlugin }\nassignableWindow.__PosthogExtensions__.rrweb = { record: rrwebRecord, version: 'v2' }\n\n// we used to put all of these items directly on window, and now we put it on __PosthogExtensions__\n// but that means that old clients which lazily load this extension are looking in the wrong place\n// yuck,\n// so we also put them directly on the window\n// when 1.161.1 is the oldest version seen in production we can remove this\nassignableWindow.rrweb = { record: rrwebRecord, version: 'v2' }\nassignableWindow.rrwebConsoleRecord = { getRecordConsolePlugin }\nassignableWindow.getRecordNetworkPlugin = getRecordNetworkPlugin\n\nexport default rrwebRecord\n"],"names":["_a","__defProp","Object","defineProperty","__publicField","obj","key","value","__defNormalProp","enumerable","configurable","writable","__defProp$1","__publicField$1","__defNormalProp$1","NodeType$1$1","NodeType2","testableAccessors$1","Node","ShadowRoot","Element","MutationObserver","testableMethods$1","untaintedBasePrototype$1","getUntaintedPrototype$1","candidate","_a2","_b","angularUnpatchedVersionSymbol","globalThis","Zone","__symbol__","call","angularZoneUnpatchedAlternative$1","defaultPrototype","prototype","accessorNames","isUntaintedAccessors","Boolean","every","accessor","getOwnPropertyDescriptor","get","toString","includes","methodNames","isUntaintedMethods","method","iframeEl","document","createElement","body","appendChild","win","contentWindow","untaintedObject","removeChild","_unused","untaintedAccessorCache$1","getUntaintedAccessor$1","instance","cacheKey","String","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","bind","untaintedMethod","index$1","childNodes","n2","parentNode","parentElement","textContent","contains","other","getRootNode","host","styleSheets","shadowRoot","querySelector","selectors","querySelectorAll","mutationObserver","constructor","patch","source","name","replacement","original","wrapped","defineProperties","__rrweb_original__","_unused2","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","rules","cssRules","stringifiedRules","Array","from","rule2","stringifyRule","href","join","cssText","replace","error","sheetHref","isCSSImportRule","importStringified","styleSheet","split","length","statement","JSON","stringify","layerName","push","supportsText","media","mediaText","escapeImportStatement","absolutifyURLs","regex","ruleStringified","isCSSStyleRule","selectorText","Mirror","this","Map","WeakMap","getId","id","getMeta","getNode","idNodeMap","getIds","keys","nodeMetaMap","removeNodeFromMap","delete","forEach","childNode","has","hasNode","node2","add","meta","set","oldNode","reset","maskInputValue","_ref","element","maskInputOptions","tagName","type","maskInputFn","text","actualType","toLowerCase","repeat","str","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","path","baseURL","_ref2","url","URL","window","location","err","match","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","test","concat","extractOrigin","indexOf","slice","stack","parts","part","pop","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","genId","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","trim","getHref","isSVGElement","el","ownerSVGElement","customHref","a2","startsWith","setAttribute","transformAttribute","pos","collectCharacters","regEx","chars2","exec","substring","output","descriptorsStr","inParens","c2","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","closest","matches","e2","serializeNode","options","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","isCustomElement","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName$1","attributes","len","i2","attr","hrefFrom","stylesheet","findStylesheet","rel","_cssText","sheet","innerText","checked","selected","open","rr_open_mode","_unused3","ph_rr_could_not_detect_modal","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","Math","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","getAttribute","priorCrossOrigin","crossOrigin","recordInlineImage","removeEventListener","naturalWidth","naturalHeight","drawImage","complete","addEventListener","console","warn","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","customElements","isSVG","isCustom","serializeElementNode","TEXT_NODE","parent","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","find","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","onSerialize","onIframeLoad","iframeLoadTimeout","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","assign","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","readyState","fired","blankUrl","setTimeout","timer","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","__esModule","hasOwnProperty","getAugmentedNamespace$1","f2","default","a22","Reflect","construct","arguments","apply","k","d","hasRequiredPicocolors_browser$1","picocolors_browser$1","exports","requirePicocolors_browser$1","create","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","createColors","cssSyntaxError$1","hasRequiredCssSyntaxError$1","stringifier$1","hasRequiredStringifier$1","stringify_1$1","hasRequiredStringify$1","require$$2$1","freeze","__proto__","Symbol","toStringTag","requireCssSyntaxError$1","pico","terminalHighlight","CssSyntaxError","Error","message","line","column","file","plugin","super","reason","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","color","css","aside","mark","highlight","lines","start","max","end","maxWidth","map","index2","number","gutter","subLineStart","subLineEnd","subLine","spacing2","padding","spacing","code","requireStringifier$1","DEFAULT_RAW","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","Stringifier","builder","atrule","params","rawValue","raws","afterName","nodes","block","between","beforeAfter","detect","raw","buf","depth","step","last","child","before","left","right","decl","string","prop","important","own","first","root2","root","rawCache","toUpperCase","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","p","rawSemicolon","rule","ownSemicolon","requireStringify$1","hasRequiredSymbols$1","node$1","hasRequiredNode$1","comment$1","hasRequiredComment$1","declaration$1","hasRequiredDeclaration$1","container$1","hasRequiredContainer$1","atRule$1","hasRequiredAtRule$1","document$1$1","hasRequiredDocument$1","nonSecure$1","hasRequiredNonSecure$1","previousMap$1","hasRequiredPreviousMap$1","input$1","hasRequiredInput$1","root$1","hasRequiredRoot$1","list_1$1","hasRequiredList$1","rule$1","hasRequiredRule$1","fromJSON_1$1","hasRequiredFromJSON$1","mapGenerator$1","hasRequiredMapGenerator$1","tokenize$1","hasRequiredTokenize$1","parser$1","hasRequiredParser$1","parse_1$1","hasRequiredParse$1","warning$1","hasRequiredWarning$1","result$1","hasRequiredResult$1","warnOnce$1","hasRequiredWarnOnce$1","lazyResult$1","hasRequiredLazyResult$1","noWorkResult$1","hasRequiredNoWorkResult$1","processor$1","hasRequiredProcessor$1","postcss_1$1","hasRequiredPostcss$1","safeParser$1$1","hasRequiredSafeParser$1","safeParse$1","hasRequiredSafeParse$1","symbols$1","requireSymbols$1","isClean","my","requireNode$1","cloneNode","cloned","isArray","j","sourceOffset","inputCSS","position","offset","Node2","defaults","undefined","clone","append","addToError","postcssNode","input","insertAfter","overrides","insertBefore","cleanRaws","keepBetween","cloneAfter","cloneBefore","opts","rangeBy","getProxyProcessor","toProxy","markDirty","markClean","next","index","positionBy","positionInside","word","inputString","prev","endIndex","defaultType","remove","replaceWith","bookmark","foundSelf","result2","toJSON","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","input2","proxyCache","Proxy","stringifier2","node","proxyOf","requireComment$1","requireDeclaration$1","Declaration","variable","requireContainer$1","AtRule","parse","Root","Rule","cleanSource","markTreeDirty","Container","children","normalize","each","callback","iterator","getIterator","indexes","condition","lastEach","args","cb","exist","existIndex","reverse","splice","sample","selector","processed","rebuild","prepend","unshift","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","setPrototypeOf","requireAtRule$1","requireDocument$1","LazyResult","Processor","Document2","_objectSpread","toResult","registerLazyResult","registerProcessor","requireNonSecure$1","nanoid","random","customAlphabet","alphabet","defaultSize","requirePreviousMap$1","existsSync","readFileSync","dirname","SourceMapConsumer","SourceMapGenerator","PreviousMap","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","uriMatch","decodeURIComponent","substr","baseUriMatch","Buffer","atob","encoding","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","lastIndexOf","loadFile","fromSourceMap","prevPath","withContent","sourcesContent","requireInput$1","isAbsolute","resolve","fileURLToPath","pathToFileURL","fromOffsetCache","sourceMapAvailable","pathAvailable","Input","hasBOM","mapResolve","fromOffset","col","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","protocol","sourceContentFor","json","registerInput","requireRoot$1","ignore","requireList$1","list","comma","space","separators","array","current","func","inQuote","prevQuote","escape","letter","requireRule$1","values","sep","requireMapGenerator$1","relative","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","encodeURIComponent","fileURL","encodeURI","requireTokenize$1","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","quote","currentToken","escaped","escapePos","valueOf","ignoreErrors","returned","unclosed","what","back","token","endOfFile","nextToken","ignoreUnclosed","controlChar","fromCharCode","lastIndex","requireParser$1","tokenizer","SAFE_COMMENT_NEIGHBOR","empty","spaces","createTokenizer","shift","unnamedAtrule","init","brackets","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","tokens","founded","entries","doubleColon","customProperty","findLastWithPosition","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","cache","hasWord","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","reduce","all","lastTokenType","requireParse$1","Parser","parser2","process","env","NODE_ENV","requireWarning$1","Warning","range","opt","requireResult$1","Result","processor2","processor","messages","lastPlugin","postcssPlugin","warning2","warnings","filter","requireWarnOnce$1","printed","requireLazyResult$1","MapGenerator","warnOnce2","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","AtRuleExit","CommentExit","DeclarationExit","DocumentExit","Once","OnceExit","prepare","RootExit","RuleExit","NOT_VISITORS","CHILDREN","isPromise","then","getEvents","toStack","eventIndex","events","visitorIndex","visitors","cleanMarks","postcss2","stringified","syntax","parser","result","helpers","postcss","plugins","async","Promise","reject","processing","runAsync","catch","onRejected","finally","onFinally","getAsyncError","handleError","postcssVersion","pluginName","pluginVer","runtimeVer","version","b","parseInt","prepareVisitors","listeners","event","hasListener","_this","_asyncToGenerator","promise","runOnRoot","visitTick","_loop","visitor","roots","subRoot","sync","stringifier","walkSync","visitSync","onFulfilled","visit2","registerPostcss","requireProcessor$1","NoWorkResult","_processor","_css","_opts","_map","self2","generatedCSS","generatedMap","_root","requireNoWorkResult$1","normalized","use","requirePostcss$1","fromJSON","ownInputs","inputHydrated","_defaults$source","requireFromJSON$1","initializer","warningPrinted","creator","LANG","transformer","processOpts","pluginOpts","atRule","SafeParser","nextStart","prevEnd","requireSafeParser$1","requireSafeParse$1","postcss$1","__defProp2","__publicField2","__defNormalProp2","getDefaultExportFromCjs","getAugmentedNamespace","hasRequiredPicocolors_browser","picocolors_browser","requirePicocolors_browser","cssSyntaxError","hasRequiredCssSyntaxError","hasRequiredStringifier","stringify_1","hasRequiredStringify","require$$2","requireCssSyntaxError","requireStringifier","requireStringify","hasRequiredSymbols","hasRequiredNode","hasRequiredComment","declaration","hasRequiredDeclaration","container","hasRequiredContainer","hasRequiredAtRule","document$1","hasRequiredDocument","nonSecure","hasRequiredNonSecure","previousMap","hasRequiredPreviousMap","hasRequiredInput","hasRequiredRoot","list_1","hasRequiredList","hasRequiredRule","fromJSON_1","hasRequiredFromJSON","mapGenerator","hasRequiredMapGenerator","tokenize","hasRequiredTokenize","hasRequiredParser","parse_1","hasRequiredParse","warning","hasRequiredWarning","hasRequiredResult","warnOnce","hasRequiredWarnOnce","lazyResult","hasRequiredLazyResult","noWorkResult","hasRequiredNoWorkResult","hasRequiredProcessor","postcss_1","hasRequiredPostcss","safeParser$1","hasRequiredSafeParser","safeParse","hasRequiredSafeParse","symbols","requireSymbols","requireNode","requireComment","requireDeclaration","requireContainer","requireAtRule","requireDocument","requireNonSecure","requirePreviousMap","requireInput","requireRoot","requireList","requireRule","requireMapGenerator","requireTokenize","requireParser","requireParse","requireWarning","requireResult","requireWarnOnce","requireLazyResult","_this2","_loop2","requireProcessor","requireNoWorkResult","requirePostcss","_defaults$source2","requireFromJSON","requireSafeParser","requireSafeParse","BaseRRNode","childNodes2","childIterator","firstChild","ownerDocument","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","getUntaintedPrototype","angularZoneUnpatchedAlternative","_unused4","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","_unused5","on","fn","target","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","timeout","now","Date","leading","remaining","context","trailing","hookSetter","isRevoked","receiver","nowTimestamp","getWindowScroll","_c","_d","scrollingElement","pageXOffset","documentElement","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","getTime","StyleSheetMirror","_this$styleIDMap$get","styleIDMap","newId","idStyleMap","getStyle","generateId","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","NodeType","isNodeInLinkedList","DoubleLinkedList","head","addNode","__ln","tail","removeNode","errorHandler","moveKey","parentId","MutationBuffer","Set","mutations","processMutation","emit","frozen","locked","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removesSubTreeCache","addedSet","isAncestorInSet","droppedSet","tailNode","unhandledNode","payload","texts","genTextAreaValueMutation","attribute","style","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","removes","attributeMap","movedMap","mutationCb","textarea","item","cn","m","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","queue","n22","processRemoves","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","size","_mirror2","_isParentRemoved","_isAncestorInSet","callbackWrapper","rrwebWrapped","mutationBuffers","getEventTarget","composedPath","_unused6","initMutationObserver","rootEl","mutationBuffer","observer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","_ref4","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","endsWith","eventKey","eventName","handler","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","h","initScrollObserver","_ref5","scrollCb","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","host2","_ref13","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mutation","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","_ref3","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","_ref6","_ref7","lastH","lastW","initViewportResizeObserver","inputHandler","_ref8","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","_ref16","Play","Pause","Seeked","VolumeChange","RateChange","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","_ref9","_ref10","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","replaceSync","deleteRule","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","_ref11","typeKey","_ref12","initStyleSheetObserver","_ref14","_ref15","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","initStyleDeclarationObserver","collectFonts","_ref17","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","customElementObserver","_ref18","define","initCustomElementObserver","pluginHandlers","disconnect","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","iframes","crossOriginIframeMap","addLoadListener","loadListener","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","crossOriginIframeMirror","replaceIdOnNode","crossOriginIframeRootIdMap","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","ctor","contextMap","variableListFor$1","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","_unused8","patchGLPrototype","getOwnPropertyNames","recordArgs","_unused9","hookHandler","setter","takeFullSnapshot$1","jsContent","blob","self","Blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","_this3","canvasContextReset","snapshotInProgressMap","onmessage","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","takeCanvasSnapshots","getCanvas","matchedCanvas","searchCanvas","requestAnimationFrame","haystack","elem","_ref19","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","resizeWidth","resizeHeight","postMessage","_x","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","_unused7","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","_this4","adoptedStyleSheetData","styleIds","CSSRule","r2","_loop5","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","destroy","recording","cleanFrame","debug","n","t2","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","date","email","month","search","tel","time","week","select","password","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","CustomElement","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","global","nativeForEach","navigator","fetch","XMLHttpRequest","AbortController","userAgent","Compression","assignableWindow","nativeIsArray","ObjProto","isFunction","isObject","isUndefined","isString","isNull","isNullish","isBoolean","isDocument","isFormData","FormData","_createLogger","prefix","logger","_log","level","consoleLog","_len","_key","info","_len2","_key2","_len3","_key3","_len4","_key4","critical","_len5","_key5","uninitializedWarning","methodName","createLogger","additionalPrefix","breaker","i","l","eachArray","pair","formDataToQuery","formdata","use_val","use_key","arg_separator","tph_arr","val","File","__posthog_wrapped__","isHostOnDenyList","_options$payloadHostD","hostname","hostnameFromURL","defaultNotDenied","isHostDenied","payloadHostDenyList","deny","defaultNetworkOptions","initiatorTypes","maskRequestFn","recordHeaders","recordBody","recordInitialRequests","recordPerformance","performanceEntryTypeToObserve","payloadSizeLimitBytes","isNavigationTiming","entry","entryType","isResourceTiming","initPerformanceObserver","initialPerformanceEntries","performance","getEntries","initiatorType","requests","flatMap","prepareRequest","status","networkRequest","isInitial","PerformanceObserver","performanceEntries","wrappedInitiatorFilter","entryTypes","supportedEntryTypes","shouldRecordHeaders","shouldRecordBody","headers","matchesContentType","contentTypes","contentTypeHeader","contentType","ct","isBlobURL","Request","recordBodyType","getRequestPerformanceEntry","_x2","_x3","_x4","_x5","_getRequestPerformanceEntry","attempt","performanceEntry","predicate","findLast","getEntriesByName","startTime","_tryReadXHRBody","exposesServerTiming","responseEnd","timeOrigin","floor","round","endTime","requestHeaders","requestBody","responseHeaders","responseBody","timing","serverTiming","duration","contentTypePrefixDenyList","_tryReadBody","r","txt","_tryReadRequestBody2","_tryReadResponseBody2","cannotReadBodyReason","_r$headers$get","contentTypeIsDenied","_checkForCannotReadResponseBody","initFetchObserver","recordRequestHeaders","recordResponseHeaders","restorePatch","originalFetch","res","req","header","_x6","_tryReadRequestBody","_x7","_tryReadResponseBody","_res","_x8","_x9","initialisedHandler","initNetworkObserver","networkOptions","request","maskedRequest","performanceObserver","xhrObserver","fetchObserver","originalOpen","username","xhr","originalSetRequestHeader","setRequestHeader","originalSend","send","DONE","getAllResponseHeaders","response","initXhrObserver","getRecordNetworkPlugin","__PosthogExtensions__","rrwebPlugins","getRecordConsolePlugin","rrweb","rrwebRecord","rrwebConsoleRecord"],"mappings":"o4CAGIA,mEAHAC,EAAYC,OAAOC,eAEnBC,EAAgBA,CAACC,EAAKC,EAAKC,IADTC,EAACH,EAAKC,EAAKC,IAAUD,KAAOD,EAAMJ,EAAUI,EAAKC,EAAK,CAAEG,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMJ,UAAWF,EAAIC,GAAOC,EACjHC,CAAgBH,EAAoB,iBAARC,EAAmBA,EAAM,GAAKA,EAAKC,GAEpGK,EAAcV,OAAOC,eAErBU,EAAkBA,CAACR,EAAKC,EAAKC,IADTO,EAACT,EAAKC,EAAKC,IAAUD,KAAOD,EAAMO,EAAYP,EAAKC,EAAK,CAAEG,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMJ,UAAWF,EAAIC,GAAOC,EACnHO,CAAkBT,EAAoB,iBAARC,EAAmBA,EAAM,GAAKA,EAAKC,GACxGQ,GAAiCC,IACnCA,EAAUA,EAAoB,SAAI,GAAK,WACvCA,EAAUA,EAAwB,aAAI,GAAK,eAC3CA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAgB,KAAI,GAAK,OACnCA,EAAUA,EAAiB,MAAI,GAAK,QACpCA,EAAUA,EAAmB,QAAI,GAAK,UAC/BA,IACND,GAAgB,CAAA,GACbE,EAAsB,CAC1BC,KAAM,CAAC,aAAc,aAAc,gBAAiB,eACpDC,WAAY,CAAC,OAAQ,eACrBC,QAAS,CAAC,aAAc,gBAAiB,oBACzCC,iBAAkB,IAEdC,EAAoB,CACxBJ,KAAM,CAAC,WAAY,eACnBC,WAAY,CAAC,gBACbC,QAAS,GACTC,iBAAkB,CAAC,gBAEfE,EAA2B,CAAE,EAUnC,SAASC,EAAwBlB,GAC/B,GAAIiB,EAAyBjB,GAC3B,OAAOiB,EAAyBjB,GAClC,IAAMmB,EAZR,SAA2CnB,GACzC,IAAIoB,EAAKC,EACHC,EAAkI,OAAjGD,EAA8D,OAAxDD,EAAoB,MAAdG,gBAAqB,EAASA,WAAWC,WAAgB,EAASJ,EAAIK,iBAAsB,EAASJ,EAAGK,KAAKN,EAAKpB,GACrK,OAAIsB,GAAiCC,WAAWD,GACvCC,WAAWD,QAElB,CAEJ,CAIoBK,CAAkC3B,IAAQuB,WAAWvB,GACjE4B,EAAmBT,EAAUU,UAC7BC,EAAgB9B,KAAOW,EAAsBA,EAAoBX,QAAO,EACxE+B,EAAuBC,QAC3BF,GACAA,EAAcG,OACXC,IACC,IAAId,EAAKC,EACT,OAAOW,QACoG,OAAxGX,EAA4E,OAAtED,EAAMxB,OAAOuC,yBAAyBP,EAAkBM,SAAqB,EAASd,EAAIgB,UAAe,EAASf,EAAGgB,WAAWC,SAAS,iBACjJ,KAIDC,EAAcvC,KAAOgB,EAAoBA,EAAkBhB,QAAO,EAClEwC,EAAqBR,QACzBO,GAAeA,EAAYN,OAExBQ,IACC,IAAIrB,EACJ,MAA2C,mBAA7BQ,EAAiBa,KAA+D,OAAnCrB,EAAMQ,EAAiBa,SAAmB,EAASrB,EAAIiB,WAAWC,SAAS,iBAAe,KAI3J,GAAIP,GAAwBS,EAE1B,OADAvB,EAAyBjB,GAAOmB,EAAUU,UACnCV,EAAUU,UAEnB,IACE,IAAMa,EAAWC,SAASC,cAAc,UACxCD,SAASE,KAAKC,YAAYJ,GAC1B,IAAMK,EAAML,EAASM,cACrB,IAAKD,EAAK,OAAO5B,EAAUU,UAC3B,IAAMoB,EAAkBF,EAAI/C,GAAK6B,UAEjC,OADAc,SAASE,KAAKK,YAAYR,GACrBO,EACEhC,EAAyBjB,GAAOiD,EADVrB,CAEvB,CAAA,MAAAuB,GACN,OAAOvB,CACX,CACA,CACA,IAAMwB,EAA2B,CAAE,EACnC,SAASC,EAAuBrD,EAAKsD,EAAUpB,GAC7C,IAAId,EACEmC,EAAcvD,GAAAA,OAAAA,EAAOwD,KAAAA,OAAAA,OAAOtB,IAClC,GAAIkB,EAAyBG,GAC3B,OAAOH,EAAyBG,GAAU7B,KACxC4B,GAEJ,IAAMG,EAAqBvC,EAAwBlB,GAC7C0D,EAGA,OAHqBtC,EAAMxB,OAAOuC,yBACtCsB,EACAvB,SACW,EAASd,EAAIgB,IAC1B,OAAKsB,GACLN,EAAyBG,GAAYG,EAC9BA,EAAkBhC,KAAK4B,IAFCA,EAASpB,EAG1C,CACA,IAAMyB,EAAyB,CAAE,EACjC,SAASC,EAAqB5D,EAAKsD,EAAUb,GAC3C,IAAMc,EAAcvD,GAAAA,OAAAA,EAAOwD,KAAAA,OAAAA,OAAOf,IAClC,GAAIkB,EAAuBJ,GACzB,OAAOI,EAAuBJ,GAAUM,KACtCP,GAEJ,IACMQ,EADqB5C,EAAwBlB,GACRyC,GAC3C,MAA+B,mBAApBqB,EAAuCR,EAASb,IAC3DkB,EAAuBJ,GAAYO,EAC5BA,EAAgBD,KAAKP,GAC9B,CAiEA,IAAMS,EAAU,CACdC,WAjEF,SAAsBC,GACpB,OAAOZ,EAAuB,OAAQY,EAAI,aAC5C,EAgEEC,WA/DF,SAAsBD,GACpB,OAAOZ,EAAuB,OAAQY,EAAI,aAC5C,EA8DEE,cA7DF,SAAyBF,GACvB,OAAOZ,EAAuB,OAAQY,EAAI,gBAC5C,EA4DEG,YA3DF,SAAuBH,GACrB,OAAOZ,EAAuB,OAAQY,EAAI,cAC5C,EA0DEI,SAzDF,SAAoBJ,EAAIK,GACtB,OAAOV,EAAqB,OAAQK,EAAI,WAAjCL,CAA6CU,EACtD,EAwDEC,YAvDF,SAAuBN,GACrB,OAAOL,EAAqB,OAAQK,EAAI,cAAjCL,EACT,EAsDEY,KArDF,SAAgBP,GACd,OAAKA,GAAQ,SAAUA,EAChBZ,EAAuB,aAAcY,EAAI,QADb,IAErC,EAmDEQ,YAlDF,SAAuBR,GACrB,OAAOA,EAAGQ,WACZ,EAiDEC,WAhDF,SAAsBT,GACpB,OAAKA,GAAQ,eAAgBA,EACtBZ,EAAuB,UAAWY,EAAI,cADJ,IAE3C,EA8CEU,cA7CF,SAAyBV,EAAIW,GAC3B,OAAOvB,EAAuB,UAAWY,EAAI,gBAAtCZ,CAAuDuB,EAChE,EA4CEC,iBA3CF,SAA4BZ,EAAIW,GAC9B,OAAOvB,EAAuB,UAAWY,EAAI,mBAAtCZ,CAA0DuB,EACnE,EA0CEE,iBAzCF,WACE,OAAO5D,EAAwB,oBAAoB6D,WACrD,EAwCEC,MAvCF,SAAiBC,EAAQC,EAAMC,GAC7B,IACE,KAAMD,KAAQD,GACZ,MAAO,OAGT,IAAMG,EAAWH,EAAOC,GAClBG,EAAUF,EAAYC,GAW5B,MAVuB,mBAAZC,IACTA,EAAQxD,UAAYwD,EAAQxD,WAAa,CAAE,EAC3CjC,OAAO0F,iBAAiBD,EAAS,CAC/BE,mBAAoB,CAClBpF,YAAY,EACZF,MAAOmF,MAIbH,EAAOC,GAAQG,EACR,KACLJ,EAAOC,GAAQE,CAAAA,CAEX,CAAA,MAAAI,GACN,MAAO,MAEX,CACA,GAgBA,SAASC,EAAUxB,GACjB,OAAOA,EAAGyB,WAAazB,EAAG0B,YAC5B,CACA,SAASC,EAAa3B,GACpB,IAAM4B,EAGJ5B,GAAM,SAAUA,GAAM,SAAUA,GAAMF,EAAQS,KAAKP,IAAO,KAE5D,OAAOjC,QACL6D,GAAU,eAAgBA,GAAU9B,EAAQW,WAAWmB,KAAY5B,EAEvE,CACA,SAAS6B,EAAkBC,GACzB,MAAuD,wBAAhDnG,OAAOiC,UAAUQ,SAASX,KAAKqE,EACxC,CA2BA,SAASC,EAAoBC,GAC3B,IACE,IAAMC,EAASD,EAAGE,OAASF,EAAGG,SAC9B,IAAKF,EACH,OAAO,KAET,IAAMG,EAAmBC,MAAMC,KAC7BL,GACCM,GAAUC,EAAcD,EAAOP,EAAGS,QACnCC,KAAK,IACP,OApCwCC,EAoCEP,GAnChC/D,SAAS,6BAA+BsE,EAAQtE,SAAS,qCACnEsE,EAAUA,EAAQC,QAChB,8BACA,2DAGGD,CA8BN,CAAA,MAAQE,GACP,OAAO,IACX,CAvCA,IAA4CF,CAwC5C,CACA,SAASH,EAAcD,EAAOO,GAC5B,GA6BF,SAAyBP,GACvB,MAAO,eAAgBA,CACzB,CA/BMQ,CAAgBR,GAAQ,CAC1B,IAAIS,EACJ,IACEA,EAEAjB,EAAoBQ,EAAMU,aAtChC,SAA+BV,GAC7B,IAAMI,QAAEA,GAAYJ,EACpB,GAAII,EAAQO,MAAM,KAAKC,OAAS,EAAG,OAAOR,EAC1C,IAAMS,EAAY,CAAC,UAAkBC,OAAAA,OAAAA,KAAKC,UAAUf,EAAME,MAAQ,MAYlE,MAXwB,KAApBF,EAAMgB,UACRH,EAAUI,KAAY,SACbjB,EAAMgB,WACfH,EAAUI,KAAAA,SAAAA,OAAcjB,EAAMgB,UAAY,MAExChB,EAAMkB,cACRL,EAAUI,KAAAA,YAAAA,OAAiBjB,EAAMkB,aAAe,MAE9ClB,EAAMmB,MAAMP,QACdC,EAAUI,KAAKjB,EAAMmB,MAAMC,WAEtBP,EAAUV,KAAK,KAAO,GAC/B,CAuBMkB,CAAsBrB,EACvB,CAAA,MAAQM,GACPG,EAAoBT,EAAMI,OAChC,CACI,OAAIJ,EAAMU,WAAWR,KACZoB,EAAeb,EAAmBT,EAAMU,WAAWR,MAErDO,EAEP,IAWIc,EAXAC,EAAkBxB,EAAMI,QAI5B,OAaJ,SAAwBJ,GACtB,MAAO,iBAAkBA,CAC3B,CAlBQyB,CAAezB,IAAUA,EAAM0B,aAAa5F,SAAS,OAUrDyF,EAAQ,uCATVC,EAAkCA,EAUhBnB,QAAQkB,EAAO,WAR/BhB,EACKe,EAAeE,EAAiBjB,GAElCiB,CAEX,CAWA,MAAMG,EACJpD,WAAAA,GACExE,EAAgB6H,KAAM,YAAiCC,IAAAA,KACvD9H,EAAgB6H,KAAM,cAAmCE,IAAAA,QAC7D,CACEC,KAAAA,CAAMtE,GACJ,IAAI7C,EACJ,IAAK6C,EAAI,OAAO,EAChB,IAAMuE,EAAiC,OAA3BpH,EAAMgH,KAAKK,QAAQxE,SAAe,EAAS7C,EAAIoH,GAC3D,OAAOA,QAAMA,GAAA,CACjB,CACEE,OAAAA,CAAQF,GACN,OAAOJ,KAAKO,UAAUvG,IAAIoG,IAAO,IACrC,CACEI,MAAAA,GACE,OAAOtC,MAAMC,KAAK6B,KAAKO,UAAUE,OACrC,CACEJ,OAAAA,CAAQxE,GACN,OAAOmE,KAAKU,YAAY1G,IAAI6B,IAAO,IACvC,CAGE8E,iBAAAA,CAAkB9E,GAChB,IAAMuE,EAAKJ,KAAKG,MAAMtE,GACtBmE,KAAKO,UAAUK,OAAOR,GAClBvE,EAAGD,YACLC,EAAGD,WAAWiF,SACXC,GAAcd,KAAKW,kBAAkBG,IAG9C,CACEC,GAAAA,CAAIX,GACF,OAAOJ,KAAKO,UAAUQ,IAAIX,EAC9B,CACEY,OAAAA,CAAQC,GACN,OAAOjB,KAAKU,YAAYK,IAAIE,EAChC,CACEC,GAAAA,CAAIrF,EAAIsF,GACN,IAAMf,EAAKe,EAAKf,GAChBJ,KAAKO,UAAUa,IAAIhB,EAAIvE,GACvBmE,KAAKU,YAAYU,IAAIvF,EAAIsF,EAC7B,CACE1C,OAAAA,CAAQ2B,EAAIvE,GACV,IAAMwF,EAAUrB,KAAKM,QAAQF,GAC7B,GAAIiB,EAAS,CACX,IAAMF,EAAOnB,KAAKU,YAAY1G,IAAIqH,GAC9BF,GAAMnB,KAAKU,YAAYU,IAAIvF,EAAIsF,EACzC,CACInB,KAAKO,UAAUa,IAAIhB,EAAIvE,EAC3B,CACEyF,KAAAA,GACEtB,KAAKO,cAAgCN,IACrCD,KAAKU,gBAAkCR,OAC3C,EAKA,SAASqB,EAONC,GAAA,IAPqBC,QACtBA,EAAAA,iBACAC,EAAAA,QACAC,EAAAA,KACAC,EAAAA,MACA/J,EAAAA,YACAgK,GACFL,EACMM,EAAOjK,GAAS,GACdkK,EAAaH,GAAQI,EAAYJ,GAQvC,OAPIF,EAAiBC,EAAQK,gBAAkBD,GAAcL,EAAiBK,MAE1ED,EADED,EACKA,EAAYC,EAAML,GAElB,IAAIQ,OAAOH,EAAK9C,SAGpB8C,CACT,CACA,SAASE,EAAYE,GACnB,OAAOA,EAAIF,aACb,CACA,IAAMG,EAA0B,qBAoChC,SAASC,EAAaX,GACpB,IAAMG,EAAOH,EAAQG,KACrB,OAAOH,EAAQY,aAAa,uBAAyB,WAAaT,EAEhEI,EAAYJ,GACV,IACN,CACA,SAASU,EAAqBC,EAAMC,GAAS,IAAAC,EACvCC,EACJ,IACEA,EAAM,IAAIC,IAAIJ,EAAMC,QAAWI,EAAAA,OAAOC,SAASvE,KAChD,CAAA,MAAQwE,GACP,OAAO,IACX,CACE,IACMC,EAAQL,EAAIM,SAASD,MADb,uBAEd,OAA8C,QAA9CN,EAAiB,MAATM,OAAgB,EAASA,EAAM,UAAO,IAAAN,EAAAA,EAAA,IAChD,CAWA,IAAMQ,EAAiB,6CACjBC,EAAqB,sBACrBC,EAAgB,YAChBC,EAAW,wBACjB,SAAS1D,EAAelB,EAASF,GAC/B,OAAQE,GAAW,IAAIC,QACrBwE,GACA,CAACI,EAAQC,EAAQC,EAAOC,EAAQC,EAAOC,KACrC,IAlBiBhB,EAkBXiB,EAAWJ,GAASE,GAASC,EAC7BE,EAAaN,GAAUE,GAAU,GACvC,IAAKG,EACH,OAAON,EAET,GAAIH,EAAmBW,KAAKF,IAAaR,EAAcU,KAAKF,GAC1D,MAAA,OAAAG,OAAcF,GAAUE,OAAGH,GAAQG,OAAGF,EAAU,KAElD,GAAIR,EAASS,KAAKF,GAChB,MAAA,OAAAG,OAAcF,GAAUE,OAAGH,GAAQG,OAAGF,EAAU,KAElD,GAAoB,MAAhBD,EAAS,GACX,MAAA,OAAAG,OAAcF,GAAaG,QA9BZrB,EA8B0BpE,GA5B3CoE,EAAIsB,QAAQ,OAAY,EACjBtB,EAAI3D,MAAM,KAAKkF,MAAM,EAAG,GAAG1F,KAAK,KAEhCmE,EAAI3D,MAAM,KAAK,IAEVA,MAAM,KAAK,GAuB4B4E,WAAWC,EAAU,KAExE,IAAMM,EAAQ5F,EAAKS,MAAM,KACnBoF,EAAQR,EAAS5E,MAAM,KAE7B,IAAA,IAAWqF,KADXF,EAAMG,MACaF,GACJ,MAATC,IAEgB,OAATA,EACTF,EAAMG,MAENH,EAAM7E,KAAK+E,IAGf,MAAA,OAAAN,OAAcF,GAAaM,OAAAA,EAAM3F,KAAK,aAAOqF,EAAU,IAAA,GAG7D,CACA,IAgBIU,EACAC,EAjBAC,EAAM,EACJC,EAAe,IAAIC,OAAO,gBAC1BC,GAAe,EACrB,SAASC,IACP,OAAOJ,GACT,CAaA,IAAMK,EAAoB,qBACpBC,EAA0B,qBAuDhC,IAAMC,MAAqC7E,QAC3C,SAAS8E,EAAcC,EAAKC,GAC1B,OAAKA,GAA4C,KAA1BA,EAAeC,OAG/BC,EAAQH,EAAKC,GAFXA,CAGX,CACA,SAASG,EAAaC,GACpB,OAAO1L,QAAuB,QAAf0L,EAAG3D,SAAqB2D,EAAGC,gBAC5C,CACA,SAASH,EAAQH,EAAKO,GACpB,IAAIC,EAAKV,EAAe/K,IAAIiL,GAK5B,GAJKQ,IACHA,EAAKR,EAAIzK,cAAc,KACvBuK,EAAe3D,IAAI6D,EAAKQ,IAErBD,GAEP,GAAaA,EAAWE,WAAW,UAAYF,EAAWE,WAAW,SACjE,OAAOF,OAFPA,EAAa,GAKf,OADAC,EAAGE,aAAa,OAAQH,GACjBC,EAAGnH,IACZ,CACA,SAASsH,GAAmBX,EAAKtD,EAAS7E,EAAMjF,GAC9C,OAAKA,EAGQ,QAATiF,GAA2B,SAATA,IAAiC,QAAZ6E,GAAkC,MAAb9J,EAAM,KAElD,eAATiF,GAAsC,MAAbjF,EAAM,GADjCmN,EAAcC,EAAKpN,GAGR,eAATiF,GAAsC,UAAZ6E,GAAmC,OAAZA,GAAgC,OAAZA,EAE5D,WAAT7E,EAxFb,SAAiCmI,EAAKC,GACpC,GAA8B,KAA1BA,EAAeC,OACjB,OAAOD,EAET,IAAIW,EAAM,EACV,SAASC,EAAkBC,GACzB,IAAIC,EACEjD,EAAQgD,EAAME,KAAKf,EAAegB,UAAUL,IAClD,OAAI9C,GACFiD,EAASjD,EAAM,GACf8C,GAAOG,EAAOhH,OACPgH,GAEF,EACX,CAEE,IADA,IAAMG,EAAS,GAEbL,EAAkBhB,KACde,GAAOX,EAAelG,SAFf,CAKX,IAAI0D,EAAMoD,EAAkBjB,GAC5B,GAAsB,MAAlBnC,EAAIuB,OAAQ,GACdvB,EAAMsC,EAAcC,EAAKvC,EAAIwD,UAAU,EAAGxD,EAAI1D,OAAS,IACvDmH,EAAO9G,KAAKqD,OACP,CACL,IAAI0D,EAAiB,GACrB1D,EAAMsC,EAAcC,EAAKvC,GAEzB,IADA,IAAI2D,GAAW,IACF,CACX,IAAMC,EAAKpB,EAAeqB,OAAOV,GACjC,GAAW,KAAPS,EAAW,CACbH,EAAO9G,MAAMqD,EAAM0D,GAAgBjB,QACnC,KACV,CAAA,GAAoBkB,EASC,MAAPC,IACFD,GAAW,OAVO,CACpB,GAAW,MAAPC,EAAY,CACdT,GAAO,EACPM,EAAO9G,MAAMqD,EAAM0D,GAAgBjB,QACnC,KACZ,CAA4B,MAAPmB,IACTD,GAAW,GAOfD,GAAkBE,EAClBT,GAAO,CACf,CACA,CACA,CACE,OAAOM,EAAO5H,KAAK,KACrB,CAoCWiI,CAAwBvB,EAAKpN,GAClB,UAATiF,EACF4C,EAAe7H,EAAOuN,EAAQH,IAChB,WAAZtD,GAAiC,SAAT7E,EAC1BkI,EAAcC,EAAKpN,GAErBA,EAREmN,EAAcC,EAAKpN,GAPnBA,CAgBX,CACA,SAAS4O,GAAgB9E,EAAS7E,EAAM4J,GACtC,OAAoB,UAAZ/E,GAAmC,UAAZA,IAAiC,aAAT7E,CACzD,CAsBA,SAAS6J,GAAkB1F,EAAOtB,EAAOiH,GACvC,IAAK3F,EAAO,OAAO,EACnB,GAAIA,EAAM3D,WAAa2D,EAAM1D,aAC3B,QAAKqJ,GACED,GAAkBhL,EAAQG,WAAWmF,GAAQtB,EAAOiH,GAE7D,IAAA,IAASC,EAAS5F,EAAM6F,UAAU9H,OAAQ6H,KAAY,CACpD,IAAME,EAAY9F,EAAM6F,UAAUD,GAClC,GAAIlH,EAAMkE,KAAKkD,GACb,OAAO,CAEb,CACE,QAAKH,GACED,GAAkBhL,EAAQG,WAAWmF,GAAQtB,EAAOiH,EAC7D,CACA,SAASI,GAAgB/F,EAAOgG,EAAeC,EAAkBN,GAC/D,IAAItB,EACJ,GAAIjI,EAAU4D,IAEZ,GADAqE,EAAKrE,GACAtF,EAAQC,WAAW0J,GAAItG,OAC1B,OAAO,MAEV,IAA2C,OAAjCrD,EAAQI,cAAckF,GAC/B,OAAO,EAEPqE,EAAK3J,EAAQI,cAAckF,EAC/B,CACE,IACE,GAA6B,iBAAlBgG,GACT,GAAIL,GACF,GAAItB,EAAG6B,QAAAA,IAAAA,OAAYF,IAAkB,OAAO,OAE5C,GAAI3B,EAAGwB,UAAU7K,SAASgL,GAAgB,OAAO,OAGnD,GAAIN,GAAkBrB,EAAI2B,EAAeL,GAAiB,OAAO,EAEnE,GAAIM,EACF,GAAIN,GACF,GAAItB,EAAG6B,QAAQD,GAAmB,OAAO,OAEzC,GAAI5B,EAAG8B,QAAQF,GAAmB,OAAO,CAG9C,CAAA,MAAQG,GAAI,CAEb,OAAO,CACT,CAuDA,SAASC,GAAczL,EAAI0L,GACzB,IAAMtC,IACJA,EACAuC,OAAQC,EAAAA,WACRC,EAAAA,cACAC,EAAAA,UACAC,EAAAA,iBACAC,EAAAA,iBACAnG,EAAmB,CAAE,EAAAoG,WACrBA,EAAAA,YACAjG,EAAAA,eACAkG,EAAiB,CAAE,EAAAC,aACnBA,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,kBACAC,GAAoB,GAClBZ,EACEa,EA8DR,SAAmBnD,EAAKwC,GACtB,IAAKA,EAAQzG,QAAQiE,GAAM,OAC3B,IAAMoD,EAAQZ,EAAQtH,MAAM8E,GAC5B,OAAiB,IAAVoD,OAAc,EAASA,CAChC,CAlEiBC,CAAUrD,EAAKwC,GAC9B,OAAQ5L,EAAGyB,UACT,KAAKzB,EAAG0M,cACN,MAAsB,eAAlB1M,EAAG2M,WACE,CACL5G,KAAMvJ,EAAaoQ,SACnB7M,WAAY,GACZ4M,WAAY3M,EAAG2M,YAIV,CACL5G,KAAMvJ,EAAaoQ,SACnB7M,WAAY,IAGlB,KAAKC,EAAG6M,mBACN,MAAO,CACL9G,KAAMvJ,EAAasQ,aACnB7L,KAAMjB,EAAGiB,KACT8L,SAAU/M,EAAG+M,SACbC,SAAUhN,EAAGgN,SACbT,UAEJ,KAAKvM,EAAG0B,aACN,OAmFN,SAA8B1B,EAAI0L,GAmBhC,IAlBA,IAwLIuB,GAxLE7D,IACJA,EAAAA,WACAyC,EAAAA,cACAC,EAAAA,iBACAE,EAAAA,iBACAnG,EAAmB,CAAE,EAAAG,YACrBA,EAAAA,eACAkG,EAAiB,CAAE,EAAAC,aACnBA,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,kBACAC,GAAoB,EAAAC,OACpBA,GACEb,EACEwB,EAvQR,SAA2BtH,EAASiG,EAAYC,GAC9C,IACE,GAA0B,iBAAfD,GACT,GAAIjG,EAAQqF,UAAU7K,SAASyL,GAC7B,OAAO,OAGT,IAAA,IAASb,EAASpF,EAAQqF,UAAU9H,OAAQ6H,KAAY,CACtD,IAAME,EAAYtF,EAAQqF,UAAUD,GACpC,GAAIa,EAAW7D,KAAKkD,GAClB,OAAO,CAEjB,CAEI,GAAIY,EACF,OAAOlG,EAAQ2F,QAAQO,EAE1B,CAAA,MAAQN,GAAI,CAEb,OAAO,CACT,CAmPoB2B,CAAkBnN,EAAI6L,EAAYC,GAC9ChG,EA1XR,SAA2BF,GACzB,GAAIA,aAAmBwH,gBACrB,MAAO,OAET,IAAMC,EAAmBlH,EAAYP,EAAQE,SAC7C,OAAI8C,EAAaZ,KAAKqF,GACb,MAEFA,CACT,CAiXkBC,CAAkBtN,GAC9BuN,EAAa,CAAE,EACbC,EAAMxN,EAAGuN,WAAWpK,OACjBsK,EAAK,EAAGA,EAAKD,EAAKC,IAAM,CAC/B,IAAMC,EAAO1N,EAAGuN,WAAWE,GACtB7C,GAAgB9E,EAAS4H,EAAKzM,KAAMyM,EAAK1R,SAC5CuR,EAAWG,EAAKzM,MAAQ8I,GACtBX,EACAtD,EACAK,EAAYuH,EAAKzM,MACjByM,EAAK1R,OAGb,CACE,GAAgB,SAAZ8J,GAAsBkG,EAAkB,CAC1C,IAAMvJ,EAlCV,SAAkBzC,GAChB,OAAOA,EAAGyC,IACZ,CAgCiBkL,CAAS3N,GACtB,GAAIyC,EAAM,CACR,IAAImL,EAAaC,GAAezE,EAAK3G,GACrC,IAAKmL,GAAcnL,EAAKpE,SAAS,QAI/BuP,EAAaC,GAAezE,EAHTrC,OAAOC,SAASQ,OAEU,IADtB/E,EAAKG,QAAQmE,OAAOC,SAASvE,KAAM,KAI5D,IAAIE,EAAU,KACViL,IACFjL,EAAUZ,EAAoB6L,IAE5BjL,WACK4K,EAAWO,WACXP,EAAW9K,KAClB8K,EAAWQ,SAAWpL,EAE9B,CACA,CACE,GAAgB,UAAZmD,GAAuB9F,EAAGgO,SAC5BhO,EAAGiO,WAAanO,EAAQK,YAAYH,IAAO,IAAIsJ,OAAOnG,OAAQ,CAC9D,IAAMR,EAAUZ,EACd/B,EAAGgO,OAEDrL,IACF4K,EAAWQ,SAAWpL,EAE5B,CACE,GAAgB,UAAZmD,GAAmC,aAAZA,GAAsC,WAAZA,EAAsB,CACzE,IAAM9J,EAAQgE,EAAGhE,MACXkS,EAAUlO,EAAGkO,QACK,UAApBX,EAAWxH,MAAwC,aAApBwH,EAAWxH,MAA2C,WAApBwH,EAAWxH,MAAyC,WAApBwH,EAAWxH,MAAqB/J,EACnIuR,EAAWvR,MAAQ0J,EAAe,CAChCE,QAAS5F,EACT+F,KAAMQ,EAAavG,GACnB8F,UACA9J,QACA6J,mBACAG,gBAEOkI,IACTX,EAAWW,QAAUA,EAE3B,CACkB,WAAZpI,IACE9F,EAAGmO,WAAatI,EAAyB,OAC3C0H,EAAWY,UAAW,SAEfZ,EAAWY,UAGtB,GAAgB,WAAZrI,GAAwB9F,EAAGoO,KAC7B,IACEb,EAAWc,aAAerO,EAAGuL,QAAQ,gBAAkB,QAAU,WAC3D,CAAA,MAAA+C,GACNf,EAAWc,aAAe,QAC1Bd,EAAWgB,8BAA+B,CAChD,CAEE,GAAgB,WAAZzI,GAAwBsG,EAC1B,GAAqB,OAAjBpM,EAAGwO,WAjjBX,SAAyBC,GACvB,IAAMC,EAAMD,EAAOE,WAAW,MAC9B,IAAKD,EAAK,OAAO,EAEjB,IADA,IACSE,EAAI,EAAGA,EAAIH,EAAOI,MAAOD,GADhB,GAEhB,IAAA,IAASE,EAAI,EAAGA,EAAIL,EAAOM,OAAQD,GAFnB,GAEmC,CACjD,IAAME,EAAeN,EAAIM,aACnBC,EAAuB3I,KAA2B0I,EAAeA,EAAa1I,GAA2B0I,EAW/G,GAVoB,IAAIE,YAEtBD,EAAqBxR,KACnBiR,EACAE,EACAE,EACAK,KAAKC,IAXK,GAWUX,EAAOI,MAAQD,GACnCO,KAAKC,IAZK,GAYUX,EAAOM,OAASD,IACpCO,KAAKC,QAEOC,MAAMC,GAAoB,IAAVA,IAAc,OAAO,CAC3D,CAEE,OAAO,CACT,EA4hBWC,CAAgBzP,KACnBuN,EAAWmC,WAAa1P,EAAG2P,UACzBzD,EAAenG,KACfmG,EAAe0D,eAGV,KAAE,cAAe5P,GAAK,CAC/B,IAAM6P,EAAgB7P,EAAG2P,UACvBzD,EAAenG,KACfmG,EAAe0D,SAEXE,EAAc1G,EAAIzK,cAAc,UACtCmR,EAAYjB,MAAQ7O,EAAG6O,MACvBiB,EAAYf,OAAS/O,EAAG+O,OAKpBc,IAJuBC,EAAYH,UACrCzD,EAAenG,KACfmG,EAAe0D,WAGfrC,EAAWmC,WAAaG,EAEhC,CAEE,GAAgB,QAAZ/J,GAAqBqG,EAAc,CAChC1D,IACHA,EAAgBW,EAAIzK,cAAc,UAClC+J,EAAYD,EAAckG,WAAW,OAEvC,IAAMoB,EAAQ/P,EACRgQ,EAAWD,EAAME,YAAcF,EAAMG,aAAa,QAAU,gBAC5DC,EAAmBJ,EAAMK,YACzBC,EAAoBA,KACxBN,EAAMO,oBAAoB,OAAQD,GAClC,IACE5H,EAAcoG,MAAQkB,EAAMQ,aAC5B9H,EAAcsG,OAASgB,EAAMS,cAC7B9H,EAAU+H,UAAUV,EAAO,EAAG,GAC9BxC,EAAWmC,WAAajH,EAAckH,UACpCzD,EAAenG,KACfmG,EAAe0D,QAElB,CAAA,MAAQ3I,GACP,GAA0B,cAAtB8I,EAAMK,YAKR,OAJAL,EAAMK,YAAc,iBAChBL,EAAMW,UAAmC,IAAvBX,EAAMQ,aAC1BF,IACGN,EAAMY,iBAAiB,OAAQN,IAGpCO,QAAQC,KACmBb,yBAAAA,OAAAA,EAAoB/I,aAAAA,OAAAA,GAGzD,CACgC,cAAtB8I,EAAMK,cACRD,EAAmB5C,EAAW6C,YAAcD,EAAmBJ,EAAMe,gBAAgB,eAC7F,EAEQf,EAAMW,UAAmC,IAAvBX,EAAMQ,aAAoBF,IAC3CN,EAAMY,iBAAiB,OAAQN,EACxC,CACE,GAAgB,UAAZvK,GAAmC,UAAZA,EAAqB,CAC9C,IAAMiL,EAAkBxD,EACxBwD,EAAgBC,cAAgBhR,EAAGiR,OAAS,SAAW,SACvDF,EAAgBG,oBAAsBlR,EAAGmR,YACzCJ,EAAgBK,qBAAuBpR,EAAGqR,aAC1CN,EAAgBO,cAAgBtR,EAAGuR,MACnCR,EAAgBS,aAAexR,EAAGyR,KAClCV,EAAgBW,eAAiB1R,EAAG2R,MACxC,CACOrF,IACCtM,EAAG4R,aACLrE,EAAWsE,cAAgB7R,EAAG4R,YAE5B5R,EAAG8R,YACLvE,EAAWwE,aAAe/R,EAAG8R,YAGjC,GAAI5E,EAAW,CACb,IAAM2B,MAAEA,EAAAA,OAAOE,GAAW/O,EAAGgS,wBAC7BzE,EAAa,CACX0E,MAAO1E,EAAW0E,MAClBC,SAAAA,GAAAA,OAAarD,EAAK,MAClBsD,UAAAA,GAAAA,OAAcpD,EAAM,MAE1B,CACkB,WAAZjJ,GAAyBuG,EAAgBkB,EAAW6E,OACjDpS,EAAGqS,kBACN9E,EAAW+E,OAAS/E,EAAW6E,YAE1B7E,EAAW6E,KAGpB,IACMG,eAAepU,IAAI2H,KAAUmH,GAAkB,EACpD,CAAA,MAAQzB,GAAI,CAEb,MAAO,CACLzF,KAAMvJ,EAAaK,QACnBiJ,UACAyH,aACAxN,WAAY,GACZyS,MAAOhJ,EAAaxJ,SAAO,EAC3BkN,YACAX,SACAkG,SAAUxF,EAEd,CA3RayF,CAAqB1S,EAAI,CAC9BoJ,MACAyC,aACAC,gBACAE,mBACAnG,mBACAG,cACAkG,iBACAC,eACAC,eACAC,kBACAC,oBACAC,WAEJ,KAAKvM,EAAG2S,UACN,OA2BN,SAA2B3S,EAAI0L,GAC7B,IAAIvO,GACE4O,UAAEA,EAAAA,WAAWE,EAAAA,OAAYM,GAAWb,EACpCkH,EAAS9S,EAAQG,WAAWD,GAC5B6S,EAAgBD,GAAUA,EAAO9M,QACnCG,EAAOnG,EAAQK,YAAYH,GACzB8S,EAA4B,UAAlBD,QAAmC,EAC7CE,EAA6B,WAAlBF,QAAoC,EACrD,GAAIC,GAAW7M,EAAM,CACnB,IACMjG,EAAGgT,aAAehT,EAAGiT,kBACU,OAAvB9V,EAAMyV,EAAO5E,YAAiB,EAAS7Q,EAAIgF,YACrD8D,EAAOlE,EAAoB6Q,EAAO5E,OAErC,CAAA,MAAQ/G,GACP2J,QAAQC,KAAAA,wDAAAA,OACkD5J,GACxDjH,EAER,CACIiG,EAAOpC,EAAeoC,EAAMsD,EAAQmC,EAAQtC,KAChD,CACM2J,IACF9M,EAAO,uBAEJ6M,IAAYC,GAAY9M,GAAQ8F,IACnC9F,EAAOgG,EAAaA,EAAWhG,EAAMnG,EAAQI,cAAcF,IAAOiG,EAAKrD,QAAQ,QAAS,MAE1F,MAAO,CACLmD,KAAMvJ,EAAa0W,KACnB/S,YAAa8F,GAAQ,GACrB6M,UACAvG,SAEJ,CA7Da4G,CAAkBnT,EAAI,CAC3BoJ,MACA2C,YACAE,aACAM,WAEJ,KAAKvM,EAAGoT,mBACN,MAAO,CACLrN,KAAMvJ,EAAa6W,MACnBlT,YAAa,GACboM,UAEJ,KAAKvM,EAAGsT,aACN,MAAO,CACLvN,KAAMvJ,EAAa+W,QACnBpT,YAAaL,EAAQK,YAAYH,IAAO,GACxCuM,UAEJ,QACE,OAAO,EAEb,CAyCA,SAASsB,GAAezE,EAAK3G,GAC3B,OAAOJ,MAAMC,KAAK8G,EAAI5I,aAAagT,MAAMxR,GAAOA,EAAGS,OAASA,GAC9D,CA6MA,SAASgR,GAAcC,GACrB,OAAIA,QACK,GAEAA,EAAUvN,aAErB,CAiCA,SAASwN,GAAoB3T,EAAI0L,GAC/B,IAAMtC,IACJA,EACAuC,OAAQC,EAAAA,WACRC,EAAAA,cACAC,EAAAA,cACAV,EAAAA,iBACAC,EAAAA,UACAuI,GAAY,EAAA5H,iBACZA,GAAmB,EAAAnG,iBACnBA,EAAmB,CAAE,EAAAoG,WACrBA,EAAAA,YACAjG,EAAAA,eACA6N,EAAAA,eACA3H,EAAiB,CAAE,EAAAC,aACnBA,GAAe,EAAAC,aACfA,GAAe,EAAA0H,YACfA,EAAAA,aACAC,EAAAA,kBACAC,EAAoB,IAAAC,iBACpBA,EAAAA,sBACAC,EAAwB,IAAA7H,gBACxBA,EAAkBA,MAAM,GAAAC,kBACxBA,GAAoB,GAClBZ,GACAK,UAAEA,GAAcL,GAChByI,mBAAEA,GAAqB,GAASzI,EAC/BK,IAEHA,EAAYZ,GACVnL,EACAoL,EACAC,OAJmC,IAAdU,IAQzB,IAoBIxH,EApBE6P,EAAkB3I,GAAczL,EAAI,CACxCoJ,MACAuC,OAAQC,EACRC,aACAC,gBACAC,YACAC,mBACAnG,mBACAoG,aACAjG,cACAkG,iBACAC,eACAC,eACAC,kBACAC,sBAEF,IAAK8H,EAEH,OADAxD,QAAQC,KAAK7Q,EAAI,kBACV,KAIPuE,EADEqH,EAAQzG,QAAQnF,GACb4L,EAAQtH,MAAMtE,IA1FvB,SAAyBqU,EAAIR,GAC3B,GAAIA,EAAeS,SAAWD,EAAGtO,OAASvJ,EAAa+W,QACrD,OAAO,EACEc,GAAAA,EAAGtO,OAASvJ,EAAaK,QAAS,CAC3C,GAAIgX,EAAeU,SACH,WAAfF,EAAGvO,SACW,SAAfuO,EAAGvO,UAA6C,YAAtBuO,EAAG9G,WAAWO,KAA0C,WAArBuG,EAAG9G,WAAWiH,IAAyC,kBAAtBH,EAAG9G,WAAWO,MAC7F,SAAfuG,EAAGvO,SAA4C,aAAtBuO,EAAG9G,WAAWO,KAAoD,iBAAvBuG,EAAG9G,WAAW9K,MAAkE,OAA7CgE,EAAqB4N,EAAG9G,WAAW9K,OACxI,OAAO,EACb,GAAeoR,EAAeY,cAA+B,SAAfJ,EAAGvO,SAA4C,kBAAtBuO,EAAG9G,WAAWO,KAA0C,SAAfuG,EAAGvO,UAAuB2N,GAAcY,EAAG9G,WAAWtM,MAAMiG,MACtK,sCACyC,qBAAtCuM,GAAcY,EAAG9G,WAAWtM,OAAqE,SAArCwS,GAAcY,EAAG9G,WAAWO,MAAwD,qBAArC2F,GAAcY,EAAG9G,WAAWO,MAAoE,kBAArC2F,GAAcY,EAAG9G,WAAWO,OACrM,OAAO,EACEuG,GAAe,SAAfA,EAAGvO,QAAoB,CAChC,GAAI+N,EAAea,sBAAwBjB,GAAcY,EAAG9G,WAAWtM,MAAMiG,MAAM,0BACjF,OAAO,EACE2M,GAAAA,EAAec,iBAAmBlB,GAAcY,EAAG9G,WAAWqH,UAAU1N,MAAM,sBACzFuM,GAAcY,EAAG9G,WAAWtM,MAAMiG,MAAM,mBAA2D,cAAtCuM,GAAcY,EAAG9G,WAAWtM,OACvF,OAAO,EACf,GAAiB4S,EAAegB,iBAAyD,WAAtCpB,GAAcY,EAAG9G,WAAWtM,OAA4D,cAAtCwS,GAAcY,EAAG9G,WAAWtM,OAA+D,YAAtCwS,GAAcY,EAAG9G,WAAWtM,OAC9K,OAAO,EACf,GAAiB4S,EAAeiB,wBAAqD,IAAhCT,EAAG9G,WAAW,cAC3D,OAAO,EACEsG,GAAAA,EAAekB,qBAA6D,WAAtCtB,GAAcY,EAAG9G,WAAWtM,OAA4D,cAAtCwS,GAAcY,EAAG9G,WAAWtM,OAA+D,cAAtCwS,GAAcY,EAAG9G,WAAWtM,OAA+D,cAAtCwS,GAAcY,EAAG9G,WAAWtM,OAA+D,WAAtCwS,GAAcY,EAAG9G,WAAWtM,OAAsBwS,GAAcY,EAAG9G,WAAWqH,UAAU1N,MAAM,cAAgBuM,GAAcY,EAAG9G,WAAWqH,UAAU1N,MAAM,cAC1Z,OAAO,EACf,GAAiB2M,EAAemB,uBAA+D,6BAAtCvB,GAAcY,EAAG9G,WAAWtM,OAA8E,wBAAtCwS,GAAcY,EAAG9G,WAAWtM,OAAyE,eAAtCwS,GAAcY,EAAG9G,WAAWtM,OAAgE,oBAAtCwS,GAAcY,EAAG9G,WAAWtM,OAAqE,cAAtCwS,GAAcY,EAAG9G,WAAWtM,OAA+D,iBAAtCwS,GAAcY,EAAG9G,WAAWtM,OAAkE,+BAAtCwS,GAAcY,EAAG9G,WAAWtM,OAC9a,OAAO,CAEf,CACA,CACE,OAAO,CACT,CA4DagU,CAAgBb,EAAiBP,KAAoBM,GAAsBC,EAAgBrO,OAASvJ,EAAa0W,MAASkB,EAAgBtB,SAAYsB,EAAgBjU,YAAYyC,QAAQ,cAAe,IAAIO,QAGjN4F,IAFAD,EAIP,IAAMoM,EAAiBvZ,OAAOwZ,OAAOf,EAAiB,CAAE7P,OAExD,GADAqH,EAAQvG,IAAIrF,EAAIkV,GACZ3Q,IAAOuE,EACT,OAAO,KAELgL,GACFA,EAAY9T,GAEd,IAAIoV,GAAexB,EACnB,GAAIsB,EAAenP,OAASvJ,EAAaK,QAAS,CAChDuY,EAAcA,IAAgBF,EAAehI,iBACtCgI,EAAehI,UACtB,IAAMmI,EAAevV,EAAQW,WAAWT,GACpCqV,GAAgBxT,EAAkBwT,KACpCH,EAAeI,cAAe,EACpC,CACE,IAAKJ,EAAenP,OAASvJ,EAAaoQ,UAAYsI,EAAenP,OAASvJ,EAAaK,UAAYuY,EAAa,CAC9GvB,EAAe0B,gBAAkBL,EAAenP,OAASvJ,EAAaK,SAAsC,SAA3BqY,EAAepP,UAClGqO,GAAqB,GAEvB,IAAMqB,EAAgB,CACpBpM,MACAuC,OAAQC,EACRC,aACAC,gBACAC,YACAX,gBACAC,mBACAuI,YACA5H,mBACAnG,mBACAoG,aACAjG,cACA6N,iBACA3H,iBACAC,eACAC,eACA+H,qBACAL,cACAC,eACAC,oBACAC,mBACAC,wBACA7H,mBAEF,GAAI6I,EAAenP,OAASvJ,EAAaK,SAAsC,aAA3BqY,EAAepP,cAA8D,IAApCoP,EAAe3H,WAAWvR,YAErH,IAAA,IAAWyZ,KAAUpT,MAAMC,KAAKxC,EAAQC,WAAWC,IAAM,CACvD,IAAM0V,EAAsB/B,GAAoB8B,EAAQD,GACpDE,GACFR,EAAenV,WAAWyD,KAAKkS,EAEzC,CAEI,IAAIL,EAAe,KACnB,GAAI7T,EAAUxB,KAAQqV,EAAevV,EAAQW,WAAWT,IACtD,IAAA,IAAWyV,KAAUpT,MAAMC,KAAKxC,EAAQC,WAAWsV,IAAgB,CACjE,IAAMK,EAAsB/B,GAAoB8B,EAAQD,GACpDE,IACF7T,EAAkBwT,KAAkBK,EAAoBC,UAAW,GACnET,EAAenV,WAAWyD,KAAKkS,GAEzC,CAEA,CACE,IAAM9C,EAAS9S,EAAQG,WAAWD,GAuFlC,OAtFI4S,GAAUjR,EAAaiR,IAAW/Q,EAAkB+Q,KACtDsC,EAAeS,UAAW,GAExBT,EAAenP,OAASvJ,EAAaK,SAAsC,WAA3BqY,EAAepP,SAxiBrE,SAA0BrH,EAAUmX,EAAU5B,GAC5C,IAAMlV,EAAML,EAASM,cACrB,GAAKD,EAAL,CAGA,IACI+W,EADAC,GAAQ,EAEZ,IACED,EAAa/W,EAAIJ,SAASmX,UAC3B,CAAA,MAAQhT,GACP,MACJ,CACE,GAAmB,aAAfgT,EAAJ,CAcA,IAAME,EAAW,cACjB,GAAIjX,EAAIkI,SAASvE,OAASsT,GAAYtX,EAAS2T,MAAQ2D,GAA6B,KAAjBtX,EAAS2T,IAE1E,OADA4D,WAAWJ,EAAU,GACdnX,EAASkS,iBAAiB,OAAQiF,GAE3CnX,EAASkS,iBAAiB,OAAQiF,EANpC,KAbE,CACE,IAAMK,EAAQD,YAAW,KAClBF,IACHF,IACAE,GAAQ,EAChB,GACO9B,GACHvV,EAASkS,iBAAiB,QAAQ,KAChCuF,aAAaD,GACbH,GAAQ,EACRF,GAAU,GAGhB,CArBA,CA4BA,CAygBIO,CACEnW,GACA,KACE,IAAMoW,EAAYpW,EAAGqS,gBACrB,GAAI+D,GAAarC,EAAc,CAC7B,IAAMsC,EAAuB1C,GAAoByC,EAAW,CAC1DhN,IAAKgN,EACLzK,OAAQC,EACRC,aACAC,gBACAC,YACAX,gBACAC,mBACAuI,WAAW,EACX5H,mBACAnG,mBACAoG,aACAjG,cACA6N,iBACA3H,iBACAC,eACAC,eACA+H,qBACAL,cACAC,eACAC,oBACAC,mBACAC,wBACA7H,oBAEEgK,GACFtC,EACE/T,EACAqW,EAGd,IAEMrC,GAGAkB,EAAenP,OAASvJ,EAAaK,SAAsC,SAA3BqY,EAAepP,SAA+D,iBAAlCoP,EAAe3H,WAAWO,MAAuD,eAAlCoH,EAAe3H,WAAWO,KAA0D,YAAlCoH,EAAe3H,WAAWO,KAA+D,iBAAnCoH,EAAe3H,WAAW9K,MAA8E,QAAzDgE,EAAqByO,EAAe3H,WAAW9K,QAjjBvV,SAA8B6T,EAAMV,EAAUW,GAC5C,IACIC,EADAV,GAAQ,EAEZ,IACEU,EAAmBF,EAAKtI,KACzB,CAAA,MAAQnL,GACP,MACJ,CACE,IAAI2T,EAAJ,CACA,IAAMP,EAAQD,YAAW,KAClBF,IACHF,IACAE,GAAQ,EACd,GACKS,GACHD,EAAK3F,iBAAiB,QAAQ,KAC5BuF,aAAaD,GACbH,GAAQ,EACRF,GAAU,GAVU,CAYxB,CA8hBIa,CACEzW,GACA,KACE,GAAIiU,EAAkB,CACpB,IAAMyC,EAAqB/C,GAAoB3T,EAAI,CACjDoJ,MACAuC,OAAQC,EACRC,aACAC,gBACAC,YACAX,gBACAC,mBACAuI,WAAW,EACX5H,mBACAnG,mBACAoG,aACAjG,cACA6N,iBACA3H,iBACAC,eACAC,eACA+H,qBACAL,cACAC,eACAC,oBACAC,mBACAC,wBACA7H,oBAEEqK,GACFzC,EACEjU,EACA0W,EAGd,IAEMxC,GAGGgB,CACT,CAwHA,SAASyB,GAA0B/H,GACjC,OAAOA,GAAKA,EAAEgI,YAAcjb,OAAOiC,UAAUiZ,eAAepZ,KAAKmR,EAAG,WAAaA,EAAW,QAAIA,CAClG,CACA,SAASkI,GAAwB9W,GAC/B,GAAIA,EAAG4W,WAAY,OAAO5W,EAC1B,IAAI+W,EAAK/W,EAAGgX,QACZ,GAAiB,mBAAND,EAAkB,CAC3B,IAAInN,EAAK,SAASqN,IAChB,OAAI9S,gBAAgB8S,EACXC,QAAQC,UAAUJ,EAAIK,UAAWjT,KAAKrD,aAExCiW,EAAGM,MAAMlT,KAAMiT,UACvB,EACDxN,EAAGhM,UAAYmZ,EAAGnZ,SACnB,MAAMgM,EAAK,CAAE,EAWd,OAVAjO,OAAOC,eAAegO,EAAI,aAAc,CAAE5N,OAAO,IACjDL,OAAOiJ,KAAK5E,GAAIgF,SAAQ,SAASsS,GAC/B,IAAIC,EAAI5b,OAAOuC,yBAAyB8B,EAAIsX,GAC5C3b,OAAOC,eAAegO,EAAI0N,EAAGC,EAAEpZ,IAAMoZ,EAAI,CACvCrb,YAAY,EACZiC,IAAK,WACH,OAAO6B,EAAGsX,EAClB,OAGS1N,CACT,CACA,IACI4N,GADAC,GAAuB,CAAEC,QAAS,CAAA,GAEtC,SAASC,KACP,GAAIH,GAAiC,OAAOC,GAAqBC,QACjEF,GAAkC,EAClC,IAAI5I,EAAIrP,OACJqY,EAAS,WACX,MAAO,CAAEC,kBAAkB,EAAOpS,MAAOmJ,EAAGkJ,KAAMlJ,EAAGmJ,IAAKnJ,EAAGoJ,OAAQpJ,EAAGqJ,UAAWrJ,EAAGsJ,QAAStJ,EAAGuJ,OAAQvJ,EAAGwJ,cAAexJ,EAAGyJ,MAAOzJ,EAAG0J,IAAK1J,EAAG2J,MAAO3J,EAAG4J,OAAQ5J,EAAG6J,KAAM7J,EAAG8J,QAAS9J,EAAG+J,KAAM/J,EAAGgK,MAAOhK,EAAGiK,KAAMjK,EAAGkK,QAASlK,EAAGmK,MAAOnK,EAAGoK,QAASpK,EAAGqK,SAAUrK,EAAGsK,OAAQtK,EAAGuK,UAAWvK,EAAGwK,OAAQxK,EAAGyK,QAASzK,EAAG0K,YAAa1K,EAAG2K,UAAW3K,EAAG4K,YAAa5K,EAAG6K,aAAc7K,EAAG8K,WAAY9K,EAAG+K,cAAe/K,EAAGgL,WAAYhL,EAAGiL,YAAajL,EAAGkL,cAAelL,EAAGmL,YAAanL,EAAGoL,cAAepL,EAAGqL,eAAgBrL,EAAGsL,aAActL,EAAGuL,gBAAiBvL,EAAGwL,aAAcxL,EAAGyL,cAAezL,EAClkB,EAGD,OAFA6I,GAAqBC,QAAUE,IAC/BH,GAAqBC,QAAQ4C,aAAe1C,EACrCH,GAAqBC,OAC9B,CACA,IAMI6C,GACAC,GAgGAC,GACAC,GA+SAC,GACAC,GAnZEC,MAJ4Clf,OAAOmf,OAAuBnf,OAAOC,eAAe,CACpGmf,UAAW,KACX/D,QAH8B,CAAE,GAI/BgE,OAAOC,YAAa,CAAEjf,MAAO,aAIhC,SAASkf,KACP,GAAIV,GAA6B,OAAOD,GACxCC,GAA8B,EAC9B,IAAIW,EAAoDxD,KACpDyD,EAAoBP,GACxB,MAAMQ,UAAuBC,MAC3Bxa,WAAAA,CAAYya,EAASC,EAAMC,EAAQza,EAAQ0a,EAAMC,GAC/CC,MAAML,GACNpX,KAAKlD,KAAO,iBACZkD,KAAK0X,OAASN,EACVG,IACFvX,KAAKuX,KAAOA,GAEV1a,IACFmD,KAAKnD,OAASA,GAEZ2a,IACFxX,KAAKwX,OAASA,QAEI,IAATH,QAA0C,IAAXC,IACpB,iBAATD,GACTrX,KAAKqX,KAAOA,EACZrX,KAAKsX,OAASA,IAEdtX,KAAKqX,KAAOA,EAAKA,KACjBrX,KAAKsX,OAASD,EAAKC,OACnBtX,KAAK2X,QAAUL,EAAOD,KACtBrX,KAAK4X,UAAYN,EAAOA,SAG5BtX,KAAK6X,aACDV,MAAMW,mBACRX,MAAMW,kBAAkB9X,KAAMkX,EAEtC,CACIW,UAAAA,GACE7X,KAAKoX,QAAUpX,KAAKwX,OAASxX,KAAKwX,OAAS,KAAO,GAClDxX,KAAKoX,SAAWpX,KAAKuX,KAAOvX,KAAKuX,KAAO,mBACf,IAAdvX,KAAKqX,OACdrX,KAAKoX,SAAW,IAAMpX,KAAKqX,KAAO,IAAMrX,KAAKsX,QAE/CtX,KAAKoX,SAAW,KAAOpX,KAAK0X,MAClC,CACIK,cAAAA,CAAeC,GACb,IAAKhY,KAAKnD,OAAQ,MAAO,GACzB,IAAIob,EAAMjY,KAAKnD,OACF,MAATmb,IAAeA,EAAQhB,EAAKtD,kBAChC,IAAIwE,EAASpW,GAASA,EAClBqW,EAAQrW,GAASA,EACjBsW,EAAatW,GAASA,EAC1B,GAAIkW,EAAO,CACT,IAAIrE,KAAEA,EAAAA,KAAMe,EAAAA,IAAMP,GAAQ6C,EAAKb,cAAa,GAC5CgC,EAAQrW,GAAS6R,EAAKQ,EAAIrS,IAC1BoW,EAASpW,GAAS4S,EAAK5S,GACnBmV,IACFmB,EAAatW,GAASmV,EAAkBnV,GAElD,CACM,IAAIuW,EAAQJ,EAAIlZ,MAAM,SAClBuZ,EAAQtN,KAAKuN,IAAIvY,KAAKqX,KAAO,EAAG,GAChCmB,EAAMxN,KAAKC,IAAIjL,KAAKqX,KAAO,EAAGgB,EAAMrZ,QACpCyZ,EAAWrd,OAAOod,GAAKxZ,OAC3B,OAAOqZ,EAAMpU,MAAMqU,EAAOE,GAAKE,KAAI,CAACrB,EAAMsB,KACxC,IAAIC,EAASN,EAAQ,EAAIK,EACrBE,EAAS,KAAO,IAAMD,GAAQ3U,OAAOwU,GAAY,MACrD,GAAIG,IAAW5Y,KAAKqX,KAAM,CACxB,GAAIA,EAAKrY,OAAS,IAAK,CACrB,IACI8Z,EAAe9N,KAAKuN,IAAI,EAAGvY,KAAKsX,OADtB,IAEVyB,EAAa/N,KAAKuN,IACpBvY,KAAKsX,OAHO,GAIZtX,KAAK4X,UAJO,IAMVoB,EAAU3B,EAAKpT,MAAM6U,EAAcC,GACnCE,EAAWf,EAAMW,EAAOpa,QAAQ,MAAO,MAAQ4Y,EAAKpT,MAAM,EAAG+G,KAAKC,IAAIjL,KAAKsX,OAAS,EAAG4B,KAAcza,QAAQ,SAAU,KAC3H,OAAO0Z,EAAK,KAAOD,EAAMW,GAAUT,EAAUY,GAAW,MAAQC,EAAWd,EAAK,IAC5F,CACU,IAAIgB,EAAUjB,EAAMW,EAAOpa,QAAQ,MAAO,MAAQ4Y,EAAKpT,MAAM,EAAGjE,KAAKsX,OAAS,GAAG7Y,QAAQ,SAAU,KACnG,OAAO0Z,EAAK,KAAOD,EAAMW,GAAUT,EAAUf,GAAQ,MAAQ8B,EAAUhB,EAAK,IACtF,CACQ,MAAO,IAAMD,EAAMW,GAAUT,EAAUf,EAAI,IAC1C9Y,KAAK,KACd,CACItE,QAAAA,GACE,IAAImf,EAAOpZ,KAAK+X,iBAIhB,OAHIqB,IACFA,EAAO,OAASA,EAAO,MAElBpZ,KAAKlD,KAAO,KAAOkD,KAAKoX,QAAUgC,CAC/C,EAIE,OAFAhD,GAAmBc,EACnBA,EAAerE,QAAUqE,EAClBd,EACT,CAGA,SAASiD,KACP,GAAI9C,GAA0B,OAAOD,GACrCC,GAA2B,EAC3B,IAAM+C,EAAc,CAClBC,MAAO,KACPC,YAAa,KACbC,cAAe,KACfC,WAAY,KACZC,WAAY,IACZC,WAAY,KACZC,MAAO,KACPC,YAAa,IACbC,aAAc,IACdC,UAAW,GACXC,OAAQ,OACRC,WAAW,GAKb,MAAMC,EACJxd,WAAAA,CAAYyd,GACVpa,KAAKoa,QAAUA,CACrB,CACIC,MAAAA,CAAOpZ,EAAOiZ,GACZ,IAAIpd,EAAO,IAAMmE,EAAMnE,KACnBwd,EAASrZ,EAAMqZ,OAASta,KAAKua,SAAStZ,EAAO,UAAY,GAM7D,QALoC,IAAzBA,EAAMuZ,KAAKC,UACpB3d,GAAQmE,EAAMuZ,KAAKC,UACVH,IACTxd,GAAQ,KAENmE,EAAMyZ,MACR1a,KAAK2a,MAAM1Z,EAAOnE,EAAOwd,OACpB,CACL,IAAI9B,GAAOvX,EAAMuZ,KAAKI,SAAW,KAAOV,EAAY,IAAM,IAC1Dla,KAAKoa,QAAQtd,EAAOwd,EAAS9B,EAAKvX,EAC1C,CACA,CACI4Z,WAAAA,CAAY5Z,EAAO6Z,GACjB,IAAIjjB,EAEFA,EADiB,SAAfoJ,EAAMW,KACA5B,KAAK+a,IAAI9Z,EAAO,KAAM,cACN,YAAfA,EAAMW,KACP5B,KAAK+a,IAAI9Z,EAAO,KAAM,iBACV,WAAX6Z,EACD9a,KAAK+a,IAAI9Z,EAAO,KAAM,cAEtBjB,KAAK+a,IAAI9Z,EAAO,KAAM,eAIhC,IAFA,IAAI+Z,EAAM/Z,EAAMwN,OACZwM,EAAQ,EACLD,GAAoB,SAAbA,EAAIpZ,MAChBqZ,GAAS,EACTD,EAAMA,EAAIvM,OAEZ,GAAI5W,EAAMqC,SAAS,MAAO,CACxB,IAAI+f,EAASja,KAAK+a,IAAI9Z,EAAO,KAAM,UACnC,GAAIgZ,EAAOjb,OACT,IAASkc,IAAAA,EAAO,EAAGA,EAAOD,EAAOC,IAAQrjB,GAASoiB,CAE5D,CACM,OAAOpiB,CACb,CACI8iB,KAAAA,CAAM1Z,EAAOqX,GACX,IAEIiB,EAFAqB,EAAU5a,KAAK+a,IAAI9Z,EAAO,UAAW,cACzCjB,KAAKoa,QAAQ9B,EAAQsC,EAAU,IAAK3Z,EAAO,SAEvCA,EAAMyZ,OAASzZ,EAAMyZ,MAAM1b,QAC7BgB,KAAKvF,KAAKwG,GACVsY,EAAQvZ,KAAK+a,IAAI9Z,EAAO,UAExBsY,EAAQvZ,KAAK+a,IAAI9Z,EAAO,QAAS,aAE/BsY,GAAOvZ,KAAKoa,QAAQb,GACxBvZ,KAAKoa,QAAQ,IAAKnZ,EAAO,MAC/B,CACIxG,IAAAA,CAAKwG,GAEH,IADA,IAAIka,EAAOla,EAAMyZ,MAAM1b,OAAS,EACzBmc,EAAO,GACmB,YAA3Bla,EAAMyZ,MAAMS,GAAMvZ,MACtBuZ,GAAQ,EAGV,IADA,IAAIjB,EAAYla,KAAK+a,IAAI9Z,EAAO,aACvBqI,EAAK,EAAGA,EAAKrI,EAAMyZ,MAAM1b,OAAQsK,IAAM,CAC9C,IAAI8R,EAAQna,EAAMyZ,MAAMpR,GACpB+R,EAASrb,KAAK+a,IAAIK,EAAO,UACzBC,GAAQrb,KAAKoa,QAAQiB,GACzBrb,KAAKb,UAAUic,EAAOD,IAAS7R,GAAM4Q,EAC7C,CACA,CACI/J,OAAAA,CAAQlP,GACN,IAAIqa,EAAOtb,KAAK+a,IAAI9Z,EAAO,OAAQ,eAC/Bsa,EAAQvb,KAAK+a,IAAI9Z,EAAO,QAAS,gBACrCjB,KAAKoa,QAAQ,KAAOkB,EAAOra,EAAMa,KAAOyZ,EAAQ,KAAMta,EAC5D,CACIua,IAAAA,CAAKva,EAAOiZ,GACV,IAAIU,EAAU5a,KAAK+a,IAAI9Z,EAAO,UAAW,SACrCwa,EAASxa,EAAMya,KAAOd,EAAU5a,KAAKua,SAAStZ,EAAO,SACrDA,EAAM0a,YACRF,GAAUxa,EAAMuZ,KAAKmB,WAAa,eAEhCzB,IAAWuB,GAAU,KACzBzb,KAAKoa,QAAQqB,EAAQxa,EAC3B,CACI1G,QAAAA,CAAS0G,GACPjB,KAAKvF,KAAKwG,EAChB,CACI8Z,GAAAA,CAAI9Z,EAAO2a,EAAKd,GACd,IAAIjjB,EAEJ,GADKijB,IAAQA,EAASc,GAClBA,QAEmB,KADrB/jB,EAAQoJ,EAAMuZ,KAAKoB,IACe,OAAO/jB,EAE3C,IAAI4W,EAASxN,EAAMwN,OACnB,GAAe,WAAXqM,EAAqB,CACvB,IAAKrM,GAA0B,SAAhBA,EAAO7M,MAAmB6M,EAAOoN,QAAU5a,EACxD,MAAO,GAET,GAAIwN,GAA0B,aAAhBA,EAAO7M,KACnB,MAAO,EAEjB,CACM,IAAK6M,EAAQ,OAAO6K,EAAYwB,GAChC,IAAIgB,EAAQ7a,EAAM8a,OAElB,GADKD,EAAME,WAAUF,EAAME,SAAW,CAAE,QACF,IAA3BF,EAAME,SAASlB,GACxB,OAAOgB,EAAME,SAASlB,GAExB,GAAe,WAAXA,GAAkC,UAAXA,EACzB,OAAO9a,KAAK6a,YAAY5Z,EAAO6Z,GAE/B,IApHc5Y,EAoHV7H,EAAS,QApHC6H,EAoHkB4Y,GAnHzB,GAAGmB,cAAgB/Z,EAAI+B,MAAM,IA+HtC,OAXMjE,KAAK3F,GACPxC,EAAQmI,KAAK3F,GAAQyhB,EAAO7a,GAE5B6a,EAAMI,MAAM5S,IAEV,QAAqB,KADrBzR,EAAQyR,EAAGkR,KAAKoB,IACkB,OAAO,CAAA,SAI1B,IAAV/jB,IAAuBA,EAAQyhB,EAAYwB,IACtDgB,EAAME,SAASlB,GAAUjjB,EAClBA,CACb,CACIskB,cAAAA,CAAeL,GACb,IAAIjkB,EAaJ,OAZAikB,EAAMI,MAAM5S,IACV,GAAIA,EAAGoR,OAASpR,EAAGoR,MAAM1b,OAAS,QACH,IAAlBsK,EAAGkR,KAAKjB,MAKjB,OAJA1hB,EAAQyR,EAAGkR,KAAKjB,OACNrf,SAAS,QACjBrC,EAAQA,EAAM4G,QAAQ,UAAW,MAE5B,CAEnB,IAEU5G,IAAOA,EAAQA,EAAM4G,QAAQ,MAAO,KACjC5G,CACb,CACIukB,gBAAAA,CAAiBN,EAAO7a,GACtB,IAAIpJ,EAeJ,OAdAikB,EAAMO,cAAc/S,IAClB,QAA8B,IAAnBA,EAAGkR,KAAKa,OAKjB,OAJAxjB,EAAQyR,EAAGkR,KAAKa,QACNnhB,SAAS,QACjBrC,EAAQA,EAAM4G,QAAQ,UAAW,MAE5B,CACjB,SAE2B,IAAV5G,EACTA,EAAQmI,KAAK+a,IAAI9Z,EAAO,KAAM,cACrBpJ,IACTA,EAAQA,EAAM4G,QAAQ,MAAO,KAExB5G,CACb,CACIykB,aAAAA,CAAcR,EAAO7a,GACnB,IAAIpJ,EAeJ,OAdAikB,EAAMS,WAAWjT,IACf,QAA8B,IAAnBA,EAAGkR,KAAKa,OAKjB,OAJAxjB,EAAQyR,EAAGkR,KAAKa,QACNnhB,SAAS,QACjBrC,EAAQA,EAAM4G,QAAQ,UAAW,MAE5B,CACjB,SAE2B,IAAV5G,EACTA,EAAQmI,KAAK+a,IAAI9Z,EAAO,KAAM,cACrBpJ,IACTA,EAAQA,EAAM4G,QAAQ,MAAO,KAExB5G,CACb,CACI2kB,aAAAA,CAAcV,GACZ,IAAIjkB,EAOJ,OANAikB,EAAMI,MAAM5S,IACV,GAAgB,SAAZA,EAAG1H,WAEgB,KADrB/J,EAAQyR,EAAGkR,KAAKI,SACkB,OAAO,CACnD,IAEa/iB,CACb,CACI4kB,aAAAA,CAAcX,GACZ,IAAIjkB,EAaJ,OAZAikB,EAAMI,MAAM5S,IACV,GAAIA,EAAGoR,QAAUpR,EAAGmF,SAAWqN,GAASA,EAAMD,QAAUvS,SACxB,IAAnBA,EAAGkR,KAAKa,OAKjB,OAJAxjB,EAAQyR,EAAGkR,KAAKa,QACNnhB,SAAS,QACjBrC,EAAQA,EAAM4G,QAAQ,UAAW,MAE5B,CAEnB,IAEU5G,IAAOA,EAAQA,EAAM4G,QAAQ,MAAO,KACjC5G,CACb,CACI6kB,QAAAA,CAASZ,GACP,IAAIjkB,EAOJ,OANAikB,EAAMS,WAAWjT,IACf,QAA+B,IAApBA,EAAGkR,KAAKI,QAEjB,OADA/iB,EAAQyR,EAAGkR,KAAKI,QAAQnc,QAAQ,UAAW,KACpC,CACjB,IAEa5G,CACb,CACI8kB,YAAAA,CAAab,GACX,IAAIjkB,EAOJ,OANAikB,EAAMI,MAAM5S,IACV,GAAIA,EAAGoR,OAA6B,IAApBpR,EAAGoR,MAAM1b,aAEF,KADrBnH,EAAQyR,EAAGkR,KAAKjB,OACkB,OAAO,CACnD,IAEa1hB,CACb,CACI+kB,SAAAA,CAAUd,GACR,OAAIA,EAAMtB,KAAKP,OAAe6B,EAAMtB,KAAKP,QAEzC6B,EAAMI,MAAM5S,IACV,IAAIuT,EAAIvT,EAAGmF,OACX,GAAIoO,GAAKA,IAAMf,GAASe,EAAEpO,QAAUoO,EAAEpO,SAAWqN,QACjB,IAAnBxS,EAAGkR,KAAKa,OAAwB,CACzC,IAAIlX,EAAQmF,EAAGkR,KAAKa,OAAOtc,MAAM,MAGjC,OADAlH,GADAA,EAAQsM,EAAMA,EAAMnF,OAAS,IACfP,QAAQ,MAAO,KACtB,CACnB,CACA,IAEa5G,GAZP,IAAIA,CAaV,CACIilB,YAAAA,CAAahB,GACX,IAAIjkB,EAOJ,OANAikB,EAAMI,MAAM5S,IACV,GAAIA,EAAGoR,OAASpR,EAAGoR,MAAM1b,QAA2B,SAAjBsK,EAAG6R,KAAKvZ,WAEpB,KADrB/J,EAAQyR,EAAGkR,KAAKN,WACkB,OAAO,CACnD,IAEariB,CACb,CACI0iB,QAAAA,CAAStZ,EAAOya,GACd,IAAI7jB,EAAQoJ,EAAMya,GACdX,EAAM9Z,EAAMuZ,KAAKkB,GACrB,OAAIX,GAAOA,EAAIljB,QAAUA,EAChBkjB,EAAIA,IAENljB,CACb,CACIkkB,IAAAA,CAAK9a,GACHjB,KAAKvF,KAAKwG,GACNA,EAAMuZ,KAAKjB,OAAOvZ,KAAKoa,QAAQnZ,EAAMuZ,KAAKjB,MACpD,CACIwD,IAAAA,CAAK9b,GACHjB,KAAK2a,MAAM1Z,EAAOjB,KAAKua,SAAStZ,EAAO,aACnCA,EAAMuZ,KAAKwC,cACbhd,KAAKoa,QAAQnZ,EAAMuZ,KAAKwC,aAAc/b,EAAO,MAErD,CACI9B,SAAAA,CAAU8B,EAAOiZ,GACf,IAAKla,KAAKiB,EAAMW,MACd,MAAM,IAAIuV,MACR,yBAA2BlW,EAAMW,KAAO,mDAG5C5B,KAAKiB,EAAMW,MAAMX,EAAOiZ,EAC9B,EAIE,OAFA5D,GAAgB6D,EAChBA,EAAYtH,QAAUsH,EACf7D,EACT,CAGA,SAAS2G,KACP,GAAIxG,GAAwB,OAAOD,GACnCC,GAAyB,EACzB,IAAI0D,EAAcd,KAClB,SAASla,EAAU8B,EAAOmZ,GACd,IAAID,EAAYC,GACtBjb,UAAU8B,EAClB,CAGE,OAFAuV,GAAgBrX,EAChBA,EAAU0T,QAAU1T,EACbqX,EACT,CACA,IACI0G,GAQAC,GACAC,GA2WAC,GACAC,GAeAC,GACAC,GAqBAC,GACAC,GA6XAC,GACAC,GAwBAC,GACAC,GA4BAC,GACAC,GA0BAC,GACAC,GAuHAC,GACAC,GAiNAC,GACAC,GAoDAC,GACAC,GAuDAC,GACAC,GA0BAC,GACAC,GAuDAC,GACAC,GA4TAC,GACAC,GAsNAC,GACAC,GAmhBAC,GACAC,GAiCAC,GACAC,GAmCAC,GACAC,GAsCAC,GACAC,GAcAC,GACAC,GAydAC,GACAC,GAmHAC,GACAC,GAyDAC,GACAC,GAuFAC,GACAC,GAwFAC,GACAC,GAl1GAC,GAAY,CAAE,EAElB,SAASC,KACP,OAAItD,KACJA,GAAuB,EACvBqD,GAAUE,QAAU5J,OAAO,WAC3B0J,GAAUG,GAAK7J,OAAO,OAHW0J,EAKnC,CAGA,SAASI,KACP,GAAIvD,GAAmB,OAAOD,GAC9BC,GAAoB,EACpB,IAAIlG,EAAiBH,KACjBoD,EAAcd,KACdla,EAAY8d,MACZwD,QAAEA,EAAAA,GAASC,GAAOF,KACtB,SAASI,EAAUjpB,EAAK8W,GACtB,IAAIoS,EAAS,IAAIlpB,EAAIgF,YACrB,IAAA,IAAS2M,KAAM3R,EACb,GAAKH,OAAOiC,UAAUiZ,eAAepZ,KAAK3B,EAAK2R,IAGpC,eAAPA,EAAJ,CACA,IAAIzR,EAAQF,EAAI2R,GACZ1H,SAAc/J,EACP,WAAPyR,GAA4B,WAAT1H,EACjB6M,IAAQoS,EAAOvX,GAAMmF,GACT,WAAPnF,EACTuX,EAAOvX,GAAMzR,EACJqG,MAAM4iB,QAAQjpB,GACvBgpB,EAAOvX,GAAMzR,EAAM6gB,KAAKqI,GAAMH,EAAUG,EAAGF,MAE9B,WAATjf,GAA+B,OAAV/J,IAAgBA,EAAQ+oB,EAAU/oB,IAC3DgpB,EAAOvX,GAAMzR,EAXU,CAc3B,OAAOgpB,CACX,CACE,SAASG,EAAaC,EAAUC,GAC9B,GAAIA,QAAuC,IAApBA,EAASC,OAC9B,OAAOD,EAASC,OAKlB,IAHA,IAAI7J,EAAS,EACTD,EAAO,EACP8J,EAAS,EACJ7X,EAAK,EAAGA,EAAK2X,EAASjiB,OAAQsK,IAAM,CAC3C,GAAI+N,IAAS6J,EAAS7J,MAAQC,IAAW4J,EAAS5J,OAAQ,CACxD6J,EAAS7X,EACT,KACR,CAC2B,OAAjB2X,EAAS3X,IACXgO,EAAS,EACTD,GAAQ,GAERC,GAAU,CAElB,CACI,OAAO6J,CACX,CACE,MAAMC,EACJzkB,WAAAA,GAA2B,IAAf0kB,EAAWpO,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAIrB,IAAA,IAASnW,KAHTkD,KAAKwa,KAAO,CAAE,EACdxa,KAAKygB,IAAW,EAChBzgB,KAAK0gB,IAAM,EACMW,EACf,GAAa,UAATvkB,EAEF,IAASmE,IAAAA,KADTjB,KAAK0a,MAAQ,GACK2G,EAASvkB,IACE,mBAAhBmE,EAAMsgB,MACfvhB,KAAKwhB,OAAOvgB,EAAMsgB,SAElBvhB,KAAKwhB,OAAOvgB,QAIhBjB,KAAKlD,GAAQukB,EAASvkB,EAGhC,CACI2kB,UAAAA,CAAW/iB,GAET,GADAA,EAAMgjB,YAAc1hB,KAChBtB,EAAMwF,OAASlE,KAAKnD,QAAU,aAAagH,KAAKnF,EAAMwF,OAAQ,CAChE,IAAIrG,EAAKmC,KAAKnD,OACd6B,EAAMwF,MAAQxF,EAAMwF,MAAMzF,QACxB,aAAA,KAAAqF,OACKjG,EAAG8jB,MAAMxjB,KAAQN,KAAAA,OAAAA,EAAGya,MAAMjB,KAAI,KAAAvT,OAAIjG,EAAGya,MAAMhB,OACjD,MACT,CACM,OAAO5Y,CACb,CACI6a,KAAAA,CAAMrY,GAEJ,OADAlB,KAAKyO,OAAOmT,YAAY5hB,KAAMkB,GACvBlB,IACb,CACIgR,MAAAA,GAAuB,IAAhB6Q,EAAY5O,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACjB,IAAA,IAASnW,KAAQ+kB,EACf7hB,KAAKlD,GAAQ+kB,EAAU/kB,GAEzB,OAAOkD,IACb,CACIqb,MAAAA,CAAOna,GAEL,OADAlB,KAAKyO,OAAOqT,aAAa9hB,KAAMkB,GACxBlB,IACb,CACI+hB,SAAAA,CAAUC,UACDhiB,KAAKwa,KAAKa,cACVrb,KAAKwa,KAAKjB,MACZyI,UAAoBhiB,KAAKwa,KAAKI,OACzC,CACI2G,KAAAA,GAAsB,IAAhBM,EAAY5O,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACZ4N,EAASD,EAAU5gB,MACvB,IAAA,IAASlD,KAAQ+kB,EACfhB,EAAO/jB,GAAQ+kB,EAAU/kB,GAE3B,OAAO+jB,CACb,CACIoB,UAAAA,GAA2B,IAAhBJ,EAAY5O,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACjB4N,EAAS7gB,KAAKuhB,MAAMM,GAExB,OADA7hB,KAAKyO,OAAOmT,YAAY5hB,KAAM6gB,GACvBA,CACb,CACIqB,WAAAA,GAA4B,IAAhBL,EAAY5O,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAClB4N,EAAS7gB,KAAKuhB,MAAMM,GAExB,OADA7hB,KAAKyO,OAAOqT,aAAa9hB,KAAM6gB,GACxBA,CACb,CACIniB,KAAAA,CAAM0Y,GAAoB,IAAX+K,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACpB,GAAIjT,KAAKnD,OAAQ,CACf,IAAI2b,IAAEA,EAAAA,MAAKF,GAAUtY,KAAKoiB,QAAQD,GAClC,OAAOniB,KAAKnD,OAAO8kB,MAAMjjB,MACvB0Y,EACA,CAAEE,OAAQgB,EAAMhB,OAAQD,KAAMiB,EAAMjB,MACpC,CAAEC,OAAQkB,EAAIlB,OAAQD,KAAMmB,EAAInB,MAChC8K,EAEV,CACM,OAAO,IAAIjL,EAAeE,EAChC,CACIiL,iBAAAA,GACE,MAAO,CACLroB,IAAAA,CAAIiH,EAAOya,IACI,YAATA,EACKza,EACW,SAATya,EACF,IAAMza,EAAM8a,OAAOuG,UAEnBrhB,EAAMya,GAGjBta,IAAIH,CAAAA,EAAOya,EAAM7jB,KACXoJ,EAAMya,KAAU7jB,IACpBoJ,EAAMya,GAAQ7jB,EACD,SAAT6jB,GAA4B,UAATA,GAA6B,SAATA,GAA4B,WAATA,GAA8B,cAATA,GAC1E,SAATA,GACEza,EAAMshB,cAJ0B,GAS5C,CAEIC,SAAAA,GACExiB,KAAKygB,IAAW,CACtB,CACI8B,SAAAA,GACE,GAAIviB,KAAKygB,GAAU,CACjBzgB,KAAKygB,IAAW,EAEhB,IADA,IAAIgC,EAAOziB,KACJyiB,EAAOA,EAAKhU,QACjBgU,EAAKhC,IAAW,CAE1B,CACA,CACIgC,IAAAA,GACE,GAAKziB,KAAKyO,OAAV,CACA,IAAIkK,EAAS3Y,KAAKyO,OAAOiU,MAAM1iB,MAC/B,OAAOA,KAAKyO,OAAOiM,MAAM/B,EAAS,EAFT,CAG/B,CACIgK,UAAAA,CAAWR,GACT,IAAItc,EAAM7F,KAAKnD,OAAOyb,MACtB,GAAI6J,EAAKO,MACP7c,EAAM7F,KAAK4iB,eAAeT,EAAKO,YACvC,GAAiBP,EAAKU,KAAM,CACpB,IAAIC,EAAc,aAAc9iB,KAAKnD,OAAO8kB,MAAQ3hB,KAAKnD,OAAO8kB,MAAMpnB,SAAWyF,KAAKnD,OAAO8kB,MAAM1J,IAK/FU,EAJuBmK,EAAY7e,MACrC+c,EAAa8B,EAAa9iB,KAAKnD,OAAOyb,OACtC0I,EAAa8B,EAAa9iB,KAAKnD,OAAO2b,MAENxU,QAAQme,EAAKU,OAChC,IAAXlK,IAAe9S,EAAM7F,KAAK4iB,eAAejK,GACrD,CACM,OAAO9S,CACb,CACI+c,cAAAA,CAAejK,GAMb,IALA,IAAIrB,EAAStX,KAAKnD,OAAOyb,MAAMhB,OAC3BD,EAAOrX,KAAKnD,OAAOyb,MAAMjB,KACzByL,GAAc,aAAc9iB,KAAKnD,OAAO8kB,MAAQ3hB,KAAKnD,OAAO8kB,MAAMpnB,SAAWyF,KAAKnD,OAAO8kB,MAAM1J,KAC/FkJ,EAASH,EAAa8B,EAAa9iB,KAAKnD,OAAOyb,OAC/CE,EAAM2I,EAASxI,EACVrP,EAAK6X,EAAQ7X,EAAKkP,EAAKlP,IACN,OAApBwZ,EAAYxZ,IACdgO,EAAS,EACTD,GAAQ,GAERC,GAAU,EAGd,MAAO,CAAEA,SAAQD,OACvB,CACI0L,IAAAA,GACE,GAAK/iB,KAAKyO,OAAV,CACA,IAAIkK,EAAS3Y,KAAKyO,OAAOiU,MAAM1iB,MAC/B,OAAOA,KAAKyO,OAAOiM,MAAM/B,EAAS,EAFT,CAG/B,CACIyJ,OAAAA,CAAQD,GACN,IAAI7J,EAAQ,CACVhB,OAAQtX,KAAKnD,OAAOyb,MAAMhB,OAC1BD,KAAMrX,KAAKnD,OAAOyb,MAAMjB,MAEtBmB,EAAMxY,KAAKnD,OAAO2b,IAAM,CAC1BlB,OAAQtX,KAAKnD,OAAO2b,IAAIlB,OAAS,EACjCD,KAAMrX,KAAKnD,OAAO2b,IAAInB,MACpB,CACFC,OAAQgB,EAAMhB,OAAS,EACvBD,KAAMiB,EAAMjB,MAEd,GAAI8K,EAAKU,KAAM,CACb,IAAIC,EAAc,aAAc9iB,KAAKnD,OAAO8kB,MAAQ3hB,KAAKnD,OAAO8kB,MAAMpnB,SAAWyF,KAAKnD,OAAO8kB,MAAM1J,IAK/FU,EAJuBmK,EAAY7e,MACrC+c,EAAa8B,EAAa9iB,KAAKnD,OAAOyb,OACtC0I,EAAa8B,EAAa9iB,KAAKnD,OAAO2b,MAENxU,QAAQme,EAAKU,OAC5B,IAAflK,IACFL,EAAQtY,KAAK4iB,eAAejK,GAC5BH,EAAMxY,KAAK4iB,eACTjK,EAASwJ,EAAKU,KAAK7jB,cAInBmjB,EAAK7J,MACPA,EAAQ,CACNhB,OAAQ6K,EAAK7J,MAAMhB,OACnBD,KAAM8K,EAAK7J,MAAMjB,MAEV8K,EAAKO,QACdpK,EAAQtY,KAAK4iB,eAAeT,EAAKO,QAE/BP,EAAK3J,IACPA,EAAM,CACJlB,OAAQ6K,EAAK3J,IAAIlB,OACjBD,KAAM8K,EAAK3J,IAAInB,MAEiB,iBAAlB8K,EAAKa,SACrBxK,EAAMxY,KAAK4iB,eAAeT,EAAKa,UACtBb,EAAKO,QACdlK,EAAMxY,KAAK4iB,eAAeT,EAAKO,MAAQ,IAM3C,OAHIlK,EAAInB,KAAOiB,EAAMjB,MAAQmB,EAAInB,OAASiB,EAAMjB,MAAQmB,EAAIlB,QAAUgB,EAAMhB,UAC1EkB,EAAM,CAAElB,OAAQgB,EAAMhB,OAAS,EAAGD,KAAMiB,EAAMjB,OAEzC,CAAEmB,MAAKF,QACpB,CACIyC,GAAAA,CAAIW,EAAMuH,GAER,OADU,IAAI9I,GACHY,IAAI/a,KAAM0b,EAAMuH,EACjC,CACIC,MAAAA,GAKE,OAJIljB,KAAKyO,QACPzO,KAAKyO,OAAO3T,YAAYkF,MAE1BA,KAAKyO,YAAS,EACPzO,IACb,CACImjB,WAAAA,GACE,GAAInjB,KAAKyO,OAAQ,CAEC,IADhB,IAAI2U,EAAWpjB,KACXqjB,GAAY,EAHL3I,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GAIX,IAAA,IAASzZ,KAASyZ,EACZzZ,IAAUjB,KACZqjB,GAAY,EACHA,GACTrjB,KAAKyO,OAAOmT,YAAYwB,EAAUniB,GAClCmiB,EAAWniB,GAEXjB,KAAKyO,OAAOqT,aAAasB,EAAUniB,GAGlCoiB,GACHrjB,KAAKkjB,QAEf,CACM,OAAOljB,IACb,CACI+b,IAAAA,GAEE,IADA,IAAIuH,EAAUtjB,KACPsjB,EAAQ7U,QAAkC,aAAxB6U,EAAQ7U,OAAO7M,MACtC0hB,EAAUA,EAAQ7U,OAEpB,OAAO6U,CACb,CACIC,MAAAA,CAAOC,EAAGC,GACR,IAAIC,EAAQ,CAAE,EACVC,EAAuB,MAAVF,EACjBA,EAASA,OAA8BxjB,IACvC,IAAI2jB,EAAkB,EACtB,IAAA,IAAS9mB,KAAQkD,KACf,GAAKxI,OAAOiC,UAAUiZ,eAAepZ,KAAK0G,KAAMlD,IAGnC,WAATA,GAA8B,eAATA,EAAzB,CACA,IAAIjF,EAAQmI,KAAKlD,GACjB,GAAIoB,MAAM4iB,QAAQjpB,GAChB6rB,EAAM5mB,GAAQjF,EAAM6gB,KAAKpP,GACL,iBAAPA,GAAmBA,EAAGia,OACxBja,EAAGia,OAAO,KAAME,GAEhBna,SAGZ,GAA2B,iBAAVzR,GAAsBA,EAAM0rB,OAC5CG,EAAM5mB,GAAQjF,EAAM0rB,OAAO,KAAME,QAC3C,GAA4B,WAAT3mB,EAAmB,CAC5B,IAAI+mB,EAAUJ,EAAOzpB,IAAInC,EAAM8pB,OAChB,MAAXkC,IACFA,EAAUD,EACVH,EAAOriB,IAAIvJ,EAAM8pB,MAAOiC,GACxBA,KAEFF,EAAM5mB,GAAQ,CACZ0b,IAAK3gB,EAAM2gB,IACXqL,UACAvL,MAAOzgB,EAAMygB,YAGfoL,EAAM5mB,GAAQjF,CAzBgC,CA+BlD,OAHI8rB,IACFD,EAAMD,OAAS,IAAIA,EAAOhjB,QAAQiY,KAAKoL,GAAWA,EAAOP,YAEpDG,CACb,CACIpB,OAAAA,GAIE,OAHKtiB,KAAK+jB,aACR/jB,KAAK+jB,WAAa,IAAIC,MAAMhkB,KAAMA,KAAKqiB,sBAElCriB,KAAK+jB,UAClB,CACI9pB,QAAAA,GAAmC,IAA1BgqB,EAAe9kB,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,EAClB8kB,EAAa9kB,YAAW8kB,EAAeA,EAAa9kB,WACxD,IAAImkB,EAAU,GAId,OAHAW,EAAajkB,MAAOsJ,IAClBga,GAAWha,CAAAA,IAENga,CACb,CACI5W,IAAAA,CAAK4W,EAASxhB,EAAMqgB,GAClB,IAAIjX,EAAO,CAAEgZ,KAAMlkB,MACnB,IAAA,IAASsJ,KAAM6Y,EAAMjX,EAAK5B,GAAM6Y,EAAK7Y,GACrC,OAAOga,EAAQ5W,KAAK5K,EAAMoJ,EAChC,CACI,WAAIiZ,GACF,OAAOnkB,IACb,EAIE,OAFAmd,GAASiE,EACTA,EAAMvO,QAAUuO,EACTjE,EACT,CAGA,SAASiH,KACP,GAAI9G,GAAsB,OAAOD,GACjCC,GAAuB,EACvB,IAAI8D,EAAQT,KACZ,MAAMvR,UAAgBgS,EACpBzkB,WAAAA,CAAY0kB,GACV5J,MAAM4J,GACNrhB,KAAK4B,KAAO,SAClB,EAIE,OAFAyb,GAAYjO,EACZA,EAAQyD,QAAUzD,EACXiO,EACT,CAGA,SAASgH,KACP,GAAI7G,GAA0B,OAAOD,GACrCC,GAA2B,EAC3B,IAAI4D,EAAQT,KACZ,MAAM2D,UAAoBlD,EACxBzkB,WAAAA,CAAY0kB,GACNA,QAAsC,IAAnBA,EAASxpB,OAAmD,iBAAnBwpB,EAASxpB,QACvEwpB,EAAgBA,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,CAAAA,EAAAA,CAAUxpB,MAAOuD,OAAOimB,EAASxpB,UAEnD4f,MAAM4J,GACNrhB,KAAK4B,KAAO,MAClB,CACI,YAAI2iB,GACF,OAAOvkB,KAAK0b,KAAKhW,WAAW,OAA0B,MAAjB1F,KAAK0b,KAAK,EACrD,EAIE,OAFA6B,GAAgB+G,EAChBA,EAAYzR,QAAUyR,EACf/G,EACT,CAGA,SAASiH,KACP,GAAI9G,GAAwB,OAAOD,GACnCC,GAAyB,EACzB,IAII+G,EAAQC,EAAOC,EAAMC,EAJrBxV,EAAUgV,KACVE,EAAcD,KACdjD,EAAQT,MACRF,QAAEA,EAAAA,GAASC,GAAOF,KAEtB,SAASqE,EAAYnK,GACnB,OAAOA,EAAMhC,KAAKpP,IACZA,EAAGoR,QAAOpR,EAAGoR,MAAQmK,EAAYvb,EAAGoR,eACjCpR,EAAGzM,OACHyM,IAEb,CACE,SAASwb,EAAc7jB,GAErB,GADAA,EAAMwf,IAAW,EACbxf,EAAMkjB,QAAQzJ,MAChB,IAASpR,IAAAA,KAAMrI,EAAMkjB,QAAQzJ,MAC3BoK,EAAcxb,EAGtB,CACE,MAAMyb,UAAkB3D,EACtBI,MAAAA,GAAoB,IAAVwD,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GACR,IAAA,IAAS5J,KAAS4J,EAAU,CAC1B,IAAItK,EAAQ1a,KAAKilB,UAAU7J,EAAOpb,KAAKmb,MACvC,IAAA,IAASla,KAASyZ,EAAO1a,KAAKmkB,QAAQzJ,MAAMrb,KAAK4B,EACzD,CAEM,OADAjB,KAAKuiB,YACEviB,IACb,CACI+hB,SAAAA,CAAUC,GAER,GADAvK,MAAMsK,UAAUC,GACZhiB,KAAK0a,MACP,IAAA,IAASzZ,KAASjB,KAAK0a,MAAOzZ,EAAM8gB,UAAUC,EAEtD,CACIkD,IAAAA,CAAKC,GACH,GAAKnlB,KAAKmkB,QAAQzJ,MAAlB,CAGA,IAFA,IACI/B,EAAQ2K,EADR8B,EAAWplB,KAAKqlB,cAEbrlB,KAAKslB,QAAQF,GAAYplB,KAAKmkB,QAAQzJ,MAAM1b,SACjD2Z,EAAS3Y,KAAKslB,QAAQF,IAEN,KADhB9B,EAAU6B,EAASnlB,KAAKmkB,QAAQzJ,MAAM/B,GAASA,MAE/C3Y,KAAKslB,QAAQF,IAAa,EAG5B,cADOplB,KAAKslB,QAAQF,GACb9B,CAVyB,CAWtC,CACIzpB,KAAAA,CAAM0rB,GACJ,OAAOvlB,KAAK0a,MAAM7gB,MAAM0rB,EAC9B,CACIF,WAAAA,GACOrlB,KAAKwlB,WAAUxlB,KAAKwlB,SAAW,GAC/BxlB,KAAKslB,UAAStlB,KAAKslB,QAAU,CAAE,GACpCtlB,KAAKwlB,UAAY,EACjB,IAAIJ,EAAWplB,KAAKwlB,SAEpB,OADAxlB,KAAKslB,QAAQF,GAAY,EAClBA,CACb,CACI/C,iBAAAA,GACE,MAAO,CACLroB,IAAAA,CAAIiH,EAAOya,IACI,YAATA,EACKza,EACGA,EAAMya,GAEE,SAATA,GAAmC,iBAATA,GAAqBA,EAAKhW,WAAW,QACjE,WAAa,IAAT+f,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GACT,OAAOxkB,EAAMya,MACR+J,EAAK/M,KAAKpP,GACO,mBAAPA,EACF,CAAC8R,EAAOzC,IAAWrP,EAAG8R,EAAMkH,UAAW3J,GAEvCrP,IAId,EACiB,UAAToS,GAA6B,SAATA,EACrBgK,GACCzkB,EAAMya,IACX,SAACN,GAAA,IAAUlf,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAAA,OAAUwpB,EAAGtK,EAAMkH,aAAcpmB,MAG9B,SAATwf,EACF,IAAMza,EAAM8a,OAAOuG,UACR,UAAT5G,EACFza,EAAMyZ,MAAMhC,KAAKpP,GAAOA,EAAGgZ,YAChB,UAAT5G,GAA6B,SAATA,EACtBza,EAAMya,GAAM4G,UAEZrhB,EAAMya,GA1BNza,EAAMya,GA6BjBta,IAAIH,CAAAA,EAAOya,EAAM7jB,KACXoJ,EAAMya,KAAU7jB,IACpBoJ,EAAMya,GAAQ7jB,EACD,SAAT6jB,GAA4B,WAATA,GAA8B,aAATA,GAC1Cza,EAAMshB,cAH0B,GAQ5C,CACIG,KAAAA,CAAMtH,GACJ,MAAqB,iBAAVA,EAA2BA,GAClCA,EAAM+I,UAAS/I,EAAQA,EAAM+I,SAC1BnkB,KAAKmkB,QAAQzJ,MAAM1W,QAAQoX,GACxC,CACIwG,WAAAA,CAAY+D,EAAOzkB,GACjB,IAIIyX,EAJAiN,EAAa5lB,KAAK0iB,MAAMiD,GACxBjL,EAAQ1a,KAAKilB,UAAU/jB,EAAKlB,KAAKmkB,QAAQzJ,MAAMkL,IAAaC,UAEhE,IAAA,IAAS5kB,KADT2kB,EAAa5lB,KAAK0iB,MAAMiD,GACNjL,GAAO1a,KAAKmkB,QAAQzJ,MAAMoL,OAAOF,EAAa,EAAG,EAAG3kB,GAEtE,IAASb,IAAAA,KAAMJ,KAAKslB,QAEdM,GADJjN,EAAS3Y,KAAKslB,QAAQllB,MAEpBJ,KAAKslB,QAAQllB,GAAMuY,EAAS+B,EAAM1b,QAItC,OADAgB,KAAKuiB,YACEviB,IACb,CACI8hB,YAAAA,CAAa6D,EAAOzkB,GAClB,IASIyX,EATAiN,EAAa5lB,KAAK0iB,MAAMiD,GACxB/jB,EAAsB,IAAfgkB,GAAmB,UAC1BlL,EAAQ1a,KAAKilB,UACf/jB,EACAlB,KAAKmkB,QAAQzJ,MAAMkL,GACnBhkB,GACAikB,UAEF,IAAA,IAAS5kB,KADT2kB,EAAa5lB,KAAK0iB,MAAMiD,GACNjL,GAAO1a,KAAKmkB,QAAQzJ,MAAMoL,OAAOF,EAAY,EAAG3kB,GAElE,IAASb,IAAAA,KAAMJ,KAAKslB,QAEdM,IADJjN,EAAS3Y,KAAKslB,QAAQllB,MAEpBJ,KAAKslB,QAAQllB,GAAMuY,EAAS+B,EAAM1b,QAItC,OADAgB,KAAKuiB,YACEviB,IACb,CACIilB,SAAAA,CAAUvK,EAAOqL,GACf,GAAqB,iBAAVrL,EACTA,EAAQmK,EAAYH,EAAMhK,GAAOA,YACxB,QAAiB,IAAVA,EAChBA,EAAQ,QACCxc,GAAAA,MAAM4iB,QAAQpG,GAEvB,IAAA,IAASpR,KADToR,EAAQA,EAAMzW,MAAM,GAEdqF,EAAGmF,QAAQnF,EAAGmF,OAAO3T,YAAYwO,EAAI,eAEnD,GAAgC,SAAfoR,EAAM9Y,MAAiC,aAAd5B,KAAK4B,KAEvC,IAAA,IAAS0H,KADToR,EAAQA,EAAMA,MAAMzW,MAAM,GAEpBqF,EAAGmF,QAAQnF,EAAGmF,OAAO3T,YAAYwO,EAAI,eAEnD,GAAiBoR,EAAM9Y,KACf8Y,EAAQ,CAACA,QACjB,GAAiBA,EAAMgB,KAAM,CACrB,QAA2B,IAAhBhB,EAAM7iB,MACf,MAAM,IAAIsf,MAAM,0CACgB,iBAAhBuD,EAAM7iB,QACtB6iB,EAAM7iB,MAAQuD,OAAOsf,EAAM7iB,QAE7B6iB,EAAQ,CAAC,IAAI4J,EAAY5J,GAChBA,MAAAA,GAAAA,EAAMsL,UAAYtL,EAAMle,UACjCke,EAAQ,CAAC,IAAIkK,EAAKlK,SAC1B,GAAiBA,EAAM5d,KACf4d,EAAQ,CAAC,IAAI+J,EAAO/J,QAC5B,KAAiBA,EAAM5Y,KAGf,MAAM,IAAIqV,MAAM,sCAFhBuD,EAAQ,CAAC,IAAItL,EAAQsL,GAG7B,CACM,IAAIuL,EAAYvL,EAAMhC,KAAKpP,IACpBA,EAAGoX,IAAKqE,EAAUmB,QAAQ5c,IAC/BA,EAAKA,EAAG6a,SACD1V,QAAQnF,EAAGmF,OAAO3T,YAAYwO,GACjCA,EAAGmX,IAAUqE,EAAcxb,GAC1BA,EAAGkR,OAAMlR,EAAGkR,KAAO,CAAE,QACI,IAAnBlR,EAAGkR,KAAKa,QACb0K,QAAwC,IAAvBA,EAAOvL,KAAKa,SAC/B/R,EAAGkR,KAAKa,OAAS0K,EAAOvL,KAAKa,OAAO5c,QAAQ,MAAO,KAGvD6K,EAAGmF,OAASzO,KAAKmkB,QACV7a,KAET,OAAO2c,CACb,CACIE,OAAAA,GAAqB,IAAVnB,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GAET,IAAA,IAAS5J,KADT4J,EAAWA,EAASa,UACQ,CAC1B,IAAInL,EAAQ1a,KAAKilB,UAAU7J,EAAOpb,KAAK6b,MAAO,WAAWgK,UACzD,IAAA,IAAS5kB,KAASyZ,EAAO1a,KAAKmkB,QAAQzJ,MAAM0L,QAAQnlB,GACpD,IAASb,IAAAA,KAAMJ,KAAKslB,QAClBtlB,KAAKslB,QAAQllB,GAAMJ,KAAKslB,QAAQllB,GAAMsa,EAAM1b,MAEtD,CAEM,OADAgB,KAAKuiB,YACEviB,IACb,CACIX,IAAAA,CAAK+b,GAGH,OAFAA,EAAM3M,OAASzO,KACfA,KAAKmkB,QAAQzJ,MAAMrb,KAAK+b,GACjBpb,IACb,CACIqmB,SAAAA,GACE,IAASplB,IAAAA,KAASjB,KAAKmkB,QAAQzJ,MAAOzZ,EAAMwN,YAAS,EAGrD,OAFAzO,KAAKmkB,QAAQzJ,MAAQ,GACrB1a,KAAKuiB,YACEviB,IACb,CACIlF,WAAAA,CAAYsgB,GAIV,IAAIzC,EACJ,IAASvY,IAAAA,KAJTgb,EAAQpb,KAAK0iB,MAAMtH,GACnBpb,KAAKmkB,QAAQzJ,MAAMU,GAAO3M,YAAS,EACnCzO,KAAKmkB,QAAQzJ,MAAMoL,OAAO1K,EAAO,GAElBpb,KAAKslB,SAClB3M,EAAS3Y,KAAKslB,QAAQllB,KACRgb,IACZpb,KAAKslB,QAAQllB,GAAMuY,EAAS,GAIhC,OADA3Y,KAAKuiB,YACEviB,IACb,CACIsmB,aAAAA,CAAcC,EAASpE,EAAMgD,GAW3B,OAVKA,IACHA,EAAWhD,EACXA,EAAO,CAAE,GAEXniB,KAAKuc,WAAWf,IACV2G,EAAKqE,QAAUrE,EAAKqE,MAAMtsB,SAASshB,EAAKE,OACxCyG,EAAKsE,OAASjL,EAAK3jB,MAAMqC,SAASioB,EAAKsE,QAC3CjL,EAAK3jB,MAAQ2jB,EAAK3jB,MAAM4G,QAAQ8nB,EAASpB,GAAQ,IAEnDnlB,KAAKuiB,YACEviB,IACb,CACIoL,IAAAA,CAAKma,GACH,OAAOvlB,KAAK0a,MAAMtP,KAAKma,EAC7B,CACIrJ,IAAAA,CAAKiJ,GACH,OAAOnlB,KAAKklB,MAAK,CAAC9J,EAAO9R,KACvB,IAAIga,EACJ,IACEA,EAAU6B,EAAS/J,EAAO9R,EAC3B,CAAA,MAAQjC,GACP,MAAM+T,EAAMqG,WAAWpa,EACjC,CAIQ,OAHgB,IAAZic,GAAqBlI,EAAMc,OAC7BoH,EAAUlI,EAAMc,KAAKiJ,IAEhB7B,CAAAA,GAEf,CACIoD,WAAAA,CAAY5pB,EAAMqoB,GAChB,OAAKA,EAQDroB,aAAgB4H,OACX1E,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,WAAf8R,EAAMxZ,MAAqB9E,EAAK+G,KAAKuX,EAAMte,MAC7C,OAAOqoB,EAAS/J,EAAO9R,EACnC,IAGatJ,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,WAAf8R,EAAMxZ,MAAqBwZ,EAAMte,OAASA,EAC5C,OAAOqoB,EAAS/J,EAAO9R,EACjC,KAjBQ6b,EAAWroB,EACJkD,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,WAAf8R,EAAMxZ,KACR,OAAOujB,EAAS/J,EAAO9R,EACnC,IAeA,CACI+S,YAAAA,CAAa8I,GACX,OAAOnlB,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,YAAf8R,EAAMxZ,KACR,OAAOujB,EAAS/J,EAAO9R,EACjC,GAEA,CACIiT,SAAAA,CAAUb,EAAMyJ,GACd,OAAKA,EAQDzJ,aAAgBhX,OACX1E,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,MAAmB8Z,EAAK7X,KAAKuX,EAAMM,MAC3C,OAAOyJ,EAAS/J,EAAO9R,EACnC,IAGatJ,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,MAAmBwZ,EAAMM,OAASA,EAC1C,OAAOyJ,EAAS/J,EAAO9R,EACjC,KAjBQ6b,EAAWzJ,EACJ1b,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,KACR,OAAOujB,EAAS/J,EAAO9R,EACnC,IAeA,CACIqd,SAAAA,CAAUX,EAAUb,GAClB,OAAKA,EAQDa,aAAoBthB,OACf1E,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,MAAmBokB,EAASniB,KAAKuX,EAAM4K,UAC/C,OAAOb,EAAS/J,EAAO9R,EACnC,IAGatJ,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,MAAmBwZ,EAAM4K,WAAaA,EAC9C,OAAOb,EAAS/J,EAAO9R,EACjC,KAjBQ6b,EAAWa,EACJhmB,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,KACR,OAAOujB,EAAS/J,EAAO9R,EACnC,IAeA,CACI,SAAIuS,GACF,GAAK7b,KAAKmkB,QAAQzJ,MAClB,OAAO1a,KAAKmkB,QAAQzJ,MAAM,EAChC,CACI,QAAIS,GACF,GAAKnb,KAAKmkB,QAAQzJ,MAClB,OAAO1a,KAAKmkB,QAAQzJ,MAAM1a,KAAKmkB,QAAQzJ,MAAM1b,OAAS,EAC5D,EAmCE,OAjCA+lB,EAAU6B,cAAiBC,IACzBnC,EAAQmC,CAAAA,EAEV9B,EAAU+B,aAAgBD,IACxBjC,EAAOiC,CAAAA,EAET9B,EAAUgC,eAAkBF,IAC1BpC,EAASoC,CAAAA,EAEX9B,EAAUiC,aAAgBH,IACxBlC,EAAOkC,CAAAA,EAETpJ,GAAcsH,EACdA,EAAUlS,QAAUkS,EACpBA,EAAUmB,QAAWjlB,IACA,WAAfA,EAAMW,KACRpK,OAAOyvB,eAAehmB,EAAOwjB,EAAOhrB,WACZ,SAAfwH,EAAMW,KACfpK,OAAOyvB,eAAehmB,EAAO2jB,EAAKnrB,WACV,SAAfwH,EAAMW,KACfpK,OAAOyvB,eAAehmB,EAAOqjB,EAAY7qB,WACjB,YAAfwH,EAAMW,KACfpK,OAAOyvB,eAAehmB,EAAOmO,EAAQ3V,WACb,SAAfwH,EAAMW,MACfpK,OAAOyvB,eAAehmB,EAAO0jB,EAAKlrB,WAEpCwH,EAAMyf,IAAM,EACRzf,EAAMyZ,OACRzZ,EAAMyZ,MAAM7Z,SAASua,IACnB2J,EAAUmB,QAAQ9K,EAAK,GAE/B,EAESqC,EACT,CAGA,SAASyJ,KACP,GAAItJ,GAAqB,OAAOD,GAChCC,GAAsB,EACtB,IAAImH,EAAYP,KAChB,MAAMC,UAAeM,EACnBpoB,WAAAA,CAAY0kB,GACV5J,MAAM4J,GACNrhB,KAAK4B,KAAO,QAClB,CACI4f,MAAAA,GAEE,OADKxhB,KAAKmkB,QAAQzJ,QAAO1a,KAAK0a,MAAQ,IAC/BjD,MAAM+J,UAAkBvO,UACrC,CACIkT,OAAAA,GAEE,OADKnmB,KAAKmkB,QAAQzJ,QAAO1a,KAAK0a,MAAQ,IAC/BjD,MAAM0O,WAAmBlT,UACtC,EAKE,OAHA0K,GAAW8G,EACXA,EAAO5R,QAAU4R,EACjBM,EAAUgC,eAAetC,GAClB9G,EACT,CAGA,SAASwJ,KACP,GAAIrJ,GAAuB,OAAOD,GAClCC,GAAwB,EACxB,IACIsJ,EAAYC,EADZtC,EAAYP,KAEhB,MAAM8C,UAAkBvC,EACtBpoB,WAAAA,CAAY0kB,GACV5J,MAAA8P,EAAA,CAAQ3lB,KAAM,YAAeyf,IACxBrhB,KAAK0a,QACR1a,KAAK0a,MAAQ,GAErB,CACI8M,QAAAA,GAAoB,IAAXrF,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAEd,OADW,IAAImU,EAAW,IAAIC,EAAarnB,KAAMmiB,GACrChjB,WAClB,EAUE,OARAmoB,EAAUG,mBAAsBZ,IAC9BO,EAAaP,CAAAA,EAEfS,EAAUI,kBAAqBb,IAC7BQ,EAAYR,CAAAA,EAEdhJ,GAAeyJ,EACfA,EAAUzU,QAAUyU,EACbzJ,EACT,CAGA,SAAS8J,KACP,GAAI3J,GAAwB,OAAOD,GACnCC,GAAyB,EAqBzB,OADAD,GAAc,CAAE6J,OARH,WAGX,IAH0B,IACtBxnB,EAAK,GACLkJ,EAAY,GAFG2J,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,IAGZ3J,KACLlJ,GAfc,mEAeoB,GAAhB4K,KAAK6c,SAAgB,GAEzC,OAAOznB,CACR,EACuB0nB,eAlBH,SAACC,GAA+B,IAArBC,EAAc/U,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,GAC5C,OAAO,WAGL,IAH6B,IACzB7S,EAAK,GACLkJ,EAAY,GAFH0e,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,GAGN1e,KACLlJ,GAAM2nB,EAAS/c,KAAK6c,SAAWE,EAAS/oB,OAAS,GAEnD,OAAOoB,CACR,CACF,GAUM2d,EACT,CAGA,SAASkK,KACP,GAAI/J,GAA0B,OAAOD,GACrCC,GAA2B,EAC3B,IAAIgK,WAAEA,EAAAA,aAAYC,GAAiBzR,IAC/B0R,QAAEA,EAAAA,KAAS7pB,GAASmY,IACpB2R,kBAAEA,EAAAA,mBAAmBC,GAAuB5R,GAQhD,MAAM6R,EACJ5rB,WAAAA,CAAYsb,EAAKkK,GACf,IAAiB,IAAbA,EAAKzJ,IAAT,CACA1Y,KAAKwoB,eAAevQ,GACpBjY,KAAKyoB,OAASzoB,KAAK0oB,UAAU1oB,KAAK2oB,WAAY,SAC9C,IAAI5F,EAAOZ,EAAKzJ,IAAMyJ,EAAKzJ,IAAIqK,UAAO,EAClCjhB,EAAO9B,KAAK4oB,QAAQzG,EAAKhkB,KAAM4kB,IAC9B/iB,KAAK6oB,SAAW1G,EAAKhkB,OACxB6B,KAAK6oB,QAAU1G,EAAKhkB,MAElB6B,KAAK6oB,UAAS7oB,KAAK+b,KAAOqM,EAAQpoB,KAAK6oB,UACvC/mB,IAAM9B,KAAK8B,KAAOA,EATE,CAU9B,CACIgnB,QAAAA,GAIE,OAHK9oB,KAAK+oB,gBACR/oB,KAAK+oB,cAAgB,IAAIV,EAAkBroB,KAAK8B,OAE3C9B,KAAK+oB,aAClB,CACIC,YAAAA,CAAalnB,GACX,IAIImnB,EAAWnnB,EAAKiB,MAFH,4CAEwBjB,EAAKiB,MADpC,4BAEV,GAAIkmB,EACF,OAAOC,mBAAmBpnB,EAAKqnB,OAAOF,EAAS,GAAGjqB,SAEpD,IAnCgBkD,EAmCZknB,EAAetnB,EAAKiB,MARH,mDAQ4BjB,EAAKiB,MAPxC,mCAQd,GAAIqmB,EACF,OArCclnB,EAqCIJ,EAAKqnB,OAAOC,EAAa,GAAGpqB,QApC9CqqB,OACKA,OAAOlrB,KAAK+D,EAAK,UAAUjI,WAE3B2I,OAAO0mB,KAAKpnB,GAmCnB,IAAIqnB,EAAWznB,EAAKiB,MAAM,mCAAmC,GAC7D,MAAM,IAAIoU,MAAM,mCAAqCoS,EAC3D,CACIC,gBAAAA,CAAiBC,GACf,OAAOA,EAAgBhrB,QAAQ,8BAA+B,IAAI0G,MACxE,CACIukB,KAAAA,CAAMhR,GACJ,MAAmB,iBAARA,IACoB,iBAAjBA,EAAIiR,UAAkD,iBAAlBjR,EAAIkR,WAA0B1rB,MAAM4iB,QAAQpI,EAAImR,UACxG,CACIrB,cAAAA,CAAevQ,GACb,IAAI6R,EAAW7R,EAAIlV,MAAM,+BACzB,GAAK+mB,EAAL,CACA,IAAIxR,EAAQL,EAAI8R,YAAYD,EAASzlB,OACjCmU,EAAMP,EAAIjU,QAAQ,KAAMsU,GACxBA,GAAcE,GAAAA,GAAU,IAC1BxY,KAAK2oB,WAAa3oB,KAAKwpB,iBAAiBvR,EAAI/R,UAAUoS,EAAOE,IAJhD,CAMrB,CACIwR,QAAAA,CAASznB,GAEP,GADAvC,KAAK+b,KAAOqM,EAAQ7lB,GAChB2lB,EAAW3lB,GAEb,OADAvC,KAAK6oB,QAAUtmB,EACR4lB,EAAa5lB,EAAM,SAAStI,WAAWkL,MAEtD,CACIyjB,OAAAA,CAAQrR,EAAMwL,GACZ,IAAa,IAATA,EAAgB,OAAO,EAC3B,GAAIA,EAAM,CACR,GAAoB,iBAATA,EACT,OAAOA,EACE,GAAgB,mBAATA,EAW1B,IAAmBA,aAAgBsF,EACzB,OAAOC,EAAmB2B,cAAclH,GAAM9oB,WACxD,GAAmB8oB,aAAgBuF,EACzB,OAAOvF,EAAK9oB,WACH,GAAA+F,KAAK0pB,MAAM3G,GACpB,OAAO7jB,KAAKC,UAAU4jB,GAEtB,MAAM,IAAI5L,MACR,2CAA6C4L,EAAK9oB,WAE9D,CApBU,IAAIiwB,EAAWnH,EAAKxL,GACpB,GAAI2S,EAAU,CACZ,IAAIxR,EAAM1Y,KAAKgqB,SAASE,GACxB,IAAKxR,EACH,MAAM,IAAIvB,MACR,uCAAyC+S,EAASjwB,YAGtD,OAAOye,CACnB,CAYA,KAAA,IAAiB1Y,KAAKyoB,OACd,OAAOzoB,KAAKgpB,aAAahpB,KAAK2oB,YACtC,GAAiB3oB,KAAK2oB,WAAY,CAC1B,IAAIjQ,EAAM1Y,KAAK2oB,WAEf,OADIpR,IAAMmB,EAAMna,EAAK6pB,EAAQ7Q,GAAOmB,IAC7B1Y,KAAKgqB,SAAStR,EAC7B,EACA,CACIgQ,SAAAA,CAAUjN,EAAQnD,GAChB,QAAKmD,GACEA,EAAO0N,OAAO,EAAG7Q,EAAMtZ,UAAYsZ,CAChD,CACI6R,WAAAA,GACE,SAAUnqB,KAAK8oB,WAAWsB,gBAAkBpqB,KAAK8oB,WAAWsB,eAAeprB,OAAS,EAC1F,EAIE,OAFAif,GAAgBsK,EAChBA,EAAY1V,QAAU0V,EACftK,EACT,CAGA,SAASoM,KACP,GAAIjM,GAAoB,OAAOD,GAC/BC,GAAqB,EACrB,IAAIwJ,OAAEA,GAA+CD,MACjD2C,WAAEA,EAAAA,QAAYC,GAAY7T,IAC1B2R,kBAAEA,EAAAA,mBAAmBC,GAAuB5R,IAC5C8T,cAAEA,EAAAA,cAAeC,GAAkB/T,GACnCQ,EAAiBH,KACjBwR,EAAcN,KACdhR,EAAoBP,GACpBgU,EAAkB7T,OAAO,mBACzB8T,EAAqB/wB,QAAQyuB,GAAqBC,GAClDsC,EAAgBhxB,QAAQ2wB,GAAWD,GACvC,MAAMO,EACJluB,WAAAA,CAAYsb,GAAgB,IAAXkK,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACtB,GAAIgF,SAA6D,iBAARA,IAAqBA,EAAIhe,SAChF,MAAM,IAAIkd,MAA0Bc,oBAAAA,OAAAA,EAA2B,2BAkBjE,GAhBAjY,KAAKiY,IAAMA,EAAIhe,WACK,WAAhB+F,KAAKiY,IAAI,IAAmC,MAAhBjY,KAAKiY,IAAI,IACvCjY,KAAK8qB,QAAS,EACd9qB,KAAKiY,IAAMjY,KAAKiY,IAAIhU,MAAM,IAE1BjE,KAAK8qB,QAAS,EAEhB9qB,KAAKzF,SAAWyF,KAAKiY,IACjBkK,EAAK5nB,WAAUyF,KAAKzF,SAAW4nB,EAAK5nB,SAASN,YAC7CkoB,EAAKhkB,QACFysB,GAAiB,YAAY/mB,KAAKse,EAAKhkB,OAASmsB,EAAWnI,EAAKhkB,MACnE6B,KAAKuX,KAAO4K,EAAKhkB,KAEjB6B,KAAKuX,KAAOgT,EAAQpI,EAAKhkB,OAGzBysB,GAAiBD,EAAoB,CACvC,IAAIjS,EAAM,IAAI6P,EAAYvoB,KAAKiY,IAAKkK,GACpC,GAAIzJ,EAAI5W,KAAM,CACZ9B,KAAK0Y,IAAMA,EACX,IAAInB,EAAOmB,EAAIoQ,WAAWvR,MACrBvX,KAAKuX,MAAQA,IAAMvX,KAAKuX,KAAOvX,KAAK+qB,WAAWxT,GAC9D,CACA,CACWvX,KAAKuX,OACRvX,KAAKI,GAAK,cAAgBwnB,EAAO,GAAK,KAEpC5nB,KAAK0Y,MAAK1Y,KAAK0Y,IAAInB,KAAOvX,KAAK7B,KACzC,CACIO,KAAAA,CAAM0Y,EAASC,EAAMC,GAAmB,IAClCM,EAAWD,EAAS2L,EADGnB,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAElC,GAAIoE,GAAwB,iBAATA,EAAmB,CACpC,IAAIiB,EAAQjB,EACRmB,EAAMlB,EACV,GAA4B,iBAAjBgB,EAAM6I,OAAqB,CACpC,IAAItb,EAAM7F,KAAKgrB,WAAW1S,EAAM6I,QAChC9J,EAAOxR,EAAIwR,KACXC,EAASzR,EAAIolB,SAEb5T,EAAOiB,EAAMjB,KACbC,EAASgB,EAAMhB,OAEjB,GAA0B,iBAAfkB,EAAI2I,OAAqB,CAClC,IAAItb,EAAM7F,KAAKgrB,WAAWxS,EAAI2I,QAC9BxJ,EAAU9R,EAAIwR,KACdO,EAAY/R,EAAIolB,SAEhBtT,EAAUa,EAAInB,KACdO,EAAYY,EAAIlB,MAE1B,MAAA,IAAkBA,EAAQ,CAClB,IAAIzR,EAAM7F,KAAKgrB,WAAW3T,GAC1BA,EAAOxR,EAAIwR,KACXC,EAASzR,EAAIolB,GACrB,CACM,IAAI5nB,EAASrD,KAAKqD,OAAOgU,EAAMC,EAAQK,EAASC,GA2BhD,OAzBE0L,EADEjgB,EACQ,IAAI6T,EACZE,OACmB,IAAnB/T,EAAOsU,QAAqBtU,EAAOgU,KAAO,CAAEC,OAAQjU,EAAOiU,OAAQD,KAAMhU,EAAOgU,WAC7D,IAAnBhU,EAAOsU,QAAqBtU,EAAOiU,OAAS,CAAEA,OAAQjU,EAAOuU,UAAWP,KAAMhU,EAAOsU,SACrFtU,EAAOxG,OACPwG,EAAOkU,KACP4K,EAAK3K,QAGG,IAAIN,EACZE,OACY,IAAZO,EAAqBN,EAAO,CAAEC,SAAQD,aAC1B,IAAZM,EAAqBL,EAAS,CAAEA,OAAQM,EAAWP,KAAMM,GACzD3X,KAAKiY,IACLjY,KAAKuX,KACL4K,EAAK3K,SAGDmK,MAAQ,CAAErK,SAAQM,YAAWD,UAASN,OAAMxa,OAAQmD,KAAKiY,KAC7DjY,KAAKuX,OACHkT,IACFnH,EAAQ3B,MAAMjf,IAAM+nB,EAAczqB,KAAKuX,MAAMtd,YAE/CqpB,EAAQ3B,MAAMpK,KAAOvX,KAAKuX,MAErB+L,CACb,CACI0H,UAAAA,CAAW7J,GACT,IAAc+J,EACd,GAAKlrB,KAAK0qB,GAURQ,EAAclrB,KAAK0qB,OAVO,CAC1B,IAAIrS,EAAQrY,KAAKiY,IAAIlZ,MAAM,MAC3BmsB,EAAc,IAAIhtB,MAAMma,EAAMrZ,QAE9B,IADA,IAAImsB,EAAY,EACP7hB,EAAK,EAAG8hB,EAAK/S,EAAMrZ,OAAQsK,EAAK8hB,EAAI9hB,IAC3C4hB,EAAY5hB,GAAM6hB,EAClBA,GAAa9S,EAAM/O,GAAItK,OAAS,EAElCgB,KAAK0qB,GAAmBQ,EAK1B,IAAIjgB,EAAM,EACV,GAAIkW,GAFO+J,EAAYA,EAAYlsB,OAAS,GAG1CiM,EAAMigB,EAAYlsB,OAAS,OAI3B,IAFA,IACIqsB,EADA9S,EAAM2S,EAAYlsB,OAAS,EAExBiM,EAAMsN,GAEX,GAAI4I,EAAS+J,EADbG,EAAMpgB,GAAOsN,EAAMtN,GAAO,IAExBsN,EAAM8S,EAAM,MACb,MAAUlK,GAAU+J,EAAYG,EAAM,IAEhC,CACLpgB,EAAMogB,EACN,KACZ,CAJYpgB,EAAMogB,EAAM,CAIxB,CAGM,MAAO,CACLJ,IAAK9J,EAAS+J,EAAYjgB,GAAO,EACjCoM,KAAMpM,EAAM,EAEpB,CACI8f,UAAAA,CAAWxT,GACT,MAAI,YAAY1T,KAAK0T,GACZA,EAEFgT,EAAQvqB,KAAK0Y,IAAIoQ,WAAWwC,YAActrB,KAAK0Y,IAAIqD,MAAQ,IAAKxE,EAC7E,CACIlU,MAAAA,CAAOgU,EAAMC,EAAQK,EAASC,GAC5B,IAAK5X,KAAK0Y,IAAK,OAAO,EACtB,IAGI6S,EAIAC,EAPA1C,EAAW9oB,KAAK0Y,IAAIoQ,WACpB3qB,EAAO2qB,EAAS2C,oBAAoB,CAAEnU,SAAQD,SAClD,IAAKlZ,EAAKtB,OAAQ,OAAO,EAEF,iBAAZ8a,IACT4T,EAAKzC,EAAS2C,oBAAoB,CAAEnU,OAAQM,EAAWP,KAAMM,KAI7D6T,EADElB,EAAWnsB,EAAKtB,QACR4tB,EAActsB,EAAKtB,QAEnB,IAAI8F,IACZxE,EAAKtB,OACLmD,KAAK0Y,IAAIoQ,WAAWwC,YAAcb,EAAczqB,KAAK0Y,IAAImQ,UAG7D,IAAIvF,EAAU,CACZhM,OAAQnZ,EAAKmZ,OACbM,UAAW2T,GAAMA,EAAGjU,OACpBK,QAAS4T,GAAMA,EAAGlU,KAClBA,KAAMlZ,EAAKkZ,KACX3U,IAAK8oB,EAAQvxB,YAEf,GAAyB,UAArBuxB,EAAQE,SAAsB,CAChC,IAAIlB,EAGF,MAAM,IAAIrT,MAA6D,yDAFvEmM,EAAQ/L,KAAOiT,EAAcgB,EAIvC,CACM,IAAI3uB,EAASisB,EAAS6C,iBAAiBxtB,EAAKtB,QAE5C,OADIA,IAAQymB,EAAQzmB,OAASA,GACtBymB,CACb,CACIC,MAAAA,GACE,IAAIqI,EAAO,CAAE,EACb,IAAA,IAAS9uB,IAAQ,CAAC,SAAU,MAAO,OAAQ,MACvB,MAAdkD,KAAKlD,KACP8uB,EAAK9uB,GAAQkD,KAAKlD,IAStB,OANIkD,KAAK0Y,MACPkT,EAAKlT,IAAAA,EAAAA,CAAAA,EAAW1Y,KAAK0Y,KACjBkT,EAAKlT,IAAIqQ,gBACX6C,EAAKlT,IAAIqQ,mBAAgB,IAGtB6C,CACb,CACI,QAAIztB,GACF,OAAO6B,KAAKuX,MAAQvX,KAAKI,EAC/B,EAOE,OALA+d,GAAU0M,EACVA,EAAMhY,QAAUgY,EACZ5T,GAAqBA,EAAkB4U,eACzC5U,EAAkB4U,cAAchB,GAE3B1M,EACT,CAGA,SAAS2N,KACP,GAAIxN,GAAmB,OAAOD,GAC9BC,GAAoB,EACpB,IACI8I,EAAYC,EADZtC,EAAYP,KAEhB,MAAMG,UAAaI,EACjBpoB,WAAAA,CAAY0kB,GACV5J,MAAM4J,GACNrhB,KAAK4B,KAAO,OACP5B,KAAK0a,QAAO1a,KAAK0a,MAAQ,GACpC,CACIuK,SAAAA,CAAU7J,EAAO2K,EAAQnkB,GACvB,IAAI8Y,EAAQjD,MAAMwN,UAAU7J,GAC5B,GAAI2K,EACF,GAAa,YAATnkB,EACE5B,KAAK0a,MAAM1b,OAAS,EACtB+mB,EAAOvL,KAAKa,OAASrb,KAAK0a,MAAM,GAAGF,KAAKa,cAEjC0K,EAAOvL,KAAKa,YAEZ,GAAArb,KAAK6b,QAAUkK,EACxB,IAAA,IAAS9kB,KAASyZ,EAChBzZ,EAAMuZ,KAAKa,OAAS0K,EAAOvL,KAAKa,OAItC,OAAOX,CACb,CACI5f,WAAAA,CAAYsgB,EAAO2Q,GACjB,IAAIpT,EAAS3Y,KAAK0iB,MAAMtH,GAIxB,OAHK2Q,GAAqB,IAAXpT,GAAgB3Y,KAAK0a,MAAM1b,OAAS,IACjDgB,KAAK0a,MAAM,GAAGF,KAAKa,OAASrb,KAAK0a,MAAM/B,GAAQ6B,KAAKa,QAE/C5D,MAAM3c,YAAYsgB,EAC/B,CACIoM,QAAAA,GAAoB,IAAXrF,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAEd,OADW,IAAImU,EAAW,IAAIC,EAAarnB,KAAMmiB,GACrChjB,WAClB,EAWE,OATAwlB,EAAK8C,mBAAsBZ,IACzBO,EAAaP,CAAAA,EAEflC,EAAK+C,kBAAqBb,IACxBQ,EAAYR,CAAAA,EAEdxI,GAASsG,EACTA,EAAK9R,QAAU8R,EACfI,EAAUiC,aAAarC,GAChBtG,EACT,CAGA,SAAS2N,KACP,GAAIxN,GAAmB,OAAOD,GAC9BC,GAAoB,EACpB,IAAIyN,EAAO,CACTC,MAAMzQ,GACGwQ,EAAKltB,MAAM0c,EAAQ,CAAC,MAAM,GAEnC0Q,MAAM1Q,GAEGwQ,EAAKltB,MAAM0c,EADL,CAAC,IAAK,KAAM,OAG3B1c,KAAAA,CAAM0c,EAAQ2Q,EAAYjR,GACxB,IAAIkR,EAAQ,GACRC,EAAU,GACVvtB,GAAQ,EACRwtB,EAAO,EACPC,GAAU,EACVC,EAAY,GACZC,GAAS,EACb,IAAA,IAASC,KAAUlR,EACbiR,EACFA,GAAS,EACW,OAAXC,EACTD,GAAS,EACAF,EACLG,IAAWF,IACbD,GAAU,GAEQ,MAAXG,GAA6B,MAAXA,GAC3BH,GAAU,EACVC,EAAYE,GACQ,MAAXA,EACTJ,GAAQ,EACY,MAAXI,EACLJ,EAAO,IAAGA,GAAQ,GACJ,IAATA,GACLH,EAAWlyB,SAASyyB,KAAS5tB,GAAQ,GAEvCA,GACc,KAAZutB,GAAgBD,EAAMhtB,KAAKitB,EAAQnnB,QACvCmnB,EAAU,GACVvtB,GAAQ,GAERutB,GAAWK,EAIf,OADIxR,GAAoB,KAAZmR,IAAgBD,EAAMhtB,KAAKitB,EAAQnnB,QACxCknB,CACb,GAIE,OAFA9N,GAAW0N,EACXA,EAAKpZ,QAAUoZ,EACR1N,EACT,CAGA,SAASqO,KACP,GAAIlO,GAAmB,OAAOD,GAC9BC,GAAoB,EACpB,IAAIqG,EAAYP,KACZyH,EAAOD,KACX,MAAMpH,UAAaG,EACjBpoB,WAAAA,CAAY0kB,GACV5J,MAAM4J,GACNrhB,KAAK4B,KAAO,OACP5B,KAAK0a,QAAO1a,KAAK0a,MAAQ,GACpC,CACI,aAAIle,GACF,OAAOyvB,EAAKC,MAAMlsB,KAAKgmB,SAC7B,CACI,aAAIxpB,CAAUqwB,GACZ,IAAI9pB,EAAQ/C,KAAKgmB,SAAWhmB,KAAKgmB,SAASjjB,MAAM,QAAU,KACtD+pB,EAAM/pB,EAAQA,EAAM,GAAK,IAAM/C,KAAK+a,IAAI,UAAW,cACvD/a,KAAKgmB,SAAW6G,EAAOtuB,KAAKuuB,EAClC,EAKE,OAHArO,GAASmG,EACTA,EAAK/R,QAAU+R,EACfG,EAAU+B,aAAalC,GAChBnG,EACT,CA2DA,SAASsO,KACP,GAAIjO,GAA2B,OAAOD,GACtCC,GAA4B,EAC5B,IAAIsJ,QAAEA,EAAAA,SAAS4E,EAAAA,QAAUzC,EAAAA,IAASuC,GAAQpW,IACtC2R,kBAAEA,EAAAA,mBAAmBC,GAAuB5R,IAC5C+T,cAAEA,GAAkB/T,GACpBmU,EAAQR,KACRM,EAAqB/wB,QAAQyuB,GAAqBC,GAClDsC,EAAgBhxB,QAAQwuB,GAAWmC,GAAWyC,GAAYF,GAiT9D,OADAjO,GA/SA,MACEliB,WAAAA,CAAYwC,EAAW2c,EAAOqG,EAAM8K,GAClCjtB,KAAKb,UAAYA,EACjBa,KAAKktB,QAAU/K,EAAKzJ,KAAO,CAAE,EAC7B1Y,KAAK+b,KAAOD,EACZ9b,KAAKmiB,KAAOA,EACZniB,KAAKiY,IAAMgV,EACXjtB,KAAKmtB,YAAcF,EACnBjtB,KAAKotB,cAAgBptB,KAAKktB,QAAQ/uB,MAAQ6B,KAAKktB,QAAQG,SACvDrtB,KAAKstB,qBAAuCrtB,IAC5CD,KAAKutB,kBAAoCttB,IACzCD,KAAKwtB,iBAAmCvtB,GAC9C,CACIwtB,aAAAA,GACE,IAAIC,EAEFA,EADE1tB,KAAK2tB,WACG,gCAAkC3tB,KAAK4tB,SAAS5tB,KAAK0Y,IAAIze,YACvB,iBAA5B+F,KAAKktB,QAAQvE,WACnB3oB,KAAKktB,QAAQvE,WACqB,mBAA5B3oB,KAAKktB,QAAQvE,WACnB3oB,KAAKktB,QAAQvE,WAAW3oB,KAAKmiB,KAAKoJ,GAAIvrB,KAAK+b,MAE3C/b,KAAK6tB,aAAe,OAEhC,IAAIC,EAAM,KACN9tB,KAAKiY,IAAI/d,SAAS,UAAS4zB,EAAM,QACrC9tB,KAAKiY,KAAO6V,EAAM,wBAA0BJ,EAAU,KAC5D,CACIK,aAAAA,GACE,IAAShL,IAAAA,KAAQ/iB,KAAKguB,WAAY,CAChC,IAAI7vB,EAAO6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKwgB,EAAKxL,OACjCuE,EAAQiH,EAAKhH,MAAQqM,EAAQrF,EAAKxL,MAClCmB,OAAAA,GACgC,IAAhC1Y,KAAKktB,QAAQ9C,gBACf1R,EAAM,IAAI2P,EAAkBtF,EAAKjhB,OACzBsoB,iBACN1R,EAAI0R,eAAiB,MAGvB1R,EAAMqK,EAAK+F,WAEb9oB,KAAK0Y,IAAIwV,eAAexV,EAAKva,EAAM6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKuZ,IAChE,CACA,CACIqS,eAAAA,GACE,IAAgC,IAA5BnuB,KAAKktB,QAAQvE,WACjB,GAAI3oB,KAAK+b,KAEP,IADA,IAAI9a,EACKqI,EAAKtJ,KAAK+b,KAAKrB,MAAM1b,OAAS,EAAGsK,GAAM,EAAGA,IAE9B,aADnBrI,EAAQjB,KAAK+b,KAAKrB,MAAMpR,IACd1H,MACNX,EAAMa,KAAK4D,WAAW,wBACxB1F,KAAK+b,KAAKjhB,YAAYwO,QAGjBtJ,KAAKiY,MACdjY,KAAKiY,IAAMjY,KAAKiY,IAAIxZ,QAAQ,0BAA2B,IAE/D,CACI2vB,QAAAA,GAEE,GADApuB,KAAKmuB,kBACDvD,GAAiBD,GAAsB3qB,KAAK0pB,QAC9C,OAAO1pB,KAAKquB,cAEZ,IAAI/K,EAAU,GAId,OAHAtjB,KAAKb,UAAUa,KAAK+b,MAAOzS,IACzBga,GAAWha,CAAAA,IAEN,CAACga,EAEhB,CACI+K,WAAAA,GACE,GAAIruB,KAAK+b,KACP/b,KAAKsuB,sBACI,GAA2B,IAA3BtuB,KAAKguB,WAAWhvB,OAAc,CACvC,IAAI+jB,EAAO/iB,KAAKguB,WAAW,GAAGlF,WAC9B/F,EAAKxL,KAAOvX,KAAK6tB,aACjB7tB,KAAK0Y,IAAM4P,EAAmB2B,cAAclH,EAAM,CAChDwL,sBAAsB,SAGxBvuB,KAAK0Y,IAAM,IAAI4P,EAAmB,CAChC/Q,KAAMvX,KAAK6tB,aACXU,sBAAsB,IAExBvuB,KAAK0Y,IAAI8V,WAAW,CAClBC,UAAW,CAAEnX,OAAQ,EAAGD,KAAM,GAC9Bra,SAAU,CAAEsa,OAAQ,EAAGD,KAAM,GAC7Bxa,OAAQmD,KAAKmiB,KAAKhkB,KAAO6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKvC,KAAKmiB,KAAKhkB,OAAS,gBAMrE,OAHI6B,KAAK0uB,oBAAoB1uB,KAAK2uB,oBAC9B3uB,KAAK+b,MAAQ/b,KAAKguB,WAAWhvB,OAAS,GAAGgB,KAAK+tB,gBAC9C/tB,KAAK4uB,gBAAgB5uB,KAAKytB,gBAC1BztB,KAAK2tB,WACA,CAAC3tB,KAAKiY,KAEN,CAACjY,KAAKiY,IAAKjY,KAAK0Y,IAE/B,CACI4V,cAAAA,GACEtuB,KAAKiY,IAAM,GACXjY,KAAK0Y,IAAM,IAAI4P,EAAmB,CAChC/Q,KAAMvX,KAAK6tB,aACXU,sBAAsB,IAExB,IAQIpT,EAAM9C,EARNhB,EAAO,EACPC,EAAS,EACTuX,EAAW,cACXC,EAAU,CACZL,UAAW,CAAEnX,OAAQ,EAAGD,KAAM,GAC9Bra,SAAU,CAAEsa,OAAQ,EAAGD,KAAM,GAC7Bxa,OAAQ,IAGVmD,KAAKb,UAAUa,KAAK+b,MAAM,CAAC7Z,EAAKjB,EAAOW,KAyBrC,GAxBA5B,KAAKiY,KAAO/V,EACRjB,GAAkB,QAATW,IACXktB,EAAQL,UAAUpX,KAAOA,EACzByX,EAAQL,UAAUnX,OAASA,EAAS,EAChCrW,EAAMpE,QAAUoE,EAAMpE,OAAOyb,OAC/BwW,EAAQjyB,OAASmD,KAAK+uB,WAAW9tB,GACjC6tB,EAAQ9xB,SAASqa,KAAOpW,EAAMpE,OAAOyb,MAAMjB,KAC3CyX,EAAQ9xB,SAASsa,OAASrW,EAAMpE,OAAOyb,MAAMhB,OAAS,EACtDtX,KAAK0Y,IAAI8V,WAAWM,KAEpBA,EAAQjyB,OAASgyB,EACjBC,EAAQ9xB,SAASqa,KAAO,EACxByX,EAAQ9xB,SAASsa,OAAS,EAC1BtX,KAAK0Y,IAAI8V,WAAWM,MAGxBzW,EAAQnW,EAAIa,MAAM,SAEhBsU,GAAQgB,EAAMrZ,OACdmc,EAAOjZ,EAAI6nB,YAAY,MACvBzS,EAASpV,EAAIlD,OAASmc,GAEtB7D,GAAUpV,EAAIlD,OAEZiC,GAAkB,UAATW,EAAkB,CAC7B,IAAIib,EAAI5b,EAAMwN,QAAU,CAAE+L,KAAM,CAAA,IACD,SAAfvZ,EAAMW,MAAkC,WAAfX,EAAMW,OAAsBX,EAAMyZ,QACzDzZ,IAAU4b,EAAE1B,OAAQ0B,EAAErC,KAAKN,YACvCjZ,EAAMpE,QAAUoE,EAAMpE,OAAO2b,KAC/BsW,EAAQjyB,OAASmD,KAAK+uB,WAAW9tB,GACjC6tB,EAAQ9xB,SAASqa,KAAOpW,EAAMpE,OAAO2b,IAAInB,KACzCyX,EAAQ9xB,SAASsa,OAASrW,EAAMpE,OAAO2b,IAAIlB,OAAS,EACpDwX,EAAQL,UAAUpX,KAAOA,EACzByX,EAAQL,UAAUnX,OAASA,EAAS,EACpCtX,KAAK0Y,IAAI8V,WAAWM,KAEpBA,EAAQjyB,OAASgyB,EACjBC,EAAQ9xB,SAASqa,KAAO,EACxByX,EAAQ9xB,SAASsa,OAAS,EAC1BwX,EAAQL,UAAUpX,KAAOA,EACzByX,EAAQL,UAAUnX,OAASA,EAAS,EACpCtX,KAAK0Y,IAAI8V,WAAWM,IAGlC,IAEA,CACIF,YAAAA,GACE,QAAI5uB,KAAK2tB,kBAG8B,IAA5B3tB,KAAKktB,QAAQvE,WACf3oB,KAAKktB,QAAQvE,YAElB3oB,KAAKguB,WAAWhvB,QACXgB,KAAKguB,WAAW5iB,MAAM9B,GAAOA,EAAGqf,aAG/C,CACIgF,QAAAA,GACE,QAAmC,IAAxB3tB,KAAKktB,QAAQzE,OACtB,OAAOzoB,KAAKktB,QAAQzE,OAEtB,IAAIE,EAAa3oB,KAAKktB,QAAQvE,WAC9B,YAA0B,IAAfA,IAA6C,IAAfA,MAGrC3oB,KAAKguB,WAAWhvB,QACXgB,KAAKguB,WAAW5iB,MAAM9B,GAAOA,EAAGmf,SAG/C,CACIiB,KAAAA,GACE,YAA6B,IAAlB1pB,KAAKmiB,KAAKzJ,MACV1Y,KAAKmiB,KAAKzJ,IAEd1Y,KAAKguB,WAAWhvB,OAAS,CACtC,CACI0vB,gBAAAA,GACE,YAA2C,IAAhC1uB,KAAKktB,QAAQ9C,eACfpqB,KAAKktB,QAAQ9C,gBAElBpqB,KAAKguB,WAAWhvB,QACXgB,KAAKguB,WAAW5iB,MAAM9B,GAAOA,EAAG6gB,eAG/C,CACI0D,UAAAA,GACE,OAAI7tB,KAAKmiB,KAAKoJ,GACLvrB,KAAKuC,KAAKvC,KAAKmiB,KAAKoJ,IAClBvrB,KAAKmiB,KAAKhkB,KACZ6B,KAAKuC,KAAKvC,KAAKmiB,KAAKhkB,MAEpB,QAEf,CACIoE,IAAAA,CAAKgV,GACH,GAAIvX,KAAKktB,QAAQG,SAAU,OAAO9V,EAClC,GAA2B,KAAvBA,EAAKyX,WAAW,GAAW,OAAOzX,EACtC,GAAI,YAAY1T,KAAK0T,GAAO,OAAOA,EACnC,IAAI0X,EAASjvB,KAAKutB,cAAcvzB,IAAIud,GACpC,GAAI0X,EAAQ,OAAOA,EACnB,IAAI9wB,EAAO6B,KAAKmiB,KAAKoJ,GAAKnD,EAAQpoB,KAAKmiB,KAAKoJ,IAAM,IACX,iBAA5BvrB,KAAKktB,QAAQvE,aACtBxqB,EAAOiqB,EAAQmC,EAAQpsB,EAAM6B,KAAKktB,QAAQvE,cAE5C,IAAIpmB,EAAOyqB,EAAS7uB,EAAMoZ,GAE1B,OADAvX,KAAKutB,cAAcnsB,IAAImW,EAAMhV,GACtBA,CACb,CACIyrB,QAAAA,GACE,IAAKhuB,KAAKkvB,aAER,GADAlvB,KAAKkvB,aAAe,GAChBlvB,KAAK+b,KACP/b,KAAK+b,KAAKG,MAAMjb,IACd,GAAIA,EAAMpE,QAAUoE,EAAMpE,OAAO8kB,MAAMjJ,IAAK,CAC1C,IAAIA,EAAMzX,EAAMpE,OAAO8kB,MAAMjJ,IACxB1Y,KAAKkvB,aAAah1B,SAASwe,IAC9B1Y,KAAKkvB,aAAa7vB,KAAKqZ,EAEvC,SAEe,CACL,IAAIoL,EAAS,IAAI+G,EAAM7qB,KAAKmtB,YAAantB,KAAKmiB,MAC1C2B,EAAOpL,KAAK1Y,KAAKkvB,aAAa7vB,KAAKykB,EAAOpL,IACxD,CAEM,OAAO1Y,KAAKkvB,YAClB,CACIP,iBAAAA,GACE,IAAIQ,EAAU,CAAE,EAChB,GAAInvB,KAAK+b,KACP/b,KAAK+b,KAAKG,MAAMjb,IACd,GAAIA,EAAMpE,OAAQ,CAChB,IAAIsB,EAAO8C,EAAMpE,OAAO8kB,MAAMxjB,KAC9B,GAAIA,IAASgxB,EAAQhxB,GAAO,CAC1BgxB,EAAQhxB,IAAQ,EAChB,IAAIqtB,EAAUxrB,KAAKotB,aAAeptB,KAAKovB,UAAUjxB,GAAQ6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKpE,IAC9E6B,KAAK0Y,IAAI2W,iBAAiB7D,EAASvqB,EAAMpE,OAAO8kB,MAAM1J,IACpE,CACA,UAEA,GAAiBjY,KAAKiY,IAAK,CACnB,IAAI9Z,EAAO6B,KAAKmiB,KAAKhkB,KAAO6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKvC,KAAKmiB,KAAKhkB,OAAS,cACpE6B,KAAK0Y,IAAI2W,iBAAiBlxB,EAAM6B,KAAKiY,IAC7C,CACA,CACI8W,UAAAA,CAAW9tB,GACT,OAAIjB,KAAKktB,QAAQ/uB,KACR6B,KAAKiuB,MAAMjuB,KAAKktB,QAAQ/uB,MACtB6B,KAAKotB,aACPptB,KAAKovB,UAAUnuB,EAAMpE,OAAO8kB,MAAMxjB,MAElC6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKtB,EAAMpE,OAAO8kB,MAAMxjB,MAEvD,CACIyvB,QAAAA,CAAS1rB,GACP,OAAImnB,OACKA,OAAOlrB,KAAK+D,GAAKjI,SAAS,UAE1B2I,OAAO0sB,KAAKC,SAASC,mBAAmBttB,IAEvD,CACIktB,SAAAA,CAAU7sB,GACR,IAAI0sB,EAASjvB,KAAKstB,iBAAiBtzB,IAAIuI,GACvC,GAAI0sB,EAAQ,OAAOA,EACnB,GAAIxE,EAAe,CACjB,IAAIgF,EAAUhF,EAAcloB,GAAMtI,WAElC,OADA+F,KAAKstB,iBAAiBlsB,IAAImB,EAAMktB,GACzBA,EAEP,MAAM,IAAItY,MACR,+DAGV,CACI8W,KAAAA,CAAM1rB,GACJ,IAAI0sB,EAASjvB,KAAKwtB,aAAaxzB,IAAIuI,GACnC,GAAI0sB,EAAQ,OAAOA,EACP,OAARnC,IACFvqB,EAAOA,EAAK9D,QAAQ,MAAO,MAE7B,IAAIiE,EAAMgtB,UAAUntB,GAAM9D,QAAQ,QAAS+wB,oBAE3C,OADAxvB,KAAKwtB,aAAapsB,IAAImB,EAAMG,GACrBA,CACb,GAGSmc,EACT,CAGA,SAAS8Q,KACP,GAAI3Q,GAAuB,OAAOD,GAClCC,GAAwB,EACxB,IAAM4Q,EAAe,IAAIZ,WAAW,GAC9Ba,EAAe,IAAIb,WAAW,GAC9Bc,EAAY,KAAKd,WAAW,GAC5Be,EAAQ,IAAIf,WAAW,GACvBgB,EAAU,KAAKhB,WAAW,GAC1BiB,EAAQ,IAAIjB,WAAW,GACvBkB,EAAO,KAAKlB,WAAW,GACvBmB,EAAM,KAAInB,WAAW,GACrBoB,EAAK,KAAKpB,WAAW,GACrBqB,EAAc,IAAIrB,WAAW,GAC7BsB,EAAe,IAAItB,WAAW,GAC9BuB,EAAmB,IAAIvB,WAAW,GAClCwB,EAAoB,IAAIxB,WAAW,GACnCyB,EAAa,IAAIzB,WAAW,GAC5B0B,EAAc,IAAI1B,WAAW,GAC7B2B,EAAY,IAAI3B,WAAW,GAC3B4B,EAAW,IAAI5B,WAAW,GAC1B6B,EAAQ,IAAI7B,WAAW,GACvB8B,EAAK,IAAI9B,WAAW,GACpB+B,EAAY,6BACZC,EAAc,wCACdC,EAAiB,gBACjBC,EAAgB,WA0LtB,OAzLAnS,GAAa,SAAmB+E,GAAsB,IAGhD1K,EAAMsU,EAAShB,EAAQjK,EAAM0O,EAC7BC,EAAcC,EAASC,EAAWz1B,EAAIknB,EAJJxb,EAAU0L,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAC5CgF,EAAM6L,EAAO7L,IAAIsZ,UACjBxF,EAASxkB,EAAQiqB,aAGjBxyB,EAASiZ,EAAIjZ,OACb6G,EAAM,EACNsF,EAAS,GACTsmB,EAAW,GAIf,SAASC,EAASC,GAChB,MAAM7N,EAAOplB,MAAM,YAAcizB,EAAM9rB,EAC7C,CAoKI,MAAO,CACL+rB,KAJF,SAAcC,GACZJ,EAASpyB,KAAKwyB,EACpB,EAGMC,UArKF,WACE,OAA2B,IAApBL,EAASzyB,QAAgB6G,GAAO7G,CAC7C,EAoKM+yB,UAnKF,SAAmB5P,GACjB,GAAIsP,EAASzyB,OAAQ,OAAOyyB,EAASptB,MACrC,KAAIwB,GAAO7G,GAAX,CACA,IAAIgzB,IAAiB7P,GAAOA,EAAK6P,eAEjC,OADA5Y,EAAOnB,EAAI+W,WAAWnpB,IAEpB,KAAKmqB,EACL,KAAKC,EACL,KAAKE,EACL,KAAKC,EACL,KAAKF,EACHzN,EAAO5c,EACP,GACE4c,GAAQ,EACRrJ,EAAOnB,EAAI+W,WAAWvM,SACfrJ,IAAS6W,GAAS7W,IAAS4W,GAAW5W,IAAS+W,GAAO/W,IAASgX,GAAMhX,IAAS8W,GACvFkB,EAAe,CAAC,QAASnZ,EAAIhU,MAAM4B,EAAK4c,IACxC5c,EAAM4c,EAAO,EACb,MAEF,KAAK4N,EACL,KAAKC,EACL,KAAKG,EACL,KAAKC,EACL,KAAKG,EACL,KAAKF,EACL,KAAKH,EACH,IAAIyB,EAAc72B,OAAO82B,aAAa9Y,GACtCgY,EAAe,CAACa,EAAaA,EAAapsB,GAC1C,MAEF,KAAK0qB,EAGH,GAFAxN,EAAO5X,EAAOnM,OAASmM,EAAO9G,MAAM,GAAK,GACzCxI,EAAKoc,EAAI+W,WAAWnpB,EAAM,GACb,QAATkd,GAAkBlnB,IAAO+zB,GAAgB/zB,IAAOg0B,GAAgBh0B,IAAOo0B,GAASp0B,IAAOm0B,GAAWn0B,IAAOs0B,GAAOt0B,IAAOq0B,GAAQr0B,IAAOu0B,EAAI,CAC5I3N,EAAO5c,EACP,EAAG,CAGD,GAFAwrB,GAAU,GAEO,KADjB5O,EAAOxK,EAAIjU,QAAQ,IAAKye,EAAO,IACd,CACf,GAAIsJ,GAAUiG,EAAgB,CAC5BvP,EAAO5c,EACP,MAEA6rB,EAAS,UAE3B,CAEc,IADAJ,EAAY7O,EACLxK,EAAI+W,WAAWsC,EAAY,KAAOxB,GACvCwB,GAAa,EACbD,GAAWA,QAENA,GACTD,EAAe,CAAC,WAAYnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GAC3D5c,EAAM4c,OAENA,EAAOxK,EAAIjU,QAAQ,IAAK6B,EAAM,GAC9B6nB,EAAUzV,EAAIhU,MAAM4B,EAAK4c,EAAO,IACnB,IAATA,GAAewO,EAAeptB,KAAK6pB,GACrC0D,EAAe,CAAC,IAAK,IAAKvrB,IAE1BurB,EAAe,CAAC,WAAY1D,EAAS7nB,EAAK4c,GAC1C5c,EAAM4c,GAGV,MAEF,KAAKmN,EACL,KAAKC,EACHsB,EAAQ/X,IAASwW,EAAe,IAAM,IACtCnN,EAAO5c,EACP,EAAG,CAGD,GAFAwrB,GAAU,GAEO,KADjB5O,EAAOxK,EAAIjU,QAAQmtB,EAAO1O,EAAO,IAChB,CACf,GAAIsJ,GAAUiG,EAAgB,CAC5BvP,EAAO5c,EAAM,EACb,MAEA6rB,EAAS,SAEzB,CAEY,IADAJ,EAAY7O,EACLxK,EAAI+W,WAAWsC,EAAY,KAAOxB,GACvCwB,GAAa,EACbD,GAAWA,QAENA,GACTD,EAAe,CAAC,SAAUnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GACzD5c,EAAM4c,EACN,MAEF,KAAKqO,EACHC,EAAUoB,UAAYtsB,EAAM,EAC5BkrB,EAAUltB,KAAKoU,GAEbwK,EAD0B,IAAxBsO,EAAUoB,UACLla,EAAIjZ,OAAS,EAEb+xB,EAAUoB,UAAY,EAE/Bf,EAAe,CAAC,UAAWnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GAC1D5c,EAAM4c,EACN,MAEF,KAAKqN,EAGH,IAFArN,EAAO5c,EACP6mB,GAAS,EACFzU,EAAI+W,WAAWvM,EAAO,KAAOqN,GAClCrN,GAAQ,EACRiK,GAAUA,EAGZ,GADAtT,EAAOnB,EAAI+W,WAAWvM,EAAO,GACzBiK,GAAUtT,IAAS2W,GAAS3W,IAAS6W,GAAS7W,IAAS4W,GAAW5W,IAAS+W,GAAO/W,IAASgX,GAAMhX,IAAS8W,IAC5GzN,GAAQ,EACJyO,EAAcrtB,KAAKoU,EAAI1R,OAAOkc,KAAQ,CACxC,KAAOyO,EAAcrtB,KAAKoU,EAAI1R,OAAOkc,EAAO,KAC1CA,GAAQ,EAENxK,EAAI+W,WAAWvM,EAAO,KAAOwN,IAC/BxN,GAAQ,EAExB,CAEU2O,EAAe,CAAC,OAAQnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GACvD5c,EAAM4c,EACN,MAEF,QACMrJ,IAAS2W,GAAS9X,EAAI+W,WAAWnpB,EAAM,KAAO+qB,GAEnC,KADbnO,EAAOxK,EAAIjU,QAAQ,KAAM6B,EAAM,GAAK,KAE9BkmB,GAAUiG,EACZvP,EAAOxK,EAAIjZ,OAEX0yB,EAAS,YAGbN,EAAe,CAAC,UAAWnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GAC1D5c,EAAM4c,IAENuO,EAAYmB,UAAYtsB,EAAM,EAC9BmrB,EAAYntB,KAAKoU,GAEfwK,EAD4B,IAA1BuO,EAAYmB,UACPla,EAAIjZ,OAAS,EAEbgyB,EAAYmB,UAAY,EAEjCf,EAAe,CAAC,OAAQnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GACvDtX,EAAO9L,KAAK+xB,GACZvrB,EAAM4c,GAMZ,OADA5c,IACOurB,CAzJY,CA0JzB,EAQMlQ,SA7KF,WACE,OAAOrb,CACb,EA6KG,EACMkZ,EACT,CAGA,SAASqT,KACP,GAAIlT,GAAqB,OAAOD,GAChCC,GAAsB,EACtB,IAAIuF,EAASyC,KACT9X,EAAUgV,KACVE,EAAcD,KACdM,EAAOmH,KACPlH,EAAOgI,KACPyF,EAAY1C,KACV2C,EAAwB,CAC5BC,OAAO,EACPpG,OAAO,GAqgBT,OADAlN,GA3fA,MACEtiB,WAAAA,CAAYmnB,GACV9jB,KAAK2hB,MAAQmC,EACb9jB,KAAK+b,KAAO,IAAI4I,EAChB3kB,KAAKssB,QAAUtsB,KAAK+b,KACpB/b,KAAKwyB,OAAS,GACdxyB,KAAKka,WAAY,EACjBla,KAAKyyB,kBACLzyB,KAAK+b,KAAKlf,OAAS,CAAE8kB,MAAOmC,EAAQxL,MAAO,CAAEhB,OAAQ,EAAGD,KAAM,EAAG8J,OAAQ,GAC/E,CACI9G,MAAAA,CAAOwX,GACL,IAMIjwB,EACAmhB,EACA2P,EARAzxB,EAAQ,IAAIwjB,EAChBxjB,EAAMnE,KAAO+0B,EAAM,GAAG5tB,MAAM,GACT,KAAfhD,EAAMnE,MACRkD,KAAK2yB,cAAc1xB,EAAO4wB,GAE5B7xB,KAAK4yB,KAAK3xB,EAAO4wB,EAAM,IAQvB,IAJA,IAAI1W,GAAO,EACPlR,GAAO,EACPqQ,EAAS,GACTuY,EAAW,IACP7yB,KAAKqyB,UAAUP,aAAa,CAUlC,GAPa,OADblwB,GADAiwB,EAAQ7xB,KAAKqyB,UAAUN,aACV,KACgB,MAATnwB,EAClBixB,EAASxzB,KAAc,MAATuC,EAAe,IAAM,KACjB,MAATA,GAAgBixB,EAAS7zB,OAAS,EAC3C6zB,EAASxzB,KAAK,KACLuC,IAASixB,EAASA,EAAS7zB,OAAS,IAC7C6zB,EAASxuB,MAEa,IAApBwuB,EAAS7zB,OAAc,CACzB,GAAa,MAAT4C,EAAc,CAChBX,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YAAYjB,EAAM,IAC1C5wB,EAAMpE,OAAO2b,IAAI2I,SACjBnhB,KAAKka,WAAY,EACjB,KACZ,CAAA,GAA8B,MAATtY,EAAc,CACvBqI,GAAO,EACP,KACZ,CAAA,GAA8B,MAATrI,EAAc,CACvB,GAAI0Y,EAAOtb,OAAS,EAAG,CAGrB,IADA+jB,EAAOzI,EADPoY,EAAQpY,EAAOtb,OAAS,GAEjB+jB,GAAoB,UAAZA,EAAK,IAClBA,EAAOzI,IAASoY,GAEd3P,IACF9hB,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YAAY/P,EAAK,IAAMA,EAAK,IACpD9hB,EAAMpE,OAAO2b,IAAI2I,SAEjC,CACYnhB,KAAKwY,IAAIqZ,GACT,MAEAvX,EAAOjb,KAAKwyB,QAGdvX,EAAOjb,KAAKwyB,GAEd,GAAI7xB,KAAKqyB,UAAUP,YAAa,CAC9B3W,GAAO,EACP,KACV,CACA,CACMla,EAAMuZ,KAAKI,QAAU5a,KAAK+yB,yBAAyBzY,GAC/CA,EAAOtb,QACTiC,EAAMuZ,KAAKC,UAAYza,KAAKgzB,2BAA2B1Y,GACvDta,KAAK+a,IAAI9Z,EAAO,SAAUqZ,GACtBa,IACF0W,EAAQvX,EAAOA,EAAOtb,OAAS,GAC/BiC,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YAAYjB,EAAM,IAAMA,EAAM,IACtD5wB,EAAMpE,OAAO2b,IAAI2I,SACjBnhB,KAAKwyB,OAASvxB,EAAMuZ,KAAKI,QACzB3Z,EAAMuZ,KAAKI,QAAU,MAGvB3Z,EAAMuZ,KAAKC,UAAY,GACvBxZ,EAAMqZ,OAAS,IAEbrQ,IACFhJ,EAAMyZ,MAAQ,GACd1a,KAAKssB,QAAUrrB,EAEvB,CACIgyB,oBAAAA,CAAqBC,GACnB,IAAIrZ,EAAQ7Z,KAAK6Z,MAAMqZ,GACvB,IAAc,IAAVrZ,EAAJ,CAGA,IAFA,IACIgY,EADAsB,EAAU,EAELpS,EAAIlH,EAAQ,EAAGkH,GAAK,IAEV,WADjB8Q,EAAQqB,EAAOnS,IACL,IAEQ,KADhBoS,GAAW,IAHiBpS,KAOhC,MAAM/gB,KAAK2hB,MAAMjjB,MACf,mBACa,SAAbmzB,EAAM,GAAgBA,EAAM,GAAK,EAAIA,EAAM,GAZxB,CAc3B,CACIhY,KAAAA,CAAMqZ,GACJ,IACInQ,EAAM8O,EAAOjwB,EADbixB,EAAW,EAEf,IAAA,IAAUvpB,EAAI7H,KAAYyxB,EAAOE,UAAW,CAS1C,GANa,OADbxxB,GADAiwB,EAAQpwB,GACK,MAEXoxB,GAAY,GAED,MAATjxB,IACFixB,GAAY,GAEG,IAAbA,GAA2B,MAATjxB,EAAc,CAClC,GAAKmhB,EAEf,IAAiC,SAAZA,EAAK,IAA6B,WAAZA,EAAK,GACpC,SAEA,OAAOzZ,CACnB,CALYtJ,KAAKqzB,YAAYxB,EAM7B,CACQ9O,EAAO8O,CACf,CACM,OAAO,CACb,CACI1hB,OAAAA,CAAQ0hB,GACN,IAAI5wB,EAAQ,IAAImO,EAChBpP,KAAK4yB,KAAK3xB,EAAO4wB,EAAM,IACvB5wB,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YAAYjB,EAAM,IAAMA,EAAM,IACtD5wB,EAAMpE,OAAO2b,IAAI2I,SACjB,IAAIrf,EAAO+vB,EAAM,GAAG5tB,MAAM,GAAK,GAC/B,GAAI,QAAQJ,KAAK/B,GACfb,EAAMa,KAAO,GACbb,EAAMuZ,KAAKc,KAAOxZ,EAClBb,EAAMuZ,KAAKe,MAAQ,OACd,CACL,IAAIxY,EAAQjB,EAAKiB,MAAM,wBACvB9B,EAAMa,KAAOiB,EAAM,GACnB9B,EAAMuZ,KAAKc,KAAOvY,EAAM,GACxB9B,EAAMuZ,KAAKe,MAAQxY,EAAM,EACjC,CACA,CACI0vB,eAAAA,GACEzyB,KAAKqyB,UAAYA,EAAUryB,KAAK2hB,MACtC,CACInG,IAAAA,CAAK0X,EAAQI,GACX,IAAIryB,EAAQ,IAAIqjB,EAChBtkB,KAAK4yB,KAAK3xB,EAAOiyB,EAAO,GAAG,IAC3B,IAuBIrB,EAvBA1W,EAAO+X,EAAOA,EAAOl0B,OAAS,GASlC,IARgB,MAAZmc,EAAK,KACPnb,KAAKka,WAAY,EACjBgZ,EAAO7uB,OAETpD,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YACtB3X,EAAK,IAAMA,EAAK,IAtKtB,SAA8B+X,GAC5B,IAAA,IAAS5pB,EAAK4pB,EAAOl0B,OAAS,EAAGsK,GAAM,EAAGA,IAAM,CAC9C,IAAIuoB,EAAQqB,EAAO5pB,GACfzD,EAAMgsB,EAAM,IAAMA,EAAM,GAC5B,GAAIhsB,EAAK,OAAOA,CACtB,CACA,CAgK8B0tB,CAAqBL,IAE7CjyB,EAAMpE,OAAO2b,IAAI2I,SACO,SAAjB+R,EAAO,GAAG,IACO,IAAlBA,EAAOl0B,QAAcgB,KAAKwzB,YAAYN,GAC1CjyB,EAAMuZ,KAAKa,QAAU6X,EAAOR,QAAQ,GAItC,IAFAzxB,EAAMpE,OAAOyb,MAAQtY,KAAK8yB,YAAYI,EAAO,GAAG,IAChDjyB,EAAMya,KAAO,GACNwX,EAAOl0B,QAAQ,CACpB,IAAI4C,EAAOsxB,EAAO,GAAG,GACrB,GAAa,MAATtxB,GAAyB,UAATA,GAA6B,YAATA,EACtC,MAEFX,EAAMya,MAAQwX,EAAOR,QAAQ,EACrC,CAGM,IAFAzxB,EAAMuZ,KAAKI,QAAU,GAEdsY,EAAOl0B,QAAQ,CAEpB,GAAiB,OADjB6yB,EAAQqB,EAAOR,SACL,GAAY,CACpBzxB,EAAMuZ,KAAKI,SAAWiX,EAAM,GAC5B,MAEiB,SAAbA,EAAM,IAAiB,KAAKhuB,KAAKguB,EAAM,KACzC7xB,KAAKwzB,YAAY,CAAC3B,IAEpB5wB,EAAMuZ,KAAKI,SAAWiX,EAAM,EAEtC,CAC4B,MAAlB5wB,EAAMya,KAAK,IAAgC,MAAlBza,EAAMya,KAAK,KACtCza,EAAMuZ,KAAKa,QAAUpa,EAAMya,KAAK,GAChCza,EAAMya,KAAOza,EAAMya,KAAKzX,MAAM,IAIhC,IAFA,IACIwe,EADAgR,EAAc,GAEXP,EAAOl0B,SAEC,WADbyjB,EAAOyQ,EAAO,GAAG,KACgB,YAATzQ,IACxBgR,EAAYp0B,KAAK6zB,EAAOR,SAE1B1yB,KAAK0zB,wBAAwBR,GAC7B,IAAA,IAAS5pB,EAAK4pB,EAAOl0B,OAAS,EAAGsK,GAAM,EAAGA,IAAM,CAE9C,GAA+B,gBAD/BuoB,EAAQqB,EAAO5pB,IACL,GAAGtH,cAAgC,CAC3Cf,EAAM0a,WAAY,EAClB,IAAIF,EAASzb,KAAK2zB,WAAWT,EAAQ5pB,GAEtB,iBADfmS,EAASzb,KAAK4zB,cAAcV,GAAUzX,KACRxa,EAAMuZ,KAAKmB,UAAYF,GACrD,KACD,CAAA,GAAqC,cAA3BoW,EAAM,GAAG7vB,cAA+B,CAGjD,IAFA,IAAI6xB,EAAQX,EAAOjvB,MAAM,GACrB/B,EAAM,GACD6e,EAAIzX,EAAIyX,EAAI,EAAGA,IAAK,CAC3B,IAAInf,EAAOiyB,EAAM9S,GAAG,GACpB,GAAI7e,EAAIiD,OAAOO,WAAW,MAAiB,UAAT9D,EAChC,MAEFM,EAAM2xB,EAAMxvB,MAAM,GAAKnC,CACnC,CACcA,EAAIiD,OAAOO,WAAW,OACxBzE,EAAM0a,WAAY,EAClB1a,EAAMuZ,KAAKmB,UAAYzZ,EACvBgxB,EAASW,EAErB,CACQ,GAAiB,UAAbhC,EAAM,IAA+B,YAAbA,EAAM,GAChC,KAEV,CACM,IAAIiC,EAAUZ,EAAO9nB,MAAM9B,GAAiB,UAAVA,EAAG,IAA4B,YAAVA,EAAG,KACtDwqB,IACF7yB,EAAMuZ,KAAKI,SAAW6Y,EAAY/a,KAAKpP,GAAOA,EAAG,KAAI/K,KAAK,IAC1Dk1B,EAAc,IAEhBzzB,KAAK+a,IAAI9Z,EAAO,QAASwyB,EAAY3vB,OAAOovB,GAASI,GACjDryB,EAAMpJ,MAAMqC,SAAS,OAASo5B,GAChCtzB,KAAKizB,qBAAqBC,EAElC,CACIG,WAAAA,CAAYxB,GACV,MAAM7xB,KAAK2hB,MAAMjjB,MACf,eACA,CAAEyiB,OAAQ0Q,EAAM,IAChB,CAAE1Q,OAAQ0Q,EAAM,GAAKA,EAAM,GAAG7yB,QAEtC,CACI+0B,SAAAA,CAAUlC,GACR,IAAI5wB,EAAQ,IAAI2jB,EAChB5kB,KAAK4yB,KAAK3xB,EAAO4wB,EAAM,IACvB5wB,EAAM+kB,SAAW,GACjB/kB,EAAMuZ,KAAKI,QAAU,GACrB5a,KAAKssB,QAAUrrB,CACrB,CACIuX,GAAAA,CAAIqZ,GACE7xB,KAAKssB,QAAQ5R,OAAS1a,KAAKssB,QAAQ5R,MAAM1b,SAC3CgB,KAAKssB,QAAQ9R,KAAKN,UAAYla,KAAKka,WAErCla,KAAKka,WAAY,EACjBla,KAAKssB,QAAQ9R,KAAKjB,OAASvZ,KAAKssB,QAAQ9R,KAAKjB,OAAS,IAAMvZ,KAAKwyB,OACjExyB,KAAKwyB,OAAS,GACVxyB,KAAKssB,QAAQ7d,QACfzO,KAAKssB,QAAQzvB,OAAO2b,IAAMxY,KAAK8yB,YAAYjB,EAAM,IACjD7xB,KAAKssB,QAAQzvB,OAAO2b,IAAI2I,SACxBnhB,KAAKssB,QAAUtsB,KAAKssB,QAAQ7d,QAE5BzO,KAAKg0B,gBAAgBnC,EAE7B,CACIoC,OAAAA,GACMj0B,KAAKssB,QAAQ7d,QAAQzO,KAAKk0B,gBAC1Bl0B,KAAKssB,QAAQ5R,OAAS1a,KAAKssB,QAAQ5R,MAAM1b,SAC3CgB,KAAKssB,QAAQ9R,KAAKN,UAAYla,KAAKka,WAErCla,KAAKssB,QAAQ9R,KAAKjB,OAASvZ,KAAKssB,QAAQ9R,KAAKjB,OAAS,IAAMvZ,KAAKwyB,OACjExyB,KAAK+b,KAAKlf,OAAO2b,IAAMxY,KAAK8yB,YAAY9yB,KAAKqyB,UAAUnR,WAC7D,CACIiT,aAAAA,CAActC,GAEZ,GADA7xB,KAAKwyB,QAAUX,EAAM,GACjB7xB,KAAKssB,QAAQ5R,MAAO,CACtB,IAAIqI,EAAO/iB,KAAKssB,QAAQ5R,MAAM1a,KAAKssB,QAAQ5R,MAAM1b,OAAS,GACtD+jB,GAAsB,SAAdA,EAAKnhB,OAAoBmhB,EAAKvI,KAAKwC,eAC7C+F,EAAKvI,KAAKwC,aAAehd,KAAKwyB,OAC9BxyB,KAAKwyB,OAAS,GAExB,CACA,CAEIM,WAAAA,CAAY3R,GACV,IAAItb,EAAM7F,KAAK2hB,MAAMqJ,WAAW7J,GAChC,MAAO,CACL7J,OAAQzR,EAAIolB,IACZ5T,KAAMxR,EAAIwR,KACV8J,SAER,CACIyR,IAAAA,CAAK3xB,EAAOkgB,GACVnhB,KAAKssB,QAAQjtB,KAAK4B,GAClBA,EAAMpE,OAAS,CACb8kB,MAAO3hB,KAAK2hB,MACZrJ,MAAOtY,KAAK8yB,YAAY3R,IAE1BlgB,EAAMuZ,KAAKa,OAASrb,KAAKwyB,OACzBxyB,KAAKwyB,OAAS,GACK,YAAfvxB,EAAMW,OAAoB5B,KAAKka,WAAY,EACrD,CACIhe,KAAAA,CAAMoc,GASJ,IARA,IAAIE,GAAM,EACN5W,EAAO,KACPiY,GAAQ,EACRua,EAAU,KACVvB,EAAW,GACXS,EAAiBhb,EAAM,GAAG5S,WAAW,MACrCwtB,EAAS,GACTrB,EAAQvZ,EACLuZ,GAAO,CAGZ,GAFAjwB,EAAOiwB,EAAM,GACbqB,EAAO7zB,KAAKwyB,GACC,MAATjwB,GAAyB,MAATA,EACbwyB,IAASA,EAAUvC,GACxBgB,EAASxzB,KAAc,MAATuC,EAAe,IAAM,UAC1B0xB,GAAAA,GAAkBzZ,GAAkB,MAATjY,EAC/BwyB,IAASA,EAAUvC,GACxBgB,EAASxzB,KAAK,UACLwzB,GAAoB,IAApBA,EAAS7zB,OAAc,CAChC,GAAa,MAAT4C,EAAc,CAChB,GAAIiY,EAEF,YADA7Z,KAAKwb,KAAK0X,EAAQI,GAGlB,KAEd,CAAA,GAA8B,MAAT1xB,EAET,YADA5B,KAAK+c,KAAKmW,GAEtB,GAA8B,MAATtxB,EAAc,CACvB5B,KAAKqyB,UAAUT,KAAKsB,EAAO7uB,OAC3BmU,GAAM,EACN,KACZ,CAA8B,MAAT5W,IACTiY,GAAQ,EAEpB,MAAmBjY,IAASixB,EAASA,EAAS7zB,OAAS,KAC7C6zB,EAASxuB,MACe,IAApBwuB,EAAS7zB,SAAco1B,EAAU,OAEvCvC,EAAQ7xB,KAAKqyB,UAAUN,WAC/B,CAGM,GAFI/xB,KAAKqyB,UAAUP,cAAatZ,GAAM,GAClCqa,EAAS7zB,OAAS,GAAGgB,KAAKq0B,gBAAgBD,GAC1C5b,GAAOqB,EAAO,CAChB,IAAKyZ,EACH,KAAOJ,EAAOl0B,SAEE,WADd6yB,EAAQqB,EAAOA,EAAOl0B,OAAS,GAAG,KACC,YAAV6yB,IACzB7xB,KAAKqyB,UAAUT,KAAKsB,EAAO7uB,OAG/BrE,KAAKwb,KAAK0X,EAAQI,QAElBtzB,KAAKwzB,YAAYN,EAEzB,CACIxO,KAAAA,GAEE,IADA,IAAImN,GACI7xB,KAAKqyB,UAAUP,aAErB,QADAD,EAAQ7xB,KAAKqyB,UAAUN,aACT,IACZ,IAAK,QACH/xB,KAAKwyB,QAAUX,EAAM,GACrB,MACF,IAAK,IACH7xB,KAAKm0B,cAActC,GACnB,MACF,IAAK,IACH7xB,KAAKwY,IAAIqZ,GACT,MACF,IAAK,UACH7xB,KAAKmQ,QAAQ0hB,GACb,MACF,IAAK,UACH7xB,KAAKqa,OAAOwX,GACZ,MACF,IAAK,IACH7xB,KAAK+zB,UAAUlC,GACf,MACF,QACE7xB,KAAK9D,MAAM21B,GAIjB7xB,KAAKi0B,SACX,CACIP,uBAAAA,GAA0B,CAE1B3Y,GAAAA,CAAI9Z,EAAOya,EAAMwX,EAAQI,GAMvB,IALA,IAAIzB,EAAOjwB,EAIP6gB,EAAMM,EAHN/jB,EAASk0B,EAAOl0B,OAChBnH,EAAQ,GACRy8B,GAAQ,EAEHhrB,EAAK,EAAGA,EAAKtK,EAAQsK,GAAM,EAGrB,WADb1H,GADAiwB,EAAQqB,EAAO5pB,IACF,KACWA,IAAOtK,EAAS,GAAMs0B,EAE1B,YAAT1xB,GACTmhB,EAAOmQ,EAAO5pB,EAAK,GAAK4pB,EAAO5pB,EAAK,GAAG,GAAK,QAC5CmZ,EAAOyQ,EAAO5pB,EAAK,GAAK4pB,EAAO5pB,EAAK,GAAG,GAAK,QACvCgpB,EAAsBvP,IAAUuP,EAAsB7P,IACjC,MAApB5qB,EAAMoM,OAAQ,GAMlBqwB,GAAQ,EAHNz8B,GAASg6B,EAAM,IAMnBh6B,GAASg6B,EAAM,GAdfyC,GAAQ,EAiBZ,IAAKA,EAAO,CACV,IAAIvZ,EAAMmY,EAAOqB,QAAO,CAACC,EAAKlrB,IAAOkrB,EAAMlrB,EAAG,IAAI,IAClDrI,EAAMuZ,KAAKkB,GAAQ,CAAEX,MAAKljB,QAClC,CACMoJ,EAAMya,GAAQ7jB,CACpB,CACIklB,IAAAA,CAAKmW,GACHA,EAAO7uB,MACP,IAAIpD,EAAQ,IAAI2jB,EAChB5kB,KAAK4yB,KAAK3xB,EAAOiyB,EAAO,GAAG,IAC3BjyB,EAAMuZ,KAAKI,QAAU5a,KAAK+yB,yBAAyBG,GACnDlzB,KAAK+a,IAAI9Z,EAAO,WAAYiyB,GAC5BlzB,KAAKssB,QAAUrrB,CACrB,CACI8xB,wBAAAA,CAAyBG,GAGvB,IAFA,IAAIuB,EACAjC,EAAS,GACNU,EAAOl0B,SAEU,WADtBy1B,EAAgBvB,EAAOA,EAAOl0B,OAAS,GAAG,KACS,YAAlBy1B,IACjCjC,EAASU,EAAO7uB,MAAM,GAAKmuB,EAE7B,OAAOA,CACb,CAEIQ,0BAAAA,CAA2BE,GAGzB,IAFA,IAAIzQ,EACA+P,EAAS,GACNU,EAAOl0B,SAEC,WADbyjB,EAAOyQ,EAAO,GAAG,KACgB,YAATzQ,IACxB+P,GAAUU,EAAOR,QAAQ,GAE3B,OAAOF,CACb,CACIoB,aAAAA,CAAcV,GAGZ,IAFA,IACIV,EAAS,GACNU,EAAOl0B,QAEU,UADNk0B,EAAOA,EAAOl0B,OAAS,GAAG,IAE1CwzB,EAASU,EAAO7uB,MAAM,GAAKmuB,EAE7B,OAAOA,CACb,CACImB,UAAAA,CAAWT,EAAQ/0B,GAEjB,IADA,IAAImlB,EAAU,GACLha,EAAKnL,EAAMmL,EAAK4pB,EAAOl0B,OAAQsK,IACtCga,GAAW4P,EAAO5pB,GAAI,GAGxB,OADA4pB,EAAOpN,OAAO3nB,EAAM+0B,EAAOl0B,OAASb,GAC7BmlB,CACb,CACI4Q,aAAAA,GACE,IAAIruB,EAAM7F,KAAKssB,QAAQzvB,OAAOyb,MAC9B,MAAMtY,KAAK2hB,MAAMjjB,MAAM,iBAAkBmH,EAAIwR,KAAMxR,EAAIyR,OAC7D,CACI+c,eAAAA,CAAgBD,GACd,MAAMp0B,KAAK2hB,MAAMjjB,MACf,mBACA,CAAEyiB,OAAQiT,EAAQ,IAClB,CAAEjT,OAAQiT,EAAQ,GAAK,GAE/B,CACIJ,eAAAA,CAAgBnC,GACd,MAAM7xB,KAAK2hB,MAAMjjB,MACf,eACA,CAAEyiB,OAAQ0Q,EAAM,IAChB,CAAE1Q,OAAQ0Q,EAAM,GAAK,GAE7B,CACI2B,WAAAA,CAAYN,GACV,MAAMlzB,KAAK2hB,MAAMjjB,MACf,eACA,CAAEyiB,OAAQ+R,EAAO,GAAG,IACpB,CAAE/R,OAAQ+R,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAGl0B,QAE9C,CACI2zB,aAAAA,CAAc1xB,EAAO4wB,GACnB,MAAM7xB,KAAK2hB,MAAMjjB,MACf,uBACA,CAAEyiB,OAAQ0Q,EAAM,IAChB,CAAE1Q,OAAQ0Q,EAAM,GAAKA,EAAM,GAAG7yB,QAEtC,EAIA,CAGA,SAAS01B,KACP,GAAItV,GAAoB,OAAOD,GAC/BC,GAAqB,EACrB,IAAI2F,EAAYP,KACZqG,EAAQR,KACRsK,EAASvC,KACb,SAAS1N,EAAMzM,EAAKkK,GAClB,IAAI2B,EAAS,IAAI+G,EAAM5S,EAAKkK,GACxByS,EAAU,IAAID,EAAO7Q,GACzB,IACE8Q,EAAQlQ,OACT,CAAA,MAAQrd,GAYP,KAX6B,eAAzBwtB,QAAQC,IAAIC,UACE,mBAAZ1tB,EAAGvK,MAA6BqlB,GAAQA,EAAKhkB,OAC3C,WAAW0F,KAAKse,EAAKhkB,MACvBkJ,EAAG+P,SAAW,iGACL,UAAUvT,KAAKse,EAAKhkB,MAC7BkJ,EAAG+P,SAAW,iGACL,WAAWvT,KAAKse,EAAKhkB,QAC9BkJ,EAAG+P,SAAW,mGAId/P,CACZ,CACI,OAAOutB,EAAQ7Y,IACnB,CAIE,OAHAoD,GAAYuF,EACZA,EAAM7R,QAAU6R,EAChBK,EAAU6B,cAAclC,GACjBvF,EACT,CAGA,SAAS6V,KACP,GAAI1V,GAAsB,OAAOD,GACjCC,GAAuB,EACvB,MAAM2V,EACJt4B,WAAAA,CAAYmF,GAAiB,IAAXqgB,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAGvB,GAFAjT,KAAK4B,KAAO,UACZ5B,KAAK8B,KAAOA,EACRqgB,EAAK+B,MAAQ/B,EAAK+B,KAAKrnB,OAAQ,CACjC,IAAIq4B,EAAQ/S,EAAK+B,KAAK9B,QAAQD,GAC9BniB,KAAKqX,KAAO6d,EAAM5c,MAAMjB,KACxBrX,KAAKsX,OAAS4d,EAAM5c,MAAMhB,OAC1BtX,KAAK2X,QAAUud,EAAM1c,IAAInB,KACzBrX,KAAK4X,UAAYsd,EAAM1c,IAAIlB,MACnC,CACM,IAAA,IAAS6d,KAAOhT,EAAMniB,KAAKm1B,GAAOhT,EAAKgT,EAC7C,CACIl7B,QAAAA,GACE,OAAI+F,KAAKkkB,KACAlkB,KAAKkkB,KAAKxlB,MAAMsB,KAAK8B,KAAM,CAChC4gB,MAAO1iB,KAAK0iB,MACZlL,OAAQxX,KAAKwX,OACbqL,KAAM7iB,KAAK6iB,OACVzL,QAEDpX,KAAKwX,OACAxX,KAAKwX,OAAS,KAAOxX,KAAK8B,KAE5B9B,KAAK8B,IAClB,EAIE,OAFAud,GAAY4V,EACZA,EAAQpiB,QAAUoiB,EACX5V,EACT,CAGA,SAAS+V,KACP,GAAI5V,GAAqB,OAAOD,GAChCC,GAAsB,EACtB,IAAIyV,EAAUD,KACd,MAAMK,EACJ14B,WAAAA,CAAY24B,EAAYxZ,EAAOqG,GAC7BniB,KAAKu1B,UAAYD,EACjBt1B,KAAKw1B,SAAW,GAChBx1B,KAAK+b,KAAOD,EACZ9b,KAAKmiB,KAAOA,EACZniB,KAAKiY,SAAM,EACXjY,KAAK0Y,SAAM,CACjB,CACIze,QAAAA,GACE,OAAO+F,KAAKiY,GAClB,CACIvL,IAAAA,CAAK5K,GAAiB,IAAXqgB,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACXkP,EAAK3K,QACJxX,KAAKy1B,YAAcz1B,KAAKy1B,WAAWC,gBACrCvT,EAAK3K,OAASxX,KAAKy1B,WAAWC,eAGlC,IAAIC,EAAW,IAAIV,EAAQnzB,EAAMqgB,GAEjC,OADAniB,KAAKw1B,SAASn2B,KAAKs2B,GACZA,CACb,CACIC,QAAAA,GACE,OAAO51B,KAAKw1B,SAASK,QAAQvsB,GAAmB,YAAZA,EAAG1H,MAC7C,CACI,WAAI8rB,GACF,OAAO1tB,KAAKiY,GAClB,EAIE,OAFAsH,GAAW8V,EACXA,EAAOxiB,QAAUwiB,EACV9V,EACT,CAGA,SAASuW,KACP,GAAIpW,GAAuB,OAAOD,GAClCC,GAAwB,EACxB,IAAIqW,EAAU,CAAE,EAQhB,OAPAtW,GAAa,SAAmBrI,GAC1B2e,EAAQ3e,KACZ2e,EAAQ3e,IAAW,EACI,oBAAZ3K,SAA2BA,QAAQC,MAC5CD,QAAQC,KAAK0K,GAEhB,CAEH,CAGA,SAAS4e,KACP,GAAIpW,GAAyB,OAAOD,GACpCC,GAA0B,EAC1B,IAAImF,EAAYP,KACZ8C,EAAYH,KACZ8O,EAAelJ,KACfrI,EAAQgQ,KACRW,EAASD,KACTzQ,EAAOmH,KACP3sB,EAAY8d,MACZwD,QAAEA,EAAAA,GAASC,GAAOF,KAClB0V,EAAYJ,KACVK,EAAqB,CACzB9b,OAAQ,SACRlK,QAAS,UACTqL,KAAM,cACNjhB,SAAU,WACVwhB,KAAM,OACNgB,KAAM,QAEFqZ,EAAe,CACnB3R,QAAQ,EACR4R,YAAY,EACZjnB,SAAS,EACTknB,aAAa,EACbhS,aAAa,EACbiS,iBAAiB,EACjB9tB,UAAU,EACV+tB,cAAc,EACdC,MAAM,EACNC,UAAU,EACVhB,eAAe,EACfiB,SAAS,EACThS,MAAM,EACNiS,UAAU,EACVhS,MAAM,EACNiS,UAAU,GAENC,EAAe,CACnBL,MAAM,EACNf,eAAe,EACfiB,SAAS,GAELI,EAAW,EACjB,SAASC,EAAUr/B,GACjB,MAAsB,iBAARA,GAAwC,mBAAbA,EAAIs/B,IACjD,CACE,SAASC,EAAUj2B,GACjB,IAAIrJ,GAAM,EACNgK,EAAOu0B,EAAmBl1B,EAAMW,MAMpC,MALmB,SAAfX,EAAMW,KACRhK,EAAMqJ,EAAMya,KAAK1Z,cACO,WAAff,EAAMW,OACfhK,EAAMqJ,EAAMnE,KAAKkF,eAEfpK,GAAOqJ,EAAMugB,OACR,CACL5f,EACAA,EAAO,IAAMhK,EACbm/B,EACAn1B,EAAO,OACPA,EAAO,QAAUhK,GAEVA,EACF,CAACgK,EAAMA,EAAO,IAAMhK,EAAKgK,EAAO,OAAQA,EAAO,QAAUhK,GACvDqJ,EAAMugB,OACR,CAAC5f,EAAMm1B,EAAUn1B,EAAO,QAExB,CAACA,EAAMA,EAAO,OAE3B,CACE,SAASu1B,EAAQl2B,GASf,MAAO,CACLm2B,WAAY,EACZC,OATiB,aAAfp2B,EAAMW,KACC,CAAC,WAAYm1B,EAAU,gBACR,SAAf91B,EAAMW,KACN,CAAC,OAAQm1B,EAAU,YAEnBG,EAAUj2B,GAKnBmkB,SAAU,EACVlB,KAAMjjB,EACNq2B,aAAc,EACdC,SAAU,GAEhB,CACE,SAASC,EAAWv2B,GAGlB,OAFAA,EAAMwf,IAAW,EACbxf,EAAMyZ,OAAOzZ,EAAMyZ,MAAM7Z,SAASyI,GAAOkuB,EAAWluB,KACjDrI,CACX,CACE,IAAIw2B,EAAW,CAAE,EACjB,MAAMrQ,EACJzqB,WAAAA,CAAY24B,EAAYrd,EAAKkK,GAG3B,IAAIrG,EACJ,GAHA9b,KAAK03B,aAAc,EACnB13B,KAAKimB,WAAY,EAEE,iBAARhO,GAA4B,OAARA,GAA8B,SAAbA,EAAIrW,MAAgC,aAAbqW,EAAIrW,KAEhEqW,GAAAA,aAAemP,GAAcnP,aAAeod,EACrDvZ,EAAQ0b,EAAWvf,EAAI8D,MACnB9D,EAAIS,WACkB,IAAbyJ,EAAKzJ,MAAqByJ,EAAKzJ,IAAM,CAAE,GAC7CyJ,EAAKzJ,IAAI+P,SAAQtG,EAAKzJ,IAAI+P,QAAS,GACxCtG,EAAKzJ,IAAIqK,KAAO9K,EAAIS,SAEjB,CACL,IAAIkc,EAAUlQ,EACVvC,EAAKwV,SAAQ/C,EAAUzS,EAAKwV,OAAOjT,OACnCvC,EAAKyV,SAAQhD,EAAUzS,EAAKyV,QAC5BhD,EAAQlQ,QAAOkQ,EAAUA,EAAQlQ,OACrC,IACE5I,EAAQ8Y,EAAQ3c,EAAKkK,EACtB,CAAA,MAAQzjB,GACPsB,KAAKimB,WAAY,EACjBjmB,KAAKtB,MAAQA,CACvB,CACYod,IAAUA,EAAM4E,IAClBqE,EAAUmB,QAAQpK,EAE5B,MAtBQA,EAAQ0b,EAAWvf,GAuBrBjY,KAAK63B,OAAS,IAAIxC,EAAOC,EAAYxZ,EAAOqG,GAC5CniB,KAAK83B,QAAeL,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,GAAAA,CAAUM,QAASN,EAAUI,OAAQ73B,KAAK63B,SAC9D73B,KAAKg4B,QAAUh4B,KAAKu1B,UAAUyC,QAAQtf,KAAKlB,GACnB,iBAAXA,GAAuBA,EAAOmf,QACvCpP,EAAAA,EAAA,CAAA,EAAY/P,GAAWA,EAAOmf,QAAQ32B,KAAK63B,SAEpCrgB,GAGjB,CACIygB,KAAAA,GACE,OAAIj4B,KAAKtB,MAAcw5B,QAAQC,OAAOn4B,KAAKtB,OACvCsB,KAAKimB,UAAkBiS,QAAQ3N,QAAQvqB,KAAK63B,SAC3C73B,KAAKo4B,aACRp4B,KAAKo4B,WAAap4B,KAAKq4B,YAElBr4B,KAAKo4B,WAClB,CACIE,MAAMC,GACJ,OAAOv4B,KAAKi4B,QAAQK,MAAMC,EAChC,CACIC,QAAQC,GACN,OAAOz4B,KAAKi4B,QAAQhB,KAAKwB,EAAWA,EAC1C,CACIC,aAAAA,GACE,MAAM,IAAIvhB,MAAM,uDACtB,CACIwhB,WAAAA,CAAYj6B,EAAOuC,GACjB,IAAIuW,EAASxX,KAAK63B,OAAOpC,WACzB,IAGE,GAFIx0B,GAAOA,EAAMwgB,WAAW/iB,GAC5BsB,KAAKtB,MAAQA,EACM,mBAAfA,EAAM5B,MAA8B4B,EAAM8Y,QAGtD,GAAmBA,EAAOohB,gBACa,eAAzB/D,QAAQC,IAAIC,SAA2B,CACzC,IAAI8D,EAAarhB,EAAOke,cACpBoD,EAAYthB,EAAOohB,eACnBG,EAAa/4B,KAAK63B,OAAOtC,UAAUyD,QACnCvzB,EAAKqzB,EAAU/5B,MAAM,KACrBk6B,EAAIF,EAAWh6B,MAAM,MACrB0G,EAAG,KAAOwzB,EAAE,IAAMC,SAASzzB,EAAG,IAAMyzB,SAASD,EAAE,MACjDxsB,QAAQ/N,MACN,sEAAwEq6B,EAAa,SAAWF,EAAa,SAAWC,EAAY,mDAGpJ,OAdUp6B,EAAM8Y,OAASA,EAAOke,cACtBh3B,EAAMmZ,YAeT,CAAA,MAAQ/U,GACH2J,SAAWA,QAAQ/N,OAAO+N,QAAQ/N,MAAMoE,EACpD,CACM,OAAOpE,CACb,CACIy6B,eAAAA,GACEn5B,KAAKo5B,UAAY,CAAE,EACnB,IAAIl4B,EAAMA,CAACsW,EAAQ5V,EAAM8jB,KAClB1lB,KAAKo5B,UAAUx3B,KAAO5B,KAAKo5B,UAAUx3B,GAAQ,IAClD5B,KAAKo5B,UAAUx3B,GAAMvC,KAAK,CAACmY,EAAQkO,GAAG,EAExC,IAASlO,IAAAA,KAAUxX,KAAKg4B,QACtB,GAAsB,iBAAXxgB,EACT,IAAA,IAAS6hB,KAAS7hB,EAAQ,CACxB,IAAK4e,EAAaiD,IAAU,SAASx1B,KAAKw1B,GACxC,MAAM,IAAIliB,MACSkiB,iBAAAA,OAAAA,EAAY7hB,QAAAA,OAAAA,EAAOke,cAAyC,6BAAA5xB,OAAA9D,KAAKu1B,UAAUyD,QAC7F,WAEH,IAAKlC,EAAauC,GAChB,GAA6B,iBAAlB7hB,EAAO6hB,GAChB,IAASxD,IAAAA,KAAUre,EAAO6hB,GAEtBn4B,EAAIsW,EADS,MAAXqe,EACUwD,EAIVA,EAAQ,IAAMxD,EAAO7zB,cAJJwV,EAAO6hB,GAAOxD,QASH,mBAAlBre,EAAO6hB,IACvBn4B,EAAIsW,EAAQ6hB,EAAO7hB,EAAO6hB,GAG1C,CAGMr5B,KAAKs5B,YAAc9hC,OAAOiJ,KAAKT,KAAKo5B,WAAWp6B,OAAS,CAC9D,CACUq5B,QAAAA,GAAW,IAAAkB,EAAAv5B,KAAA,OAAAw5B,GAAA,YACfD,EAAK/hB,OAAS,EACd,IAAA,IAASlO,EAAK,EAAGA,EAAKiwB,EAAKvB,QAAQh5B,OAAQsK,IAAM,CAC/C,IAAIkO,EAAS+hB,EAAKvB,QAAQ1uB,GACtBmwB,EAAUF,EAAKG,UAAUliB,GAC7B,GAAIwf,EAAUyC,GACZ,UACQA,CACP,CAAA,MAAQ/6B,GACP,MAAM66B,EAAKZ,YAAYj6B,EACnC,CAEA,CAEM,GADA66B,EAAKJ,kBACDI,EAAKD,YAAa,CAEpB,IADA,IAAIxd,EAAQyd,EAAK1B,OAAO9b,MAChBD,EAAM2E,IAAU,CACtB3E,EAAM2E,IAAW,EAEjB,IADA,IAAIvc,EAAQ,CAACizB,EAAQrb,IACd5X,EAAMlF,OAAS,GAAG,CACvB,IAAIy6B,EAAUF,EAAKI,UAAUz1B,GAC7B,GAAI8yB,EAAUyC,GACZ,UACQA,CACP,CAAA,MAAQpyB,GACP,IAAIpG,EAAQiD,EAAMA,EAAMlF,OAAS,GAAGklB,KACpC,MAAMqV,EAAKZ,YAAYtxB,EAAIpG,EAC3C,CAEA,CACA,CACQ,GAAIs4B,EAAKH,UAAU1C,SAAU,CAAA,IAAAkD,EAAA,UACTC,EAARriB,GACR+hB,EAAK1B,OAAOpC,WAAaje,EACzB,IACE,GAAmB,aAAfsE,EAAMla,KAAqB,CAC7B,IAAIk4B,EAAQhe,EAAMpB,MAAMhC,KACrBqhB,GAAYF,EAAQE,EAASR,EAAKzB,iBAE/BI,QAAQ1D,IAAIsF,cAEZD,EAAQ/d,EAAOyd,EAAKzB,QAE7B,CAAA,MAAQzwB,GACP,MAAMkyB,EAAKZ,YAAYtxB,EACrC,CAAA,EAbU,IAAA,IAAUmQ,EAAQqiB,KAAYN,EAAKH,UAAU1C,eAAUkD,EAArCC,EAARriB,EAepB,CACA,CAEM,OADA+hB,EAAKtT,WAAY,EACVsT,EAAKp6B,WAAW,GAlDRq6B,EAmDrB,CACIE,SAAAA,CAAUliB,GACRxX,KAAK63B,OAAOpC,WAAaje,EACzB,IACE,GAAsB,iBAAXA,GAAuBA,EAAOif,KAAM,CAC7C,GAA8B,aAA1Bz2B,KAAK63B,OAAO9b,KAAKna,KAAqB,CACxC,IAAIk4B,EAAQ95B,KAAK63B,OAAO9b,KAAKrB,MAAMhC,KAChCoD,GAAUtE,EAAOif,KAAK3a,EAAO9b,KAAK83B,WAErC,OAAId,EAAU8C,EAAM,IACX5B,QAAQ1D,IAAIsF,GAEdA,CACnB,CACU,OAAOtiB,EAAOif,KAAKz2B,KAAK63B,OAAO9b,KAAM/b,KAAK83B,SACjC,GAAkB,mBAAXtgB,EAChB,OAAOA,EAAOxX,KAAK63B,OAAO9b,KAAM/b,KAAK63B,OAExC,CAAA,MAAQn5B,GACP,MAAMsB,KAAK24B,YAAYj6B,EAC/B,CACA,CACIS,SAAAA,GACE,GAAIa,KAAKtB,MAAO,MAAMsB,KAAKtB,MAC3B,GAAIsB,KAAK03B,YAAa,OAAO13B,KAAK63B,OAClC73B,KAAK03B,aAAc,EACnB13B,KAAKg6B,OACL,IAAI7X,EAAOniB,KAAK63B,OAAO1V,KACnBjgB,EAAM/C,EACNgjB,EAAKwV,SAAQz1B,EAAMigB,EAAKwV,OAAOx4B,WAC/BgjB,EAAK8X,cAAa/3B,EAAMigB,EAAK8X,aAC7B/3B,EAAI/C,YAAW+C,EAAMA,EAAI/C,WAC7B,IACI+L,EADM,IAAI+qB,EAAa/zB,EAAKlC,KAAK63B,OAAO9b,KAAM/b,KAAK63B,OAAO1V,MAC/CiM,WAGf,OAFApuB,KAAK63B,OAAO5f,IAAM/M,EAAK,GACvBlL,KAAK63B,OAAOnf,IAAMxN,EAAK,GAChBlL,KAAK63B,MAClB,CACImC,IAAAA,GACE,GAAIh6B,KAAKtB,MAAO,MAAMsB,KAAKtB,MAC3B,GAAIsB,KAAKimB,UAAW,OAAOjmB,KAAK63B,OAEhC,GADA73B,KAAKimB,WAAY,EACbjmB,KAAKo4B,WACP,MAAMp4B,KAAK04B,gBAEb,IAASlhB,IAAAA,KAAUxX,KAAKg4B,QAAS,CAE/B,GAAIhB,EADUh3B,KAAK05B,UAAUliB,IAE3B,MAAMxX,KAAK04B,eAErB,CAEM,GADA14B,KAAKm5B,kBACDn5B,KAAKs5B,YAAa,CAEpB,IADA,IAAIxd,EAAQ9b,KAAK63B,OAAO9b,MAChBD,EAAM2E,IACZ3E,EAAM2E,IAAW,EACjBzgB,KAAKk6B,SAASpe,GAEhB,GAAI9b,KAAKo5B,UAAU1C,SACjB,GAAmB,aAAf5a,EAAMla,KACR,IAASm4B,IAAAA,KAAWje,EAAMpB,MACxB1a,KAAKm6B,UAAUn6B,KAAKo5B,UAAU1C,SAAUqD,QAG1C/5B,KAAKm6B,UAAUn6B,KAAKo5B,UAAU1C,SAAU5a,EAGpD,CACM,OAAO9b,KAAK63B,MAClB,CACIZ,IAAAA,CAAKmD,EAAa7B,GAQhB,MAP6B,eAAzB1D,QAAQC,IAAIC,WACR,SAAU/0B,KAAKmiB,MACnB+T,EACE,4KAICl2B,KAAKi4B,QAAQhB,KAAKmD,EAAa7B,EAC5C,CACIt+B,QAAAA,GACE,OAAO+F,KAAKiY,GAClB,CACIkiB,SAAAA,CAAU5C,EAAUt2B,GAClB,IAAA,IAAUuW,EAAQqiB,KAAYtC,EAAU,CACtCv3B,KAAK63B,OAAOpC,WAAaje,EACzB,IAAIiiB,OAAAA,EACJ,IACEA,EAAUI,EAAQ54B,EAAOjB,KAAK83B,QAC/B,CAAA,MAAQzwB,GACP,MAAMrH,KAAK24B,YAAYtxB,EAAIpG,EAAMkjB,QAC3C,CACQ,GAAmB,SAAfljB,EAAMW,MAAkC,aAAfX,EAAMW,OAAwBX,EAAMwN,OAC/D,OAAO,EAET,GAAIuoB,EAAUyC,GACZ,MAAMz5B,KAAK04B,eAErB,CACA,CACIiB,SAAAA,CAAUz1B,GACR,IAAIm2B,EAASn2B,EAAMA,EAAMlF,OAAS,IAC5BklB,KAAMjjB,EAAAA,SAAOs2B,GAAa8C,EAChC,GAAmB,SAAfp5B,EAAMW,MAAkC,aAAfX,EAAMW,MAAwBX,EAAMwN,OAAjE,CAIA,GAAI8oB,EAASv4B,OAAS,GAAKq7B,EAAO/C,aAAeC,EAASv4B,OAAQ,CAChE,IAAKwY,EAAQqiB,GAAWtC,EAAS8C,EAAO/C,cACxC+C,EAAO/C,cAAgB,EACnB+C,EAAO/C,eAAiBC,EAASv4B,SACnCq7B,EAAO9C,SAAW,GAClB8C,EAAO/C,aAAe,GAExBt3B,KAAK63B,OAAOpC,WAAaje,EACzB,IACE,OAAOqiB,EAAQ54B,EAAMqhB,UAAWtiB,KAAK83B,QACtC,CAAA,MAAQzwB,GACP,MAAMrH,KAAK24B,YAAYtxB,EAAIpG,EACrC,CACA,CACM,GAAwB,IAApBo5B,EAAOjV,SAAgB,CAGzB,IAFA,IACIhK,EADAgK,EAAWiV,EAAOjV,SAEfhK,EAAQna,EAAMyZ,MAAMzZ,EAAMqkB,QAAQF,KAEvC,GADAnkB,EAAMqkB,QAAQF,IAAa,GACtBhK,EAAMqF,GAGT,OAFArF,EAAMqF,IAAW,OACjBvc,EAAM7E,KAAK83B,EAAQ/b,IAIvBif,EAAOjV,SAAW,SACXnkB,EAAMqkB,QAAQF,EAC7B,CAEM,IADA,IAAIiS,EAASgD,EAAOhD,OACbgD,EAAOjD,WAAaC,EAAOr4B,QAAQ,CACxC,IAAIq6B,EAAQhC,EAAOgD,EAAOjD,YAE1B,GADAiD,EAAOjD,YAAc,EACjBiC,IAAUtC,EAKZ,YAJI91B,EAAMyZ,OAASzZ,EAAMyZ,MAAM1b,SAC7BiC,EAAMwf,IAAW,EACjB4Z,EAAOjV,SAAWnkB,EAAMokB,gBAGjB,GAAArlB,KAAKo5B,UAAUC,GAExB,YADAgB,EAAO9C,SAAWv3B,KAAKo5B,UAAUC,GAG3C,CACMn1B,EAAMG,KA5CZ,MAFQH,EAAMG,KA+Cd,CACI61B,QAAAA,CAASj5B,GACPA,EAAMwf,IAAW,EACjB,IAAI4W,EAASH,EAAUj2B,GACvB,IAAA,IAASo4B,KAAShC,EAChB,GAAIgC,IAAUtC,EACR91B,EAAMyZ,OACRzZ,EAAMikB,MAAM9J,IACLA,EAAMqF,IAAUzgB,KAAKk6B,SAAS9e,EAAK,QAGvC,CACL,IAAImc,EAAWv3B,KAAKo5B,UAAUC,GAC9B,GAAI9B,GACEv3B,KAAKm6B,UAAU5C,EAAUt2B,EAAMqhB,WAAY,MAE3D,CAEA,CACIsT,QAAAA,GACE,OAAO51B,KAAKg6B,OAAOpE,UACzB,CACI,WAAIlI,GACF,OAAO1tB,KAAKb,YAAYuuB,OAC9B,CACI,OAAIzV,GACF,OAAOjY,KAAKb,YAAY8Y,GAC9B,CACI,OAAIS,GACF,OAAO1Y,KAAKb,YAAYuZ,GAC9B,CACI,YAAI8c,GACF,OAAOx1B,KAAKg6B,OAAOxE,QACzB,CACI,QAAIrT,GACF,OAAOniB,KAAK63B,OAAO1V,IACzB,CACI,aAAIoT,GACF,OAAOv1B,KAAK63B,OAAOtC,SACzB,CACI,QAAIxZ,GACF,OAAO/b,KAAKg6B,OAAOje,IACzB,CACI,IAAKlF,OAAOC,eACV,MAAO,YACb,EASE,OAPAsQ,EAAWkT,gBAAmBzT,IAC5B4Q,EAAW5Q,CAAAA,EAEblH,GAAeyH,EACfA,EAAWvU,QAAUuU,EACrBzC,EAAK8C,mBAAmBL,GACxBE,EAAUG,mBAAmBL,GACtBzH,EACT,CAuHA,SAAS4a,KACP,GAAIva,GAAwB,OAAOD,GACnCC,GAAyB,EACzB,IAAIsH,EAAYH,KACZC,EAAa4O,KACbwE,EAzHN,WACE,GAAI1a,GAA2B,OAAOD,GACtCC,GAA4B,EAC5B,IAAImW,EAAelJ,KACfrI,EAAQgQ,KACNW,EAASD,KACXj2B,EAAY8d,KACZiZ,EAAYJ,KAChB,MAAM0E,EACJ79B,WAAAA,CAAY24B,EAAYrd,EAAKkK,GAO3B,IAAIrG,EANJ7D,EAAMA,EAAIhe,WACV+F,KAAK03B,aAAc,EACnB13B,KAAKy6B,WAAanF,EAClBt1B,KAAK06B,KAAOziB,EACZjY,KAAK26B,MAAQxY,EACbniB,KAAK46B,UAAO,EAEZ,IAAI14B,EAAM/C,EACVa,KAAK63B,OAAS,IAAIxC,EAAOr1B,KAAKy6B,WAAY3e,EAAO9b,KAAK26B,OACtD36B,KAAK63B,OAAO5f,IAAMA,EAClB,IAAI4iB,EAAQ76B,KACZxI,OAAOC,eAAeuI,KAAK63B,OAAQ,OAAQ,CACzC79B,IAAM,IACG6gC,EAAM9e,OAGjB,IAAIrD,EAAM,IAAIud,EAAa/zB,EAAK4Z,EAAO9b,KAAK26B,MAAO1iB,GACnD,GAAIS,EAAIgR,QAAS,CACf,IAAKoR,EAAcC,GAAgBriB,EAAI0V,WACnC0M,IACF96B,KAAK63B,OAAO5f,IAAM6iB,GAEhBC,IACF/6B,KAAK63B,OAAOnf,IAAMqiB,QAGpBriB,EAAIyV,kBACJnuB,KAAK63B,OAAO5f,IAAMS,EAAIT,GAE9B,CACIggB,KAAAA,GACE,OAAIj4B,KAAKtB,MAAcw5B,QAAQC,OAAOn4B,KAAKtB,OACpCw5B,QAAQ3N,QAAQvqB,KAAK63B,OAClC,CACIS,MAAMC,GACJ,OAAOv4B,KAAKi4B,QAAQK,MAAMC,EAChC,CACIC,QAAQC,GACN,OAAOz4B,KAAKi4B,QAAQhB,KAAKwB,EAAWA,EAC1C,CACIuB,IAAAA,GACE,GAAIh6B,KAAKtB,MAAO,MAAMsB,KAAKtB,MAC3B,OAAOsB,KAAK63B,MAClB,CACIZ,IAAAA,CAAKmD,EAAa7B,GAQhB,MAP6B,eAAzB1D,QAAQC,IAAIC,WACR,SAAU/0B,KAAK26B,OACnBzE,EACE,4KAICl2B,KAAKi4B,QAAQhB,KAAKmD,EAAa7B,EAC5C,CACIt+B,QAAAA,GACE,OAAO+F,KAAK06B,IAClB,CACI9E,QAAAA,GACE,MAAO,EACb,CACI,WAAIlI,GACF,OAAO1tB,KAAK63B,OAAO5f,GACzB,CACI,OAAIA,GACF,OAAOjY,KAAK63B,OAAO5f,GACzB,CACI,OAAIS,GACF,OAAO1Y,KAAK63B,OAAOnf,GACzB,CACI,YAAI8c,GACF,MAAO,EACb,CACI,QAAIrT,GACF,OAAOniB,KAAK63B,OAAO1V,IACzB,CACI,aAAIoT,GACF,OAAOv1B,KAAK63B,OAAOtC,SACzB,CACI,QAAIxZ,GACF,GAAI/b,KAAKg7B,MACP,OAAOh7B,KAAKg7B,MAEd,IAAIlf,EACA8Y,EAAUlQ,EACd,IACE5I,EAAQ8Y,EAAQ50B,KAAK06B,KAAM16B,KAAK26B,MACjC,CAAA,MAAQj8B,GACPsB,KAAKtB,MAAQA,CACrB,CACM,GAAIsB,KAAKtB,MACP,MAAMsB,KAAKtB,MAGX,OADAsB,KAAKg7B,MAAQlf,EACNA,CAEf,CACI,IAAKjF,OAAOC,eACV,MAAO,cACb,EAIE,OAFA+I,GAAiB2a,EACjBA,EAAa3nB,QAAU2nB,EAChB3a,EACT,CAQqBob,GACftW,EAAOmH,KACX,MAAMzE,EACJ1qB,WAAAA,GAA0B,IAAdq7B,EAAU/kB,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,GACpBjT,KAAKg5B,QAAU,QACfh5B,KAAKg4B,QAAUh4B,KAAKilB,UAAU+S,EACpC,CACI/S,SAAAA,CAAU+S,GACR,IAAIkD,EAAa,GACjB,IAAA,IAAS5xB,KAAM0uB,EAMb,IALmB,IAAf1uB,EAAGyuB,QACLzuB,EAAKA,IACIA,EAAGyuB,UACZzuB,EAAKA,EAAGyuB,SAEQ,iBAAPzuB,GAAmBpL,MAAM4iB,QAAQxX,EAAG0uB,SAC7CkD,EAAaA,EAAWp3B,OAAOwF,EAAG0uB,cACnC,GAAwB,iBAAP1uB,GAAmBA,EAAGosB,cACtCwF,EAAW77B,KAAKiK,QACP,GAAc,mBAAPA,EAChB4xB,EAAW77B,KAAKiK,OAC1B,IAAiC,iBAAPA,IAAoBA,EAAGob,QAASpb,EAAGnK,UAOnD,MAAM,IAAIgY,MAAM7N,EAAK,4BANrB,GAA6B,eAAzBurB,QAAQC,IAAIC,SACd,MAAM,IAAI5d,MACR,iKAKd,CAEM,OAAO+jB,CACb,CACIrG,OAAAA,CAAQ5c,GAAgB,IAAXkK,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAClB,OAAKjT,KAAKg4B,QAAQh5B,QAAWmjB,EAAKyV,QAAWzV,EAAK8X,aAAgB9X,EAAKwV,OAG9D,IAAIvQ,EAAWpnB,KAAMiY,EAAKkK,GAF1B,IAAIqY,EAAax6B,KAAMiY,EAAKkK,EAI3C,CACIgZ,GAAAA,CAAI3jB,GAEF,OADAxX,KAAKg4B,QAAUh4B,KAAKg4B,QAAQl0B,OAAO9D,KAAKilB,UAAU,CAACzN,KAC5CxX,IACb,EAME,OAJA+f,GAAcsH,EACdA,EAAUxU,QAAUwU,EACpB1C,EAAK+C,kBAAkBL,GACvBC,EAAUI,kBAAkBL,GACrBtH,EACT,CAGA,SAASqb,KACP,GAAIlb,GAAsB,OAAOD,GACjCC,GAAuB,EACvB,IAAIuE,EAASyC,KACT9X,EAAUgV,KACVW,EAAYP,KACZtN,EAAiBH,KACjBuN,EAAcD,KACdiD,EAAYH,KACZkU,EA72DN,WACE,GAAIzc,GAAuB,OAAOD,GAClCC,GAAwB,EACxB,IAAI6F,EAASyC,KACT9X,EAAUgV,KACVE,EAAcD,KACdwG,EAAQR,KACR9B,EAAcN,KACdtD,EAAOmH,KACPlH,EAAOgI,KACX,SAASyO,EAASzP,EAAMnI,GACtB,GAAIvlB,MAAM4iB,QAAQ8K,GAAO,OAAOA,EAAKlT,KAAK7c,GAAOw/B,EAASx/B,KAC1D,IAAM4nB,OAAQ6X,GAA2B1P,EAAbvK,EAAauK,EAAAA,EAAAA,GACzC,GAAI0P,EAEF,IAAA,IAASxX,KADTL,EAAS,GACU6X,GAAW,CAC5B,IAAIC,EAAqBzX,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,GAAAA,CAAQlN,UAAWiU,EAAMpxB,YAC9C8hC,EAAc7iB,MAChB6iB,EAAc7iB,WACT6iB,EAAc7iB,KAAAA,GAAAA,CACjB9B,UAAW2R,EAAY9uB,aAG3BgqB,EAAOpkB,KAAKk8B,EACpB,CAKI,GAHIla,EAAS3G,QACX2G,EAAS3G,MAAQkR,EAAKlR,MAAMhC,KAAK7c,GAAOw/B,EAASx/B,EAAI4nB,MAEnDpC,EAASxkB,OAAQ,CACnB,IAAA2+B,EAA6Bna,EAASxkB,QAAlCgnB,QAAEA,GAAoB2X,EAAR3+B,EAAAA,EAAAA,EAAAA,GAClBwkB,EAASxkB,OAASA,EACH,MAAXgnB,IACFxC,EAASxkB,OAAO8kB,MAAQ8B,EAAOI,GAEvC,CACI,GAAsB,SAAlBxC,EAASzf,KACX,OAAO,IAAI+iB,EAAKtD,GACPA,GAAkB,SAAlBA,EAASzf,KAClB,OAAO,IAAI0iB,EAAYjD,GACdA,GAAkB,SAAlBA,EAASzf,KAClB,OAAO,IAAIgjB,EAAKvD,GACPA,GAAkB,YAAlBA,EAASzf,KAClB,OAAO,IAAIwN,EAAQiS,GACVA,GAAkB,WAAlBA,EAASzf,KAClB,OAAO,IAAI6iB,EAAOpD,GAElB,MAAM,IAAIlK,MAAM,sBAAwByU,EAAKhqB,KAEnD,CAGE,OAFA+c,GAAe0c,EACfA,EAASxoB,QAAUwoB,EACZ1c,EACT,CAwzDiB8c,GACX5Q,EAAQR,KACRjD,EAAa4O,KACb/J,EAAOD,KACP5K,EAAQT,KACR+D,EAAQgQ,KACRrN,EAAYkT,KACZlF,EAASD,KACTzQ,EAAOmH,KACPlH,EAAOgI,KACPztB,EAAY8d,KACZgY,EAAUD,KACd,SAASyC,IAAqB,IAATO,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GAInB,OAHuB,IAAnBA,EAAQh5B,QAAgBd,MAAM4iB,QAAQkX,EAAQ,MAChDA,EAAUA,EAAQ,IAEb,IAAI3Q,EAAU2Q,EACzB,CA0DE,OAzDAP,EAASjgB,OAAS,SAAgB1a,EAAM4+B,GACtC,IAkBI7H,EAlBA8H,GAAiB,EACrB,SAASC,IACHnvB,SAAWA,QAAQC,OAASivB,IAC9BA,GAAiB,EACjBlvB,QAAQC,KACN5P,EAAO,qHAEL+3B,QAAQC,IAAI+G,MAAQhH,QAAQC,IAAI+G,KAAKn2B,WAAW,OAClD+G,QAAQC,KACN5P,EAAO,uEAIb,IAAIg/B,EAAcJ,KAAmBzoB,WAGrC,OAFA6oB,EAAYpG,cAAgB54B,EAC5Bg/B,EAAYlD,gBAAiB,IAAIvR,GAAY2R,QACtC8C,CACb,CAWI,OATAtkC,OAAOC,eAAemkC,EAAS,UAAW,CACxC5hC,IAAM,KACC65B,IAAOA,EAAQ+H,KACb/H,KAGX+H,EAAQ/G,QAAU,SAAS5c,EAAK8jB,EAAaC,GAC3C,OAAOvE,EAAS,CAACmE,EAAQI,KAAcnH,QAAQ5c,EAAK8jB,EACrD,EACMH,CACR,EACDnE,EAASt4B,UAAYA,EACrBs4B,EAAS/S,MAAQA,EACjB+S,EAAS4D,SAAWA,EACpB5D,EAASxL,KAAOA,EAChBwL,EAAStnB,QAAWkR,GAAa,IAAIjS,EAAQiS,GAC7CoW,EAASwE,OAAU5a,GAAa,IAAIoD,EAAOpD,GAC3CoW,EAASjc,KAAQ6F,GAAa,IAAIiD,EAAYjD,GAC9CoW,EAAS1a,KAAQsE,GAAa,IAAIuD,EAAKvD,GACvCoW,EAAS1b,KAAQsF,GAAa,IAAIsD,EAAKtD,GACvCoW,EAASl9B,SAAY8mB,GAAa,IAAIiG,EAAUjG,GAChDoW,EAASvgB,eAAiBA,EAC1BugB,EAASnT,YAAcA,EACvBmT,EAAS1S,UAAYA,EACrB0S,EAASpQ,UAAYA,EACrBoQ,EAAShvB,SAAW6e,EACpBmQ,EAASroB,QAAUA,EACnBqoB,EAASxC,QAAUA,EACnBwC,EAAShT,OAASA,EAClBgT,EAASpC,OAASA,EAClBoC,EAAS5M,MAAQA,EACjB4M,EAAS7S,KAAOA,EAChB6S,EAAS9S,KAAOA,EAChB8S,EAASj/B,KAAO4oB,EAChBgG,EAAWkT,gBAAgB7C,GAC3BxX,GAAcwX,EACdA,EAAS5kB,QAAU4kB,EACZxX,EACT,EA4FA,WACE,GAAIK,GAAwB,OAAOD,GACnCC,GAAyB,EACzB,IAAIuK,MAAEA,GAAUuQ,KACZc,EA7FN,WACE,GAAI9b,GAAyB,OAAOD,GACpCC,GAA0B,EAC1B,IAAIhR,EAAUgV,KACVuQ,EAASvC,KACTC,EAAY1C,KAgFhB,OADAxP,GA9EA,cAAyBwU,EACvB1B,oBAAAA,GAAuB,CAEvB9iB,OAAAA,CAAQ0hB,GACN,IAAI5wB,EAAQ,IAAImO,EAChBpP,KAAK4yB,KAAK3xB,EAAO4wB,EAAM,IACvB,IAAIhsB,EAAM7F,KAAK2hB,MAAMqJ,WAAW6G,EAAM,KAAO7xB,KAAK2hB,MAAMqJ,WAAWhrB,KAAK2hB,MAAM1J,IAAIjZ,OAAS,GAC3FiC,EAAMpE,OAAO2b,IAAM,CACjBlB,OAAQzR,EAAIolB,IACZ5T,KAAMxR,EAAIwR,KACV8J,OAAQ0Q,EAAM,GAAK,GAErB,IAAI/vB,EAAO+vB,EAAM,GAAG5tB,MAAM,GAE1B,GADuB,OAAnBnC,EAAKmC,OAAQ,KAAYnC,EAAOA,EAAKmC,MAAM,GAAK,IAChD,QAAQJ,KAAK/B,GACfb,EAAMa,KAAO,GACbb,EAAMuZ,KAAKc,KAAOxZ,EAClBb,EAAMuZ,KAAKe,MAAQ,OACd,CACL,IAAIxY,EAAQjB,EAAKiB,MAAM,wBACvB9B,EAAMa,KAAOiB,EAAM,GACnB9B,EAAMuZ,KAAKc,KAAOvY,EAAM,GACxB9B,EAAMuZ,KAAKe,MAAQxY,EAAM,EACjC,CACA,CACI0vB,eAAAA,GACEzyB,KAAKqyB,UAAYA,EAAUryB,KAAK2hB,MAAO,CAAE6P,cAAc,GAC7D,CACIhW,IAAAA,CAAK0X,GACCA,EAAOl0B,OAAS,GAAKk0B,EAAO9nB,MAAM9B,GAAiB,SAAVA,EAAG,MAC9CmO,MAAM+D,KAAK0X,EAEnB,CACIG,WAAAA,GAAc,CAEdY,OAAAA,GAKE,IAJIj0B,KAAKssB,QAAQ5R,OAAS1a,KAAKssB,QAAQ5R,MAAM1b,SAC3CgB,KAAKssB,QAAQ9R,KAAKN,UAAYla,KAAKka,WAErCla,KAAKssB,QAAQ9R,KAAKjB,OAASvZ,KAAKssB,QAAQ9R,KAAKjB,OAAS,IAAMvZ,KAAKwyB,OAC1DxyB,KAAKssB,QAAQ7d,QAClBzO,KAAKssB,QAAUtsB,KAAKssB,QAAQ7d,OAC5BzO,KAAKssB,QAAQ9R,KAAKjB,MAAQ,GAE5BvZ,KAAK+b,KAAKlf,OAAO2b,IAAMxY,KAAK8yB,YAAY9yB,KAAKqyB,UAAUnR,WAC7D,CACIwS,uBAAAA,CAAwBR,GACtB,IAAIrZ,EAAQ7Z,KAAK6Z,MAAMqZ,GACvB,IAAc,IAAVrZ,EAAJ,CACA,IAAIsiB,EAAWC,EACf,IAAKD,EAAYtiB,EAAQ,EAAGsiB,GAAa,GACV,SAAzBjJ,EAAOiJ,GAAW,GADoBA,KAG5C,KAAkB,IAAdA,GAAmBA,EAAY,GAAnC,CACA,IAAKC,EAAUD,EAAY,EAAGC,GAAW,EAAGA,IAC1C,GAA2B,UAAvBlJ,EAAOkJ,GAAS,GAAgB,CAClCA,GAAW,EACX,KACV,CAEM,IAAIlgC,EAAQg3B,EAAOjvB,MAAMk4B,GACrB3J,EAASU,EAAOjvB,MAAMm4B,EAASD,GACnCjJ,EAAOpN,OAAOsW,EAASlJ,EAAOl0B,OAASo9B,GACvCp8B,KAAKwyB,OAASA,EAAO9Z,KAAKpP,GAAOA,EAAG,KAAI/K,KAAK,IAC7CyB,KAAKwb,KAAKtf,EAX4B,CALjB,CAiB3B,CACIm4B,eAAAA,GAAkB,CAElBL,eAAAA,GACEh0B,KAAKssB,QAAQ9R,KAAKjB,OAAS,GACjC,CACIia,WAAAA,CAAYN,GACVlzB,KAAKwyB,QAAUU,EAAOxa,KAAKpP,GAAOA,EAAG,KAAI/K,KAAK,GACpD,CACIo0B,aAAAA,CAAc1xB,GACZA,EAAMnE,KAAO,EACnB,EAIA,CAOmBu/B,GACjBhc,GAAc,SAAoBpI,EAAKkK,GACrC,IAAI2B,EAAS,IAAI+G,EAAM5S,EAAKkK,GACxByS,EAAU,IAAIsH,EAAWpY,GAE7B,OADA8Q,EAAQlQ,QACDkQ,EAAQ7Y,IAChB,CAEH,CACuBugB,GAEvB,IACMC,MADiBnB,MAEvBmB,GAAUp9B,UACVo9B,GAAUlB,SACVkB,GAAU/kB,OACV+kB,GAAU7X,MACV6X,GAAUtQ,KACVsQ,GAAUhiC,SACVgiC,GAAUpsB,QACVosB,GAAUN,OACVM,GAAUxf,KACVwf,GAAU/gB,KACV+gB,GAAUxgB,KACVwgB,GAAUrlB,eACVqlB,GAAUjY,YACViY,GAAUxX,UACVwX,GAAUlV,UACVkV,GAAU9zB,SACV8zB,GAAUntB,QACVmtB,GAAUtH,QACVsH,GAAU9X,OACV8X,GAAUlH,OACVkH,GAAU1R,MACV0R,GAAU3X,KACV2X,GAAU5X,KACV4X,GAAU/jC,KAwWV,IAAIgkC,GAAahlC,OAAOC,eAEpBglC,GAAiBA,CAAC9kC,EAAKC,EAAKC,IADT6kC,EAAC/kC,EAAKC,EAAKC,IAAUD,KAAOD,EAAM6kC,GAAW7kC,EAAKC,EAAK,CAAEG,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMJ,UAAWF,EAAIC,GAAOC,EAClH6kC,CAAiB/kC,EAAoB,iBAARC,EAAmBA,EAAM,GAAKA,EAAKC,GA8D1G,SAAS8kC,GAAwBlyB,GAC/B,OAAOA,GAAKA,EAAEgI,YAAcjb,OAAOiC,UAAUiZ,eAAepZ,KAAKmR,EAAG,WAAaA,EAAW,QAAIA,CAClG,CACA,SAASmyB,GAAsB/gC,GAC7B,GAAIA,EAAG4W,WAAY,OAAO5W,EAC1B,IAAI+W,EAAK/W,EAAGgX,QACZ,GAAiB,mBAAND,EAAkB,CAC3B,IAAInN,EAAK,SAASqN,IAChB,OAAI9S,gBAAgB8S,EACXC,QAAQC,UAAUJ,EAAIK,UAAWjT,KAAKrD,aAExCiW,EAAGM,MAAMlT,KAAMiT,UACvB,EACDxN,EAAGhM,UAAYmZ,EAAGnZ,SACnB,MAAMgM,EAAK,CAAE,EAWd,OAVAjO,OAAOC,eAAegO,EAAI,aAAc,CAAE5N,OAAO,IACjDL,OAAOiJ,KAAK5E,GAAIgF,SAAQ,SAASsS,GAC/B,IAAIC,EAAI5b,OAAOuC,yBAAyB8B,EAAIsX,GAC5C3b,OAAOC,eAAegO,EAAI0N,EAAGC,EAAEpZ,IAAMoZ,EAAI,CACvCrb,YAAY,EACZiC,IAAK,WACH,OAAO6B,EAAGsX,EAClB,OAGS1N,CACT,CACA,IACIo3B,GADAC,GAAqB,CAAEvpB,QAAS,CAAA,GAEpC,SAASwpB,KACP,GAAIF,GAA+B,OAAOC,GAAmBvpB,QAC7DspB,GAAgC,EAChC,IAAIpyB,EAAIrP,OACJqY,EAAS,WACX,MAAO,CAAEC,kBAAkB,EAAOpS,MAAOmJ,EAAGkJ,KAAMlJ,EAAGmJ,IAAKnJ,EAAGoJ,OAAQpJ,EAAGqJ,UAAWrJ,EAAGsJ,QAAStJ,EAAGuJ,OAAQvJ,EAAGwJ,cAAexJ,EAAGyJ,MAAOzJ,EAAG0J,IAAK1J,EAAG2J,MAAO3J,EAAG4J,OAAQ5J,EAAG6J,KAAM7J,EAAG8J,QAAS9J,EAAG+J,KAAM/J,EAAGgK,MAAOhK,EAAGiK,KAAMjK,EAAGkK,QAASlK,EAAGmK,MAAOnK,EAAGoK,QAASpK,EAAGqK,SAAUrK,EAAGsK,OAAQtK,EAAGuK,UAAWvK,EAAGwK,OAAQxK,EAAGyK,QAASzK,EAAG0K,YAAa1K,EAAG2K,UAAW3K,EAAG4K,YAAa5K,EAAG6K,aAAc7K,EAAG8K,WAAY9K,EAAG+K,cAAe/K,EAAGgL,WAAYhL,EAAGiL,YAAajL,EAAGkL,cAAelL,EAAGmL,YAAanL,EAAGoL,cAAepL,EAAGqL,eAAgBrL,EAAGsL,aAActL,EAAGuL,gBAAiBvL,EAAGwL,aAAcxL,EAAGyL,cAAezL,EAClkB,EAGD,OAFAqyB,GAAmBvpB,QAAUE,IAC7BqpB,GAAmBvpB,QAAQ4C,aAAe1C,EACnCqpB,GAAmBvpB,OAC5B,CACA,IAMIypB,GACAC,GAgGAhD,GACAiD,GA+SAC,GACAC,GAnZEC,MAJ0C7lC,OAAOmf,OAAuBnf,OAAOC,eAAe,CAClGmf,UAAW,KACX/D,QAH4B,CAAE,GAI7BgE,OAAOC,YAAa,CAAEjf,MAAO,aAIhC,SAASylC,KACP,GAAIL,GAA2B,OAAOD,GACtCC,GAA4B,EAC5B,IAAIjmB,EAAkD+lB,KAClD9lB,EAAoBomB,GACxB,MAAMnmB,UAAuBC,MAC3Bxa,WAAAA,CAAYya,EAASC,EAAMC,EAAQza,EAAQ0a,EAAMC,GAC/CC,MAAML,GACNpX,KAAKlD,KAAO,iBACZkD,KAAK0X,OAASN,EACVG,IACFvX,KAAKuX,KAAOA,GAEV1a,IACFmD,KAAKnD,OAASA,GAEZ2a,IACFxX,KAAKwX,OAASA,QAEI,IAATH,QAA0C,IAAXC,IACpB,iBAATD,GACTrX,KAAKqX,KAAOA,EACZrX,KAAKsX,OAASA,IAEdtX,KAAKqX,KAAOA,EAAKA,KACjBrX,KAAKsX,OAASD,EAAKC,OACnBtX,KAAK2X,QAAUL,EAAOD,KACtBrX,KAAK4X,UAAYN,EAAOA,SAG5BtX,KAAK6X,aACDV,MAAMW,mBACRX,MAAMW,kBAAkB9X,KAAMkX,EAEtC,CACIW,UAAAA,GACE7X,KAAKoX,QAAUpX,KAAKwX,OAASxX,KAAKwX,OAAS,KAAO,GAClDxX,KAAKoX,SAAWpX,KAAKuX,KAAOvX,KAAKuX,KAAO,mBACf,IAAdvX,KAAKqX,OACdrX,KAAKoX,SAAW,IAAMpX,KAAKqX,KAAO,IAAMrX,KAAKsX,QAE/CtX,KAAKoX,SAAW,KAAOpX,KAAK0X,MAClC,CACIK,cAAAA,CAAeC,GACb,IAAKhY,KAAKnD,OAAQ,MAAO,GACzB,IAAIob,EAAMjY,KAAKnD,OACF,MAATmb,IAAeA,EAAQhB,EAAKtD,kBAChC,IAAIwE,EAASpW,GAASA,EAClBqW,EAAQrW,GAASA,EACjBsW,EAAatW,GAASA,EAC1B,GAAIkW,EAAO,CACT,IAAIrE,KAAEA,EAAAA,KAAMe,EAAAA,IAAMP,GAAQ6C,EAAKb,cAAa,GAC5CgC,EAAQrW,GAAS6R,EAAKQ,EAAIrS,IAC1BoW,EAASpW,GAAS4S,EAAK5S,GACnBmV,IACFmB,EAAatW,GAASmV,EAAkBnV,GAElD,CACM,IAAIuW,EAAQJ,EAAIlZ,MAAM,SAClBuZ,EAAQtN,KAAKuN,IAAIvY,KAAKqX,KAAO,EAAG,GAChCmB,EAAMxN,KAAKC,IAAIjL,KAAKqX,KAAO,EAAGgB,EAAMrZ,QACpCyZ,EAAWrd,OAAOod,GAAKxZ,OAC3B,OAAOqZ,EAAMpU,MAAMqU,EAAOE,GAAKE,KAAI,CAACrB,EAAMsB,KACxC,IAAIC,EAASN,EAAQ,EAAIK,EACrBE,EAAS,KAAO,IAAMD,GAAQ3U,OAAOwU,GAAY,MACrD,GAAIG,IAAW5Y,KAAKqX,KAAM,CACxB,GAAIA,EAAKrY,OAAS,IAAK,CACrB,IACI8Z,EAAe9N,KAAKuN,IAAI,EAAGvY,KAAKsX,OADtB,IAEVyB,EAAa/N,KAAKuN,IACpBvY,KAAKsX,OAHO,GAIZtX,KAAK4X,UAJO,IAMVoB,EAAU3B,EAAKpT,MAAM6U,EAAcC,GACnCE,EAAWf,EAAMW,EAAOpa,QAAQ,MAAO,MAAQ4Y,EAAKpT,MAAM,EAAG+G,KAAKC,IAAIjL,KAAKsX,OAAS,EAAG4B,KAAcza,QAAQ,SAAU,KAC3H,OAAO0Z,EAAK,KAAOD,EAAMW,GAAUT,EAAUY,GAAW,MAAQC,EAAWd,EAAK,IAC5F,CACU,IAAIgB,EAAUjB,EAAMW,EAAOpa,QAAQ,MAAO,MAAQ4Y,EAAKpT,MAAM,EAAGjE,KAAKsX,OAAS,GAAG7Y,QAAQ,SAAU,KACnG,OAAO0Z,EAAK,KAAOD,EAAMW,GAAUT,EAAUf,GAAQ,MAAQ8B,EAAUhB,EAAK,IACtF,CACQ,MAAO,IAAMD,EAAMW,GAAUT,EAAUf,EAAI,IAC1C9Y,KAAK,KACd,CACItE,QAAAA,GACE,IAAImf,EAAOpZ,KAAK+X,iBAIhB,OAHIqB,IACFA,EAAO,OAASA,EAAO,MAElBpZ,KAAKlD,KAAO,KAAOkD,KAAKoX,QAAUgC,CAC/C,EAIE,OAFA4jB,GAAiB9lB,EACjBA,EAAerE,QAAUqE,EAClB8lB,EACT,CAGA,SAASO,KACP,GAAIL,GAAwB,OAAOjD,GACnCiD,GAAyB,EACzB,IAAM5jB,EAAc,CAClBC,MAAO,KACPC,YAAa,KACbC,cAAe,KACfC,WAAY,KACZC,WAAY,IACZC,WAAY,KACZC,MAAO,KACPC,YAAa,IACbC,aAAc,IACdC,UAAW,GACXC,OAAQ,OACRC,WAAW,GAKb,MAAMC,EACJxd,WAAAA,CAAYyd,GACVpa,KAAKoa,QAAUA,CACrB,CACIC,MAAAA,CAAOpZ,EAAOiZ,GACZ,IAAIpd,EAAO,IAAMmE,EAAMnE,KACnBwd,EAASrZ,EAAMqZ,OAASta,KAAKua,SAAStZ,EAAO,UAAY,GAM7D,QALoC,IAAzBA,EAAMuZ,KAAKC,UACpB3d,GAAQmE,EAAMuZ,KAAKC,UACVH,IACTxd,GAAQ,KAENmE,EAAMyZ,MACR1a,KAAK2a,MAAM1Z,EAAOnE,EAAOwd,OACpB,CACL,IAAI9B,GAAOvX,EAAMuZ,KAAKI,SAAW,KAAOV,EAAY,IAAM,IAC1Dla,KAAKoa,QAAQtd,EAAOwd,EAAS9B,EAAKvX,EAC1C,CACA,CACI4Z,WAAAA,CAAY5Z,EAAO6Z,GACjB,IAAIjjB,EAEFA,EADiB,SAAfoJ,EAAMW,KACA5B,KAAK+a,IAAI9Z,EAAO,KAAM,cACN,YAAfA,EAAMW,KACP5B,KAAK+a,IAAI9Z,EAAO,KAAM,iBACV,WAAX6Z,EACD9a,KAAK+a,IAAI9Z,EAAO,KAAM,cAEtBjB,KAAK+a,IAAI9Z,EAAO,KAAM,eAIhC,IAFA,IAAI+Z,EAAM/Z,EAAMwN,OACZwM,EAAQ,EACLD,GAAoB,SAAbA,EAAIpZ,MAChBqZ,GAAS,EACTD,EAAMA,EAAIvM,OAEZ,GAAI5W,EAAMqC,SAAS,MAAO,CACxB,IAAI+f,EAASja,KAAK+a,IAAI9Z,EAAO,KAAM,UACnC,GAAIgZ,EAAOjb,OACT,IAASkc,IAAAA,EAAO,EAAGA,EAAOD,EAAOC,IAAQrjB,GAASoiB,CAE5D,CACM,OAAOpiB,CACb,CACI8iB,KAAAA,CAAM1Z,EAAOqX,GACX,IAEIiB,EAFAqB,EAAU5a,KAAK+a,IAAI9Z,EAAO,UAAW,cACzCjB,KAAKoa,QAAQ9B,EAAQsC,EAAU,IAAK3Z,EAAO,SAEvCA,EAAMyZ,OAASzZ,EAAMyZ,MAAM1b,QAC7BgB,KAAKvF,KAAKwG,GACVsY,EAAQvZ,KAAK+a,IAAI9Z,EAAO,UAExBsY,EAAQvZ,KAAK+a,IAAI9Z,EAAO,QAAS,aAE/BsY,GAAOvZ,KAAKoa,QAAQb,GACxBvZ,KAAKoa,QAAQ,IAAKnZ,EAAO,MAC/B,CACIxG,IAAAA,CAAKwG,GAEH,IADA,IAAIka,EAAOla,EAAMyZ,MAAM1b,OAAS,EACzBmc,EAAO,GACmB,YAA3Bla,EAAMyZ,MAAMS,GAAMvZ,MACtBuZ,GAAQ,EAGV,IADA,IAAIjB,EAAYla,KAAK+a,IAAI9Z,EAAO,aACvBqI,EAAK,EAAGA,EAAKrI,EAAMyZ,MAAM1b,OAAQsK,IAAM,CAC9C,IAAI8R,EAAQna,EAAMyZ,MAAMpR,GACpB+R,EAASrb,KAAK+a,IAAIK,EAAO,UACzBC,GAAQrb,KAAKoa,QAAQiB,GACzBrb,KAAKb,UAAUic,EAAOD,IAAS7R,GAAM4Q,EAC7C,CACA,CACI/J,OAAAA,CAAQlP,GACN,IAAIqa,EAAOtb,KAAK+a,IAAI9Z,EAAO,OAAQ,eAC/Bsa,EAAQvb,KAAK+a,IAAI9Z,EAAO,QAAS,gBACrCjB,KAAKoa,QAAQ,KAAOkB,EAAOra,EAAMa,KAAOyZ,EAAQ,KAAMta,EAC5D,CACIua,IAAAA,CAAKva,EAAOiZ,GACV,IAAIU,EAAU5a,KAAK+a,IAAI9Z,EAAO,UAAW,SACrCwa,EAASxa,EAAMya,KAAOd,EAAU5a,KAAKua,SAAStZ,EAAO,SACrDA,EAAM0a,YACRF,GAAUxa,EAAMuZ,KAAKmB,WAAa,eAEhCzB,IAAWuB,GAAU,KACzBzb,KAAKoa,QAAQqB,EAAQxa,EAC3B,CACI1G,QAAAA,CAAS0G,GACPjB,KAAKvF,KAAKwG,EAChB,CACI8Z,GAAAA,CAAI9Z,EAAO2a,EAAKd,GACd,IAAIjjB,EAEJ,GADKijB,IAAQA,EAASc,GAClBA,QAEmB,KADrB/jB,EAAQoJ,EAAMuZ,KAAKoB,IACe,OAAO/jB,EAE3C,IAAI4W,EAASxN,EAAMwN,OACnB,GAAe,WAAXqM,EAAqB,CACvB,IAAKrM,GAA0B,SAAhBA,EAAO7M,MAAmB6M,EAAOoN,QAAU5a,EACxD,MAAO,GAET,GAAIwN,GAA0B,aAAhBA,EAAO7M,KACnB,MAAO,EAEjB,CACM,IAAK6M,EAAQ,OAAO6K,EAAYwB,GAChC,IAAIgB,EAAQ7a,EAAM8a,OAElB,GADKD,EAAME,WAAUF,EAAME,SAAW,CAAE,QACF,IAA3BF,EAAME,SAASlB,GACxB,OAAOgB,EAAME,SAASlB,GAExB,GAAe,WAAXA,GAAkC,UAAXA,EACzB,OAAO9a,KAAK6a,YAAY5Z,EAAO6Z,GAE/B,IApHc5Y,EAoHV7H,EAAS,QApHC6H,EAoHkB4Y,GAnHzB,GAAGmB,cAAgB/Z,EAAI+B,MAAM,IA+HtC,OAXMjE,KAAK3F,GACPxC,EAAQmI,KAAK3F,GAAQyhB,EAAO7a,GAE5B6a,EAAMI,MAAM5S,IAEV,QAAqB,KADrBzR,EAAQyR,EAAGkR,KAAKoB,IACkB,OAAO,CAAA,SAI1B,IAAV/jB,IAAuBA,EAAQyhB,EAAYwB,IACtDgB,EAAME,SAASlB,GAAUjjB,EAClBA,CACb,CACIskB,cAAAA,CAAeL,GACb,IAAIjkB,EAaJ,OAZAikB,EAAMI,MAAM5S,IACV,GAAIA,EAAGoR,OAASpR,EAAGoR,MAAM1b,OAAS,QACH,IAAlBsK,EAAGkR,KAAKjB,MAKjB,OAJA1hB,EAAQyR,EAAGkR,KAAKjB,OACNrf,SAAS,QACjBrC,EAAQA,EAAM4G,QAAQ,UAAW,MAE5B,CAEnB,IAEU5G,IAAOA,EAAQA,EAAM4G,QAAQ,MAAO,KACjC5G,CACb,CACIukB,gBAAAA,CAAiBN,EAAO7a,GACtB,IAAIpJ,EAeJ,OAdAikB,EAAMO,cAAc/S,IAClB,QAA8B,IAAnBA,EAAGkR,KAAKa,OAKjB,OAJAxjB,EAAQyR,EAAGkR,KAAKa,QACNnhB,SAAS,QACjBrC,EAAQA,EAAM4G,QAAQ,UAAW,MAE5B,CACjB,SAE2B,IAAV5G,EACTA,EAAQmI,KAAK+a,IAAI9Z,EAAO,KAAM,cACrBpJ,IACTA,EAAQA,EAAM4G,QAAQ,MAAO,KAExB5G,CACb,CACIykB,aAAAA,CAAcR,EAAO7a,GACnB,IAAIpJ,EAeJ,OAdAikB,EAAMS,WAAWjT,IACf,QAA8B,IAAnBA,EAAGkR,KAAKa,OAKjB,OAJAxjB,EAAQyR,EAAGkR,KAAKa,QACNnhB,SAAS,QACjBrC,EAAQA,EAAM4G,QAAQ,UAAW,MAE5B,CACjB,SAE2B,IAAV5G,EACTA,EAAQmI,KAAK+a,IAAI9Z,EAAO,KAAM,cACrBpJ,IACTA,EAAQA,EAAM4G,QAAQ,MAAO,KAExB5G,CACb,CACI2kB,aAAAA,CAAcV,GACZ,IAAIjkB,EAOJ,OANAikB,EAAMI,MAAM5S,IACV,GAAgB,SAAZA,EAAG1H,WAEgB,KADrB/J,EAAQyR,EAAGkR,KAAKI,SACkB,OAAO,CACnD,IAEa/iB,CACb,CACI4kB,aAAAA,CAAcX,GACZ,IAAIjkB,EAaJ,OAZAikB,EAAMI,MAAM5S,IACV,GAAIA,EAAGoR,QAAUpR,EAAGmF,SAAWqN,GAASA,EAAMD,QAAUvS,SACxB,IAAnBA,EAAGkR,KAAKa,OAKjB,OAJAxjB,EAAQyR,EAAGkR,KAAKa,QACNnhB,SAAS,QACjBrC,EAAQA,EAAM4G,QAAQ,UAAW,MAE5B,CAEnB,IAEU5G,IAAOA,EAAQA,EAAM4G,QAAQ,MAAO,KACjC5G,CACb,CACI6kB,QAAAA,CAASZ,GACP,IAAIjkB,EAOJ,OANAikB,EAAMS,WAAWjT,IACf,QAA+B,IAApBA,EAAGkR,KAAKI,QAEjB,OADA/iB,EAAQyR,EAAGkR,KAAKI,QAAQnc,QAAQ,UAAW,KACpC,CACjB,IAEa5G,CACb,CACI8kB,YAAAA,CAAab,GACX,IAAIjkB,EAOJ,OANAikB,EAAMI,MAAM5S,IACV,GAAIA,EAAGoR,OAA6B,IAApBpR,EAAGoR,MAAM1b,aAEF,KADrBnH,EAAQyR,EAAGkR,KAAKjB,OACkB,OAAO,CACnD,IAEa1hB,CACb,CACI+kB,SAAAA,CAAUd,GACR,OAAIA,EAAMtB,KAAKP,OAAe6B,EAAMtB,KAAKP,QAEzC6B,EAAMI,MAAM5S,IACV,IAAIuT,EAAIvT,EAAGmF,OACX,GAAIoO,GAAKA,IAAMf,GAASe,EAAEpO,QAAUoO,EAAEpO,SAAWqN,QACjB,IAAnBxS,EAAGkR,KAAKa,OAAwB,CACzC,IAAIlX,EAAQmF,EAAGkR,KAAKa,OAAOtc,MAAM,MAGjC,OADAlH,GADAA,EAAQsM,EAAMA,EAAMnF,OAAS,IACfP,QAAQ,MAAO,KACtB,CACnB,CACA,IAEa5G,GAZP,IAAIA,CAaV,CACIilB,YAAAA,CAAahB,GACX,IAAIjkB,EAOJ,OANAikB,EAAMI,MAAM5S,IACV,GAAIA,EAAGoR,OAASpR,EAAGoR,MAAM1b,QAA2B,SAAjBsK,EAAG6R,KAAKvZ,WAEpB,KADrB/J,EAAQyR,EAAGkR,KAAKN,WACkB,OAAO,CACnD,IAEariB,CACb,CACI0iB,QAAAA,CAAStZ,EAAOya,GACd,IAAI7jB,EAAQoJ,EAAMya,GACdX,EAAM9Z,EAAMuZ,KAAKkB,GACrB,OAAIX,GAAOA,EAAIljB,QAAUA,EAChBkjB,EAAIA,IAENljB,CACb,CACIkkB,IAAAA,CAAK9a,GACHjB,KAAKvF,KAAKwG,GACNA,EAAMuZ,KAAKjB,OAAOvZ,KAAKoa,QAAQnZ,EAAMuZ,KAAKjB,MACpD,CACIwD,IAAAA,CAAK9b,GACHjB,KAAK2a,MAAM1Z,EAAOjB,KAAKua,SAAStZ,EAAO,aACnCA,EAAMuZ,KAAKwC,cACbhd,KAAKoa,QAAQnZ,EAAMuZ,KAAKwC,aAAc/b,EAAO,MAErD,CACI9B,SAAAA,CAAU8B,EAAOiZ,GACf,IAAKla,KAAKiB,EAAMW,MACd,MAAM,IAAIuV,MACR,yBAA2BlW,EAAMW,KAAO,mDAG5C5B,KAAKiB,EAAMW,MAAMX,EAAOiZ,EAC9B,EAIE,OAFA+f,GAAc9f,EACdA,EAAYtH,QAAUsH,EACf8f,EACT,CAGA,SAASuD,KACP,GAAIJ,GAAsB,OAAOD,GACjCC,GAAuB,EACvB,IAAIjjB,EAAcojB,KAClB,SAASp+B,EAAU8B,EAAOmZ,GACd,IAAID,EAAYC,GACtBjb,UAAU8B,EAClB,CAGE,OAFAk8B,GAAch+B,EACdA,EAAU0T,QAAU1T,EACbg+B,EACT,CACA,IACIM,GAQAvZ,GACAwZ,GA2WAvtB,GACAwtB,GAeAC,GACAC,GAqBAC,GACAC,GA6XA9B,GACA+B,GAwBAC,GACAC,GA4BAC,GACAC,GA0BAC,GACAC,GAuHA3c,GACA4c,GAiNAxiB,GACAyiB,GAoDAC,GACAC,GAuDA3hB,GACA4hB,GA0BAC,GACAC,GAuDAC,GACAC,GA4TAC,GACAC,GAsNArH,GACAsH,GAmhBAC,GACAC,GAiCAC,GACAC,GAmCAzH,GACA0H,GAsCAC,GACAC,GAcAC,GACAC,GAydAC,GACAC,GAmHAtK,GACAuK,GAyDAC,GACAC,GAuFAC,GACAC,GAwFAC,GACAC,GAl1GAC,GAAU,CAAE,EAEhB,SAASC,KACP,OAAI7C,KACJA,GAAqB,EACrB4C,GAAQ5f,QAAU5J,OAAO,WACzBwpB,GAAQ3f,GAAK7J,OAAO,OAHWwpB,EAKjC,CAGA,SAASE,KACP,GAAI7C,GAAiB,OAAOxZ,GAC5BwZ,GAAkB,EAClB,IAAIxmB,EAAiBomB,KACjBnjB,EAAcojB,KACdp+B,EAAYq+B,MACZ/c,QAAEA,EAAAA,GAASC,GAAO4f,KACtB,SAAS1f,EAAUjpB,EAAK8W,GACtB,IAAIoS,EAAS,IAAIlpB,EAAIgF,YACrB,IAAA,IAAS2M,KAAM3R,EACb,GAAKH,OAAOiC,UAAUiZ,eAAepZ,KAAK3B,EAAK2R,IAGpC,eAAPA,EAAJ,CACA,IAAIzR,EAAQF,EAAI2R,GACZ1H,SAAc/J,EACP,WAAPyR,GAA4B,WAAT1H,EACjB6M,IAAQoS,EAAOvX,GAAMmF,GACT,WAAPnF,EACTuX,EAAOvX,GAAMzR,EACJqG,MAAM4iB,QAAQjpB,GACvBgpB,EAAOvX,GAAMzR,EAAM6gB,KAAKqI,GAAMH,EAAUG,EAAGF,MAE9B,WAATjf,GAA+B,OAAV/J,IAAgBA,EAAQ+oB,EAAU/oB,IAC3DgpB,EAAOvX,GAAMzR,EAXU,CAc3B,OAAOgpB,CACX,CACE,SAASG,EAAaC,EAAUC,GAC9B,GAAIA,QAAuC,IAApBA,EAASC,OAC9B,OAAOD,EAASC,OAKlB,IAHA,IAAI7J,EAAS,EACTD,EAAO,EACP8J,EAAS,EACJ7X,EAAK,EAAGA,EAAK2X,EAASjiB,OAAQsK,IAAM,CAC3C,GAAI+N,IAAS6J,EAAS7J,MAAQC,IAAW4J,EAAS5J,OAAQ,CACxD6J,EAAS7X,EACT,KACR,CAC2B,OAAjB2X,EAAS3X,IACXgO,EAAS,EACTD,GAAQ,GAERC,GAAU,CAElB,CACI,OAAO6J,CACX,CACE,MAAMC,EACJzkB,WAAAA,GAA2B,IAAf0kB,EAAWpO,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAIrB,IAAA,IAASnW,KAHTkD,KAAKwa,KAAO,CAAE,EACdxa,KAAKygB,IAAW,EAChBzgB,KAAK0gB,IAAM,EACMW,EACf,GAAa,UAATvkB,EAEF,IAASmE,IAAAA,KADTjB,KAAK0a,MAAQ,GACK2G,EAASvkB,IACE,mBAAhBmE,EAAMsgB,MACfvhB,KAAKwhB,OAAOvgB,EAAMsgB,SAElBvhB,KAAKwhB,OAAOvgB,QAIhBjB,KAAKlD,GAAQukB,EAASvkB,EAGhC,CACI2kB,UAAAA,CAAW/iB,GAET,GADAA,EAAMgjB,YAAc1hB,KAChBtB,EAAMwF,OAASlE,KAAKnD,QAAU,aAAagH,KAAKnF,EAAMwF,OAAQ,CAChE,IAAIrG,EAAKmC,KAAKnD,OACd6B,EAAMwF,MAAQxF,EAAMwF,MAAMzF,QACxB,aAAA,KAAAqF,OACKjG,EAAG8jB,MAAMxjB,KAAQN,KAAAA,OAAAA,EAAGya,MAAMjB,KAAI,KAAAvT,OAAIjG,EAAGya,MAAMhB,OACjD,MACT,CACM,OAAO5Y,CACb,CACI6a,KAAAA,CAAMrY,GAEJ,OADAlB,KAAKyO,OAAOmT,YAAY5hB,KAAMkB,GACvBlB,IACb,CACIgR,MAAAA,GAAuB,IAAhB6Q,EAAY5O,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACjB,IAAA,IAASnW,KAAQ+kB,EACf7hB,KAAKlD,GAAQ+kB,EAAU/kB,GAEzB,OAAOkD,IACb,CACIqb,MAAAA,CAAOna,GAEL,OADAlB,KAAKyO,OAAOqT,aAAa9hB,KAAMkB,GACxBlB,IACb,CACI+hB,SAAAA,CAAUC,UACDhiB,KAAKwa,KAAKa,cACVrb,KAAKwa,KAAKjB,MACZyI,UAAoBhiB,KAAKwa,KAAKI,OACzC,CACI2G,KAAAA,GAAsB,IAAhBM,EAAY5O,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACZ4N,EAASD,EAAU5gB,MACvB,IAAA,IAASlD,KAAQ+kB,EACfhB,EAAO/jB,GAAQ+kB,EAAU/kB,GAE3B,OAAO+jB,CACb,CACIoB,UAAAA,GAA2B,IAAhBJ,EAAY5O,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACjB4N,EAAS7gB,KAAKuhB,MAAMM,GAExB,OADA7hB,KAAKyO,OAAOmT,YAAY5hB,KAAM6gB,GACvBA,CACb,CACIqB,WAAAA,GAA4B,IAAhBL,EAAY5O,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAClB4N,EAAS7gB,KAAKuhB,MAAMM,GAExB,OADA7hB,KAAKyO,OAAOqT,aAAa9hB,KAAM6gB,GACxBA,CACb,CACIniB,KAAAA,CAAM0Y,GAAoB,IAAX+K,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACpB,GAAIjT,KAAKnD,OAAQ,CACf,IAAI2b,IAAEA,EAAAA,MAAKF,GAAUtY,KAAKoiB,QAAQD,GAClC,OAAOniB,KAAKnD,OAAO8kB,MAAMjjB,MACvB0Y,EACA,CAAEE,OAAQgB,EAAMhB,OAAQD,KAAMiB,EAAMjB,MACpC,CAAEC,OAAQkB,EAAIlB,OAAQD,KAAMmB,EAAInB,MAChC8K,EAEV,CACM,OAAO,IAAIjL,EAAeE,EAChC,CACIiL,iBAAAA,GACE,MAAO,CACLroB,IAAAA,CAAIiH,EAAOya,IACI,YAATA,EACKza,EACW,SAATya,EACF,IAAMza,EAAM8a,OAAOuG,UAEnBrhB,EAAMya,GAGjBta,IAAIH,CAAAA,EAAOya,EAAM7jB,KACXoJ,EAAMya,KAAU7jB,IACpBoJ,EAAMya,GAAQ7jB,EACD,SAAT6jB,GAA4B,UAATA,GAA6B,SAATA,GAA4B,WAATA,GAA8B,cAATA,GAC1E,SAATA,GACEza,EAAMshB,cAJ0B,GAS5C,CAEIC,SAAAA,GACExiB,KAAKygB,IAAW,CACtB,CACI8B,SAAAA,GACE,GAAIviB,KAAKygB,GAAU,CACjBzgB,KAAKygB,IAAW,EAEhB,IADA,IAAIgC,EAAOziB,KACJyiB,EAAOA,EAAKhU,QACjBgU,EAAKhC,IAAW,CAE1B,CACA,CACIgC,IAAAA,GACE,GAAKziB,KAAKyO,OAAV,CACA,IAAIkK,EAAS3Y,KAAKyO,OAAOiU,MAAM1iB,MAC/B,OAAOA,KAAKyO,OAAOiM,MAAM/B,EAAS,EAFT,CAG/B,CACIgK,UAAAA,CAAWR,GACT,IAAItc,EAAM7F,KAAKnD,OAAOyb,MACtB,GAAI6J,EAAKO,MACP7c,EAAM7F,KAAK4iB,eAAeT,EAAKO,YACvC,GAAiBP,EAAKU,KAAM,CACpB,IAAIC,EAAc,aAAc9iB,KAAKnD,OAAO8kB,MAAQ3hB,KAAKnD,OAAO8kB,MAAMpnB,SAAWyF,KAAKnD,OAAO8kB,MAAM1J,IAK/FU,EAJuBmK,EAAY7e,MACrC+c,EAAa8B,EAAa9iB,KAAKnD,OAAOyb,OACtC0I,EAAa8B,EAAa9iB,KAAKnD,OAAO2b,MAENxU,QAAQme,EAAKU,OAChC,IAAXlK,IAAe9S,EAAM7F,KAAK4iB,eAAejK,GACrD,CACM,OAAO9S,CACb,CACI+c,cAAAA,CAAejK,GAMb,IALA,IAAIrB,EAAStX,KAAKnD,OAAOyb,MAAMhB,OAC3BD,EAAOrX,KAAKnD,OAAOyb,MAAMjB,KACzByL,GAAc,aAAc9iB,KAAKnD,OAAO8kB,MAAQ3hB,KAAKnD,OAAO8kB,MAAMpnB,SAAWyF,KAAKnD,OAAO8kB,MAAM1J,KAC/FkJ,EAASH,EAAa8B,EAAa9iB,KAAKnD,OAAOyb,OAC/CE,EAAM2I,EAASxI,EACVrP,EAAK6X,EAAQ7X,EAAKkP,EAAKlP,IACN,OAApBwZ,EAAYxZ,IACdgO,EAAS,EACTD,GAAQ,GAERC,GAAU,EAGd,MAAO,CAAEA,SAAQD,OACvB,CACI0L,IAAAA,GACE,GAAK/iB,KAAKyO,OAAV,CACA,IAAIkK,EAAS3Y,KAAKyO,OAAOiU,MAAM1iB,MAC/B,OAAOA,KAAKyO,OAAOiM,MAAM/B,EAAS,EAFT,CAG/B,CACIyJ,OAAAA,CAAQD,GACN,IAAI7J,EAAQ,CACVhB,OAAQtX,KAAKnD,OAAOyb,MAAMhB,OAC1BD,KAAMrX,KAAKnD,OAAOyb,MAAMjB,MAEtBmB,EAAMxY,KAAKnD,OAAO2b,IAAM,CAC1BlB,OAAQtX,KAAKnD,OAAO2b,IAAIlB,OAAS,EACjCD,KAAMrX,KAAKnD,OAAO2b,IAAInB,MACpB,CACFC,OAAQgB,EAAMhB,OAAS,EACvBD,KAAMiB,EAAMjB,MAEd,GAAI8K,EAAKU,KAAM,CACb,IAAIC,EAAc,aAAc9iB,KAAKnD,OAAO8kB,MAAQ3hB,KAAKnD,OAAO8kB,MAAMpnB,SAAWyF,KAAKnD,OAAO8kB,MAAM1J,IAK/FU,EAJuBmK,EAAY7e,MACrC+c,EAAa8B,EAAa9iB,KAAKnD,OAAOyb,OACtC0I,EAAa8B,EAAa9iB,KAAKnD,OAAO2b,MAENxU,QAAQme,EAAKU,OAC5B,IAAflK,IACFL,EAAQtY,KAAK4iB,eAAejK,GAC5BH,EAAMxY,KAAK4iB,eACTjK,EAASwJ,EAAKU,KAAK7jB,cAInBmjB,EAAK7J,MACPA,EAAQ,CACNhB,OAAQ6K,EAAK7J,MAAMhB,OACnBD,KAAM8K,EAAK7J,MAAMjB,MAEV8K,EAAKO,QACdpK,EAAQtY,KAAK4iB,eAAeT,EAAKO,QAE/BP,EAAK3J,IACPA,EAAM,CACJlB,OAAQ6K,EAAK3J,IAAIlB,OACjBD,KAAM8K,EAAK3J,IAAInB,MAEiB,iBAAlB8K,EAAKa,SACrBxK,EAAMxY,KAAK4iB,eAAeT,EAAKa,UACtBb,EAAKO,QACdlK,EAAMxY,KAAK4iB,eAAeT,EAAKO,MAAQ,IAM3C,OAHIlK,EAAInB,KAAOiB,EAAMjB,MAAQmB,EAAInB,OAASiB,EAAMjB,MAAQmB,EAAIlB,QAAUgB,EAAMhB,UAC1EkB,EAAM,CAAElB,OAAQgB,EAAMhB,OAAS,EAAGD,KAAMiB,EAAMjB,OAEzC,CAAEmB,MAAKF,QACpB,CACIyC,GAAAA,CAAIW,EAAMuH,GAER,OADU,IAAI9I,GACHY,IAAI/a,KAAM0b,EAAMuH,EACjC,CACIC,MAAAA,GAKE,OAJIljB,KAAKyO,QACPzO,KAAKyO,OAAO3T,YAAYkF,MAE1BA,KAAKyO,YAAS,EACPzO,IACb,CACImjB,WAAAA,GACE,GAAInjB,KAAKyO,OAAQ,CAEC,IADhB,IAAI2U,EAAWpjB,KACXqjB,GAAY,EAHL3I,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GAIX,IAAA,IAASzZ,KAASyZ,EACZzZ,IAAUjB,KACZqjB,GAAY,EACHA,GACTrjB,KAAKyO,OAAOmT,YAAYwB,EAAUniB,GAClCmiB,EAAWniB,GAEXjB,KAAKyO,OAAOqT,aAAasB,EAAUniB,GAGlCoiB,GACHrjB,KAAKkjB,QAEf,CACM,OAAOljB,IACb,CACI+b,IAAAA,GAEE,IADA,IAAIuH,EAAUtjB,KACPsjB,EAAQ7U,QAAkC,aAAxB6U,EAAQ7U,OAAO7M,MACtC0hB,EAAUA,EAAQ7U,OAEpB,OAAO6U,CACb,CACIC,MAAAA,CAAOC,EAAGC,GACR,IAAIC,EAAQ,CAAE,EACVC,EAAuB,MAAVF,EACjBA,EAASA,OAA8BxjB,IACvC,IAAI2jB,EAAkB,EACtB,IAAA,IAAS9mB,KAAQkD,KACf,GAAKxI,OAAOiC,UAAUiZ,eAAepZ,KAAK0G,KAAMlD,IAGnC,WAATA,GAA8B,eAATA,EAAzB,CACA,IAAIjF,EAAQmI,KAAKlD,GACjB,GAAIoB,MAAM4iB,QAAQjpB,GAChB6rB,EAAM5mB,GAAQjF,EAAM6gB,KAAKpP,GACL,iBAAPA,GAAmBA,EAAGia,OACxBja,EAAGia,OAAO,KAAME,GAEhBna,SAGZ,GAA2B,iBAAVzR,GAAsBA,EAAM0rB,OAC5CG,EAAM5mB,GAAQjF,EAAM0rB,OAAO,KAAME,QAC3C,GAA4B,WAAT3mB,EAAmB,CAC5B,IAAI+mB,EAAUJ,EAAOzpB,IAAInC,EAAM8pB,OAChB,MAAXkC,IACFA,EAAUD,EACVH,EAAOriB,IAAIvJ,EAAM8pB,MAAOiC,GACxBA,KAEFF,EAAM5mB,GAAQ,CACZ0b,IAAK3gB,EAAM2gB,IACXqL,UACAvL,MAAOzgB,EAAMygB,YAGfoL,EAAM5mB,GAAQjF,CAzBgC,CA+BlD,OAHI8rB,IACFD,EAAMD,OAAS,IAAIA,EAAOhjB,QAAQiY,KAAKoL,GAAWA,EAAOP,YAEpDG,CACb,CACIpB,OAAAA,GAIE,OAHKtiB,KAAK+jB,aACR/jB,KAAK+jB,WAAa,IAAIC,MAAMhkB,KAAMA,KAAKqiB,sBAElCriB,KAAK+jB,UAClB,CACI9pB,QAAAA,GAAmC,IAA1BgqB,EAAe9kB,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,EAClB8kB,EAAa9kB,YAAW8kB,EAAeA,EAAa9kB,WACxD,IAAImkB,EAAU,GAId,OAHAW,EAAajkB,MAAOsJ,IAClBga,GAAWha,CAAAA,IAENga,CACb,CACI5W,IAAAA,CAAK4W,EAASxhB,EAAMqgB,GAClB,IAAIjX,EAAO,CAAEgZ,KAAMlkB,MACnB,IAAA,IAASsJ,KAAM6Y,EAAMjX,EAAK5B,GAAM6Y,EAAK7Y,GACrC,OAAOga,EAAQ5W,KAAK5K,EAAMoJ,EAChC,CACI,WAAIiZ,GACF,OAAOnkB,IACb,EAIE,OAFAkkB,GAAO9C,EACPA,EAAMvO,QAAUuO,EACT8C,EACT,CAGA,SAASsc,KACP,GAAI7C,GAAoB,OAAOxtB,GAC/BwtB,GAAqB,EACrB,IAAIvc,EAAQmf,KACZ,MAAMnxB,UAAgBgS,EACpBzkB,WAAAA,CAAY0kB,GACV5J,MAAM4J,GACNrhB,KAAK4B,KAAO,SAClB,EAIE,OAFAuO,GAAUf,EACVA,EAAQyD,QAAUzD,EACXe,EACT,CAGA,SAASswB,KACP,GAAI5C,GAAwB,OAAOD,GACnCC,GAAyB,EACzB,IAAIzc,EAAQmf,KACZ,MAAMjc,UAAoBlD,EACxBzkB,WAAAA,CAAY0kB,GACNA,QAAsC,IAAnBA,EAASxpB,OAAmD,iBAAnBwpB,EAASxpB,QACvEwpB,EAAgBA,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,CAAAA,EAAAA,CAAUxpB,MAAOuD,OAAOimB,EAASxpB,UAEnD4f,MAAM4J,GACNrhB,KAAK4B,KAAO,MAClB,CACI,YAAI2iB,GACF,OAAOvkB,KAAK0b,KAAKhW,WAAW,OAA0B,MAAjB1F,KAAK0b,KAAK,EACrD,EAIE,OAFAkiB,GAActZ,EACdA,EAAYzR,QAAUyR,EACfsZ,EACT,CAGA,SAAS8C,KACP,GAAI3C,GAAsB,OAAOD,GACjCC,GAAuB,EACvB,IAIItZ,EAAQC,EAAOC,EAAMC,EAJrBxV,EAAUoxB,KACVlc,EAAcmc,KACdrf,EAAQmf,MACR9f,QAAEA,EAAAA,GAASC,GAAO4f,KAEtB,SAASzb,EAAYnK,GACnB,OAAOA,EAAMhC,KAAKpP,IACZA,EAAGoR,QAAOpR,EAAGoR,MAAQmK,EAAYvb,EAAGoR,eACjCpR,EAAGzM,OACHyM,IAEb,CACE,SAASwb,EAAc7jB,GAErB,GADAA,EAAMwf,IAAW,EACbxf,EAAMkjB,QAAQzJ,MAChB,IAASpR,IAAAA,KAAMrI,EAAMkjB,QAAQzJ,MAC3BoK,EAAcxb,EAGtB,CACE,MAAMyb,UAAkB3D,EACtBI,MAAAA,GAAoB,IAAVwD,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GACR,IAAA,IAAS5J,KAAS4J,EAAU,CAC1B,IAAItK,EAAQ1a,KAAKilB,UAAU7J,EAAOpb,KAAKmb,MACvC,IAAA,IAASla,KAASyZ,EAAO1a,KAAKmkB,QAAQzJ,MAAMrb,KAAK4B,EACzD,CAEM,OADAjB,KAAKuiB,YACEviB,IACb,CACI+hB,SAAAA,CAAUC,GAER,GADAvK,MAAMsK,UAAUC,GACZhiB,KAAK0a,MACP,IAAA,IAASzZ,KAASjB,KAAK0a,MAAOzZ,EAAM8gB,UAAUC,EAEtD,CACIkD,IAAAA,CAAKC,GACH,GAAKnlB,KAAKmkB,QAAQzJ,MAAlB,CAGA,IAFA,IACI/B,EAAQ2K,EADR8B,EAAWplB,KAAKqlB,cAEbrlB,KAAKslB,QAAQF,GAAYplB,KAAKmkB,QAAQzJ,MAAM1b,SACjD2Z,EAAS3Y,KAAKslB,QAAQF,IAEN,KADhB9B,EAAU6B,EAASnlB,KAAKmkB,QAAQzJ,MAAM/B,GAASA,MAE/C3Y,KAAKslB,QAAQF,IAAa,EAG5B,cADOplB,KAAKslB,QAAQF,GACb9B,CAVyB,CAWtC,CACIzpB,KAAAA,CAAM0rB,GACJ,OAAOvlB,KAAK0a,MAAM7gB,MAAM0rB,EAC9B,CACIF,WAAAA,GACOrlB,KAAKwlB,WAAUxlB,KAAKwlB,SAAW,GAC/BxlB,KAAKslB,UAAStlB,KAAKslB,QAAU,CAAE,GACpCtlB,KAAKwlB,UAAY,EACjB,IAAIJ,EAAWplB,KAAKwlB,SAEpB,OADAxlB,KAAKslB,QAAQF,GAAY,EAClBA,CACb,CACI/C,iBAAAA,GACE,MAAO,CACLroB,IAAAA,CAAIiH,EAAOya,IACI,YAATA,EACKza,EACGA,EAAMya,GAEE,SAATA,GAAmC,iBAATA,GAAqBA,EAAKhW,WAAW,QACjE,WAAa,IAAT+f,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GACT,OAAOxkB,EAAMya,MACR+J,EAAK/M,KAAKpP,GACO,mBAAPA,EACF,CAAC8R,EAAOzC,IAAWrP,EAAG8R,EAAMkH,UAAW3J,GAEvCrP,IAId,EACiB,UAAToS,GAA6B,SAATA,EACrBgK,GACCzkB,EAAMya,IACX,SAACN,GAAA,IAAUlf,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAAA,OAAUwpB,EAAGtK,EAAMkH,aAAcpmB,MAG9B,SAATwf,EACF,IAAMza,EAAM8a,OAAOuG,UACR,UAAT5G,EACFza,EAAMyZ,MAAMhC,KAAKpP,GAAOA,EAAGgZ,YAChB,UAAT5G,GAA6B,SAATA,EACtBza,EAAMya,GAAM4G,UAEZrhB,EAAMya,GA1BNza,EAAMya,GA6BjBta,IAAIH,CAAAA,EAAOya,EAAM7jB,KACXoJ,EAAMya,KAAU7jB,IACpBoJ,EAAMya,GAAQ7jB,EACD,SAAT6jB,GAA4B,WAATA,GAA8B,aAATA,GAC1Cza,EAAMshB,cAH0B,GAQ5C,CACIG,KAAAA,CAAMtH,GACJ,MAAqB,iBAAVA,EAA2BA,GAClCA,EAAM+I,UAAS/I,EAAQA,EAAM+I,SAC1BnkB,KAAKmkB,QAAQzJ,MAAM1W,QAAQoX,GACxC,CACIwG,WAAAA,CAAY+D,EAAOzkB,GACjB,IAIIyX,EAJAiN,EAAa5lB,KAAK0iB,MAAMiD,GACxBjL,EAAQ1a,KAAKilB,UAAU/jB,EAAKlB,KAAKmkB,QAAQzJ,MAAMkL,IAAaC,UAEhE,IAAA,IAAS5kB,KADT2kB,EAAa5lB,KAAK0iB,MAAMiD,GACNjL,GAAO1a,KAAKmkB,QAAQzJ,MAAMoL,OAAOF,EAAa,EAAG,EAAG3kB,GAEtE,IAASb,IAAAA,KAAMJ,KAAKslB,QAEdM,GADJjN,EAAS3Y,KAAKslB,QAAQllB,MAEpBJ,KAAKslB,QAAQllB,GAAMuY,EAAS+B,EAAM1b,QAItC,OADAgB,KAAKuiB,YACEviB,IACb,CACI8hB,YAAAA,CAAa6D,EAAOzkB,GAClB,IASIyX,EATAiN,EAAa5lB,KAAK0iB,MAAMiD,GACxB/jB,EAAsB,IAAfgkB,GAAmB,UAC1BlL,EAAQ1a,KAAKilB,UACf/jB,EACAlB,KAAKmkB,QAAQzJ,MAAMkL,GACnBhkB,GACAikB,UAEF,IAAA,IAAS5kB,KADT2kB,EAAa5lB,KAAK0iB,MAAMiD,GACNjL,GAAO1a,KAAKmkB,QAAQzJ,MAAMoL,OAAOF,EAAY,EAAG3kB,GAElE,IAASb,IAAAA,KAAMJ,KAAKslB,QAEdM,IADJjN,EAAS3Y,KAAKslB,QAAQllB,MAEpBJ,KAAKslB,QAAQllB,GAAMuY,EAAS+B,EAAM1b,QAItC,OADAgB,KAAKuiB,YACEviB,IACb,CACIilB,SAAAA,CAAUvK,EAAOqL,GACf,GAAqB,iBAAVrL,EACTA,EAAQmK,EAAYH,EAAMhK,GAAOA,YACxB,QAAiB,IAAVA,EAChBA,EAAQ,QACCxc,GAAAA,MAAM4iB,QAAQpG,GAEvB,IAAA,IAASpR,KADToR,EAAQA,EAAMzW,MAAM,GAEdqF,EAAGmF,QAAQnF,EAAGmF,OAAO3T,YAAYwO,EAAI,eAEnD,GAAgC,SAAfoR,EAAM9Y,MAAiC,aAAd5B,KAAK4B,KAEvC,IAAA,IAAS0H,KADToR,EAAQA,EAAMA,MAAMzW,MAAM,GAEpBqF,EAAGmF,QAAQnF,EAAGmF,OAAO3T,YAAYwO,EAAI,eAEnD,GAAiBoR,EAAM9Y,KACf8Y,EAAQ,CAACA,QACjB,GAAiBA,EAAMgB,KAAM,CACrB,QAA2B,IAAhBhB,EAAM7iB,MACf,MAAM,IAAIsf,MAAM,0CACgB,iBAAhBuD,EAAM7iB,QACtB6iB,EAAM7iB,MAAQuD,OAAOsf,EAAM7iB,QAE7B6iB,EAAQ,CAAC,IAAI4J,EAAY5J,GAChBA,MAAAA,GAAAA,EAAMsL,UAAYtL,EAAMle,UACjCke,EAAQ,CAAC,IAAIkK,EAAKlK,SAC1B,GAAiBA,EAAM5d,KACf4d,EAAQ,CAAC,IAAI+J,EAAO/J,QAC5B,KAAiBA,EAAM5Y,KAGf,MAAM,IAAIqV,MAAM,sCAFhBuD,EAAQ,CAAC,IAAItL,EAAQsL,GAG7B,CACM,IAAIuL,EAAYvL,EAAMhC,KAAKpP,IACpBA,EAAGoX,IAAKqE,EAAUmB,QAAQ5c,IAC/BA,EAAKA,EAAG6a,SACD1V,QAAQnF,EAAGmF,OAAO3T,YAAYwO,GACjCA,EAAGmX,IAAUqE,EAAcxb,GAC1BA,EAAGkR,OAAMlR,EAAGkR,KAAO,CAAE,QACI,IAAnBlR,EAAGkR,KAAKa,QACb0K,QAAwC,IAAvBA,EAAOvL,KAAKa,SAC/B/R,EAAGkR,KAAKa,OAAS0K,EAAOvL,KAAKa,OAAO5c,QAAQ,MAAO,KAGvD6K,EAAGmF,OAASzO,KAAKmkB,QACV7a,KAET,OAAO2c,CACb,CACIE,OAAAA,GAAqB,IAAVnB,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GAET,IAAA,IAAS5J,KADT4J,EAAWA,EAASa,UACQ,CAC1B,IAAInL,EAAQ1a,KAAKilB,UAAU7J,EAAOpb,KAAK6b,MAAO,WAAWgK,UACzD,IAAA,IAAS5kB,KAASyZ,EAAO1a,KAAKmkB,QAAQzJ,MAAM0L,QAAQnlB,GACpD,IAASb,IAAAA,KAAMJ,KAAKslB,QAClBtlB,KAAKslB,QAAQllB,GAAMJ,KAAKslB,QAAQllB,GAAMsa,EAAM1b,MAEtD,CAEM,OADAgB,KAAKuiB,YACEviB,IACb,CACIX,IAAAA,CAAK+b,GAGH,OAFAA,EAAM3M,OAASzO,KACfA,KAAKmkB,QAAQzJ,MAAMrb,KAAK+b,GACjBpb,IACb,CACIqmB,SAAAA,GACE,IAASplB,IAAAA,KAASjB,KAAKmkB,QAAQzJ,MAAOzZ,EAAMwN,YAAS,EAGrD,OAFAzO,KAAKmkB,QAAQzJ,MAAQ,GACrB1a,KAAKuiB,YACEviB,IACb,CACIlF,WAAAA,CAAYsgB,GAIV,IAAIzC,EACJ,IAASvY,IAAAA,KAJTgb,EAAQpb,KAAK0iB,MAAMtH,GACnBpb,KAAKmkB,QAAQzJ,MAAMU,GAAO3M,YAAS,EACnCzO,KAAKmkB,QAAQzJ,MAAMoL,OAAO1K,EAAO,GAElBpb,KAAKslB,SAClB3M,EAAS3Y,KAAKslB,QAAQllB,KACRgb,IACZpb,KAAKslB,QAAQllB,GAAMuY,EAAS,GAIhC,OADA3Y,KAAKuiB,YACEviB,IACb,CACIsmB,aAAAA,CAAcC,EAASpE,EAAMgD,GAW3B,OAVKA,IACHA,EAAWhD,EACXA,EAAO,CAAE,GAEXniB,KAAKuc,WAAWf,IACV2G,EAAKqE,QAAUrE,EAAKqE,MAAMtsB,SAASshB,EAAKE,OACxCyG,EAAKsE,OAASjL,EAAK3jB,MAAMqC,SAASioB,EAAKsE,QAC3CjL,EAAK3jB,MAAQ2jB,EAAK3jB,MAAM4G,QAAQ8nB,EAASpB,GAAQ,IAEnDnlB,KAAKuiB,YACEviB,IACb,CACIoL,IAAAA,CAAKma,GACH,OAAOvlB,KAAK0a,MAAMtP,KAAKma,EAC7B,CACIrJ,IAAAA,CAAKiJ,GACH,OAAOnlB,KAAKklB,MAAK,CAAC9J,EAAO9R,KACvB,IAAIga,EACJ,IACEA,EAAU6B,EAAS/J,EAAO9R,EAC3B,CAAA,MAAQjC,GACP,MAAM+T,EAAMqG,WAAWpa,EACjC,CAIQ,OAHgB,IAAZic,GAAqBlI,EAAMc,OAC7BoH,EAAUlI,EAAMc,KAAKiJ,IAEhB7B,CAAAA,GAEf,CACIoD,WAAAA,CAAY5pB,EAAMqoB,GAChB,OAAKA,EAQDroB,aAAgB4H,OACX1E,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,WAAf8R,EAAMxZ,MAAqB9E,EAAK+G,KAAKuX,EAAMte,MAC7C,OAAOqoB,EAAS/J,EAAO9R,EACnC,IAGatJ,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,WAAf8R,EAAMxZ,MAAqBwZ,EAAMte,OAASA,EAC5C,OAAOqoB,EAAS/J,EAAO9R,EACjC,KAjBQ6b,EAAWroB,EACJkD,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,WAAf8R,EAAMxZ,KACR,OAAOujB,EAAS/J,EAAO9R,EACnC,IAeA,CACI+S,YAAAA,CAAa8I,GACX,OAAOnlB,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,YAAf8R,EAAMxZ,KACR,OAAOujB,EAAS/J,EAAO9R,EACjC,GAEA,CACIiT,SAAAA,CAAUb,EAAMyJ,GACd,OAAKA,EAQDzJ,aAAgBhX,OACX1E,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,MAAmB8Z,EAAK7X,KAAKuX,EAAMM,MAC3C,OAAOyJ,EAAS/J,EAAO9R,EACnC,IAGatJ,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,MAAmBwZ,EAAMM,OAASA,EAC1C,OAAOyJ,EAAS/J,EAAO9R,EACjC,KAjBQ6b,EAAWzJ,EACJ1b,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,KACR,OAAOujB,EAAS/J,EAAO9R,EACnC,IAeA,CACIqd,SAAAA,CAAUX,EAAUb,GAClB,OAAKA,EAQDa,aAAoBthB,OACf1E,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,MAAmBokB,EAASniB,KAAKuX,EAAM4K,UAC/C,OAAOb,EAAS/J,EAAO9R,EACnC,IAGatJ,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,MAAmBwZ,EAAM4K,WAAaA,EAC9C,OAAOb,EAAS/J,EAAO9R,EACjC,KAjBQ6b,EAAWa,EACJhmB,KAAKkc,MAAK,CAACd,EAAO9R,KACvB,GAAmB,SAAf8R,EAAMxZ,KACR,OAAOujB,EAAS/J,EAAO9R,EACnC,IAeA,CACI,SAAIuS,GACF,GAAK7b,KAAKmkB,QAAQzJ,MAClB,OAAO1a,KAAKmkB,QAAQzJ,MAAM,EAChC,CACI,QAAIS,GACF,GAAKnb,KAAKmkB,QAAQzJ,MAClB,OAAO1a,KAAKmkB,QAAQzJ,MAAM1a,KAAKmkB,QAAQzJ,MAAM1b,OAAS,EAC5D,EAmCE,OAjCA+lB,EAAU6B,cAAiBC,IACzBnC,EAAQmC,CAAAA,EAEV9B,EAAU+B,aAAgBD,IACxBjC,EAAOiC,CAAAA,EAET9B,EAAUgC,eAAkBF,IAC1BpC,EAASoC,CAAAA,EAEX9B,EAAUiC,aAAgBH,IACxBlC,EAAOkC,CAAAA,EAETiX,GAAY/Y,EACZA,EAAUlS,QAAUkS,EACpBA,EAAUmB,QAAWjlB,IACA,WAAfA,EAAMW,KACRpK,OAAOyvB,eAAehmB,EAAOwjB,EAAOhrB,WACZ,SAAfwH,EAAMW,KACfpK,OAAOyvB,eAAehmB,EAAO2jB,EAAKnrB,WACV,SAAfwH,EAAMW,KACfpK,OAAOyvB,eAAehmB,EAAOqjB,EAAY7qB,WACjB,YAAfwH,EAAMW,KACfpK,OAAOyvB,eAAehmB,EAAOmO,EAAQ3V,WACb,SAAfwH,EAAMW,MACfpK,OAAOyvB,eAAehmB,EAAO0jB,EAAKlrB,WAEpCwH,EAAMyf,IAAM,EACRzf,EAAMyZ,OACRzZ,EAAMyZ,MAAM7Z,SAASua,IACnB2J,EAAUmB,QAAQ9K,EAAK,GAE/B,EAES0iB,EACT,CAGA,SAAS6C,KACP,GAAI3C,GAAmB,OAAO/B,GAC9B+B,GAAoB,EACpB,IAAIjZ,EAAY2b,KAChB,MAAMjc,UAAeM,EACnBpoB,WAAAA,CAAY0kB,GACV5J,MAAM4J,GACNrhB,KAAK4B,KAAO,QAClB,CACI4f,MAAAA,GAEE,OADKxhB,KAAKmkB,QAAQzJ,QAAO1a,KAAK0a,MAAQ,IAC/BjD,MAAM+J,UAAkBvO,UACrC,CACIkT,OAAAA,GAEE,OADKnmB,KAAKmkB,QAAQzJ,QAAO1a,KAAK0a,MAAQ,IAC/BjD,MAAM0O,WAAmBlT,UACtC,EAKE,OAHAgpB,GAASxX,EACTA,EAAO5R,QAAU4R,EACjBM,EAAUgC,eAAetC,GAClBwX,EACT,CAGA,SAAS2E,KACP,GAAI1C,GAAqB,OAAOD,GAChCC,GAAsB,EACtB,IACI9W,EAAYC,EADZtC,EAAY2b,KAEhB,MAAMpZ,UAAkBvC,EACtBpoB,WAAAA,CAAY0kB,GACV5J,MAAA8P,EAAA,CAAQ3lB,KAAM,YAAeyf,IACxBrhB,KAAK0a,QACR1a,KAAK0a,MAAQ,GAErB,CACI8M,QAAAA,GAAoB,IAAXrF,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAEd,OADW,IAAImU,EAAW,IAAIC,EAAarnB,KAAMmiB,GACrChjB,WAClB,EAUE,OARAmoB,EAAUG,mBAAsBZ,IAC9BO,EAAaP,CAAAA,EAEfS,EAAUI,kBAAqBb,IAC7BQ,EAAYR,CAAAA,EAEdoX,GAAa3W,EACbA,EAAUzU,QAAUyU,EACb2W,EACT,CAGA,SAAS4C,KACP,GAAIzC,GAAsB,OAAOD,GACjCC,GAAuB,EAqBvB,OADAD,GAAY,CAAEvW,OARD,WAGX,IAH0B,IACtBxnB,EAAK,GACLkJ,EAAY,GAFG2J,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,IAGZ3J,KACLlJ,GAfc,mEAeoB,GAAhB4K,KAAK6c,SAAgB,GAEzC,OAAOznB,CACR,EACqB0nB,eAlBD,SAACC,GAA+B,IAArBC,EAAc/U,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,GAC5C,OAAO,WAGL,IAH6B,IACzB7S,EAAK,GACLkJ,EAAY,GAFH0e,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,GAGN1e,KACLlJ,GAAM2nB,EAAS/c,KAAK6c,SAAWE,EAAS/oB,OAAS,GAEnD,OAAOoB,CACR,CACF,GAUM+9B,EACT,CAGA,SAAS2C,KACP,GAAIxC,GAAwB,OAAOD,GACnCC,GAAyB,EACzB,IAAIpW,WAAEA,EAAAA,aAAYC,GAAiBkV,IAC/BjV,QAAEA,EAAAA,KAAS7pB,GAAS8+B,IACpBhV,kBAAEA,EAAAA,mBAAmBC,GAAuB+U,GAQhD,MAAM9U,EACJ5rB,WAAAA,CAAYsb,EAAKkK,GACf,IAAiB,IAAbA,EAAKzJ,IAAT,CACA1Y,KAAKwoB,eAAevQ,GACpBjY,KAAKyoB,OAASzoB,KAAK0oB,UAAU1oB,KAAK2oB,WAAY,SAC9C,IAAI5F,EAAOZ,EAAKzJ,IAAMyJ,EAAKzJ,IAAIqK,UAAO,EAClCjhB,EAAO9B,KAAK4oB,QAAQzG,EAAKhkB,KAAM4kB,IAC9B/iB,KAAK6oB,SAAW1G,EAAKhkB,OACxB6B,KAAK6oB,QAAU1G,EAAKhkB,MAElB6B,KAAK6oB,UAAS7oB,KAAK+b,KAAOqM,EAAQpoB,KAAK6oB,UACvC/mB,IAAM9B,KAAK8B,KAAOA,EATE,CAU9B,CACIgnB,QAAAA,GAIE,OAHK9oB,KAAK+oB,gBACR/oB,KAAK+oB,cAAgB,IAAIV,EAAkBroB,KAAK8B,OAE3C9B,KAAK+oB,aAClB,CACIC,YAAAA,CAAalnB,GACX,IAIImnB,EAAWnnB,EAAKiB,MAFH,4CAEwBjB,EAAKiB,MADpC,4BAEV,GAAIkmB,EACF,OAAOC,mBAAmBpnB,EAAKqnB,OAAOF,EAAS,GAAGjqB,SAEpD,IAnCgBkD,EAmCZknB,EAAetnB,EAAKiB,MARH,mDAQ4BjB,EAAKiB,MAPxC,mCAQd,GAAIqmB,EACF,OArCclnB,EAqCIJ,EAAKqnB,OAAOC,EAAa,GAAGpqB,QApC9CqqB,OACKA,OAAOlrB,KAAK+D,EAAK,UAAUjI,WAE3B2I,OAAO0mB,KAAKpnB,GAmCnB,IAAIqnB,EAAWznB,EAAKiB,MAAM,mCAAmC,GAC7D,MAAM,IAAIoU,MAAM,mCAAqCoS,EAC3D,CACIC,gBAAAA,CAAiBC,GACf,OAAOA,EAAgBhrB,QAAQ,8BAA+B,IAAI0G,MACxE,CACIukB,KAAAA,CAAMhR,GACJ,MAAmB,iBAARA,IACoB,iBAAjBA,EAAIiR,UAAkD,iBAAlBjR,EAAIkR,WAA0B1rB,MAAM4iB,QAAQpI,EAAImR,UACxG,CACIrB,cAAAA,CAAevQ,GACb,IAAI6R,EAAW7R,EAAIlV,MAAM,+BACzB,GAAK+mB,EAAL,CACA,IAAIxR,EAAQL,EAAI8R,YAAYD,EAASzlB,OACjCmU,EAAMP,EAAIjU,QAAQ,KAAMsU,GACxBA,GAAcE,GAAAA,GAAU,IAC1BxY,KAAK2oB,WAAa3oB,KAAKwpB,iBAAiBvR,EAAI/R,UAAUoS,EAAOE,IAJhD,CAMrB,CACIwR,QAAAA,CAASznB,GAEP,GADAvC,KAAK+b,KAAOqM,EAAQ7lB,GAChB2lB,EAAW3lB,GAEb,OADAvC,KAAK6oB,QAAUtmB,EACR4lB,EAAa5lB,EAAM,SAAStI,WAAWkL,MAEtD,CACIyjB,OAAAA,CAAQrR,EAAMwL,GACZ,IAAa,IAATA,EAAgB,OAAO,EAC3B,GAAIA,EAAM,CACR,GAAoB,iBAATA,EACT,OAAOA,EACE,GAAgB,mBAATA,EAW1B,IAAmBA,aAAgBsF,EACzB,OAAOC,EAAmB2B,cAAclH,GAAM9oB,WACxD,GAAmB8oB,aAAgBuF,EACzB,OAAOvF,EAAK9oB,WACH,GAAA+F,KAAK0pB,MAAM3G,GACpB,OAAO7jB,KAAKC,UAAU4jB,GAEtB,MAAM,IAAI5L,MACR,2CAA6C4L,EAAK9oB,WAE9D,CApBU,IAAIiwB,EAAWnH,EAAKxL,GACpB,GAAI2S,EAAU,CACZ,IAAIxR,EAAM1Y,KAAKgqB,SAASE,GACxB,IAAKxR,EACH,MAAM,IAAIvB,MACR,uCAAyC+S,EAASjwB,YAGtD,OAAOye,CACnB,CAYA,KAAA,IAAiB1Y,KAAKyoB,OACd,OAAOzoB,KAAKgpB,aAAahpB,KAAK2oB,YACtC,GAAiB3oB,KAAK2oB,WAAY,CAC1B,IAAIjQ,EAAM1Y,KAAK2oB,WAEf,OADIpR,IAAMmB,EAAMna,EAAK6pB,EAAQ7Q,GAAOmB,IAC7B1Y,KAAKgqB,SAAStR,EAC7B,EACA,CACIgQ,SAAAA,CAAUjN,EAAQnD,GAChB,QAAKmD,GACEA,EAAO0N,OAAO,EAAG7Q,EAAMtZ,UAAYsZ,CAChD,CACI6R,WAAAA,GACE,SAAUnqB,KAAK8oB,WAAWsB,gBAAkBpqB,KAAK8oB,WAAWsB,eAAeprB,OAAS,EAC1F,EAIE,OAFAq/B,GAAc9V,EACdA,EAAY1V,QAAU0V,EACf8V,EACT,CAGA,SAAS0C,KACP,GAAIxC,GAAkB,OAAO5c,GAC7B4c,GAAmB,EACnB,IAAI3W,OAAEA,GAA6CiZ,MAC/CvW,WAAEA,EAAAA,QAAYC,GAAY8S,IAC1BhV,kBAAEA,EAAAA,mBAAmBC,GAAuB+U,IAC5C7S,cAAEA,EAAAA,cAAeC,GAAkB4S,GACnCnmB,EAAiBomB,KACjB/U,EAAcuY,KACd7pB,EAAoBomB,GACpB3S,EAAkB7T,OAAO,mBACzB8T,EAAqB/wB,QAAQyuB,GAAqBC,GAClDsC,EAAgBhxB,QAAQ2wB,GAAWD,GACvC,MAAMO,EACJluB,WAAAA,CAAYsb,GAAgB,IAAXkK,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACtB,GAAIgF,SAA6D,iBAARA,IAAqBA,EAAIhe,SAChF,MAAM,IAAIkd,MAA0Bc,oBAAAA,OAAAA,EAA2B,2BAkBjE,GAhBAjY,KAAKiY,IAAMA,EAAIhe,WACK,WAAhB+F,KAAKiY,IAAI,IAAmC,MAAhBjY,KAAKiY,IAAI,IACvCjY,KAAK8qB,QAAS,EACd9qB,KAAKiY,IAAMjY,KAAKiY,IAAIhU,MAAM,IAE1BjE,KAAK8qB,QAAS,EAEhB9qB,KAAKzF,SAAWyF,KAAKiY,IACjBkK,EAAK5nB,WAAUyF,KAAKzF,SAAW4nB,EAAK5nB,SAASN,YAC7CkoB,EAAKhkB,QACFysB,GAAiB,YAAY/mB,KAAKse,EAAKhkB,OAASmsB,EAAWnI,EAAKhkB,MACnE6B,KAAKuX,KAAO4K,EAAKhkB,KAEjB6B,KAAKuX,KAAOgT,EAAQpI,EAAKhkB,OAGzBysB,GAAiBD,EAAoB,CACvC,IAAIjS,EAAM,IAAI6P,EAAYvoB,KAAKiY,IAAKkK,GACpC,GAAIzJ,EAAI5W,KAAM,CACZ9B,KAAK0Y,IAAMA,EACX,IAAInB,EAAOmB,EAAIoQ,WAAWvR,MACrBvX,KAAKuX,MAAQA,IAAMvX,KAAKuX,KAAOvX,KAAK+qB,WAAWxT,GAC9D,CACA,CACWvX,KAAKuX,OACRvX,KAAKI,GAAK,cAAgBwnB,EAAO,GAAK,KAEpC5nB,KAAK0Y,MAAK1Y,KAAK0Y,IAAInB,KAAOvX,KAAK7B,KACzC,CACIO,KAAAA,CAAM0Y,EAASC,EAAMC,GAAmB,IAClCM,EAAWD,EAAS2L,EADGnB,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAElC,GAAIoE,GAAwB,iBAATA,EAAmB,CACpC,IAAIiB,EAAQjB,EACRmB,EAAMlB,EACV,GAA4B,iBAAjBgB,EAAM6I,OAAqB,CACpC,IAAItb,EAAM7F,KAAKgrB,WAAW1S,EAAM6I,QAChC9J,EAAOxR,EAAIwR,KACXC,EAASzR,EAAIolB,SAEb5T,EAAOiB,EAAMjB,KACbC,EAASgB,EAAMhB,OAEjB,GAA0B,iBAAfkB,EAAI2I,OAAqB,CAClC,IAAItb,EAAM7F,KAAKgrB,WAAWxS,EAAI2I,QAC9BxJ,EAAU9R,EAAIwR,KACdO,EAAY/R,EAAIolB,SAEhBtT,EAAUa,EAAInB,KACdO,EAAYY,EAAIlB,MAE1B,MAAA,IAAkBA,EAAQ,CAClB,IAAIzR,EAAM7F,KAAKgrB,WAAW3T,GAC1BA,EAAOxR,EAAIwR,KACXC,EAASzR,EAAIolB,GACrB,CACM,IAAI5nB,EAASrD,KAAKqD,OAAOgU,EAAMC,EAAQK,EAASC,GA2BhD,OAzBE0L,EADEjgB,EACQ,IAAI6T,EACZE,OACmB,IAAnB/T,EAAOsU,QAAqBtU,EAAOgU,KAAO,CAAEC,OAAQjU,EAAOiU,OAAQD,KAAMhU,EAAOgU,WAC7D,IAAnBhU,EAAOsU,QAAqBtU,EAAOiU,OAAS,CAAEA,OAAQjU,EAAOuU,UAAWP,KAAMhU,EAAOsU,SACrFtU,EAAOxG,OACPwG,EAAOkU,KACP4K,EAAK3K,QAGG,IAAIN,EACZE,OACY,IAAZO,EAAqBN,EAAO,CAAEC,SAAQD,aAC1B,IAAZM,EAAqBL,EAAS,CAAEA,OAAQM,EAAWP,KAAMM,GACzD3X,KAAKiY,IACLjY,KAAKuX,KACL4K,EAAK3K,SAGDmK,MAAQ,CAAErK,SAAQM,YAAWD,UAASN,OAAMxa,OAAQmD,KAAKiY,KAC7DjY,KAAKuX,OACHkT,IACFnH,EAAQ3B,MAAMjf,IAAM+nB,EAAczqB,KAAKuX,MAAMtd,YAE/CqpB,EAAQ3B,MAAMpK,KAAOvX,KAAKuX,MAErB+L,CACb,CACI0H,UAAAA,CAAW7J,GACT,IAAc+J,EACd,GAAKlrB,KAAK0qB,GAURQ,EAAclrB,KAAK0qB,OAVO,CAC1B,IAAIrS,EAAQrY,KAAKiY,IAAIlZ,MAAM,MAC3BmsB,EAAc,IAAIhtB,MAAMma,EAAMrZ,QAE9B,IADA,IAAImsB,EAAY,EACP7hB,EAAK,EAAG8hB,EAAK/S,EAAMrZ,OAAQsK,EAAK8hB,EAAI9hB,IAC3C4hB,EAAY5hB,GAAM6hB,EAClBA,GAAa9S,EAAM/O,GAAItK,OAAS,EAElCgB,KAAK0qB,GAAmBQ,EAK1B,IAAIjgB,EAAM,EACV,GAAIkW,GAFO+J,EAAYA,EAAYlsB,OAAS,GAG1CiM,EAAMigB,EAAYlsB,OAAS,OAI3B,IAFA,IACIqsB,EADA9S,EAAM2S,EAAYlsB,OAAS,EAExBiM,EAAMsN,GAEX,GAAI4I,EAAS+J,EADbG,EAAMpgB,GAAOsN,EAAMtN,GAAO,IAExBsN,EAAM8S,EAAM,MACb,MAAUlK,GAAU+J,EAAYG,EAAM,IAEhC,CACLpgB,EAAMogB,EACN,KACZ,CAJYpgB,EAAMogB,EAAM,CAIxB,CAGM,MAAO,CACLJ,IAAK9J,EAAS+J,EAAYjgB,GAAO,EACjCoM,KAAMpM,EAAM,EAEpB,CACI8f,UAAAA,CAAWxT,GACT,MAAI,YAAY1T,KAAK0T,GACZA,EAEFgT,EAAQvqB,KAAK0Y,IAAIoQ,WAAWwC,YAActrB,KAAK0Y,IAAIqD,MAAQ,IAAKxE,EAC7E,CACIlU,MAAAA,CAAOgU,EAAMC,EAAQK,EAASC,GAC5B,IAAK5X,KAAK0Y,IAAK,OAAO,EACtB,IAGI6S,EAIAC,EAPA1C,EAAW9oB,KAAK0Y,IAAIoQ,WACpB3qB,EAAO2qB,EAAS2C,oBAAoB,CAAEnU,SAAQD,SAClD,IAAKlZ,EAAKtB,OAAQ,OAAO,EAEF,iBAAZ8a,IACT4T,EAAKzC,EAAS2C,oBAAoB,CAAEnU,OAAQM,EAAWP,KAAMM,KAI7D6T,EADElB,EAAWnsB,EAAKtB,QACR4tB,EAActsB,EAAKtB,QAEnB,IAAI8F,IACZxE,EAAKtB,OACLmD,KAAK0Y,IAAIoQ,WAAWwC,YAAcb,EAAczqB,KAAK0Y,IAAImQ,UAG7D,IAAIvF,EAAU,CACZhM,OAAQnZ,EAAKmZ,OACbM,UAAW2T,GAAMA,EAAGjU,OACpBK,QAAS4T,GAAMA,EAAGlU,KAClBA,KAAMlZ,EAAKkZ,KACX3U,IAAK8oB,EAAQvxB,YAEf,GAAyB,UAArBuxB,EAAQE,SAAsB,CAChC,IAAIlB,EAGF,MAAM,IAAIrT,MAA6D,yDAFvEmM,EAAQ/L,KAAOiT,EAAcgB,EAIvC,CACM,IAAI3uB,EAASisB,EAAS6C,iBAAiBxtB,EAAKtB,QAE5C,OADIA,IAAQymB,EAAQzmB,OAASA,GACtBymB,CACb,CACIC,MAAAA,GACE,IAAIqI,EAAO,CAAE,EACb,IAAA,IAAS9uB,IAAQ,CAAC,SAAU,MAAO,OAAQ,MACvB,MAAdkD,KAAKlD,KACP8uB,EAAK9uB,GAAQkD,KAAKlD,IAStB,OANIkD,KAAK0Y,MACPkT,EAAKlT,IAAAA,EAAAA,CAAAA,EAAW1Y,KAAK0Y,KACjBkT,EAAKlT,IAAIqQ,gBACX6C,EAAKlT,IAAIqQ,mBAAgB,IAGtB6C,CACb,CACI,QAAIztB,GACF,OAAO6B,KAAKuX,MAAQvX,KAAKI,EAC/B,EAOE,OALAuhB,GAAQkJ,EACRA,EAAMhY,QAAUgY,EACZ5T,GAAqBA,EAAkB4U,eACzC5U,EAAkB4U,cAAchB,GAE3BlJ,EACT,CAGA,SAASqf,KACP,GAAIxC,GAAiB,OAAOziB,GAC5ByiB,GAAkB,EAClB,IACIpX,EAAYC,EADZtC,EAAY2b,KAEhB,MAAM/b,UAAaI,EACjBpoB,WAAAA,CAAY0kB,GACV5J,MAAM4J,GACNrhB,KAAK4B,KAAO,OACP5B,KAAK0a,QAAO1a,KAAK0a,MAAQ,GACpC,CACIuK,SAAAA,CAAU7J,EAAO2K,EAAQnkB,GACvB,IAAI8Y,EAAQjD,MAAMwN,UAAU7J,GAC5B,GAAI2K,EACF,GAAa,YAATnkB,EACE5B,KAAK0a,MAAM1b,OAAS,EACtB+mB,EAAOvL,KAAKa,OAASrb,KAAK0a,MAAM,GAAGF,KAAKa,cAEjC0K,EAAOvL,KAAKa,YAEZ,GAAArb,KAAK6b,QAAUkK,EACxB,IAAA,IAAS9kB,KAASyZ,EAChBzZ,EAAMuZ,KAAKa,OAAS0K,EAAOvL,KAAKa,OAItC,OAAOX,CACb,CACI5f,WAAAA,CAAYsgB,EAAO2Q,GACjB,IAAIpT,EAAS3Y,KAAK0iB,MAAMtH,GAIxB,OAHK2Q,GAAqB,IAAXpT,GAAgB3Y,KAAK0a,MAAM1b,OAAS,IACjDgB,KAAK0a,MAAM,GAAGF,KAAKa,OAASrb,KAAK0a,MAAM/B,GAAQ6B,KAAKa,QAE/C5D,MAAM3c,YAAYsgB,EAC/B,CACIoM,QAAAA,GAAoB,IAAXrF,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAEd,OADW,IAAImU,EAAW,IAAIC,EAAarnB,KAAMmiB,GACrChjB,WAClB,EAWE,OATAwlB,EAAK8C,mBAAsBZ,IACzBO,EAAaP,CAAAA,EAEflC,EAAK+C,kBAAqBb,IACxBQ,EAAYR,CAAAA,EAEd9K,GAAO4I,EACPA,EAAK9R,QAAU8R,EACfI,EAAUiC,aAAarC,GAChB5I,EACT,CAGA,SAASklB,KACP,GAAIvC,GAAiB,OAAOD,GAC5BC,GAAkB,EAClB,IAAIzS,EAAO,CACTC,MAAMzQ,GACGwQ,EAAKltB,MAAM0c,EAAQ,CAAC,MAAM,GAEnC0Q,MAAM1Q,GAEGwQ,EAAKltB,MAAM0c,EADL,CAAC,IAAK,KAAM,OAG3B1c,KAAAA,CAAM0c,EAAQ2Q,EAAYjR,GACxB,IAAIkR,EAAQ,GACRC,EAAU,GACVvtB,GAAQ,EACRwtB,EAAO,EACPC,GAAU,EACVC,EAAY,GACZC,GAAS,EACb,IAAA,IAASC,KAAUlR,EACbiR,EACFA,GAAS,EACW,OAAXC,EACTD,GAAS,EACAF,EACLG,IAAWF,IACbD,GAAU,GAEQ,MAAXG,GAA6B,MAAXA,GAC3BH,GAAU,EACVC,EAAYE,GACQ,MAAXA,EACTJ,GAAQ,EACY,MAAXI,EACLJ,EAAO,IAAGA,GAAQ,GACJ,IAATA,GACLH,EAAWlyB,SAASyyB,KAAS5tB,GAAQ,GAEvCA,GACc,KAAZutB,GAAgBD,EAAMhtB,KAAKitB,EAAQnnB,QACvCmnB,EAAU,GACVvtB,GAAQ,GAERutB,GAAWK,EAIf,OADIxR,GAAoB,KAAZmR,IAAgBD,EAAMhtB,KAAKitB,EAAQnnB,QACxCknB,CACb,GAIE,OAFAoS,GAASxS,EACTA,EAAKpZ,QAAUoZ,EACRwS,EACT,CAGA,SAASyC,KACP,GAAIvC,GAAiB,OAAO5hB,GAC5B4hB,GAAkB,EAClB,IAAI5Z,EAAY2b,KACZzU,EAAOgV,KACX,MAAMrc,UAAaG,EACjBpoB,WAAAA,CAAY0kB,GACV5J,MAAM4J,GACNrhB,KAAK4B,KAAO,OACP5B,KAAK0a,QAAO1a,KAAK0a,MAAQ,GACpC,CACI,aAAIle,GACF,OAAOyvB,EAAKC,MAAMlsB,KAAKgmB,SAC7B,CACI,aAAIxpB,CAAUqwB,GACZ,IAAI9pB,EAAQ/C,KAAKgmB,SAAWhmB,KAAKgmB,SAASjjB,MAAM,QAAU,KACtD+pB,EAAM/pB,EAAQA,EAAM,GAAK,IAAM/C,KAAK+a,IAAI,UAAW,cACvD/a,KAAKgmB,SAAW6G,EAAOtuB,KAAKuuB,EAClC,EAKE,OAHA/P,GAAO6H,EACPA,EAAK/R,QAAU+R,EACfG,EAAU+B,aAAalC,GAChB7H,EACT,CA2DA,SAASokB,KACP,GAAIpC,GAAyB,OAAOD,GACpCC,GAA0B,EAC1B,IAAI3W,QAAEA,EAAAA,SAAS4E,EAAAA,QAAUzC,EAAAA,IAASuC,GAAQuQ,IACtChV,kBAAEA,EAAAA,mBAAmBC,GAAuB+U,IAC5C5S,cAAEA,GAAkB4S,GACpBxS,EAAQkW,KACRpW,EAAqB/wB,QAAQyuB,GAAqBC,GAClDsC,EAAgBhxB,QAAQwuB,GAAWmC,GAAWyC,GAAYF,GAiT9D,OADAgS,GA/SA,MACEniC,WAAAA,CAAYwC,EAAW2c,EAAOqG,EAAM8K,GAClCjtB,KAAKb,UAAYA,EACjBa,KAAKktB,QAAU/K,EAAKzJ,KAAO,CAAE,EAC7B1Y,KAAK+b,KAAOD,EACZ9b,KAAKmiB,KAAOA,EACZniB,KAAKiY,IAAMgV,EACXjtB,KAAKmtB,YAAcF,EACnBjtB,KAAKotB,cAAgBptB,KAAKktB,QAAQ/uB,MAAQ6B,KAAKktB,QAAQG,SACvDrtB,KAAKstB,qBAAuCrtB,IAC5CD,KAAKutB,kBAAoCttB,IACzCD,KAAKwtB,iBAAmCvtB,GAC9C,CACIwtB,aAAAA,GACE,IAAIC,EAEFA,EADE1tB,KAAK2tB,WACG,gCAAkC3tB,KAAK4tB,SAAS5tB,KAAK0Y,IAAIze,YACvB,iBAA5B+F,KAAKktB,QAAQvE,WACnB3oB,KAAKktB,QAAQvE,WACqB,mBAA5B3oB,KAAKktB,QAAQvE,WACnB3oB,KAAKktB,QAAQvE,WAAW3oB,KAAKmiB,KAAKoJ,GAAIvrB,KAAK+b,MAE3C/b,KAAK6tB,aAAe,OAEhC,IAAIC,EAAM,KACN9tB,KAAKiY,IAAI/d,SAAS,UAAS4zB,EAAM,QACrC9tB,KAAKiY,KAAO6V,EAAM,wBAA0BJ,EAAU,KAC5D,CACIK,aAAAA,GACE,IAAShL,IAAAA,KAAQ/iB,KAAKguB,WAAY,CAChC,IAAI7vB,EAAO6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKwgB,EAAKxL,OACjCuE,EAAQiH,EAAKhH,MAAQqM,EAAQrF,EAAKxL,MAClCmB,OAAAA,GACgC,IAAhC1Y,KAAKktB,QAAQ9C,gBACf1R,EAAM,IAAI2P,EAAkBtF,EAAKjhB,OACzBsoB,iBACN1R,EAAI0R,eAAiB,MAGvB1R,EAAMqK,EAAK+F,WAEb9oB,KAAK0Y,IAAIwV,eAAexV,EAAKva,EAAM6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKuZ,IAChE,CACA,CACIqS,eAAAA,GACE,IAAgC,IAA5BnuB,KAAKktB,QAAQvE,WACjB,GAAI3oB,KAAK+b,KAEP,IADA,IAAI9a,EACKqI,EAAKtJ,KAAK+b,KAAKrB,MAAM1b,OAAS,EAAGsK,GAAM,EAAGA,IAE9B,aADnBrI,EAAQjB,KAAK+b,KAAKrB,MAAMpR,IACd1H,MACNX,EAAMa,KAAK4D,WAAW,wBACxB1F,KAAK+b,KAAKjhB,YAAYwO,QAGjBtJ,KAAKiY,MACdjY,KAAKiY,IAAMjY,KAAKiY,IAAIxZ,QAAQ,0BAA2B,IAE/D,CACI2vB,QAAAA,GAEE,GADApuB,KAAKmuB,kBACDvD,GAAiBD,GAAsB3qB,KAAK0pB,QAC9C,OAAO1pB,KAAKquB,cAEZ,IAAI/K,EAAU,GAId,OAHAtjB,KAAKb,UAAUa,KAAK+b,MAAOzS,IACzBga,GAAWha,CAAAA,IAEN,CAACga,EAEhB,CACI+K,WAAAA,GACE,GAAIruB,KAAK+b,KACP/b,KAAKsuB,sBACI,GAA2B,IAA3BtuB,KAAKguB,WAAWhvB,OAAc,CACvC,IAAI+jB,EAAO/iB,KAAKguB,WAAW,GAAGlF,WAC9B/F,EAAKxL,KAAOvX,KAAK6tB,aACjB7tB,KAAK0Y,IAAM4P,EAAmB2B,cAAclH,EAAM,CAChDwL,sBAAsB,SAGxBvuB,KAAK0Y,IAAM,IAAI4P,EAAmB,CAChC/Q,KAAMvX,KAAK6tB,aACXU,sBAAsB,IAExBvuB,KAAK0Y,IAAI8V,WAAW,CAClBC,UAAW,CAAEnX,OAAQ,EAAGD,KAAM,GAC9Bra,SAAU,CAAEsa,OAAQ,EAAGD,KAAM,GAC7Bxa,OAAQmD,KAAKmiB,KAAKhkB,KAAO6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKvC,KAAKmiB,KAAKhkB,OAAS,gBAMrE,OAHI6B,KAAK0uB,oBAAoB1uB,KAAK2uB,oBAC9B3uB,KAAK+b,MAAQ/b,KAAKguB,WAAWhvB,OAAS,GAAGgB,KAAK+tB,gBAC9C/tB,KAAK4uB,gBAAgB5uB,KAAKytB,gBAC1BztB,KAAK2tB,WACA,CAAC3tB,KAAKiY,KAEN,CAACjY,KAAKiY,IAAKjY,KAAK0Y,IAE/B,CACI4V,cAAAA,GACEtuB,KAAKiY,IAAM,GACXjY,KAAK0Y,IAAM,IAAI4P,EAAmB,CAChC/Q,KAAMvX,KAAK6tB,aACXU,sBAAsB,IAExB,IAQIpT,EAAM9C,EARNhB,EAAO,EACPC,EAAS,EACTuX,EAAW,cACXC,EAAU,CACZL,UAAW,CAAEnX,OAAQ,EAAGD,KAAM,GAC9Bra,SAAU,CAAEsa,OAAQ,EAAGD,KAAM,GAC7Bxa,OAAQ,IAGVmD,KAAKb,UAAUa,KAAK+b,MAAM,CAAC7Z,EAAKjB,EAAOW,KAyBrC,GAxBA5B,KAAKiY,KAAO/V,EACRjB,GAAkB,QAATW,IACXktB,EAAQL,UAAUpX,KAAOA,EACzByX,EAAQL,UAAUnX,OAASA,EAAS,EAChCrW,EAAMpE,QAAUoE,EAAMpE,OAAOyb,OAC/BwW,EAAQjyB,OAASmD,KAAK+uB,WAAW9tB,GACjC6tB,EAAQ9xB,SAASqa,KAAOpW,EAAMpE,OAAOyb,MAAMjB,KAC3CyX,EAAQ9xB,SAASsa,OAASrW,EAAMpE,OAAOyb,MAAMhB,OAAS,EACtDtX,KAAK0Y,IAAI8V,WAAWM,KAEpBA,EAAQjyB,OAASgyB,EACjBC,EAAQ9xB,SAASqa,KAAO,EACxByX,EAAQ9xB,SAASsa,OAAS,EAC1BtX,KAAK0Y,IAAI8V,WAAWM,MAGxBzW,EAAQnW,EAAIa,MAAM,SAEhBsU,GAAQgB,EAAMrZ,OACdmc,EAAOjZ,EAAI6nB,YAAY,MACvBzS,EAASpV,EAAIlD,OAASmc,GAEtB7D,GAAUpV,EAAIlD,OAEZiC,GAAkB,UAATW,EAAkB,CAC7B,IAAIib,EAAI5b,EAAMwN,QAAU,CAAE+L,KAAM,CAAA,IACD,SAAfvZ,EAAMW,MAAkC,WAAfX,EAAMW,OAAsBX,EAAMyZ,QACzDzZ,IAAU4b,EAAE1B,OAAQ0B,EAAErC,KAAKN,YACvCjZ,EAAMpE,QAAUoE,EAAMpE,OAAO2b,KAC/BsW,EAAQjyB,OAASmD,KAAK+uB,WAAW9tB,GACjC6tB,EAAQ9xB,SAASqa,KAAOpW,EAAMpE,OAAO2b,IAAInB,KACzCyX,EAAQ9xB,SAASsa,OAASrW,EAAMpE,OAAO2b,IAAIlB,OAAS,EACpDwX,EAAQL,UAAUpX,KAAOA,EACzByX,EAAQL,UAAUnX,OAASA,EAAS,EACpCtX,KAAK0Y,IAAI8V,WAAWM,KAEpBA,EAAQjyB,OAASgyB,EACjBC,EAAQ9xB,SAASqa,KAAO,EACxByX,EAAQ9xB,SAASsa,OAAS,EAC1BwX,EAAQL,UAAUpX,KAAOA,EACzByX,EAAQL,UAAUnX,OAASA,EAAS,EACpCtX,KAAK0Y,IAAI8V,WAAWM,IAGlC,IAEA,CACIF,YAAAA,GACE,QAAI5uB,KAAK2tB,kBAG8B,IAA5B3tB,KAAKktB,QAAQvE,WACf3oB,KAAKktB,QAAQvE,YAElB3oB,KAAKguB,WAAWhvB,QACXgB,KAAKguB,WAAW5iB,MAAM9B,GAAOA,EAAGqf,aAG/C,CACIgF,QAAAA,GACE,QAAmC,IAAxB3tB,KAAKktB,QAAQzE,OACtB,OAAOzoB,KAAKktB,QAAQzE,OAEtB,IAAIE,EAAa3oB,KAAKktB,QAAQvE,WAC9B,YAA0B,IAAfA,IAA6C,IAAfA,MAGrC3oB,KAAKguB,WAAWhvB,QACXgB,KAAKguB,WAAW5iB,MAAM9B,GAAOA,EAAGmf,SAG/C,CACIiB,KAAAA,GACE,YAA6B,IAAlB1pB,KAAKmiB,KAAKzJ,MACV1Y,KAAKmiB,KAAKzJ,IAEd1Y,KAAKguB,WAAWhvB,OAAS,CACtC,CACI0vB,gBAAAA,GACE,YAA2C,IAAhC1uB,KAAKktB,QAAQ9C,eACfpqB,KAAKktB,QAAQ9C,gBAElBpqB,KAAKguB,WAAWhvB,QACXgB,KAAKguB,WAAW5iB,MAAM9B,GAAOA,EAAG6gB,eAG/C,CACI0D,UAAAA,GACE,OAAI7tB,KAAKmiB,KAAKoJ,GACLvrB,KAAKuC,KAAKvC,KAAKmiB,KAAKoJ,IAClBvrB,KAAKmiB,KAAKhkB,KACZ6B,KAAKuC,KAAKvC,KAAKmiB,KAAKhkB,MAEpB,QAEf,CACIoE,IAAAA,CAAKgV,GACH,GAAIvX,KAAKktB,QAAQG,SAAU,OAAO9V,EAClC,GAA2B,KAAvBA,EAAKyX,WAAW,GAAW,OAAOzX,EACtC,GAAI,YAAY1T,KAAK0T,GAAO,OAAOA,EACnC,IAAI0X,EAASjvB,KAAKutB,cAAcvzB,IAAIud,GACpC,GAAI0X,EAAQ,OAAOA,EACnB,IAAI9wB,EAAO6B,KAAKmiB,KAAKoJ,GAAKnD,EAAQpoB,KAAKmiB,KAAKoJ,IAAM,IACX,iBAA5BvrB,KAAKktB,QAAQvE,aACtBxqB,EAAOiqB,EAAQmC,EAAQpsB,EAAM6B,KAAKktB,QAAQvE,cAE5C,IAAIpmB,EAAOyqB,EAAS7uB,EAAMoZ,GAE1B,OADAvX,KAAKutB,cAAcnsB,IAAImW,EAAMhV,GACtBA,CACb,CACIyrB,QAAAA,GACE,IAAKhuB,KAAKkvB,aAER,GADAlvB,KAAKkvB,aAAe,GAChBlvB,KAAK+b,KACP/b,KAAK+b,KAAKG,MAAMjb,IACd,GAAIA,EAAMpE,QAAUoE,EAAMpE,OAAO8kB,MAAMjJ,IAAK,CAC1C,IAAIA,EAAMzX,EAAMpE,OAAO8kB,MAAMjJ,IACxB1Y,KAAKkvB,aAAah1B,SAASwe,IAC9B1Y,KAAKkvB,aAAa7vB,KAAKqZ,EAEvC,SAEe,CACL,IAAIoL,EAAS,IAAI+G,EAAM7qB,KAAKmtB,YAAantB,KAAKmiB,MAC1C2B,EAAOpL,KAAK1Y,KAAKkvB,aAAa7vB,KAAKykB,EAAOpL,IACxD,CAEM,OAAO1Y,KAAKkvB,YAClB,CACIP,iBAAAA,GACE,IAAIQ,EAAU,CAAE,EAChB,GAAInvB,KAAK+b,KACP/b,KAAK+b,KAAKG,MAAMjb,IACd,GAAIA,EAAMpE,OAAQ,CAChB,IAAIsB,EAAO8C,EAAMpE,OAAO8kB,MAAMxjB,KAC9B,GAAIA,IAASgxB,EAAQhxB,GAAO,CAC1BgxB,EAAQhxB,IAAQ,EAChB,IAAIqtB,EAAUxrB,KAAKotB,aAAeptB,KAAKovB,UAAUjxB,GAAQ6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKpE,IAC9E6B,KAAK0Y,IAAI2W,iBAAiB7D,EAASvqB,EAAMpE,OAAO8kB,MAAM1J,IACpE,CACA,UAEA,GAAiBjY,KAAKiY,IAAK,CACnB,IAAI9Z,EAAO6B,KAAKmiB,KAAKhkB,KAAO6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKvC,KAAKmiB,KAAKhkB,OAAS,cACpE6B,KAAK0Y,IAAI2W,iBAAiBlxB,EAAM6B,KAAKiY,IAC7C,CACA,CACI8W,UAAAA,CAAW9tB,GACT,OAAIjB,KAAKktB,QAAQ/uB,KACR6B,KAAKiuB,MAAMjuB,KAAKktB,QAAQ/uB,MACtB6B,KAAKotB,aACPptB,KAAKovB,UAAUnuB,EAAMpE,OAAO8kB,MAAMxjB,MAElC6B,KAAKiuB,MAAMjuB,KAAKuC,KAAKtB,EAAMpE,OAAO8kB,MAAMxjB,MAEvD,CACIyvB,QAAAA,CAAS1rB,GACP,OAAImnB,OACKA,OAAOlrB,KAAK+D,GAAKjI,SAAS,UAE1B2I,OAAO0sB,KAAKC,SAASC,mBAAmBttB,IAEvD,CACIktB,SAAAA,CAAU7sB,GACR,IAAI0sB,EAASjvB,KAAKstB,iBAAiBtzB,IAAIuI,GACvC,GAAI0sB,EAAQ,OAAOA,EACnB,GAAIxE,EAAe,CACjB,IAAIgF,EAAUhF,EAAcloB,GAAMtI,WAElC,OADA+F,KAAKstB,iBAAiBlsB,IAAImB,EAAMktB,GACzBA,EAEP,MAAM,IAAItY,MACR,+DAGV,CACI8W,KAAAA,CAAM1rB,GACJ,IAAI0sB,EAASjvB,KAAKwtB,aAAaxzB,IAAIuI,GACnC,GAAI0sB,EAAQ,OAAOA,EACP,OAARnC,IACFvqB,EAAOA,EAAK9D,QAAQ,MAAO,MAE7B,IAAIiE,EAAMgtB,UAAUntB,GAAM9D,QAAQ,QAAS+wB,oBAE3C,OADAxvB,KAAKwtB,aAAapsB,IAAImB,EAAMG,GACrBA,CACb,GAGSo8B,EACT,CAGA,SAASsC,KACP,GAAInC,GAAqB,OAAOD,GAChCC,GAAsB,EACtB,IAAMrP,EAAe,IAAIZ,WAAW,GAC9Ba,EAAe,IAAIb,WAAW,GAC9Bc,EAAY,KAAKd,WAAW,GAC5Be,EAAQ,IAAIf,WAAW,GACvBgB,EAAU,KAAKhB,WAAW,GAC1BiB,EAAQ,IAAIjB,WAAW,GACvBkB,EAAO,KAAKlB,WAAW,GACvBmB,EAAM,KAAInB,WAAW,GACrBoB,EAAK,KAAKpB,WAAW,GACrBqB,EAAc,IAAIrB,WAAW,GAC7BsB,EAAe,IAAItB,WAAW,GAC9BuB,EAAmB,IAAIvB,WAAW,GAClCwB,EAAoB,IAAIxB,WAAW,GACnCyB,EAAa,IAAIzB,WAAW,GAC5B0B,EAAc,IAAI1B,WAAW,GAC7B2B,EAAY,IAAI3B,WAAW,GAC3B4B,EAAW,IAAI5B,WAAW,GAC1B6B,EAAQ,IAAI7B,WAAW,GACvB8B,EAAK,IAAI9B,WAAW,GACpB+B,EAAY,6BACZC,EAAc,wCACdC,EAAiB,gBACjBC,EAAgB,WA0LtB,OAzLA8N,GAAW,SAAmBlb,GAAsB,IAG9C1K,EAAMsU,EAAShB,EAAQjK,EAAM0O,EAC7BC,EAAcC,EAASC,EAAWz1B,EAAIknB,EAJNxb,EAAU0L,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAC1CgF,EAAM6L,EAAO7L,IAAIsZ,UACjBxF,EAASxkB,EAAQiqB,aAGjBxyB,EAASiZ,EAAIjZ,OACb6G,EAAM,EACNsF,EAAS,GACTsmB,EAAW,GAIf,SAASC,EAASC,GAChB,MAAM7N,EAAOplB,MAAM,YAAcizB,EAAM9rB,EAC7C,CAoKI,MAAO,CACL+rB,KAJF,SAAcC,GACZJ,EAASpyB,KAAKwyB,EACpB,EAGMC,UArKF,WACE,OAA2B,IAApBL,EAASzyB,QAAgB6G,GAAO7G,CAC7C,EAoKM+yB,UAnKF,SAAmB5P,GACjB,GAAIsP,EAASzyB,OAAQ,OAAOyyB,EAASptB,MACrC,KAAIwB,GAAO7G,GAAX,CACA,IAAIgzB,IAAiB7P,GAAOA,EAAK6P,eAEjC,OADA5Y,EAAOnB,EAAI+W,WAAWnpB,IAEpB,KAAKmqB,EACL,KAAKC,EACL,KAAKE,EACL,KAAKC,EACL,KAAKF,EACHzN,EAAO5c,EACP,GACE4c,GAAQ,EACRrJ,EAAOnB,EAAI+W,WAAWvM,SACfrJ,IAAS6W,GAAS7W,IAAS4W,GAAW5W,IAAS+W,GAAO/W,IAASgX,GAAMhX,IAAS8W,GACvFkB,EAAe,CAAC,QAASnZ,EAAIhU,MAAM4B,EAAK4c,IACxC5c,EAAM4c,EAAO,EACb,MAEF,KAAK4N,EACL,KAAKC,EACL,KAAKG,EACL,KAAKC,EACL,KAAKG,EACL,KAAKF,EACL,KAAKH,EACH,IAAIyB,EAAc72B,OAAO82B,aAAa9Y,GACtCgY,EAAe,CAACa,EAAaA,EAAapsB,GAC1C,MAEF,KAAK0qB,EAGH,GAFAxN,EAAO5X,EAAOnM,OAASmM,EAAO9G,MAAM,GAAK,GACzCxI,EAAKoc,EAAI+W,WAAWnpB,EAAM,GACb,QAATkd,GAAkBlnB,IAAO+zB,GAAgB/zB,IAAOg0B,GAAgBh0B,IAAOo0B,GAASp0B,IAAOm0B,GAAWn0B,IAAOs0B,GAAOt0B,IAAOq0B,GAAQr0B,IAAOu0B,EAAI,CAC5I3N,EAAO5c,EACP,EAAG,CAGD,GAFAwrB,GAAU,GAEO,KADjB5O,EAAOxK,EAAIjU,QAAQ,IAAKye,EAAO,IACd,CACf,GAAIsJ,GAAUiG,EAAgB,CAC5BvP,EAAO5c,EACP,MAEA6rB,EAAS,UAE3B,CAEc,IADAJ,EAAY7O,EACLxK,EAAI+W,WAAWsC,EAAY,KAAOxB,GACvCwB,GAAa,EACbD,GAAWA,QAENA,GACTD,EAAe,CAAC,WAAYnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GAC3D5c,EAAM4c,OAENA,EAAOxK,EAAIjU,QAAQ,IAAK6B,EAAM,GAC9B6nB,EAAUzV,EAAIhU,MAAM4B,EAAK4c,EAAO,IACnB,IAATA,GAAewO,EAAeptB,KAAK6pB,GACrC0D,EAAe,CAAC,IAAK,IAAKvrB,IAE1BurB,EAAe,CAAC,WAAY1D,EAAS7nB,EAAK4c,GAC1C5c,EAAM4c,GAGV,MAEF,KAAKmN,EACL,KAAKC,EACHsB,EAAQ/X,IAASwW,EAAe,IAAM,IACtCnN,EAAO5c,EACP,EAAG,CAGD,GAFAwrB,GAAU,GAEO,KADjB5O,EAAOxK,EAAIjU,QAAQmtB,EAAO1O,EAAO,IAChB,CACf,GAAIsJ,GAAUiG,EAAgB,CAC5BvP,EAAO5c,EAAM,EACb,MAEA6rB,EAAS,SAEzB,CAEY,IADAJ,EAAY7O,EACLxK,EAAI+W,WAAWsC,EAAY,KAAOxB,GACvCwB,GAAa,EACbD,GAAWA,QAENA,GACTD,EAAe,CAAC,SAAUnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GACzD5c,EAAM4c,EACN,MAEF,KAAKqO,EACHC,EAAUoB,UAAYtsB,EAAM,EAC5BkrB,EAAUltB,KAAKoU,GAEbwK,EAD0B,IAAxBsO,EAAUoB,UACLla,EAAIjZ,OAAS,EAEb+xB,EAAUoB,UAAY,EAE/Bf,EAAe,CAAC,UAAWnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GAC1D5c,EAAM4c,EACN,MAEF,KAAKqN,EAGH,IAFArN,EAAO5c,EACP6mB,GAAS,EACFzU,EAAI+W,WAAWvM,EAAO,KAAOqN,GAClCrN,GAAQ,EACRiK,GAAUA,EAGZ,GADAtT,EAAOnB,EAAI+W,WAAWvM,EAAO,GACzBiK,GAAUtT,IAAS2W,GAAS3W,IAAS6W,GAAS7W,IAAS4W,GAAW5W,IAAS+W,GAAO/W,IAASgX,GAAMhX,IAAS8W,IAC5GzN,GAAQ,EACJyO,EAAcrtB,KAAKoU,EAAI1R,OAAOkc,KAAQ,CACxC,KAAOyO,EAAcrtB,KAAKoU,EAAI1R,OAAOkc,EAAO,KAC1CA,GAAQ,EAENxK,EAAI+W,WAAWvM,EAAO,KAAOwN,IAC/BxN,GAAQ,EAExB,CAEU2O,EAAe,CAAC,OAAQnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GACvD5c,EAAM4c,EACN,MAEF,QACMrJ,IAAS2W,GAAS9X,EAAI+W,WAAWnpB,EAAM,KAAO+qB,GAEnC,KADbnO,EAAOxK,EAAIjU,QAAQ,KAAM6B,EAAM,GAAK,KAE9BkmB,GAAUiG,EACZvP,EAAOxK,EAAIjZ,OAEX0yB,EAAS,YAGbN,EAAe,CAAC,UAAWnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GAC1D5c,EAAM4c,IAENuO,EAAYmB,UAAYtsB,EAAM,EAC9BmrB,EAAYntB,KAAKoU,GAEfwK,EAD4B,IAA1BuO,EAAYmB,UACPla,EAAIjZ,OAAS,EAEbgyB,EAAYmB,UAAY,EAEjCf,EAAe,CAAC,OAAQnZ,EAAIhU,MAAM4B,EAAK4c,EAAO,GAAI5c,EAAK4c,GACvDtX,EAAO9L,KAAK+xB,GACZvrB,EAAM4c,GAMZ,OADA5c,IACOurB,CAzJY,CA0JzB,EAQMlQ,SA7KF,WACE,OAAOrb,CACb,EA6KG,EACMm5B,EACT,CAGA,SAASqC,KACP,GAAInC,GAAmB,OAAOtH,GAC9BsH,GAAoB,EACpB,IAAIza,EAASkc,KACTvxB,EAAUoxB,KACVlc,EAAcmc,KACd9b,EAAOqc,KACPpc,EAAOsc,KACP7O,EAAY+O,KACV9O,EAAwB,CAC5BC,OAAO,EACPpG,OAAO,GAqgBT,OADAyL,GA3fA,MACEj7B,WAAAA,CAAYmnB,GACV9jB,KAAK2hB,MAAQmC,EACb9jB,KAAK+b,KAAO,IAAI4I,EAChB3kB,KAAKssB,QAAUtsB,KAAK+b,KACpB/b,KAAKwyB,OAAS,GACdxyB,KAAKka,WAAY,EACjBla,KAAKyyB,kBACLzyB,KAAK+b,KAAKlf,OAAS,CAAE8kB,MAAOmC,EAAQxL,MAAO,CAAEhB,OAAQ,EAAGD,KAAM,EAAG8J,OAAQ,GAC/E,CACI9G,MAAAA,CAAOwX,GACL,IAMIjwB,EACAmhB,EACA2P,EARAzxB,EAAQ,IAAIwjB,EAChBxjB,EAAMnE,KAAO+0B,EAAM,GAAG5tB,MAAM,GACT,KAAfhD,EAAMnE,MACRkD,KAAK2yB,cAAc1xB,EAAO4wB,GAE5B7xB,KAAK4yB,KAAK3xB,EAAO4wB,EAAM,IAQvB,IAJA,IAAI1W,GAAO,EACPlR,GAAO,EACPqQ,EAAS,GACTuY,EAAW,IACP7yB,KAAKqyB,UAAUP,aAAa,CAUlC,GAPa,OADblwB,GADAiwB,EAAQ7xB,KAAKqyB,UAAUN,aACV,KACgB,MAATnwB,EAClBixB,EAASxzB,KAAc,MAATuC,EAAe,IAAM,KACjB,MAATA,GAAgBixB,EAAS7zB,OAAS,EAC3C6zB,EAASxzB,KAAK,KACLuC,IAASixB,EAASA,EAAS7zB,OAAS,IAC7C6zB,EAASxuB,MAEa,IAApBwuB,EAAS7zB,OAAc,CACzB,GAAa,MAAT4C,EAAc,CAChBX,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YAAYjB,EAAM,IAC1C5wB,EAAMpE,OAAO2b,IAAI2I,SACjBnhB,KAAKka,WAAY,EACjB,KACZ,CAAA,GAA8B,MAATtY,EAAc,CACvBqI,GAAO,EACP,KACZ,CAAA,GAA8B,MAATrI,EAAc,CACvB,GAAI0Y,EAAOtb,OAAS,EAAG,CAGrB,IADA+jB,EAAOzI,EADPoY,EAAQpY,EAAOtb,OAAS,GAEjB+jB,GAAoB,UAAZA,EAAK,IAClBA,EAAOzI,IAASoY,GAEd3P,IACF9hB,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YAAY/P,EAAK,IAAMA,EAAK,IACpD9hB,EAAMpE,OAAO2b,IAAI2I,SAEjC,CACYnhB,KAAKwY,IAAIqZ,GACT,MAEAvX,EAAOjb,KAAKwyB,QAGdvX,EAAOjb,KAAKwyB,GAEd,GAAI7xB,KAAKqyB,UAAUP,YAAa,CAC9B3W,GAAO,EACP,KACV,CACA,CACMla,EAAMuZ,KAAKI,QAAU5a,KAAK+yB,yBAAyBzY,GAC/CA,EAAOtb,QACTiC,EAAMuZ,KAAKC,UAAYza,KAAKgzB,2BAA2B1Y,GACvDta,KAAK+a,IAAI9Z,EAAO,SAAUqZ,GACtBa,IACF0W,EAAQvX,EAAOA,EAAOtb,OAAS,GAC/BiC,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YAAYjB,EAAM,IAAMA,EAAM,IACtD5wB,EAAMpE,OAAO2b,IAAI2I,SACjBnhB,KAAKwyB,OAASvxB,EAAMuZ,KAAKI,QACzB3Z,EAAMuZ,KAAKI,QAAU,MAGvB3Z,EAAMuZ,KAAKC,UAAY,GACvBxZ,EAAMqZ,OAAS,IAEbrQ,IACFhJ,EAAMyZ,MAAQ,GACd1a,KAAKssB,QAAUrrB,EAEvB,CACIgyB,oBAAAA,CAAqBC,GACnB,IAAIrZ,EAAQ7Z,KAAK6Z,MAAMqZ,GACvB,IAAc,IAAVrZ,EAAJ,CAGA,IAFA,IACIgY,EADAsB,EAAU,EAELpS,EAAIlH,EAAQ,EAAGkH,GAAK,IAEV,WADjB8Q,EAAQqB,EAAOnS,IACL,IAEQ,KADhBoS,GAAW,IAHiBpS,KAOhC,MAAM/gB,KAAK2hB,MAAMjjB,MACf,mBACa,SAAbmzB,EAAM,GAAgBA,EAAM,GAAK,EAAIA,EAAM,GAZxB,CAc3B,CACIhY,KAAAA,CAAMqZ,GACJ,IACInQ,EAAM8O,EAAOjwB,EADbixB,EAAW,EAEf,IAAA,IAAUvpB,EAAI7H,KAAYyxB,EAAOE,UAAW,CAS1C,GANa,OADbxxB,GADAiwB,EAAQpwB,GACK,MAEXoxB,GAAY,GAED,MAATjxB,IACFixB,GAAY,GAEG,IAAbA,GAA2B,MAATjxB,EAAc,CAClC,GAAKmhB,EAEf,IAAiC,SAAZA,EAAK,IAA6B,WAAZA,EAAK,GACpC,SAEA,OAAOzZ,CACnB,CALYtJ,KAAKqzB,YAAYxB,EAM7B,CACQ9O,EAAO8O,CACf,CACM,OAAO,CACb,CACI1hB,OAAAA,CAAQ0hB,GACN,IAAI5wB,EAAQ,IAAImO,EAChBpP,KAAK4yB,KAAK3xB,EAAO4wB,EAAM,IACvB5wB,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YAAYjB,EAAM,IAAMA,EAAM,IACtD5wB,EAAMpE,OAAO2b,IAAI2I,SACjB,IAAIrf,EAAO+vB,EAAM,GAAG5tB,MAAM,GAAK,GAC/B,GAAI,QAAQJ,KAAK/B,GACfb,EAAMa,KAAO,GACbb,EAAMuZ,KAAKc,KAAOxZ,EAClBb,EAAMuZ,KAAKe,MAAQ,OACd,CACL,IAAIxY,EAAQjB,EAAKiB,MAAM,wBACvB9B,EAAMa,KAAOiB,EAAM,GACnB9B,EAAMuZ,KAAKc,KAAOvY,EAAM,GACxB9B,EAAMuZ,KAAKe,MAAQxY,EAAM,EACjC,CACA,CACI0vB,eAAAA,GACEzyB,KAAKqyB,UAAYA,EAAUryB,KAAK2hB,MACtC,CACInG,IAAAA,CAAK0X,EAAQI,GACX,IAAIryB,EAAQ,IAAIqjB,EAChBtkB,KAAK4yB,KAAK3xB,EAAOiyB,EAAO,GAAG,IAC3B,IAuBIrB,EAvBA1W,EAAO+X,EAAOA,EAAOl0B,OAAS,GASlC,IARgB,MAAZmc,EAAK,KACPnb,KAAKka,WAAY,EACjBgZ,EAAO7uB,OAETpD,EAAMpE,OAAO2b,IAAMxY,KAAK8yB,YACtB3X,EAAK,IAAMA,EAAK,IAtKtB,SAA8B+X,GAC5B,IAAA,IAAS5pB,EAAK4pB,EAAOl0B,OAAS,EAAGsK,GAAM,EAAGA,IAAM,CAC9C,IAAIuoB,EAAQqB,EAAO5pB,GACfzD,EAAMgsB,EAAM,IAAMA,EAAM,GAC5B,GAAIhsB,EAAK,OAAOA,CACtB,CACA,CAgK8B0tB,CAAqBL,IAE7CjyB,EAAMpE,OAAO2b,IAAI2I,SACO,SAAjB+R,EAAO,GAAG,IACO,IAAlBA,EAAOl0B,QAAcgB,KAAKwzB,YAAYN,GAC1CjyB,EAAMuZ,KAAKa,QAAU6X,EAAOR,QAAQ,GAItC,IAFAzxB,EAAMpE,OAAOyb,MAAQtY,KAAK8yB,YAAYI,EAAO,GAAG,IAChDjyB,EAAMya,KAAO,GACNwX,EAAOl0B,QAAQ,CACpB,IAAI4C,EAAOsxB,EAAO,GAAG,GACrB,GAAa,MAATtxB,GAAyB,UAATA,GAA6B,YAATA,EACtC,MAEFX,EAAMya,MAAQwX,EAAOR,QAAQ,EACrC,CAGM,IAFAzxB,EAAMuZ,KAAKI,QAAU,GAEdsY,EAAOl0B,QAAQ,CAEpB,GAAiB,OADjB6yB,EAAQqB,EAAOR,SACL,GAAY,CACpBzxB,EAAMuZ,KAAKI,SAAWiX,EAAM,GAC5B,MAEiB,SAAbA,EAAM,IAAiB,KAAKhuB,KAAKguB,EAAM,KACzC7xB,KAAKwzB,YAAY,CAAC3B,IAEpB5wB,EAAMuZ,KAAKI,SAAWiX,EAAM,EAEtC,CAC4B,MAAlB5wB,EAAMya,KAAK,IAAgC,MAAlBza,EAAMya,KAAK,KACtCza,EAAMuZ,KAAKa,QAAUpa,EAAMya,KAAK,GAChCza,EAAMya,KAAOza,EAAMya,KAAKzX,MAAM,IAIhC,IAFA,IACIwe,EADAgR,EAAc,GAEXP,EAAOl0B,SAEC,WADbyjB,EAAOyQ,EAAO,GAAG,KACgB,YAATzQ,IACxBgR,EAAYp0B,KAAK6zB,EAAOR,SAE1B1yB,KAAK0zB,wBAAwBR,GAC7B,IAAA,IAAS5pB,EAAK4pB,EAAOl0B,OAAS,EAAGsK,GAAM,EAAGA,IAAM,CAE9C,GAA+B,gBAD/BuoB,EAAQqB,EAAO5pB,IACL,GAAGtH,cAAgC,CAC3Cf,EAAM0a,WAAY,EAClB,IAAIF,EAASzb,KAAK2zB,WAAWT,EAAQ5pB,GAEtB,iBADfmS,EAASzb,KAAK4zB,cAAcV,GAAUzX,KACRxa,EAAMuZ,KAAKmB,UAAYF,GACrD,KACD,CAAA,GAAqC,cAA3BoW,EAAM,GAAG7vB,cAA+B,CAGjD,IAFA,IAAI6xB,EAAQX,EAAOjvB,MAAM,GACrB/B,EAAM,GACD6e,EAAIzX,EAAIyX,EAAI,EAAGA,IAAK,CAC3B,IAAInf,EAAOiyB,EAAM9S,GAAG,GACpB,GAAI7e,EAAIiD,OAAOO,WAAW,MAAiB,UAAT9D,EAChC,MAEFM,EAAM2xB,EAAMxvB,MAAM,GAAKnC,CACnC,CACcA,EAAIiD,OAAOO,WAAW,OACxBzE,EAAM0a,WAAY,EAClB1a,EAAMuZ,KAAKmB,UAAYzZ,EACvBgxB,EAASW,EAErB,CACQ,GAAiB,UAAbhC,EAAM,IAA+B,YAAbA,EAAM,GAChC,KAEV,CACM,IAAIiC,EAAUZ,EAAO9nB,MAAM9B,GAAiB,UAAVA,EAAG,IAA4B,YAAVA,EAAG,KACtDwqB,IACF7yB,EAAMuZ,KAAKI,SAAW6Y,EAAY/a,KAAKpP,GAAOA,EAAG,KAAI/K,KAAK,IAC1Dk1B,EAAc,IAEhBzzB,KAAK+a,IAAI9Z,EAAO,QAASwyB,EAAY3vB,OAAOovB,GAASI,GACjDryB,EAAMpJ,MAAMqC,SAAS,OAASo5B,GAChCtzB,KAAKizB,qBAAqBC,EAElC,CACIG,WAAAA,CAAYxB,GACV,MAAM7xB,KAAK2hB,MAAMjjB,MACf,eACA,CAAEyiB,OAAQ0Q,EAAM,IAChB,CAAE1Q,OAAQ0Q,EAAM,GAAKA,EAAM,GAAG7yB,QAEtC,CACI+0B,SAAAA,CAAUlC,GACR,IAAI5wB,EAAQ,IAAI2jB,EAChB5kB,KAAK4yB,KAAK3xB,EAAO4wB,EAAM,IACvB5wB,EAAM+kB,SAAW,GACjB/kB,EAAMuZ,KAAKI,QAAU,GACrB5a,KAAKssB,QAAUrrB,CACrB,CACIuX,GAAAA,CAAIqZ,GACE7xB,KAAKssB,QAAQ5R,OAAS1a,KAAKssB,QAAQ5R,MAAM1b,SAC3CgB,KAAKssB,QAAQ9R,KAAKN,UAAYla,KAAKka,WAErCla,KAAKka,WAAY,EACjBla,KAAKssB,QAAQ9R,KAAKjB,OAASvZ,KAAKssB,QAAQ9R,KAAKjB,OAAS,IAAMvZ,KAAKwyB,OACjExyB,KAAKwyB,OAAS,GACVxyB,KAAKssB,QAAQ7d,QACfzO,KAAKssB,QAAQzvB,OAAO2b,IAAMxY,KAAK8yB,YAAYjB,EAAM,IACjD7xB,KAAKssB,QAAQzvB,OAAO2b,IAAI2I,SACxBnhB,KAAKssB,QAAUtsB,KAAKssB,QAAQ7d,QAE5BzO,KAAKg0B,gBAAgBnC,EAE7B,CACIoC,OAAAA,GACMj0B,KAAKssB,QAAQ7d,QAAQzO,KAAKk0B,gBAC1Bl0B,KAAKssB,QAAQ5R,OAAS1a,KAAKssB,QAAQ5R,MAAM1b,SAC3CgB,KAAKssB,QAAQ9R,KAAKN,UAAYla,KAAKka,WAErCla,KAAKssB,QAAQ9R,KAAKjB,OAASvZ,KAAKssB,QAAQ9R,KAAKjB,OAAS,IAAMvZ,KAAKwyB,OACjExyB,KAAK+b,KAAKlf,OAAO2b,IAAMxY,KAAK8yB,YAAY9yB,KAAKqyB,UAAUnR,WAC7D,CACIiT,aAAAA,CAActC,GAEZ,GADA7xB,KAAKwyB,QAAUX,EAAM,GACjB7xB,KAAKssB,QAAQ5R,MAAO,CACtB,IAAIqI,EAAO/iB,KAAKssB,QAAQ5R,MAAM1a,KAAKssB,QAAQ5R,MAAM1b,OAAS,GACtD+jB,GAAsB,SAAdA,EAAKnhB,OAAoBmhB,EAAKvI,KAAKwC,eAC7C+F,EAAKvI,KAAKwC,aAAehd,KAAKwyB,OAC9BxyB,KAAKwyB,OAAS,GAExB,CACA,CAEIM,WAAAA,CAAY3R,GACV,IAAItb,EAAM7F,KAAK2hB,MAAMqJ,WAAW7J,GAChC,MAAO,CACL7J,OAAQzR,EAAIolB,IACZ5T,KAAMxR,EAAIwR,KACV8J,SAER,CACIyR,IAAAA,CAAK3xB,EAAOkgB,GACVnhB,KAAKssB,QAAQjtB,KAAK4B,GAClBA,EAAMpE,OAAS,CACb8kB,MAAO3hB,KAAK2hB,MACZrJ,MAAOtY,KAAK8yB,YAAY3R,IAE1BlgB,EAAMuZ,KAAKa,OAASrb,KAAKwyB,OACzBxyB,KAAKwyB,OAAS,GACK,YAAfvxB,EAAMW,OAAoB5B,KAAKka,WAAY,EACrD,CACIhe,KAAAA,CAAMoc,GASJ,IARA,IAAIE,GAAM,EACN5W,EAAO,KACPiY,GAAQ,EACRua,EAAU,KACVvB,EAAW,GACXS,EAAiBhb,EAAM,GAAG5S,WAAW,MACrCwtB,EAAS,GACTrB,EAAQvZ,EACLuZ,GAAO,CAGZ,GAFAjwB,EAAOiwB,EAAM,GACbqB,EAAO7zB,KAAKwyB,GACC,MAATjwB,GAAyB,MAATA,EACbwyB,IAASA,EAAUvC,GACxBgB,EAASxzB,KAAc,MAATuC,EAAe,IAAM,UAC1B0xB,GAAAA,GAAkBzZ,GAAkB,MAATjY,EAC/BwyB,IAASA,EAAUvC,GACxBgB,EAASxzB,KAAK,UACLwzB,GAAoB,IAApBA,EAAS7zB,OAAc,CAChC,GAAa,MAAT4C,EAAc,CAChB,GAAIiY,EAEF,YADA7Z,KAAKwb,KAAK0X,EAAQI,GAGlB,KAEd,CAAA,GAA8B,MAAT1xB,EAET,YADA5B,KAAK+c,KAAKmW,GAEtB,GAA8B,MAATtxB,EAAc,CACvB5B,KAAKqyB,UAAUT,KAAKsB,EAAO7uB,OAC3BmU,GAAM,EACN,KACZ,CAA8B,MAAT5W,IACTiY,GAAQ,EAEpB,MAAmBjY,IAASixB,EAASA,EAAS7zB,OAAS,KAC7C6zB,EAASxuB,MACe,IAApBwuB,EAAS7zB,SAAco1B,EAAU,OAEvCvC,EAAQ7xB,KAAKqyB,UAAUN,WAC/B,CAGM,GAFI/xB,KAAKqyB,UAAUP,cAAatZ,GAAM,GAClCqa,EAAS7zB,OAAS,GAAGgB,KAAKq0B,gBAAgBD,GAC1C5b,GAAOqB,EAAO,CAChB,IAAKyZ,EACH,KAAOJ,EAAOl0B,SAEE,WADd6yB,EAAQqB,EAAOA,EAAOl0B,OAAS,GAAG,KACC,YAAV6yB,IACzB7xB,KAAKqyB,UAAUT,KAAKsB,EAAO7uB,OAG/BrE,KAAKwb,KAAK0X,EAAQI,QAElBtzB,KAAKwzB,YAAYN,EAEzB,CACIxO,KAAAA,GAEE,IADA,IAAImN,GACI7xB,KAAKqyB,UAAUP,aAErB,QADAD,EAAQ7xB,KAAKqyB,UAAUN,aACT,IACZ,IAAK,QACH/xB,KAAKwyB,QAAUX,EAAM,GACrB,MACF,IAAK,IACH7xB,KAAKm0B,cAActC,GACnB,MACF,IAAK,IACH7xB,KAAKwY,IAAIqZ,GACT,MACF,IAAK,UACH7xB,KAAKmQ,QAAQ0hB,GACb,MACF,IAAK,UACH7xB,KAAKqa,OAAOwX,GACZ,MACF,IAAK,IACH7xB,KAAK+zB,UAAUlC,GACf,MACF,QACE7xB,KAAK9D,MAAM21B,GAIjB7xB,KAAKi0B,SACX,CACIP,uBAAAA,GAA0B,CAE1B3Y,GAAAA,CAAI9Z,EAAOya,EAAMwX,EAAQI,GAMvB,IALA,IAAIzB,EAAOjwB,EAIP6gB,EAAMM,EAHN/jB,EAASk0B,EAAOl0B,OAChBnH,EAAQ,GACRy8B,GAAQ,EAEHhrB,EAAK,EAAGA,EAAKtK,EAAQsK,GAAM,EAGrB,WADb1H,GADAiwB,EAAQqB,EAAO5pB,IACF,KACWA,IAAOtK,EAAS,GAAMs0B,EAE1B,YAAT1xB,GACTmhB,EAAOmQ,EAAO5pB,EAAK,GAAK4pB,EAAO5pB,EAAK,GAAG,GAAK,QAC5CmZ,EAAOyQ,EAAO5pB,EAAK,GAAK4pB,EAAO5pB,EAAK,GAAG,GAAK,QACvCgpB,EAAsBvP,IAAUuP,EAAsB7P,IACjC,MAApB5qB,EAAMoM,OAAQ,GAMlBqwB,GAAQ,EAHNz8B,GAASg6B,EAAM,IAMnBh6B,GAASg6B,EAAM,GAdfyC,GAAQ,EAiBZ,IAAKA,EAAO,CACV,IAAIvZ,EAAMmY,EAAOqB,QAAO,CAACC,EAAKlrB,IAAOkrB,EAAMlrB,EAAG,IAAI,IAClDrI,EAAMuZ,KAAKkB,GAAQ,CAAEX,MAAKljB,QAClC,CACMoJ,EAAMya,GAAQ7jB,CACpB,CACIklB,IAAAA,CAAKmW,GACHA,EAAO7uB,MACP,IAAIpD,EAAQ,IAAI2jB,EAChB5kB,KAAK4yB,KAAK3xB,EAAOiyB,EAAO,GAAG,IAC3BjyB,EAAMuZ,KAAKI,QAAU5a,KAAK+yB,yBAAyBG,GACnDlzB,KAAK+a,IAAI9Z,EAAO,WAAYiyB,GAC5BlzB,KAAKssB,QAAUrrB,CACrB,CACI8xB,wBAAAA,CAAyBG,GAGvB,IAFA,IAAIuB,EACAjC,EAAS,GACNU,EAAOl0B,SAEU,WADtBy1B,EAAgBvB,EAAOA,EAAOl0B,OAAS,GAAG,KACS,YAAlBy1B,IACjCjC,EAASU,EAAO7uB,MAAM,GAAKmuB,EAE7B,OAAOA,CACb,CAEIQ,0BAAAA,CAA2BE,GAGzB,IAFA,IAAIzQ,EACA+P,EAAS,GACNU,EAAOl0B,SAEC,WADbyjB,EAAOyQ,EAAO,GAAG,KACgB,YAATzQ,IACxB+P,GAAUU,EAAOR,QAAQ,GAE3B,OAAOF,CACb,CACIoB,aAAAA,CAAcV,GAGZ,IAFA,IACIV,EAAS,GACNU,EAAOl0B,QAEU,UADNk0B,EAAOA,EAAOl0B,OAAS,GAAG,IAE1CwzB,EAASU,EAAO7uB,MAAM,GAAKmuB,EAE7B,OAAOA,CACb,CACImB,UAAAA,CAAWT,EAAQ/0B,GAEjB,IADA,IAAImlB,EAAU,GACLha,EAAKnL,EAAMmL,EAAK4pB,EAAOl0B,OAAQsK,IACtCga,GAAW4P,EAAO5pB,GAAI,GAGxB,OADA4pB,EAAOpN,OAAO3nB,EAAM+0B,EAAOl0B,OAASb,GAC7BmlB,CACb,CACI4Q,aAAAA,GACE,IAAIruB,EAAM7F,KAAKssB,QAAQzvB,OAAOyb,MAC9B,MAAMtY,KAAK2hB,MAAMjjB,MAAM,iBAAkBmH,EAAIwR,KAAMxR,EAAIyR,OAC7D,CACI+c,eAAAA,CAAgBD,GACd,MAAMp0B,KAAK2hB,MAAMjjB,MACf,mBACA,CAAEyiB,OAAQiT,EAAQ,IAClB,CAAEjT,OAAQiT,EAAQ,GAAK,GAE/B,CACIJ,eAAAA,CAAgBnC,GACd,MAAM7xB,KAAK2hB,MAAMjjB,MACf,eACA,CAAEyiB,OAAQ0Q,EAAM,IAChB,CAAE1Q,OAAQ0Q,EAAM,GAAK,GAE7B,CACI2B,WAAAA,CAAYN,GACV,MAAMlzB,KAAK2hB,MAAMjjB,MACf,eACA,CAAEyiB,OAAQ+R,EAAO,GAAG,IACpB,CAAE/R,OAAQ+R,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAGl0B,QAE9C,CACI2zB,aAAAA,CAAc1xB,EAAO4wB,GACnB,MAAM7xB,KAAK2hB,MAAMjjB,MACf,uBACA,CAAEyiB,OAAQ0Q,EAAM,IAChB,CAAE1Q,OAAQ0Q,EAAM,GAAKA,EAAM,GAAG7yB,QAEtC,EAIA,CAGA,SAASsiC,KACP,GAAIlC,GAAkB,OAAOD,GAC7BC,GAAmB,EACnB,IAAIra,EAAY2b,KACZ7V,EAAQkW,KACRpM,EAAS0M,KACb,SAAS3c,EAAMzM,EAAKkK,GAClB,IAAI2B,EAAS,IAAI+G,EAAM5S,EAAKkK,GACxByS,EAAU,IAAID,EAAO7Q,GACzB,IACE8Q,EAAQlQ,OACT,CAAA,MAAQrd,GAYP,KAX6B,eAAzBwtB,QAAQC,IAAIC,UACE,mBAAZ1tB,EAAGvK,MAA6BqlB,GAAQA,EAAKhkB,OAC3C,WAAW0F,KAAKse,EAAKhkB,MACvBkJ,EAAG+P,SAAW,iGACL,UAAUvT,KAAKse,EAAKhkB,MAC7BkJ,EAAG+P,SAAW,iGACL,WAAWvT,KAAKse,EAAKhkB,QAC9BkJ,EAAG+P,SAAW,mGAId/P,CACZ,CACI,OAAOutB,EAAQ7Y,IACnB,CAIE,OAHAojB,GAAUza,EACVA,EAAM7R,QAAU6R,EAChBK,EAAU6B,cAAclC,GACjBya,EACT,CAGA,SAASoC,KACP,GAAIjC,GAAoB,OAAOD,GAC/BC,GAAqB,EACrB,MAAMrK,EACJt4B,WAAAA,CAAYmF,GAAiB,IAAXqgB,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAGvB,GAFAjT,KAAK4B,KAAO,UACZ5B,KAAK8B,KAAOA,EACRqgB,EAAK+B,MAAQ/B,EAAK+B,KAAKrnB,OAAQ,CACjC,IAAIq4B,EAAQ/S,EAAK+B,KAAK9B,QAAQD,GAC9BniB,KAAKqX,KAAO6d,EAAM5c,MAAMjB,KACxBrX,KAAKsX,OAAS4d,EAAM5c,MAAMhB,OAC1BtX,KAAK2X,QAAUud,EAAM1c,IAAInB,KACzBrX,KAAK4X,UAAYsd,EAAM1c,IAAIlB,MACnC,CACM,IAAA,IAAS6d,KAAOhT,EAAMniB,KAAKm1B,GAAOhT,EAAKgT,EAC7C,CACIl7B,QAAAA,GACE,OAAI+F,KAAKkkB,KACAlkB,KAAKkkB,KAAKxlB,MAAMsB,KAAK8B,KAAM,CAChC4gB,MAAO1iB,KAAK0iB,MACZlL,OAAQxX,KAAKwX,OACbqL,KAAM7iB,KAAK6iB,OACVzL,QAEDpX,KAAKwX,OACAxX,KAAKwX,OAAS,KAAOxX,KAAK8B,KAE5B9B,KAAK8B,IAClB,EAIE,OAFAu9B,GAAUpK,EACVA,EAAQpiB,QAAUoiB,EACXoK,EACT,CAGA,SAASmC,KACP,GAAIjC,GAAmB,OAAO1H,GAC9B0H,GAAoB,EACpB,IAAItK,EAAUsM,KACd,MAAMlM,EACJ14B,WAAAA,CAAY24B,EAAYxZ,EAAOqG,GAC7BniB,KAAKu1B,UAAYD,EACjBt1B,KAAKw1B,SAAW,GAChBx1B,KAAK+b,KAAOD,EACZ9b,KAAKmiB,KAAOA,EACZniB,KAAKiY,SAAM,EACXjY,KAAK0Y,SAAM,CACjB,CACIze,QAAAA,GACE,OAAO+F,KAAKiY,GAClB,CACIvL,IAAAA,CAAK5K,GAAiB,IAAXqgB,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EACXkP,EAAK3K,QACJxX,KAAKy1B,YAAcz1B,KAAKy1B,WAAWC,gBACrCvT,EAAK3K,OAASxX,KAAKy1B,WAAWC,eAGlC,IAAIC,EAAW,IAAIV,EAAQnzB,EAAMqgB,GAEjC,OADAniB,KAAKw1B,SAASn2B,KAAKs2B,GACZA,CACb,CACIC,QAAAA,GACE,OAAO51B,KAAKw1B,SAASK,QAAQvsB,GAAmB,YAAZA,EAAG1H,MAC7C,CACI,WAAI8rB,GACF,OAAO1tB,KAAKiY,GAClB,EAIE,OAFA4f,GAASxC,EACTA,EAAOxiB,QAAUwiB,EACVwC,EACT,CAGA,SAAS4J,KACP,GAAIhC,GAAqB,OAAOD,GAChCC,GAAsB,EACtB,IAAI1J,EAAU,CAAE,EAQhB,OAPAyJ,GAAW,SAAmBpoB,GACxB2e,EAAQ3e,KACZ2e,EAAQ3e,IAAW,EACI,oBAAZ3K,SAA2BA,QAAQC,MAC5CD,QAAQC,KAAK0K,GAEhB,CAEH,CAGA,SAASsqB,KACP,GAAI/B,GAAuB,OAAOD,GAClCC,GAAwB,EACxB,IAAI5a,EAAY2b,KACZpZ,EAAYsZ,KACZ3K,EAAekL,KACfzc,EAAQ4c,KACRjM,EAASmM,KACT7c,EAAOqc,KACP7hC,EAAYq+B,MACZ/c,QAAEA,EAAAA,GAASC,GAAO4f,KAClBpK,EAAYuL,KACVtL,EAAqB,CACzB9b,OAAQ,SACRlK,QAAS,UACTqL,KAAM,cACNjhB,SAAU,WACVwhB,KAAM,OACNgB,KAAM,QAEFqZ,EAAe,CACnB3R,QAAQ,EACR4R,YAAY,EACZjnB,SAAS,EACTknB,aAAa,EACbhS,aAAa,EACbiS,iBAAiB,EACjB9tB,UAAU,EACV+tB,cAAc,EACdC,MAAM,EACNC,UAAU,EACVhB,eAAe,EACfiB,SAAS,EACThS,MAAM,EACNiS,UAAU,EACVhS,MAAM,EACNiS,UAAU,GAENC,EAAe,CACnBL,MAAM,EACNf,eAAe,EACfiB,SAAS,GAELI,EAAW,EACjB,SAASC,EAAUr/B,GACjB,MAAsB,iBAARA,GAAwC,mBAAbA,EAAIs/B,IACjD,CACE,SAASC,EAAUj2B,GACjB,IAAIrJ,GAAM,EACNgK,EAAOu0B,EAAmBl1B,EAAMW,MAMpC,MALmB,SAAfX,EAAMW,KACRhK,EAAMqJ,EAAMya,KAAK1Z,cACO,WAAff,EAAMW,OACfhK,EAAMqJ,EAAMnE,KAAKkF,eAEfpK,GAAOqJ,EAAMugB,OACR,CACL5f,EACAA,EAAO,IAAMhK,EACbm/B,EACAn1B,EAAO,OACPA,EAAO,QAAUhK,GAEVA,EACF,CAACgK,EAAMA,EAAO,IAAMhK,EAAKgK,EAAO,OAAQA,EAAO,QAAUhK,GACvDqJ,EAAMugB,OACR,CAAC5f,EAAMm1B,EAAUn1B,EAAO,QAExB,CAACA,EAAMA,EAAO,OAE3B,CACE,SAASu1B,EAAQl2B,GASf,MAAO,CACLm2B,WAAY,EACZC,OATiB,aAAfp2B,EAAMW,KACC,CAAC,WAAYm1B,EAAU,gBACR,SAAf91B,EAAMW,KACN,CAAC,OAAQm1B,EAAU,YAEnBG,EAAUj2B,GAKnBmkB,SAAU,EACVlB,KAAMjjB,EACNq2B,aAAc,EACdC,SAAU,GAEhB,CACE,SAASC,EAAWv2B,GAGlB,OAFAA,EAAMwf,IAAW,EACbxf,EAAMyZ,OAAOzZ,EAAMyZ,MAAM7Z,SAASyI,GAAOkuB,EAAWluB,KACjDrI,CACX,CACE,IAAIw2B,EAAW,CAAE,EACjB,MAAMrQ,EACJzqB,WAAAA,CAAY24B,EAAYrd,EAAKkK,GAG3B,IAAIrG,EACJ,GAHA9b,KAAK03B,aAAc,EACnB13B,KAAKimB,WAAY,EAEE,iBAARhO,GAA4B,OAARA,GAA8B,SAAbA,EAAIrW,MAAgC,aAAbqW,EAAIrW,KAEhEqW,GAAAA,aAAemP,GAAcnP,aAAeod,EACrDvZ,EAAQ0b,EAAWvf,EAAI8D,MACnB9D,EAAIS,WACkB,IAAbyJ,EAAKzJ,MAAqByJ,EAAKzJ,IAAM,CAAE,GAC7CyJ,EAAKzJ,IAAI+P,SAAQtG,EAAKzJ,IAAI+P,QAAS,GACxCtG,EAAKzJ,IAAIqK,KAAO9K,EAAIS,SAEjB,CACL,IAAIkc,EAAUlQ,EACVvC,EAAKwV,SAAQ/C,EAAUzS,EAAKwV,OAAOjT,OACnCvC,EAAKyV,SAAQhD,EAAUzS,EAAKyV,QAC5BhD,EAAQlQ,QAAOkQ,EAAUA,EAAQlQ,OACrC,IACE5I,EAAQ8Y,EAAQ3c,EAAKkK,EACtB,CAAA,MAAQzjB,GACPsB,KAAKimB,WAAY,EACjBjmB,KAAKtB,MAAQA,CACvB,CACYod,IAAUA,EAAM4E,IAClBqE,EAAUmB,QAAQpK,EAE5B,MAtBQA,EAAQ0b,EAAWvf,GAuBrBjY,KAAK63B,OAAS,IAAIxC,EAAOC,EAAYxZ,EAAOqG,GAC5CniB,KAAK83B,QAAeL,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,GAAAA,CAAUM,QAASN,EAAUI,OAAQ73B,KAAK63B,SAC9D73B,KAAKg4B,QAAUh4B,KAAKu1B,UAAUyC,QAAQtf,KAAKlB,GACnB,iBAAXA,GAAuBA,EAAOmf,QACvCpP,EAAAA,EAAA,CAAA,EAAY/P,GAAWA,EAAOmf,QAAQ32B,KAAK63B,SAEpCrgB,GAGjB,CACIygB,KAAAA,GACE,OAAIj4B,KAAKtB,MAAcw5B,QAAQC,OAAOn4B,KAAKtB,OACvCsB,KAAKimB,UAAkBiS,QAAQ3N,QAAQvqB,KAAK63B,SAC3C73B,KAAKo4B,aACRp4B,KAAKo4B,WAAap4B,KAAKq4B,YAElBr4B,KAAKo4B,WAClB,CACIE,MAAMC,GACJ,OAAOv4B,KAAKi4B,QAAQK,MAAMC,EAChC,CACIC,QAAQC,GACN,OAAOz4B,KAAKi4B,QAAQhB,KAAKwB,EAAWA,EAC1C,CACIC,aAAAA,GACE,MAAM,IAAIvhB,MAAM,uDACtB,CACIwhB,WAAAA,CAAYj6B,EAAOuC,GACjB,IAAIuW,EAASxX,KAAK63B,OAAOpC,WACzB,IAGE,GAFIx0B,GAAOA,EAAMwgB,WAAW/iB,GAC5BsB,KAAKtB,MAAQA,EACM,mBAAfA,EAAM5B,MAA8B4B,EAAM8Y,QAGtD,GAAmBA,EAAOohB,gBACa,eAAzB/D,QAAQC,IAAIC,SAA2B,CACzC,IAAI8D,EAAarhB,EAAOke,cACpBoD,EAAYthB,EAAOohB,eACnBG,EAAa/4B,KAAK63B,OAAOtC,UAAUyD,QACnCvzB,EAAKqzB,EAAU/5B,MAAM,KACrBk6B,EAAIF,EAAWh6B,MAAM,MACrB0G,EAAG,KAAOwzB,EAAE,IAAMC,SAASzzB,EAAG,IAAMyzB,SAASD,EAAE,MACjDxsB,QAAQ/N,MACN,sEAAwEq6B,EAAa,SAAWF,EAAa,SAAWC,EAAY,mDAGpJ,OAdUp6B,EAAM8Y,OAASA,EAAOke,cACtBh3B,EAAMmZ,YAeT,CAAA,MAAQ/U,GACH2J,SAAWA,QAAQ/N,OAAO+N,QAAQ/N,MAAMoE,EACpD,CACM,OAAOpE,CACb,CACIy6B,eAAAA,GACEn5B,KAAKo5B,UAAY,CAAE,EACnB,IAAIl4B,EAAMA,CAACsW,EAAQ5V,EAAM8jB,KAClB1lB,KAAKo5B,UAAUx3B,KAAO5B,KAAKo5B,UAAUx3B,GAAQ,IAClD5B,KAAKo5B,UAAUx3B,GAAMvC,KAAK,CAACmY,EAAQkO,GAAG,EAExC,IAASlO,IAAAA,KAAUxX,KAAKg4B,QACtB,GAAsB,iBAAXxgB,EACT,IAAA,IAAS6hB,KAAS7hB,EAAQ,CACxB,IAAK4e,EAAaiD,IAAU,SAASx1B,KAAKw1B,GACxC,MAAM,IAAIliB,MACSkiB,iBAAAA,OAAAA,EAAY7hB,QAAAA,OAAAA,EAAOke,cAAyC,6BAAA5xB,OAAA9D,KAAKu1B,UAAUyD,QAC7F,WAEH,IAAKlC,EAAauC,GAChB,GAA6B,iBAAlB7hB,EAAO6hB,GAChB,IAASxD,IAAAA,KAAUre,EAAO6hB,GAEtBn4B,EAAIsW,EADS,MAAXqe,EACUwD,EAIVA,EAAQ,IAAMxD,EAAO7zB,cAJJwV,EAAO6hB,GAAOxD,QASH,mBAAlBre,EAAO6hB,IACvBn4B,EAAIsW,EAAQ6hB,EAAO7hB,EAAO6hB,GAG1C,CAGMr5B,KAAKs5B,YAAc9hC,OAAOiJ,KAAKT,KAAKo5B,WAAWp6B,OAAS,CAC9D,CACUq5B,QAAAA,GAAW,IAAAsJ,EAAA3hC,KAAA,OAAAw5B,GAAA,YACfmI,EAAKnqB,OAAS,EACd,IAAA,IAASlO,EAAK,EAAGA,EAAKq4B,EAAK3J,QAAQh5B,OAAQsK,IAAM,CAC/C,IAAIkO,EAASmqB,EAAK3J,QAAQ1uB,GACtBmwB,EAAUkI,EAAKjI,UAAUliB,GAC7B,GAAIwf,EAAUyC,GACZ,UACQA,CACP,CAAA,MAAQ/6B,GACP,MAAMijC,EAAKhJ,YAAYj6B,EACnC,CAEA,CAEM,GADAijC,EAAKxI,kBACDwI,EAAKrI,YAAa,CAEpB,IADA,IAAIxd,EAAQ6lB,EAAK9J,OAAO9b,MAChBD,EAAM2E,IAAU,CACtB3E,EAAM2E,IAAW,EAEjB,IADA,IAAIvc,EAAQ,CAACizB,EAAQrb,IACd5X,EAAMlF,OAAS,GAAG,CACvB,IAAIy6B,EAAUkI,EAAKhI,UAAUz1B,GAC7B,GAAI8yB,EAAUyC,GACZ,UACQA,CACP,CAAA,MAAQpyB,GACP,IAAIpG,EAAQiD,EAAMA,EAAMlF,OAAS,GAAGklB,KACpC,MAAMyd,EAAKhJ,YAAYtxB,EAAIpG,EAC3C,CAEA,CACA,CACQ,GAAI0gC,EAAKvI,UAAU1C,SAAU,CAAA,IAAAkL,EAAA,UACT/H,EAARriB,GACRmqB,EAAK9J,OAAOpC,WAAaje,EACzB,IACE,GAAmB,aAAfsE,EAAMla,KAAqB,CAC7B,IAAIk4B,EAAQhe,EAAMpB,MAAMhC,KACrBqhB,GAAYF,EAAQE,EAAS4H,EAAK7J,iBAE/BI,QAAQ1D,IAAIsF,cAEZD,EAAQ/d,EAAO6lB,EAAK7J,QAE7B,CAAA,MAAQzwB,GACP,MAAMs6B,EAAKhJ,YAAYtxB,EACrC,CAAA,EAbU,IAAA,IAAUmQ,EAAQqiB,KAAY8H,EAAKvI,UAAU1C,eAAUkL,EAArC/H,EAARriB,EAepB,CACA,CAEM,OADAmqB,EAAK1b,WAAY,EACV0b,EAAKxiC,WAAW,GAlDRq6B,EAmDrB,CACIE,SAAAA,CAAUliB,GACRxX,KAAK63B,OAAOpC,WAAaje,EACzB,IACE,GAAsB,iBAAXA,GAAuBA,EAAOif,KAAM,CAC7C,GAA8B,aAA1Bz2B,KAAK63B,OAAO9b,KAAKna,KAAqB,CACxC,IAAIk4B,EAAQ95B,KAAK63B,OAAO9b,KAAKrB,MAAMhC,KAChCoD,GAAUtE,EAAOif,KAAK3a,EAAO9b,KAAK83B,WAErC,OAAId,EAAU8C,EAAM,IACX5B,QAAQ1D,IAAIsF,GAEdA,CACnB,CACU,OAAOtiB,EAAOif,KAAKz2B,KAAK63B,OAAO9b,KAAM/b,KAAK83B,SACjC,GAAkB,mBAAXtgB,EAChB,OAAOA,EAAOxX,KAAK63B,OAAO9b,KAAM/b,KAAK63B,OAExC,CAAA,MAAQn5B,GACP,MAAMsB,KAAK24B,YAAYj6B,EAC/B,CACA,CACIS,SAAAA,GACE,GAAIa,KAAKtB,MAAO,MAAMsB,KAAKtB,MAC3B,GAAIsB,KAAK03B,YAAa,OAAO13B,KAAK63B,OAClC73B,KAAK03B,aAAc,EACnB13B,KAAKg6B,OACL,IAAI7X,EAAOniB,KAAK63B,OAAO1V,KACnBjgB,EAAM/C,EACNgjB,EAAKwV,SAAQz1B,EAAMigB,EAAKwV,OAAOx4B,WAC/BgjB,EAAK8X,cAAa/3B,EAAMigB,EAAK8X,aAC7B/3B,EAAI/C,YAAW+C,EAAMA,EAAI/C,WAC7B,IACI+L,EADM,IAAI+qB,EAAa/zB,EAAKlC,KAAK63B,OAAO9b,KAAM/b,KAAK63B,OAAO1V,MAC/CiM,WAGf,OAFApuB,KAAK63B,OAAO5f,IAAM/M,EAAK,GACvBlL,KAAK63B,OAAOnf,IAAMxN,EAAK,GAChBlL,KAAK63B,MAClB,CACImC,IAAAA,GACE,GAAIh6B,KAAKtB,MAAO,MAAMsB,KAAKtB,MAC3B,GAAIsB,KAAKimB,UAAW,OAAOjmB,KAAK63B,OAEhC,GADA73B,KAAKimB,WAAY,EACbjmB,KAAKo4B,WACP,MAAMp4B,KAAK04B,gBAEb,IAASlhB,IAAAA,KAAUxX,KAAKg4B,QAAS,CAE/B,GAAIhB,EADUh3B,KAAK05B,UAAUliB,IAE3B,MAAMxX,KAAK04B,eAErB,CAEM,GADA14B,KAAKm5B,kBACDn5B,KAAKs5B,YAAa,CAEpB,IADA,IAAIxd,EAAQ9b,KAAK63B,OAAO9b,MAChBD,EAAM2E,IACZ3E,EAAM2E,IAAW,EACjBzgB,KAAKk6B,SAASpe,GAEhB,GAAI9b,KAAKo5B,UAAU1C,SACjB,GAAmB,aAAf5a,EAAMla,KACR,IAASm4B,IAAAA,KAAWje,EAAMpB,MACxB1a,KAAKm6B,UAAUn6B,KAAKo5B,UAAU1C,SAAUqD,QAG1C/5B,KAAKm6B,UAAUn6B,KAAKo5B,UAAU1C,SAAU5a,EAGpD,CACM,OAAO9b,KAAK63B,MAClB,CACIZ,IAAAA,CAAKmD,EAAa7B,GAQhB,MAP6B,eAAzB1D,QAAQC,IAAIC,WACR,SAAU/0B,KAAKmiB,MACnB+T,EACE,4KAICl2B,KAAKi4B,QAAQhB,KAAKmD,EAAa7B,EAC5C,CACIt+B,QAAAA,GACE,OAAO+F,KAAKiY,GAClB,CACIkiB,SAAAA,CAAU5C,EAAUt2B,GAClB,IAAA,IAAUuW,EAAQqiB,KAAYtC,EAAU,CACtCv3B,KAAK63B,OAAOpC,WAAaje,EACzB,IAAIiiB,OAAAA,EACJ,IACEA,EAAUI,EAAQ54B,EAAOjB,KAAK83B,QAC/B,CAAA,MAAQzwB,GACP,MAAMrH,KAAK24B,YAAYtxB,EAAIpG,EAAMkjB,QAC3C,CACQ,GAAmB,SAAfljB,EAAMW,MAAkC,aAAfX,EAAMW,OAAwBX,EAAMwN,OAC/D,OAAO,EAET,GAAIuoB,EAAUyC,GACZ,MAAMz5B,KAAK04B,eAErB,CACA,CACIiB,SAAAA,CAAUz1B,GACR,IAAIm2B,EAASn2B,EAAMA,EAAMlF,OAAS,IAC5BklB,KAAMjjB,EAAAA,SAAOs2B,GAAa8C,EAChC,GAAmB,SAAfp5B,EAAMW,MAAkC,aAAfX,EAAMW,MAAwBX,EAAMwN,OAAjE,CAIA,GAAI8oB,EAASv4B,OAAS,GAAKq7B,EAAO/C,aAAeC,EAASv4B,OAAQ,CAChE,IAAKwY,EAAQqiB,GAAWtC,EAAS8C,EAAO/C,cACxC+C,EAAO/C,cAAgB,EACnB+C,EAAO/C,eAAiBC,EAASv4B,SACnCq7B,EAAO9C,SAAW,GAClB8C,EAAO/C,aAAe,GAExBt3B,KAAK63B,OAAOpC,WAAaje,EACzB,IACE,OAAOqiB,EAAQ54B,EAAMqhB,UAAWtiB,KAAK83B,QACtC,CAAA,MAAQzwB,GACP,MAAMrH,KAAK24B,YAAYtxB,EAAIpG,EACrC,CACA,CACM,GAAwB,IAApBo5B,EAAOjV,SAAgB,CAGzB,IAFA,IACIhK,EADAgK,EAAWiV,EAAOjV,SAEfhK,EAAQna,EAAMyZ,MAAMzZ,EAAMqkB,QAAQF,KAEvC,GADAnkB,EAAMqkB,QAAQF,IAAa,GACtBhK,EAAMqF,GAGT,OAFArF,EAAMqF,IAAW,OACjBvc,EAAM7E,KAAK83B,EAAQ/b,IAIvBif,EAAOjV,SAAW,SACXnkB,EAAMqkB,QAAQF,EAC7B,CAEM,IADA,IAAIiS,EAASgD,EAAOhD,OACbgD,EAAOjD,WAAaC,EAAOr4B,QAAQ,CACxC,IAAIq6B,EAAQhC,EAAOgD,EAAOjD,YAE1B,GADAiD,EAAOjD,YAAc,EACjBiC,IAAUtC,EAKZ,YAJI91B,EAAMyZ,OAASzZ,EAAMyZ,MAAM1b,SAC7BiC,EAAMwf,IAAW,EACjB4Z,EAAOjV,SAAWnkB,EAAMokB,gBAGjB,GAAArlB,KAAKo5B,UAAUC,GAExB,YADAgB,EAAO9C,SAAWv3B,KAAKo5B,UAAUC,GAG3C,CACMn1B,EAAMG,KA5CZ,MAFQH,EAAMG,KA+Cd,CACI61B,QAAAA,CAASj5B,GACPA,EAAMwf,IAAW,EACjB,IAAI4W,EAASH,EAAUj2B,GACvB,IAAA,IAASo4B,KAAShC,EAChB,GAAIgC,IAAUtC,EACR91B,EAAMyZ,OACRzZ,EAAMikB,MAAM9J,IACLA,EAAMqF,IAAUzgB,KAAKk6B,SAAS9e,EAAK,QAGvC,CACL,IAAImc,EAAWv3B,KAAKo5B,UAAUC,GAC9B,GAAI9B,GACEv3B,KAAKm6B,UAAU5C,EAAUt2B,EAAMqhB,WAAY,MAE3D,CAEA,CACIsT,QAAAA,GACE,OAAO51B,KAAKg6B,OAAOpE,UACzB,CACI,WAAIlI,GACF,OAAO1tB,KAAKb,YAAYuuB,OAC9B,CACI,OAAIzV,GACF,OAAOjY,KAAKb,YAAY8Y,GAC9B,CACI,OAAIS,GACF,OAAO1Y,KAAKb,YAAYuZ,GAC9B,CACI,YAAI8c,GACF,OAAOx1B,KAAKg6B,OAAOxE,QACzB,CACI,QAAIrT,GACF,OAAOniB,KAAK63B,OAAO1V,IACzB,CACI,aAAIoT,GACF,OAAOv1B,KAAK63B,OAAOtC,SACzB,CACI,QAAIxZ,GACF,OAAO/b,KAAKg6B,OAAOje,IACzB,CACI,IAAKlF,OAAOC,eACV,MAAO,YACb,EASE,OAPAsQ,EAAWkT,gBAAmBzT,IAC5B4Q,EAAW5Q,CAAAA,EAEb6Y,GAAatY,EACbA,EAAWvU,QAAUuU,EACrBzC,EAAK8C,mBAAmBL,GACxBE,EAAUG,mBAAmBL,GACtBsY,EACT,CAuHA,SAASmC,KACP,GAAI/B,GAAsB,OAAOvK,GACjCuK,GAAuB,EACvB,IAAIxY,EAAYsZ,KACZxZ,EAAasa,KACblH,EAzHN,WACE,GAAIqF,GAAyB,OAAOD,GACpCC,GAA0B,EAC1B,IAAI5J,EAAekL,KACfzc,EAAQ4c,KACNjM,EAASmM,KACXriC,EAAYq+B,KACZtH,EAAYuL,KAChB,MAAMjH,EACJ79B,WAAAA,CAAY24B,EAAYrd,EAAKkK,GAO3B,IAAIrG,EANJ7D,EAAMA,EAAIhe,WACV+F,KAAK03B,aAAc,EACnB13B,KAAKy6B,WAAanF,EAClBt1B,KAAK06B,KAAOziB,EACZjY,KAAK26B,MAAQxY,EACbniB,KAAK46B,UAAO,EAEZ,IAAI14B,EAAM/C,EACVa,KAAK63B,OAAS,IAAIxC,EAAOr1B,KAAKy6B,WAAY3e,EAAO9b,KAAK26B,OACtD36B,KAAK63B,OAAO5f,IAAMA,EAClB,IAAI4iB,EAAQ76B,KACZxI,OAAOC,eAAeuI,KAAK63B,OAAQ,OAAQ,CACzC79B,IAAM,IACG6gC,EAAM9e,OAGjB,IAAIrD,EAAM,IAAIud,EAAa/zB,EAAK4Z,EAAO9b,KAAK26B,MAAO1iB,GACnD,GAAIS,EAAIgR,QAAS,CACf,IAAKoR,EAAcC,GAAgBriB,EAAI0V,WACnC0M,IACF96B,KAAK63B,OAAO5f,IAAM6iB,GAEhBC,IACF/6B,KAAK63B,OAAOnf,IAAMqiB,QAGpBriB,EAAIyV,kBACJnuB,KAAK63B,OAAO5f,IAAMS,EAAIT,GAE9B,CACIggB,KAAAA,GACE,OAAIj4B,KAAKtB,MAAcw5B,QAAQC,OAAOn4B,KAAKtB,OACpCw5B,QAAQ3N,QAAQvqB,KAAK63B,OAClC,CACIS,MAAMC,GACJ,OAAOv4B,KAAKi4B,QAAQK,MAAMC,EAChC,CACIC,QAAQC,GACN,OAAOz4B,KAAKi4B,QAAQhB,KAAKwB,EAAWA,EAC1C,CACIuB,IAAAA,GACE,GAAIh6B,KAAKtB,MAAO,MAAMsB,KAAKtB,MAC3B,OAAOsB,KAAK63B,MAClB,CACIZ,IAAAA,CAAKmD,EAAa7B,GAQhB,MAP6B,eAAzB1D,QAAQC,IAAIC,WACR,SAAU/0B,KAAK26B,OACnBzE,EACE,4KAICl2B,KAAKi4B,QAAQhB,KAAKmD,EAAa7B,EAC5C,CACIt+B,QAAAA,GACE,OAAO+F,KAAK06B,IAClB,CACI9E,QAAAA,GACE,MAAO,EACb,CACI,WAAIlI,GACF,OAAO1tB,KAAK63B,OAAO5f,GACzB,CACI,OAAIA,GACF,OAAOjY,KAAK63B,OAAO5f,GACzB,CACI,OAAIS,GACF,OAAO1Y,KAAK63B,OAAOnf,GACzB,CACI,YAAI8c,GACF,MAAO,EACb,CACI,QAAIrT,GACF,OAAOniB,KAAK63B,OAAO1V,IACzB,CACI,aAAIoT,GACF,OAAOv1B,KAAK63B,OAAOtC,SACzB,CACI,QAAIxZ,GACF,GAAI/b,KAAKg7B,MACP,OAAOh7B,KAAKg7B,MAEd,IAAIlf,EACA8Y,EAAUlQ,EACd,IACE5I,EAAQ8Y,EAAQ50B,KAAK06B,KAAM16B,KAAK26B,MACjC,CAAA,MAAQj8B,GACPsB,KAAKtB,MAAQA,CACrB,CACM,GAAIsB,KAAKtB,MACP,MAAMsB,KAAKtB,MAGX,OADAsB,KAAKg7B,MAAQlf,EACNA,CAEf,CACI,IAAKjF,OAAOC,eACV,MAAO,cACb,EAIE,OAFA8oB,GAAepF,EACfA,EAAa3nB,QAAU2nB,EAChBoF,EACT,CAQqBkC,GACfnd,EAAOqc,KACX,MAAM3Z,EACJ1qB,WAAAA,GAA0B,IAAdq7B,EAAU/kB,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,GACpBjT,KAAKg5B,QAAU,QACfh5B,KAAKg4B,QAAUh4B,KAAKilB,UAAU+S,EACpC,CACI/S,SAAAA,CAAU+S,GACR,IAAIkD,EAAa,GACjB,IAAA,IAAS5xB,KAAM0uB,EAMb,IALmB,IAAf1uB,EAAGyuB,QACLzuB,EAAKA,IACIA,EAAGyuB,UACZzuB,EAAKA,EAAGyuB,SAEQ,iBAAPzuB,GAAmBpL,MAAM4iB,QAAQxX,EAAG0uB,SAC7CkD,EAAaA,EAAWp3B,OAAOwF,EAAG0uB,cACnC,GAAwB,iBAAP1uB,GAAmBA,EAAGosB,cACtCwF,EAAW77B,KAAKiK,QACP,GAAc,mBAAPA,EAChB4xB,EAAW77B,KAAKiK,OAC1B,IAAiC,iBAAPA,IAAoBA,EAAGob,QAASpb,EAAGnK,UAOnD,MAAM,IAAIgY,MAAM7N,EAAK,4BANrB,GAA6B,eAAzBurB,QAAQC,IAAIC,SACd,MAAM,IAAI5d,MACR,iKAKd,CAEM,OAAO+jB,CACb,CACIrG,OAAAA,CAAQ5c,GAAgB,IAAXkK,EAAOlP,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAClB,OAAKjT,KAAKg4B,QAAQh5B,QAAWmjB,EAAKyV,QAAWzV,EAAK8X,aAAgB9X,EAAKwV,OAG9D,IAAIvQ,EAAWpnB,KAAMiY,EAAKkK,GAF1B,IAAIqY,EAAax6B,KAAMiY,EAAKkK,EAI3C,CACIgZ,GAAAA,CAAI3jB,GAEF,OADAxX,KAAKg4B,QAAUh4B,KAAKg4B,QAAQl0B,OAAO9D,KAAKilB,UAAU,CAACzN,KAC5CxX,IACb,EAME,OAJAu1B,GAAYlO,EACZA,EAAUxU,QAAUwU,EACpB1C,EAAK+C,kBAAkBL,GACvBC,EAAUI,kBAAkBL,GACrBkO,EACT,CAGA,SAASwM,KACP,GAAI/B,GAAoB,OAAOD,GAC/BC,GAAqB,EACrB,IAAIvb,EAASkc,KACTvxB,EAAUoxB,KACVzb,EAAY2b,KACZxpB,EAAiBomB,KACjBhZ,EAAcmc,KACdnZ,EAAYsZ,KACZvF,EA72DN,WACE,GAAIwD,GAAqB,OAAOD,GAChCC,GAAsB,EACtB,IAAIpa,EAASkc,KACTvxB,EAAUoxB,KACVlc,EAAcmc,KACd5V,EAAQkW,KACRxY,EAAcuY,KACdnc,EAAOqc,KACPpc,EAAOsc,KACX,SAAS7F,EAASzP,EAAMnI,GACtB,GAAIvlB,MAAM4iB,QAAQ8K,GAAO,OAAOA,EAAKlT,KAAK7c,GAAOw/B,EAASx/B,KAC1D,IAAM4nB,OAAQ6X,GAA2B1P,EAAbvK,EAAauK,EAAAA,EAAAA,GACzC,GAAI0P,EAEF,IAAA,IAASxX,KADTL,EAAS,GACU6X,GAAW,CAC5B,IAAIC,EAAqBzX,EAAAA,EAAAA,CAAAA,EAAAA,GAAAA,GAAAA,CAAQlN,UAAWiU,EAAMpxB,YAC9C8hC,EAAc7iB,MAChB6iB,EAAc7iB,WACT6iB,EAAc7iB,KAAAA,GAAAA,CACjB9B,UAAW2R,EAAY9uB,aAG3BgqB,EAAOpkB,KAAKk8B,EACpB,CAKI,GAHIla,EAAS3G,QACX2G,EAAS3G,MAAQkR,EAAKlR,MAAMhC,KAAK7c,GAAOw/B,EAASx/B,EAAI4nB,MAEnDpC,EAASxkB,OAAQ,CACnB,IAAAmlC,EAA6B3gB,EAASxkB,QAAlCgnB,QAAEA,GAAoBme,EAARnlC,EAAAA,EAAAA,EAAAA,GAClBwkB,EAASxkB,OAASA,EACH,MAAXgnB,IACFxC,EAASxkB,OAAO8kB,MAAQ8B,EAAOI,GAEvC,CACI,GAAsB,SAAlBxC,EAASzf,KACX,OAAO,IAAI+iB,EAAKtD,GACPA,GAAkB,SAAlBA,EAASzf,KAClB,OAAO,IAAI0iB,EAAYjD,GACdA,GAAkB,SAAlBA,EAASzf,KAClB,OAAO,IAAIgjB,EAAKvD,GACPA,GAAkB,YAAlBA,EAASzf,KAClB,OAAO,IAAIwN,EAAQiS,GACVA,GAAkB,WAAlBA,EAASzf,KAClB,OAAO,IAAI6iB,EAAOpD,GAElB,MAAM,IAAIlK,MAAM,sBAAwByU,EAAKhqB,KAEnD,CAGE,OAFAg9B,GAAavD,EACbA,EAASxoB,QAAUwoB,EACZuD,EACT,CAwzDiBqD,GACXpX,EAAQkW,KACR3Z,EAAasa,KACbzV,EAAOgV,KACP7f,EAAQmf,KACR7b,EAAQ4c,KACRja,EAAYwa,KACZxM,EAASmM,KACT7c,EAAOqc,KACPpc,EAAOsc,KACP/hC,EAAYq+B,KACZvI,EAAUsM,KACd,SAAS9J,IAAqB,IAATO,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GAInB,OAHuB,IAAnBA,EAAQh5B,QAAgBd,MAAM4iB,QAAQkX,EAAQ,MAChDA,EAAUA,EAAQ,IAEb,IAAI3Q,EAAU2Q,EACzB,CA0DE,OAzDAP,EAASjgB,OAAS,SAAgB1a,EAAM4+B,GACtC,IAkBI7H,EAlBA8H,GAAiB,EACrB,SAASC,IACHnvB,SAAWA,QAAQC,OAASivB,IAC9BA,GAAiB,EACjBlvB,QAAQC,KACN5P,EAAO,qHAEL+3B,QAAQC,IAAI+G,MAAQhH,QAAQC,IAAI+G,KAAKn2B,WAAW,OAClD+G,QAAQC,KACN5P,EAAO,uEAIb,IAAIg/B,EAAcJ,KAAmBzoB,WAGrC,OAFA6oB,EAAYpG,cAAgB54B,EAC5Bg/B,EAAYlD,gBAAiB,IAAIvR,GAAY2R,QACtC8C,CACb,CAWI,OATAtkC,OAAOC,eAAemkC,EAAS,UAAW,CACxC5hC,IAAM,KACC65B,IAAOA,EAAQ+H,KACb/H,KAGX+H,EAAQ/G,QAAU,SAAS5c,EAAK8jB,EAAaC,GAC3C,OAAOvE,EAAS,CAACmE,EAAQI,KAAcnH,QAAQ5c,EAAK8jB,EACrD,EACMH,CACR,EACDnE,EAASt4B,UAAYA,EACrBs4B,EAAS/S,MAAQA,EACjB+S,EAAS4D,SAAWA,EACpB5D,EAASxL,KAAOA,EAChBwL,EAAStnB,QAAWkR,GAAa,IAAIjS,EAAQiS,GAC7CoW,EAASwE,OAAU5a,GAAa,IAAIoD,EAAOpD,GAC3CoW,EAASjc,KAAQ6F,GAAa,IAAIiD,EAAYjD,GAC9CoW,EAAS1a,KAAQsE,GAAa,IAAIuD,EAAKvD,GACvCoW,EAAS1b,KAAQsF,GAAa,IAAIsD,EAAKtD,GACvCoW,EAASl9B,SAAY8mB,GAAa,IAAIiG,EAAUjG,GAChDoW,EAASvgB,eAAiBA,EAC1BugB,EAASnT,YAAcA,EACvBmT,EAAS1S,UAAYA,EACrB0S,EAASpQ,UAAYA,EACrBoQ,EAAShvB,SAAW6e,EACpBmQ,EAASroB,QAAUA,EACnBqoB,EAASxC,QAAUA,EACnBwC,EAAShT,OAASA,EAClBgT,EAASpC,OAASA,EAClBoC,EAAS5M,MAAQA,EACjB4M,EAAS7S,KAAOA,EAChB6S,EAAS9S,KAAOA,EAChB8S,EAASj/B,KAAO4oB,EAChBgG,EAAWkT,gBAAgB7C,GAC3BsI,GAAYtI,EACZA,EAAS5kB,QAAU4kB,EACZsI,EACT,EA4FA,WACE,GAAIK,GAAsB,OAAOD,GACjCC,GAAuB,EACvB,IAAIvV,MAAEA,GAAUkX,KACZ7F,EA7FN,WACE,GAAIgE,GAAuB,OAAOD,GAClCC,GAAwB,EACxB,IAAI9wB,EAAUoxB,KACV7L,EAAS0M,KACThP,EAAY+O,KAgFhB,OADAnB,GA9EA,cAAyBtL,EACvB1B,oBAAAA,GAAuB,CAEvB9iB,OAAAA,CAAQ0hB,GACN,IAAI5wB,EAAQ,IAAImO,EAChBpP,KAAK4yB,KAAK3xB,EAAO4wB,EAAM,IACvB,IAAIhsB,EAAM7F,KAAK2hB,MAAMqJ,WAAW6G,EAAM,KAAO7xB,KAAK2hB,MAAMqJ,WAAWhrB,KAAK2hB,MAAM1J,IAAIjZ,OAAS,GAC3FiC,EAAMpE,OAAO2b,IAAM,CACjBlB,OAAQzR,EAAIolB,IACZ5T,KAAMxR,EAAIwR,KACV8J,OAAQ0Q,EAAM,GAAK,GAErB,IAAI/vB,EAAO+vB,EAAM,GAAG5tB,MAAM,GAE1B,GADuB,OAAnBnC,EAAKmC,OAAQ,KAAYnC,EAAOA,EAAKmC,MAAM,GAAK,IAChD,QAAQJ,KAAK/B,GACfb,EAAMa,KAAO,GACbb,EAAMuZ,KAAKc,KAAOxZ,EAClBb,EAAMuZ,KAAKe,MAAQ,OACd,CACL,IAAIxY,EAAQjB,EAAKiB,MAAM,wBACvB9B,EAAMa,KAAOiB,EAAM,GACnB9B,EAAMuZ,KAAKc,KAAOvY,EAAM,GACxB9B,EAAMuZ,KAAKe,MAAQxY,EAAM,EACjC,CACA,CACI0vB,eAAAA,GACEzyB,KAAKqyB,UAAYA,EAAUryB,KAAK2hB,MAAO,CAAE6P,cAAc,GAC7D,CACIhW,IAAAA,CAAK0X,GACCA,EAAOl0B,OAAS,GAAKk0B,EAAO9nB,MAAM9B,GAAiB,SAAVA,EAAG,MAC9CmO,MAAM+D,KAAK0X,EAEnB,CACIG,WAAAA,GAAc,CAEdY,OAAAA,GAKE,IAJIj0B,KAAKssB,QAAQ5R,OAAS1a,KAAKssB,QAAQ5R,MAAM1b,SAC3CgB,KAAKssB,QAAQ9R,KAAKN,UAAYla,KAAKka,WAErCla,KAAKssB,QAAQ9R,KAAKjB,OAASvZ,KAAKssB,QAAQ9R,KAAKjB,OAAS,IAAMvZ,KAAKwyB,OAC1DxyB,KAAKssB,QAAQ7d,QAClBzO,KAAKssB,QAAUtsB,KAAKssB,QAAQ7d,OAC5BzO,KAAKssB,QAAQ9R,KAAKjB,MAAQ,GAE5BvZ,KAAK+b,KAAKlf,OAAO2b,IAAMxY,KAAK8yB,YAAY9yB,KAAKqyB,UAAUnR,WAC7D,CACIwS,uBAAAA,CAAwBR,GACtB,IAAIrZ,EAAQ7Z,KAAK6Z,MAAMqZ,GACvB,IAAc,IAAVrZ,EAAJ,CACA,IAAIsiB,EAAWC,EACf,IAAKD,EAAYtiB,EAAQ,EAAGsiB,GAAa,GACV,SAAzBjJ,EAAOiJ,GAAW,GADoBA,KAG5C,KAAkB,IAAdA,GAAmBA,EAAY,GAAnC,CACA,IAAKC,EAAUD,EAAY,EAAGC,GAAW,EAAGA,IAC1C,GAA2B,UAAvBlJ,EAAOkJ,GAAS,GAAgB,CAClCA,GAAW,EACX,KACV,CAEM,IAAIlgC,EAAQg3B,EAAOjvB,MAAMk4B,GACrB3J,EAASU,EAAOjvB,MAAMm4B,EAASD,GACnCjJ,EAAOpN,OAAOsW,EAASlJ,EAAOl0B,OAASo9B,GACvCp8B,KAAKwyB,OAASA,EAAO9Z,KAAKpP,GAAOA,EAAG,KAAI/K,KAAK,IAC7CyB,KAAKwb,KAAKtf,EAX4B,CALjB,CAiB3B,CACIm4B,eAAAA,GAAkB,CAElBL,eAAAA,GACEh0B,KAAKssB,QAAQ9R,KAAKjB,OAAS,GACjC,CACIia,WAAAA,CAAYN,GACVlzB,KAAKwyB,QAAUU,EAAOxa,KAAKpP,GAAOA,EAAG,KAAI/K,KAAK,GACpD,CACIo0B,aAAAA,CAAc1xB,GACZA,EAAMnE,KAAO,EACnB,EAIA,CAOmBolC,GACjB/B,GAAY,SAAoBloB,EAAKkK,GACnC,IAAI2B,EAAS,IAAI+G,EAAM5S,EAAKkK,GACxByS,EAAU,IAAIsH,EAAWpY,GAE7B,OADA8Q,EAAQlQ,QACDkQ,EAAQ7Y,IAChB,CAEH,CACAomB,GACA,IACMpK,MADegK,MAErBhK,GAAQ54B,UACR44B,GAAQsD,SACRtD,GAAQvgB,OACRugB,GAAQrT,MACRqT,GAAQ9L,KACR8L,GAAQx9B,SACRw9B,GAAQ5nB,QACR4nB,GAAQkE,OACRlE,GAAQhb,KACRgb,GAAQvc,KACRuc,GAAQhc,KACRgc,GAAQ7gB,eACR6gB,GAAQzT,YACRyT,GAAQhT,UACRgT,GAAQ1Q,UACR0Q,GAAQtvB,SACRsvB,GAAQ3oB,QACR2oB,GAAQ9C,QACR8C,GAAQtT,OACRsT,GAAQ1C,OACR0C,GAAQlN,MACRkN,GAAQnT,KACRmT,GAAQpT,KACRoT,GAAQv/B,KA2CR,MAAM4pC,GAEJzlC,WAAAA,GACE8/B,GAAez8B,KAAM,gBAAiB,MACtCy8B,GAAez8B,KAAM,aAAc,MACnCy8B,GAAez8B,KAAM,iBACrBy8B,GAAez8B,KAAM,aAAc,MACnCy8B,GAAez8B,KAAM,YAAa,MAClCy8B,GAAez8B,KAAM,kBAAmB,MACxCy8B,GAAez8B,KAAM,cAAe,MACpCy8B,GAAez8B,KAAM,eAAgB,GACrCy8B,GAAez8B,KAAM,YAAa,GAClCy8B,GAAez8B,KAAM,YACrBy8B,GAAez8B,KAAM,YACrBy8B,GAAez8B,KAAM,aACzB,CACE,cAAIpE,GAGF,IAFA,IAAMymC,EAAc,GAChBC,EAAgBtiC,KAAKuiC,WAClBD,GACLD,EAAYhjC,KAAKijC,GACjBA,EAAgBA,EAAczzB,YAEhC,OAAOwzB,CACX,CACEpmC,QAAAA,CAASgF,GACP,KAAMA,aAAiBmhC,IAAa,OAAO,EAClCnhC,GAAAA,EAAMuhC,gBAAkBxiC,KAAKwiC,cAAe,OAAO,EACnDvhC,GAAAA,IAAUjB,KAAM,OAAO,EAChC,KAAOiB,EAAMnF,YAAY,CACvB,GAAImF,EAAMnF,aAAekE,KAAM,OAAO,EACtCiB,EAAQA,EAAMnF,UACpB,CACI,OAAO,CACX,CAEEpB,WAAAA,CAAY+nC,GACV,MAAM,IAAItrB,MAET,8GACL,CAEE2K,YAAAA,CAAa2gB,EAAWC,GACtB,MAAM,IAAIvrB,MAET,+GACL,CAEErc,WAAAA,CAAY6nC,GACV,MAAM,IAAIxrB,MAET,8GACL,CACEld,QAAAA,GACE,MAAO,QACX,EA0pCA,IAAM2oC,GAAoB,CACxBpqC,KAAM,CAAC,aAAc,aAAc,gBAAiB,eACpDC,WAAY,CAAC,OAAQ,eACrBC,QAAS,CAAC,aAAc,gBAAiB,oBACzCC,iBAAkB,IAEdkqC,GAAkB,CACtBrqC,KAAM,CAAC,WAAY,eACnBC,WAAY,CAAC,gBACbC,QAAS,GACTC,iBAAkB,CAAC,gBAEfmqC,GAAyB,CAAE,EAUjC,SAASC,GAAsBnrC,GAC7B,GAAIkrC,GAAuBlrC,GACzB,OAAOkrC,GAAuBlrC,GAChC,IAAMmB,EAZR,SAAyCnB,GACvC,IAAIoB,EAAKC,EACHC,EAAkI,OAAjGD,EAA8D,OAAxDD,EAAoB,MAAdG,gBAAqB,EAASA,WAAWC,WAAgB,EAASJ,EAAIK,iBAAsB,EAASJ,EAAGK,KAAKN,EAAKpB,GACrK,OAAIsB,GAAiCC,WAAWD,GACvCC,WAAWD,QAElB,CAEJ,CAIoB8pC,CAAgCprC,IAAQuB,WAAWvB,GAC/D4B,EAAmBT,EAAUU,UAC7BC,EAAgB9B,KAAOgrC,GAAoBA,GAAkBhrC,QAAO,EACpE+B,EAAuBC,QAC3BF,GACAA,EAAcG,OACXC,IACC,IAAId,EAAKC,EACT,OAAOW,QACoG,OAAxGX,EAA4E,OAAtED,EAAMxB,OAAOuC,yBAAyBP,EAAkBM,SAAqB,EAASd,EAAIgB,UAAe,EAASf,EAAGgB,WAAWC,SAAS,iBACjJ,KAIDC,EAAcvC,KAAOirC,GAAkBA,GAAgBjrC,QAAO,EAC9DwC,EAAqBR,QACzBO,GAAeA,EAAYN,OAExBQ,IACC,IAAIrB,EACJ,MAA2C,mBAA7BQ,EAAiBa,KAA+D,OAAnCrB,EAAMQ,EAAiBa,SAAmB,EAASrB,EAAIiB,WAAWC,SAAS,iBAAe,KAI3J,GAAIP,GAAwBS,EAE1B,OADA0oC,GAAuBlrC,GAAOmB,EAAUU,UACjCV,EAAUU,UAEnB,IACE,IAAMa,EAAWC,SAASC,cAAc,UACxCD,SAASE,KAAKC,YAAYJ,GAC1B,IAAMK,EAAML,EAASM,cACrB,IAAKD,EAAK,OAAO5B,EAAUU,UAC3B,IAAMoB,EAAkBF,EAAI/C,GAAK6B,UAEjC,OADAc,SAASE,KAAKK,YAAYR,GACrBO,EACEioC,GAAuBlrC,GAAOiD,EADRrB,CAEvB,CAAA,MAAAypC,GACN,OAAOzpC,CACX,CACA,CACA,IAAM0pC,GAAyB,CAAE,EACjC,SAASC,GAAqBvrC,EAAKsD,EAAUpB,GAC3C,IAAId,EACEmC,EAAcvD,GAAAA,OAAAA,EAAOwD,KAAAA,OAAAA,OAAOtB,IAClC,GAAIopC,GAAuB/nC,GACzB,OAAO+nC,GAAuB/nC,GAAU7B,KACtC4B,GAEJ,IAAMG,EAAqB0nC,GAAsBnrC,GAC3C0D,EAGA,OAHqBtC,EAAMxB,OAAOuC,yBACtCsB,EACAvB,SACW,EAASd,EAAIgB,IAC1B,OAAKsB,GACL4nC,GAAuB/nC,GAAYG,EAC5BA,EAAkBhC,KAAK4B,IAFCA,EAASpB,EAG1C,CACA,IAAMspC,GAAuB,CAAE,EAC/B,SAASC,GAAmBzrC,EAAKsD,EAAUb,GACzC,IAAMc,EAAcvD,GAAAA,OAAAA,EAAOwD,KAAAA,OAAAA,OAAOf,IAClC,GAAI+oC,GAAqBjoC,GACvB,OAAOioC,GAAqBjoC,GAAUM,KACpCP,GAEJ,IACMQ,EADqBqnC,GAAsBnrC,GACNyC,GAC3C,MAA+B,mBAApBqB,EAAuCR,EAASb,IAC3D+oC,GAAqBjoC,GAAYO,EAC1BA,EAAgBD,KAAKP,GAC9B,CAoCA,SAASooC,KACP,OAAOP,GAAsB,oBAAoBpmC,WACnD,CACA,SAASC,GAAMC,EAAQC,EAAMC,GAC3B,IACE,KAAMD,KAAQD,GACZ,MAAO,OAGT,IAAMG,EAAWH,EAAOC,GAClBG,EAAUF,EAAYC,GAW5B,MAVuB,mBAAZC,IACTA,EAAQxD,UAAYwD,EAAQxD,WAAa,CAAE,EAC3CjC,OAAO0F,iBAAiBD,EAAS,CAC/BE,mBAAoB,CAClBpF,YAAY,EACZF,MAAOmF,MAIbH,EAAOC,GAAQG,EACR,KACLJ,EAAOC,GAAQE,CAAAA,CAEX,CAAA,MAAAumC,GACN,MAAO,MAEX,CACA,CACA,IAAM7gB,GAAQ,CACZ9mB,WAjEF,SAAoBC,GAClB,OAAOsnC,GAAqB,OAAQtnC,EAAI,aAC1C,EAgEEC,WA/DF,SAAoBD,GAClB,OAAOsnC,GAAqB,OAAQtnC,EAAI,aAC1C,EA8DEE,cA7DF,SAAuBF,GACrB,OAAOsnC,GAAqB,OAAQtnC,EAAI,gBAC1C,EA4DEG,YA3DF,SAAqBH,GACnB,OAAOsnC,GAAqB,OAAQtnC,EAAI,cAC1C,EA0DEI,SAzDF,SAAkBJ,EAAIK,GACpB,OAAOmnC,GAAmB,OAAQxnC,EAAI,WAA/BwnC,CAA2CnnC,EACpD,EAwDEC,YAvDF,SAAqBN,GACnB,OAAOwnC,GAAmB,OAAQxnC,EAAI,cAA/BwnC,EACT,EAsDEjnC,KArDF,SAAcP,GACZ,OAAKA,GAAQ,SAAUA,EAChBsnC,GAAqB,aAActnC,EAAI,QADX,IAErC,EAmDEQ,YAlDF,SAAqBR,GACnB,OAAOA,EAAGQ,WACZ,EAiDEC,WAhDF,SAAoBT,GAClB,OAAKA,GAAQ,eAAgBA,EACtBsnC,GAAqB,UAAWtnC,EAAI,cADF,IAE3C,EA8CEU,cA7CF,SAAuBV,EAAIW,GACzB,OAAO2mC,GAAqB,UAAWtnC,EAAI,gBAApCsnC,CAAqD3mC,EAC9D,EA4CEC,iBA3CF,SAA0BZ,EAAIW,GAC5B,OAAO2mC,GAAqB,UAAWtnC,EAAI,mBAApCsnC,CAAwD3mC,EACjE,EA0CEE,iBAAkB4mC,GAClB1mC,MAAAA,IAEF,SAAS4mC,GAAG5hC,EAAM6hC,GAAuB,IAAnBC,EAASnpC,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,SACvBgN,EAAU,CAAEo8B,SAAS,EAAMC,SAAS,GAE1C,OADAF,EAAOl3B,iBAAiB5K,EAAM6hC,EAAIl8B,GAC3B,IAAMm8B,EAAOv3B,oBAAoBvK,EAAM6hC,EAAIl8B,EACpD,CACA,IAAMs8B,GAAiC,4NACnCC,GAAU,CACZprB,IAAK,CAAE,EACPvY,MAAQ,KACNsM,QAAQ/N,MAAMmlC,KACP,GAETvjC,QAAU,KACRmM,QAAQ/N,MAAMmlC,IACP,MAETljC,iBAAAA,GACE8L,QAAQ/N,MAAMmlC,GACf,EACD9iC,IAAM,KACJ0L,QAAQ/N,MAAMmlC,KACP,GAETviC,KAAAA,GACEmL,QAAQ/N,MAAMmlC,GAClB,GAYA,SAASE,GAASxX,EAAMyX,GAAoB,IAAdz8B,EAAU0L,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAClCgxB,EAAU,KACVjW,EAAW,EACf,OAAO,WAAkB,IAANvI,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GACjB,IAAMye,EAAMC,KAAKD,MACZlW,IAAgC,IAApBzmB,EAAQ68B,UACvBpW,EAAWkW,GAEb,IAAMG,EAAYL,GAAQE,EAAMlW,GAC1BsW,EAAUtkC,KACZqkC,GAAa,GAAKA,EAAYL,GAC5BC,IACFlyB,aAAakyB,GACbA,EAAU,MAEZjW,EAAWkW,EACX3X,EAAKrZ,MAAMoxB,EAAS7e,IACVwe,IAAgC,IAArB18B,EAAQg9B,WAC7BN,EAAUpyB,YAAW,KACnBmc,GAA+B,IAApBzmB,EAAQ68B,QAAoB,EAAID,KAAKD,MAChDD,EAAU,KACV1X,EAAKrZ,MAAMoxB,EAAS7e,EAAI,GACvB4e,GAEN,CACH,CACA,SAASG,GAAWd,EAAQ9rC,EAAKwb,EAAGqxB,GAAyB,IAAd9pC,EAAMiI,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,OAC7C5F,EAAWrC,EAAInD,OAAOuC,yBAAyB2pC,EAAQ9rC,GAe7D,OAdA+C,EAAInD,OAAOC,eACTisC,EACA9rC,EACA6sC,EAAYrxB,EAAI,CACdhS,GAAAA,CAAIvJ,GACFga,YAAW,KACTuB,EAAEhS,IAAI9H,KAAK0G,KAAMnI,EAAK,GACrB,GACCmF,GAAYA,EAASoE,KACvBpE,EAASoE,IAAI9H,KAAK0G,KAAMnI,EAElC,IAGS,IAAM2sC,GAAWd,EAAQ9rC,EAAKoF,GAAY,IAAI,EACvD,CArDsB,oBAAX4F,QAA0BA,OAAOohB,OAASphB,OAAOmQ,UAC1D+wB,GAAU,IAAI9f,MAAM8f,GAAS,CAC3B9pC,IAAI0pC,CAAAA,EAAQhoB,EAAMgpB,KACH,QAAThpB,GACFjP,QAAQ/N,MAAMmlC,IAET9wB,QAAQ/Y,IAAI0pC,EAAQhoB,EAAMgpB,OAgDvC,IAAIC,GAAeR,KAAKD,IAIxB,SAASU,GAAgBjqC,GACvB,IAAI3B,EAAKC,EAAI4rC,EAAIC,EACX7/B,EAAMtK,EAAIJ,SAChB,MAAO,CACL+gB,KAAMrW,EAAI8/B,iBAAmB9/B,EAAI8/B,iBAAiBt3B,gBAAiC,IAApB9S,EAAIqqC,YAAyBrqC,EAAIqqC,YAAc//B,EAAIggC,gBAAgBx3B,aAAsB,MAAPxI,OAAc,EAASA,EAAIxK,QAAmD,OAAxCzB,EAAM0pB,GAAM3mB,cAAckJ,EAAIxK,YAAiB,EAASzB,EAAIyU,cAA0D,OAAzCxU,EAAY,MAAPgM,OAAc,EAASA,EAAIxK,WAAgB,EAASxB,EAAGwU,aAAe,EAC/Uy3B,IAAKjgC,EAAI8/B,iBAAmB9/B,EAAI8/B,iBAAiBp3B,eAAgC,IAApBhT,EAAIwqC,YAAyBxqC,EAAIwqC,aAAsB,MAAPlgC,OAAc,EAASA,EAAIggC,gBAAgBt3B,aAAsB,MAAP1I,OAAc,EAASA,EAAIxK,QAAkD,OAAvCoqC,EAAKniB,GAAM3mB,cAAckJ,EAAIxK,YAAiB,EAASoqC,EAAGl3B,aAAyD,OAAzCm3B,EAAY,MAAP7/B,OAAc,EAASA,EAAIxK,WAAgB,EAASqqC,EAAGn3B,YAAc,EAErW,CACA,SAASy3B,KACP,OAAOxiC,OAAOyiC,aAAe9qC,SAAS0qC,iBAAmB1qC,SAAS0qC,gBAAgBK,cAAgB/qC,SAASE,MAAQF,SAASE,KAAK6qC,YACnI,CACA,SAASC,KACP,OAAO3iC,OAAO4iC,YAAcjrC,SAAS0qC,iBAAmB1qC,SAAS0qC,gBAAgBQ,aAAelrC,SAASE,MAAQF,SAASE,KAAKgrC,WACjI,CACA,SAASC,GAAqBzkC,GAC5B,OAAKA,EAGMA,EAAM3D,WAAa2D,EAAM1D,aAAe0D,EAAQyhB,GAAM3mB,cAAckF,GAFtE,IAIX,CACA,SAAS0kC,GAAU1kC,EAAOyG,EAAYC,EAAef,GACnD,IAAK3F,EACH,OAAO,EAET,IAAMqE,EAAKogC,GAAqBzkC,GAChC,IAAKqE,EACH,OAAO,EAET,IACE,GAA0B,iBAAfoC,EAAyB,CAClC,GAAIpC,EAAGwB,UAAU7K,SAASyL,GAAa,OAAO,EAC9C,GAAId,GAAmD,OAAjCtB,EAAG6B,QAAQ,IAAMO,GAAsB,OAAO,OAEpE,GAAIf,GAAkBrB,EAAIoC,EAAYd,GAAiB,OAAO,CAEjE,CAAA,MAAQS,GAAI,CAEb,GAAIM,EAAe,CACjB,GAAIrC,EAAG8B,QAAQO,GAAgB,OAAO,EACtC,GAAIf,GAAgD,OAA9BtB,EAAG6B,QAAQQ,GAAyB,OAAO,CACrE,CACE,OAAO,CACT,CAIA,SAASi+B,GAAU/pC,EAAI4L,EAASiI,GAC9B,QAAmB,UAAf7T,EAAG8F,UAAuB+N,EAAem2B,qBAGtCp+B,EAAQtH,MAAMtE,KAAQ8I,CAC/B,CACA,SAASmhC,GAAkBpC,EAAQj8B,GACjC,GAAIjK,EAAakmC,GACf,OAAO,EAET,IAAMtjC,EAAKqH,EAAQtH,MAAMujC,GACzB,IAAKj8B,EAAQ1G,IAAIX,GACf,OAAO,EAET,IAAMqO,EAASiU,GAAM5mB,WAAW4nC,GAChC,QAAIj1B,GAAUA,EAAOnR,WAAaomC,EAAOn7B,kBAGpCkG,GAGEq3B,GAAkBr3B,EAAQhH,GACnC,CACA,SAASs+B,GAAoB1M,GAC3B,OAAOz/B,QAAQy/B,EAAM2M,eACvB,CAqDA,SAASC,GAAmBpqC,EAAI4L,GAC9B,OAAO7N,QAAwB,WAAhBiC,EAAGqqC,UAAyBz+B,EAAQpH,QAAQxE,GAC7D,CACA,SAASsqC,GAAuBtqC,EAAI4L,GAClC,OAAO7N,QACW,SAAhBiC,EAAGqqC,UAAuBrqC,EAAGyB,WAAazB,EAAG0B,cAAgB1B,EAAGkQ,cAA2C,eAA3BlQ,EAAGkQ,aAAa,QAA2BtE,EAAQpH,QAAQxE,GAE/I,CAsBA,SAASuqC,GAAcvqC,GACrB,QAAKA,IACDA,aAAcumC,IAAc,eAAgBvmC,EACvCjC,QAAQiC,EAAGS,YAEb1C,QAAQ8oB,GAAMpmB,WAAWT,IAClC,kBAnKsCgI,KAAKsgC,KAAKD,MAAMjqC,cACpD0qC,GAAeA,KAAuB,IAAIR,MAAQkC,WA+LpD,MAAMC,GACJ3pC,WAAAA,GACEjF,EAAcsI,KAAM,KAAM,GAC1BtI,EAAcsI,KAAM,aAAkCE,IAAAA,SACtDxI,EAAcsI,KAAM,aAAkCC,IAAAA,IAC1D,CACEE,KAAAA,CAAMsJ,GAAY,IAAA88B,EAChB,OAA0C,QAA1CA,EAAOvmC,KAAKwmC,WAAWxsC,IAAIyP,UAAe,IAAA88B,EAAAA,GAAA,CAC9C,CACExlC,GAAAA,CAAI0I,GACF,OAAOzJ,KAAKwmC,WAAWzlC,IAAI0I,EAC/B,CAIEvI,GAAAA,CAAIuI,EAAYrJ,GACd,OAAIJ,KAAKe,IAAI0I,GAAoBzJ,KAAKG,MAAMsJ,IAG1Cg9B,OADS,IAAPrmC,EACMJ,KAAKI,KACAA,EACfJ,KAAKwmC,WAAWplC,IAAIqI,EAAYg9B,GAChCzmC,KAAK0mC,WAAWtlC,IAAIqlC,EAAOh9B,GACpBg9B,GANP,IAAIA,CAOR,CACEE,QAAAA,CAASvmC,GACP,OAAOJ,KAAK0mC,WAAW1sC,IAAIoG,IAAO,IACtC,CACEkB,KAAAA,GACEtB,KAAKwmC,eAAiCtmC,QACtCF,KAAK0mC,eAAiCzmC,IACtCD,KAAKI,GAAK,CACd,CACEwmC,UAAAA,GACE,OAAO5mC,KAAKI,IAChB,EAEA,SAASymC,GAAchrC,GACrB,IAAI7C,EACA8tC,EAAa,KAGjB,MAFI,gBAAiBjrC,IAAwC,OAAhC7C,EAAM0pB,GAAMvmB,YAAYN,SAAe,EAAS7C,EAAIsE,YAAc9E,KAAKuuC,wBAA0BrkB,GAAMtmB,KAAKsmB,GAAMvmB,YAAYN,MACzJirC,EAAapkB,GAAMtmB,KAAKsmB,GAAMvmB,YAAYN,KACrCirC,CACT,CAQA,SAASE,GAAgBnrC,GACvB,IAAMoJ,EAAMpJ,EAAG2mC,cACf,IAAKv9B,EAAK,OAAO,EACjB,IAAM6hC,EAVR,SAA2BjrC,GAGzB,IAFA,IACIirC,EADAG,EAAiBprC,EAEdirC,EAAaD,GAAcI,IAChCA,EAAiBH,EACnB,OAAOG,CACT,CAIqBC,CAAkBrrC,GACrC,OAAO6mB,GAAMzmB,SAASgJ,EAAK6hC,EAC7B,CACA,SAASK,GAAMtrC,GACb,IAAMoJ,EAAMpJ,EAAG2mC,cACf,QAAKv9B,IACEyd,GAAMzmB,SAASgJ,EAAKpJ,IAAOmrC,GAAgBnrC,GACpD,CAqCA,IAAIurC,IAA8BC,IAChCA,EAAWA,EAA6B,iBAAI,GAAK,mBACjDA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAAgC,oBAAI,GAAK,sBACpDA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAAmB,OAAI,GAAK,SAChCA,IACND,IAAa,CAAA,GACZE,IAAsCC,IACxCA,EAAmBA,EAA6B,SAAI,GAAK,WACzDA,EAAmBA,EAA8B,UAAI,GAAK,YAC1DA,EAAmBA,EAAqC,iBAAI,GAAK,mBACjEA,EAAmBA,EAA2B,OAAI,GAAK,SACvDA,EAAmBA,EAAmC,eAAI,GAAK,iBAC/DA,EAAmBA,EAA0B,MAAI,GAAK,QACtDA,EAAmBA,EAA8B,UAAI,GAAK,YAC1DA,EAAmBA,EAAqC,iBAAI,GAAK,mBACjEA,EAAmBA,EAAmC,eAAI,GAAK,iBAC/DA,EAAmBA,EAAmC,eAAI,GAAK,iBAC/DA,EAAmBA,EAAyB,KAAI,IAAM,OACtDA,EAAmBA,EAAwB,IAAI,IAAM,MACrDA,EAAmBA,EAAyB,KAAI,IAAM,OACtDA,EAAmBA,EAAqC,iBAAI,IAAM,mBAClEA,EAAmBA,EAA8B,UAAI,IAAM,YAC3DA,EAAmBA,EAAsC,kBAAI,IAAM,oBACnEA,EAAmBA,EAAkC,cAAI,IAAM,gBACxDA,IACND,IAAqB,CAAA,GACpBE,IAAsCC,IACxCA,EAAmBA,EAA4B,QAAI,GAAK,UACxDA,EAAmBA,EAA8B,UAAI,GAAK,YAC1DA,EAAmBA,EAA0B,MAAI,GAAK,QACtDA,EAAmBA,EAAgC,YAAI,GAAK,cAC5DA,EAAmBA,EAA6B,SAAI,GAAK,WACzDA,EAAmBA,EAA0B,MAAI,GAAK,QACtDA,EAAmBA,EAAyB,KAAI,GAAK,OACrDA,EAAmBA,EAA+B,WAAI,GAAK,aAC3DA,EAAmBA,EAAuC,mBAAI,GAAK,qBACnEA,EAAmBA,EAA6B,SAAI,GAAK,WACzDA,EAAmBA,EAAgC,YAAI,IAAM,cACtDA,IACND,IAAqB,CAAA,GACpBE,IAAiCC,IACnCA,EAAcA,EAAqB,MAAI,GAAK,QAC5CA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAAqB,MAAI,GAAK,QACrCA,IACND,IAAgB,CAAA,GACfE,IAAkCC,IACpCA,EAAeA,EAAe,MAAQ,GAAK,KAC3CA,EAAeA,EAAsB,MAAI,GAAK,QAC9CA,EAAeA,EAAuB,OAAI,GAAK,SACxCA,IACND,IAAiB,CAAA,GAChBE,IAAsCC,IACxCA,EAAmBA,EAAyB,KAAI,GAAK,OACrDA,EAAmBA,EAA0B,MAAI,GAAK,QACtDA,EAAmBA,EAA2B,OAAI,GAAK,SACvDA,EAAmBA,EAAiC,aAAI,GAAK,eAC7DA,EAAmBA,EAA+B,WAAI,GAAK,aACpDA,IACND,IAAqB,CAAA,GAqBpBE,IAA6B1vC,IAC/BA,EAAUA,EAAoB,SAAI,GAAK,WACvCA,EAAUA,EAAwB,aAAI,GAAK,eAC3CA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAgB,KAAI,GAAK,OACnCA,EAAUA,EAAiB,MAAI,GAAK,QACpCA,EAAUA,EAAmB,QAAI,GAAK,UAC/BA,IACN0vC,IAAY,CAAA,GACf,SAASC,GAAmBpsC,GAC1B,MAAO,SAAUA,CACnB,CACA,MAAMqsC,GACJvrC,WAAAA,GACEjF,EAAcsI,KAAM,SAAU,GAC9BtI,EAAcsI,KAAM,OAAQ,MAC5BtI,EAAcsI,KAAM,OAAQ,KAChC,CACEhG,GAAAA,CAAIknB,GACF,GAAIA,GAAYlhB,KAAKhB,OACnB,MAAM,IAAImY,MAAM,kCAGlB,IADA,IAAImV,EAAUtsB,KAAKmoC,KACVxvB,EAAS,EAAGA,EAASuI,EAAUvI,IACtC2T,GAAsB,MAAXA,OAAkB,EAASA,EAAQ7J,OAAS,KAEzD,OAAO6J,CACX,CACE8b,OAAAA,CAAQvsC,GACN,IAAMoF,EAAQ,CACZpJ,MAAOgE,EACPmyB,SAAU,KACVvL,KAAM,MAGR,GADA5mB,EAAGwsC,KAAOpnC,EACNpF,EAAGiT,iBAAmBm5B,GAAmBpsC,EAAGiT,iBAAkB,CAChE,IAAMwd,EAAUzwB,EAAGiT,gBAAgBu5B,KAAK5lB,KACxCxhB,EAAMwhB,KAAO6J,EACbrrB,EAAM+sB,SAAWnyB,EAAGiT,gBAAgBu5B,KACpCxsC,EAAGiT,gBAAgBu5B,KAAK5lB,KAAOxhB,EAC3BqrB,IACFA,EAAQ0B,SAAW/sB,EAEZpF,MAAAA,GAAAA,EAAGgT,aAAeo5B,GAAmBpsC,EAAGgT,cAAgBhT,EAAGgT,YAAYw5B,KAAKra,SAAU,CAC/F,IAAM1B,EAAUzwB,EAAGgT,YAAYw5B,KAAKra,SACpC/sB,EAAM+sB,SAAW1B,EACjBrrB,EAAMwhB,KAAO5mB,EAAGgT,YAAYw5B,KAC5BxsC,EAAGgT,YAAYw5B,KAAKra,SAAW/sB,EAC3BqrB,IACFA,EAAQ7J,KAAOxhB,QAGbjB,KAAKmoC,OACPnoC,KAAKmoC,KAAKna,SAAW/sB,GAEvBA,EAAMwhB,KAAOziB,KAAKmoC,KAClBnoC,KAAKmoC,KAAOlnC,EAEK,OAAfA,EAAMwhB,OACRziB,KAAKsoC,KAAOrnC,GAEdjB,KAAKhB,QACT,CACEupC,UAAAA,CAAW1sC,GACT,IAAMywB,EAAUzwB,EAAGwsC,KACdroC,KAAKmoC,OAGL7b,EAAQ0B,UAQX1B,EAAQ0B,SAASvL,KAAO6J,EAAQ7J,KAC5B6J,EAAQ7J,KACV6J,EAAQ7J,KAAKuL,SAAW1B,EAAQ0B,SAEhChuB,KAAKsoC,KAAOhc,EAAQ0B,WAXtBhuB,KAAKmoC,KAAO7b,EAAQ7J,KAChBziB,KAAKmoC,KACPnoC,KAAKmoC,KAAKna,SAAW,KAErBhuB,KAAKsoC,KAAO,MAUZzsC,EAAGwsC,aACExsC,EAAGwsC,KAEZroC,KAAKhB,SACT,EAEA,IA2gBIwpC,GA3gBEC,GAAUA,CAACroC,EAAIsoC,IAAgBtoC,GAAAA,OAAAA,cAAMsoC,GAC3C,MAAMC,GACJhsC,WAAAA,GACEjF,EAAcsI,KAAM,UAAU,GAC9BtI,EAAcsI,KAAM,UAAU,GAC9BtI,EAAcsI,KAAM,QAAS,IAC7BtI,EAAcsI,KAAM,aAAc,IAClCtI,EAAcsI,KAAM,eAAoCE,IAAAA,SACxDxI,EAAcsI,KAAM,UAAW,IAC/BtI,EAAcsI,KAAM,aAAc,IAClCtI,EAAcsI,KAAM,WAAY,IAkBhCtI,EAAcsI,KAAM,WAAgC4oC,IAAAA,KACpDlxC,EAAcsI,KAAM,WAAgC4oC,IAAAA,KACpDlxC,EAAcsI,KAAM,aAAkC4oC,IAAAA,KACtDlxC,EAAcsI,KAAM,sBAA2C4oC,IAAAA,KAC/DlxC,EAAcsI,KAAM,cACpBtI,EAAcsI,KAAM,cACpBtI,EAAcsI,KAAM,iBACpBtI,EAAcsI,KAAM,iBACpBtI,EAAcsI,KAAM,oBACpBtI,EAAcsI,KAAM,oBACpBtI,EAAcsI,KAAM,oBACpBtI,EAAcsI,KAAM,cACpBtI,EAAcsI,KAAM,eACpBtI,EAAcsI,KAAM,mBACpBtI,EAAcsI,KAAM,gBACpBtI,EAAcsI,KAAM,gBACpBtI,EAAcsI,KAAM,kBACpBtI,EAAcsI,KAAM,kBACpBtI,EAAcsI,KAAM,OACpBtI,EAAcsI,KAAM,UACpBtI,EAAcsI,KAAM,iBACpBtI,EAAcsI,KAAM,qBACpBtI,EAAcsI,KAAM,oBACpBtI,EAAcsI,KAAM,iBACpBtI,EAAcsI,KAAM,wBACpBtI,EAAcsI,KAAM,iBACpBtI,EAAcsI,KAAM,oBAAqB6oC,IACvCA,EAAUhoC,QAAQb,KAAK8oC,iBACvB9oC,KAAK+oC,MAAM,IAEbrxC,EAAcsI,KAAM,QAAQ,KAC1B,IAAIA,KAAKgpC,SAAUhpC,KAAKipC,OAAxB,CAwEA,IArEA,IAAMC,EAAO,GACPC,MAA+BP,IAC/BQ,EAAU,IAAIlB,GACdmB,EAAaxtC,IAGjB,IAFA,IAAIytC,EAAKztC,EACL0tC,EAAS5kC,EACN4kC,IAAW5kC,GAEhB4kC,GADAD,EAAKA,GAAMA,EAAGz6B,cACC7O,KAAKwH,OAAOrH,MAAMmpC,GAEnC,OAAOC,CAAAA,EAEHC,EAAW3tC,IACf,IAAM4S,EAASiU,GAAM5mB,WAAWD,GAChC,GAAK4S,GAAW04B,GAAMtrC,IAA0B,aAAnB4S,EAAO9M,QAApC,CAGA,IAAM+mC,EAAWlrC,EAAaiR,GAAUzO,KAAKwH,OAAOrH,MAAM0mC,GAAchrC,IAAOmE,KAAKwH,OAAOrH,MAAMsO,GAC3F86B,EAASF,EAAUxtC,GACzB,IAAuB0tC,IAAnBb,IAAkC,IAAfa,EACrB,OAAOH,EAAQhB,QAAQvsC,GAEzB,IAAMqU,EAAKV,GAAoB3T,EAAI,CACjCoJ,IAAKjF,KAAKiF,IACVuC,OAAQxH,KAAKwH,OACbE,WAAY1H,KAAK0H,WACjBC,cAAe3H,KAAK2H,cACpBV,cAAejH,KAAKiH,cACpBC,iBAAkBlH,KAAKkH,iBACvBuI,WAAW,EACXtH,mBAAmB,EACnBN,iBAAkB7H,KAAK6H,iBACvBnG,iBAAkB1B,KAAK0B,iBACvBoG,WAAY9H,KAAK8H,WACjBjG,YAAa7B,KAAK6B,YAClB6N,eAAgB1P,KAAK0P,eACrB3H,eAAgB/H,KAAK+H,eACrBE,aAAcjI,KAAKiI,aACnBD,aAAchI,KAAKgI,aACnB2H,YAAc85B,IACRxD,GAAmBwD,EAAUzpC,KAAKwH,SACpCxH,KAAK0pC,cAAcC,UAAUF,GAE3BtD,GAAuBsD,EAAUzpC,KAAKwH,SACxCxH,KAAK4pC,kBAAkBC,iBACrBJ,GAGArD,GAAcvqC,IAChBmE,KAAK8pC,iBAAiBC,cAAcrnB,GAAMpmB,WAAWT,GAAKmE,KAAKiF,IAC7E,EAEU2K,aAAcA,CAACo6B,EAAQC,KACrBjqC,KAAK0pC,cAAcQ,aAAaF,EAAQC,GACxCjqC,KAAK8pC,iBAAiBK,oBAAoBH,EAAM,EAElDl6B,iBAAkBA,CAACqC,EAAM83B,KACvBjqC,KAAK4pC,kBAAkBQ,kBAAkBj4B,EAAM83B,EAAO,IAGtD/5B,IACFg5B,EAAK7pC,KAAK,CACRqpC,WACAa,SACArlB,KAAMhU,IAERi5B,EAASjoC,IAAIgP,EAAG9P,IAlD1B,CAmDA,EAEaJ,KAAKqqC,WAAWrrC,QACrBgB,KAAKwH,OAAO7G,kBAAkBX,KAAKqqC,WAAW3X,SAEhD,IAAW72B,IAAAA,KAAMmE,KAAKsqC,SAChBC,GAAgBvqC,KAAKwqC,oBAAqB3uC,EAAImE,KAAKwH,UAAYxH,KAAKsqC,SAASvpC,IAAI2hB,GAAM5mB,WAAWD,KAGtG2tC,EAAQ3tC,GAEV,IAAWA,IAAAA,KAAMmE,KAAKyqC,SACfC,GAAgB1qC,KAAK2qC,WAAY9uC,IAAQ0uC,GAAgBvqC,KAAKwqC,oBAAqB3uC,EAAImE,KAAKwH,QAEtFkjC,GAAgB1qC,KAAKsqC,SAAUzuC,GACxC2tC,EAAQ3tC,GAERmE,KAAK2qC,WAAWzpC,IAAIrF,GAJpB2tC,EAAQ3tC,GAQZ,IADA,IAAI9C,EAAY,KACTqwC,EAAQpqC,QAAQ,CACrB,IAAIiC,EAAQ,KACZ,GAAIlI,EAAW,CACb,IAAM2vC,EAAW1oC,KAAKwH,OAAOrH,MAAMuiB,GAAM5mB,WAAW/C,EAAUlB,QACxD0xC,EAASF,EAAUtwC,EAAUlB,QACZ0xC,IAAnBb,IAAkC,IAAfa,IACrBtoC,EAAQlI,EAEpB,CACQ,IAAKkI,EAEH,IADA,IAAI2pC,EAAWxB,EAAQd,KAChBsC,GAAU,CACf,IAAMjI,EAAQiI,EAEd,GADAA,EAAWA,EAAS5c,SAChB2U,EAAO,CACT,IAAM+F,EAAW1oC,KAAKwH,OAAOrH,MAAMuiB,GAAM5mB,WAAW6mC,EAAM9qC,QAE1D,IAAe,IADAwxC,EAAU1G,EAAM9qC,OACZ,SACV6wC,IAAiB,IAAjBA,EAAiB,CACxBznC,EAAQ0hC,EACR,MAEA,IAAMkI,EAAgBlI,EAAM9qC,MACtB4W,EAASiU,GAAM5mB,WAAW+uC,GAChC,GAAIp8B,GAAUA,EAAOnR,WAAa9E,KAAKuuC,uBAAwB,CAC7D,IAAMD,EAAapkB,GAAMtmB,KAAKqS,GAE9B,IAAsB,IADJzO,KAAKwH,OAAOrH,MAAM2mC,GACd,CACpB7lC,EAAQ0hC,EACR,KACpB,CACA,CAEA,CACA,CAEQ,IAAK1hC,EAAO,CACV,KAAOmoC,EAAQjB,MACbiB,EAAQb,WAAWa,EAAQjB,KAAKtwC,OAElC,KACV,CACQkB,EAAYkI,EAAM+sB,SAClBob,EAAQb,WAAWtnC,EAAMpJ,OACzB2xC,EAAQvoC,EAAMpJ,MACtB,CACM,IAAMizC,EAAU,CACdC,MAAO/qC,KAAK+qC,MAAMryB,KAAK5W,IACrB,IAAMjG,EAAKiG,EAAKoiB,KACVzV,EAASiU,GAAM5mB,WAAWD,GAIhC,OAHI4S,GAA6B,aAAnBA,EAAO9M,SACnB3B,KAAKgrC,yBAAyBv8B,GAEzB,CACLrO,GAAIJ,KAAKwH,OAAOrH,MAAMtE,GACtBhE,MAAOiK,EAAKjK,MACb,IACAg+B,QAAQ/zB,IAAUqnC,EAASpoC,IAAIe,EAAK1B,MAAKy1B,QAAQ/zB,GAAS9B,KAAKwH,OAAOzG,IAAIe,EAAK1B,MAClFgJ,WAAYpJ,KAAKoJ,WAAWsP,KAAKuyB,IAC/B,IAAM7hC,WAAEA,GAAe6hC,EACvB,GAAgC,iBAArB7hC,EAAW8hC,MAAoB,CACxC,IAAMC,EAAYjsC,KAAKC,UAAU8rC,EAAUG,WACrCC,EAAiBnsC,KAAKC,UAAU8rC,EAAUK,kBAC5CH,EAAUnsC,OAASoK,EAAW8hC,MAAMlsC,SACjCmsC,EAAYE,GAAgBtsC,MAAM,QAAQC,SAAWoK,EAAW8hC,MAAMnsC,MAAM,QAAQC,SACvFoK,EAAW8hC,MAAQD,EAAUG,UAG7C,CACU,MAAO,CACLhrC,GAAIJ,KAAKwH,OAAOrH,MAAM8qC,EAAU/mB,MAChC9a,aACD,IACAysB,QAAQoV,IAAe9B,EAASpoC,IAAIkqC,EAAU7qC,MAAKy1B,QAAQoV,GAAcjrC,KAAKwH,OAAOzG,IAAIkqC,EAAU7qC,MACtGmrC,QAASvrC,KAAKurC,QACdrC,SAEG4B,EAAQC,MAAM/rC,QAAW8rC,EAAQ1hC,WAAWpK,QAAW8rC,EAAQS,QAAQvsC,QAAW8rC,EAAQ5B,KAAKlqC,UAGpGgB,KAAK+qC,MAAQ,GACb/qC,KAAKoJ,WAAa,GAClBpJ,KAAKwrC,iBAAmCtrC,QACxCF,KAAKurC,QAAU,GACfvrC,KAAKyqC,aAA+B7B,IACpC5oC,KAAKsqC,aAA+B1B,IACpC5oC,KAAK2qC,eAAiC/B,IACtC5oC,KAAKwqC,wBAA0C5B,IAC/C5oC,KAAKyrC,SAAW,CAAE,EAClBzrC,KAAK0rC,WAAWZ,GAlLtB,CAkL6B,IAEzBpzC,EAAcsI,KAAM,4BAA6B2rC,IAC/C,IAAIC,EAAO5rC,KAAKwrC,aAAaxxC,IAAI2xC,GAC5BC,IACHA,EAAO,CACL1nB,KAAMynB,EACNviC,WAAY,CAAE,EACdgiC,UAAW,CAAE,EACbE,iBAAkB,CAAA,GAEpBtrC,KAAKoJ,WAAW/J,KAAKusC,GACrB5rC,KAAKwrC,aAAapqC,IAAIuqC,EAAUC,IAElCA,EAAKxiC,WAAWvR,MAAQqG,MAAMC,KAC5BukB,GAAM9mB,WAAW+vC,IAChBE,GAAOnpB,GAAM1mB,YAAY6vC,IAAO,KACjCttC,KAAK,GAAE,IAEX7G,EAAcsI,KAAM,mBAAoB8rC,IACtC,IAAIlG,GAAUkG,EAAEpI,OAAQ1jC,KAAKwH,OAAQxH,KAAK0P,gBAG1C,OAAQo8B,EAAElqC,MACR,IAAK,gBACH,IAAM/J,EAAQ6qB,GAAM1mB,YAAY8vC,EAAEpI,QAC7BiC,GAAUmG,EAAEpI,OAAQ1jC,KAAK0H,WAAY1H,KAAK2H,eAAe,IAAU9P,IAAUi0C,EAAEC,UAClF/rC,KAAK+qC,MAAM1rC,KAAK,CACdxH,MAAOmP,GACL8kC,EAAEpI,OACF1jC,KAAKiH,cACLjH,KAAKkH,kBACL,IAEGrP,EAAQmI,KAAK8H,WAAa9H,KAAK8H,WAAWjQ,EAAO6tC,GAAqBoG,EAAEpI,SAAW7rC,EAAM4G,QAAQ,QAAS,KAAO5G,EACtHqsB,KAAM4nB,EAAEpI,SAGZ,MAEF,IAAK,aACH,IAAMA,EAASoI,EAAEpI,OACbsI,EAAgBF,EAAEE,cAClBn0C,EAAQi0C,EAAEpI,OAAO33B,aAAaigC,GAClC,GAAsB,UAAlBA,EAA2B,CAC7B,IAAMpqC,EAAOQ,EAAashC,GAC1B7rC,EAAQ0J,EAAe,CACrBE,QAASiiC,EACThiC,iBAAkB1B,KAAK0B,iBACvBC,QAAS+hC,EAAO/hC,QAChBC,OACA/J,MAAAA,EACAgK,YAAa7B,KAAK6B,aAEhC,CACU,GAAI8jC,GAAUmG,EAAEpI,OAAQ1jC,KAAK0H,WAAY1H,KAAK2H,eAAe,IAAU9P,IAAUi0C,EAAEC,SACjF,OAEF,IAAIH,EAAO5rC,KAAKwrC,aAAaxxC,IAAI8xC,EAAEpI,QACnC,GAAuB,WAAnBA,EAAO/hC,SAA0C,QAAlBqqC,IAA4BhsC,KAAKkI,gBAAgBrQ,GAAQ,CAC1F,GAAK6rC,EAAOx1B,gBAGV,OAFA89B,EAAgB,QAI9B,CAcU,GAbKJ,IACHA,EAAO,CACL1nB,KAAM4nB,EAAEpI,OACRt6B,WAAY,CAAE,EACdgiC,UAAW,CAAE,EACbE,iBAAkB,CAAA,GAEpBtrC,KAAKoJ,WAAW/J,KAAKusC,GACrB5rC,KAAKwrC,aAAapqC,IAAI0qC,EAAEpI,OAAQkI,IAEZ,SAAlBI,GAA+C,UAAnBtI,EAAO/hC,SAA4D,cAApCmqC,EAAEC,UAAY,IAAI/pC,eAC/E0hC,EAAO/9B,aAAa,sBAAuB,SAExCc,GAAgBi9B,EAAO/hC,QAASqqC,GAOnC,GANAJ,EAAKxiC,WAAW4iC,GAAiBpmC,GAC/B5F,KAAKiF,IACLjD,EAAY0hC,EAAO/hC,SACnBK,EAAYgqC,GACZn0C,GAEoB,UAAlBm0C,EAA2B,CAC7B,IAAKhsC,KAAKisC,cACR,IACEjsC,KAAKisC,cAAgB1xC,SAAS2xC,eAAeC,oBAC9C,CAAA,MAAQ9kC,GACPrH,KAAKisC,cAAgBjsC,KAAKiF,GAC5C,CAEc,IAAMmnC,EAAMpsC,KAAKisC,cAAczxC,cAAc,QAI7C,IAAA,IAAW6xC,KAHPP,EAAEC,UACJK,EAAIzmC,aAAa,QAASmmC,EAAEC,UAEV7tC,MAAMC,KAAKulC,EAAOwH,QAAQ,CAC5C,IAAMoB,EAAW5I,EAAOwH,MAAMqB,iBAAiBF,GACzCG,EAAc9I,EAAOwH,MAAMuB,oBAAoBJ,GACjDC,IAAaF,EAAIlB,MAAMqB,iBAAiBF,IAAUG,IAAgBJ,EAAIlB,MAAMuB,oBAAoBJ,GAEhGT,EAAKR,UAAUiB,GADG,KAAhBG,EACsBF,EAEA,CAACA,EAAUE,GAGrCZ,EAAKN,iBAAiBe,GAAS,CAACC,EAAUE,EAE5D,CACc,IAAA,IAAWH,KAASnuC,MAAMC,KAAKiuC,EAAIlB,OACY,KAAzCxH,EAAOwH,MAAMqB,iBAAiBF,KAChCT,EAAKR,UAAUiB,IAAS,EAG7B,KAA4B,SAAlBL,GAA+C,WAAnBtI,EAAO/hC,UACxC+hC,EAAOt8B,QAAQ,gBACjBwkC,EAAKxiC,WAAyB,aAAI,QAElCwiC,EAAKxiC,WAAyB,aAAI,aAIxC,MAEF,IAAK,YACH,GAAIu8B,GAAUmG,EAAEpI,OAAQ1jC,KAAK0H,WAAY1H,KAAK2H,eAAe,GAC3D,OACF,GAAyB,aAArBmkC,EAAEpI,OAAO/hC,QAEX,YADA3B,KAAKgrC,yBAAyBc,EAAEpI,QAGlCoI,EAAEY,WAAW7rC,SAAShF,GAAOmE,KAAK2sC,QAAQ9wC,EAAIiwC,EAAEpI,UAChDoI,EAAEc,aAAa/rC,SAAShF,IACtB,IAAMgxC,EAAS7sC,KAAKwH,OAAOrH,MAAMtE,GAC3B6sC,EAAWlrC,EAAasuC,EAAEpI,QAAU1jC,KAAKwH,OAAOrH,MAAMuiB,GAAMtmB,KAAK0vC,EAAEpI,SAAW1jC,KAAKwH,OAAOrH,MAAM2rC,EAAEpI,QACpGiC,GAAUmG,EAAEpI,OAAQ1jC,KAAK0H,WAAY1H,KAAK2H,eAAe,IAAUi+B,GAAU/pC,EAAImE,KAAKwH,OAAQxH,KAAK0P,kBAxxBnH,SAAsB7T,EAAI4L,GACxB,OAA6B,IAAtBA,EAAQtH,MAAMtE,EACvB,CAsxBuIixC,CAAajxC,EAAImE,KAAKwH,UAG7IxH,KAAKyqC,SAAS1pC,IAAIlF,IACpBkxC,GAAW/sC,KAAKyqC,SAAU5uC,GAC1BmE,KAAK2qC,WAAWzpC,IAAIrF,IACXmE,KAAKyqC,SAAS1pC,IAAI+qC,EAAEpI,UAA0B,IAAfmJ,GACjC/G,GAAkBgG,EAAEpI,OAAQ1jC,KAAKwH,UACjCxH,KAAKsqC,SAASvpC,IAAIlF,IAAOmE,KAAKyrC,SAAShD,GAAQoE,EAAQnE,IAC9DqE,GAAW/sC,KAAKsqC,SAAUzuC,IAE1BmE,KAAKurC,QAAQlsC,KAAK,CAChBqpC,WACAtoC,GAAIysC,EACJr7B,YAAUhU,EAAasuC,EAAEpI,UAAWhmC,EAAkBouC,EAAEpI,eAAiB,IAoGzF,SAAwB7nC,EAAIg4B,GAC1B,IAAMmZ,EAAQ,CAACnxC,GACf,KAAOmxC,EAAMhuC,QAAQ,CACnB,IAAMyjB,EAAOuqB,EAAM3oC,MACfwvB,EAAM9yB,IAAI0hB,KACdoR,EAAM3yB,IAAIuhB,GACVC,GAAM9mB,WAAW6mB,GAAM5hB,SAASosC,GAAQD,EAAM3tC,KAAK4tC,KACvD,CAEA,CA3GcC,CAAerxC,EAAImE,KAAKwqC,uBAE1BxqC,KAAKqqC,WAAWhrC,KAAKxD,GAAE,IAInC,IAKInE,EAAcsI,KAAM,WAAW,CAACnE,EAAI6nC,KAClC,IAAI1jC,KAAKmtC,qBAAqBC,cAAcvxC,EAAImE,QAC5CA,KAAKyqC,SAAS1pC,IAAIlF,KAAOmE,KAAKsqC,SAASvpC,IAAIlF,GAA/C,CACA,GAAImE,KAAKwH,OAAOxG,QAAQnF,GAAK,CAC3B,GAAI+pC,GAAU/pC,EAAImE,KAAKwH,OAAQxH,KAAK0P,gBAClC,OAEF1P,KAAKsqC,SAASppC,IAAIrF,GAClB,IAAIwxC,EAAW,KACX3J,GAAU1jC,KAAKwH,OAAOxG,QAAQ0iC,KAChC2J,EAAWrtC,KAAKwH,OAAOrH,MAAMujC,IAE3B2J,IAA6B,IAAjBA,IACdrtC,KAAKyrC,SAAShD,GAAQzoC,KAAKwH,OAAOrH,MAAMtE,GAAKwxC,KAAa,QAG5DrtC,KAAKyqC,SAASvpC,IAAIrF,GAClBmE,KAAK2qC,WAAW/pC,OAAO/E,GAEpB8pC,GAAU9pC,EAAImE,KAAK0H,WAAY1H,KAAK2H,eAAe,KACtD+a,GAAM9mB,WAAWC,GAAIgF,SAASyQ,GAAWtR,KAAK2sC,QAAQr7B,KAClD80B,GAAcvqC,IAChB6mB,GAAM9mB,WAAW8mB,GAAMpmB,WAAWT,IAAKgF,SAASyQ,IAC9CtR,KAAKmtC,qBAAqBjsC,IAAIoQ,EAAQtR,MACtCA,KAAK2sC,QAAQr7B,EAAQzV,EAAE,IAtBuB,CAyB1D,GAEA,CACE+2B,IAAAA,CAAKrrB,GACH,CACE,aACA,aACA,gBACA,gBACA,mBACA,mBACA,mBACA,aACA,cACA,kBACA,eACA,eACA,iBACA,iBACA,MACA,SACA,gBACA,oBACA,mBACA,gBACA,wBACA1G,SAASjJ,IACToI,KAAKpI,GAAO2P,EAAQ3P,EAAG,GAE7B,CACE+e,MAAAA,GACE3W,KAAKgpC,QAAS,EACdhpC,KAAKstC,cAAc32B,QACvB,CACE42B,QAAAA,GACEvtC,KAAKgpC,QAAS,EACdhpC,KAAKstC,cAAcC,WACnBvtC,KAAK+oC,MACT,CACEyE,QAAAA,GACE,OAAOxtC,KAAKgpC,MAChB,CACEyE,IAAAA,GACEztC,KAAKipC,QAAS,EACdjpC,KAAKstC,cAAcG,MACvB,CACEC,MAAAA,GACE1tC,KAAKipC,QAAS,EACdjpC,KAAKstC,cAAcI,SACnB1tC,KAAK+oC,MACT,CACEznC,KAAAA,GACEtB,KAAK8pC,iBAAiBxoC,QACtBtB,KAAKstC,cAAchsC,OACvB,EAEA,SAASyrC,GAAWY,EAAS9xC,GAC3B8xC,EAAQ/sC,OAAO/E,GACf6mB,GAAM9mB,WAAWC,GAAIgF,SAASyQ,GAAWy7B,GAAWY,EAASr8B,IAC/D,CAWA,SAASi5B,GAAgBgB,EAAS1vC,EAAI4L,GACpC,OAAqB,IAAjB8jC,EAAQqC,MAGd,SAA0BrC,EAAS1vC,EAAIgyC,GACrC,IAAM5sC,EAAQyhB,GAAM5mB,WAAWD,GAC/B,QAAKoF,GACEsqC,EAAQxqC,IAAIE,EACrB,CANS6sC,CAAiBvC,EAAS1vC,EACnC,CAMA,SAAS6uC,GAAgBtpC,EAAKvF,GAC5B,OAAiB,IAAbuF,EAAIwsC,MACDG,GAAiB3sC,EAAKvF,EAC/B,CACA,SAASkyC,GAAiB3sC,EAAKvF,GAC7B,IAAM4S,EAASiU,GAAM5mB,WAAWD,GAChC,QAAK4S,MAGDrN,EAAIL,IAAI0N,IAGLs/B,GAAiB3sC,EAAKqN,GAC/B,CAQA,IAAMu/B,GAAmBtoB,IACvB,IAAK8iB,GACH,OAAO9iB,EAYT,OAVqB,WACnB,IACE,OAAOA,KAAUzS,UAClB,CAAA,MAAQvU,GACP,GAAI8pC,KAAwC,IAAxBA,GAAa9pC,GAC/B,OAEF,MAAMA,CACZ,CACG,CACMuvC,EAEHC,GAAkB,GACxB,SAASC,GAAe9U,GACtB,IACE,GAAI,iBAAkBA,EAAO,CAC3B,IAAM92B,EAAO82B,EAAM+U,eACnB,GAAI7rC,EAAKvD,OACP,OAAOuD,EAAK,EAEf,MAAA,GAAU,SAAU82B,GAASA,EAAM92B,KAAKvD,OACvC,OAAOq6B,EAAM92B,KAAK,EAExB,CAAA,MAAA8rC,GAAU,CAER,OAAOhV,GAASA,EAAMqK,MACxB,CACA,SAAS4K,GAAqB/mC,EAASgnC,GACrC,IAAMC,EAAiB,IAAI7F,GAC3BuF,GAAgB7uC,KAAKmvC,GACrBA,EAAe5b,KAAKrrB,GACpB,IAAMknC,EAAW,IAAKnL,KAAL,CACf0K,GAAgBQ,EAAeE,iBAAiBjzC,KAAK+yC,KAUvD,OARAC,EAASE,QAAQJ,EAAQ,CACvBnlC,YAAY,EACZwlC,mBAAmB,EACnBC,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,SAAS,IAEJP,CACT,CAiEA,SAASQ,GAONC,GAAA,IAPmCC,mBACpCA,EAAAA,IACAlqC,EACAuC,OAAQC,EAAAA,WACRC,EAAAA,cACAC,EAAAA,SACAynC,GACFF,EACE,IAAkC,IAA9BE,EAASC,iBACX,MAAO,OAGT,IAAMC,GAA2C,IAA9BF,EAASC,uBAA2D,IAA9BD,EAASC,iBAA8B,GAAKD,EAASC,iBACxGE,EAAW,GACbC,EAAqB,KA4EzB,OArBAh4C,OAAOiJ,KAAK+mC,IAAmB3R,QAC5Bj+B,GAAQ63C,OAAOC,MAAMD,OAAO73C,MAAUA,EAAI+3C,SAAS,eAAoC,IAApBL,EAAW13C,KAC/EiJ,SAAS+uC,IACT,IAAIC,EAAY7tC,EAAY4tC,GACtBE,EA1DYF,IACVvW,IACN,IAAMqK,EAASyK,GAAe9U,GAC9B,IAAIsM,GAAUjC,EAAQh8B,EAAYC,GAAe,GAAjD,CAGA,IAAIooC,EAAc,KACdC,EAAeJ,EACnB,GAAI,gBAAiBvW,EAAO,CAC1B,OAAQA,EAAM0W,aACZ,IAAK,QACHA,EAAcrI,GAAauI,MAC3B,MACF,IAAK,QACHF,EAAcrI,GAAawI,MAC3B,MACF,IAAK,MACHH,EAAcrI,GAAayI,IAG3BJ,IAAgBrI,GAAawI,MAC3B1I,GAAkBoI,KAAcpI,GAAkB4I,UACpDJ,EAAe,aACNxI,GAAkBoI,KAAcpI,GAAkB6I,UAC3DL,EAAe,YAEQtI,GAAayI,SAC/BpK,GAAoB1M,KAC7B0W,EAAcrI,GAAawI,OAET,OAAhBH,GACFP,EAAqBO,GACjBC,EAAatqC,WAAW,UAAYqqC,IAAgBrI,GAAawI,OAASF,EAAatqC,WAAW,UAAYqqC,IAAgBrI,GAAauI,SAC7IF,EAAc,OAEPvI,GAAkBoI,KAAcpI,GAAkB8I,QAC3DP,EAAcP,EACdA,EAAqB,MAEvB,IAAMnoC,EAAK0+B,GAAoB1M,GAASA,EAAM2M,eAAe,GAAK3M,EAClE,GAAKhyB,EAAL,CAGA,IAAMjH,EAAKqH,EAAQtH,MAAMujC,IACnB6M,QAAEA,EAAAA,QAASC,GAAYnpC,EAC7B2mC,GAAgBmB,EAAhBnB,CAAkCzmB,EAAA,CAChC3lB,KAAM4lC,GAAkBwI,GACxB5vC,KACAqK,EAAG8lC,EACH5lC,EAAG6lC,GACgB,OAAhBT,GAAwB,CAAEA,gBARrC,CArCA,CA8CO,EAOaU,CAAWb,GAC3B,GAAIhtC,OAAO8tC,aACT,OAAQlJ,GAAkBoI,IACxB,KAAKpI,GAAkB4I,UACvB,KAAK5I,GAAkB6I,QACrBR,EAAYA,EAAUpxC,QACpB,QACA,WAEF,MACF,KAAK+oC,GAAkBmJ,WACvB,KAAKnJ,GAAkBoJ,SACrB,OAGNrB,EAASlwC,KAAKmkC,GAAGqM,EAAWC,EAAS7qC,GAAI,IAEpC+oC,IAAgB,KACrBuB,EAAS1uC,SAASgwC,GAAMA,KAAG,GAE/B,CACA,SAASC,GAONC,GAAA,IAPyBC,SAC1BA,EAAAA,IACA/rC,EACAuC,OAAQC,EAAAA,WACRC,EAAAA,cACAC,EAAAA,SACAynC,GACF2B,EA2BE,OAAOvN,GAAG,SA1BawK,GACrBjK,GACEiK,IAAiBiD,IACf,IAAMvN,EAASyK,GAAe8C,GAC9B,GAAKvN,IAAUiC,GAAUjC,EAAQh8B,EAAYC,GAAe,GAA5D,CAGA,IAAMvH,EAAKqH,EAAQtH,MAAMujC,GACzB,GAAIA,IAAWz+B,GAAOA,EAAIisC,YAAa,CACrC,IAAMC,EAAgBvM,GAAgB3/B,EAAIisC,aAC1CF,EAAS,CACP5wC,KACAqK,EAAG0mC,EAAc71B,KACjB3Q,EAAGwmC,EAAcjM,WAGnB8L,EAAS,CACP5wC,KACAqK,EAAGi5B,EAAOj2B,WACV9C,EAAG+4B,EAAO/1B,WAbtB,CAeA,IAEMyhC,EAASgC,QAAU,MAGansC,EACtC,CAuBA,IAAMosC,GAAa,CAAC,QAAS,WAAY,UACnCC,OAAwCpxC,QAsH9C,SAASqxC,GAA0BnzC,GAgBjC,OAdA,SAAiBozC,EAAW3rC,GAC1B,GAAI4rC,GAAiB,oBAAsBD,EAAUE,sBAAsBC,iBAAmBF,GAAiB,iBAAmBD,EAAUE,sBAAsBE,cAAgBH,GAAiB,oBAAsBD,EAAUE,sBAAsBG,iBAAmBJ,GAAiB,qBAAuBD,EAAUE,sBAAsBI,iBAAkB,CACpW,IAGMn5B,EAHSza,MAAMC,KACnBqzC,EAAUE,WAAW1zC,UAEDgG,QAAQwtC,GAC9B3rC,EAAIugB,QAAQzN,EAClB,MAAA,GAAe64B,EAAUO,iBAAkB,CACrC,IACMp5B,EADSza,MAAMC,KAAKqzC,EAAUO,iBAAiB/zC,UAC/BgG,QAAQwtC,GAC9B3rC,EAAIugB,QAAQzN,EAClB,CACI,OAAO9S,CACX,CACSmsC,CAAQ5zC,EAfG,GAgBpB,CACA,SAAS6zC,GAAgBpoC,EAAOpC,EAASyqC,GACvC,IAAI9xC,EAAI+xC,EACR,OAAKtoC,GACDA,EAAMuoC,UAAWhyC,EAAKqH,EAAQtH,MAAM0J,EAAMuoC,WACzCD,EAAUD,EAAY/xC,MAAM0J,GAC1B,CACLsoC,UACA/xC,OALiB,CAAE,CAOvB,CAkMA,SAASiyC,KAGNC,GAAO,IACJt5C,EAAKC,EAAI4rC,GAHbr9B,OAAQC,EAAAA,kBACRmiC,GACF2I,EAEMC,EAAS,KACuBA,EAAb,cAAnBF,EAAMpM,SAAmCz+B,EAAQtH,MAAMmyC,GAC7C7qC,EAAQtH,MAAMuiB,GAAMtmB,KAAKk2C,IACvC,IAAMG,EAAiC,cAAnBH,EAAMpM,SAAwD,OAA5BltC,EAAMs5C,EAAMpB,kBAAuB,EAASl4C,EAAIyP,SAAkF,OAAtEo8B,EAAmC,OAA7B5rC,EAAKq5C,EAAM9P,oBAAyB,EAASvpC,EAAGi4C,kBAAuB,EAASrM,EAAGpsC,WACrMi6C,GAA6C,MAAfD,OAAsB,EAASA,EAAYh5C,WAAajC,OAAOuC,yBAClF,MAAf04C,OAAsB,EAASA,EAAYh5C,UAC3C,2BACE,EACJ,OAAe,OAAX+4C,IAAoC,IAAjBA,GAAkBC,GAAgBC,GAGzDl7C,OAAOC,eAAe66C,EAAO,qBAAsB,CACjDt6C,aAAc06C,EAA2B16C,aACzCD,WAAY26C,EAA2B36C,WACvCiC,GAAAA,GACE,IAAI24C,EACJ,OAAiD,OAAzCA,EAAMD,EAA2B14C,UAAe,EAAS24C,EAAIr5C,KAAK0G,KAC3E,EACDoB,GAAAA,CAAIwxC,GACF,IAAID,EACErvB,EAAoD,OAAzCqvB,EAAMD,EAA2BtxC,UAAe,EAASuxC,EAAIr5C,KAAK0G,KAAM4yC,GACzF,GAAe,OAAXJ,IAAkC,IAAfA,EACrB,IACE5I,EAAkBiJ,iBAAiBD,EAAQJ,EAC5C,CAAA,MAAQnrC,GAAI,CAGf,OAAOic,CACb,IAES0qB,IAAgB,KACrBx2C,OAAOC,eAAe66C,EAAO,qBAAsB,CACjDt6C,aAAc06C,EAA2B16C,aACzCD,WAAY26C,EAA2B36C,WAEvCiC,IAAK04C,EAA2B14C,IAEhCoH,IAAKsxC,EAA2BtxC,KACjC,KA7BM,MA+BX,CAkTA,SAAS0xC,GAAcC,GAAgB,IAOjCr2C,EAPqBs2C,EAAQ//B,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,EAC3BggC,EAAgBF,EAAG9tC,IAAIisC,YAC7B,IAAK+B,EACH,MAAO,QAlGX,SAAoBF,EAAIC,GACtB,IAAMtH,WACJA,EAAAA,YACAwH,EAAAA,mBACA/D,EAAAA,SACA6B,EAAAA,iBACAmC,EAAAA,QACAC,EAAAA,mBACAC,EAAAA,iBACAC,EAAAA,mBACAC,EAAAA,iBACAC,EAAAA,OACAC,EAAAA,YACAC,EAAAA,gBACAC,GACEZ,EACJA,EAAGrH,WAAa,WACVsH,EAAMY,UACRZ,EAAMY,YAAa3gC,WAErBy4B,KAAez4B,UAChB,EACD8/B,EAAGG,YAAc,WACXF,EAAMa,WACRb,EAAMa,aAAc5gC,WAEtBigC,KAAgBjgC,UACjB,EACD8/B,EAAG5D,mBAAqB,WAClB6D,EAAM3D,kBACR2D,EAAM3D,oBAAqBp8B,WAE7Bk8B,KAAuBl8B,UACxB,EACD8/B,EAAG/B,SAAW,WACRgC,EAAM5B,QACR4B,EAAM5B,UAAWn+B,WAEnB+9B,KAAa/9B,UACd,EACD8/B,EAAGI,iBAAmB,WAChBH,EAAMc,gBACRd,EAAMc,kBAAmB7gC,WAE3BkgC,KAAqBlgC,UACtB,EACD8/B,EAAGK,QAAU,WACPJ,EAAMrxB,OACRqxB,EAAMrxB,SAAU1O,WAElBmgC,KAAYngC,UACb,EACD8/B,EAAGM,mBAAqB,WAClBL,EAAMe,iBACRf,EAAMe,mBAAoB9gC,WAE5BogC,KAAuBpgC,UACxB,EACD8/B,EAAGO,iBAAmB,WAChBN,EAAMgB,gBACRhB,EAAMgB,kBAAmB/gC,WAE3BqgC,KAAqBrgC,UACtB,EACD8/B,EAAGQ,mBAAqB,WAClBP,EAAMiB,kBACRjB,EAAMiB,oBAAqBhhC,WAE7BsgC,KAAuBtgC,UACxB,EACD8/B,EAAGS,iBAAmB,WAChBR,EAAMkB,gBACRlB,EAAMkB,kBAAmBjhC,WAE3BugC,KAAqBvgC,UACtB,EACD8/B,EAAGU,OAAS,WACNT,EAAMmB,MACRnB,EAAMmB,QAASlhC,WAEjBwgC,KAAWxgC,UACZ,EACD8/B,EAAGW,YAAc,WACXV,EAAMoB,WACRpB,EAAMoB,aAAcnhC,WAEtBygC,KAAgBzgC,UACjB,EACD8/B,EAAGY,gBAAkB,WACfX,EAAMqB,eACRrB,EAAMqB,iBAAmBphC,WAE3B0gC,KAAqB1gC,UACtB,CACH,CAOEqhC,CAAWvB,EAAIC,GAEXD,EAAGwB,YACL73C,EAAmB4xC,GAAqByE,EAAIA,EAAG9tC,MAEjD,IAAMuvC,EAt5BR,SAKGC,GAAA,IALuBvB,YACxBA,EAAAA,SACA9D,EAAAA,IACAnqC,EACAuC,OAAQC,GACVgtC,EACE,IAA2B,IAAvBrF,EAASyE,UACX,MAAO,OAGT,IAGIa,EAHEC,EAA0C,iBAAvBvF,EAASyE,UAAyBzE,EAASyE,UAAY,GAC1Ee,EAA0D,iBAA/BxF,EAASyF,kBAAiCzF,EAASyF,kBAAoB,IACpGC,EAAY,GAEVC,EAAYhR,GAChBiK,IACGnxC,IACC,IAAMm4C,EAAc7Q,KAAKD,MAAQwQ,EACjCxB,EACE4B,EAAUp8B,KAAKmE,IACbA,EAAEo4B,YAAcD,EACTn4B,KAEThgB,GAEFi4C,EAAY,GACZJ,EAAe,IAAA,IAGnBE,GAEIM,EAAiBlH,GACrBjK,GACEiK,IAAiBiD,IACf,IAAMvN,EAASyK,GAAe8C,IACxBV,QAAEA,EAAAA,QAASC,GAAYzK,GAAoBkL,GAAOA,EAAIjL,eAAe,GAAKiL,EAC3EyD,IACHA,EAAe/P,MAEjBmQ,EAAUz1C,KAAK,CACboL,EAAG8lC,EACH5lC,EAAG6lC,EACHpwC,GAAIqH,EAAQtH,MAAMujC,GAClBuR,WAAYtQ,KAAiB+P,IAE/BK,EACuB,oBAAdI,WAA6BlE,aAAekE,UAAY7N,GAAkB8N,KAAOnE,aAAeoE,WAAa/N,GAAkBgO,UAAYhO,GAAkBiO,UACrK,IAEHZ,EACA,CACEpQ,UAAU,KAIVgL,EAAW,CACf/L,GAAG,YAAa0R,EAAgBjwC,GAChCu+B,GAAG,YAAa0R,EAAgBjwC,GAChCu+B,GAAG,OAAQ0R,EAAgBjwC,IAE7B,OAAO+oC,IAAgB,KACrBuB,EAAS1uC,SAASgwC,GAAMA,KAAG,GAE/B,CAu1B2B2E,CAAiBzC,GACpC0C,EAA0BxG,GAA6B8D,GACvD2C,EAAgB5E,GAAmBiC,GACnC4C,EAvtBR,SAAmEC,EAAAC,GAAA,IAA/B1C,iBAAEA,GAAAyC,GAAoBj7C,IAAEA,GAAGk7C,EACzDC,GAAQ,EACRC,GAAQ,EAkBZ,OAAOvS,GAAG,SAjBcwK,GACtBjK,GACEiK,IAAgB,KACd,IAAMpjC,EAASw6B,KACT16B,EAAQ66B,KACVuQ,IAAUlrC,GAAUmrC,IAAUrrC,IAChCyoC,EAAiB,CACfzoC,MAAO+kC,OAAO/kC,GACdE,OAAQ6kC,OAAO7kC,KAEjBkrC,EAAQlrC,EACRmrC,EAAQrrC,EAClB,IAEM,MAGiC/P,EACvC,CAksBgCq7C,CAA2BjD,EAAI,CAC3Dp4C,IAAKs4C,IAEDgD,EAlsBR,SAYGC,GAAA,IAZwB9C,QACzBA,EAAAA,IACAnuC,EACAuC,OAAQC,EAAAA,WACRC,EAAAA,cACAC,EAAAA,YACAwuC,EAAAA,eACAC,EAAAA,iBACA10C,EAAAA,YACAG,EAAAA,SACAutC,EAAAA,qBACAiH,GACFH,EACE,SAASI,EAAajd,GACpB,IAAIqK,EAASyK,GAAe9U,GACtBkd,EAAgBld,EAAMmd,UACtB70C,EAAU+hC,GAAUA,EAAO/hC,QAIjC,GAHI+hC,GAAsB,WAAZ/hC,IACZ+hC,EAAShhB,GAAM3mB,cAAc2nC,IAE1BA,GAAW/hC,KAAW0vC,GAAWrtC,QAAQrC,GAAW,KAAKgkC,GAAUjC,EAAQh8B,EAAYC,GAAe,MAGvG+7B,EAAO58B,UAAU7K,SAASk6C,IAAgBC,GAAkB1S,EAAOt8B,QAAQgvC,IAA/E,CAGA,IAAIt0C,EAAO4hC,EAAO7rC,MACd4+C,GAAY,EACV70C,EAAOQ,EAAashC,IAAW,GACxB,UAAT9hC,GAA6B,aAATA,EACtB60C,EAAY/S,EAAO35B,SACVrI,EAAiBC,EAAQK,gBAAkBN,EAAiBE,MACrEE,EAAOP,EAAe,CACpBE,QAASiiC,EACThiC,mBACAC,UACAC,OACA/J,MAAOiK,EACPD,iBAGJ60C,EACEhT,EACA2S,EAAuB,CAAEv0C,OAAM20C,YAAWF,iBAAkB,CAAEz0C,OAAM20C,cAEtE,IAAM35C,EAAO4mC,EAAO5mC,KACP,UAAT8E,GAAoB9E,GAAQ25C,GAC9BxxC,EAAIxI,iBAA8CK,6BAAAA,OAAAA,EAAQ,OAAE+D,SAASyE,IACnE,GAAIA,IAAOo+B,EAAQ,CACjB,IAAMiT,EAAQrxC,EAAGzN,MACjB6+C,EACEpxC,EACA+wC,EAAuB,CAAEv0C,KAAM60C,EAAOF,WAAYA,EAAWF,eAAe,GAAU,CAAEz0C,KAAM60C,EAAOF,WAAYA,GAE7H,IA7BA,CAgCA,CACE,SAASC,EAAYhT,EAAQkT,GAC3B,IAAMC,EAAiBvF,GAAkBt3C,IAAI0pC,GAC7C,IAAKmT,GAAkBA,EAAe/0C,OAAS80C,EAAG90C,MAAQ+0C,EAAeJ,YAAcG,EAAGH,UAAW,CACnGnF,GAAkBlwC,IAAIsiC,EAAQkT,GAC9B,IAAMx2C,EAAKqH,EAAQtH,MAAMujC,GACzBsK,GAAgBoF,EAAhBpF,CACK4I,EAAAA,EAAAA,GAAAA,GAAAA,GAAAA,CACHx2C,OAER,CACA,CACE,IACMmvC,GAD4B,SAAnBH,EAASztB,MAAmB,CAAC,UAAY,CAAC,QAAS,WAC1CjJ,KACrBm3B,GAAcrM,GAAGqM,EAAW7B,GAAgBsI,GAAerxC,KAExDguC,EAAgBhuC,EAAIisC,YAC1B,IAAK+B,EACH,MAAO,KACL1D,EAAS1uC,SAASgwC,GAAMA,KAAG,EAG/B,IAAMiG,EAAqB7D,EAAcz7C,OAAOuC,yBAC9Ck5C,EAAc8D,iBAAiBt9C,UAC/B,SAEIu9C,EAAiB,CACrB,CAAC/D,EAAc8D,iBAAiBt9C,UAAW,SAC3C,CAACw5C,EAAc8D,iBAAiBt9C,UAAW,WAC3C,CAACw5C,EAAcgE,kBAAkBx9C,UAAW,SAC5C,CAACw5C,EAAciE,oBAAoBz9C,UAAW,SAE9C,CAACw5C,EAAcgE,kBAAkBx9C,UAAW,iBAC5C,CAACw5C,EAAckE,kBAAkB19C,UAAW,aAuB9C,OArBIq9C,GAAsBA,EAAmB11C,KAC3CmuC,EAASlwC,QACJ23C,EAAet+B,KACfmE,GAAM2nB,GACL3nB,EAAE,GACFA,EAAE,GACF,CACEzb,GAAAA,GACE4sC,GAAgBsI,EAAhBtI,CAA8B,CAC5BtK,OAAQ1jC,KACRw2C,WAAW,GAG3B,IAEU,EACAvD,MAKDjF,IAAgB,KACrBuB,EAAS1uC,SAASgwC,GAAMA,KAAG,GAE/B,CA8kBuBuG,CAAkBrE,GACjCsE,EA5PR,SAOGC,GAAA,IAPmCjE,mBACpCA,EAAAA,WACA3rC,EAAAA,cACAC,EACAH,OAAQC,EAAAA,SACR2nC,EAAAA,IACAnqC,GACFqyC,EACQxH,EAAU9B,IACbpsC,GAASmiC,GACRiK,IAAiB3U,IACf,IAAMqK,EAASyK,GAAe9U,GAC9B,GAAKqK,IAAUiC,GAAUjC,EAAQh8B,EAAYC,GAAe,GAA5D,CAGA,IAAMqF,YAAEA,EAAAA,OAAaQ,EAAAA,MAAQJ,EAAAA,aAAOF,EAAAA,KAAcI,GAASo2B,EAC3D2P,EAAmB,CACjBzxC,OACAxB,GAAIqH,EAAQtH,MAAMujC,GAClB12B,cACAQ,SACAJ,QACAF,eACAI,QATV,CAUS,IAEH8hC,EAAS7vC,OAAS,OAGhBgwC,EAAW,CACf/L,GAAG,OAAQsM,EAAQhI,GAAkByP,MAAOtyC,GAC5Cu+B,GAAG,QAASsM,EAAQhI,GAAkB0P,OAAQvyC,GAC9Cu+B,GAAG,SAAUsM,EAAQhI,GAAkB2P,QAASxyC,GAChDu+B,GAAG,eAAgBsM,EAAQhI,GAAkB4P,cAAezyC,GAC5Du+B,GAAG,aAAcsM,EAAQhI,GAAkB6P,YAAa1yC,IAE1D,OAAO+oC,IAAgB,KACrBuB,EAAS1uC,SAASgwC,GAAMA,KAAG,GAE/B,CAqNkC+G,CAA6B7E,GACzD8E,EAAqBA,OAErBC,EAA4BA,OAE5BC,EAA2BA,OAE3BC,EAAeA,OAEfjF,EAAGwB,YACLsD,EA5jBJ,SAAmGI,EAAAC,GAAA,IAAnE5E,iBAAEA,EAAkB9rC,OAAQC,EAAAA,kBAASmiC,GAAmBqO,GAAEt9C,IAAEA,GAAAu9C,EAC1F,IAAKv9C,EAAIw9C,gBAAkBx9C,EAAIw9C,cAAc1+C,UAC3C,MAAO,OAGT,IAAM2+C,EAAaz9C,EAAIw9C,cAAc1+C,UAAU2+C,WAC/Cz9C,EAAIw9C,cAAc1+C,UAAU2+C,WAAa,IAAIp0B,MAAMo0B,EAAY,CAC7DllC,MAAO86B,IACL,CAACtK,EAAQ2U,EAASC,KAChB,IAAOl6C,EAAOua,GAAU2/B,GAClBl4C,GAAEA,EAAAA,QAAI+xC,GAAYF,GACtBoG,EACA5wC,EACAmiC,EAAkBsI,aASpB,OAPI9xC,IAAmB+xC,IAAb/xC,GAAa+xC,IAA2B,IAAhBA,IAChCmB,EAAiB,CACflzC,KACA+xC,UACAjJ,KAAM,CAAC,CAAEnsB,KAAM3e,EAAOskB,MAAO/J,MAG1B+qB,EAAOxwB,MAAMmlC,EAASC,EAAa,MAIhD39C,EAAIw9C,cAAc1+C,UAAU8+C,QAAU,SAASvyB,EAAUwyB,GAA2C,IAA/B7/B,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAS3Y,KAAKhC,SAASgB,OACpFZ,EAAAA,GAAAA,OAAW4nB,EAAQ,OAAAliB,OAAM00C,EAAU,MACzC,OAAO79C,EAAIw9C,cAAc1+C,UAAU2+C,WAAWllC,MAAMlT,KAAM,CAAC5B,EAAOua,GACnE,EACD,IAwBIla,EAwBAg6C,EAhDEC,EAAa/9C,EAAIw9C,cAAc1+C,UAAUi/C,WAC/C/9C,EAAIw9C,cAAc1+C,UAAUi/C,WAAa,IAAI10B,MAAM00B,EAAY,CAC7DxlC,MAAO86B,IACL,CAACtK,EAAQ2U,EAASC,KAChB,IAAO3/B,GAAU2/B,GACXl4C,GAAEA,EAAAA,QAAI+xC,GAAYF,GACtBoG,EACA5wC,EACAmiC,EAAkBsI,aASpB,OAPI9xC,IAAmB+xC,IAAb/xC,GAAa+xC,IAA2B,IAAhBA,IAChCmB,EAAiB,CACflzC,KACA+xC,UACA5G,QAAS,CAAC,CAAE7oB,MAAO/J,MAGhB+qB,EAAOxwB,MAAMmlC,EAASC,EAAa,MAIhD39C,EAAIw9C,cAAc1+C,UAAUk/C,WAAa,SAAShgC,GAChD,OAAOhe,EAAIw9C,cAAc1+C,UAAUi/C,WAAWxlC,MAAMlT,KAAM,CAAC2Y,GAC5D,EAEGhe,EAAIw9C,cAAc1+C,UAAUgF,UAC9BA,EAAU9D,EAAIw9C,cAAc1+C,UAAUgF,QACtC9D,EAAIw9C,cAAc1+C,UAAUgF,QAAU,IAAIulB,MAAMvlB,EAAS,CACvDyU,MAAO86B,IACL,CAACtK,EAAQ2U,EAASC,KAChB,IAAOx2C,GAAQw2C,GACTl4C,GAAEA,EAAAA,QAAI+xC,GAAYF,GACtBoG,EACA5wC,EACAmiC,EAAkBsI,aASpB,OAPI9xC,IAAmB+xC,IAAb/xC,GAAa+xC,IAA2B,IAAhBA,IAChCmB,EAAiB,CACflzC,KACA+xC,UACA1zC,QAASqD,IAGN4hC,EAAOxwB,MAAMmlC,EAASC,EAAa,OAM9C39C,EAAIw9C,cAAc1+C,UAAUg/C,cAC9BA,EAAc99C,EAAIw9C,cAAc1+C,UAAUg/C,YAC1C99C,EAAIw9C,cAAc1+C,UAAUg/C,YAAc,IAAIz0B,MAAMy0B,EAAa,CAC/DvlC,MAAO86B,IACL,CAACtK,EAAQ2U,EAASC,KAChB,IAAOx2C,GAAQw2C,GACTl4C,GAAEA,EAAAA,QAAI+xC,GAAYF,GACtBoG,EACA5wC,EACAmiC,EAAkBsI,aASpB,OAPI9xC,IAAmB+xC,IAAb/xC,GAAa+xC,IAA2B,IAAhBA,IAChCmB,EAAiB,CACflzC,KACA+xC,UACAsG,YAAa32C,IAGV4hC,EAAOxwB,MAAMmlC,EAASC,EAAa,OAKlD,IAAMM,EAA8B,CAAE,EAClCC,GAA4B,mBAC9BD,EAA4BjH,gBAAkBh3C,EAAIg3C,iBAE9CkH,GAA4B,kBAC9BD,EAA4BhH,aAAej3C,EAAIi3C,cAE7CiH,GAA4B,sBAC9BD,EAA4B9G,iBAAmBn3C,EAAIm3C,kBAEjD+G,GAA4B,qBAC9BD,EAA4B/G,gBAAkBl3C,EAAIk3C,kBAGtD,IAAMiH,EAAsB,CAAE,EAkE9B,OAjEAthD,OAAO47B,QAAQwlB,GAA6B/3C,SAAQk4C,IAAqB,IAAnBC,EAASp3C,GAAIm3C,EACjED,EAAoBE,GAAW,CAE7BZ,WAAYx2C,EAAKnI,UAAU2+C,WAE3BM,WAAY92C,EAAKnI,UAAUi/C,YAE7B92C,EAAKnI,UAAU2+C,WAAa,IAAIp0B,MAC9B80B,EAAoBE,GAASZ,WAC7B,CACEllC,MAAO86B,IACL,CAACtK,EAAQ2U,EAASC,KAChB,IAAOl6C,EAAOua,GAAU2/B,GAClBl4C,GAAEA,EAAAA,QAAI+xC,GAAYF,GACtBoG,EAAQtG,iBACRtqC,EACAmiC,EAAkBsI,aAkBpB,OAhBI9xC,IAAmB+xC,IAAb/xC,GAAa+xC,IAA2B,IAAhBA,IAChCmB,EAAiB,CACflzC,KACA+xC,UACAjJ,KAAM,CACJ,CACEnsB,KAAM3e,EACNskB,MAAO,IACF6uB,GAA0B8G,GAC7B1/B,GAAU,OAOb+qB,EAAOxwB,MAAMmlC,EAASC,EAAa,MAKlD12C,EAAKnI,UAAUi/C,WAAa,IAAI10B,MAC9B80B,EAAoBE,GAASN,WAC7B,CACExlC,MAAO86B,IACL,CAACtK,EAAQ2U,EAASC,KAChB,IAAO3/B,GAAU2/B,GACXl4C,GAAEA,EAAAA,QAAI+xC,GAAYF,GACtBoG,EAAQtG,iBACRtqC,EACAmiC,EAAkBsI,aAWpB,OATI9xC,IAAmB+xC,IAAb/xC,GAAa+xC,IAA2B,IAAhBA,IAChCmB,EAAiB,CACflzC,KACA+xC,UACA5G,QAAS,CACP,CAAE7oB,MAAO,IAAI6uB,GAA0B8G,GAAU1/B,OAIhD+qB,EAAOxwB,MAAMmlC,EAASC,EAAa,KAIjD,IAEItK,IAAgB,KACrBrzC,EAAIw9C,cAAc1+C,UAAU2+C,WAAaA,EACzCz9C,EAAIw9C,cAAc1+C,UAAUi/C,WAAaA,EACzCj6C,IAAY9D,EAAIw9C,cAAc1+C,UAAUgF,QAAUA,GAClDg6C,IAAgB99C,EAAIw9C,cAAc1+C,UAAUg/C,YAAcA,GAC1DjhD,OAAO47B,QAAQwlB,GAA6B/3C,SAAQo4C,IAAqB,IAAnBD,EAASp3C,GAAIq3C,EACjEr3C,EAAKnI,UAAU2+C,WAAaU,EAAoBE,GAASZ,WACzDx2C,EAAKnI,UAAUi/C,WAAaI,EAAoBE,GAASN,UAAAA,GAC1D,GAEL,CA4XyBQ,CAAuBnG,EAAI,CAAEp4C,IAAKs4C,IACvD6E,EAA4BzF,GAA8BU,EAAIA,EAAG9tC,KACjE8yC,EA/UJ,SAKYoB,EAAAC,GAAA,IAL0B7F,mBACpCA,EACA/rC,OAAQC,EAAAA,oBACR4xC,EAAAA,kBACAzP,GACFuP,GAAGx+C,IAAEA,GAAGy+C,EACAE,EAAc3+C,EAAI4+C,oBAAoB9/C,UAAU6/C,YACtD3+C,EAAI4+C,oBAAoB9/C,UAAU6/C,YAAc,IAAIt1B,MAAMs1B,EAAa,CACrEpmC,MAAO86B,IACL,CAACtK,EAAQ2U,EAASC,KAChB,IAAIt/C,GACGyX,EAAU5Y,EAAO2hD,GAAYlB,EACpC,GAAIe,EAAoBt4C,IAAI0P,GAC1B,OAAO6oC,EAAYpmC,MAAMmlC,EAAS,CAAC5nC,EAAU5Y,EAAO2hD,IAEtD,IAAMp5C,GAAEA,EAAAA,QAAI+xC,GAAYF,GACQ,OAA7Bj5C,EAAMq/C,EAAQ3G,iBAAsB,EAAS14C,EAAI+4C,iBAClDtqC,EACAmiC,EAAkBsI,aAepB,OAbI9xC,IAAmB+xC,IAAb/xC,GAAa+xC,IAA2B,IAAhBA,IAChCoB,EAAmB,CACjBnzC,KACA+xC,UACA/wC,IAAK,CACHqP,WACA5Y,QACA2hD,YAGF92B,MAAO6uB,GAA0B8G,EAAQ3G,cAGtChO,EAAOxwB,MAAMmlC,EAASC,EAAa,MAIhD,IAAMmB,EAAiB9+C,EAAI4+C,oBAAoB9/C,UAAUggD,eA6BzD,OA5BA9+C,EAAI4+C,oBAAoB9/C,UAAUggD,eAAiB,IAAIz1B,MAAMy1B,EAAgB,CAC3EvmC,MAAO86B,IACL,CAACtK,EAAQ2U,EAASC,KAChB,IAAIt/C,GACGyX,GAAY6nC,EACnB,GAAIe,EAAoBt4C,IAAI0P,GAC1B,OAAOgpC,EAAevmC,MAAMmlC,EAAS,CAAC5nC,IAExC,IAAMrQ,GAAEA,EAAAA,QAAI+xC,GAAYF,GACQ,OAA7Bj5C,EAAMq/C,EAAQ3G,iBAAsB,EAAS14C,EAAI+4C,iBAClDtqC,EACAmiC,EAAkBsI,aAapB,OAXI9xC,IAAmB+xC,IAAb/xC,GAAa+xC,IAA2B,IAAhBA,IAChCoB,EAAmB,CACjBnzC,KACA+xC,UACAjvB,OAAQ,CACNzS,YAGFiS,MAAO6uB,GAA0B8G,EAAQ3G,cAGtChO,EAAOxwB,MAAMmlC,EAASC,EAAa,MAIzCtK,IAAgB,KACrBrzC,EAAI4+C,oBAAoB9/C,UAAU6/C,YAAcA,EAChD3+C,EAAI4+C,oBAAoB9/C,UAAUggD,eAAiBA,CAAAA,GAEvD,CAyQ+BC,CAA6B3G,EAAI,CAC1Dp4C,IAAKs4C,IAEHF,EAAG4G,eACL3B,EApON,SAA2C4B,GAAA,IAAjBnG,OAAEA,EAAAA,IAAQxuC,GAAA20C,EAC5Bj/C,EAAMsK,EAAIisC,YAChB,IAAKv2C,EACH,MAAO,OAGT,IAAM40C,EAAW,GACXsK,MAA8B35C,QAC9B45C,EAAmBn/C,EAAIo/C,SAC7Bp/C,EAAIo/C,SAAW,SAAmBC,EAAQn9C,EAAQo9C,GAChD,IAAMC,EAAW,IAAIJ,EAAiBE,EAAQn9C,EAAQo9C,GAOtD,OANAJ,EAAQz4C,IAAI84C,EAAU,CACpBF,SACA7uC,OAA0B,iBAAXtO,EACfo9C,cACAE,WAA8B,iBAAXt9C,EAAsBA,EAASqC,KAAKC,UAAUjB,MAAMC,KAAK,IAAIi8C,WAAWv9C,OAEtFq9C,CACR,EACD,IAAMG,EAAiBz9C,GACrBqI,EAAIq1C,MACJ,OACA,SAASt9C,GACP,OAAO,SAASk9C,GAWd,OAVAroC,WACEm8B,IAAgB,KACd,IAAMnxB,EAAIg9B,EAAQ7/C,IAAIkgD,GAClBr9B,IACF42B,EAAO52B,GACPg9B,EAAQj5C,OAAOs5C,GAC7B,IAEU,GAEKl9C,EAASkW,MAAMlT,KAAM,CAACk6C,GAC9B,KAOL,OAJA3K,EAASlwC,MAAK,KACZ1E,EAAIo/C,SAAWD,CAAAA,IAEjBvK,EAASlwC,KAAKg7C,GACPrM,IAAgB,KACrBuB,EAAS1uC,SAASgwC,GAAMA,KAAG,GAE/B,CAuLqB0J,CAAiBxH,KAGpC,IAAMyH,EAzLR,SAA+BC,GAC7B,IAAMx1C,IAAEA,EAAKuC,OAAQC,EAAAA,WAASC,EAAAA,cAAYC,EAAAA,YAAe+rC,GAAgB+G,EACrEC,GAAY,EACVC,EAAkB3M,IAAgB,KACtC,IAAMoG,EAAYnvC,EAAI21C,eACtB,MAAKxG,GAAasG,IAA2B,MAAbtG,OAAoB,EAASA,EAAUyG,cAAvE,CACAH,EAAYtG,EAAUyG,cAAe,EAGrC,IAFA,IAAMC,EAAS,GACTC,EAAQ3G,EAAU4G,YAAc,EAC7B1xC,EAAK,EAAGA,EAAKyxC,EAAOzxC,IAAM,CACjC,IAAM4rB,EAAQkf,EAAU6G,WAAW3xC,IAC7B4xC,eAAEA,EAAAA,YAAgBC,EAAAA,aAAaC,EAAAA,UAAcC,GAAcnmB,EACjDyQ,GAAUuV,EAAgBxzC,EAAYC,GAAe,IAASg+B,GAAUyV,EAAc1zC,EAAYC,GAAe,IAEjImzC,EAAOz7C,KAAK,CACViZ,MAAO7Q,EAAQtH,MAAM+6C,GACrBC,cACA3iC,IAAK/Q,EAAQtH,MAAMi7C,GACnBC,aAER,CACI3H,EAAY,CAAEoH,UAhBuE,CAgB/D,IAGxB,OADAH,IACOnX,GAAG,kBAAmBmX,EAC/B,CAgK4BW,CAAsBvI,GAC1CwI,EAhKR,SAGGC,GAAA,IAHgCv2C,IACjCA,EAAAA,gBACA0uC,GACF6H,EACQ7gD,EAAMsK,EAAIisC,YAChB,OAAKv2C,GAAQA,EAAIyT,eAEMxR,GACrBjC,EAAIyT,eACJ,UACA,SAASpR,GACP,OAAO,SAASF,EAAMH,EAAa4K,GACjC,IACEosC,EAAgB,CACd8H,OAAQ,CACN3+C,SAGL,CAAA,MAAQuK,GACPoF,QAAQC,KAAAA,sCAAAA,OAA2C5P,GAC7D,CACQ,OAAOE,EAASkW,MAAMlT,KAAM,CAAClD,EAAMH,EAAa4K,GACjD,KAjBmC,MAqB1C,CAsIgCm0C,CAA0B3I,GAClD4I,EAAiB,GACvB,IAAWnkC,IAAAA,KAAUu7B,EAAG/a,QACtB2jB,EAAet8C,KACbmY,EAAOi3B,SAASj3B,EAAO2N,SAAU8tB,EAAez7B,EAAOjQ,UAG3D,OAAOymC,IAAgB,KACrBE,GAAgBrtC,SAASo4B,GAAMA,EAAE33B,UACb,MAApB5E,GAAoCA,EAAiBk/C,aACrDpH,IACAiB,IACAC,IACAC,IACAM,IACAoB,IACAQ,IACAC,IACAC,IACAC,IACAwC,IACAe,IACAI,EAAe96C,SAASgwC,GAAMA,KAAG,GAErC,CACA,SAASY,GAAiB/1B,GACxB,YAA+B,IAAjB9Y,OAAO8Y,EACvB,CACA,SAASm9B,GAA4Bn9B,GACnC,OAAO9hB,aACmB,IAAjBgJ,OAAO8Y,IAEd9Y,OAAO8Y,GAAMjiB,WAAa,eAAgBmJ,OAAO8Y,GAAMjiB,WAAa,eAAgBmJ,OAAO8Y,GAAMjiB,UAErG,CACA,MAAMoiD,GACJl/C,WAAAA,CAAYm/C,GACVpkD,EAAcsI,KAAM,wBAA6CE,IAAAA,SACjExI,EAAcsI,KAAM,wBAA6CE,IAAAA,SACjEF,KAAK87C,aAAeA,CACxB,CACE37C,KAAAA,CAAM6pC,EAAQ+R,EAAUC,EAAeC,GACrC,IAAMC,EAAkBF,GAAiBh8C,KAAKm8C,mBAAmBnS,GAC3DoS,EAAkBH,GAAiBj8C,KAAKq8C,mBAAmBrS,GAC7D5pC,EAAK87C,EAAgBliD,IAAI+hD,GAM7B,OALK37C,IACHA,EAAKJ,KAAK87C,eACVI,EAAgB96C,IAAI26C,EAAU37C,GAC9Bg8C,EAAgBh7C,IAAIhB,EAAI27C,IAEnB37C,CACX,CACEI,MAAAA,CAAOwpC,EAAQ+R,GACb,IAAMG,EAAkBl8C,KAAKm8C,mBAAmBnS,GAC1CoS,EAAkBp8C,KAAKq8C,mBAAmBrS,GAChD,OAAO+R,EAASrjC,KACbtY,GAAOJ,KAAKG,MAAM6pC,EAAQ5pC,EAAI87C,EAAiBE,IAEtD,CACEE,WAAAA,CAAYtS,EAAQ5pC,EAAIsY,GACtB,IAAM0jC,EAAkB1jC,GAAO1Y,KAAKq8C,mBAAmBrS,GACvD,GAAkB,iBAAP5pC,EAAiB,OAAOA,EACnC,IAAM27C,EAAWK,EAAgBpiD,IAAIoG,GACrC,OAAK27C,IAAiB,CAE1B,CACEQ,YAAAA,CAAavS,EAAQwS,GACnB,IAAMJ,EAAkBp8C,KAAKq8C,mBAAmBrS,GAChD,OAAOwS,EAAI9jC,KAAKtY,GAAOJ,KAAKs8C,YAAYtS,EAAQ5pC,EAAIg8C,IACxD,CACE96C,KAAAA,CAAM0oC,GACJ,IAAKA,EAGH,OAFAhqC,KAAKy8C,0BAA4Cv8C,aACjDF,KAAK08C,0BAA4Cx8C,SAGnDF,KAAKy8C,sBAAsB77C,OAAOopC,GAClChqC,KAAK08C,sBAAsB97C,OAAOopC,EACtC,CACEmS,kBAAAA,CAAmBnS,GACjB,IAAIkS,EAAkBl8C,KAAKy8C,sBAAsBziD,IAAIgwC,GAKrD,OAJKkS,IACHA,MAAsCj8C,IACtCD,KAAKy8C,sBAAsBr7C,IAAI4oC,EAAQkS,IAElCA,CACX,CACEG,kBAAAA,CAAmBrS,GACjB,IAAIoS,EAAkBp8C,KAAK08C,sBAAsB1iD,IAAIgwC,GAKrD,OAJKoS,IACHA,MAAsCn8C,IACtCD,KAAK08C,sBAAsBt7C,IAAI4oC,EAAQoS,IAElCA,CACX,EAEA,MAAMO,GACJhgD,WAAAA,CAAY4K,GACV7P,EAAcsI,KAAM,UAA+BE,IAAAA,SACnDxI,EAAcsI,KAAM,uBAA4CE,IAAAA,SAChExI,EAAcsI,KAAM,0BAA2B,IAAI67C,GAAwBj3C,IAC3ElN,EAAcsI,KAAM,gCACpBtI,EAAcsI,KAAM,6BAAkDE,IAAAA,SACtExI,EAAcsI,KAAM,UACpBtI,EAAcsI,KAAM,cACpBtI,EAAcsI,KAAM,eACpBtI,EAAcsI,KAAM,gBACpBtI,EAAcsI,KAAM,qBACpBtI,EAAcsI,KAAM,4BACpBA,KAAK0rC,WAAankC,EAAQmkC,WAC1B1rC,KAAK48C,YAAcr1C,EAAQq1C,YAC3B58C,KAAK4pC,kBAAoBriC,EAAQqiC,kBACjC5pC,KAAK68C,yBAA2Bt1C,EAAQs1C,yBACxC78C,KAAK88C,6BAA+B,IAAIjB,GACtC77C,KAAK4pC,kBAAkBsI,YAAYtL,WAAWnrC,KAC5CuE,KAAK4pC,kBAAkBsI,cAG3BlyC,KAAKwH,OAASD,EAAQC,OAClBxH,KAAK68C,0BACPj6C,OAAO4J,iBAAiB,UAAWxM,KAAK+8C,cAActhD,KAAKuE,MAEjE,CACE2pC,SAAAA,CAAUrvC,GACR0F,KAAKg9C,QAAQ57C,IAAI9G,GAAU,GACvBA,EAASM,eACXoF,KAAKi9C,qBAAqB77C,IAAI9G,EAASM,cAAeN,EAC5D,CACE4iD,eAAAA,CAAgBx3B,GACd1lB,KAAKm9C,aAAez3B,CACxB,CACEwkB,YAAAA,CAAa5vC,EAAU2vC,GACrB,IAAIjxC,EAAKC,EACT+G,KAAK0rC,WAAW,CACdxC,KAAM,CACJ,CACER,SAAU1oC,KAAKwH,OAAOrH,MAAM7F,GAC5BivC,OAAQ,KACRrlB,KAAM+lB,IAGVsB,QAAS,GACTR,MAAO,GACP3hC,WAAY,GACZg0C,gBAAgB,IAEdp9C,KAAK68C,2BAC2B,OAAjC7jD,EAAMsB,EAASM,gBAAkC5B,EAAIwT,iBACpD,UACAxM,KAAK+8C,cAActhD,KAAKuE,QAEA,OAA3B/G,EAAK+G,KAAKm9C,eAAiClkD,EAAGK,KAAK0G,KAAM1F,GACtDA,EAAS4T,iBAAmB5T,EAAS4T,gBAAgBmvC,oBAAsB/iD,EAAS4T,gBAAgBmvC,mBAAmBr+C,OAAS,GAClIgB,KAAK4pC,kBAAkBiJ,iBACrBv4C,EAAS4T,gBAAgBmvC,mBACzBr9C,KAAKwH,OAAOrH,MAAM7F,EAAS4T,iBAEnC,CACE6uC,aAAAA,CAAc3lC,GACZ,IAAMkmC,EAA0BlmC,EAChC,GAA0C,UAAtCkmC,EAAwBpyC,KAAKtJ,MACjC07C,EAAwBj6C,SAAWi6C,EAAwBpyC,KAAK7H,QAErC+T,EAAQva,OACnC,CACA,IAAMvC,EAAW0F,KAAKi9C,qBAAqBjjD,IAAIod,EAAQva,QACvD,GAAKvC,EAAL,CACA,IAAMijD,EAAmBv9C,KAAKw9C,0BAC5BljD,EACAgjD,EAAwBpyC,KAAKmuB,OAE3BkkB,GACFv9C,KAAK48C,YACHW,EACAD,EAAwBpyC,KAAKuyC,WARlB,CAFU,CAY7B,CACED,yBAAAA,CAA0BljD,EAAU+M,GAClC,IAAIrO,EACJ,OAAQqO,EAAGzF,MACT,KAAKwlC,GAAUsW,aACb19C,KAAK29C,wBAAwBr8C,MAAMhH,GACnC0F,KAAK88C,6BAA6Bx7C,MAAMhH,GACxC0F,KAAK49C,gBAAgBv2C,EAAG6D,KAAKgZ,KAAM5pB,GACnC,IAAM8N,EAASf,EAAG6D,KAAKgZ,KAAK9jB,GAG5B,OAFAJ,KAAK69C,2BAA2Bz8C,IAAI9G,EAAU8N,GAC9CpI,KAAK89C,kBAAkBz2C,EAAG6D,KAAKgZ,KAAM9b,GAC9B,CACL21C,UAAW12C,EAAG02C,UACdn8C,KAAMwlC,GAAU4W,oBAChB9yC,KAAM,CACJrO,OAAQyqC,GAAkB2W,SAC1B/U,KAAM,CACJ,CACER,SAAU1oC,KAAKwH,OAAOrH,MAAM7F,GAC5BivC,OAAQ,KACRrlB,KAAM7c,EAAG6D,KAAKgZ,OAGlBqnB,QAAS,GACTR,MAAO,GACP3hC,WAAY,GACZg0C,gBAAgB,IAItB,KAAKhW,GAAU8W,KACf,KAAK9W,GAAU+W,KACf,KAAK/W,GAAUgX,iBACb,OAAO,EAET,KAAKhX,GAAUiX,OACb,OAAOh3C,EAET,KAAK+/B,GAAUkX,OAMb,OALAt+C,KAAKu+C,WACHl3C,EAAG6D,KAAK4/B,QACRxwC,EACA,CAAC,KAAM,WAAY,aAAc,WAE5B+M,EAET,KAAK+/B,GAAU4W,oBACb,OAAQ32C,EAAG6D,KAAKrO,QACd,KAAKyqC,GAAkB2W,SAoBrB,OAnBA52C,EAAG6D,KAAKg+B,KAAKroC,SAAShF,IACpBmE,KAAKu+C,WAAW1iD,EAAIvB,EAAU,CAC5B,WACA,SACA,eAEF0F,KAAK49C,gBAAgB/hD,EAAGqoB,KAAM5pB,GAC9B,IAAM8N,EAASpI,KAAK69C,2BAA2B7jD,IAAIM,GACnD8N,GAAUpI,KAAK89C,kBAAkBjiD,EAAGqoB,KAAM9b,EAAM,IAElDf,EAAG6D,KAAKqgC,QAAQ1qC,SAAShF,IACvBmE,KAAKu+C,WAAW1iD,EAAIvB,EAAU,CAAC,WAAY,MAAK,IAElD+M,EAAG6D,KAAK9B,WAAWvI,SAAShF,IAC1BmE,KAAKu+C,WAAW1iD,EAAIvB,EAAU,CAAC,MAAK,IAEtC+M,EAAG6D,KAAK6/B,MAAMlqC,SAAShF,IACrBmE,KAAKu+C,WAAW1iD,EAAIvB,EAAU,CAAC,MAAK,IAE/B+M,EAET,KAAKigC,GAAkB8N,KACvB,KAAK9N,GAAkBiO,UACvB,KAAKjO,GAAkBgO,UAIrB,OAHAjuC,EAAG6D,KAAK4pC,UAAUj0C,SAASgc,IACzB7c,KAAKu+C,WAAW1hC,EAAGviB,EAAU,CAAC,MAAK,IAE9B+M,EAET,KAAKigC,GAAkBkX,eACrB,OAAO,EAET,KAAKlX,GAAkBmX,iBACvB,KAAKnX,GAAkBoX,iBACvB,KAAKpX,GAAkBqX,OACvB,KAAKrX,GAAkBsX,eACvB,KAAKtX,GAAkBzc,MAErB,OADA7qB,KAAKu+C,WAAWl3C,EAAG6D,KAAM5Q,EAAU,CAAC,OAC7B+M,EAET,KAAKigC,GAAkBuX,eACvB,KAAKvX,GAAkBwX,iBAGrB,OAFA9+C,KAAKu+C,WAAWl3C,EAAG6D,KAAM5Q,EAAU,CAAC,OACpC0F,KAAK++C,gBAAgB13C,EAAG6D,KAAM5Q,EAAU,CAAC,YAClC+M,EAET,KAAKigC,GAAkB0X,KACrB,OAAO33C,EAET,KAAKigC,GAAkB2X,UAIrB,OAHA53C,EAAG6D,KAAK4vC,OAAOj6C,SAASq0B,IACtBl1B,KAAKu+C,WAAWrpB,EAAO56B,EAAU,CAAC,QAAS,OAAM,IAE5C+M,EAET,KAAKigC,GAAkB4X,kBAMrB,OALAl/C,KAAKu+C,WAAWl3C,EAAG6D,KAAM5Q,EAAU,CAAC,OACpC0F,KAAK++C,gBAAgB13C,EAAG6D,KAAM5Q,EAAU,CAAC,aACf,OAAzBtB,EAAMqO,EAAG6D,KAAKi0C,SAA2BnmD,EAAI6H,SAASqqC,IACrDlrC,KAAK++C,gBAAgB7T,EAAO5wC,EAAU,CAAC,WAAU,IAE5C+M,GAKf,OAAO,CACX,CACE5I,OAAAA,CAAQ2gD,EAAcznD,EAAK2C,EAAUmG,GACnC,IAAA,IAAW7I,KAAO6I,GACXvC,MAAM4iB,QAAQnpB,EAAIC,KAA6B,iBAAbD,EAAIC,MACvCsG,MAAM4iB,QAAQnpB,EAAIC,IACpBD,EAAIC,GAAOwnD,EAAa5+C,OACtBlG,EACA3C,EAAIC,IAGND,EAAIC,GAAOwnD,EAAaj/C,MAAM7F,EAAU3C,EAAIC,KAGhD,OAAOD,CACX,CACE4mD,UAAAA,CAAW5mD,EAAK2C,EAAUmG,GACxB,OAAOT,KAAKvB,QAAQuB,KAAK29C,wBAAyBhmD,EAAK2C,EAAUmG,EACrE,CACEs+C,eAAAA,CAAgBpnD,EAAK2C,EAAUmG,GAC7B,OAAOT,KAAKvB,QAAQuB,KAAK88C,6BAA8BnlD,EAAK2C,EAAUmG,EAC1E,CACEm9C,eAAAA,CAAgB38C,EAAO3G,GACrB0F,KAAKu+C,WAAWt9C,EAAO3G,EAAU,CAAC,KAAM,WACpC,eAAgB2G,GAClBA,EAAMrF,WAAWiF,SAASua,IACxBpb,KAAK49C,gBAAgBxiC,EAAO9gB,EAAQ,GAG5C,CACEwjD,iBAAAA,CAAkB78C,EAAOmH,GACnBnH,EAAMW,OAASomC,GAASv/B,UAAaxH,EAAMmH,SAAQnH,EAAMmH,OAASA,GAClE,eAAgBnH,GAClBA,EAAMrF,WAAWiF,SAASua,IACxBpb,KAAK89C,kBAAkB1iC,EAAOhT,EAAM,GAG5C,EAEA,MAAMi3C,GACJ1iD,WAAAA,CAAY4K,GACV7P,EAAcsI,KAAM,aAAkCs/C,IAAAA,SACtD5nD,EAAcsI,KAAM,cACpBtI,EAAcsI,KAAM,YACpBtI,EAAcsI,KAAM,iBACpBtI,EAAcsI,KAAM,UACpBtI,EAAcsI,KAAM,kBAAmB,IACvCA,KAAK0rC,WAAankC,EAAQmkC,WAC1B1rC,KAAKgxC,SAAWzpC,EAAQypC,SACxBhxC,KAAKqR,cAAgB9J,EAAQ8J,cAC7BrR,KAAKwH,OAASD,EAAQC,OACtBxH,KAAK4yB,MACT,CACEA,IAAAA,GACE5yB,KAAKsB,QACLtB,KAAKu/C,kBAAkB7mD,QAAS6B,SACpC,CACEwvC,aAAAA,CAAcpsC,EAAasH,GACzB,GAAKvH,EAAkBC,KACnBqC,KAAKw/C,WAAWz+C,IAAIpD,GAAxB,CACAqC,KAAKw/C,WAAWt+C,IAAIvD,GACpB,IAAM8wC,EAAWH,UAEVtuC,KAAKqR,eAAAA,GAAAA,CACRpM,MACAymC,WAAY1rC,KAAK0rC,WACjBlkC,OAAQxH,KAAKwH,OACbsiC,iBAAkB9pC,OAEpBrC,GAEFqC,KAAKy/C,gBAAgBpgD,MAAK,IAAMovC,EAASmN,eACzC57C,KAAKy/C,gBAAgBpgD,KACnByxC,GAAAA,EAAAA,EAAAA,CAAAA,EACK9wC,KAAKqR,eAAAA,GAAAA,CACR2/B,SAAUhxC,KAAKgxC,SAGf/rC,IAAKtH,EACL6J,OAAQxH,KAAKwH,WAGjBqK,YAAW,KACLlU,EAAY0/C,oBAAsB1/C,EAAY0/C,mBAAmBr+C,OAAS,GAC5EgB,KAAKqR,cAAcu4B,kBAAkBiJ,iBACnCl1C,EAAY0/C,mBACZr9C,KAAKwH,OAAOrH,MAAMuiB,GAAMtmB,KAAKuB,KAEjCqC,KAAKy/C,gBAAgBpgD,KACnBgzC,GACE,CACE7qC,OAAQxH,KAAKwH,OACboiC,kBAAmB5pC,KAAKqR,cAAcu4B,mBAExCjsC,GAEH,GACA,EAtCmC,CAuC1C,CAIEwsC,mBAAAA,CAAoBuV,GACbA,EAAc9kD,eAAkB8kD,EAAcxxC,iBACnDlO,KAAKu/C,kBACHG,EAAc9kD,cAAclC,QAC5BgnD,EAAcxxC,gBAEpB,CAIEqxC,iBAAAA,CAAkB99C,EAASwD,GACzB,IAAM06C,EAAU3/C,KAChBA,KAAKy/C,gBAAgBpgD,KACnBzC,GACE6E,EAAQhI,UACR,gBACA,SAASuD,GACP,OAAO,SAAS4iD,GACd,IAAMC,EAAQ7iD,EAAS1D,KAAK0G,KAAM4/C,GAC5B1uC,EAAewR,GAAMpmB,WAAW0D,MAGtC,OAFIkR,GAAgBi2B,GAAMnnC,OACxB2/C,EAAQ5V,cAAc74B,EAAcjM,GAC/B46C,CACR,CACX,IAGA,CACEv+C,KAAAA,GACEtB,KAAKy/C,gBAAgB5+C,SAASivC,IAC5B,IACEA,GACD,CAAA,MAAQzoC,GAAI,KAGfrH,KAAKy/C,gBAAkB,GACvBz/C,KAAKw/C,eAAiCF,OAC1C,EAIA,IAFA,IAAIQ,GAAQ,mEACRC,GAA+B,oBAAf3F,WAA6B,GAAK,IAAIA,WAAW,KAC5D4F,GAAM,EAAGA,GAAMF,GAAcE,KACpCD,GAAOD,GAAM9wB,WAAWgxB,KAAQA,GAElC,IAmCMC,OAAmChgD,IAYzC,IAAMigD,GAAeA,CAACroD,EAAO8C,EAAK4P,KAChC,GAAK1S,IAAWsoD,GAAwBtoD,EAAO8C,IAAyB,iBAAV9C,GAA9D,CAEA,IACMo0B,EAfR,SAA2B1hB,EAAK61C,GAC9B,IAAIC,EAAaJ,GAAajmD,IAAIuQ,GAQlC,OAPK81C,IACHA,MAAiCpgD,IACjCggD,GAAa7+C,IAAImJ,EAAK81C,IAEnBA,EAAWt/C,IAAIq/C,IAClBC,EAAWj/C,IAAIg/C,EAAM,IAEhBC,EAAWrmD,IAAIomD,EACxB,CAKeE,CAAkB/1C,EADlB1S,EAAM8E,YAAYG,MAE3B6b,EAASsT,EAAKjoB,QAAQnM,GAK1B,OAJmB,IAAf8gB,IACFA,EAASsT,EAAKjtB,OACditB,EAAK5sB,KAAKxH,IAEL8gB,CARL,CAQKA,EAET,SAAS4nC,GAAa1oD,EAAO8C,EAAK4P,GAChC,GAAI1S,aAAiBqG,MACnB,OAAOrG,EAAM6gB,KAAK8nC,GAAQD,GAAaC,EAAK7lD,EAAK4P,KACrD,GAAuB,OAAV1S,EACT,OAAOA,EACX,GAAaA,aAAiB4oD,cAAgB5oD,aAAiB6oD,cAAgB7oD,aAAiB8oD,YAAc9oD,aAAiBkT,aAAelT,aAAiBuiD,YAAcviD,aAAiB+oD,aAAe/oD,aAAiBgpD,YAAchpD,aAAiBipD,WAAajpD,aAAiBkpD,kBAEvR,MAAO,CACLC,QAFWnpD,EAAM8E,YAAYG,KAG7B2oB,KAAM,CAACjuB,OAAOq1B,OAAOh1B,KAE3B,GAIIA,aAAiBopD,YAIjB,MAAO,CACLD,QAHWnpD,EAAM8E,YAAYG,KAI7BokD,OAhFO,SAASC,GACpB,IAAyC73C,EAArC83C,EAAQ,IAAIhH,WAAW+G,GAAkB93C,EAAM+3C,EAAMpiD,OAAQkiD,EAAS,GAC1E,IAAK53C,EAAK,EAAGA,EAAKD,EAAKC,GAAM,EAC3B43C,GAAUpB,GAAMsB,EAAM93C,IAAO,GAC7B43C,GAAUpB,IAAmB,EAAZsB,EAAM93C,KAAY,EAAI83C,EAAM93C,EAAK,IAAM,GACxD43C,GAAUpB,IAAuB,GAAhBsB,EAAM93C,EAAK,KAAY,EAAI83C,EAAM93C,EAAK,IAAM,GAC7D43C,GAAUpB,GAAsB,GAAhBsB,EAAM93C,EAAK,IAO7B,OALID,EAAM,GAAM,EACd63C,EAASA,EAAOh7C,UAAU,EAAGg7C,EAAOliD,OAAS,GAAK,IACzCqK,EAAM,GAAM,IACrB63C,EAASA,EAAOh7C,UAAU,EAAGg7C,EAAOliD,OAAS,GAAK,MAE7CkiD,CACT,CA+DmBG,CAAOxpD,IAK1B,GAAaA,aAAiBypD,SAE1B,MAAO,CACLN,QAFWnpD,EAAM8E,YAAYG,KAG7B2oB,KAAM,CACJ86B,GAAa1oD,EAAMsT,OAAQxQ,EAAK4P,GAChC1S,EAAM0pD,WACN1pD,EAAM2pD,aAGd,GAAa3pD,aAAiB4pD,iBAAkB,CAC5C,IAAM3kD,EAAOjF,EAAM8E,YAAYG,MACzBmR,IAAEA,GAAQpW,EAChB,MAAO,CACLmpD,QAASlkD,EACTmR,MAEN,CAAA,GAAapW,aAAiB6pD,kBAAmB,CAG7C,MAAO,CACLV,QAHW,mBAIX/yC,IAHUpW,EAAM2T,YAKtB,CAAA,OAAa3T,aAAiB8pD,UAEnB,CACLX,QAFWnpD,EAAM8E,YAAYG,KAG7B2oB,KAAM,CAAC86B,GAAa1oD,EAAMqT,KAAMvQ,EAAK4P,GAAM1S,EAAM6S,MAAO7S,EAAM+S,SAEvDu1C,GAAwBtoD,EAAO8C,IAAyB,iBAAV9C,EAGhD,CACLmpD,QAHWnpD,EAAM8E,YAAYG,KAI7B4lB,MAHaw9B,GAAaroD,EAAO8C,EAAK4P,IAMnC1S,CACT,CACA,IAAM+pD,GAAgBA,CAACn8B,EAAM9qB,EAAK4P,IACzBkb,EAAK/M,KAAK8nC,GAAQD,GAAaC,EAAK7lD,EAAK4P,KAE5C41C,GAA0BA,CAACtoD,EAAO8C,KACtC,IAcMknD,EAdwB,CAC5B,kBACA,cACA,mBACA,eACA,oBACA,cACA,6BACA,eACA,uBACA,yBAEA,6BAE2DhsB,QAC1D/4B,GAA8B,mBAAdnC,EAAImC,KAEvB,OAAOlD,QACLioD,EAA+BxyC,MAC5BvS,GAASjF,aAAiB8C,EAAImC,KAElC,EAyDH,SAASglD,GAA0BnnD,EAAK+M,EAAYC,EAAeo6C,GACjE,IAAMxS,EAAW,GACjB,IACE,IAAM8K,EAAiBz9C,GACrBjC,EAAI+mD,kBAAkBjoD,UACtB,cACA,SAASuD,GACP,OAAO,SAASglD,GAAsB,IAANv8B,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAC9B,IAAKkgB,GAAU3lC,KAAM0H,EAAYC,GAAe,GAAO,CACrD,IAAMs6C,EAZlB,SAAkCD,GAChC,MAAuB,uBAAhBA,EAAuC,QAAUA,CAC1D,CAU4BE,CAAyBF,GAEzC,GADM,cAAehiD,OAAOA,KAAKqK,UAAY43C,GACzCF,GAAkC,CAAC,QAAS,UAAU7nD,SAAS+nD,GACjE,GAAIx8B,EAAK,IAAyB,iBAAZA,EAAK,GAAiB,CAC1C,IAAM08B,EAAoB18B,EAAK,GAC1B08B,EAAkBC,wBACrBD,EAAkBC,uBAAwB,QAG5C38B,EAAKK,OAAO,EAAG,EAAG,CAChBs8B,uBAAuB,GAIzC,CACU,OAAOplD,EAASkW,MAAMlT,KAAM,CAACgiD,KAAgBv8B,GAC9C,KAGL8pB,EAASlwC,KAAKg7C,EACR,CAAA,MAAAgI,GACN51C,QAAQ/N,MAAM,yDAClB,CACE,MAAO,KACL6wC,EAAS1uC,SAASgwC,GAAMA,KAAG,CAE/B,CACA,SAASyR,GAAiB7oD,EAAWmI,EAAM8jB,EAAIhe,EAAYC,EAAehN,GACxE,IAAM40C,EAAW,GACX/oB,EAAQhvB,OAAO+qD,oBAAoB9oD,GAC9BiiB,EAAAA,SAAAA,GACT,GAEE,CACE,gBACA,SACA,qBACA,uBACAxhB,SAASwhB,GAEX,MAAA,WAEF,IACE,GAA+B,mBAApBjiB,EAAUiiB,GACnB,MAAA,WAEF,IAAM2+B,EAAiBz9C,GACrBnD,EACAiiB,GACA,SAAS1e,GACP,OAAO,WAAkB,IAANyoB,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GACjB,IAAMnC,EAAUtmB,EAASkW,MAAMlT,KAAMylB,GAErC,GADAy6B,GAAa58B,EAAS3oB,EAAKqF,MACvB,YAAaA,KAAKsK,SAAWq7B,GAAU3lC,KAAKsK,OAAQ5C,EAAYC,GAAe,GAAO,CACxF,IAAM66C,EAAaZ,GAAcn8B,EAAM9qB,EAAKqF,MACtC4zC,EAAW,CACfhyC,OACA6O,SAAUiL,EACV+J,KAAM+8B,GAER98B,EAAG1lB,KAAKsK,OAAQspC,EAC9B,CACY,OAAOtwB,CACR,KAGLisB,EAASlwC,KAAKg7C,EACR,CAAA,MAAAoI,GACN,IAAMC,EAAcle,GAAW/qC,EAAWiiB,EAAM,CAC9Cta,GAAAA,CAAIw1C,GACFlxB,EAAG1lB,KAAKsK,OAAQ,CACd1I,OACA6O,SAAUiL,EACV+J,KAAM,CAACmxB,GACP+L,QAAQ,GAEpB,IAEMpT,EAASlwC,KAAKqjD,EACpB,CAAA,EAjDE,IAAA,IAAWhnC,KAAQ8K,EAAR9K,EAAAA,GAmDX,OAAO6zB,CACT,CA6BA,IAuUIqN,GACAgG,GACAtV,GAzUEuV,GAAY,uvFACZC,GAAuB,oBAATC,MAAwBA,KAAKC,MAAQ,IAAIA,KAAK,CAACH,IAAY,CAAEjhD,KAAM,kCACvF,SAASqhD,GAAc17C,GACrB,IAAI27C,EACJ,IAEE,KADAA,EAASJ,KAASC,KAAKpgD,KAAOogD,KAAKI,WAAWC,gBAAgBN,KACjD,KAAM,GACnB,IAAMO,EAAS,IAAIC,OAAOJ,EAAQ,CAChCpmD,KAAiB,MAAXyK,OAAkB,EAASA,EAAQzK,OAK3C,OAHAumD,EAAO72C,iBAAiB,SAAS,MAC9Bu2C,KAAKpgD,KAAOogD,KAAKI,WAAWI,gBAAgBL,EAAM,IAE9CG,CACR,CAAA,MAAQh8C,GACP,OAAO,IAAIi8C,OACT,sCAAwC9zB,mBAAmBqzB,IAC3D,CACE/lD,KAAiB,MAAXyK,OAAkB,EAASA,EAAQzK,OAGrC,QACRomD,IAAWH,KAAKpgD,KAAOogD,KAAKI,WAAWI,gBAAgBL,EAC3D,CACA,CACA,MAAMM,GACJ7mD,WAAAA,CAAY4K,GACV7P,EAAcsI,KAAM,yBAA8CC,IAAAA,KAClEvI,EAAcsI,KAAM,YAAa,CAAEyjD,SAAU,EAAGC,SAAU,OAC1DhsD,EAAcsI,KAAM,UACpBtI,EAAcsI,KAAM,cACpBtI,EAAcsI,KAAM,kBACpBtI,EAAcsI,KAAM,UAAU,GAC9BtI,EAAcsI,KAAM,UAAU,GAC9BtI,EAAcsI,KAAM,mBAAmB,CAAC0jC,EAAQkQ,OAC7B5zC,KAAK2jD,UAAUD,UAAY1jD,KAAK2jD,UAAUF,WAAazjD,KAAK2jD,UAAUD,WACtE1jD,KAAK2jD,UAAUD,WAC9B1jD,KAAK2jD,UAAUD,SAAW1jD,KAAK2jD,UAAUF,UACtCzjD,KAAK4jD,uBAAuB7iD,IAAI2iC,IACnC1jC,KAAK4jD,uBAAuBxiD,IAAIsiC,EAAQ,IAE1C1jC,KAAK4jD,uBAAuB5pD,IAAI0pC,GAAQrkC,KAAKu0C,EAAQ,IAEvD,IAAMxE,SACJA,EAAW,MAAAz0C,IACXA,EAAAA,WACA+M,EAAAA,cACAC,EAAAA,aACAM,EAAAA,eACAF,GACER,EACJvH,KAAK0rC,WAAankC,EAAQmkC,WAC1B1rC,KAAKwH,OAASD,EAAQC,OAClBS,GAA6B,QAAbmnC,GAClBpvC,KAAK6jD,2BAA2BlpD,EAAK+M,EAAYC,GAC/CM,GAAoC,iBAAbmnC,GACzBpvC,KAAK8jD,sBAAsB1U,EAAUz0C,EAAK+M,EAAYC,EAAe,CACnEI,kBAER,CACEzG,KAAAA,GACEtB,KAAK4jD,uBAAuBG,QAC5B/jD,KAAKgkD,gBAAkBhkD,KAAKgkD,gBAChC,CACErtC,MAAAA,GACE3W,KAAKgpC,QAAS,CAClB,CACEuE,QAAAA,GACEvtC,KAAKgpC,QAAS,CAClB,CACEyE,IAAAA,GACEztC,KAAKipC,QAAS,CAClB,CACEyE,MAAAA,GACE1tC,KAAKipC,QAAS,CAClB,CACE6a,qBAAAA,CAAsBG,EAAKtpD,EAAK+M,EAAYC,EAAeJ,GAAS,IAAA28C,EAAAlkD,KAC5DmkD,EAAqBrC,GACzBnnD,EACA+M,EACAC,GACA,GAEIy8C,MAA4CnkD,IAC5CojD,EAAS,IAAIJ,GACnBI,EAAOgB,UAAah9C,IAClB,IAAMjH,GAAEA,GAAOiH,EAAG6D,KAElB,GADAk5C,EAAsBhjD,IAAIhB,GAAI,GACxB,WAAYiH,EAAG6D,KAArB,CACA,IAAMg2C,OAAEA,EAAAA,KAAQt/C,EAAAA,MAAM8I,EAAAA,OAAOE,GAAWvD,EAAG6D,KAC3ClL,KAAK0rC,WAAW,CACdtrC,KACAwB,KAAMgmC,GAAc,MACpB0c,SAAU,CACR,CACE7zC,SAAU,YAEVgV,KAAM,CAAC,EAAG,EAAG/a,EAAOE,IAEtB,CACE6F,SAAU,YAEVgV,KAAM,CACJ,CACEu7B,QAAS,cACTv7B,KAAM,CACJ,CACEu7B,QAAS,OACT91C,KAAM,CAAC,CAAE81C,QAAS,cAAeE,WACjCt/C,UAIN,EACA,MA1BoB,CA8B3B,EAEH,IAEI2iD,EAFEC,EAAuB,IAAMP,EAC/BQ,EAAmB,EAmBjBC,EAAuB3G,IAjBX4G,IACVC,EACAC,EAgBFJ,GAAoB1G,EAAY0G,EAAmBD,EACrDD,EAAQO,sBAAsBJ,IAGhCD,EAAmB1G,GArBb6G,EAAgB,GAChBC,EAAgBE,IACpBA,EAAStoD,iBAAiB,UAAUoE,SAASyJ,IACtCq7B,GAAUr7B,EAAQ5C,EAAYC,GAAe,IAChDi9C,EAAcvlD,KAAKiL,EAC/B,IAEQy6C,EAAStoD,iBAAiB,KAAKoE,SAASmkD,IAClCA,EAAK1oD,YACPuoD,EAAaG,EAAK1oD,WAC9B,GACS,EAEHuoD,EAAalqD,EAAIJ,UACVqqD,GAQK/jD,QAAAA,WAAA,IAAAokD,EAAAzrB,GAAQ,UAAOlvB,GACzB,IAAItR,EACEoH,EAAK8jD,EAAK18C,OAAOrH,MAAMmK,GAC7B,IAAI85C,EAAsBpqD,IAAIoG,IACT,IAAjBkK,EAAOI,OAAiC,IAAlBJ,EAAOM,OAAjC,CAEA,GADAw5C,EAAsBhjD,IAAIhB,GAAI,GAC1B,CAAC,QAAS,UAAUlG,SAASoQ,EAAOD,WAAY,CAClD,IAAMi6B,EAAUh6B,EAAOE,WAAWF,EAAOD,YACgF,KAA/C,OAApErR,EAAiB,MAAXsrC,OAAkB,EAASA,EAAQ4gB,6BAAkC,EAASlsD,EAAIopD,wBAC5F9d,EAAQyf,MAAMzf,EAAQ6gB,iBAElC,CACQ,IAAMz6C,EAAQJ,EAAOm7B,aAAen7B,EAAOI,MACrCE,EAASN,EAAOg7B,cAAgBh7B,EAAOM,OACvCw6C,QAAeC,kBAAkB/6C,EAAQ,CAC7Cg7C,YAAa56C,EACb66C,aAAc36C,IAEhBy4C,EAAOmC,YACL,CACEplD,KACAglD,SACA16C,QACAE,SACA7C,eAAgBR,EAAQQ,gBAE1B,CAACq9C,GAtB4C,KAwBhD,OAAA,SAAAK,GAAA,OAAAR,EAAA/xC,MAAAlT,KAAAiT,UAAA,CAAA,CA5BWpS,IA6BZ0jD,EAAQO,sBAAsBJ,GAAmB,EAEnDH,EAAQO,sBAAsBJ,GAC9B1kD,KAAKgkD,eAAiB,KACpBG,IACAuB,qBAAqBnB,EAAK,CAEhC,CACEV,0BAAAA,CAA2BlpD,EAAK+M,EAAYC,GAC1C3H,KAAK2lD,uBACL3lD,KAAK4lD,oCACL,IAAMzB,EAAqBrC,GACzBnnD,EACA+M,EACAC,GACA,GAEIk+C,EA/WV,SAAsCngC,EAAI/qB,EAAK+M,EAAYC,GACzD,IAAM4nC,EAAW,GACXuW,EAAUtuD,OAAO+qD,oBACrB5nD,EAAIorD,yBAAyBtsD,WAEpBiiB,EAAAA,SAAAA,GACT,IACE,GAA4D,mBAAjD/gB,EAAIorD,yBAAyBtsD,UAAUiiB,GAChD,MAAA,WAEF,IAAM2+B,EAAiBz9C,GACrBjC,EAAIorD,yBAAyBtsD,UAC7BiiB,GACA,SAAS1e,GACP,OAAO,WAAkB,IAANyoB,IAAAA,EAAAA,UAAAA,OAAAA,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GAWjB,OAVKkgB,GAAU3lC,KAAKsK,OAAQ5C,EAAYC,GAAe,IACrDkK,YAAW,KACT,IAAM2wC,EAAaZ,GAAcn8B,EAAM9qB,EAAKqF,MAC5C0lB,EAAG1lB,KAAKsK,OAAQ,CACd1I,KAAMgmC,GAAc,MACpBn3B,SAAUiL,EACV+J,KAAM+8B,GACP,GACA,GAEExlD,EAASkW,MAAMlT,KAAMylB,EAC7B,KAGL8pB,EAASlwC,KAAKg7C,EACR,CAAA,MAAA2L,GACN,IAAMtD,EAAcle,GAClB7pC,EAAIorD,yBAAyBtsD,UAC7BiiB,EACA,CACEta,GAAAA,CAAIw1C,GACFlxB,EAAG1lB,KAAKsK,OAAQ,CACd1I,KAAMgmC,GAAc,MACpBn3B,SAAUiL,EACV+J,KAAM,CAACmxB,GACP+L,QAAQ,GAEtB,IAGMpT,EAASlwC,KAAKqjD,EACpB,CAAA,EAzCE,IAAA,IAAWhnC,KAAQoqC,EAARpqC,EAAAA,GA2CX,MAAO,KACL6zB,EAAS1uC,SAASgwC,GAAMA,KAAG,CAE/B,CA4T0BoV,CACpBjmD,KAAK8oC,gBAAgBrtC,KAAKuE,MAC1BrF,EACA+M,EACAC,GAEIu+C,EAlOV,SAAyCxgC,EAAI/qB,EAAK+M,EAAYC,GAC5D,IAAM4nC,EAAW,GAuBjB,OAtBAA,EAASlwC,QACJijD,GACD3nD,EAAIwrD,sBAAsB1sD,UAC1BmuC,GAAcwe,MACd1gC,EACAhe,EACAC,EACAhN,SAGsC,IAA/BA,EAAI0rD,wBACb9W,EAASlwC,QACJijD,GACD3nD,EAAI0rD,uBAAuB5sD,UAC3BmuC,GAAc0e,OACd5gC,EACAhe,EACAC,EACAhN,IAIC,KACL40C,EAAS1uC,SAASgwC,GAAMA,KAAG,CAE/B,CAuMkC0V,CAC5BvmD,KAAK8oC,gBAAgBrtC,KAAKuE,MAC1BrF,EACA+M,EACAC,GAEF3H,KAAKgkD,eAAiB,KACpBG,IACA0B,IACAK,GAAuB,CAE7B,CACEN,iCAAAA,GACEd,uBAAsB,IAAM9kD,KAAKwmD,+BACrC,CACEb,oBAAAA,GACE,IAAMc,EAAyB1I,IAC7B/9C,KAAK2jD,UAAUF,SAAW1F,EAC1B+G,sBAAsB2B,EAAqB,EAE7C3B,sBAAsB2B,EAC1B,CACED,2BAAAA,GACExmD,KAAK4jD,uBAAuB/iD,SAC1B,CAAC6lD,EAASp8C,KACR,IAAMlK,EAAKJ,KAAKwH,OAAOrH,MAAMmK,GAC7BtK,KAAK2mD,8BAA8Br8C,EAAQlK,EAAE,IAGjD0kD,uBAAsB,IAAM9kD,KAAKwmD,+BACrC,CACEG,6BAAAA,CAA8Br8C,EAAQlK,GACpC,IAAIJ,KAAKgpC,SAAUhpC,KAAKipC,OAAxB,CAGA,IAAM2d,EAAiB5mD,KAAK4jD,uBAAuB5pD,IAAIsQ,GACvD,GAAKs8C,IAA6B,IAAXxmD,EAAvB,CACA,IAAMysB,EAAS+5B,EAAeluC,KAAK7gB,GACAA,EAAAA,EAAAA,MAG7B+J,KAAEA,GAASglD,EAAe,GAChC5mD,KAAK0rC,WAAW,CAAEtrC,KAAIwB,OAAM0iD,SAAUz3B,IACtC7sB,KAAK4jD,uBAAuBhjD,OAAO0J,EAPD,CAFtC,CAUA,EAEA,MAAMu8C,GACJlqD,WAAAA,CAAY4K,GACV7P,EAAcsI,KAAM,sBAA2Cs/C,IAAAA,SAC/D5nD,EAAcsI,KAAM,cACpBtI,EAAcsI,KAAM,uBACpBtI,EAAcsI,KAAM,cAAe,IAAIsmC,IACvCtmC,KAAK0rC,WAAankC,EAAQmkC,WAC1B1rC,KAAK8mD,oBAAsBv/C,EAAQu/C,mBACvC,CACE1c,iBAAAA,CAAkB2c,EAAQ9c,GACpB,aAAcA,EAAQ7gC,YACxBpJ,KAAK0rC,WAAW,CACdxC,KAAM,GACNqC,QAAS,GACTR,MAAO,GACP3hC,WAAY,CACV,CACEhJ,GAAI6pC,EAAQ7pC,GACZgJ,WAAY6gC,EAAQ7gC,eAI5BpJ,KAAK6pC,iBAAiBkd,EAC1B,CACEld,gBAAAA,CAAiBkd,GACX/mD,KAAKgnD,oBAAoBjmD,IAAIgmD,KACjC/mD,KAAKgnD,oBAAoB9lD,IAAI6lD,GAC7B/mD,KAAKinD,6BAA6BF,GACtC,CACElU,gBAAAA,CAAiBD,EAAQJ,GAAQ,IAAA0U,EAAAlnD,KAC/B,GAAsB,IAAlB4yC,EAAO5zC,OAAX,CACA,IAAMmoD,EAAwB,CAC5B/mD,GAAIoyC,EACJ4U,SAAU,IAENjI,EAAS,GACJt1C,EAAAA,SAAAA,GACT,IAAIsoC,OAAAA,EACC+U,EAAKhV,YAAYnxC,IAAI8I,GASnBsoC,EAAU+U,EAAKhV,YAAY/xC,MAAM0J,IARtCsoC,EAAU+U,EAAKhV,YAAYhxC,IAAI2I,GAC/Bs1C,EAAO9/C,KAAK,CACV8yC,UACAp0C,MAAOG,MAAMC,KAAK0L,EAAM9L,OAASspD,SAAS,CAACC,EAAI3uC,KAAY,CACzDoE,KAAM1e,EAAcipD,EAAIz9C,EAAMvL,MAC9BokB,MAAO/J,SAIbwuC,EAAsBC,SAAS/nD,KAAK8yC,EAAO,EAZ7C,IAAA,IAAWtoC,KAAS+oC,EAAQ2U,EAAjB19C,GAcPs1C,EAAOngD,OAAS,IAAGmoD,EAAsBhI,OAASA,GACtDn/C,KAAK8mD,oBAAoBK,EArBA,CAsB7B,CACE7lD,KAAAA,GACEtB,KAAKkyC,YAAY5wC,QACjBtB,KAAKgnD,wBAA0C1H,OACnD,CAEE2H,4BAAAA,CAA6BO,GAAS,EAGxC,MAAMC,GACJ9qD,WAAAA,GACEjF,EAAcsI,KAAM,UAA+BE,IAAAA,SACnDxI,EAAcsI,KAAM,UAAU,EAClC,CACEotC,aAAAA,CAAcnsC,EAAOymD,GACnB,IAAMC,EAAU3nD,KAAK4nD,QAAQ5tD,IAAIiH,GACjC,OAAO0mD,GAAWzpD,MAAMC,KAAKwpD,GAASv8C,MAAMD,GAAWA,IAAWu8C,GACtE,CACExmD,GAAAA,CAAID,EAAOkK,GACJnL,KAAK6nD,SACR7nD,KAAK6nD,QAAS,EACd/C,uBAAsB,KACpB9kD,KAAK4nD,YAA8B1nD,QACnCF,KAAK6nD,QAAS,CAAA,KAGlB7nD,KAAK4nD,QAAQxmD,IAAIH,GAAQjB,KAAK4nD,QAAQ5tD,IAAIiH,IAA8B2nC,IAAAA,KAAO1nC,IAAIiK,GACvF,CACE28C,OAAAA,GAAU,EAMZ,IAAIC,IAAY,EAChB,IACE,GAAyC,IAArC7pD,MAAMC,KAAK,CAAC,IAAKsM,GAAU,EAAJA,IAAO,GAAU,CAC1C,IAAMu9C,GAAaztD,SAASC,cAAc,UAC1CD,SAASE,KAAKC,YAAYstD,IAC1B9pD,MAAMC,MAA2C,OAAlC7G,EAAK0wD,GAAWptD,oBAAyB,EAAStD,EAAG4G,MAAMC,OAASD,MAAMC,KACzF5D,SAASE,KAAKK,YAAYktD,GAC9B,CACA,CAAA,MAASllD,GACP2J,QAAQw7C,MAAM,gCAAiCnlD,EACjD,CACA,IAk1BIolD,GACMC,GAn1BJ3gD,GAnnbG,IAAIzH,EAonbb,SAASqoD,KAAqB,IAAd7gD,EAAU0L,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAA,CAAA,GAClB81B,KACJA,EAAAA,iBACAsf,EAAAA,iBACAC,EAAAA,WACA5gD,EAAa,WAAAC,cACbA,EAAgB,KAAAwuC,YAChBA,EAAc,YAAAC,eACdA,EAAiB,KAAAnvC,cACjBA,EAAgB,UAAAC,iBAChBA,EAAmB,KAAAW,iBACnBA,GAAmB,EAAA0gD,cACnBA,EACA7mD,iBAAkB8mD,EAClB94C,eAAgB+4C,EAAAA,YAChB5mD,EAAAA,WACAiG,EAAAA,MACAkrC,EAAAA,OACA0V,EAAAA,SACAtZ,EAAW,CAAE,EAAArnC,eACbA,EAAiB,CAAE,EAAA4gD,cACnBA,EAAAA,UACApU,GAAY,EAAAtsC,aACZA,GAAe,EAAA40C,yBACfA,GAA2B,EAAA+L,YAC3BA,GAAsC,qBAAxBrhD,EAAQqhD,YAAqCrhD,EAAQqhD,YAAc,QAAAvS,qBACjFA,GAAuB,EAAAsD,aACvBA,GAAe,EAAA3xC,aACfA,GAAe,EAAAgwB,QACfA,EAAAA,gBACA9vB,EAAkBA,MAAM,GAAAmxC,oBACxBA,EAAsC,IAAIzQ,IAAI,IAC9CJ,aAAcqgB,GACZthD,EAtlEJihC,GAulEqBqgB,EACrB,IAAMC,GAAkBjM,GAA2Bj6C,OAAO6L,SAAW7L,OACjEmmD,GAAoB,EACxB,IAAKD,EACH,IACMlmD,OAAO6L,OAAOlU,WAChBwuD,GAAoB,EAEvB,CAAA,MAAQ1hD,GACP0hD,GAAoB,CAC1B,CAEE,GAAID,IAAoB/f,EACtB,MAAM,IAAI5xB,MAAM,6BAElB,IAAK2xC,IAAoBC,EACvB,MAAO,YAGa,IAAlBJ,QAAmD,IAAvBvZ,EAASyE,YACvCzE,EAASyE,UAAY8U,GAEvBnhD,GAAOlG,QACP,IAkCI0nD,EAlCEtnD,GAAqC,IAAlB6mD,EAAyB,CAChDvwC,OAAO,EACPixC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPvwC,QAAQ,EACRsc,OAAO,EACPk0B,QAAQ,EACRC,KAAK,EACLvnD,MAAM,EACNwnD,MAAM,EACN5mD,KAAK,EACL6mD,MAAM,EACN5d,UAAU,EACV6d,QAAQ,EACRC,UAAU,QACc,IAAtBjB,EAA+BA,EAAoB,CAAEiB,UAAU,GAC7D/5C,GAAqC,IAApB+4C,GAAgD,QAApBA,EAA4B,CAC7Er4C,QAAQ,EACRD,SAAS,EACTG,aAAa,EACbc,gBAAgB,EAChBZ,gBAAgB,EAChBE,gBAAgB,EAChBC,mBAAmB,EACnBE,sBAAsB,EAGtBD,mBAAwC,QAApB63C,EACpBl4C,qBAA0C,QAApBk4C,EACtB5iB,mBAAwC,QAApB4iB,GAClBA,GAAoC,CAAE,GA9hG5C,WAAkC,IAAd9tD,EAAMiI,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAAA,OACpB,aAAcjI,IAAQA,EAAI+uD,SAASjwD,UAAUoH,UAC/ClG,EAAI+uD,SAASjwD,UAAUoH,QAAU3C,MAAMzE,UAAUoH,SAE/C,iBAAkBlG,IAAQA,EAAIgvD,aAAalwD,UAAUoH,UACvDlG,EAAIgvD,aAAalwD,UAAUoH,QAAU3C,MAAMzE,UAAUoH,QAEzD,CAwhGE+oD,GAEA,IAAIC,EAA2B,EACzBC,EAAkBziD,IACtB,IAAWmQ,IAAAA,KAAUwgB,GAAW,GAC1BxgB,EAAOsyC,iBACTziD,EAAKmQ,EAAOsyC,eAAeziD,IAO/B,OAJIqhD,IACHK,IACC1hD,EAAKqhD,EAAOrhD,IAEPA,CAAAA,EAETu1C,GAAcA,CAAC0K,EAAI7J,KACjB,IAAIzkD,EACEqO,EAAKigD,EAKX,GAJAjgD,EAAG02C,UAAYpZ,OACoB,OAA7B3rC,EAAMk1C,GAAgB,SAAc,EAASl1C,EAAIw0C,aAAenmC,EAAGzF,OAASwlC,GAAUsW,cAAkBr2C,EAAGzF,OAASwlC,GAAU4W,qBAAuB32C,EAAG6D,KAAKrO,SAAWyqC,GAAkB2W,UAC9L/P,GAAgBrtC,SAASma,GAAQA,EAAIuyB,aAEnCub,EACM,MAAR/f,GAAwBA,EAAK+gB,EAAeziD,GAAKo2C,QAClD,GAAUsL,EAAmB,CAC5B,IAAM3xC,EAAU,CACdxV,KAAM,QACNy3B,MAAOywB,EAAeziD,GACtBhE,OAAQT,OAAOC,SAASQ,OACxBo6C,cAEF76C,OAAO6L,OAAO+2C,YAAYpuC,EAAS,IACzC,CACI,GAAI/P,EAAGzF,OAASwlC,GAAUsW,aACxBsL,EAAwB3hD,EACxBwiD,EAA2B,OAClBxiD,GAAAA,EAAGzF,OAASwlC,GAAU4W,oBAAqB,CACpD,GAAI32C,EAAG6D,KAAKrO,SAAWyqC,GAAkB2W,UAAY52C,EAAG6D,KAAKkyC,eAC3D,OAEFyM,IACA,IAAME,EAAczB,GAAoBuB,GAA4BvB,EAC9D0B,EAAa3B,GAAoBhhD,EAAG02C,UAAYiL,EAAsBjL,UAAYsK,GACpF0B,GAAeC,IACjBpH,IAAmB,EAE3B,GAEE,IAAMqH,EAAuBne,IAC3B8Q,GAAY,CACVh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkB2W,UACvBnS,IAEN,EAEGoe,EAAqBrtC,GAAM+/B,GAAY,CAC3Ch7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBqX,QACvB9hC,KAGDstC,EAA6BttC,GAAM+/B,GAAY,CACnDh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBsX,gBACvB/hC,KAUD+sB,EAAoB,IAAIid,GAAkB,CAC9Cnb,WAAYue,EACZnD,oBAToCrhD,GAAOm3C,GAAY,CACvDh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkB4X,mBACvBz5C,OAODikC,EAAgB,IAAIiT,GAAc,CACtCn1C,UACAkkC,WAAYue,EACZrgB,oBACAiT,2BACAD,iBAEF,IAAWplC,IAAAA,KAAUwgB,GAAW,GAC1BxgB,EAAO4yC,WACT5yC,EAAO4yC,UAAU,CACfC,WAAY7iD,GACZm2C,wBAAyBjU,EAAciU,wBACvCb,6BAA8BpT,EAAcoT,+BAGlD,IAAM3P,EAAuB,IAAIsa,GACjCna,GAAgB,IAAIkW,GAAc,CAChCv7C,eACAyjC,WAAYye,EACZxvD,IAAKiI,OACL8E,aACAC,gBACAH,UACA4nC,SAAUA,EAAS9kC,OACnBvC,mBAEF,IAAM+hC,EAAmB,IAAIuV,GAAiB,CAC5C3T,WAAYue,EACZjZ,SAAUkZ,EACV74C,cAAe,CACb3J,aACAC,gBACAV,gBACAC,mBACAW,mBACAnG,mBACAqG,iBACAD,aACAjG,cACAoG,eACAD,eACAonC,WACA1/B,iBACAg6B,gBACAE,oBACA0D,iBACAplC,kBACAilC,wBAEF3lC,YAEFo7C,GAAqB,WAAwB,IAAvBnF,EAAaxqC,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,IAAAA,UAAA,GACjC,GAAKshC,EAAL,CAGAqI,GACE,CACEh7C,KAAMwlC,GAAU8W,KAChBhzC,KAAM,CACJ5M,KAAMsE,OAAOC,SAASvE,KACtBoM,MAAO66B,KACP36B,OAAQw6B,OAGZqY,GAEF7T,EAAkBtoC,QAClBwoC,EAAiBlX,OACjBsb,GAAgBrtC,SAASma,GAAQA,EAAIyyB,SACrC,IAAMxsC,EA76ZV,SAAkBpF,EAAI0L,GACpB,IACEC,OAAQC,EAAU,IAAI1H,EAAQ2H,WAC9BA,EAAa,WAAAC,cACbA,EAAgB,KAAAV,cAChBA,EAAgB,UAAAC,iBAChBA,EAAmB,KAAAW,iBACnBA,GAAmB,EAAAG,aACnBA,GAAe,EAAAC,aACfA,GAAe,EAAAsgD,cACfA,GAAgB,EAAAzgD,WAChBA,EAAAA,YACAjG,EAAAA,QACAyoD,GAAU,EAAAviD,eACVA,EAAAA,mBACAiI,EAAAA,YACAL,EAAAA,aACAC,EAAAA,kBACAC,EAAAA,iBACAC,EAAAA,sBACAC,EAAAA,gBACA7H,EAAkBA,MAAM,IACtBX,GAAW,CAAE,EAqCjB,OAAOiI,GAAoB3T,EAAI,CAC7BoJ,IAAKpJ,EACL2L,OAAQC,EACRC,aACAC,gBACAV,gBACAC,mBACAuI,WAAW,EACX5H,mBACAnG,kBA7CyC,IAAlB6mD,EAAyB,CAChDvwC,OAAO,EACPixC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPvwC,QAAQ,EACRsc,OAAO,EACPk0B,QAAQ,EACRC,KAAK,EACLvnD,MAAM,EACNwnD,MAAM,EACN5mD,KAAK,EACL6mD,MAAM,EACN5d,UAAU,EACV6d,QAAQ,EACRC,UAAU,IACU,IAAlBlB,EAA0B,CAC5BkB,UAAU,GACRlB,EA2BFzgD,aACAjG,cACA6N,gBA5BiC,IAAZ46C,GAAgC,QAAZA,EAEzC,CACEl6C,QAAQ,EACRD,SAAS,EACTG,aAAa,EACbc,gBAAgB,EAChBb,qBAAkC,QAAZ+5C,EAEtB95C,gBAAgB,EAChBE,gBAAgB,EAChBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,IAEV,IAAZy5C,EAAoB,CAAA,EAAKA,EAc3BviD,iBACAC,eACAC,eACA+H,qBACAL,cACAC,eACAC,oBACAC,mBACAC,wBACA7H,kBACAC,mBAAmB,GAEvB,CAy1ZkBoiD,CAAShwD,SAAU,CAC/BiN,UACAE,aACAC,gBACAV,gBACAC,mBACAW,mBACA0gD,cAAe7mD,EACfoG,aACAjG,cACAyoD,QAAS56C,EACT3H,iBACAE,eACAD,eACA2H,YAAc9T,IACRoqC,GAAmBpqC,EAAI2L,KACzBkiC,EAAcC,UAAU9tC,GAEtBsqC,GAAuBtqC,EAAI2L,KAC7BoiC,EAAkBC,iBAAiBhuC,GAEjCuqC,GAAcvqC,IAChBiuC,EAAiBC,cAAcrnB,GAAMpmB,WAAWT,GAAKtB,SAC/D,EAEMqV,aAAcA,CAACo6B,EAAQC,KACrBP,EAAcQ,aAAaF,EAAQC,GACnCH,EAAiBK,oBAAoBH,EAAM,EAE7Cl6B,iBAAkBA,CAACi3C,EAAQ9c,KACzBL,EAAkBQ,kBAAkB2c,EAAQ9c,EAAO,EAErD/hC,oBAEF,IAAKjH,EACH,OAAOwL,QAAQC,KAAK,mCAEtBkwC,GACE,CACEh7C,KAAMwlC,GAAUsW,aAChBxyC,KAAM,CACJgZ,KAAMjjB,EACNupD,cAAe5lB,GAAgBhiC,UAGnC66C,GAEFvP,GAAgBrtC,SAASma,GAAQA,EAAI0yB,WACjCnzC,SAAS8iD,oBAAsB9iD,SAAS8iD,mBAAmBr+C,OAAS,GACtE4qC,EAAkBiJ,iBAChBt4C,SAAS8iD,mBACT71C,GAAOrH,MAAM5F,UAlErB,CAoEG,EACD,IACE,IAAMg1C,EAAW,GACXZ,EAAW1pC,IACf,IAAIjM,EACJ,OAAOg1C,GAAgB8E,GAAhB9E,CACL,CACEtC,WAAYue,EACZ/W,YAAaA,CAAC4B,EAAWj4C,IAAW+/C,GAAY,CAC9Ch7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAM,CACJrO,SACAi4C,eAGJ3F,mBAAqB/7B,GAAMwpC,GAAY,CACrCh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBoX,kBACvBtrC,KAGP49B,SAAUkZ,EACV/W,iBAAmB//B,GAAMwpC,GAAY,CACnCh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBkX,gBACvBprC,KAGPggC,QAAUwD,GAAOgG,GAAY,CAC3Bh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBzc,OACvB+rB,KAGPvD,mBAAqBx2B,GAAM+/B,GAAY,CACrCh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBmX,kBACvB5hC,KAGPy2B,iBAAmBgU,GAAO1K,GAAY,CACpCh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBuX,gBACvByI,KAGP/T,mBAAqB+T,GAAO1K,GAAY,CACtCh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBwX,kBACvBwI,KAGP9T,iBAAkB2W,EAClB1W,OAAS52B,GAAM+/B,GAAY,CACzBh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkB0X,MACvBniC,KAGP62B,YAAc72B,IACZ+/B,GAAY,CACVh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkB2X,WACvBpiC,IAEN,EAEH82B,gBAAkBrtC,IAChBs2C,GAAY,CACVh7C,KAAMwlC,GAAU4W,oBAChB9yC,KAAAA,EAAAA,CACErO,OAAQyqC,GAAkBmjB,eACvBnkD,IAEN,EAEHoB,aACAyuC,cACAC,iBACAnvC,gBACAC,mBACAxF,mBACAmG,mBACAunC,WACAmF,YACAtsC,eACAD,eACAquC,uBACAsD,eACA10C,MACApD,cACAiG,aACAI,kBACAP,gBACA+H,iBACA3H,iBACAP,UACAkiC,gBACAE,oBACAE,mBACAqD,uBACAG,iBACA+L,sBACArhB,SAAkF,OAAvEh/B,EAAiB,MAAXg/B,OAAkB,EAASA,EAAQnC,QAAQhZ,GAAMA,EAAE4xB,iBAAqB,EAASz1C,EAAI0f,KAAKmE,IAAO,CAChH4xB,SAAU5xB,EAAE4xB,SACZlnC,QAASsV,EAAEtV,QACX4d,SAAW2lB,GAAY8R,GAAY,CACjCh7C,KAAMwlC,GAAUiX,OAChBnzC,KAAM,CACJsM,OAAQqF,EAAE/f,KACVguC,mBAGE,IAEVkI,EACD,EAEHtJ,EAAcwT,iBAAiB5iD,IAC7B,IACEi1C,EAASlwC,KAAKsvC,EAAQr0C,EAAS4T,iBAChC,CAAA,MAAQxP,GACP+N,QAAQC,KAAKhO,EACrB,KAEI,IAAMk0B,EAAOA,KACXgwB,KACArT,EAASlwC,KAAKsvC,EAAQp0C,WACtBwtD,IAAY,CAAA,EA4Bd,MA1B4B,gBAAxBxtD,SAASmX,YAAwD,aAAxBnX,SAASmX,WACpDkhB,KAEA2c,EAASlwC,KACPmkC,GAAG,oBAAoB,KACrBoZ,GAAY,CACVh7C,KAAMwlC,GAAUgX,iBAChBlzC,KAAM,CAAA,IAEY,qBAAhB09C,GAAoCh2B,GAAM,KAGlD2c,EAASlwC,KACPmkC,GACE,QACA,KACEoZ,GAAY,CACVh7C,KAAMwlC,GAAU+W,KAChBjzC,KAAM,CAAA,IAEY,SAAhB09C,GAAwBh2B,GAAM,GAEpChwB,UAIC,KACL2sC,EAAS1uC,SAASgwC,GAAMA,MACxB1D,EAAqB2a,UACrBC,IAAY,EA//EhBvf,QAAe,CAggFa,CAE3B,CAAA,MAAQ9pC,GACP+N,QAAQC,KAAKhO,EACjB,CACA,CACA0pD,GAAOsC,eAAiB,CAACC,EAAK7f,KAC5B,IAAKid,GACH,MAAM,IAAI5wC,MAAM,iDAElBylC,GAAY,CACVh7C,KAAMwlC,GAAUkX,OAChBpzC,KAAM,CACJy/C,MACA7f,YAEH,EAEHsd,GAAOwC,WAAa,KAClB1c,GAAgBrtC,SAASma,GAAQA,EAAIrE,UAAQ,EAE/CyxC,GAAOyC,iBAAoBpN,IACzB,IAAKsK,GACH,MAAM,IAAI5wC,MAAM,mDAElByrC,GAAmBnF,EAAU,EAE/B2K,GAAO5gD,OAASA,IAyWN2gD,GAERD,KAAMA,GAAI,CAAA,IADPC,GAAG2C,WAAa,GAAK,aAAc3C,GAAGA,GAAG4C,QAAU,GAAK,UAAW5C,GAAGA,GAAG6C,QAAU,GAAK,0+LCrpd7F,SAAenuD,EAAQC,EAAMC,GAC3B,IACE,KAAMD,KAAQD,GACZ,MAAO,OAGT,IAAMG,EAAWH,EAAOC,GAClBG,EAAUF,EAAYC,GAW5B,MAVuB,mBAAZC,IACTA,EAAQxD,UAAYwD,EAAQxD,WAAa,CAAE,EAC3CjC,OAAO0F,iBAAiBD,EAAS,CAC/BE,mBAAoB,CAClBpF,YAAY,EACZF,MAAOmF,MAIbH,EAAOC,GAAQG,EACR,KACLJ,EAAOC,GAAQE,CAAAA,CAEX,CAAA,MAAAjC,GACN,MAAO,MAEX,CACA,kjBCxIMJ,GAAkE,oBAAXiI,OAAyBA,YAAS0e,EAsEzF2pC,GAA8D,oBAAf9xD,WAA6BA,WAAawB,GAGlFuwD,GADahtD,MAAMzE,UACQoH,QAG3BsqD,GAAYF,cAAM,EAANA,GAAQE,UACTF,UAAAA,GAAQ1wD,SACR0wD,UAAAA,GAAQpoD,SACXooD,UAAAA,GAAQG,MAEzBH,UAAAA,GAAQI,gBAAkB,oBAAqB,IAAIJ,GAAOI,gBAAmBJ,GAAOI,eACzDJ,UAAAA,GAAQK,gBACdH,UAAAA,GAAWI,UAC7B,ICm8BKC,GDn8BCC,GAAqC9wD,SAAAA,GAAQ,CAAU,GC08BpE,SAPY6wD,GAAAA,EAAW,OAAA,UAAXA,EAAW,OAAA,QAAXA,CAOZ,CAPYA,KAAAA,GAgBZ,CAAA,ICzjCA,IAAME,GAAgBxtD,MAAM4iB,QACtB6qC,GAAWn0D,OAAOiC,UACXiZ,GAAiBi5C,GAASj5C,eACjCzY,GAAW0xD,GAAS1xD,SAEb6mB,GACT4qC,IACA,SAAU/zD,GACN,MAA8B,mBAAvBsC,GAASX,KAAK3B,EACzB,EAKSi0D,GAAcnhD,GAEH,mBAANA,EAYLohD,GAAYphD,GAEdA,IAAMjT,OAAOiT,KAAOqW,GAAQrW,GAa1BqhD,GAAerhD,QAAqC,IAANA,EAE9CshD,GAAYthD,GAEM,mBAApBxQ,GAASX,KAAKmR,GAKZuhD,GAAUvhD,GAEN,OAANA,EAOEwhD,GAAaxhD,GAAsCqhD,GAAYrhD,IAAMuhD,GAAOvhD,GAM5EyhD,GAAazhD,GAEM,qBAArBxQ,GAASX,KAAKmR,GAGZ0hD,GAAc1hD,GAEhBA,aAAahC,SAGX2jD,GAAc3hD,GAEhBA,aAAa4hD,SCtElBC,GAAiBC,IACnB,IAAMC,EAAiB,CACnBC,KAAM,SAACC,GACH,GACI9pD,IACiB6oD,GAA8B,gBAC9CK,GAAYlpD,GAAO6J,UACpB7J,GAAO6J,QACT,CAME,IALA,IAAMkgD,GACF,uBAAwB/pD,GAAO6J,QAAQigD,GAChC9pD,GAAO6J,QAAQigD,GAAmC,mBACnD9pD,GAAO6J,QAAQigD,IAEzBE,EAAA35C,UAAAjU,OAZmCymB,MAAIvnB,MAAA0uD,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJpnC,EAAIonC,EAAA55C,GAAAA,UAAA45C,GAavCF,EAAWJ,KAAW9mC,EAC1B,CACH,EAEDqnC,KAAM,WAAoB,IAAA,IAAAC,EAAA95C,UAAAjU,OAAhBymB,EAAIvnB,IAAAA,MAAA6uD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvnC,EAAIunC,GAAA/5C,UAAA+5C,GACVR,EAAOC,KAAK,SAAUhnC,EACzB,EAED/Y,KAAM,WAAoB,IAAA,IAAAugD,EAAAh6C,UAAAjU,OAAhBymB,EAAIvnB,IAAAA,MAAA+uD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJznC,EAAIynC,GAAAj6C,UAAAi6C,GACVV,EAAOC,KAAK,UAAWhnC,EAC1B,EAED/mB,MAAO,WAAoB,IAAA,IAAAyuD,EAAAl6C,UAAAjU,OAAhBymB,EAAIvnB,IAAAA,MAAAivD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ3nC,EAAI2nC,GAAAn6C,UAAAm6C,GACXZ,EAAOC,KAAK,WAAYhnC,EAC3B,EAED4nC,SAAU,WAAoB,IAAA,IAAAC,EAAAr6C,UAAAjU,OAAhBymB,EAAIvnB,IAAAA,MAAAovD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9nC,EAAI8nC,GAAAt6C,UAAAs6C,GAGd9gD,QAAQ/N,MAAM6tD,KAAW9mC,EAC5B,EAED+nC,qBAAuBC,IACnBjB,EAAO9tD,MAAK,8CAAAoF,OAA+C2pD,GAAa,EAG5EC,aAAeC,GAA6BrB,GAAaxoD,GAAAA,OAAIyoD,EAAMzoD,KAAAA,OAAI6pD,KAE3E,OAAOnB,CAAM,EAKJkB,GAFSpB,GAAc,gBAEDoB,aCzD7BE,GAAmB,CAAE,EAyBpB,SAAS1oC,GAAKvtB,EAAUytB,EAAoDizB,GAC/E,IAAI4T,GAAUt0D,GAAd,CAGA,GAAImpB,GAAQnpB,GACR,OA5BD,SACHA,EACAytB,EACAizB,GAEA,GAAIv3B,GAAQnpB,GACR,GAAIuzD,IAAiBvzD,EAAIkJ,UAAYqqD,GACjCvzD,EAAIkJ,QAAQukB,EAAUizB,QACnB,GAAI,WAAY1gD,GAAOA,EAAIqH,UAAYrH,EAAIqH,OAC9C,IAAK,IAAI6uD,EAAI,EAAGC,EAAIn2D,EAAIqH,OAAQ6uD,EAAIC,EAAGD,IACnC,GAAIA,KAAKl2D,GAAOytB,EAAS9rB,KAAK++C,EAAS1gD,EAAIk2D,GAAIA,KAAOD,GAClD,MAKpB,CAYeG,CAAUp2D,EAAKytB,EAAUizB,GAEpC,GAAI+T,GAAWz0D,IACX,IAAK,IAAMq2D,KAAQr2D,EAAIy7B,UACnB,GAAIhO,EAAS9rB,KAAK++C,EAAS2V,EAAK,GAAIA,EAAK,MAAQJ,GAC7C,YAKZ,IAAK,IAAMh2D,KAAOD,EACd,GAAI+a,GAAepZ,KAAK3B,EAAKC,IACrBwtB,EAAS9rB,KAAK++C,EAAS1gD,EAAIC,GAAMA,KAASg2D,GAC1C,MAfZ,CAmBJ,CC5BO,IAAMK,GAAkB,SAAUC,GAAuE,IACxGC,EACAC,EAF2EC,EAAap7C,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAG,IAGzFq7C,EAAoB,GAa1B,OAXAppC,GAAKgpC,GAAU,SAAUK,EAAgC32D,GAEjDk0D,GAAYyC,IAAQzC,GAAYl0D,IAAgB,cAARA,IAI5Cu2D,EAAU3+B,mBAA0B++B,aHsDpBC,KGtD2BD,EAAIzxD,KAAOyxD,EAAIt0D,YAC1Dm0D,EAAU5+B,mBAAmB53B,GAC7B02D,EAAQA,EAAQtvD,QAAUovD,EAAU,IAAMD,EAC9C,IAEOG,EAAQ/vD,KAAK8vD,EACxB,ECpCO,SAASzxD,GACZC,EACAC,EACAC,GAEA,IACI,KAAMD,KAAQD,GACV,MAAO,OAKX,IAAMG,EAAWH,EAAOC,GAClBG,EAAUF,EAAYC,GAiB5B,OAbI4uD,GAAW3uD,KAEXA,EAAQxD,UAAYwD,EAAQxD,WAAa,CAAE,EAC3CjC,OAAO0F,iBAAiBD,EAAS,CAC7BwxD,oBAAqB,CACjB12D,YAAY,EACZF,OAAO,MAKnBgF,EAAOC,GAAQG,EAER,KACHJ,EAAOC,GAAQE,CAAQ,CAE9B,CAAC,MAAAjC,GACE,MAAO,MAKX,CACJ,CC7BO,SAAS2zD,GAAiBhsD,EAA6B6E,GAA+B,IAAAonD,EACnFC,EAfV,SAAyBlsD,GACrB,IACI,MAAmB,iBAARA,EACA,IAAIC,IAAID,GAAKksD,SAEpB,QAASlsD,EACF,IAAIC,IAAID,EAAIA,KAAKksD,SAErBlsD,EAAIksD,QACd,CAAC,MAAA7zD,GACE,OAAO,IACX,CACJ,CAGqB8zD,CAAgBnsD,GAC3BosD,EAAmB,CAAEF,WAAUG,cAAc,GAEnD,GAAgCJ,QAA5BA,EAACpnD,EAAQynD,2BAARL,IAA2BA,IAA3BA,EAA6B3vD,QAAW4vD,UAAAA,EAAUzpD,OAAOnG,OAC1D,OAAO8vD,EAGX,IAAK,IAAMG,KAAQ1nD,EAAQynD,oBACvB,GAAIJ,EAASjf,SAASsf,GAClB,MAAO,CAAEL,WAAUG,cAAc,GAIzC,OAAOD,CACX,CCpBO,IAAMI,GAAwD,CACjEC,eAAgB,CACZ,QACA,SACA,OACA,MACA,aACA,QACA,QACA,QACA,SACA,OACA,QACA,MACA,QACA,OACA,aACA,SACA,OACA,SACA,QACA,QACA,kBAEJC,cAAgBlkD,GAAiCA,EACjDmkD,eAAe,EACfC,YAAY,EACZC,uBAAuB,EACvBC,mBAAmB,EACnBC,8BAA+B,CAE3B,cAGA,aACA,QACA,YAEJC,sBAAuB,IACvBV,oBAAqB,CACjB,gBACA,oBACA,cAEA,yBC1BFxC,GAASkB,GAAa,cAStBiC,GAAsBC,GACJ,eAApBA,EAAMC,UACJC,GAAoBF,GAAoF,aAApBA,EAAMC,UAgBhG,SAASE,GAAwBrqC,EAAqB/qB,EAAc4M,GAOhE,GAAIA,EAAQgoD,sBAAuB,CAC/B,IAAMS,EAA4Br1D,EAAIs1D,YACjCC,aACAr6B,QACI+5B,GACGD,GAAmBC,IAClBE,GAAiBF,IAAUroD,EAAQ4nD,eAAej1D,SAAS01D,EAAMO,iBAE9EzqC,EAAG,CACC0qC,SAAUJ,EAA0BK,SAAST,GACzCU,GAAe,CAAEV,QAAOv1D,YAAQinB,EAAWivC,YAAQjvC,EAAWkvC,eAAgB,CAAE,EAAEC,WAAW,MAEjGA,WAAW,GAEnB,CACA,IAAMhiB,EAAW,IAAI9zC,EAAI+1D,qBAAqBt9B,IAI1C,IAKMu9B,EAAqBv9B,EAAQ88B,aAAar6B,QAC3C+5B,GACGD,GAAmBC,IAClBE,GAAiBF,IACdroD,EAAQ4nD,eAAej1D,SAAS01D,EAAMO,gBATlBP,KAC5BroD,EAAQ+nD,aAAc/nD,EAAQ8nD,eACA,mBAAxBO,EAAMO,eAA8D,UAAxBP,EAAMO,cAShDS,CAAuBhB,KAGnClqC,EAAG,CACC0qC,SAAUO,EAAmBN,SAAST,GAClCU,GAAe,CAAEV,QAAOv1D,YAAQinB,EAAWivC,YAAQjvC,EAAWkvC,eAAgB,CAAA,OAEpF,IAIAK,EAAaH,oBAAoBI,oBAAoBj7B,QAAQprB,GAC/DlD,EAAQkoD,8BAA8Bv1D,SAASuQ,KAInD,OADAgkC,EAASE,QAAQ,CAAEkiB,eACZ,KACHpiB,EAASmN,YAAY,CAE7B,CAEA,SAASmV,GAAoBnvD,EAA8BytD,GACvD,QAASA,IAAkBnD,GAAUmD,IAAkBA,EAAcztD,GACzE,CAEO,SAASovD,GAAgBxvD,GAU7B,IAV8BI,KAC7BA,EAAI0tD,WACJA,EAAU2B,QACVA,EAAOvuD,IACPA,GAMHlB,EACG,SAAS0vD,EAAmBC,GACxB,IAAMC,EAAoB55D,OAAOiJ,KAAKwwD,GAAS5hD,MAAMzX,GAA8B,iBAAtBA,EAAIoK,gBAC3DqvD,EAAcD,GAAqBH,EAAQG,GACjD,OAAOD,EAAa/lD,MAAMkmD,GAAOD,aAAW,EAAXA,EAAan3D,SAASo3D,IAC3D,CAwBA,IAAKhC,EAAY,OAAO,EACxB,GAjBA,SAASiC,EAAU7uD,GACf,IACI,MAAmB,iBAARA,EACAA,EAAIgD,WAAW,SAEtBhD,aAAeC,IACS,UAAjBD,EAAIgpB,SAEXhpB,aAAe8uD,SACRD,EAAU7uD,EAAIA,IAG5B,CAAC,MAAA3H,GACE,OAAO,CACX,CACJ,CAEIw2D,CAAU7uD,GAAM,OAAO,EAC3B,GAAIwpD,GAAUoD,GAAa,OAAO,EAClC,GAAIxuC,GAAQwuC,GAAa,OAAO4B,EAAmB5B,GACnD,IAAMmC,EAAiBnC,EAAW1tD,GAClC,OAAIsqD,GAAUuF,GAAwBA,EAC/BP,EAAmBO,EAC9B,CAAC,SAEcC,GAA0BjM,EAAAkM,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAA7+C,MAAAlT,KAAAiT,UAAA,CA4BzC,SAAA8+C,KAFC,OAEDA,GAAAv4B,GA5BA,UACI7+B,EACAw1D,EACAztD,EACA4V,EACAE,GAEyC,IADzCw5C,EAAO/+C,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,GAAAA,UAAA,GAAG,EAEV,GAAI++C,EAAU,GAEV,OADAxF,GAAO9/C,KAAK,8CAA+C,CAAEhK,MAAKytD,kBAC3D,KAEX,IACM8B,EArIH,SAAqB5lC,EAAiB6lC,GAEzC,IADA,IACSrE,EADMxhC,EAAMrtB,OACC,EAAG6uD,GAAK,EAAGA,GAAK,EAClC,GAAIqE,EAAU7lC,EAAMwhC,IAChB,OAAOxhC,EAAMwhC,EAIzB,CA6H6BsE,CADKx3D,EAAIs1D,YAAYmC,iBAAiB1vD,IAG1DktD,GACGE,GAAiBF,IACjBA,EAAMO,gBAAkBA,IACvBrE,GAAYxzC,IAAUs3C,EAAMyC,WAAa/5C,KACzCwzC,GAAYtzC,IAAQo3C,EAAMyC,WAAa75C,KAEhD,OAAKy5C,UACK,IAAI/5B,SAAS3N,GAAY1Y,WAAW0Y,EAAS,GAAKynC,KACjDN,GAA2B/2D,EAAKw1D,EAAeztD,EAAK4V,EAAOE,EAAKw5C,EAAU,OAGxFD,GAAA7+C,MAAAlT,KAAAiT,UAAA,CASD,SAASq/C,GAAe7vD,GAQN,IAROhI,KACrBA,EAAI8M,QACJA,EAAO7E,IACPA,GAKHD,EACG,GAAIwpD,GAAUxxD,GACV,OAAO,KAGX,IAAMm0D,SAAEA,EAAQG,aAAEA,GAAiBL,GAAiBhsD,EAAK6E,GACzD,GAAIwnD,EACA,OAAOH,EAAW,mBAGtB,GAAI7C,GAAStxD,GACT,OAAOA,EAGX,GAAI0xD,GAAW1xD,GACX,OAAOA,EAAKuB,YAGhB,GAAIowD,GAAW3xD,GACX,OAAOwzD,GAAgBxzD,GAG3B,GAAIoxD,GAASpxD,GACT,IACI,OAAOyE,KAAKC,UAAU1E,EACzB,CAAC,MAAA2C,GACE,MAAO,qDACX,CAGJ,MAAO,4CAA8CnD,SAASX,KAAKmB,EACvE,CA+HA,IAAM83D,GAAuBl5B,IACxB2yB,GAAO3yB,KAA+B,eAApBA,EAAMw2B,WAAkD,aAApBx2B,EAAMw2B,WAEjE,SAASS,GAAc7b,GAsBM,IAtBLmb,MACpBA,EAAKv1D,OACLA,EAAMk2D,OACNA,EAAMC,eACNA,EAAcC,UACdA,EAASn4C,MACTA,EAAKE,IACLA,EAAG9V,IACHA,EAAGytD,cACHA,GAaH1b,EACGn8B,EAAQs3C,EAAQA,EAAMyC,UAAY/5C,EAClCE,EAAMo3C,EAAQA,EAAM4C,YAAch6C,EAMlC,IAAMi6C,EAAaznD,KAAK0nD,MAAMvuB,KAAKD,MAAQ+rB,YAAY/rB,OAIjD6Z,EAAY/yC,KAAK0nD,MAAMD,GAAcn6C,GAAS,IAI9C83C,EAAqC,CAAA7oC,EAAAA,KAFzBqoC,EAAQA,EAAMrsC,SAAW,CAAEzmB,KAAM4F,IAI/B,GAAA,CACZ2vD,UAAWvG,GAAYxzC,QAASgJ,EAAYtW,KAAK2nD,MAAMr6C,GACvDs6C,QAAS9G,GAAYtzC,QAAO8I,EAAYtW,KAAK2nD,MAAMn6C,GACnDi6C,aACA1U,YACA1jD,OAAQA,EACR81D,cAAeA,IAAgCP,EAASA,EAAMO,mBAAkC7uC,GAChGivC,SACAsC,eAAgBrC,EAAeqC,eAC/BC,YAAatC,EAAesC,YAC5BC,gBAAiBvC,EAAeuC,gBAChCC,aAAcxC,EAAewC,aAC7BvC,eAIR,GAAI8B,GAAoB3C,GACpB,IAAK,IAAMqD,KAAUrD,EAAMsD,cAAgB,GACvC9C,EAAS/wD,KAAK,CACVozD,aACA1U,YACAsU,UAAWrnD,KAAK2nD,MAAM/C,EAAMyC,WAC5Bv1D,KAAMm2D,EAAOn2D,KACbq2D,SAAUF,EAAOE,SAMjBtD,UAAW,iBAKvB,OAAOO,CACX,CAEA,IAAMgD,GAA4B,CAAC,SAAU,UA+B7C,SAASC,GAAaC,GAGlB,OAAO,IAAIp7B,SAAQ,CAAC3N,EAAS4N,KACzB,IAAM8L,EAAUpyB,YAAW,IAAM0Y,EAAQ,sDAAsD,KAC/F,IACI+oC,EAAE/xC,QACGzf,OACAm1B,MACIs8B,GAAQhpC,EAAQgpC,KAChB77C,GAAWygB,EAAOzgB,KAEtB8gB,SAAQ,IAAMzmB,aAAakyB,IACnC,CAAC,MAAA95B,GACE4H,aAAakyB,GACb1Z,EAAQ,sCACZ,IAER,CAEkC,SAAAipC,KAejC,OAfiCA,GAAAh6B,GAAlC,UAAAuX,GAQoB,IAReuiB,EAC/BA,EAAC/rD,QACDA,EAAO7E,IACPA,GAKHquC,GACS6d,SAAEA,EAAQG,aAAEA,GAAiBL,GAAiBhsD,EAAK6E,GACzD,OAAIwnD,EACO72B,QAAQ3N,QAAQqkC,EAAW,oBAG/ByE,GAAaC,OACvBpgD,MAAAlT,KAAAiT,UAAA,CAEkC,SAAAwgD,KAelC,OAfkCA,GAAAj6B,GAAnC,UAAAoc,GAQoB,IARgB0d,EAChCA,EAAC/rD,QACDA,EAAO7E,IACPA,GAKHkzC,EACS8d,EA3EV,SAAwCxkB,GAQtB,IAAAykB,GARuBL,EACrCA,EAAC/rD,QACDA,EAAO7E,IACPA,GAKHwsC,EACG,GAA2C,YAAvCokB,EAAErC,QAAQj3D,IAAI,qBACd,MAAO,6CAKX,IAAMq3D,UAAWsC,EAAGL,EAAErC,QAAQj3D,IAAI,uBAAe,IAAA25D,OAAA,EAA7BA,EAA+B3xD,cAC7C4xD,EAAsBR,GAA0BhoD,MAAMmhD,GAAW8E,eAAAA,EAAa3rD,WAAW6mD,KAC/F,GAAI8E,GAAeuC,EACf,MAAA9vD,gBAAAA,OAAuButD,EAAW,qBAGtC,IAAMzC,SAAEA,EAAQG,aAAEA,GAAiBL,GAAiBhsD,EAAK6E,GACzD,OAAIwnD,EACOH,EAAW,mBAGf,IACX,CAgDgDiF,CAAgC,CAAEP,IAAG/rD,UAAS7E,QAC1F,OAAKspD,GAAO0H,GAILL,GAAaC,GAHTp7B,QAAQ3N,QAAQmpC,OAI9BxgD,MAAAlT,KAAAiT,UAAA,CAED,SAAS6gD,GACLpuC,EACA/qB,EACA4M,GAEA,IAAKA,EAAQ4nD,eAAej1D,SAAS,SACjC,MAAO,OAIX,IAAM65D,EAAuBhD,GAAoB,UAAWxpD,EAAQ8nD,eAC9D2E,EAAwBjD,GAAoB,WAAYxpD,EAAQ8nD,eAIhE4E,EAAer3D,GAAMjC,EAAK,SAAUu5D,GACtC,WAAA,IAAAre,EAAArc,GAAO,UAAgB92B,EAAwBkwB,GAG3C,IACIuhC,EAEA77C,EACAE,EAJE47C,EAAM,IAAI5C,QAAQ9uD,EAAKkwB,GAEvB49B,EAAkD,CAAE,EAI1D,IACI,IAAMqC,EAA0B,CAAE,EAClCuB,EAAInD,QAAQpwD,SAAQ,CAAChJ,EAAOw8D,KACxBxB,EAAewB,GAAUx8D,CAAK,IAE9Bk8D,IACAvD,EAAeqC,eAAiBA,GAGhC7B,GAAiB,CACbpvD,KAAM,UACNqvD,QAAS4B,EACTnwD,MACA4sD,WAAY/nD,EAAQ+nD,eAGxBkB,EAAesC,kBA7ElC,SAEiCwB,GAAA,OAAAd,GAAAtgD,MAAAlT,KAAAiT,UAAA,CA2EqBshD,CAAoB,CAAEjB,EAAGc,EAAK7sD,UAAS7E,SAG9E4V,EAAQ3d,EAAIs1D,YAAY/rB,MACxBiwB,QAAYD,EAAcE,GAC1B57C,EAAM7d,EAAIs1D,YAAY/rB,MAEtB,IAAM6uB,EAA2B,CAAE,EAkBnC,OAjBAoB,EAAIlD,QAAQpwD,SAAQ,CAAChJ,EAAOw8D,KACxBtB,EAAgBsB,GAAUx8D,CAAK,IAE/Bm8D,IACAxD,EAAeuC,gBAAkBA,GAGjC/B,GAAiB,CACbpvD,KAAM,WACNqvD,QAAS8B,EACTrwD,MACA4sD,WAAY/nD,EAAQ+nD,eAGxBkB,EAAewC,mBAlFlC,SAEkCwB,GAAA,OAAAf,GAAAvgD,MAAAlT,KAAAiT,UAAA,CAgFqBwhD,CAAqB,CAAEnB,EAAGa,EAAK5sD,UAAS7E,SAGzEyxD,CACX,CAAU,QACNzC,GAA2B/2D,EAAK,QAASy5D,EAAI1xD,IAAK4V,EAAOE,GACpDye,MAAM24B,IAAU,IAAA8E,EACPtE,EAAWE,GAAe,CAC5BV,QACAv1D,OAAQ+5D,EAAI/5D,OACZk2D,eAAMmE,EAAEP,SAAG,IAAAO,OAAA,EAAHA,EAAKnE,OACbC,iBACAl4C,QACAE,MACA9V,IAAK0xD,EAAI1xD,IACTytD,cAAe,UAEnBzqC,EAAG,CAAE0qC,YAAW,IAEnB93B,OAAM,QAGf,KACH,OAAAq8B,SAAAA,EAAAC,GAAA,OAAA/e,EAAA3iC,MAAAlT,KAAAiT,UAAA,CAAA,CAtED,KAwEJ,MAAO,KACHghD,GAAc,CAEtB,CAEA,IAAIY,GAA6C,KAEjD,SAASC,GACL3vC,EACAxqB,EACA4M,GAEA,KAAM,gBAAiB5M,GACnB,MAAO,OAKX,GAAIk6D,GAEA,OADArI,GAAO9/C,KAAK,uDACL,OAKX,IAAMqoD,EACFxtD,EAAU/P,OAAOwZ,OAAO,CAAA,EAAIk+C,GAAuB3nD,GAAW2nD,GAG5DxpC,EAAuBxa,IACzB,IAAMklD,EAAqC,GAC3CllD,EAAKklD,SAASvvD,SAASm0D,IACnB,IAAMC,EAAgBF,EAAe3F,cAAc4F,GAC/CC,GACA7E,EAAS/wD,KAAK41D,EAClB,IAGA7E,EAASpxD,OAAS,GAClBmmB,EAAQoC,EAAAA,KAAMrc,GAAI,CAAA,EAAA,CAAEklD,aACxB,EAEE8E,EAAsBnF,GAAwBrqC,EAAI/qB,EAAKo6D,GAGzDI,EAA+BA,OAC/BC,EAAiCA,OAWrC,OAVIL,EAAe1F,eAAiB0F,EAAezF,cAC/C6F,EA1aR,SAAyBzvC,EAAqB/qB,EAAc4M,GACxD,IAAKA,EAAQ4nD,eAAej1D,SAAS,kBACjC,MAAO,OAIX,IAAM65D,EAAuBhD,GAAoB,UAAWxpD,EAAQ8nD,eAC9D2E,EAAwBjD,GAAoB,WAAYxpD,EAAQ8nD,eAEhE4E,EAAer3D,GACjBjC,EAAI0wD,eAAe5xD,UACnB,QAGC47D,GACU,SACHh7D,EACAqI,GAIF,IAUM4V,EACAE,EAdJyf,IAAKhlB,UAAAjU,OAAA,QAAAsiB,IAAArO,UAAA,KAAAA,UAAA,GACLqiD,EAAwBriD,UAAAjU,OAAAiU,EAAAA,kBAAAqO,EACxBmoC,EAAwBx2C,UAAAjU,OAAAiU,EAAAA,kBAAAqO,EAKlBi0C,EAAMv1D,KAINo0D,EAAM,IAAI5C,QAAQ9uD,GAClB8tD,EAAkD,CAAE,EAIpDqC,EAA0B,CAAE,EAC5B2C,EAA2BD,EAAIE,iBAAiBh6D,KAAK85D,GAC3DA,EAAIE,iBAAmB,CAACpB,EAAgBx8D,KACpCg7D,EAAewB,GAAUx8D,EAClB29D,EAAyBnB,EAAQx8D,IAExCk8D,IACAvD,EAAeqC,eAAiBA,GAGpC,IAAM6C,EAAeH,EAAII,KAAKl6D,KAAK85D,GACnCA,EAAII,KAAQl7D,IAEJu2D,GAAiB,CACbpvD,KAAM,UACNqvD,QAAS4B,EACTnwD,MACA4sD,WAAY/nD,EAAQ+nD,eAGxBkB,EAAesC,YAAcR,GAAgB,CAAE73D,OAAM8M,UAAS7E,SAElE4V,EAAQ3d,EAAIs1D,YAAY/rB,MACjBwxB,EAAaj7D,IAMxB86D,EAAI/oD,iBAAiB,oBAAoB,KACrC,GAAI+oD,EAAI7jD,aAAe6jD,EAAIK,KAA3B,CAGAp9C,EAAM7d,EAAIs1D,YAAY/rB,MACtB,IAAM6uB,EAA2B,CAAE,EAChBwC,EAAIM,wBACI1wD,OAAOpG,MAAM,WAChC8B,SAASwW,IACb,IAAMlT,EAAQkT,EAAKtY,MAAM,MACnBs1D,EAASlwD,EAAMuuB,QACf76B,EAAQsM,EAAM5F,KAAK,MACrB81D,IACAtB,EAAgBsB,GAAUx8D,EAC9B,IAEAm8D,IACAxD,EAAeuC,gBAAkBA,GAGjC/B,GAAiB,CACbpvD,KAAM,WACNqvD,QAAS8B,EACTrwD,MACA4sD,WAAY/nD,EAAQ+nD,eAGxBkB,EAAewC,aAAeV,GAAgB,CAAE73D,KAAM86D,EAAIO,SAAUvuD,UAAS7E,SAEjFgvD,GAA2B/2D,EAAK,iBAAkBy5D,EAAI1xD,IAAK4V,EAAOE,GAC7Dye,MAAM24B,IACH,IAAMQ,EAAWE,GAAe,CAC5BV,QACAv1D,OAAQA,EACRk2D,OAAQgF,aAAAA,EAAAA,EAAKhF,OACbC,iBACAl4C,QACAE,MACA9V,IAAKA,EAAIzI,WACTk2D,cAAe,mBAEnBzqC,EAAG,CAAE0qC,YAAW,IAEnB93B,OAAM,QAxCX,CA0CM,IAGV+8B,EAAa/7D,KAAKi8D,EAAKl7D,EAAQqI,EAAKu1B,EAAOq9B,EAAU7L,EACxD,IAGT,MAAO,KACHwK,GAAc,CAEtB,CAoTsB8B,CAAgBrwC,EAAI/qB,EAAKo6D,GACvCK,EAAgBtB,GAAkBpuC,EAAI/qB,EAAKo6D,IAG/CF,GAAqBA,KACjBK,IACAC,IACAC,GAAe,CAGvB,CAIO,IAKMY,GAA4EzuD,IAC9E,CACHzK,KAP2B,kBAQ3B2xC,SAAUqmB,GACVvtD,QAASA,IC9qBjBkkD,GAAiBwK,sBAAwBxK,GAAiBwK,uBAAyB,CAAE,EACrFxK,GAAiBwK,sBAAsBC,aAAe,CAAEC,0BAAwBH,2BAChFvK,GAAiBwK,sBAAsBG,MAAQ,CAAEhO,OAAQiO,GAAar9B,QAAS,MAO/EyyB,GAAiB2K,MAAQ,CAAEhO,OAAQiO,GAAar9B,QAAS,MACzDyyB,GAAiB6K,mBAAqB,CAAEH,2BACxC1K,GAAiBuK,uBAAyBA","x_google_ignoreList":[0,1]}
|