@gridsheet/react-core 3.1.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/components/Cell.d.ts.map +1 -1
  2. package/dist/components/ColumnMenuLabelSection.d.ts.map +1 -1
  3. package/dist/components/Editor.d.ts.map +1 -1
  4. package/dist/components/FormulaBar.d.ts.map +1 -1
  5. package/dist/components/FunctionGuide.d.ts +1 -1
  6. package/dist/components/FunctionGuide.d.ts.map +1 -1
  7. package/dist/components/GridSheet.d.ts.map +1 -1
  8. package/dist/components/HeaderCellTop.d.ts.map +1 -1
  9. package/dist/components/ScrollHandle.d.ts.map +1 -1
  10. package/dist/components/StoreObserver.d.ts +2 -0
  11. package/dist/components/StoreObserver.d.ts.map +1 -1
  12. package/dist/components/Tabular.d.ts.map +1 -1
  13. package/dist/components/useAutocomplete.d.ts +1 -1
  14. package/dist/components/useAutocomplete.d.ts.map +1 -1
  15. package/dist/hooks-CMtn5dDI.mjs +6250 -0
  16. package/dist/hooks-CMtn5dDI.mjs.map +1 -0
  17. package/dist/index.d.ts +2 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2035 -1916
  20. package/dist/index.js.map +1 -1
  21. package/dist/lib/clipboard.d.ts +1 -1
  22. package/dist/lib/clipboard.d.ts.map +1 -1
  23. package/dist/lib/hooks.d.ts +1 -1
  24. package/dist/lib/hooks.d.ts.map +1 -1
  25. package/dist/lib/menu.d.ts +1 -1
  26. package/dist/lib/menu.d.ts.map +1 -1
  27. package/dist/policy/checkbox.d.ts +1 -1
  28. package/dist/policy/checkbox.d.ts.map +1 -1
  29. package/dist/spellbook.d.ts +3 -3
  30. package/dist/spellbook.d.ts.map +1 -1
  31. package/dist/spellbook.js +4 -5
  32. package/dist/spellbook.js.map +1 -1
  33. package/dist/store/actions.d.ts +3 -1
  34. package/dist/store/actions.d.ts.map +1 -1
  35. package/dist/store/helpers.d.ts +1 -1
  36. package/dist/store/helpers.d.ts.map +1 -1
  37. package/dist/types.d.ts +29 -2
  38. package/dist/types.d.ts.map +1 -1
  39. package/package.json +3 -3
  40. package/dist/hooks-CvkA2lFB.mjs +0 -1186
  41. package/dist/hooks-CvkA2lFB.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-CMtn5dDI.mjs","sources":["../../engine/dist/index.js","../../web/dist/index.js","../src/store/helpers.ts","../src/store/actions.ts","../src/lib/hooks.ts"],"sourcesContent":["import H from \"dayjs\";\nimport ds from \"dayjs/plugin/utc.js\";\nimport fs from \"dayjs/plugin/timezone.js\";\nconst ps = 20, J = 24, jt = 90, Dr = 500, vr = 1e3, Re = 24, _e = 50, kr = 5, Pr = 5, $r = 5, Lr = 10, $e = 1e3, Zt = 86400, ms = \"YYYY-MM-DDTHH:mm:ss.SSSZ\", gs = {\n startY: -1,\n startX: -1,\n endY: -1,\n endX: -1\n}, ys = new Date(1900, 0, 1), Ft = \"default\", Dt = \"defaultCol\", vt = \"defaultRow\", qt = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\", gt = /* @__PURE__ */ new Map(), yt = /* @__PURE__ */ new Map(), ws = (r, t = $e) => {\n const e = gt.get(--r);\n if (e != null)\n return e;\n if (r === 0)\n return \"\";\n let s = r, i = \"\";\n do\n i = qt[--s % 26] + i, s = Math.floor(s / 26);\n while (s > 0);\n gt.set(r, i);\n const n = gt.keys();\n for (let o = n.next(); gt.size > t; o = n.next())\n gt.delete(o.value);\n return i;\n}, xs = (r, t = $e) => {\n const e = yt.get(r);\n if (e != null)\n return e;\n if (r === \"\")\n return 0;\n const s = r;\n let i = 0;\n for (let o = 0; o < s.length; o++) {\n const a = s[s.length - o - 1], l = qt.indexOf(a) + 1;\n i += qt.length ** o * l;\n }\n yt.set(r, i);\n const n = yt.keys();\n for (let o = n.next(); yt.size > t; o = n.next())\n yt.delete(o.value);\n return i;\n}, W = (r) => {\n if (r === 0)\n return \"\";\n const t = ws(r + 1);\n return r < 0 ? `$${t}` : t;\n}, _t = (r, t = !1) => {\n const e = xs(r.toUpperCase());\n return t ? -e : e;\n}, Et = (r) => r === 0 ? \"\" : r < 0 ? `$${r}` : String(r), bs = (r, t = !1) => (typeof r == \"string\" && (r = parseInt(r, 10)), t ? -r : r), D = ({ y: r, x: t, absX: e, absY: s }) => {\n if (t === -1 && r === -1)\n return \"?\";\n const i = t === void 0 ? \"\" : t === 0 ? \"0\" : `${e ? \"$\" : \"\"}${W(t)}`, n = r === void 0 ? \"\" : r === 0 ? \"0\" : `${s ? \"$\" : \"\"}${Et(r)}`;\n return `${i}${n}`;\n}, N = (r) => {\n const t = r.match(/(\\$)?([a-zA-Z]*)(\\$)?([0-9]*)/);\n if (t == null)\n return { y: -1, x: -1 };\n const [, e, s, i, n] = t.slice(), [o, a] = [e != null, i != null];\n return s === \"\" && n === \"\" ? { y: -1, x: -1, absX: !1, absY: !1 } : { y: bs(n) || 0, x: _t(s) || 0, absX: o, absY: a };\n}, Le = (r, t, e) => {\n const s = r.match(/([A-Z]*)([0-9]*)/);\n if (s == null)\n return r;\n const [, i, n] = s.slice();\n return `${t ? \"$\" : \"\"}${i.toUpperCase()}${e ? \"$\" : \"\"}${n}`;\n}, Hr = (r) => `0${r}`, Yr = (r) => typeof r == \"number\" ? `${W(r)}0` : `${r.toUpperCase()}0`, Br = (r) => r.replace(/\\$/g, \"\"), He = (r, t = !1, e = !1) => `${t ? \"$\" : \"\"}#${r}${e ? \"$\" : \"\"}`, Ur = (r, t) => {\n const { rows: e, cols: s } = Ae(r), { rows: i, cols: n } = Ae(t);\n return {\n rows: e > i ? e : i,\n cols: s > n ? s : n\n };\n}, Ss = (r, t) => {\n const e = { ...r };\n return t.left < r.left && (e.left = t.left), t.right > r.right && (e.right = t.right), t.top < r.top && (e.top = t.top), t.bottom > r.bottom && (e.bottom = t.bottom), e;\n}, Rs = (r) => {\n if (r.endY === -1 || r.endX === -1)\n return { top: -1, left: -1, bottom: -1, right: -1 };\n const [t, e] = r.startY < r.endY ? [r.startY, r.endY] : [r.endY, r.startY], [s, i] = r.startX < r.endX ? [r.startX, r.endX] : [r.endX, r.startX];\n return { top: t, left: s, bottom: e, right: i };\n}, Ee = (r) => ({\n startY: r.top,\n startX: r.left,\n endY: r.bottom,\n endX: r.right\n}), zr = (r) => {\n const { top: t, left: e, bottom: s, right: i } = r;\n if (t === s && e === i)\n return D({ y: t, x: e });\n const n = D({ y: t, x: e }), o = D({ y: s, x: i });\n return `${n}:${o}`;\n}, Vr = (r, t) => r.start === -1 || r.end === -1 ? !1 : r.start <= t && t <= r.end || r.end <= t && t <= r.start, Wr = (r, t) => {\n if (r.top === -1 || r.left === -1 || r.bottom === -1 || r.right === -1)\n return !1;\n const { y: e, x: s } = t, { top: i, left: n, bottom: o, right: a } = r;\n return i <= e && e <= o && n <= s && s <= a;\n}, _s = (r) => r.endY === -1 || r.endX === -1 ? { rows: 0, cols: 0 } : {\n rows: Math.abs(r.startY - r.endY),\n cols: Math.abs(r.startX - r.endX)\n}, Xr = (r) => r.endY === -1 || r.endX === -1 ? { rows: 1, cols: 1 } : {\n rows: 1 + Math.abs(r.startY - r.endY),\n cols: 1 + Math.abs(r.startX - r.endX)\n}, Ae = (r) => ({\n rows: Math.abs(r.top - r.bottom),\n cols: Math.abs(r.left - r.right)\n}), Kt = (r) => ({\n rows: 1 + Math.abs(r.top - r.bottom),\n cols: 1 + Math.abs(r.left - r.right)\n}), Nt = ({ base: r = 0, matrix: t }) => {\n const e = t.length;\n return e === 0 ? { rows: 0, cols: 0 } : { rows: r + e, cols: r + t[0].length };\n}, jr = (r, t, e = 1) => Array.from({ length: (t - r - 1) / e + 1 }, (s, i) => r + i * e), Gr = (r, t) => {\n const e = [];\n return r.forEach((s) => {\n const i = [];\n t.forEach((n) => {\n i.push(s[n]);\n }), e.push(i);\n }), e;\n}, Zr = (r, t) => {\n const e = [];\n return r.forEach((s) => {\n const i = {};\n s.forEach((n, o) => {\n if (o >= t.length)\n return;\n const a = t[o];\n i[a] = n;\n }), e.push(i);\n }), e;\n}, se = (r, t, e) => [...Array(r)].map(() => Array(t).fill(e)), qr = ({\n cells: r = {},\n ensured: t = {},\n matrix: e = [],\n flattenAs: s = \"value\",\n origin: i = \"A1\"\n}) => Es({\n cells: r,\n ensured: t,\n matrices: { [i]: e },\n flattenAs: s\n}), Es = ({\n cells: r = {},\n ensured: t = {},\n matrices: e = {},\n flattenAs: s = \"value\"\n} = {}) => {\n const i = Object.keys(r), a = Object.values(e).reduce((c, f) => {\n var d;\n return c + f.length * (((d = f[0]) == null ? void 0 : d.length) ?? 0);\n }, 0) > 1e5;\n a ? (Object.defineProperty(r, \"__matrices\", { value: e, configurable: !0 }), Object.defineProperty(r, \"__flattenAs\", { value: s, configurable: !0 })) : As({ cells: r, flattenAs: s, matrices: e });\n const { numRows: l, numCols: u } = Object.assign({ numRows: 1, numCols: 1 }, t), h = D({ y: l, x: u });\n return r[h] == null && (r[h] = {}), a && (i.push(h), Object.defineProperty(r, \"__userKeys\", { value: i, configurable: !0 })), r;\n}, As = ({\n cells: r = {},\n matrices: t = {},\n flattenAs: e\n}) => (Object.keys(t).forEach((s) => {\n const i = t[s], { y: n, x: o } = N(s), a = [];\n for (let l = 0; l < i.length; l++) {\n const u = i[l], h = String(n + l);\n for (let c = 0; c < u.length; c++) {\n a[c] == null && (a[c] = W(o + c));\n const f = a[c] + h;\n if (e) {\n const d = r[f];\n d ? e in d || (d[e] = u[c]) : r[f] = { [e]: u[c] };\n } else\n r[f] = u[c];\n }\n }\n}), r), Cs = (r = {}, t) => {\n let [e, s] = [0, 0];\n return (t ?? Object.keys(r)).forEach((i) => {\n if (i === Ft || i === Dt || i === vt)\n return;\n const { y: n, x: o } = N(i);\n e < n && (e = n), s < o && (s = o);\n }), { numRows: e, numCols: s };\n}, Kr = (r, t) => {\n const e = [];\n for (let s = r; s <= t; s++)\n e.push(s);\n return e;\n}, Is = (r, t) => (r.left === -1 && (r = {\n left: t.x,\n top: t.y,\n right: t.x,\n bottom: t.y\n}), r), Ts = (r) => {\n if (r.indexOf(\":\") === -1)\n return [r];\n const t = [];\n if (/^\\d+\\:\\d+$/.test(r)) {\n const [h, c] = r.split(\":\").map(Number);\n for (let f = h; f <= c; f++)\n t.push(`${f}`);\n return t;\n }\n const s = r.match(/^([A-Z]*)(\\d+)?\\:([A-Z]*)(\\d+)?$/);\n if (!s)\n return console.error(\"Invalid range format\", r), [r];\n const [, i, n, o, a] = s, l = i ? _t(i) : 1, u = o ? _t(o) : 1;\n for (let h = l; h <= u; h++) {\n const c = i || o ? W(h) : \"\";\n if (n && a)\n for (let f = Number(n); f <= Number(a); f++)\n t.push(`${c}${f}`);\n else !n && !a && t.push(c);\n }\n return t;\n}, Jr = (r) => {\n const t = _s(r);\n return t.rows + t.cols === 0 ? { startY: -1, startX: -1, endY: -1, endX: -1 } : { ...r };\n}, Qr = (r, t, e, s) => {\n for (; r <= t; ) {\n const i = Math.floor((r + t) / 2);\n e(i) ? s ? t = i - 1 : r = i + 1 : s ? r = i + 1 : t = i - 1;\n }\n return s ? r : t;\n}, tn = (r) => {\n if (r.length === 0)\n return [];\n const t = r.map((o) => {\n const { y: a, x: l } = N(o);\n return { y: a, x: l };\n }), e = (o, a) => `${o},${a}`, s = new Set(t.map((o) => e(o.y, o.x))), i = /* @__PURE__ */ new Set(), n = [];\n for (const o of t) {\n const a = e(o.y, o.x);\n if (i.has(a))\n continue;\n let l = o.y, u = o.x, h = o.y, c = o.x;\n const f = [o];\n for (i.add(a); f.length > 0; ) {\n const { y: d, x: p } = f.shift();\n d < l && (l = d), d > h && (h = d), p < u && (u = p), p > c && (c = p);\n for (const [m, g] of [\n [0, 1],\n [0, -1],\n [1, 0],\n [-1, 0]\n ]) {\n const y = e(d + m, p + g);\n s.has(y) && !i.has(y) && (i.add(y), f.push({ y: d + m, x: p + g }));\n }\n }\n n.push({ top: l, left: u, bottom: h, right: c });\n }\n return n;\n}, en = (r, t = !0) => {\n const e = /* @__PURE__ */ new Set(), s = [];\n for (const i of r) {\n const { x: n } = N(i);\n e.has(n) || (e.add(n), s.push(n));\n }\n return t === !0 ? s.sort((i, n) => i - n) : t === !1 && s.sort((i, n) => n - i), s;\n}, sn = (r, t = !0) => {\n const e = /* @__PURE__ */ new Set(), s = [];\n for (const i of r) {\n const { y: n } = N(i);\n e.has(n) || (e.add(n), s.push(n));\n }\n return t === !0 ? s.sort((i, n) => i - n) : t === !1 && s.sort((i, n) => n - i), s;\n}, rn = (r) => r.startY === -1 || r.startX === -1 || r.endY === -1 || r.endX === -1, et = 864e5;\nclass b {\n constructor(t, e = \"HH:mm:ss\") {\n this.__gsType = \"Time\", this.days = t, this.format = e;\n }\n add(t) {\n return new Date(t.getTime() + this.days * et);\n }\n sub(t) {\n return new Date(t.getTime() - this.days * et);\n }\n stringify(t) {\n const e = this.toMilliseconds(), s = Math.abs(e), i = e < 0 ? \"-\" : \"\", n = s % 1e3;\n let o = Math.floor(s / 1e3);\n const a = o % 60;\n o = Math.floor(o / 60);\n const l = o % 60, u = Math.floor(o / 60);\n let c = t ?? (n === 0 ? \"HH:mm:ss\" : \"HH:mm:ss.SSS\");\n return c = c.replace(\"HH\", i + String(u).padStart(2, \"0\")), c = c.replace(\"H\", i + String(u)), c = c.replace(\"mm\", String(l).padStart(2, \"0\")), c = c.replace(\"ss\", String(a).padStart(2, \"0\")), c = c.replace(\"SSS\", String(n).padStart(3, \"0\")), c = c.replace(\"SS\", String(n).padStart(3, \"0\").substring(0, 2)), c = c.replace(\"S\", String(n).padStart(3, \"0\").substring(0, 1)), c;\n }\n toMilliseconds() {\n return this.days * et;\n }\n toDate() {\n return new Date(ys.getTime() + this.days * et);\n }\n toJSON() {\n return { __gsType: \"Time\", days: this.days, format: this.format };\n }\n toString() {\n return this.stringify();\n }\n static create(t = 0, e = 0, s = 0, i = 0) {\n const n = t * 36e5 + e * 6e4 + s * 1e3 + i;\n return new b(n / et);\n }\n static fromDate(t) {\n const e = t.getHours() * 36e5 + t.getMinutes() * 6e4 + t.getSeconds() * 1e3 + t.getMilliseconds();\n return new b(e / et);\n }\n static fromDates(t, e) {\n return new b((t.getTime() - e.getTime()) / et);\n }\n static fromObject(t) {\n return new b(t.days, t.format);\n }\n static is(t) {\n return t instanceof b || (t == null ? void 0 : t.__gsType) === \"Time\";\n }\n static ensure(t) {\n return t instanceof b ? t : (t == null ? void 0 : t.__gsType) === \"Time\" ? b.fromObject(t) : b.create();\n }\n static parse(t, e, s = !1) {\n if (e != null) {\n const i = Ms(e), n = t.match(i);\n if (n != null && n.groups)\n return b.create(\n Number(n.groups.HH || n.groups.H || 0),\n Number(n.groups.mm || n.groups.m || 0),\n Number(n.groups.ss || n.groups.s || 0),\n Number(n.groups.SSS || n.groups.SS || n.groups.S || 0)\n );\n }\n if (!s) {\n {\n const i = t.match(/^([+-]?)(\\d+):(\\d{2})$/);\n if (i) {\n const [, n, o, a] = i, l = n === \"-\" ? -1 : 1;\n return b.create(l * Number(o), l * Number(a));\n }\n }\n {\n const i = t.match(/^([+-]?)(\\d+):(\\d{2}):(\\d{2})$/);\n if (i) {\n const [, n, o, a, l] = i, u = n === \"-\" ? -1 : 1;\n return b.create(u * Number(o), u * Number(a), u * Number(l));\n }\n }\n {\n const i = t.match(/^([+-]?)(\\d+):(\\d{2}):(\\d{2})\\.(\\d+)$/);\n if (i) {\n const [, n, o, a, l, u] = i, h = n === \"-\" ? -1 : 1;\n return b.create(h * Number(o), h * Number(a), h * Number(l), h * Number(u));\n }\n }\n }\n }\n}\nconst Ce = {\n HH: { group: \"HH\", pattern: \"(?<HH>\\\\d+)\" },\n H: { group: \"H\", pattern: \"(?<HH>\\\\d+)\" },\n mm: { group: \"mm\", pattern: \"(?<mm>[0-5]\\\\d)\" },\n m: { group: \"m\", pattern: \"(?<m>\\\\d|[1-5]\\\\d)\" },\n ss: { group: \"ss\", pattern: \"(?<ss>[0-5]\\\\d)\" },\n s: { group: \"s\", pattern: \"(?<s>\\\\d|[1-5]\\\\d)\" },\n SSS: { group: \"SSS\", pattern: \"(?<SSS>\\\\d{3})\" },\n SS: { group: \"SS\", pattern: \"(?<SS>\\\\d{2})\" },\n S: { group: \"S\", pattern: \"(?<S>\\\\d)\" }\n};\nfunction Ms(r) {\n const t = Object.keys(Ce).sort((n, o) => o.length - n.length), e = new RegExp(t.join(\"|\"), \"g\"), i = r.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\").replace(e, (n) => {\n var o;\n return ((o = Ce[n]) == null ? void 0 : o.pattern) ?? n;\n });\n return new RegExp(`^${i}$`);\n}\nclass x {\n constructor(t, e, s) {\n this.__gsType = \"FormulaError\", this.code = t, this.message = e, this.error = s;\n }\n static is(t) {\n return t instanceof x || (t == null ? void 0 : t.__gsType) === \"FormulaError\";\n }\n toString() {\n return this.code;\n }\n}\nclass ut {\n constructor(t) {\n this.code = t, this.__gsType = \"Sentinel\";\n }\n is(t) {\n return ut.is(t, this.code);\n }\n static is(t, e) {\n return t instanceof ut || (t == null ? void 0 : t.__gsType) === \"Sentinel\" ? e == null || t.code === e : !1;\n }\n}\nconst At = new ut(\"solving\"), wt = new ut(\"none\");\nclass k {\n constructor(t) {\n this.__gsType = \"Pending\", this.promise = t, this.timestamp = Date.now();\n }\n static is(t) {\n return t instanceof k || (t == null ? void 0 : t.__gsType) === \"Pending\";\n }\n toString() {\n return `<Pending #${this.timestamp}>`;\n }\n}\nclass B {\n constructor(t) {\n this.__gsType = \"Spilling\", this.matrix = this.ensure2D(t);\n }\n ensure2D(t) {\n return t.length === 0 ? [] : Array.isArray(t[0]) ? t : [t];\n }\n static is(t) {\n return t instanceof B || (t == null ? void 0 : t.__gsType) === \"Spilling\";\n }\n}\nconst Pt = (r, t = !0) => {\n let e = r;\n return t && e.startsWith(\"$\") && (e = e.slice(1)), t && e.endsWith(\"$\") && (e = e.slice(0, -1)), e.replace(\"#\", \"\");\n};\nclass rt {\n constructor(t) {\n this.ids = [], this.value = t;\n }\n}\nclass ie extends rt {\n evaluate() {\n return this.value;\n }\n}\nclass Os extends rt {\n evaluate() {\n throw new x(\"#REF!\", \"Reference does not exist.\");\n }\n}\nclass Ns extends rt {\n evaluate() {\n throw new x(\"#NAME?\", `Invalid ref: ${this.value}`);\n }\n}\nclass Ye extends rt {\n constructor(t) {\n super(t);\n }\n stringify() {\n return this.value.toUpperCase();\n }\n evaluate({ sheet: t }) {\n const e = dt(this.value, { sheet: t, dependency: \"\" });\n if (e.sheet == null)\n throw new x(\"#REF!\", `Unknown sheet: ${e.sheetName}`);\n if (e.addresses.length === 0)\n throw new x(\"#REF!\", `Invalid address: ${this.value}`);\n const { y: s, x: i } = N(e.addresses[0]);\n return e.sheet.trim({ top: s, left: i, bottom: s, right: i });\n }\n identify(t) {\n const { slideY: e = 0, slideX: s = 0 } = t, i = dt(this.value, t);\n if (i.sheet == null)\n return this.value;\n const n = i.addresses[0], { y: o, x: a, absX: l, absY: u } = N(n), h = {\n y: o + e,\n x: a + s,\n absX: l,\n absY: u\n }, c = i.sheet.getId(h);\n return c == null ? this.value : (this.ids = [c], `#${i.sheet.id}!${He(c, l, u)}`);\n }\n}\nclass Be extends rt {\n stringify() {\n return this.value.toUpperCase();\n }\n evaluate({ sheet: t }) {\n const e = dt(this.value, { sheet: t, dependency: \"\" });\n if (e.sheet == null)\n throw new x(\"#REF!\", `Unknown sheet: ${e.sheetName}`);\n if (e.addresses.length === 0)\n throw new x(\"#REF!\", `Invalid address: ${this.value}`);\n const s = e.sheet.rangeToArea(e.addresses.join(\":\"));\n return e.sheet.trim(s);\n }\n identify(t) {\n const { slideY: e = 0, slideX: s = 0 } = t, i = dt(this.value, t);\n if (i.sheet == null)\n return this.value;\n const n = [];\n for (let o = 0; o < i.addresses.length; o++) {\n const a = i.addresses[o], { y: l, x: u, absX: h, absY: c } = N(a), f = {\n y: l + e,\n x: u + s,\n absX: h,\n absY: c\n }, d = i.sheet.getId(f);\n if (d == null)\n return this.value;\n this.ids.push(d), n.push(He(d, h, c));\n }\n return `#${i.sheet.id}!${n.join(\":\")}`;\n }\n}\nclass Jt extends rt {\n parse(t) {\n if (this.value.indexOf(\"!\") !== -1) {\n const [e, s] = this.value.split(\"!\"), i = Number(e.slice(1));\n return { sheet: t.getSheetBySheetId(i), id: Pt(s, !1) };\n }\n return { sheet: t, id: Pt(this.value, !1) };\n }\n evaluate({ sheet: t }) {\n const e = this.parse(t);\n if (e.id === \"?\")\n throw new x(\"#REF!\", \"Reference does not exist\");\n const { y: s, x: i } = e.sheet.getPointById(e.id), [n, o] = [Math.abs(s), Math.abs(i)];\n return e.sheet.trim({\n top: n,\n left: o,\n bottom: n,\n right: o\n });\n }\n display({ sheet: t, slideY: e = 0, slideX: s = 0 }) {\n const i = this.parse(t), n = i.sheet.getAddressById(i.id, e, s);\n return n ? i.sheet.id === t.id ? n : `${i.sheet.sheetPrefix()}${n}` : \"#REF!\";\n }\n identify(t) {\n const { sheet: e, slideY: s = 0, slideX: i = 0 } = t, n = this.display({ sheet: e, slideY: s, slideX: i });\n if (n == null || n.length < 2)\n return \"#?\";\n const { formula: o, ids: a } = dt(n, t);\n return this.ids = a, o || \"#?\";\n }\n}\nclass Qt extends rt {\n parse(t) {\n const e = this.value;\n if (e.indexOf(\"!\") !== -1) {\n const [s, i] = e.split(\"!\"), n = Number(s.slice(1));\n return { sheet: t.getSheetBySheetId(n), ids: i.split(\":\") };\n }\n return { sheet: t, ids: e.split(\":\") };\n }\n evaluate({ sheet: t }) {\n const e = this.parse(t), s = e.ids.map((c) => Pt(c)), i = [];\n for (let c = 0; c < s.length; c++) {\n const f = s[c];\n if (f === \"?\")\n throw new x(\"#REF!\", \"Reference does not exist\");\n const d = e.sheet.getPointById(f);\n i.push(d);\n }\n const [n, o] = i, [a, l, u, h] = [n.y, n.x, o.y || e.sheet.numRows, o.x || e.sheet.numCols];\n return e.sheet.trim({ top: a, left: l, bottom: u, right: h });\n }\n display({ sheet: t, slideY: e = 0, slideX: s = 0 }) {\n const i = this.parse(t), n = i.ids.map((o) => Pt(o, !1)).map((o) => i.sheet.getAddressById(o, e, s) || \"#REF!\").join(\":\");\n return i.sheet.id === t.id ? n : `${i.sheet.sheetPrefix()}${n}`;\n }\n identify(t) {\n const { sheet: e, slideY: s = 0, slideX: i = 0 } = t, n = this.display({ sheet: e, slideY: s, slideX: i }), { formula: o, ids: a } = dt(n, t);\n return this.ids = a, o ?? \"\";\n }\n}\nclass kt {\n constructor(t, e = 0, s = [], i) {\n this.name = t, this.precedence = e, this.args = s, this.at = i;\n }\n evaluate({ sheet: t }) {\n const e = this.name.toLowerCase(), s = t.getFunctionByName(e);\n if (s == null)\n throw new x(\"#NAME?\", `Unknown function: ${e}`);\n return new s({ args: this.args, sheet: t, at: this.at }).call();\n }\n}\nconst Fs = new ie(0), Ds = {\n \"+\": \"add\",\n \"-\": \"minus\",\n \"/\": \"divide\",\n \"*\": \"multiply\",\n \"^\": \"power\",\n \"&\": \"concat\",\n \"=\": \"eq\",\n \"<>\": \"ne\",\n \">\": \"gt\",\n \">=\": \"gte\",\n \"<\": \"lt\",\n \"<=\": \"lte\"\n}, vs = {\n \"-\": \"uminus\"\n}, Ue = /* @__PURE__ */ new Set([\" \", `\n`, \"\\r\", \"\t\", \"\\f\"]), ks = /* @__PURE__ */ new Set([...Ue, \"+\", \"-\", \"/\", \"*\", \"^\", \"&\", \"=\", \"<\", \">\", \")\", \",\", \"%\"]);\nclass I {\n constructor(t, e, s = 0, i, n = !0) {\n this.type = t, this.entity = e, this.precedence = s, this.at = i, this.closed = n;\n }\n length() {\n return this.type === \"VALUE\" && typeof this.entity == \"string\" ? this.entity.length + (this.closed ? 2 : 1) : new String(this.entity).length;\n }\n stringify() {\n if (this.type === \"VALUE\") {\n if (typeof this.entity == \"string\")\n return this.closed ? `\"${this.entity}\"` : `\"${this.entity}`;\n if (typeof this.entity == \"boolean\")\n return this.entity ? \"TRUE\" : \"FALSE\";\n if (this.raw != null)\n return this.raw;\n }\n return this.entity;\n }\n convert() {\n switch (this.type) {\n case \"VALUE\":\n return new ie(this.entity);\n case \"ID\":\n return new Jt(this.entity);\n case \"ID_RANGE\":\n return new Qt(this.entity);\n case \"REF\":\n return new Ye(this.entity);\n case \"RANGE\":\n return new Be(this.entity);\n case \"INFIX_OPERATOR\": {\n const t = Ds[this.entity];\n return new kt(t, this.precedence, void 0, this.at);\n }\n case \"PREFIX_OPERATOR\": {\n const t = vs[this.entity];\n return new kt(t, this.precedence, void 0, this.at);\n }\n case \"FUNCTION\":\n return new kt(this.entity, 0, [], this.at);\n case \"UNREFERENCED\":\n return new Os(this.entity);\n case \"INVALID_REF\":\n return new Ns(this.entity);\n }\n }\n}\nconst Ps = (r) => Ue.has(r), $s = { true: !0, false: !1 }, Ie = new I(\"OPEN\", \"(\"), Ls = new I(\"CLOSE\", \")\"), Hs = new I(\"COMMA\", \",\"), L = \"INFIX_OPERATOR\", Ys = \"PREFIX_OPERATOR\", Bs = \"POSTFIX_OPERATOR\";\nclass $t {\n constructor(t, e) {\n this.tokens = [], this.foreign = !1, this.identifiedFormula = \"\", this.dependencyIds = [], this.formula = t, this.index = 0, this.tokens = [], this.at = e == null ? void 0 : e.at;\n }\n isWhiteSpace() {\n return Ps(this.formula[this.index]);\n }\n next(t = 1) {\n this.index += t;\n }\n get(t = 0) {\n return this.formula[this.index + t];\n }\n getToken(t = 0) {\n return this.tokens[this.tokens.length + t];\n }\n getTokenIndexByCharPosition(t) {\n let e = 0, s = 0;\n for (let i = 0; i < this.tokens.length; i++) {\n const n = this.tokens[i];\n if (s = e + n.length(), e <= t && t <= s)\n return [i, t === e || t === s];\n e = s;\n }\n return [-1, !1];\n }\n getTokenPositionRange(t, e = 1) {\n let s = 0, i = 0;\n for (let n = 0; n < t; n++)\n s = i, i += this.tokens[n].length();\n return [s + e, i + e];\n }\n stringify() {\n return this.tokens.map((t) => t.stringify()).join(\"\");\n }\n identify(t) {\n const e = [], s = [];\n for (const i of this.tokens)\n switch (i.type) {\n case \"VALUE\":\n typeof i.entity == \"number\" || typeof i.entity == \"boolean\" ? e.push(String(i.entity)) : e.push(i.closed ? `\"${i.entity}\"` : `\"${i.entity}`);\n break;\n case \"ID\": {\n const n = new Jt(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"ID_RANGE\": {\n const n = new Qt(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"REF\": {\n const n = new Ye(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n case \"RANGE\": {\n const n = new Be(i.entity);\n e.push(n.identify(t)), s.push(...n.ids);\n break;\n }\n default:\n e.push(i.entity);\n break;\n }\n this.identifiedFormula = e.join(\"\"), this.dependencyIds = s;\n }\n display({ sheet: t }) {\n return this.tokens.map((e) => {\n switch (e.type) {\n case \"VALUE\":\n return typeof e.entity == \"number\" || typeof e.entity == \"boolean\" ? e.raw ?? e.entity : e.closed ? `\"${e.entity}\"` : `\"${e.entity}`;\n case \"ID\":\n return new Jt(e.entity).display({ sheet: t });\n case \"ID_RANGE\":\n return new Qt(e.entity).display({ sheet: t });\n }\n return e.entity;\n }).join(\"\");\n }\n tokenize(t = {}) {\n var e, s;\n for (; this.index <= this.formula.length; ) {\n this.skipSpaces();\n let i = this.get();\n switch (this.next(), i) {\n case void 0:\n return;\n case \"(\":\n this.tokens.push(Ie);\n continue;\n case \")\":\n this.tokens.push(Ls);\n continue;\n case \",\":\n this.tokens.push(Hs);\n continue;\n case \"+\":\n this.tokens.push(new I(L, \"+\", 3, this.at));\n continue;\n case \"-\": {\n const o = (e = this.getToken(-1)) == null ? void 0 : e.type, a = (s = this.getToken(-2)) == null ? void 0 : s.type;\n o === L || o === \"SPACE\" && a === L ? this.tokens.push(new I(Ys, \"-\", 6, this.at)) : this.tokens.push(new I(L, \"-\", 3, this.at));\n continue;\n }\n case \"/\":\n this.tokens.push(new I(L, \"/\", 4, this.at));\n continue;\n case \"*\":\n this.tokens.push(new I(L, \"*\", 4, this.at));\n continue;\n case \"^\":\n this.tokens.push(new I(L, \"^\", 5, this.at));\n continue;\n case \"&\":\n this.tokens.push(new I(L, \"&\", 4, this.at));\n continue;\n case \"=\":\n this.tokens.push(new I(L, \"=\", 1, this.at));\n continue;\n case \">\":\n if (this.get() === \"=\") {\n this.next(), this.tokens.push(new I(L, \">=\", 2, this.at));\n continue;\n }\n this.tokens.push(new I(L, \">\", 2, this.at));\n continue;\n case \"<\":\n if (this.get() === \"=\") {\n this.next(), this.tokens.push(new I(L, \"<=\", 2, this.at));\n continue;\n }\n if (this.get() === \">\") {\n this.next(), this.tokens.push(new I(L, \"<>\", 1, this.at));\n continue;\n }\n this.tokens.push(new I(L, \"<\", 2, this.at));\n continue;\n case '\"': {\n const { buf: o, closed: a } = this.getString('\"');\n this.tokens.push(new I(\"VALUE\", o, 0, this.at, a));\n continue;\n }\n case \"'\": {\n const { buf: o } = this.getString(\"'\");\n i = `'${o}'`;\n break;\n }\n case \"!\": {\n this.foreign = !0;\n break;\n }\n case \"%\": {\n this.tokens.push(new I(Bs, \"%\", 4, this.at));\n continue;\n }\n }\n let n = i;\n for (; ; ) {\n const o = this.get();\n if (o === \"(\") {\n this.tokens.push(new I(\"FUNCTION\", n, 0, this.at), Ie), this.next();\n break;\n }\n if (o == null || ks.has(o)) {\n if (n.length === 0)\n break;\n if (n.match(/^[+-]?(\\d*[.])?\\d+$/)) {\n const a = new I(\"VALUE\", parseFloat(n), 0, this.at);\n a.raw = n, this.tokens.push(a);\n } else {\n const a = $s[n.toLowerCase()];\n a != null ? this.tokens.push(new I(\"VALUE\", a, 0, this.at)) : n.startsWith(\"#\") ? n.indexOf(\"#REF!\") !== -1 ? this.tokens.push(new I(\"UNREFERENCED\", n, 0, this.at)) : n.indexOf(\":\") !== -1 ? this.tokens.push(new I(\"ID_RANGE\", Us(n, t), 0, this.at)) : this.tokens.push(new I(\"ID\", n, 0, this.at)) : n.indexOf(\":\") !== -1 ? this.tokens.push(new I(\"RANGE\", n, 0, this.at)) : !n.startsWith(\"'\") && n.indexOf(\"!\") === -1 && n.includes(\".\") && /[a-zA-Z]/.test(n) || isNaN(n[n.length - 1]) ? this.tokens.push(new I(\"INVALID_REF\", n, 0, this.at)) : this.tokens.push(new I(\"REF\", n, 0, this.at));\n }\n break;\n }\n n += o, this.next();\n }\n }\n }\n skipSpaces() {\n let t = \"\";\n for (; this.isWhiteSpace(); )\n t += this.formula[this.index++];\n t !== \"\" && this.tokens.push(new I(\"SPACE\", t, 0, this.at));\n }\n getString(t = '\"') {\n let e = \"\";\n for (; ; ) {\n const s = this.get();\n if (this.next(), s == null)\n return { buf: e, closed: !1 };\n if (s === t)\n if (t === '\"' && this.get() === t) {\n e += t, this.next();\n continue;\n } else if (t === \"'\" && this.get() === t) {\n e += s;\n continue;\n } else\n return { buf: e, closed: !0 };\n else\n e += s;\n }\n }\n}\nconst Us = (r, t) => {\n const [e, s] = r.split(\"!\"), i = s.split(\":\"), n = /* @__PURE__ */ new Set();\n return Object.keys(t).forEach((o) => {\n const a = t[o], l = new RegExp(`(\\\\$)?#${o}\\\\b(\\\\$)?`);\n for (let u = 0; u < i.length; u++) {\n if (n.has(u))\n continue;\n const h = i[u], c = h.replace(l, (f, d, p) => `${d || \"\"}#${a}${p || \"\"}`);\n c !== h && (i[u] = c, n.add(u));\n }\n }), `${e}!${i.join(\":\")}`;\n};\nclass ze {\n constructor(t) {\n this.index = 0, this.depth = 0, this.tokens = t;\n }\n build() {\n const { expr: t } = this.parse(!1);\n return t;\n }\n parse(t) {\n const e = [];\n let s;\n const i = (n = !1) => {\n if (s) {\n const o = e.pop();\n s.args.push(o);\n }\n return { hasNext: n, expr: e.shift() };\n };\n for (; this.tokens.length > this.index; ) {\n const n = this.tokens[this.index++];\n if (n.type !== \"SPACE\") {\n if (n.type === \"COMMA\") {\n if (!t)\n throw new x(\"#ERROR!\", \"Invalid comma\");\n return i(!0);\n } else if (n.type === \"VALUE\" || n.type === \"ID\" || n.type === \"ID_RANGE\" || n.type === \"REF\" || n.type === \"RANGE\" || n.type === \"UNREFERENCED\" || n.type === \"INVALID_REF\") {\n const o = n.convert();\n e.push(o);\n } else if (n.type === \"POSTFIX_OPERATOR\" && n.entity === \"%\") {\n const o = e.pop();\n if (!o)\n throw new x(\"#ERROR!\", \"Missing expression before %\");\n const a = new kt(\"divide\", 4, [o, new ie(100)]);\n e.push(a);\n } else if (n.type === \"FUNCTION\") {\n this.index++, this.depth++;\n const o = n.convert();\n for (e.push(o); ; ) {\n const { expr: a, hasNext: l } = this.parse(!0);\n if (a && o.args.push(a), !l)\n break;\n }\n } else if (n.type === \"OPEN\") {\n this.depth++;\n const { expr: o } = this.parse(!1);\n e.push(o);\n } else if (n.type === \"CLOSE\") {\n if (this.depth-- === 0)\n throw new x(\"#ERROR!\", \"Unexpected end paren\");\n return i();\n } else if (n.type === \"INFIX_OPERATOR\") {\n const o = n.convert();\n let a = e.pop();\n if (a == null)\n if (o.name === \"minus\" || o.name === \"add\")\n a = Fs;\n else\n throw new x(\"#ERROR!\", \"Missing left expression\");\n if (s == null)\n o.args.push(a), e.unshift(o);\n else if (o.precedence > s.precedence)\n o.args.push(a), s.args.push(o), e.unshift(s);\n else {\n const l = e.shift();\n o.args.push(l), s.args.push(a), e.unshift(o);\n }\n s = o;\n } else if (n.type === \"PREFIX_OPERATOR\") {\n const o = n.convert();\n s ? s.args.push(o) : e.unshift(o), s = o;\n }\n }\n }\n return i();\n }\n}\nconst nn = ze, on = (r) => (r.charAt(0) === \"'\" && (r = r.slice(1)), r.charAt(r.length - 1) === \"'\" && (r = r.slice(0, -1)), r);\nfunction zs(r) {\n let t, e = [];\n if (r.startsWith(\"'\")) {\n let s = 1, i = \"\";\n for (; s < r.length; ) {\n const o = r[s], a = r[s + 1];\n if (o === \"'\")\n if (a === \"'\")\n i += \"'\", s += 2;\n else if (a === \"!\") {\n s += 2;\n break;\n } else\n return { sheetName: void 0, addresses: [] };\n else\n i += o, s++;\n }\n t = i, e = r.slice(s).trim().split(\":\");\n } else {\n const s = r.indexOf(\"!\");\n s !== -1 ? (t = r.slice(0, s), e = r.slice(s + 1).trim().split(\":\")) : e = r.trim().split(\":\");\n }\n return { sheetName: t, addresses: e };\n}\nconst dt = (r, { sheet: t, operation: e, dependency: s }) => {\n const { sheetName: i, addresses: n } = zs(r), o = [];\n if (i && (t = t.getSheetBySheetName(i), t == null))\n return { sheet: t, sheetName: i, addresses: n, ids: o };\n if (n.length === 0)\n return { sheet: t, sheetName: i, addresses: n, ids: o };\n const a = [];\n for (let u = 0; u < n.length; u++) {\n const h = n[u], { y: c, x: f, absX: d, absY: p } = N(h);\n let m = t.getId({ y: c, x: f });\n if (m === s && (e === \"removeRows\" ? m = t.getId({ y: c - 1, x: f }) : e === \"removeCols\" && (m = t.getId({ y: c, x: f - 1 }))), m == null) {\n a.push(Le(h, !!d, !!p) || \"?\");\n continue;\n }\n o.push(m), a.push(`${d ? \"$\" : \"\"}#${m}${p ? \"$\" : \"\"}`);\n }\n let l = `#${t.id}!${a.join(\":\")}`;\n return {\n sheet: t,\n sheetName: i,\n addresses: n,\n ids: o,\n formula: l\n };\n}, Ct = (r, t) => t.length === 0 ? r : Object.fromEntries(\n Object.entries(r).filter(([e]) => !t.includes(e))\n), bt = (r, t, e = {}) => {\n r.systems[t] == null && (r.systems[t] = {});\n const s = r.systems[t];\n for (const i of Object.keys(e))\n s[i] ?? (s[i] = e[i]);\n return s;\n}, Lt = (r, t, e) => {\n r.asyncCaches || (r.asyncCaches = {}), r.asyncCaches[t] = e;\n}, tt = () => !0, Ve = (r, t, e = {}) => {\n const s = N(t);\n return r.getCell(s, e);\n}, Vs = (r, { area: t, resolution: e = \"RESOLVED\", raise: s = !1, filter: i = tt, asScalar: n = !1 } = {}) => r.__raw__._toValueMatrix({ area: t, resolution: e, raise: s, filter: i, asScalar: n }), an = (r, {\n resolution: t = \"RESOLVED\",\n raise: e = !1,\n filter: s = tt,\n addresses: i,\n area: n,\n asScalar: o = !1\n} = {}) => {\n const a = {};\n if (i) {\n for (const f of i) {\n const d = N(f), p = Ve(r, f, { resolution: t, raise: e }) ?? {};\n if (s(p)) {\n let m = p.value;\n o && (m = r.getPolicy(d).toScalar({ value: p.value, cell: p, sheet: r.__raw__, point: d })), a[f] = m;\n }\n }\n return a;\n }\n const { top: l, left: u, bottom: h, right: c } = n ?? r.area;\n for (let f = l; f <= h; f++)\n for (let d = u; d <= c; d++) {\n const p = r.getCell({ y: f, x: d }, { resolution: t, raise: e }) ?? {};\n if (s(p)) {\n let m = p.value;\n o && (m = r.getPolicy({ y: f, x: d }).toScalar({ value: p.value, cell: p, sheet: r.__raw__, point: { y: f, x: d } })), a[D({ y: f, x: d })] = m;\n }\n }\n return a;\n}, cn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = tt, rows: i, area: n, asScalar: o = !1 } = {}) => {\n const a = [], { top: l, left: u, bottom: h, right: c } = n ?? r.area, f = i ?? Array.from({ length: r.numRows }, (d, p) => l + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = u; m <= c; m++) {\n const g = r.getCell({ y: d, x: m }, { resolution: t, raise: e }) ?? {};\n if (s(g)) {\n let y = g.value;\n o && (y = r.getPolicy({ y: d, x: m }).toScalar({ value: g.value, cell: g, sheet: r.__raw__, point: { y: d, x: m } })), p[W(m)] = y;\n }\n }\n }\n return a;\n}, ln = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = tt, cols: i, area: n, asScalar: o = !1 } = {}) => {\n const a = [], { top: l, left: u, bottom: h, right: c } = n ?? r.area, f = i ? i.map((d) => typeof d == \"string\" ? _t(d) : d) : Array.from({ length: r.numCols }, (d, p) => u + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = l; m <= h; m++) {\n const g = r.getCell({ y: m, x: d }, { resolution: t, raise: e }) ?? {};\n if (s(g)) {\n let y = g.value;\n o && (y = r.getPolicy({ y: m, x: d }).toScalar({ value: g.value, cell: g, sheet: r.__raw__, point: { y: m, x: d } })), p[Et(m)] = y;\n }\n }\n }\n return a;\n}, hn = (r, { area: t, resolution: e = \"RESOLVED\", raise: s = !1, filter: i = tt, ignoreFields: n = [] } = {}) => {\n const { top: o, left: a, bottom: l, right: u } = t ?? r.area, h = se(l - o + 1, u - a + 1);\n for (let c = o; c <= l; c++)\n for (let f = a; f <= u; f++) {\n const d = r.getCell({ y: c, x: f }, { resolution: e, raise: s }) ?? {};\n if (i(d)) {\n const p = Ct(d, n);\n h[c - o][f - a] = p;\n }\n }\n return h;\n}, un = (r, {\n resolution: t = \"RESOLVED\",\n raise: e = !1,\n filter: s = tt,\n addresses: i,\n area: n,\n ignoreFields: o = []\n} = {}) => {\n const a = {};\n if (i) {\n for (const f of i) {\n const d = Ve(r, f, { resolution: t, raise: e }) ?? {};\n s(d) && (a[f] = Ct(d, o));\n }\n return a;\n }\n const { top: l, left: u, bottom: h, right: c } = n ?? r.area;\n for (let f = l; f <= h; f++)\n for (let d = u; d <= c; d++) {\n const p = r.getCell({ y: f, x: d }, { resolution: t, raise: e }) ?? {};\n s(p) && (a[D({ y: f, x: d })] = Ct(p, o));\n }\n return a;\n}, dn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = tt, rows: i, area: n, ignoreFields: o = [] } = {}) => {\n const a = [], { top: l, left: u, bottom: h, right: c } = n ?? r.area, f = i ?? Array.from({ length: r.numRows }, (d, p) => l + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = u; m <= c; m++) {\n const g = r.getCell({ y: d, x: m }, { resolution: t, raise: e }) ?? {};\n s(g) && (p[W(m)] = Ct(g, o));\n }\n }\n return a;\n}, We = (r) => `'${r.replace(/'/g, \"''\")}'`, Ws = (r) => r ? `${We(r)}!` : \"\", fn = (r, { resolution: t = \"RESOLVED\", raise: e = !1, filter: s = tt, cols: i, area: n, ignoreFields: o = [] } = {}) => {\n const a = [], { top: l, left: u, bottom: h, right: c } = n ?? r.area, f = i ? i.map((d) => typeof d == \"string\" ? _t(d) : d) : Array.from({ length: r.numCols }, (d, p) => u + p);\n for (const d of f) {\n const p = {};\n a.push(p);\n for (let m = l; m <= h; m++) {\n const g = r.getCell({ y: m, x: d }, { resolution: t, raise: e }) ?? {};\n s(g) && (p[Et(m)] = Ct(g, o));\n }\n }\n return a;\n}, Bt = 1, Ut = 2, re = 4, ne = 8, oe = 16, ae = 32, It = 64, Tt = 128, ht = 256, zt = 512, ce = 8192, Vt = 1024, le = 16384, he = 32768, ue = 65536, Wt = 131072, Xs = 0, Xe = It | Tt, St = ht | zt | ce | Vt | le | Wt, je = re | ne, Ge = oe | ae, Ze = je | Ge, qe = Bt | Ut, Ke = St | qe | Ze | Xe, Je = ue | he | Wt, js = 524288, Gs = Ke | Je, O = (r, t) => r === void 0 ? !1 : (r & t) === t, Zs = (r) => {\n const t = [];\n return O(r, Bt) && t.push(\"RemoveRow\"), O(r, Ut) && t.push(\"RemoveCol\"), O(r, re) && t.push(\"InsertRowAbove\"), O(r, ne) && t.push(\"InsertRowBelow\"), O(r, oe) && t.push(\"InsertColLeft\"), O(r, ae) && t.push(\"InsertColRight\"), O(r, It) && t.push(\"MoveFrom\"), O(r, Tt) && t.push(\"MoveTo\"), O(r, ht) && t.push(\"Write\"), O(r, zt) && t.push(\"Style\"), O(r, Vt) && t.push(\"Resize\"), O(r, le) && t.push(\"SetPolicy\"), O(r, Wt) && t.push(\"SetLabel\"), O(r, he) && t.push(\"Sort\"), O(r, ue) && t.push(\"Filter\"), t;\n}, pn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Add: Ze,\n ColumnMenu: Je,\n Copy: ce,\n Delete: qe,\n Filter: ue,\n InsertCols: Ge,\n InsertColsLeft: oe,\n InsertColsRight: ae,\n InsertRows: je,\n InsertRowsAbove: re,\n InsertRowsBelow: ne,\n Move: Xe,\n MoveFrom: It,\n MoveTo: Tt,\n NoOperation: Xs,\n ReadOnly: Ke,\n RemoveCols: Ut,\n RemoveRows: Bt,\n Resize: Vt,\n RowMenu: js,\n SetLabel: Wt,\n SetPolicy: le,\n Sort: he,\n Style: zt,\n Update: St,\n ViewOnly: Gs,\n Write: ht,\n debugOperations: Zs,\n hasOperation: O\n}, Symbol.toStringTag, { value: \"Module\" }));\nH.extend(fs);\nH.extend(ds);\nconst Qe = /* @__PURE__ */ new Set([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]), qs = /* @__PURE__ */ new Set([...Qe, \"Z\", \"z\"]), Ks = /* @__PURE__ */ new Set([\"J\", \"F\", \"M\", \"A\", \"S\", \"O\", \"N\", \"D\", ...Qe]), Js = /* @__PURE__ */ new Set([\"N\", \"B\", \"R\", \"Y\", \"N\", \"L\", \"G\", \"P\", \"T\", \"V\", \"C\", ...qs]), Qs = /* @__PURE__ */ new Set([\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"may\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n \"mon\",\n \"tue\",\n \"wed\",\n \"thu\",\n \"fri\",\n \"sat\",\n \"sun\",\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\",\n \"am\",\n \"pm\",\n \"utc\",\n \"gmt\",\n \"est\",\n \"cst\",\n \"mst\",\n \"pst\",\n \"jst\",\n \"cet\",\n \"eet\",\n \"ist\",\n \"aest\",\n \"edt\",\n \"cdt\",\n \"mdt\",\n \"pdt\",\n \"bst\",\n \"hst\",\n \"akst\",\n \"akdt\",\n \"nzst\",\n \"nzdt\",\n \"t\",\n \"z\"\n]);\nfunction ts(r) {\n const t = r[0];\n if (t == null || !Ks.has(t.toUpperCase()) || !Js.has(r[r.length - 1].toUpperCase()) || r.match(/[=*&#@!?[\\]{}\"'()|%\\\\<>~+\\r\\n]/))\n return;\n const e = r.split(/[\\s,/\\-:.]+/).filter(Boolean);\n for (const i of e)\n if (/^[a-zA-Z]+$/.test(i) && !Qs.has(i.toLowerCase()))\n return;\n let s = \"UTC\";\n try {\n s = Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch {\n }\n try {\n return H.tz(r, s).toDate();\n } catch {\n }\n}\nconst ti = { true: !0, false: !1 };\nclass de {\n constructor(t) {\n this.priority = 0, this.datetimeFormat = \"YYYY-MM-DD HH:mm:ss\", this.dateFormat = \"YYYY-MM-DD\", this.timeFormat = \"HH:mm:ss\", this.decimalPrecision = 14, this.deserializeFunctions = [], this.priority = (t == null ? void 0 : t.priority) ?? 1, this.applyMixins(t == null ? void 0 : t.mixins), this.registerDeserializeFunctions();\n }\n registerDeserializeFunctions() {\n this.deserializeFunctions = [\n ...this.deserializeFirst ? [this.deserializeFirst.bind(this)] : [],\n this.deserializeNumber.bind(this),\n this.deserializeTime.bind(this),\n this.deserializeDate.bind(this),\n this.deserializeBool.bind(this),\n this.deserializeAny.bind(this)\n ];\n }\n applyMixins(t) {\n if (t == null)\n return;\n const e = Object.getPrototypeOf(this);\n for (const s of t)\n for (const i in s)\n e !== de.prototype && Object.prototype.hasOwnProperty.call(e, i) || (this[i] = s[i]);\n }\n // --- RENDER ---\n render(t) {\n let { value: e, cell: s } = t;\n const { sheet: i, point: n } = t;\n s == null && (s = i.getCell(n, { resolution: \"EVALUATED\", raise: !0 }) ?? {}, e = s.value);\n let o;\n if (k.is(e))\n o = \"\";\n else if (e == null)\n o = this.renderNull({ ...t, value: e, cell: s });\n else\n switch (typeof e) {\n case \"object\":\n if (e instanceof Date)\n o = this.renderDate({ ...t, value: e, cell: s });\n else if (b.is(e))\n o = this.renderTime({ value: b.ensure(e), cell: s, sheet: i, point: n });\n else if (Array.isArray(e))\n o = this.renderArray({ ...t, value: e, cell: s });\n else {\n if (x.is(e))\n throw e;\n Q(e) ? o = this.renderSheet({ ...t, value: e, cell: s }) : o = this.renderObject({ ...t, value: e, cell: s });\n }\n break;\n case \"string\":\n o = this.renderString({ ...t, value: e, cell: s });\n break;\n case \"number\":\n o = this.renderNumber({ ...t, value: e, cell: s });\n break;\n case \"boolean\":\n o = this.renderBool({ ...t, value: e, cell: s });\n break;\n case \"function\":\n o = e();\n break;\n default:\n o = \"\";\n }\n return this.renderCallback ? this.renderCallback(o, { ...t, value: e, cell: s }) : o;\n }\n renderString({ value: t }) {\n return t;\n }\n renderBool({ value: t }) {\n return t ? \"TRUE\" : \"FALSE\";\n }\n renderNumber({ value: t }) {\n return isNaN(t) ? \"NaN\" : parseFloat(t.toPrecision(this.decimalPrecision));\n }\n renderDate({ value: t }) {\n return t.getHours() + t.getMinutes() + t.getSeconds() === 0 ? H(t).format(this.dateFormat) : H(t).format(this.datetimeFormat);\n }\n renderTime({ value: t }) {\n return t.stringify(this.timeFormat);\n }\n renderArray(t) {\n let { value: e, cell: s } = t;\n return e = e == null ? void 0 : e[0], Array.isArray(e) && (e = e[0]), this.render({ ...t, value: e, cell: s });\n }\n renderObject({ value: t }) {\n return JSON.stringify(t);\n }\n renderNull(t) {\n return \"\";\n }\n renderSheet({ value: t, ...e }) {\n const s = e.sheet.getId(e.point), i = t.__raw__.strip({ raise: !0, at: s });\n return this.render({ ...e, value: i });\n }\n renderRowHeaderLabel(t) {\n return null;\n }\n renderColHeaderLabel(t) {\n return null;\n }\n // --- TO SCALAR ---\n toScalar(t) {\n const { value: e, cell: s, sheet: i, point: n } = t;\n if (!k.is(e)) {\n if (e == null)\n return this.toScalarNull({ value: e, cell: s, sheet: i, point: n });\n switch (typeof e) {\n case \"string\":\n return this.toScalarString({ value: e, cell: s, sheet: i, point: n });\n case \"number\":\n return this.toScalarNumber({ value: e, cell: s, sheet: i, point: n });\n case \"boolean\":\n return this.toScalarBool({ value: e, cell: s, sheet: i, point: n });\n case \"object\":\n if (e instanceof Date)\n return this.toScalarDate({ value: e, cell: s, sheet: i, point: n });\n if (b.is(e))\n return this.toScalarTime({ value: b.ensure(e), cell: s, sheet: i, point: n });\n if (Array.isArray(e))\n return this.toScalarArray({ value: e, cell: s, sheet: i, point: n });\n if (x.is(e))\n throw e;\n return;\n default:\n return;\n }\n }\n }\n toScalarString({ value: t }) {\n return t;\n }\n toScalarNumber({ value: t }) {\n return t == null ? void 0 : t.toPrecision(this.decimalPrecision);\n }\n toScalarBool({ value: t }) {\n return t;\n }\n toScalarDate({ value: t }) {\n return t.getHours() + t.getMinutes() + t.getSeconds() === 0 ? H(t).format(this.dateFormat) : H(t).format(this.datetimeFormat);\n }\n toScalarTime({ value: t }) {\n return t.stringify(this.timeFormat);\n }\n toScalarArray({ value: t, cell: e, sheet: s, point: i }) {\n let n = t == null ? void 0 : t[0];\n return Array.isArray(n) && (n = n[0]), this.toScalar({ value: n, cell: e, sheet: s, point: i });\n }\n toScalarNull(t) {\n return null;\n }\n // --- SERIALIZE ---\n serialize({ value: t, cell: e, sheet: s, point: i }) {\n return t === void 0 && (t = e == null ? void 0 : e.value), k.is(t) ? \"\" : t instanceof Date ? this.serializeDate({ value: t, cell: e, sheet: s, point: i }) : b.is(t) ? this.serializeTime({ value: b.ensure(t), cell: e, sheet: s, point: i }) : t == null ? this.serializeNull({ cell: e, sheet: s, point: i }) : Array.isArray(t) ? this.serializeArray({ value: t, cell: e, sheet: s, point: i }) : t instanceof x ? this.serializeFormulaError({ value: t, cell: e, sheet: s, point: i }) : t instanceof Error ? this.serializeError({ value: t, cell: e, sheet: s, point: i }) : t.toString();\n }\n serializeString({ value: t }) {\n return t;\n }\n serializeBool({ value: t }) {\n return t ? \"true\" : \"false\";\n }\n serializeNumber({ value: t }) {\n return isNaN(t) ? \"NaN\" : parseFloat(t.toPrecision(this.decimalPrecision)).toString();\n }\n serializeDate({ value: t }) {\n return t.getHours() + t.getMinutes() + t.getSeconds() === 0 ? H(t).format(this.dateFormat) : H(t).format(this.datetimeFormat);\n }\n serializeTime({ value: t }) {\n return t.stringify(this.timeFormat);\n }\n serializeArray(t) {\n let { value: e } = t;\n return e = e == null ? void 0 : e[0], Array.isArray(e) && (e = e[0]), this.serialize({ ...t, value: e });\n }\n serializeNull(t) {\n return \"\";\n }\n serializeFormulaError({ value: t }) {\n return t.code;\n }\n serializeError(t) {\n return \"\";\n }\n serializeForClipboard(t) {\n const { point: e, sheet: s } = t;\n return s.getSerializedValue({ point: e }) ?? \"\";\n }\n // --- DESERIALIZE ---\n deserializeValue(t, e) {\n try {\n const s = typeof t != \"string\" ? this.deserializeRaw(t, e) : this.deserialize(t, e);\n return this.deserializeCallback ? this.deserializeCallback(s, e) : s;\n } catch (s) {\n return { ...e, value: String(s) };\n }\n }\n deserializeRaw(t, e) {\n return b.is(t) && (t = b.ensure(t)), { ...e, value: t };\n }\n deserialize(t, e) {\n if (t[0] === \"'\")\n return { ...e, value: t };\n for (let s = 0; s < this.deserializeFunctions.length; s++) {\n const i = this.deserializeFunctions[s](t, e);\n if ((i == null ? void 0 : i.value) !== void 0)\n return { ...e, ...i };\n }\n return t === \"\" ? { ...e, value: void 0 } : { ...e, value: t };\n }\n deserializeAny(t, e) {\n return t == null || t === \"\" ? { value: void 0 } : { value: t };\n }\n deserializeBool(t, e) {\n return { value: ti[t.toLowerCase()] };\n }\n deserializeNumber(t, e) {\n return t.match(/^-?[\\d.]+$/) != null && t.match(/\\.$/) == null && (t.match(/\\./g) || []).length <= 1 ? { value: parseFloat(t) } : { value: void 0 };\n }\n deserializeTime(t, e) {\n return t.length < 3 || isNaN(t[t.length - 1]) ? { value: void 0 } : { value: b.parse(t) };\n }\n deserializeDate(t, e) {\n return { value: ts(t) };\n }\n // --- SELECT ---\n getSelectFallback(t) {\n return { value: null };\n }\n getSelectOptions() {\n return [];\n }\n select(t) {\n const { next: e, sheet: s, point: i } = t, n = this.getSelectOptions();\n return n.length === 0 || n.some((a) => a.value === (e == null ? void 0 : e.value)) ? e : { ...e, ...this.getSelectFallback({ sheet: s, point: i, value: e == null ? void 0 : e.value }) };\n }\n}\nconst xt = \"default\", ei = new de({ priority: 0 }), j = (r) => r == null ? \"\" : String(r);\nfunction ft(r) {\n return typeof r == \"number\" ? \"number\" : r instanceof Date ? \"date\" : b.is(r) ? \"time\" : typeof r == \"boolean\" ? \"boolean\" : \"string\";\n}\nfunction pt(r, t) {\n switch (t) {\n case \"number\": {\n let e = r.replace(/[,_]/g, \"\"), s = 1;\n e.endsWith(\"%\") && (e = e.slice(0, -1), s = 0.01);\n const i = Number(e);\n return { ok: !isNaN(i), num: i * s };\n }\n case \"date\": {\n const e = ts(r);\n return e ? { ok: !0, num: e.getTime() } : { ok: !1, num: NaN };\n }\n case \"time\": {\n const e = b.parse(r);\n return e ? { ok: !0, num: e.toMilliseconds() } : { ok: !1, num: NaN };\n }\n case \"boolean\": {\n const e = r.toLowerCase();\n return e === \"true\" ? { ok: !0, num: 1 } : e === \"false\" ? { ok: !0, num: 0 } : { ok: !1, num: NaN };\n }\n default:\n return { ok: !1, num: NaN };\n }\n}\nfunction mt(r, t) {\n switch (t) {\n case \"number\":\n return r;\n case \"date\":\n return r.getTime();\n case \"time\":\n return b.ensure(r).toMilliseconds();\n case \"boolean\":\n return r ? 1 : 0;\n default:\n return NaN;\n }\n}\nconst si = (r, t) => {\n const e = ft(t);\n if (e === \"string\") {\n const i = j(t);\n return r.value.some((n) => i === n);\n }\n const s = mt(t, e);\n return r.value.some((i) => {\n const n = pt(i, e);\n return n.ok && s === n.num;\n });\n}, ii = (r, t) => {\n const e = ft(t);\n if (e === \"string\") {\n const i = j(t);\n return !r.value.some((n) => i === n);\n }\n const s = mt(t, e);\n return !r.value.some((i) => {\n const n = pt(i, e);\n return n.ok && s === n.num;\n });\n}, ri = (r, t) => {\n const e = ft(t);\n if (e === \"string\")\n return j(t) > r.value[0];\n const s = mt(t, e), i = pt(r.value[0], e);\n return i.ok && s > i.num;\n}, ni = (r, t) => {\n const e = ft(t);\n if (e === \"string\")\n return j(t) >= r.value[0];\n const s = mt(t, e), i = pt(r.value[0], e);\n return i.ok && s >= i.num;\n}, oi = (r, t) => {\n const e = ft(t);\n if (e === \"string\")\n return j(t) < r.value[0];\n const s = mt(t, e), i = pt(r.value[0], e);\n return i.ok && s < i.num;\n}, ai = (r, t) => {\n const e = ft(t);\n if (e === \"string\")\n return j(t) <= r.value[0];\n const s = mt(t, e), i = pt(r.value[0], e);\n return i.ok && s <= i.num;\n}, ci = (r, t) => t == null || j(t) === \"\", li = (r, t) => t != null && j(t) !== \"\", hi = (r, t) => {\n const e = j(t).toLowerCase();\n return r.value.some((s) => e.includes(s.toLowerCase()));\n}, ui = (r, t) => {\n const e = j(t).toLowerCase();\n return !r.value.some((s) => e.includes(s.toLowerCase()));\n}, di = {\n eq: si,\n ne: ii,\n gt: ri,\n gte: ni,\n lt: oi,\n lte: ai,\n blank: ci,\n nonblank: li,\n includes: hi,\n excludes: ui\n};\nfunction Te(r, t) {\n const e = di[r.method];\n return e ? e(r, t) : !0;\n}\nfunction fi(r, t) {\n const e = r.mode ?? \"or\";\n return r.conditions.length === 0 ? !0 : e === \"and\" ? r.conditions.every((s) => Te(s, t)) : r.conditions.some((s) => Te(s, t));\n}\nclass lt {\n constructor(t) {\n this.map = {}, this.dependentIds = /* @__PURE__ */ new Set(), this.sheet = t;\n }\n collectDependents(...t) {\n t.forEach((e) => {\n var s, i;\n (i = (s = this.sheet.registry.systems[e]) == null ? void 0 : s.dependents) == null || i.forEach((n) => {\n this.dependentIds.add(n);\n });\n });\n }\n /**\n * Compare two idMatrix snapshots (`before` and `after`) and populate\n * `this.map` and collect dependents for every position where the occupying\n * cell ID changed. Works for any rearrangement (sort, move, etc.).\n */\n buildMap(t, e) {\n for (let s = 0; s < t.length; s++) {\n const i = t[s], n = e[s];\n i != null && n != null && i !== n && (this.collectDependents(i, n), this.map[i] = n);\n }\n }\n resolveDependents(t) {\n this.sheet.clearAddressCaches();\n const e = {};\n return this.dependentIds.forEach((s) => {\n const i = this.sheet.registry.data[s];\n i != null && (e[s] = { ...i }, this.sheet.clearDependencies(s), i.value = this.sheet.processFormula(i.value, {\n dependency: s,\n idMap: this.map,\n operation: t\n }));\n }), e;\n }\n}\nconst Me = (r) => {\n switch (r) {\n case \"INSERT_ROWS\":\n case \"INSERT_COLS\":\n case \"REMOVE_ROWS\":\n case \"REMOVE_COLS\":\n case \"MOVE\":\n case \"SORT_ROWS\":\n return !0;\n }\n return !1;\n}, pi = () => !0;\nclass $ {\n constructor({ limits: t = {}, name: e, registry: s = ye({}), eager: i = !1 }) {\n this.__gsType = \"Sheet\", this._stripped = wt, this.area = { top: 0, left: 0, bottom: 0, right: 0 }, this.id = 0, this.name = \"\", this.eager = !1, this.prevName = \"\", this.status = 0, this.idsToBeIdentified = [], this.totalWidth = 0, this.totalHeight = 0, this.fullHeight = 0, this.defaultColWidth = jt, this.defaultRowHeight = J, this.version = 0, this.addressCaches = /* @__PURE__ */ new Map(), this.lastChangedAddresses = [], this._initCells = null, this._initMatrices = null, this._matrixBases = [], this._matrixByBase = [], this._colLetters = [], this._rowHeightOverrides = /* @__PURE__ */ new Map(), this._filteredRows = /* @__PURE__ */ new Set(), this.idMatrix = [], this.changedTime = Date.now(), this.eager = i, this._limits = {\n minRows: t.minRows ?? 1,\n maxRows: t.maxRows ?? -1,\n minCols: t.minCols ?? 1,\n maxCols: t.maxCols ?? -1\n }, this.name = e || \"\", this.prevName = this.name, this.registry = s;\n }\n get minNumRows() {\n return this._limits.minRows;\n }\n get maxNumRows() {\n return this._limits.maxRows;\n }\n get minNumCols() {\n return this._limits.minCols;\n }\n get maxNumCols() {\n return this._limits.maxCols;\n }\n static is(t) {\n return (t == null ? void 0 : t.__gsType) === \"Sheet\";\n }\n toString() {\n return `Sheet(name=${We(this.name)}, top=${this.top}, left=${this.left}, bottom=${this.bottom}, right=${this.right})`;\n }\n get headerHeight() {\n var t;\n return ((t = this.getCell({ y: 0, x: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : t.height) || Re;\n }\n setHeaderHeight(t, e = !0) {\n return this.update({\n diff: { 0: { height: t } },\n partial: !0,\n historicize: e\n });\n }\n get headerWidth() {\n var t;\n return ((t = this.getCell({ y: 0, x: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : t.width) || _e;\n }\n setHeaderWidth(t, e = !0) {\n return this.update({\n diff: { 0: { width: t } },\n partial: !0,\n historicize: e\n });\n }\n /**\n * Get the raw (mutable) cell data for a point. Unlike getCell, this returns the actual registry.data reference.\n * @internal\n */\n _pointToRawCell({ y: t, x: e }) {\n const s = this.getId({ y: t, x: e });\n if (s != null)\n return this._ensureCellPopulated(t, e, s), this.registry.data[s];\n }\n isRowFiltered(t) {\n var e;\n return !!((e = this._pointToRawCell({ y: t, x: 0 })) != null && e.filtered);\n }\n hasActiveFilters() {\n const t = this.numCols;\n for (let e = 1; e <= t; e++) {\n const s = this._pointToRawCell({ y: 0, x: e });\n if (s != null && s.filter && s.filter.conditions.length > 0)\n return !0;\n }\n return !1;\n }\n /**\n * Returns true if any data cell in this sheet currently holds a Pending value\n * (i.e. an async formula that hasn't resolved yet).\n */\n hasPendingCells() {\n for (const t of Object.keys(this.registry.data)) {\n const e = this.registry.data[t];\n if (k.is(e == null ? void 0 : e.value))\n return !0;\n }\n return !1;\n }\n /**\n * Returns a Promise that resolves when all in-flight async formula computations\n * have completed and no data cells hold Pending values.\n * If nothing is pending, resolves immediately.\n * Useful for waiting before sort/filter so that cell values are fully resolved.\n */\n waitForPending() {\n const t = this.registry.asyncPending;\n if (t.size > 0) {\n const e = Array.from(t.values()).map((s) => s.promise);\n return Promise.all(e).then(() => this.waitForPending());\n }\n return this.hasPendingCells() ? new Promise((e) => {\n const s = () => {\n if (this.registry.asyncPending.size > 0) {\n const i = Array.from(this.registry.asyncPending.values()).map((n) => n.promise);\n Promise.all(i).then(s);\n } else this.hasPendingCells() ? setTimeout(s, 50) : e();\n };\n s();\n }) : Promise.resolve();\n }\n /**\n * Returns the addresses that were changed in the most recent `_update()` call.\n * Useful inside `onChange` to know which cells were modified.\n */\n getLastChangedAddresses() {\n return this.lastChangedAddresses;\n }\n /**\n * Eagerly fire every async formula cell in this sheet, ignoring the visible\n * range.\n *\n * GridSheet is virtualized: normally only cells the UI renders get solved, so\n * an off-screen `=…` formula that calls an async function never fires. Only\n * async cells need this — sync formulas have no side effects and resolve when\n * read (e.g. by serialization), whereas an async cell must be *fired* and given\n * time to settle before its value can be read. `resolveAll()` therefore walks\n * the async-formula index ({@link Registry.asyncFormulaCells}) and solves each\n * one, which fires it through the usual machinery: it resolves, populates the\n * per-cell async cache, and triggers a re-render via `transmit()`. Sync cells\n * that depend on those results resolve normally on the next read.\n *\n * Cells already resolved (async-cache hit) or in flight (Pending) are not\n * re-fired — solving is a cache hit for them — so repeated calls converge and\n * are cheap. After awaiting {@link waitForPending}, serialization helpers such\n * as `toValueMatrix` return resolved values for off-screen cells too.\n *\n * This is the building block behind the opt-in `eager` sheet option; call it\n * directly to resolve on demand without enabling eager mode.\n *\n * @returns the number of async formula cells visited (for diagnostics/tests).\n */\n resolveAll() {\n var s;\n const t = this.registry;\n let e = 0;\n for (const i of Array.from(t.asyncFormulaCells)) {\n const n = t.data[i];\n if (n == null || typeof n.value != \"string\" || n.value.charAt(0) !== \"=\") {\n t.asyncFormulaCells.delete(i);\n continue;\n }\n if (((s = t.systems[i]) == null ? void 0 : s.sheetId) !== this.id)\n continue;\n const { y: o, x: a } = this.getPointById(i);\n if (o < 0 || a < 0) {\n t.asyncFormulaCells.delete(i);\n continue;\n }\n this.getCell({ y: o, x: a }, { resolution: \"RESOLVED\", raise: !1 }), e++;\n }\n return e;\n }\n /**\n * Capture the full cell state of all filter-related header cells as a CellsByIdType snapshot.\n * @internal\n */\n _captureFilterCellStates() {\n var i, n;\n const t = {}, e = this.numCols, s = this.numRows;\n for (let o = 1; o <= e; o++) {\n const a = this.getId({ y: 0, x: o });\n a != null && (t[a] = { filter: ((i = this.registry.data[a]) == null ? void 0 : i.filter) ?? null });\n }\n for (let o = 1; o <= s; o++) {\n const a = this.getId({ y: o, x: 0 });\n a != null && (t[a] = { filtered: ((n = this.registry.data[a]) == null ? void 0 : n.filtered) ?? !1 });\n }\n return t;\n }\n filterRows({\n x: t,\n filter: e\n } = {}) {\n const s = this._captureFilterCellStates();\n if (t == null) {\n const o = this.numCols;\n for (let a = 1; a <= o; a++) {\n const l = this._pointToRawCell({ y: 0, x: a });\n l == null || delete l.filter;\n }\n } else {\n const o = this._pointToRawCell({ y: 0, x: t });\n o && (e ? o.filter = e : delete o.filter);\n }\n this._reapplyFilters();\n const i = this._captureFilterCellStates(), n = Object.keys(s).filter(\n (o) => JSON.stringify(s[o]) !== JSON.stringify(i[o])\n );\n if (n.length > 0) {\n const o = {}, a = {};\n for (const l of n)\n o[l] = s[l], a[l] = i[l];\n this._pushHistory({\n applyed: !0,\n operation: \"UPDATE\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n diffBefore: o,\n diffAfter: a,\n partial: !0\n });\n }\n return this.refresh(!1, !0);\n }\n /** @internal */\n _reapplyFilters() {\n const t = this.numCols, e = [], s = [];\n for (let n = 1; n <= t; n++) {\n const o = this._pointToRawCell({ y: 0, x: n });\n o != null && o.filter && o.filter.conditions.length > 0 && e.push({ x: n, filter: o.filter }), s.push(D({ y: 0, x: n }));\n }\n const i = this.numRows;\n for (let n = 1; n <= i; n++) {\n const o = this._pointToRawCell({ y: n, x: 0 });\n if (!o || o.filterFixed)\n continue;\n let a = !1;\n for (const { x: u, filter: h } of e) {\n const c = this.getCell({ y: n, x: u }, { resolution: \"RESOLVED\" });\n if (!fi(h, c == null ? void 0 : c.value)) {\n a = !0;\n break;\n }\n }\n const l = !!o.filtered;\n a ? (o.filtered = !0, this._filteredRows.add(n)) : (delete o.filtered, this._filteredRows.delete(n)), l !== a && s.push(D({ y: n, x: 0 }));\n }\n this.lastChangedAddresses = s;\n }\n sortRows({ x: t, direction: e }) {\n const s = this.numRows;\n if (s <= 1)\n return this;\n const i = /* @__PURE__ */ new Set(), n = [];\n for (let c = 1; c <= s; c++) {\n const f = this._pointToRawCell({ y: c, x: 0 });\n f != null && f.sortFixed ? i.add(c) : n.push(c);\n }\n n.sort((c, f) => {\n const d = this.getCell({ y: c, x: t }, { resolution: \"RESOLVED\" }), p = this.getCell({ y: f, x: t }, { resolution: \"RESOLVED\" }), m = d == null ? void 0 : d.value, g = p == null ? void 0 : p.value;\n if (m == null && g == null)\n return 0;\n if (m == null)\n return 1;\n if (g == null)\n return -1;\n let y = 0;\n return typeof m == \"number\" && typeof g == \"number\" ? y = m - g : m instanceof Date && g instanceof Date ? y = m.getTime() - g.getTime() : y = String(m).localeCompare(String(g)), e === \"asc\" ? y : -y;\n });\n const o = [];\n for (let c = 1; c <= s; c++)\n i.has(c) || o.push(c);\n let a = !1;\n for (let c = 0; c < n.length; c++)\n if (n[c] !== o[c]) {\n a = !0;\n break;\n }\n if (!a)\n return this;\n const l = {};\n for (const c of i)\n l[c] = c;\n for (let c = 0; c < n.length; c++)\n l[n[c]] = o[c];\n this._materializeIdMatrix();\n const u = this.idMatrix.slice();\n for (const [c, f] of Object.entries(l))\n this.idMatrix[Number(f)] = u[Number(c)];\n this.addressCaches.clear();\n const h = new lt(this);\n return h.buildMap(u.flat(), this.idMatrix.flat()), h.resolveDependents(), this._pushHistory({\n applyed: !0,\n operation: \"SORT_ROWS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n sortedRowMapping: l\n }), this.refresh(!0, !0);\n }\n /** @internal */\n _sortRowMapping(t, e = !1) {\n const s = new Array(this.numRows);\n if (e)\n for (const [n, o] of Object.entries(t)) {\n const a = Number(n);\n s[a - 1] = o;\n }\n else\n for (const [n, o] of Object.entries(t)) {\n const a = Number(n);\n s[o - 1] = a;\n }\n this._materializeIdMatrix();\n const i = [];\n for (let n = 0; n < s.length; n++)\n i.push(this.idMatrix[s[n]]);\n for (let n = 0; n < s.length; n++)\n this.idMatrix[n + 1] = i[n];\n this.addressCaches.clear();\n }\n get isInitialized() {\n return this.status === 2;\n }\n get policies() {\n return this.registry.policies;\n }\n /** @internal */\n getSystem(t) {\n const e = this.getId(t);\n if (e != null)\n return this.registry.systems[e];\n }\n /** @internal */\n processFormula(t, { idMap: e, ...s }) {\n if ((typeof t == \"string\" || t instanceof String) && t.charAt(0) === \"=\") {\n const i = new $t(t.substring(1));\n return i.tokenize(e), i.identify({ ...s, sheet: this }), i.dependencyIds.forEach((n) => this.addDependency(n, s.dependency)), s.dependency != null && (this._formulaHasAsync(i) ? this.registry.asyncFormulaCells.add(s.dependency) : this.registry.asyncFormulaCells.delete(s.dependency)), \"=\" + i.identifiedFormula;\n }\n return s.dependency != null && this.registry.asyncFormulaCells.delete(s.dependency), t;\n }\n /**\n * Whether a tokenized formula calls at least one async function, decided via\n * the function class's static `isAsync` flag (no instantiation). Drives the\n * async-formula index that {@link resolveAll} walks.\n * @internal\n */\n _formulaHasAsync(t) {\n for (const e of t.tokens)\n if (e.type === \"FUNCTION\") {\n const s = this.registry.functions[String(e.entity).toLowerCase()];\n if (s != null && s.isAsync)\n return !0;\n }\n return !1;\n }\n /** @internal */\n resolveFormulas() {\n this.idsToBeIdentified.forEach((t) => {\n var s;\n const e = this.registry.data[t];\n ((s = this.registry.systems[t]) == null ? void 0 : s.sheetId) != null && e != null && (this.clearDependencies(t), e.value = this.processFormula(e == null ? void 0 : e.value, { dependency: t }));\n }), this.idsToBeIdentified = [], this.status = 2;\n }\n /** @internal */\n getSheetBySheetName(t) {\n const e = this.registry.sheetIdsByName[t];\n return this.getSheetBySheetId(e);\n }\n /** @internal */\n getSheetBySheetId(t) {\n var e, s, i;\n return (i = (s = (e = this.registry.contextsBySheetId[t]) == null ? void 0 : e.store) == null ? void 0 : s.sheetReactive) == null ? void 0 : i.current;\n }\n /** @internal */\n static _stack(...t) {\n const e = {};\n return t.forEach((s) => {\n s != null && s.style && (e.style = { ...e.style, ...s.style }), s != null && s.prevention && (e.prevention = (e.prevention || 0) | s.prevention);\n }), e;\n }\n /** @internal */\n initialize(t) {\n var o, a;\n if (this.status > 1)\n return;\n t[0] == null && (t[0] = { width: _e, height: Re });\n const e = Cs(t, t.__userKeys);\n this.area = {\n top: 1,\n left: 1,\n bottom: e.numRows,\n right: e.numCols\n }, this.idMatrix = new Array(e.numRows + 1), this._colLetters = [];\n for (let l = 0; l <= e.numCols; l++)\n this._colLetters[l] = W(l);\n const s = t.__userKeys ?? Object.keys(t);\n s.forEach((l) => {\n if (l === Ft || l === Dt || l === vt)\n return;\n const u = Ts(l), h = t[l];\n u.forEach((c) => {\n const f = t[c];\n t[c] = {\n ...f,\n ...h,\n ...$._stack(f, h)\n };\n });\n }), this._common = t == null ? void 0 : t[Ft], this._commonCol = t == null ? void 0 : t[Dt], this._commonRow = t == null ? void 0 : t[vt], this._initCells = t;\n const i = t.__matrices;\n if (i) {\n this._initMatrices = i, this._initFlattenAs = t.__flattenAs, this._matrixByBase = [];\n for (const l of Object.keys(i)) {\n const { y: u, x: h } = N(l);\n this._matrixByBase.push({ baseY: u, baseX: h, matrix: i[l] });\n }\n }\n ((o = this._commonCol) == null ? void 0 : o.width) != null && (this.defaultColWidth = this._commonCol.width), ((a = this._commonRow) == null ? void 0 : a.height) != null && (this.defaultRowHeight = this._commonRow.height), this._ensureIdRow(0);\n for (let l = 0; l <= e.numCols; l++) {\n const u = this.idMatrix[0][l];\n this._ensureCellPopulated(0, l, u);\n }\n const n = s;\n for (const l of n) {\n if (l === Ft || l === Dt || l === vt)\n continue;\n const u = N(l), { y: h, x: c } = u;\n if (h === 0 && c === 0 || h === 0 || c === 0 || h <= 0 || c <= 0 || h > e.numRows || c > e.numCols)\n continue;\n const d = this._ensureIdRow(h)[c];\n d != null && this._ensureCellPopulated(h, c, d);\n }\n this.status = 1, this.registry.sheetIdsByName[this.name] = this.id;\n }\n /** @internal */\n _incrementVersion() {\n this.version++, this.version >= Number.MAX_SAFE_INTEGER && (this.version = 1);\n }\n /** @internal */\n _xsheetDispatch(t) {\n if (t === this)\n return;\n t.refresh(!0);\n const e = this.registry.contextsBySheetId[t.id];\n if (e !== null) {\n const { dispatch: s } = e;\n requestAnimationFrame(() => {\n s(this.registry.updateSheet(t));\n });\n }\n }\n /** @internal */\n _generateId() {\n return (this.registry.cellHead++).toString();\n }\n /**\n * Lazily generate the ID row for the given y-coordinate.\n * If the row already exists, returns it immediately.\n * @internal\n */\n _ensureIdRow(t) {\n let e = this.idMatrix[t];\n if (e != null)\n return e;\n const s = this.area.right;\n e = [];\n for (let i = 0; i <= s; i++) {\n const n = this._generateId();\n e.push(n);\n const o = this._colLetters[i] || W(i);\n this.addressCaches.set(n, t === 0 ? `${o}0` : i === 0 ? `0${t}` : `${o}${t}`);\n }\n return this.idMatrix[t] = e, e;\n }\n /**\n * Ensure that registry.data and registry.systems exist for a given cell.\n * Performs lazy cell stacking using stored initialization defaults.\n * @internal\n */\n _ensureCellPopulated(t, e, s) {\n var l, u;\n if (this.registry.data[s] != null)\n return;\n const i = this._initCells, n = Date.now();\n let o;\n if (t === 0 && e > 0) {\n const h = this._colLetters[e] || W(e), c = i == null ? void 0 : i[h], { style: f, ...d } = c ?? {}, p = i == null ? void 0 : i[h + \"0\"];\n o = {\n ...this._commonCol,\n ...d,\n ...p,\n ...$._stack(this._commonCol, p)\n };\n } else if (e === 0 && t > 0) {\n const h = Et(t), c = i == null ? void 0 : i[h], { style: f, ...d } = c ?? {}, p = i == null ? void 0 : i[\"0\" + h];\n o = {\n ...this._commonRow,\n ...d,\n ...p,\n ...$._stack(this._commonRow, p)\n };\n } else if (t === 0 && e === 0) {\n const h = i == null ? void 0 : i[\"0\"];\n o = { ...h, ...$._stack(h) };\n } else {\n const h = this._colLetters[e] || W(e), c = Et(t), f = `${h}${c}`, d = i == null ? void 0 : i[c], p = i == null ? void 0 : i[h];\n let m = i == null ? void 0 : i[f];\n if ((m == null || !(\"value\" in m)) && this._matrixByBase.length > 0)\n for (const { baseY: g, baseX: y, matrix: R } of this._matrixByBase) {\n const A = t - g, w = e - y;\n if (A >= 0 && A < R.length && w >= 0 && w < R[A].length) {\n const S = R[A][w];\n let _;\n this._initFlattenAs ? _ = { [this._initFlattenAs]: S } : _ = S, m = m ? { ..._, ...m } : _;\n break;\n }\n }\n o = {\n ...this._common,\n ...d,\n ...p,\n ...m,\n ...$._stack(this._common, d, p, m)\n };\n }\n (u = (l = o == null ? void 0 : o.value) == null ? void 0 : l.startsWith) != null && u.call(l, \"=\") && ((o == null ? void 0 : o.formulaEnabled) ?? !0) && this.idsToBeIdentified.push(s), t === 0 ? o.width == null && (o.width = jt) : e === 0 ? (o.height == null && (o.height = J), o.height !== (this.defaultRowHeight || J) && this._rowHeightOverrides.set(t, o.height), o.filtered && this._filteredRows.add(t)) : (delete o.height, delete o.width, delete o.label), o = (this.policies[o.policy ?? \"\"] ?? this.defaultPolicy).deserializeValue(o.value, o) ?? {}, this.registry.systems[s] = { ...this.registry.systems[s], id: s, changedTime: n, sheetId: this.id }, this.registry.data[s] = o;\n }\n /**\n * Materialize all lazy ID rows. Call this before operations that need the full\n * idMatrix (e.g. .flat(), .map(), .slice() for sort/move/undo/redo).\n * @internal\n */\n _materializeIdMatrix() {\n for (let t = 0; t < this.idMatrix.length; t++)\n this.idMatrix[t] == null && this._ensureIdRow(t);\n }\n /**\n * Compute the absolute top offset for a given row using arithmetic + overrides.\n * Avoids iterating all rows — O(overrides) instead of O(numRows).\n * @internal\n */\n getOffsetTop(t) {\n const e = this.headerHeight, s = this.defaultRowHeight || J;\n let i = e + (t - 1) * s;\n for (const [n, o] of this._rowHeightOverrides)\n n < t && (i += o - s);\n for (const n of this._filteredRows)\n if (n < t) {\n const o = this._rowHeightOverrides.get(n) ?? s;\n i -= o;\n }\n return i;\n }\n /**\n * Re-key the row-metadata caches after rows are removed at [y, y+numRows).\n * These maps are keyed by absolute row number, so deletions must drop the removed\n * keys and shift later keys down — otherwise stale entries corrupt getOffsetTop().\n * @internal\n */\n _shiftRowMetaForRemove(t, e) {\n const s = /* @__PURE__ */ new Map();\n for (const [n, o] of this._rowHeightOverrides)\n n < t ? s.set(n, o) : n >= t + e && s.set(n - e, o);\n this._rowHeightOverrides = s;\n const i = /* @__PURE__ */ new Set();\n for (const n of this._filteredRows)\n n < t ? i.add(n) : n >= t + e && i.add(n - e);\n this._filteredRows = i;\n }\n /**\n * Re-key the row-metadata caches after numRows are inserted at y, shifting keys >= y up.\n * @internal\n */\n _shiftRowMetaForInsert(t, e) {\n const s = /* @__PURE__ */ new Map();\n for (const [n, o] of this._rowHeightOverrides)\n s.set(n < t ? n : n + e, o);\n this._rowHeightOverrides = s;\n const i = /* @__PURE__ */ new Set();\n for (const n of this._filteredRows)\n i.add(n < t ? n : n + e);\n this._filteredRows = i;\n }\n /**\n * (Re)seed row-metadata for the rows at [y, y+numRows) from their current header cells.\n * Used after rows are added (insert / undo-remove / redo-insert) so non-default heights\n * and filtered state are reflected immediately rather than only on the next lazy read.\n * @internal\n */\n _seedRowMeta(t, e) {\n const s = this.defaultRowHeight || J;\n for (let i = 0; i < e; i++) {\n const n = t + i, o = this.getId({ y: n, x: 0 }), a = o ? this.registry.data[o] : void 0;\n (a == null ? void 0 : a.height) != null && a.height !== s ? this._rowHeightOverrides.set(n, a.height) : this._rowHeightOverrides.delete(n), a != null && a.filtered ? this._filteredRows.add(n) : this._filteredRows.delete(n);\n }\n }\n getRectSize({ top: t, left: e, bottom: s, right: i }) {\n var d, p;\n const n = e || 1, o = t || 1, a = ((d = this.registry.systems[this.getId({ y: 0, x: i })]) == null ? void 0 : d.offsetLeft) ?? 0, l = ((p = this.registry.systems[this.getId({ y: 0, x: n })]) == null ? void 0 : p.offsetLeft) ?? 0, u = this.getOffsetTop(s), h = this.getOffsetTop(o), c = Math.max(0, a - l), f = Math.max(0, u - h);\n return { y: o, x: n, height: f, width: c };\n }\n /** @internal */\n setTotalSize() {\n const t = this.numCols, e = this.numRows, s = this.headerWidth, i = this.headerHeight, n = this.defaultRowHeight || J;\n let o = 0;\n for (let h = 1; h <= t; h++) {\n const c = this.getCell({ y: 0, x: h }, { resolution: \"SYSTEM\" }), f = (c == null ? void 0 : c.width) || this.defaultColWidth || jt, d = this.registry.systems[this.getId({ y: 0, x: h })];\n d != null && (d.offsetLeft = s + o), o += f;\n }\n this.totalWidth = s + o;\n let a = 0, l = 0;\n for (const [h, c] of this._rowHeightOverrides)\n h >= 1 && h <= e && (a += c - n);\n for (const h of this._filteredRows)\n if (h >= 1 && h <= e) {\n const c = this._rowHeightOverrides.get(h) ?? n;\n l += c;\n }\n const u = e * n + a;\n this.totalHeight = i + u - l, this.fullHeight = i + u;\n }\n /** @internal */\n refresh(t = !1, e = !1) {\n return this._incrementVersion(), this.lastChangedTime = this.changedTime, this.changedTime = Date.now(), this.clearSolvedCaches(), this._stripped = wt, t && this.addressCaches.clear(), e && this.setTotalSize(), this;\n }\n /** @internal */\n clone(t = !1) {\n const e = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n return e._stripped = wt, e.refresh(t);\n }\n /** @internal */\n getPointById(t, e = 0, s = 0) {\n const i = t.startsWith(\"$\");\n i && (t = t.slice(1), s = 0);\n const n = t.endsWith(\"$\");\n n && (t = t.slice(0, -1), e = 0);\n const o = this.addressCaches.get(t);\n if (o) {\n const a = N(o);\n return { y: a.y + e, x: a.x + s, absCol: i, absRow: n };\n }\n this._materializeIdMatrix();\n for (let a = 0; a < this.idMatrix.length; a++) {\n const l = this.idMatrix[a];\n for (let u = 0; u < l.length; u++) {\n const h = l[u], c = D({ y: a, x: u });\n if (this.addressCaches.set(h, c), h === t)\n return {\n y: a + e,\n x: u + s,\n absCol: i,\n absRow: n\n };\n }\n }\n return { y: -1, x: -1, absCol: i, absRow: n };\n }\n /** @internal */\n getAddressById(t, e = 0, s = 0) {\n const { y: i, x: n, absCol: o, absRow: a } = this.getPointById(t, e, s);\n return Le(D({ y: i, x: n }), o, a);\n }\n /** @internal */\n clearAddressCaches() {\n this.addressCaches.clear();\n }\n /** @internal */\n _warmAddressCaches() {\n this._materializeIdMatrix();\n for (let t = 0; t < this.idMatrix.length; t++) {\n const e = this.idMatrix[t];\n for (let s = 0; s < e.length; s++)\n this.addressCaches.set(e[s], D({ y: t, x: s }));\n }\n }\n /** @internal */\n getId(t) {\n var i;\n const { y: e, x: s } = t;\n return e >= 0 && s >= 0 && e <= this.area.bottom && s <= this.area.right ? this._ensureIdRow(e)[s] : (i = this.idMatrix[e]) == null ? void 0 : i[s];\n }\n /** @internal */\n getCell(t, { resolution: e = \"RESOLVED\", raise: s = !1 } = {}) {\n const { y: i, x: n } = t;\n if (i === -1 || n === -1)\n return;\n const o = this.getId(t);\n if (o == null)\n return;\n this._ensureCellPopulated(i, n, o);\n const a = this.registry.data[o];\n if (a == null)\n return;\n let l = a.value;\n return e !== \"SYSTEM\" && (a.formulaEnabled ?? !0) && (l = te({ value: l, sheet: this, point: t, raise: s, resolution: e, at: o })), { ...a, value: l };\n }\n /** @internal */\n get numRows() {\n const { top: t, bottom: e } = this.area;\n return 1 + e - t;\n }\n get numCols() {\n const { left: t, right: e } = this.area;\n return 1 + e - t;\n }\n get top() {\n return this.area.top;\n }\n get left() {\n return this.area.left;\n }\n get bottom() {\n return this.area.bottom;\n }\n get right() {\n return this.area.right;\n }\n /** @internal */\n _toValueMatrix({\n area: t,\n at: e,\n resolution: s = \"RESOLVED\",\n raise: i = !1,\n filter: n = pi,\n asScalar: o = !1\n } = {}) {\n const { top: a, left: l, bottom: u, right: h } = t ?? this.area, c = se(u - a + 1, h - l + 1);\n for (let f = a; f <= u; f++)\n for (let d = l; d <= h; d++) {\n const p = this.getId({ y: f, x: d });\n if (e === p)\n throw new x(\"#REF!\", \"References are circulating.\");\n const m = this.getCell({ y: f, x: d }, { resolution: s, raise: i }) ?? {};\n if (n(m)) {\n let g = m.value;\n o && (g = this.getPolicy({ y: f, x: d }).toScalar({ value: m.value, cell: m, sheet: this, point: { y: f, x: d } })), c[f - a][d - l] = g;\n }\n }\n return c;\n }\n /** @internal */\n _pushHistory(t) {\n const e = this.registry;\n if (e.histories.splice(e.historyIndex + 1, e.histories.length).forEach(this._cleanStrayed.bind(this)), e.histories.push(t), e.lastHistory = e.currentHistory = t, e.histories.length > e.historyLimit) {\n const i = e.histories.splice(0, 1)[0];\n this._cleanObsolete(i);\n } else\n e.historyIndex++;\n }\n /** @internal */\n _cleanObsolete(t) {\n (t.operation === \"REMOVE_ROWS\" || t.operation === \"REMOVE_COLS\") && t.deleted.forEach((e) => {\n e.forEach((s) => {\n this._deleteOrphanedId(s);\n });\n }), t.operation === \"MOVE\" && t.moveRelations.forEach((e) => {\n e.new != null && this._deleteOrphanedId(e.new), e.lost != null && this._deleteOrphanedId(e.lost);\n });\n }\n /** @internal */\n _cleanStrayed(t) {\n (t.operation === \"INSERT_ROWS\" || t.operation === \"INSERT_COLS\") && t.idMatrix.forEach((e) => {\n e.forEach((s) => {\n this._deleteOrphanedId(s);\n });\n });\n }\n /**\n * Remove an id from registry.data and registry.dependents entirely.\n * @internal\n */\n _deleteOrphanedId(t) {\n var s;\n const e = this.registry.systems[t];\n (s = e == null ? void 0 : e.dependencies) == null || s.forEach((i) => {\n var n, o;\n (o = (n = this.registry.systems[i]) == null ? void 0 : n.dependents) == null || o.delete(t);\n }), delete this.registry.data[t], delete this.registry.systems[t];\n }\n /** @internal */\n _copyCellLayout(t) {\n if (t == null)\n return;\n const e = {};\n return t.style != null && (e.style = t.style), t.justifyContent != null && (e.justifyContent = t.justifyContent), t.alignItems != null && (e.alignItems = t.alignItems), t.policy != null && (e.policy = t.policy), t.width != null && (e.width = t.width), t.height != null && (e.height = t.height), e;\n }\n move({\n srcSheet: t = this,\n src: e,\n dst: s,\n historicize: i = !0,\n operator: n = \"SYSTEM\",\n undoReflection: o,\n redoReflection: a\n }) {\n const l = t.__raw__, u = this._createMoveRelations(l, e, this, s), { diffBefore: h, diffAfter: c } = this._moveCells(l, this, u, !1, n);\n return this._xsheetDispatch(l), i && this._pushHistory({\n applyed: !0,\n operation: \"MOVE\",\n srcSheetId: l.id,\n dstSheetId: this.id,\n undoReflection: o,\n redoReflection: a,\n diffBefore: h,\n diffAfter: c,\n moveRelations: u\n }), this.refresh(!0);\n }\n /**\n * Build MoveRelations from src area to dst area, skipping filtered rows.\n *\n * Layout of the returned array (processed in this order by _moveCells):\n * 1. Entries where [0] is a newly-generated ID — these fill the vacated src cells (processed last in forward order)\n * 2. Entries where [0] is a src address and [1] is a dst address — the actual moves (processed first in forward order, descending)\n * Entries whose [1] is an existing ID mean the destination cell is displaced/overflowed and\n * is no longer addressable; on forward pass they are skipped; on reverse pass the ID is written back.\n */\n /** @internal */\n _createMoveRelations(t, e, s, i) {\n const { top: n, left: o, bottom: a, right: l } = e, { top: u, left: h } = i, c = s.numRows, f = s.numCols, d = [];\n for (let w = n; w <= a; w++)\n t.isRowFiltered(w) || d.push(w);\n const p = l - o + 1, m = d.length, g = [];\n {\n let w = 0, S = u;\n for (; w < m; )\n s.isRowFiltered(S) || (g.push(S), w++), S++;\n }\n const y = /* @__PURE__ */ new Set();\n for (let w = 0; w < m; w++)\n for (let S = 0; S < p; S++)\n y.add(D({ y: d[w], x: o + S }));\n const R = /* @__PURE__ */ new Set();\n for (let w = 0; w < m; w++) {\n const S = g[w];\n for (let _ = 0; _ < p; _++) {\n const M = h + _;\n S <= c && M <= f && R.add(D({ y: S, x: M }));\n }\n }\n const A = [];\n for (let w = 0; w < m; w++) {\n const S = d[w], _ = g[w];\n for (let M = 0; M < p; M++) {\n const T = o + M, C = h + M, Y = D({ y: S, x: T }), U = _ <= c && C <= f, G = U ? D({ y: _, x: C }) : void 0;\n let V;\n t === s && R.has(Y) || (V = t._generateId());\n let q;\n if (U) {\n if (!(t === s && y.has(G))) {\n const P = s.getId({ y: _, x: C });\n P != null && (q = P);\n }\n } else {\n const P = t.getId({ y: S, x: T });\n P != null && (q = P);\n }\n const K = t.getCell({ y: S, x: T }, { resolution: \"SYSTEM\" }), v = U ? s.getCell({ y: _, x: C }, { resolution: \"SYSTEM\" }) : void 0;\n A.push({\n before: K == null ? void 0 : K.policy,\n after: v == null ? void 0 : v.policy,\n src: Y,\n dst: G,\n new: V,\n lost: q\n });\n }\n }\n return A;\n }\n get defaultPolicy() {\n return this.policies[xt] ?? ei;\n }\n /**\n * Apply (or reverse) a MoveRelations list.\n *\n * Forward (reverse=false): process descending — actual ID moves happen bottom-up so\n * earlier entries don't clobber later ones; vacate entries (at front of array) are\n * applied last.\n * Reverse (reverse=true): process ascending — restores IDs in the natural order.\n *\n * On forward pass: applies policy, collects diffBefore, runs ReferencePreserver.\n * On reverse pass: only moves IDs (caller is responsible for applyDiff(diffBefore)).\n */\n /** @internal */\n _moveCells(t, e, s, i, n = \"SYSTEM\") {\n const o = {}, a = new lt(e), l = {}, u = [], h = [];\n if (i)\n for (const {\n before: m,\n after: g,\n src: y,\n dst: R,\n new: A,\n lost: w\n } of s) {\n if (R != null) {\n const S = N(R), _ = e.getId(S);\n if (_ != null) {\n const M = N(y);\n u.push({ y: M.y, x: M.x, id: _ });\n }\n }\n if (w != null)\n if (R != null) {\n const S = N(R);\n h.push({ y: S.y, x: S.x, id: w });\n } else {\n const S = N(y);\n u.push({ y: S.y, x: S.x, id: w });\n }\n }\n else\n for (const {\n before: m,\n after: g,\n src: y,\n dst: R,\n new: A,\n lost: w\n } of s) {\n const S = N(y), _ = t.getId(S), M = R != null ? N(R) : void 0, T = M != null ? e.getId(M) : void 0, C = _ != null ? t.registry.data[_] : void 0, Y = T != null ? e.registry.data[T] : void 0;\n if (!(n === \"USER\" && (O(C == null ? void 0 : C.prevention, It) || O(Y == null ? void 0 : Y.prevention, Tt)))) {\n if (A != null) {\n const U = m || xt, V = (t.policies[U] ?? t.defaultPolicy).select({\n sheet: t,\n point: S,\n next: { value: null },\n current: C,\n operation: It\n });\n l[A] = {\n ...V,\n policy: m\n }, this.registry.systems[A] = { id: A, sheetId: t.id, changedTime: Date.now() }, u.push({ y: S.y, x: S.x, id: A });\n }\n if (T != null && M != null && R != null) {\n const U = g || xt, G = m || xt, V = e.policies[U] ?? e.defaultPolicy, q = t.policies[G] ?? t.defaultPolicy, K = q.priority > V.priority, P = (K ? q : V).select({\n sheet: e,\n point: M,\n next: C,\n current: Y,\n operation: Tt\n });\n if (P && (o[_] = C ?? {}, l[_] = {\n ...C,\n ...P,\n policy: K ? m : g\n }), C != null) {\n const ct = this.registry.systems[_];\n ct && (ct.changedTime = Date.now());\n }\n h.push({ y: M.y, x: M.x, id: _ });\n }\n }\n }\n i || (t._materializeIdMatrix(), t !== e && e._materializeIdMatrix());\n const c = i ? null : t.idMatrix.flat(), f = !i && t !== e ? e.idMatrix.flat() : null;\n Object.assign(this.registry.data, l);\n for (const { y: m, x: g, id: y } of u)\n t._ensureIdRow(m)[g] = y;\n for (const { y: m, x: g, id: y } of h)\n e._ensureIdRow(m)[g] = y;\n const d = s.filter((m) => m.dst != null).map((m) => m.dst), p = s.map((m) => m.src);\n if (t === e ? e.lastChangedAddresses = [.../* @__PURE__ */ new Set([...p, ...d])] : (e.lastChangedAddresses = d, t.lastChangedAddresses = p), !i) {\n a.buildMap(c.flat(), t.idMatrix.flat()), t !== e && a.buildMap(f.flat(), e.idMatrix.flat());\n const m = a.resolveDependents(\"move\");\n Object.assign(o, m);\n }\n return { diffBefore: o, diffAfter: {} };\n }\n copy({\n srcSheet: t = this,\n src: e,\n dst: s,\n onlyValue: i = !1,\n operator: n = \"SYSTEM\",\n undoReflection: o,\n redoReflection: a\n }) {\n const l = t !== this, { top: u, left: h, bottom: c, right: f } = e, { top: d, left: p, bottom: m, right: g } = s, y = {}, R = Date.now(), A = [];\n for (let T = u; T <= c; T++)\n t.isRowFiltered(T) || A.push(T);\n const w = [];\n for (let T = d; T <= m; T++)\n T > this.numRows || this.isRowFiltered(T) || w.push(T);\n const S = A.length, _ = f - h + 1, M = g - p + 1;\n for (let T = 0; T < w.length; T++) {\n const C = w[T], Y = A[T % S];\n for (let U = 0; U <= M - 1; U++) {\n const G = p + U;\n if (G > this.numCols)\n continue;\n const V = h + U % _, q = l ? 0 : C - Y, K = l ? 0 : G - V, v = {\n ...t.getCell({ y: Y, x: V }, { resolution: \"SYSTEM\" })\n }, P = { y: C, x: G }, ct = this.getCell(P, { resolution: \"SYSTEM\" }), os = this.getPolicy(P), xe = { y: Y, x: V }, as = t.getPolicy(xe), Xt = t.getCell(xe, { resolution: \"SYSTEM\" }), cs = as.priority > os.priority;\n v.policy = cs ? Xt == null ? void 0 : Xt.policy : ct == null ? void 0 : ct.policy;\n const be = this.getId(P);\n this.clearDependencies(be);\n const ls = (v == null ? void 0 : v.formulaEnabled) ?? !0 ? this.processFormula(v == null ? void 0 : v.value, {\n dependency: be,\n slideY: q,\n slideX: K\n }) : v == null ? void 0 : v.value, hs = this.getId(P), Se = this.registry.systems[hs];\n Se != null && (Se.changedTime = R);\n const us = D(P);\n if (i) {\n const Z = this.getCell(P, { resolution: \"SYSTEM\" });\n v.style = Z == null ? void 0 : Z.style, v.justifyContent = Z == null ? void 0 : Z.justifyContent, v.alignItems = Z == null ? void 0 : Z.alignItems;\n }\n y[us] = { ...v, value: ls };\n }\n }\n return this.update({\n diff: y,\n partial: !1,\n operator: n,\n operation: ce,\n undoReflection: o,\n redoReflection: a\n });\n }\n getPolicy(t) {\n const e = this.getCell(t, { resolution: \"SYSTEM\" });\n return (e == null ? void 0 : e.policy) == null ? this.defaultPolicy : this.policies[e.policy] ?? this.defaultPolicy;\n }\n /** @internal */\n _update({\n diff: t,\n partial: e = !0,\n updateChangedTime: s = !0,\n ignoreFields: i = [\"label\"],\n operator: n = \"SYSTEM\",\n operation: o = St,\n formulaIdentify: a = !0\n }) {\n const l = {}, u = {}, h = [], c = Date.now();\n let f = !1;\n return Object.keys(t).forEach((d) => {\n var w, S, _, M, T;\n const p = N(d), m = this.getId(p), g = this.registry.data[m];\n if (n === \"USER\" && O(g == null ? void 0 : g.prevention, St))\n return;\n let y = { ...t[d] };\n if (a && \"value\" in y && (y.formulaEnabled ?? (g == null ? void 0 : g.formulaEnabled) ?? !0) && (this.clearDependencies(m), y.value = this.processFormula(y.value, { dependency: m })), i.forEach((C) => {\n y[C] = g == null ? void 0 : g[C];\n }), n === \"USER\" && O(g == null ? void 0 : g.prevention, ht) && delete y.value, n === \"USER\" && O(g == null ? void 0 : g.prevention, zt) && ((w = y == null ? void 0 : y.style) == null || delete w.justifyContent, (S = y == null ? void 0 : y.style) == null || delete S.alignItems), n === \"USER\" && O(g == null ? void 0 : g.prevention, Vt) && ((_ = y == null ? void 0 : y.style) == null || delete _.width, (M = y == null ? void 0 : y.style) == null || delete M.height), (y.width != null || y.height != null) && (f = !0), l[m] = g ?? {}, y = { ...(this.policies[(g == null ? void 0 : g.policy) || xt] ?? this.defaultPolicy).select({\n sheet: this,\n point: p,\n next: y,\n current: g,\n operation: o\n }) }, s) {\n const C = this.registry.systems[m];\n C != null && (C.changedTime = c);\n }\n if (e) {\n const C = { ...g, ...y };\n this.registry.data[m] = C, u[m] = C;\n } else\n this.registry.data[m] = y, u[m] = y;\n if (p.x === 0 && p.y >= 1) {\n const C = (T = this.registry.data[m]) == null ? void 0 : T.height, Y = this.defaultRowHeight || J;\n C != null && C !== Y ? this._rowHeightOverrides.set(p.y, C) : this._rowHeightOverrides.delete(p.y);\n }\n h.push(d);\n }), this.lastChangedAddresses = h, {\n diffBefore: l,\n diffAfter: u,\n resized: f\n };\n }\n update({\n diff: t,\n partial: e = !0,\n updateChangedTime: s = !0,\n historicize: i = !0,\n operator: n = \"SYSTEM\",\n operation: o = St,\n ignoreFields: a,\n undoReflection: l,\n redoReflection: u\n }) {\n const { diffBefore: h, diffAfter: c, resized: f } = this._update({\n diff: t,\n partial: e,\n operator: n,\n operation: o,\n updateChangedTime: s,\n ...a != null ? { ignoreFields: a } : {}\n });\n return i && this._pushHistory({\n applyed: !0,\n operation: \"UPDATE\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: l,\n redoReflection: u,\n diffBefore: h,\n diffAfter: c,\n partial: e\n }), this.refresh(!1, f);\n }\n /** @internal */\n writeRawCellMatrix({\n point: t,\n matrix: e,\n updateChangedTime: s = !0,\n historicize: i = !0,\n onlyValue: n = !1,\n operator: o = \"SYSTEM\",\n undoReflection: a,\n redoReflection: l\n }) {\n const { y: u, x: h } = t, c = {};\n let f = 0, d = u;\n for (; f < e.length && !(d > this.bottom); ) {\n if (this.isRowFiltered(d)) {\n d++;\n continue;\n }\n e[f].forEach((m, g) => {\n const y = h + g;\n if (y > this.right)\n return;\n const R = { y: d, x: y }, A = this.parse(R, m.value ?? \"\");\n if (A.style = { ...m.style, ...A.style }, n) {\n const w = this.getCell(R, { resolution: \"SYSTEM\" });\n A.style = w == null ? void 0 : w.style, A.justifyContent = w == null ? void 0 : w.justifyContent, A.alignItems = w == null ? void 0 : w.alignItems;\n }\n c[D(R)] = A;\n }), f++, d++;\n }\n return this.update({\n diff: c,\n partial: !0,\n updateChangedTime: s,\n historicize: i,\n operator: o,\n operation: ht,\n undoReflection: a,\n redoReflection: l\n });\n }\n writeMatrix(t) {\n const e = t.matrix.map((s) => s.map((i) => ({ value: i })));\n return this.writeRawCellMatrix({ ...t, matrix: e });\n }\n write(t) {\n const { point: e, value: s } = t, i = this.parse(e, s ?? \"\"), n = this.getCell(e, { resolution: \"RAW\" });\n if (((n == null ? void 0 : n.value) ?? null) === i.value)\n return this;\n const o = { [D(e)]: i };\n return this.update({\n ...t,\n diff: o,\n partial: !0,\n operation: ht\n });\n }\n insertRows({\n y: t,\n numRows: e,\n baseY: s,\n diff: i,\n partial: n,\n updateChangedTime: o,\n operator: a = \"SYSTEM\",\n undoReflection: l,\n redoReflection: u\n }) {\n if (this.maxNumRows !== -1 && this.numRows + e > this.maxNumRows)\n return console.error(`Rows are limited to ${this.maxNumRows}.`), this;\n const h = this.numCols, c = [], f = Date.now();\n for (let d = 0; d < e; d++) {\n const p = [];\n for (let m = 0; m <= h; m++) {\n const g = this._generateId();\n p.push(g);\n const y = this.getCell({ y: s, x: m }, { resolution: \"SYSTEM\" }), R = this._copyCellLayout(y);\n this.registry.data[g] = { ...R }, this.registry.systems[g] = { id: g, sheetId: this.id, changedTime: f };\n }\n c.push(p);\n }\n if (this.idMatrix.splice(t, 0, ...c), this.area.bottom += e, this._shiftRowMetaForInsert(t, e), this._seedRowMeta(t, e), this._pushHistory({\n applyed: !0,\n operation: \"INSERT_ROWS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: l,\n redoReflection: u,\n y: t,\n numRows: e,\n idMatrix: c\n }), i && Object.assign(this.registry.lastHistory, this._update({ diff: i, partial: n, updateChangedTime: o, operator: a }), {\n partial: n\n }), this.registry.onInsertRows) {\n const d = this.clone();\n d.area = {\n top: t,\n bottom: t + e - 1,\n left: this.area.left,\n right: this.area.right\n }, d.addressCaches = /* @__PURE__ */ new Map(), this.registry.onInsertRows({ sheet: d, y: t, numRows: e });\n }\n return this.refresh(!0, !0);\n }\n removeRows({\n y: t,\n numRows: e,\n operator: s = \"SYSTEM\",\n undoReflection: i,\n redoReflection: n\n }) {\n if (this.minNumRows !== -1 && this.numRows - e < this.minNumRows)\n return console.error(`At least ${this.minNumRows} row(s) are required.`), this;\n const o = new lt(this), a = [];\n this._materializeIdMatrix();\n const l = this.idMatrix.map((c) => [...c]);\n for (let c = t; c < t + e; c++) {\n const f = this.getCell({ y: c, x: 0 }, { resolution: \"SYSTEM\" });\n if (s === \"USER\" && O(f == null ? void 0 : f.prevention, Bt))\n return console.warn(`Cannot delete row ${c}.`), this;\n for (let d = 1; d <= this.numCols; d++) {\n const p = this.getId({ y: c, x: d });\n p != null && (o.collectDependents(p), o.map[p] = this.getId({ y: c + e, x: d }));\n }\n a.unshift(c);\n }\n const u = [];\n a.forEach((c) => {\n const f = this.idMatrix.splice(c, 1);\n u.unshift(f[0]);\n }), this.area.bottom -= a.length, this._shiftRowMetaForRemove(t, e);\n const h = o.resolveDependents(\"removeRows\");\n if (this._pushHistory({\n applyed: !0,\n operation: \"REMOVE_ROWS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: i,\n redoReflection: n,\n ys: a.reverse(),\n diffBefore: h,\n deleted: u\n }), this.registry.onRemoveRows) {\n const c = this.clone();\n c.idMatrix = l, c.area = {\n top: t,\n bottom: t + e - 1,\n left: this.area.left,\n right: this.area.right\n }, c.addressCaches = /* @__PURE__ */ new Map(), this.registry.onRemoveRows({ sheet: c, ys: a.reverse() });\n }\n return this.refresh(!0, !0);\n }\n insertCols({\n x: t,\n numCols: e,\n baseX: s,\n diff: i,\n partial: n,\n updateChangedTime: o,\n operator: a = \"SYSTEM\",\n undoReflection: l,\n redoReflection: u\n }) {\n if (this.maxNumCols !== -1 && this.numCols + e > this.maxNumCols)\n return console.error(`Columns are limited to ${this.maxNumCols}.`), this;\n const h = this.numRows, c = [], f = Date.now();\n for (let d = 0; d <= h; d++) {\n const p = [];\n for (let m = 0; m < e; m++) {\n const g = this._generateId();\n p.push(g);\n const y = this.getCell({ y: d, x: s }, { resolution: \"SYSTEM\" }), R = this._copyCellLayout(y);\n this._ensureIdRow(d).splice(t, 0, g), this.registry.data[g] = { ...R }, this.registry.systems[g] = { id: g, sheetId: this.id, changedTime: f };\n }\n c.push(p);\n }\n if (this.area.right += e, this._pushHistory({\n applyed: !0,\n operation: \"INSERT_COLS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: l,\n redoReflection: u,\n x: t,\n numCols: e,\n idMatrix: c\n }), i && Object.assign(this.registry.lastHistory, this._update({ diff: i, partial: n, updateChangedTime: o, operator: a }), {\n partial: n\n }), this.registry.onInsertCols) {\n const d = this.clone();\n d.area = {\n top: this.area.top,\n bottom: this.area.bottom,\n left: t,\n right: t + e - 1\n }, d.addressCaches = /* @__PURE__ */ new Map(), this.registry.onInsertCols({ sheet: d, x: t, numCols: e });\n }\n return this.refresh(!0, !0);\n }\n removeCols({\n x: t,\n numCols: e,\n operator: s = \"SYSTEM\",\n undoReflection: i,\n redoReflection: n\n }) {\n if (this.minNumCols !== -1 && this.numCols - e < this.minNumCols)\n return console.error(`At least ${this.minNumCols} column(s) are required.`), this;\n const o = new lt(this), a = [];\n this._materializeIdMatrix();\n const l = this.idMatrix.map((c) => [...c]);\n for (let c = t; c < t + e; c++) {\n const f = this.getCell({ y: 0, x: c }, { resolution: \"SYSTEM\" });\n if (s === \"USER\" && O(f == null ? void 0 : f.prevention, Ut)) {\n console.warn(`Cannot delete col ${c}.`);\n continue;\n }\n for (let d = 1; d <= this.numRows; d++) {\n const p = this.getId({ y: d, x: c });\n p != null && (o.collectDependents(p), o.map[p] = this.getId({ y: d, x: c + e }));\n }\n a.unshift(c);\n }\n const u = [];\n this.idMatrix.forEach((c) => {\n const f = [];\n u.push(f), a.forEach((d) => {\n f.unshift(...c.splice(d, 1));\n });\n }), this.area.right -= a.length;\n const h = o.resolveDependents(\"removeCols\");\n if (this._pushHistory({\n applyed: !0,\n operation: \"REMOVE_COLS\",\n srcSheetId: this.id,\n dstSheetId: this.id,\n undoReflection: i,\n redoReflection: n,\n xs: a.reverse(),\n diffBefore: h,\n deleted: u\n }), this.registry.onRemoveCols) {\n const c = this.clone();\n c.idMatrix = l, c.area = {\n top: this.area.top,\n bottom: this.area.bottom,\n left: t,\n right: t + e - 1\n }, c.addressCaches = /* @__PURE__ */ new Map(), this.registry.onRemoveCols({ sheet: c, xs: a.reverse() });\n }\n return this.refresh(!0, !0);\n }\n /** @internal */\n histories() {\n return [...this.registry.histories];\n }\n /** @internal */\n historyIndex() {\n return this.registry.historyIndex;\n }\n /** @internal */\n historySize() {\n return this.registry.histories.length;\n }\n /** @internal */\n getHistoryLimit() {\n return this.registry.historyLimit;\n }\n /** @internal */\n parse(t, e) {\n const s = this.getCell(t, { resolution: \"SYSTEM\" }) ?? {};\n return this.getPolicy(t).deserializeValue(e, s);\n }\n /** @internal */\n render(t) {\n const { point: e, apply: s } = t;\n return this.getId(e), this.getPolicy(e).render({ sheet: this, point: e, apply: s, value: void 0 });\n }\n getSerializedValue({\n point: t,\n cell: e,\n resolution: s = \"RESOLVED\"\n }) {\n if (e == null) {\n const o = this.getId(t);\n e = o != null ? this.registry.data[o] : void 0;\n }\n if (e == null)\n return \"\";\n const i = this.getPolicy(t), n = e.value;\n if (typeof n == \"string\" && n[0] === \"=\") {\n if (s === \"SYSTEM\")\n return n;\n if (s === \"RAW\" || (e == null ? void 0 : e.formulaEnabled) === !1) {\n const o = new $t(n.substring(1));\n return o.tokenize(), \"=\" + o.display({ sheet: this });\n }\n try {\n const o = this.getId(t), a = te({ value: n, sheet: this, point: t, raise: !0, resolution: s, at: o }), l = nt({ value: a, raise: !1 });\n return i.serialize({ value: l, cell: e, sheet: this, point: t });\n } catch (o) {\n return i.serialize({ value: o, cell: e, sheet: this, point: t });\n }\n }\n return i.serialize({ value: n, cell: e, sheet: this, point: t });\n }\n /** @internal */\n trim(t) {\n const e = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n return e.area = t, e._stripped = wt, e;\n }\n /**\n * Solve all formulas in this sheet and return a 2D matrix of resolved values.\n * @internal\n */\n solve({ raise: t = !1, at: e }) {\n return Oe({ sheet: this, raise: t, at: e });\n }\n /**\n * Collapse this sheet to a scalar (top-left cell value).\n * @internal\n */\n strip({ raise: t = !1, at: e }) {\n var i;\n if (!wt.is(this._stripped))\n return this._stripped;\n let s = this;\n for (; s instanceof $; )\n s = (i = Oe({ sheet: s, raise: t, at: e })[0]) == null ? void 0 : i[0];\n return this._stripped = s, this._stripped;\n }\n /** @internal */\n _applyDiff(t = {}, e = !0) {\n const s = Object.keys(t);\n s.forEach((n) => {\n const o = t[n] ?? {};\n let a;\n e ? (a = { ...this.registry.data[n] }, Object.keys(o).forEach((h) => {\n o[h] === void 0 ? delete a[h] : a[h] = o[h];\n })) : a = { ...o };\n const l = this.registry.systems[n];\n l != null && (l.changedTime = Date.now()), this.registry.data[n] = a, this.clearDependencies(n), this.processFormula(a.value, { dependency: n });\n const u = this.addressCaches.get(n);\n if (u) {\n const h = N(u);\n if (h.x === 0 && h.y > 0) {\n const c = this.defaultRowHeight || J, f = a.height ?? c;\n f !== c ? this._rowHeightOverrides.set(h.y, f) : this._rowHeightOverrides.delete(h.y), a.filtered ? this._filteredRows.add(h.y) : this._filteredRows.delete(h.y);\n }\n }\n }), this._warmAddressCaches();\n const i = [];\n for (const n of s) {\n const o = this.getAddressById(n);\n o && i.push(o);\n }\n this.lastChangedAddresses = i;\n }\n undo() {\n if (this.registry.historyIndex < 0)\n return { history: null, newSheet: this.__raw__ };\n const t = this.registry.histories[this.registry.historyIndex--];\n t.applyed = !1, this.registry.currentHistory = this.registry.histories[this.registry.historyIndex];\n const e = this.getSheetBySheetId(t.srcSheetId), s = this.getSheetBySheetId(t.dstSheetId);\n if (!s)\n return { history: null, newSheet: this.__raw__ };\n switch (t.operation) {\n case \"UPDATE\":\n s._applyDiff(t.diffBefore, t.partial ?? !1);\n break;\n case \"INSERT_ROWS\": {\n t.diffBefore && s._applyDiff(t.diffBefore, !1);\n const { rows: i } = Nt({ matrix: t.idMatrix });\n s._materializeIdMatrix(), s.idMatrix.splice(t.y, i), s.area.bottom -= i, s._shiftRowMetaForRemove(t.y, i);\n break;\n }\n case \"INSERT_COLS\": {\n t.diffBefore && s._applyDiff(t.diffBefore, !1);\n const { cols: i } = Nt({ matrix: t.idMatrix });\n s._materializeIdMatrix(), s.idMatrix.forEach((n) => {\n n.splice(t.x, i);\n }), s.area.right -= i;\n break;\n }\n case \"REMOVE_ROWS\": {\n const { ys: i, deleted: n } = t;\n s._materializeIdMatrix(), i.forEach((a, l) => {\n s.idMatrix.splice(a, 0, n[l]);\n }), s.area.bottom += i.length;\n const o = Math.min(...i);\n s._shiftRowMetaForInsert(o, i.length), s._seedRowMeta(o, i.length), this._applyDiff(t.diffBefore, !1);\n break;\n }\n case \"REMOVE_COLS\": {\n const { xs: i, deleted: n } = t;\n s._materializeIdMatrix(), s.idMatrix.forEach((o, a) => {\n for (let l = 0; l < i.length; l++)\n o.splice(i[l], 0, n[a][l]);\n }), s.area.right += i.length, this._applyDiff(t.diffBefore, !1);\n break;\n }\n case \"MOVE\": {\n e && this._moveCells(e, s, t.moveRelations, !0);\n const i = s.lastChangedAddresses;\n s._applyDiff(t.diffBefore, !1), s.lastChangedAddresses = [.../* @__PURE__ */ new Set([...i, ...s.lastChangedAddresses])];\n break;\n }\n case \"SORT_ROWS\": {\n s._materializeIdMatrix();\n const i = s.idMatrix.flat();\n s._sortRowMapping(t.sortedRowMapping, !0);\n const n = new lt(s);\n n.buildMap(i, s.idMatrix.flat()), n.resolveDependents(), s._reapplyFilters();\n break;\n }\n }\n return this.refresh(Me(t.operation), !0), s !== this && (s.addressCaches.clear(), s.setTotalSize()), t.operation === \"MOVE\" && e && e !== s && this._xsheetDispatch(e), {\n history: t,\n callback: ({ sheetReactive: i }) => {\n var n, o;\n (o = i.current) == null || o.registry.transmit((n = t.undoReflection) == null ? void 0 : n.transmit);\n }\n };\n }\n redo() {\n if (this.registry.historyIndex + 1 >= this.registry.histories.length)\n return { history: null, newSheet: this.__raw__ };\n const t = this.registry.histories[++this.registry.historyIndex];\n t.applyed = !0, this.registry.currentHistory = t;\n const e = this.getSheetBySheetId(t.srcSheetId), s = this.getSheetBySheetId(t.dstSheetId);\n if (!s)\n return { history: null, newSheet: this.__raw__ };\n switch (t.operation) {\n case \"UPDATE\":\n s._applyDiff(t.diffAfter, t.partial ?? !1);\n break;\n case \"INSERT_ROWS\": {\n t.diffAfter && s._applyDiff(t.diffAfter, !1);\n const { rows: i } = Nt({ matrix: t.idMatrix });\n s._materializeIdMatrix(), s.idMatrix.splice(t.y, 0, ...t.idMatrix), s.area.bottom += i, s._shiftRowMetaForInsert(t.y, i), s._seedRowMeta(t.y, i);\n break;\n }\n case \"INSERT_COLS\": {\n t.diffAfter && s._applyDiff(t.diffAfter, !1);\n const { cols: i } = Nt({ matrix: t.idMatrix });\n s._materializeIdMatrix(), s.idMatrix.map((n, o) => {\n n.splice(t.x, 0, ...t.idMatrix[o]);\n }), s.area.right += i;\n break;\n }\n case \"REMOVE_ROWS\": {\n s.removeRows({\n y: t.ys[0],\n numRows: t.ys.length,\n operator: \"SYSTEM\",\n undoReflection: t.undoReflection,\n redoReflection: t.redoReflection\n });\n break;\n }\n case \"REMOVE_COLS\": {\n s.removeCols({\n x: t.xs[0],\n numCols: t.xs.length,\n operator: \"SYSTEM\",\n undoReflection: t.undoReflection,\n redoReflection: t.redoReflection\n });\n break;\n }\n case \"MOVE\": {\n e && this._moveCells(e, s, t.moveRelations, !1);\n break;\n }\n case \"SORT_ROWS\": {\n s._materializeIdMatrix();\n const i = s.idMatrix.flat();\n s._sortRowMapping(t.sortedRowMapping, !1);\n const n = new lt(s);\n n.buildMap(i, s.idMatrix.flat()), n.resolveDependents(), s._reapplyFilters();\n break;\n }\n }\n return this.refresh(Me(t.operation), !0), s !== this && (s.addressCaches.clear(), s.setTotalSize()), t.operation === \"MOVE\" && e && e !== s && this._xsheetDispatch(e), {\n history: t,\n callback: ({ sheetReactive: i }) => {\n var n, o;\n (o = i.current) == null || o.registry.transmit((n = t.redoReflection) == null ? void 0 : n.transmit);\n }\n };\n }\n /** @internal */\n getFunctionByName(t) {\n return this.registry.functions[t];\n }\n /** @internal */\n clearDependencies(t) {\n var s;\n const e = this.registry.systems[t];\n (s = e == null ? void 0 : e.dependencies) == null || s.forEach((i) => {\n var n, o;\n (o = (n = this.registry.systems[i]) == null ? void 0 : n.dependents) == null || o.delete(t);\n }), e != null && (e.dependencies = /* @__PURE__ */ new Set());\n }\n /** @internal */\n addDependency(t, e) {\n const s = bt(this.registry, t);\n s.dependents == null && (s.dependents = /* @__PURE__ */ new Set()), s.dependents.add(e);\n const i = bt(this.registry, e);\n i.dependencies == null && (i.dependencies = /* @__PURE__ */ new Set()), i.dependencies.add(t);\n }\n /** @internal */\n getSolvedCache(t) {\n const e = this.getId(t);\n return [this.registry.solvedCaches.has(e), this.registry.solvedCaches.get(e)];\n }\n /** @internal */\n setSolvingCache(t) {\n const e = this.getId(t);\n this.registry.solvedCaches.set(e, At), bt(this.registry, e, { tmpAsyncCaches: {} });\n }\n /** @internal */\n finishSolvedCache(t, e) {\n if (At.is(e))\n return;\n const s = this.getId(t);\n this.registry.solvedCaches.set(s, e);\n const i = this.registry.data[s];\n if (i == null)\n return;\n const n = this.registry.systems[s], o = n == null ? void 0 : n.tmpAsyncCaches;\n o != null && (Object.keys(o).length > 0 ? i.asyncCaches = o : delete i.asyncCaches, delete n.tmpAsyncCaches);\n }\n /** @internal */\n clearSolvedCaches() {\n this.registry.solvedCaches.clear();\n for (const t of this.registry.lastSpilledTargetIds) {\n const e = this.registry.systems[t];\n (e == null ? void 0 : e.spilledFrom) != null && delete e.spilledFrom;\n }\n this.registry.lastSpilledTargetIds.clear();\n }\n /**\n * Spill a 2D matrix of values starting from the origin cell.\n * The origin cell receives matrix[0][0] and adjacent cells receive spill values in solvedCaches.\n * For a 1×1 matrix, no spill occurs — the single value is cached directly.\n * Throws FormulaError('#REF!') if the spill range is obstructed.\n *\n * @param origin The anchor cell that produced the spill.\n * @param matrix The 2D array of resolved scalar values.\n * @returns The top-left value (matrix[0][0]).\n * @internal\n */\n spill(t, e) {\n var a;\n const s = e.length, i = s > 0 ? e[0].length : 0;\n if (s <= 1 && i <= 1)\n return (a = e[0]) == null ? void 0 : a[0];\n for (let l = 0; l < s; l++)\n for (let u = 0; u < i; u++) {\n if (l === 0 && u === 0)\n continue;\n const h = { y: t.y + l, x: t.x + u }, c = this.getId(h), f = D(h);\n if (c == null) {\n console.warn(`Spill target ${f} is out of bounds.`);\n continue;\n }\n const d = this.registry.data[c];\n if ((d == null ? void 0 : d.value) != null && d.value !== \"\")\n throw new x(\n \"#REF!\",\n `Array result was not expanded because it would overwrite data in ${f}.`\n );\n if (this.registry.solvedCaches.has(c))\n throw new x(\n \"#REF!\",\n `Array result was not expanded because ${f} is already occupied by another formula.`\n );\n }\n const n = this.getId(t), o = [];\n for (let l = 0; l < s; l++)\n for (let u = 0; u < i; u++) {\n const h = { y: t.y + l, x: t.x + u }, c = this.getId(h);\n if (c != null && (this.finishSolvedCache(h, e[l][u]), (l !== 0 || u !== 0) && (o.push(D(h)), n != null))) {\n const f = bt(this.registry, c, {});\n f.spilledFrom = D(t), this.registry.lastSpilledTargetIds.add(c);\n }\n }\n return e[0][0];\n }\n /** @internal */\n sheetPrefix(t = !1) {\n return t ? \"\" : Ws(this.name);\n }\n /** @internal */\n rangeToArea(t) {\n const e = t.split(\":\");\n let [s, i] = e;\n s.match(/[a-zA-Z]$/) && (s += \"1\"), s.match(/^[1-9]/) && (s = `A${s}`), i != null && i.match(/[a-zA-Z]$/) && (i += this.bottom), i != null && i.match(/^[1-9]/) && (i = `${W(this.right)}${i}`);\n const { y: n, x: o } = N(s), { y: a, x: l } = N(i || s);\n return {\n top: Math.abs(n),\n left: Math.abs(o),\n bottom: Math.abs(a),\n right: Math.abs(l)\n };\n }\n get __raw__() {\n return this;\n }\n get shape() {\n return Kt(this.area);\n }\n get hasSingleCell() {\n const t = this.shape;\n return t.rows === 1 && t.cols === 1;\n }\n get currentVersion() {\n return this.version;\n }\n}\nconst te = ({ value: r, sheet: t, point: e, raise: s = !0, resolution: i = \"RESOLVED\", at: n }) => {\n var u;\n const [o, a] = t.getSolvedCache(e);\n if (o && r == null && !At.is(a))\n return a;\n if (typeof r != \"string\" || i === \"SYSTEM\")\n return r;\n if (r.charAt(0) === \"'\")\n return i === \"RAW\" ? r : r.substring(1);\n if (r.charAt(0) !== \"=\")\n return r;\n if (i === \"RAW\") {\n const h = new $t(r.substring(1), { at: n });\n return h.tokenize(), \"=\" + h.display({ sheet: t });\n }\n let l = r;\n if (o && !At.is(a))\n l = a;\n else\n try {\n const h = new $t(r.substring(1), { at: n });\n h.tokenize();\n const f = new ze(h.tokens).build();\n l = (u = f == null ? void 0 : f.evaluate) == null ? void 0 : u.call(f, { sheet: t });\n } catch (h) {\n if (s)\n throw t.finishSolvedCache(e, h), h;\n return h;\n }\n return B.is(l) ? l = t.spill(e, l.matrix) : t.finishSolvedCache(e, l), i === \"RESOLVED\" && l instanceof $ && (l = nt({ value: l, raise: s, at: n })), k.is(l) && t.finishSolvedCache(e, l), l;\n}, Oe = ({ sheet: r, raise: t = !0, at: e }) => {\n const s = r.area;\n return r._toValueMatrix({ area: s, at: e, resolution: \"SYSTEM\" }).map((n, o) => {\n const a = s.top + o;\n return n.map((l, u) => {\n const h = s.left + u, c = { y: a, x: h }, [f, d] = r.getSolvedCache(c);\n try {\n if (At.is(d))\n throw new x(\"#REF!\", \"References are circulating.\", new Error(l));\n if (k.is(d))\n return d;\n if (x.is(d))\n throw d;\n if (d != null)\n return d;\n r.setSolvingCache(c);\n const p = te({ value: l, sheet: r, point: c, raise: t, at: e, resolution: \"RESOLVED\" });\n return r.finishSolvedCache(c, p), p;\n } catch (p) {\n if (r.finishSolvedCache(c, p), t)\n throw p;\n return p;\n }\n });\n });\n}, nt = ({ value: r, at: t, raise: e = !0 }) => r instanceof $ ? r.strip({ raise: e, at: t }) : r, ee = new ut(\"asyncCacheMiss\"), mi = (r) => r.some((t) => k.is(t)), es = (r) => (r == null ? void 0 : r.__gsType) === \"Sheet\", Rt = (r, t) => {\n for (const e of r)\n if (k.is(e) || Array.isArray(e) && Rt(e, t) || B.is(e) && Rt(e.matrix, t) || es(e) && Rt(e._toValueMatrix({ at: t }), t))\n return !0;\n return !1;\n}, gi = (r, t = 0) => {\n let e = 3735928559 ^ t, s = 1103547991 ^ t;\n for (let i = 0; i < r.length; i++) {\n const n = r.charCodeAt(i);\n e = Math.imul(e ^ n, 2654435761), s = Math.imul(s ^ n, 1597334677);\n }\n return e = Math.imul(e ^ e >>> 16, 2246822507), e ^= Math.imul(s ^ s >>> 13, 3266489909), s = Math.imul(s ^ s >>> 16, 2246822507), s ^= Math.imul(e ^ e >>> 13, 3266489909), 4294967296 * (2097151 & s) + (e >>> 0);\n}, yi = (r, t, e = 1) => {\n const s = JSON.stringify(t, (n, o) => es(o) ? Vs(o) : k.is(o) ? null : o), i = Array.from({ length: e }, (n, o) => gi(s, o).toString(36));\n return `${r}:${s.length}:${i.join(\"-\")}`;\n}, wi = (r, t, e, s = !1) => {\n var l;\n const i = r.registry, n = i.data[t];\n if (n == null)\n return ee;\n const o = bt(i, t, { tmpAsyncCaches: {} });\n if (n.asyncCaches != null) {\n const u = n.asyncCaches[e];\n if (u != null && (u.expireTime == null || Date.now() < u.expireTime))\n return o.tmpAsyncCaches[e] = u, u.value;\n }\n const a = `${t}:${e}`;\n if (i.asyncPending.has(a))\n return i.asyncPending.get(a);\n if (s && ((l = i.asyncInflight) != null && l.has(e))) {\n const u = i.asyncInflight.get(e);\n return i.asyncPending.set(a, u.pending), u.pending.promise.then((h) => {\n const c = i.data[t];\n c != null && Lt(c, e, { value: h, expireTime: u.expireTime });\n }).catch((h) => {\n x.is(h) || (h = new x(\"#ASYNC!\", (h == null ? void 0 : h.message) ?? String(h), h instanceof Error ? h : void 0));\n const c = i.data[t];\n c != null && Lt(c, e, { value: h, expireTime: u.expireTime });\n }).finally(() => {\n i.asyncPending.delete(a);\n }), u.pending;\n }\n return ee;\n}, xi = (r, t, e, s, i, n = !1) => {\n const o = t.registry, a = i != null ? Date.now() + i : void 0, l = `${e}:${s}`, u = new k(r);\n return o.asyncPending.set(l, u), n && (o.asyncInflight || (o.asyncInflight = /* @__PURE__ */ new Map()), o.asyncInflight.set(s, { pending: u, expireTime: a })), r.then((h) => {\n const c = o.data[e];\n c != null && Lt(c, s, { value: h, expireTime: a });\n }).catch((h) => {\n x.is(h) || (h = new x(\"#ASYNC!\", (h == null ? void 0 : h.message) ?? String(h), h instanceof Error ? h : void 0));\n const c = o.data[e];\n c != null && Lt(c, s, { value: h, expireTime: a });\n }).finally(() => {\n o.asyncPending.delete(l), n && o.asyncInflight && o.asyncInflight.delete(s), o.solvedCaches.clear(), o.transmit();\n }), u;\n}, Gt = () => new k(Promise.resolve()), fe = (r, t) => {\n if (typeof r == \"string\" || typeof t == \"string\")\n return X(r) > X(t);\n try {\n return F(r) > F(t);\n } catch {\n return !1;\n }\n}, pe = (r, t) => {\n if (typeof r == \"string\" || typeof t == \"string\")\n return X(r) >= X(t);\n try {\n return F(r) >= F(t);\n } catch {\n return !1;\n }\n}, ss = (r, t) => !pe(r, t), is = (r, t) => !fe(r, t), me = (r, t) => X(r).toLowerCase() === X(t).toLowerCase(), bi = (r, t) => !me(r, t), ge = (r) => typeof r != \"string\" || !r.endsWith(\"%\") ? !1 : !isNaN(parseFloat(r.slice(0, -1))), Mt = (r) => typeof r == \"number\" || ge(r) ? !0 : typeof r == \"string\" ? !isNaN(parseFloat(r)) && isFinite(Number(r)) : !1, F = (r, t) => {\n const { alternative: e, ignore: s } = t || {};\n if (k.is(r))\n return r;\n if (typeof r > \"u\" && typeof e < \"u\")\n return e;\n if (!r)\n return 0;\n if (r instanceof $) {\n const n = nt({ value: r });\n return F(n, { alternative: e });\n }\n if (r instanceof Date)\n return r.getTime();\n if (b.is(r))\n return r.days;\n if (ge(r))\n return parseFloat(r.slice(0, -1)) / 100;\n const i = parseFloat(r);\n if (isNaN(i)) {\n if (s)\n return e ?? 0;\n throw new x(\"#VALUE!\", `${r} cannot be converted to a number`);\n }\n return i;\n}, X = (r) => {\n if (k.is(r))\n return r;\n if (r === 0)\n return \"0\";\n if (!r)\n return \"\";\n if (r instanceof $) {\n const t = nt({ value: r });\n return X(t);\n }\n switch (r.constructor.name) {\n case \"Date\":\n return H(r).format(ms);\n default:\n return String(r);\n }\n}, Ot = (r, t) => {\n const { alternative: e, ignore: s } = t ?? {};\n if (k.is(r))\n return r;\n if (typeof r > \"u\" && typeof e < \"u\")\n return e;\n if (r === null)\n return !1;\n if (r instanceof $) {\n const i = nt({ value: r });\n return Ot(i, t);\n }\n if (typeof r == \"string\" || r instanceof String) {\n const i = { true: !0, false: !1 }[r.toLowerCase()];\n if (i == null) {\n if (s)\n return !1;\n throw new x(\"#VALUE!\", `text '${r}' cannot be converted to a boolean`);\n }\n return i;\n }\n return !!r;\n};\nfunction Si(r) {\n if (k.is(r) || r instanceof Date)\n return r;\n if (r instanceof $) {\n const t = nt({ value: r });\n return Si(t);\n }\n if (typeof r == \"number\")\n return new Date(r);\n if (typeof r == \"string\") {\n const t = new Date(r);\n if (!isNaN(t.getTime()))\n return t;\n }\n throw new x(\"#VALUE!\", `${r} cannot be converted to a date`);\n}\nconst Ri = /^(<=|>=|<>|>|<|=)?(.*)$/, _i = (r, t) => {\n const e = t.match(Ri), [, s = \"\", i = \"\"] = e || [];\n let n = i;\n if (s === \">\" || s === \"<\" || s === \">=\" || s === \"<=\")\n switch (typeof r == \"number\" && (n = parseFloat(i)), s) {\n case \">\":\n return fe(r, n);\n case \">=\":\n return pe(r, n);\n case \"<\":\n return ss(r, n);\n case \"<=\":\n return is(r, n);\n }\n const o = s === \"\" || s === \"=\";\n if (i === \"\")\n return (r == null || r === \"\") === o;\n if (typeof r == \"string\" || r instanceof String) {\n const a = i.replace(/~\\*/g, \"(\\\\*)\").replace(/~\\?/g, \"(\\\\?)\").replace(/\\*/g, \"(.*)\").replace(/\\?/g, \"(.)\");\n return RegExp(`^${a}$`, \"i\").test(r) === o;\n }\n return me(r, n) === o;\n}, ot = (r, t, e) => {\n if (r instanceof $) {\n const s = r.solve({ at: e });\n for (let i = 0; i < s.length; i++)\n for (let n = 0; n < s[i].length; n++)\n t(s[i][n], { y: i, x: n });\n } else if (B.is(r)) {\n const s = r.matrix;\n for (let i = 0; i < s.length; i++)\n for (let n = 0; n < s[i].length; n++)\n t(s[i][n], { y: i, x: n });\n } else if (Array.isArray(r) && Array.isArray(r[0]))\n for (let s = 0; s < r.length; s++)\n for (let i = 0; i < r[s].length; i++)\n t(r[s][i], { y: s, x: i });\n else\n t(r, { y: 0, x: 0 });\n}, mn = (r, t, e) => {\n if (r.length === 0)\n return [];\n const s = r[0], i = s.numRows, n = s.numCols, o = Array.from({ length: i }, () => Array(n).fill(!0));\n for (let a = 0; a < r.length; a++) {\n const l = r[a], u = t[a];\n ot(\n l,\n (h, c) => {\n var f, d;\n (f = o[c.y])[d = c.x] && (f[d] = _i(h, u));\n },\n e\n );\n }\n return o;\n}, Q = (r) => (r == null ? void 0 : r.__gsType) === \"Sheet\", gn = {\n name: \"condition\",\n description: 'The condition to evaluate. Use \"=\" for equal, \"<\" for less than, \">\" for greater than, \"<=\" for less than or equal, \">=\" for greater than or equal, \"<>\" for not equal.',\n acceptedTypes: [\"any\"]\n}, Ei = (r, { nullable: t = !0, errorTolerant: e = !1, acceptedTypes: s }) => {\n if (!s || s.length === 0)\n return !0;\n if (r == null)\n return t;\n if (x.is(r) || r instanceof Error) {\n if (e)\n return !0;\n throw r;\n }\n for (const i of s)\n switch (i) {\n case \"any\":\n return !0;\n case \"number\":\n if (Mt(r))\n return !0;\n break;\n case \"string\":\n if (typeof r == \"string\")\n return !0;\n break;\n case \"boolean\":\n if (typeof r == \"boolean\")\n return !0;\n break;\n case \"date\":\n if (r instanceof Date)\n return !0;\n break;\n case \"time\":\n if (b.is(r))\n return !0;\n break;\n case \"matrix\":\n if (at(r))\n return !0;\n break;\n case \"reference\":\n if (Q(r))\n return !0;\n break;\n }\n return !1;\n}, at = (r) => Q(r) || B.is(r) || Array.isArray(r) && Array.isArray(r[0]), Ai = (r, t) => {\n var i;\n if (!at(r))\n return r;\n if (Q(r))\n return nt({ value: r, raise: !1, at: t });\n const e = B.is(r) ? r.matrix : r;\n return (i = e == null ? void 0 : e[0]) == null ? void 0 : i[0];\n}, Ne = (r) => {\n if (Q(r))\n return !r.hasSingleCell;\n if (B.is(r)) {\n const t = r.matrix;\n return t.length > 1 || t.length === 1 && t[0].length > 1;\n }\n return Array.isArray(r) && Array.isArray(r[0]) ? r.length > 1 || r[0].length > 1 : !1;\n}, Fe = (r, t) => {\n const e = [];\n let s = -1, i = 0;\n for (let n = 0; n < r.length; n++)\n r[n].variadic && (s < 0 && (s = n), i++);\n for (let n = 0; n < t; n++)\n if (s >= 0 && n >= s) {\n const o = (n - s) % i;\n e.push(s + o);\n } else n < r.length ? e.push(n) : e.push(r.length - 1);\n return e;\n}, Yt = class Yt {\n constructor({ args: t, sheet: e, at: s }) {\n this.defs = [], this.description = \"\", this.category = \"other\", this.isAsync = !1, this.hashPrecision = 1, this.useInflight = !0, this.broadcastDisabled = !1, this.autoSpilling = !1, this.eachMatrix = (i, n) => {\n if (Q(i)) {\n const o = i.solve({ at: this.at, raise: !0 });\n for (let a = 0; a < o.length; a++)\n for (let l = 0; l < o[a].length; l++)\n n(o[a][l]);\n } else if (B.is(i)) {\n const o = i.matrix;\n for (let a = 0; a < o.length; a++)\n for (let l = 0; l < o[a].length; l++)\n n(o[a][l]);\n } else if (Array.isArray(i) && Array.isArray(i[0]))\n for (let o = 0; o < i.length; o++)\n for (let a = 0; a < i[o].length; a++)\n n(i[o][a]);\n else\n n(i);\n }, this.args = t.map((i) => {\n try {\n return i.evaluate({ sheet: e });\n } catch (n) {\n return n;\n }\n }), this.sheet = e, this.at = s ?? \"?\";\n }\n _main(...t) {\n return this.autoSpilling ? new B(this.main(...t)) : this.main(...t);\n }\n /**\n * Validate and normalise arguments before `main()` is called.\n *\n * Checks:\n * 1. Argument count satisfies defs (respecting optional / variadic).\n * 2. Each argument's runtime type matches the corresponding def's `type` list.\n *\n * Subclasses may override for additional coercion / spreading.\n */\n validate(t) {\n const e = [...t], s = this.defs;\n if (s.length === 0) {\n if (t.length !== 0)\n throw new x(\"#N/A\", \"Too many arguments: expected 0, got \" + t.length + \".\");\n return e;\n }\n let i = 0, n = !1;\n for (const a of s)\n a.variadic && (n = !0), a.optional || i++;\n if (t.length < i)\n throw new x(\"#N/A\", `Too few arguments: expected at least ${i}, got ${t.length}.`);\n if (!n && t.length > s.length)\n throw new x(\"#N/A\", `Too many arguments: expected at most ${s.length}, got ${t.length}.`);\n const o = Fe(s, t.length);\n for (let a = 0; a < t.length; a++) {\n const l = s[o[a]];\n if (!l)\n continue;\n let u = t[a];\n if (!(!l.acceptedTypes || l.acceptedTypes.length === 0)) {\n if (Ne(u)) {\n if (!l.takesMatrix)\n continue;\n } else at(u) && (l.takesMatrix || (u = Ai(u, this.at)));\n if (ge(u) && (u = parseFloat(u.slice(0, -1)) / 100), !Ei(u, l))\n throw new x(\n \"#VALUE!\",\n `Argument \"${l.name}\" (position ${a + 1}) expected ${l.acceptedTypes.join(\" | \")}, got ${typeof u}.`\n );\n e[a] = u;\n }\n }\n return e;\n }\n /**\n * Extract a 2D array from a matrix value (Spilling, Sheet, or nested array).\n * Default behavior for Sheet is value.solve(). Functions like COL can override\n * this to preserve Sheet metadata per cell.\n */\n toMatrix(t) {\n return B.is(t) ? t.matrix : Q(t) ? t.solve({ at: this.at }) : Array.isArray(t) && Array.isArray(t[0]) ? t : [[t]];\n }\n /**\n * Collapse a 1×1 matrix value (Sheet, Spilling, or 2D array) to a scalar.\n * Non-matrix values pass through unchanged.\n *\n * Override in sub-classes that need the original Sheet / reference\n * metadata (e.g. COL, ROW) — for instance, to extract position\n * information before collapsing.\n */\n toScalar(t) {\n var e, s, i;\n if (Q(t)) {\n const { rows: n, cols: o } = t.shape;\n return n === 1 && o === 1 ? t.strip({}) : t;\n }\n return B.is(t) ? (s = (e = t.matrix) == null ? void 0 : e[0]) == null ? void 0 : s[0] : Array.isArray(t) ? Array.isArray(t[0]) ? (i = t[0]) == null ? void 0 : i[0] : t[0] : t;\n }\n call() {\n const t = this.broadcast();\n if (t !== void 0)\n return t;\n if (Rt(this.args, this.at))\n return Gt();\n if (this.args = this.validate(this.args), this.isAsync) {\n const e = yi(this.constructor.name, this.args, this.hashPrecision), s = wi(this.sheet, this.at, e, this.useInflight);\n if (s !== ee)\n return s;\n const i = this._main(...this.args);\n return xi(i, this.sheet, this.at, e, this.ttlMilliseconds, this.useInflight);\n }\n return this._main(...this.args);\n }\n /**\n * If any broadcastable argument is a matrix (multi-cell), expand the call\n * across all element positions and return a Spilling.\n * Returns `undefined` when no broadcast is necessary.\n *\n * Rules:\n * - broadcastDisabled = true → never broadcast\n * - An arg is broadcastable when its corresponding args[].takesMatrix is not true\n * - A Sheet/Spilling/2D-array whose size is (1,1) is treated as a scalar\n * (not broadcast); only multi-cell matrices trigger broadcast\n * - For variadic args, extra args are assigned round-robin\n * across the variadic helpArg positions\n */\n broadcast() {\n if (this.broadcastDisabled)\n return;\n const t = Fe(this.defs, this.args.length), e = this.args.map((u, h) => {\n var f;\n const c = t[h];\n return !((f = this.defs[c]) != null && f.takesMatrix);\n }), s = this.args.map((u, h) => e[h] && Ne(u) ? this.toMatrix(u) : null);\n if (s.every((u) => u === null))\n return;\n const i = this.args.map((u, h) => s[h] !== null ? u : this.toScalar(u));\n let n = 1, o = 1;\n for (const u of s)\n u && (n = Math.max(n, u.length), o = Math.max(\n o,\n u.reduce((h, c) => Math.max(h, c.length), 0)\n ));\n const a = this.args, l = [];\n for (let u = 0; u < n; u++) {\n const h = [];\n for (let c = 0; c < o; c++) {\n const f = i.map((d, p) => {\n var g;\n const m = s[p];\n return m ? ((g = m == null ? void 0 : m[u]) == null ? void 0 : g[c]) ?? null : d;\n });\n try {\n if (mi(f))\n h.push(Gt());\n else {\n const d = this.validate(f);\n Rt(d, this.at) ? h.push(Gt()) : h.push(this._main(...d));\n }\n } catch (d) {\n h.push(d);\n }\n }\n l.push(h);\n }\n return this.args = a, l;\n }\n};\nYt.__name = \"\", Yt.isAsync = !1;\nlet E = Yt;\nconst we = class we extends E {\n constructor() {\n super(...arguments), this.isAsync = !0;\n }\n};\nwe.isAsync = !0;\nlet De = we;\nconst Ci = `Returns the sum of two numbers.\nThis is the same as the '+' operator.`;\nclass Ii extends E {\n constructor() {\n super(...arguments), this.example = \"ADD(2, 3)\", this.description = Ci, this.defs = [\n { name: \"value1\", description: \"First additive.\", acceptedTypes: [\"number\", \"date\", \"time\"] },\n { name: \"value2\", description: \"Second additive.\", acceptedTypes: [\"number\", \"date\", \"time\"] }\n ], this.category = \"math\";\n }\n main(t, e) {\n if (typeof t == \"number\" && typeof e == \"number\")\n return t + e;\n if (t instanceof Date && b.is(e))\n return b.ensure(e).add(t);\n if (b.is(t) && e instanceof Date)\n return b.ensure(t).add(e);\n if (t instanceof Date && typeof e == \"number\")\n return H(t).add(e * Zt, \"second\").toDate();\n if (typeof t == \"number\" && e instanceof Date)\n return H(e).add(t * Zt, \"second\").toDate();\n try {\n return F(t, { alternative: 0 }) + F(e, { alternative: 0 });\n } catch {\n throw new x(\"#VALUE!\", \"Mismatched types for augend or addend.\");\n }\n }\n}\nconst Ti = `Returns the difference of two numbers.\nThis is the same as the '-' operator.`;\nclass Mi extends E {\n constructor() {\n super(...arguments), this.example = \"MINUS(8, 3)\", this.description = Ti, this.defs = [\n { name: \"value1\", description: \"A number that will be subtracted.\", acceptedTypes: [\"number\", \"date\", \"time\"] },\n {\n name: \"value2\",\n description: \"A number that will subtract from value1.\",\n acceptedTypes: [\"number\", \"date\", \"time\"]\n }\n ], this.category = \"math\";\n }\n main(t, e) {\n if (typeof t == \"number\" && typeof e == \"number\")\n return t - e;\n if (t instanceof Date && e instanceof Date)\n return b.fromDates(t, e);\n if (t instanceof Date && b.is(e))\n return b.ensure(e).sub(t);\n if (b.is(t) && e instanceof Date)\n return b.ensure(t).sub(e);\n if (t instanceof Date && typeof e == \"number\")\n return H(t).subtract(e * Zt, \"second\").toDate();\n try {\n return F(t, { alternative: 0 }) - F(e, { alternative: 0 });\n } catch {\n throw new x(\"#VALUE!\", \"Mismatched types for minuend or subtrahend.\");\n }\n }\n}\nconst Oi = `Returns the product of two numbers.\nThis is the same as the '*' operator.`;\nclass Ni extends E {\n constructor() {\n super(...arguments), this.example = \"MULTIPLY(6, 7)\", this.description = Oi, this.defs = [\n { name: \"factor1\", description: \"First factor.\", acceptedTypes: [\"number\"] },\n { name: \"factor2\", description: \"Second factor.\", acceptedTypes: [\"number\"] }\n ], this.category = \"math\";\n }\n main(t, e) {\n return F(t) * F(e);\n }\n}\nconst Fi = `Returns the result of dividing one number by another.\nThis is the same as the '/' operator.`;\nclass Di extends E {\n constructor() {\n super(...arguments), this.example = \"DIVIDE(4, 2)\", this.description = Fi, this.defs = [\n {\n name: \"dividend\",\n description: \"A number that will be divided by divisor.\",\n acceptedTypes: [\"number\"]\n },\n {\n name: \"divisor\",\n description: \"A number that will divide a dividend. Must be non-zero.\",\n acceptedTypes: [\"number\"]\n }\n ], this.category = \"math\";\n }\n validate(t) {\n const e = super.validate(t).map((s) => F(s));\n if (e[1] === 0)\n throw new x(\"#DIV/0!\", \"The second argument must be non-zero.\");\n return e;\n }\n main(t, e) {\n return t / e;\n }\n}\nconst vi = \"Returns the sum of a series of numbers or cells.\";\nclass ki extends E {\n constructor() {\n super(...arguments), this.example = \"SUM(A2:A100, 101)\", this.description = vi, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to sum.\",\n takesMatrix: !0,\n acceptedTypes: [\"number\", \"matrix\"],\n variadic: !0\n }\n ], this.category = \"math\";\n }\n main(...t) {\n if (t.length === 0)\n return 0;\n let e = 0;\n return t.forEach((s) => {\n ot(\n s,\n (i) => {\n e += F(i, { ignore: !0 });\n },\n this.at\n );\n }), e;\n }\n}\nconst Pi = `Returns the concatenation of two values.\nThis is the same as the '&' operator.`;\nclass $i extends E {\n constructor() {\n super(...arguments), this.example = 'CONCAT(\"Hello\", \"World\")', this.description = Pi, this.defs = [\n {\n name: \"value1\",\n description: \"A value to be concatenated with value2.\",\n acceptedTypes: [\"string\", \"number\", \"boolean\"]\n },\n {\n name: \"value2\",\n description: \"A value to be concatenated with value1\",\n acceptedTypes: [\"string\", \"number\", \"boolean\"]\n }\n ], this.category = \"text\";\n }\n main(t, e) {\n return X(t) + X(e);\n }\n}\nconst Li = `Returns TRUE if the two specified values are equal, FALSE if they are not.\nThis is the same as the '=' operator.`;\nclass Hi extends E {\n constructor() {\n super(...arguments), this.example = \"EQ(6, 7)\", this.description = Li, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return me(t, e);\n }\n}\nconst Yi = `Returns TRUE if the two specified values are not equal, FALSE if they are.\nThis is the same as the '<>' operator.`;\nclass Bi extends E {\n constructor() {\n super(...arguments), this.example = \"NE(6, 7)\", this.description = Yi, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return bi(t, e);\n }\n}\nconst Ui = `Returns TRUE if the first argument is truly greater than the second, FALSE otherwise.\nThis is the same as the '>' operator.`;\nclass zi extends E {\n constructor() {\n super(...arguments), this.example = \"GT(5, 3)\", this.description = Ui, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return fe(t, e);\n }\n}\nconst Vi = `Returns TRUE if the first argument is greater than the second, FALSE otherwise.\nThis is the same as the '>=' operator.`;\nclass Wi extends E {\n constructor() {\n super(...arguments), this.example = \"GTE(5, 3)\", this.description = Vi, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return pe(t, e);\n }\n}\nconst Xi = `Returns TRUE if the first argument is truely less than the second argument, FALSE otherwise.\nThis is the same as the '<' operator.`;\nclass ji extends E {\n constructor() {\n super(...arguments), this.example = \"LT(3, 6)\", this.description = Xi, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return ss(t, e);\n }\n}\nconst Gi = `Returns TRUE if the first argument is less than the second argument, FALSE otherwise.\nThis is the same as the '<=' operator.`;\nclass Zi extends E {\n constructor() {\n super(...arguments), this.example = \"LTE(3, 6)\", this.description = Gi, this.defs = [\n { name: \"value1\", description: \"First value.\", acceptedTypes: [\"any\"] },\n { name: \"value2\", description: \"A value to be compared with value1.\", acceptedTypes: [\"any\"] }\n ], this.category = \"logical\";\n }\n main(t, e) {\n return is(t, e);\n }\n}\nconst qi = \"Returns a serial value corresponding to the current date and time.\";\nclass Ki extends E {\n constructor() {\n super(...arguments), this.example = \"NOW()\", this.description = qi, this.defs = [], this.category = \"time\";\n }\n main() {\n return /* @__PURE__ */ new Date();\n }\n}\nconst Ji = `Returns TRUE if all arguments are logically TRUE.\nReturns FALSE if any argument is logically FALSE.`;\nclass Qi extends E {\n constructor() {\n super(...arguments), this.example = \"AND(A1=1, A2=2)\", this.description = Ji, this.defs = [\n {\n name: \"expression\",\n description: \"Logical expressions to evaluate.\",\n acceptedTypes: [\"boolean\", \"number\"],\n variadic: !0\n }\n ], this.category = \"logical\";\n }\n main(...t) {\n return t.map((e) => Ot(e)).reduce((e, s) => e && s);\n }\n}\nconst tr = `Returns TRUE if any argument is logically true.\nReturns FALSE if all arguments are logically false.`;\nclass er extends E {\n constructor() {\n super(...arguments), this.example = \"OR(A1=1, A2=2)\", this.description = tr, this.defs = [\n {\n name: \"expression\",\n description: \"Logical expressions to evaluate.\",\n acceptedTypes: [\"boolean\", \"number\"],\n variadic: !0\n }\n ], this.category = \"logical\";\n }\n main(...t) {\n return t.map((e) => Ot(e)).reduce((e, s) => e || s);\n }\n}\nconst sr = `If the logical expression is TRUE, the second argument is returned.\nIf FALSE, the third argument is returned.`;\nclass ir extends E {\n constructor() {\n super(...arguments), this.example = 'IF(A2 = \"Human\", \"Hello\", \"World\")', this.description = sr, this.defs = [\n { name: \"condition\", description: \"An expression as a condition\", acceptedTypes: [\"any\"] },\n {\n name: \"value1\",\n description: \"value to be returned if the condition is true.\",\n acceptedTypes: [\"any\"]\n },\n {\n name: \"value2\",\n description: \"value to be returned if the condition is false.\",\n optional: !0,\n acceptedTypes: [\"any\"]\n }\n ], this.category = \"logical\";\n }\n main(t, e, s = !1) {\n return Ot(t) ? e : s;\n }\n}\nconst rr = \"Returns the first argument if it is not an error value, otherwise returns the second argument if present, or a blank if the second argument is absent.\";\nclass nr extends E {\n constructor() {\n super(...arguments), this.example = 'IFERROR(A1, \"Error in cell A1\")', this.description = rr, this.defs = [\n {\n name: \"value\",\n description: \"The value to return if value itself is not an error.\",\n acceptedTypes: [\"any\"],\n errorTolerant: !0\n },\n {\n name: \"value_if_error\",\n description: \"The value the function returns if value is an error.\",\n optional: !0,\n acceptedTypes: [\"any\"]\n }\n ], this.category = \"logical\", this.broadcastDisabled = !0;\n }\n main(t, e) {\n return x.is(t) || t instanceof Error ? e : t;\n }\n}\nconst or = `Returns the inverse of the Boolean; if TRUE, NOT returns FALSE.\nIf FALSE, NOT returns TRUE.`;\nclass ar extends E {\n constructor() {\n super(...arguments), this.example = \"NOT(TRUE)\", this.description = or, this.defs = [\n {\n name: \"logical expression\",\n description: \"A logical expression as a boolean.\",\n acceptedTypes: [\"boolean\", \"number\"]\n }\n ], this.category = \"logical\";\n }\n main(t) {\n return !Ot(t);\n }\n}\nconst cr = \"Returns the count of a series of numbers or cells.\";\nclass lr extends E {\n constructor() {\n super(...arguments), this.example = \"COUNT(A2:A100,B2:B100,4,26)\", this.description = cr, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to count.\",\n takesMatrix: !0,\n acceptedTypes: [\"number\", \"matrix\"],\n variadic: !0\n }\n ], this.category = \"math\";\n }\n main(...t) {\n let e = 0;\n return t.forEach((s) => {\n at(s) ? ot(\n s,\n (i) => {\n Mt(i) && e++;\n },\n this.at\n ) : (F(s), e++);\n }), e;\n }\n}\nconst hr = \"Returns the absolute value of a number\";\nclass ur extends E {\n constructor() {\n super(...arguments), this.example = \"ABS(-2)\", this.description = hr, this.defs = [{ name: \"value\", description: \"target number\", acceptedTypes: [\"number\"] }], this.category = \"math\";\n }\n main(t) {\n return Math.abs(F(t));\n }\n}\nconst dr = \"Returns a number multiplied by an exponent.\";\nclass ve extends E {\n constructor() {\n super(...arguments), this.example = \"POWER(4,0.5)\", this.description = dr, this.defs = [\n { name: \"base\", description: \"A number to be multiplied by an exponent.\", acceptedTypes: [\"number\"] },\n { name: \"exponent\", description: \"An exponent to power the base.\", acceptedTypes: [\"number\"] }\n ], this.category = \"math\";\n }\n main(t, e) {\n return Math.pow(F(t), F(e));\n }\n}\nconst fr = \"Returns the number of values in the data set.\";\nclass pr extends E {\n constructor() {\n super(...arguments), this.example = \"COUNTA(A2:A100,B2:B100,4,26)\", this.description = fr, this.defs = [\n {\n name: \"value\",\n description: \"Values or ranges to count.\",\n takesMatrix: !0,\n acceptedTypes: [\"number\", \"matrix\"],\n variadic: !0\n }\n ], this.category = \"math\";\n }\n main(...t) {\n let e = 0;\n return t.forEach((s) => {\n ot(\n s,\n (i) => {\n i != null && i !== \"\" && e++;\n },\n this.at\n );\n }), e;\n }\n}\nconst mr = \"Returns the average of a series of numbers or cells.\";\nclass gr extends E {\n constructor() {\n super(...arguments), this.example = \"AVERAGE(A2:A100, 101)\", this.description = mr, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to average.\",\n takesMatrix: !0,\n acceptedTypes: [\"number\", \"matrix\"],\n variadic: !0\n }\n ], this.category = \"statistics\";\n }\n main(...t) {\n let e = 0, s = 0;\n if (t.forEach((i) => {\n if (at(i))\n ot(\n i,\n (n) => {\n Mt(n) && (e += F(n), s++);\n },\n this.at\n );\n else {\n const n = F(i);\n e += n, s++;\n }\n }), s === 0)\n throw new x(\"#DIV/0!\", \"Evaluation of function AVERAGE caused a divide by zero error.\");\n return e / s;\n }\n}\nconst yr = \"Returns the max in a series of numbers or cells.\";\nclass wr extends E {\n constructor() {\n super(...arguments), this.example = \"MAX(A2:A100, 101)\", this.description = yr, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to find max from.\",\n acceptedTypes: [\"number\", \"matrix\"],\n takesMatrix: !0,\n variadic: !0\n }\n ], this.category = \"statistics\";\n }\n main(...t) {\n let e = -1 / 0, s = !1;\n return t.forEach((i) => {\n if (at(i))\n ot(\n i,\n (n) => {\n if (Mt(n)) {\n const o = F(n);\n o > e && (e = o), s = !0;\n }\n },\n this.at\n );\n else {\n const n = F(i);\n n > e && (e = n), s = !0;\n }\n }), s ? e : 0;\n }\n}\nconst xr = \"Returns the min in a series of numbers or cells.\";\nclass br extends E {\n constructor() {\n super(...arguments), this.example = \"MIN(A2:A100, 101)\", this.description = xr, this.defs = [\n {\n name: \"value\",\n description: \"Numbers or ranges to find min from.\",\n acceptedTypes: [\"number\", \"matrix\"],\n takesMatrix: !0,\n variadic: !0\n }\n ], this.category = \"statistics\";\n }\n main(...t) {\n let e = 1 / 0, s = !1;\n return t.forEach((i) => {\n if (at(i))\n ot(\n i,\n (n) => {\n if (Mt(n)) {\n const o = F(n);\n o < e && (e = o), s = !0;\n }\n },\n this.at\n );\n else {\n const n = F(i);\n n < e && (e = n), s = !0;\n }\n }), s ? e : 0;\n }\n}\nconst Sr = \"Returns the length of a string.\";\nclass Rr extends E {\n constructor() {\n super(...arguments), this.example = \"LEN(A2)\", this.description = Sr, this.defs = [\n {\n name: \"text\",\n description: \"A text to be returned the length.\",\n acceptedTypes: [\"string\", \"number\"]\n }\n ], this.category = \"text\";\n }\n main(t) {\n return X(t).length;\n }\n}\nconst _r = \"Returns a number with positive and negative values reversed.\";\nclass Er extends E {\n constructor() {\n super(...arguments), this.example = \"UMINUS(4)\", this.description = _r, this.defs = [\n { name: \"value1\", description: \"A number that will be subtracted.\", acceptedTypes: [\"number\"] }\n ], this.category = \"math\";\n }\n main(t) {\n return -F(t);\n }\n}\nconst Ar = `Enables the display of values returned from an array formula into multiple rows and/or columns.\nIf the argument is already a Spilling, it is returned as-is. If it is a Sheet (range reference), the field matrix is extracted and wrapped in a Spilling. Otherwise the value is wrapped as a single-element Spilling.`;\nclass Cr extends E {\n constructor() {\n super(...arguments), this.autoSpilling = !0, this.example = \"ARRAYFORMULA(A1:A10 * B1:B10)\", this.description = Ar, this.defs = [\n {\n name: \"value\",\n description: \"The array expression or value to evaluate.\",\n takesMatrix: !0,\n acceptedTypes: [\"matrix\", \"any\"]\n }\n ], this.category = \"logical\", this.broadcastDisabled = !0;\n }\n main(t) {\n return B.is(t) ? t : t instanceof $ ? t._toValueMatrix() : Array.isArray(t) ? t : [[t]];\n }\n}\nconst rs = {\n // Arithmetic & Comparison\n add: Ii,\n minus: Mi,\n uminus: Er,\n multiply: Ni,\n divide: Di,\n pow: ve,\n power: ve,\n concat: $i,\n eq: Hi,\n ne: Bi,\n gt: zi,\n gte: Wi,\n lt: ji,\n lte: Zi,\n // Logical\n if: ir,\n iferror: nr,\n and: Qi,\n or: er,\n not: ar,\n arrayformula: Cr,\n // Statistics & Aggregation\n sum: ki,\n max: wr,\n min: br,\n average: gr,\n count: lr,\n counta: pr,\n // Text\n len: Rr,\n // Math\n abs: ur,\n // Time\n now: Ki\n}, ke = /* @__PURE__ */ new Map(), yn = (r = rs) => {\n let t = ke.get(r);\n return t || (t = Object.keys(r).map((e) => {\n const s = r[e], i = new s({ args: [], sheet: {} });\n return {\n name: e.toUpperCase(),\n category: i.category,\n example: i.example ?? (s == null ? void 0 : s.__name) ?? \"Unknown\",\n description: i.description ?? \"\",\n defs: i.defs || []\n };\n }), ke.set(r, t)), t;\n};\nclass Ir {\n constructor({\n historyLimit: t,\n additionalFunctions: e,\n policies: s = {},\n onSave: i,\n onChange: n,\n onRemoveRows: o,\n onRemoveCols: a,\n onInsertRows: l,\n onInsertCols: u,\n onSelect: h,\n onKeyUp: c,\n onInit: f\n } = {}) {\n this.sheetHead = 0, this.cellHead = 0, this.data = {}, this.systems = {}, this.sheetIdsByName = {}, this.contextsBySheetId = {}, this.choosingSheetId = 0, this.choosingAddress = \"\", this.editingSheetId = 0, this.editingAddress = \"\", this.paletteBySheetName = {}, this.lastFocused = null, this.solvedCaches = /* @__PURE__ */ new Map(), this.lastSpilledTargetIds = /* @__PURE__ */ new Set(), this.asyncFormulaCells = /* @__PURE__ */ new Set(), this.asyncPending = /* @__PURE__ */ new Map(), this.copyingSheetId = 0, this.copyingZone = gs, this.cutting = !1, this.histories = [], this.historyIndex = -1, this.historyLimit = ps, this._componentSheetIds = /* @__PURE__ */ new Map(), this.ready = !1, this.functions = {}, this.policies = {}, this.transmit = (d) => {\n }, this.updateSheet = (d) => ({ type: 0, value: d }), t != null && (this.historyLimit = t), this.functions = {\n ...rs,\n ...e\n };\n for (const d in this.functions) {\n const p = this.functions[d];\n p.__name = d;\n }\n this.policies = s, this.onSave = i, this.onChange = n, this.onRemoveRows = o, this.onRemoveCols = a, this.onInsertRows = l, this.onInsertCols = u, this.onSelect = h, this.onKeyUp = c, this.onInit = f;\n }\n boot() {\n if (this.ready || Object.keys(this.contextsBySheetId).length === 0)\n return;\n const t = Object.keys(this.contextsBySheetId), e = [];\n for (let s = 0; s < t.length; s++) {\n const i = t[s], n = this.contextsBySheetId[i], o = n.store.sheetReactive.current;\n if (!o || o.status === 0)\n return;\n e.push(n);\n }\n for (let s = 0; s < e.length; s++) {\n const { store: i, dispatch: n } = e[s], o = i.sheetReactive.current;\n o && (o.resolveFormulas(), n(this.updateSheet(o)));\n }\n this.ready = !0;\n }\n}\nconst ye = (r = {}) => new Ir(r), wn = ye, xn = (r = {}) => ({ registry: ye(r) }), Tr = (r) => ({\n renderNumber({ value: t }) {\n if (t == null || isNaN(t))\n return \"NaN\";\n const [e, s] = String(parseFloat(t.toPrecision(this.decimalPrecision))).split(\".\"), i = e.replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, `$1${r}`);\n return s == null ? i : `${i}.${s}`;\n }\n}), bn = Tr(\",\"), Sn = {\n renderNumber({ value: r }) {\n return r == null || isNaN(r) ? \"0%\" : `${parseFloat((r * 100).toPrecision(this.decimalPrecision))}%`;\n }\n}, Rn = (r, t, e, s) => {\n if (t != null)\n return t;\n const i = r.getPolicy(e);\n return (e.x === 0 ? i.renderRowHeaderLabel(s) : i.renderColHeaderLabel(s)) ?? null;\n}, _n = [\n // orange\n \"#FF6600\",\n // purple\n \"#AA44FF\",\n // emeraldblue\n \"#00CCCC\",\n // peach\n \"#EEAAEE\",\n // yellow\n \"#DDDD00\",\n // winered\n \"#AA4444\",\n // lightgreen\n \"#00FF00\",\n // pink\n \"#FF00FF\",\n // navy\n \"#3366FF\",\n // cyan\n \"#008888\"\n], z = \"dashed 1px #888888\", Pe = {\n left: [\"horizontal\", -1],\n right: [\"horizontal\", 1],\n up: [\"vertical\", -1],\n down: [\"vertical\", 1],\n none: [\"none\", 0]\n};\nclass En {\n constructor(t, e) {\n const { sheetReactive: s, choosing: i, selectingZone: n } = t, o = s.current;\n if (!o)\n throw new Error(\"Sheet is not available\");\n this.src = Is(Rs(n), i), this.direction = this.suggestDirection(e), this.dst = this.getDestinationArea(e), this.sheet = o;\n }\n get applied() {\n var f, d;\n const [t, e] = Pe[this.direction], { top: s, left: i, bottom: n, right: o } = this.src, a = se(n - s + 1, o - i + 1);\n for (let p = s; p <= n; p++)\n for (let m = i; m <= o; m++)\n a[p - s][m - i] = this.sheet.getCell({ y: p, x: m }, { resolution: \"SYSTEM\" }) ?? null;\n const l = Kt(this.src), u = Kt(this.dst), h = {};\n if (t === \"horizontal\")\n for (let p = 0; p < u.rows; p++) {\n const m = this.getChangePatterns(a[p], \"\");\n for (let g = 0; g < u.cols; g++) {\n const y = (f = a[p % l.rows]) == null ? void 0 : f[g % l.cols], R = e > 0 ? this.dst.left + g : this.dst.right - g, A = e > 0 ? g % l.cols : (l.cols - 1 - g % l.cols) % l.cols, w = { y: this.dst.top + p, x: R }, S = this.sheet.getId(w), _ = m[A].next().value, M = (y == null ? void 0 : y.formulaEnabled) ?? !0 ? this.sheet.processFormula(_, {\n dependency: S\n }) : _;\n h[D(w)] = {\n ...y,\n value: M\n };\n }\n }\n else if (t === \"vertical\")\n for (let p = 0; p < u.cols; p++) {\n const m = this.getChangePatterns(\n a.map((g) => g[p]),\n \"\"\n );\n for (let g = 0; g < u.rows; g++) {\n const y = (d = a[g % l.rows]) == null ? void 0 : d[p % l.cols], R = e > 0 ? this.dst.top + g : this.dst.bottom - g, A = e > 0 ? g % l.rows : (l.rows - 1 - g % l.rows) % l.rows, w = m[A].next().value;\n h[D({ y: R, x: this.dst.left + p })] = { ...y, value: w };\n }\n }\n return this.sheet.update({\n diff: h,\n operator: \"USER\",\n undoReflection: {\n sheetId: this.sheet.id,\n selectingZone: Ee(this.src)\n },\n redoReflection: {\n sheetId: this.sheet.id,\n selectingZone: Ee(this.dst)\n }\n });\n }\n get wholeArea() {\n return Ss(this.src, this.dst);\n }\n getCellStyle(t) {\n const { x: e, y: s } = t, i = {}, { top: n, left: o, bottom: a, right: l } = this.src;\n switch (this.direction) {\n case \"left\": {\n this.dst.left <= e && e <= this.dst.right && (n === s && (i.borderTop = z), a === s - 1 && (i.borderTop = z)), this.dst.left === e && n <= s && s <= a && (i.borderLeft = z);\n break;\n }\n case \"right\": {\n this.dst.left <= e && e <= this.dst.right && (n === s && (i.borderTop = z), a === s - 1 && (i.borderTop = z)), this.dst.right === e - 1 && n <= s && s <= a && (i.borderLeft = z);\n break;\n }\n case \"up\": {\n this.dst.top <= s && s <= this.dst.bottom && (o === e && (i.borderLeft = z), l === e - 1 && (i.borderLeft = z)), this.dst.top === s && o <= e && e <= l && (i.borderTop = z);\n break;\n }\n case \"down\": {\n this.dst.top <= s && s <= this.dst.bottom && (o === e && (i.borderLeft = z), l === e - 1 && (i.borderLeft = z)), this.dst.bottom === s - 1 && o <= e && e <= l && (i.borderTop = z);\n break;\n }\n }\n return i;\n }\n getDestinationArea(t) {\n const { x: e, y: s } = t, { top: i, left: n, bottom: o, right: a } = this.src;\n switch (this.direction) {\n case \"left\":\n return { top: i, bottom: o, left: e, right: n - 1 };\n case \"right\":\n return { top: i, bottom: o, left: a + 1, right: e };\n case \"up\":\n return { left: n, right: a, top: s, bottom: i - 1 };\n case \"down\":\n return { left: n, right: a, top: o + 1, bottom: s };\n }\n return this.src;\n }\n suggestDirection(t) {\n const { top: e, left: s, bottom: i, right: n } = this.src;\n let o = 0, a = 0;\n return t.x < s ? o = t.x - s : t.x > n && (o = t.x - n), t.y < e ? a = t.y - e : t.y > i && (a = t.y - i), Math.abs(o) > 0 && Math.abs(a) > 0 ? Math.abs(o) > Math.abs(a) ? o < 0 ? \"left\" : \"right\" : a < 0 ? \"up\" : \"down\" : o !== 0 ? o < 0 ? \"left\" : \"right\" : a !== 0 ? a < 0 ? \"up\" : \"down\" : \"none\";\n }\n getChangePatterns(t, e) {\n const s = [], i = Mr(t), [n, o] = Pe[this.direction];\n return i.forEach((a) => {\n const l = o > 0 ? a.last : a.first;\n switch (a.kind) {\n case \"other\": {\n s.push(st(a.first));\n return;\n }\n case \"formula\": {\n const u = a.first, h = this.sheet;\n function* c() {\n let f = 0;\n const d = t.length * o;\n for (; ; )\n f += d, yield h.processFormula(u, {\n dependency: e,\n slideY: n === \"vertical\" ? f : 0,\n slideX: n === \"horizontal\" ? f : 0\n });\n }\n s.push(c());\n return;\n }\n case \"number\": {\n if (!a.equidistant) {\n s.push(st(a.first), ...a.nexts.map((c) => st(c)));\n return;\n }\n function* u() {\n let c = l;\n const f = a.numericDelta * o;\n for (; ; )\n c += f, yield c;\n }\n const h = u();\n s.push(h, ...a.nexts.map(() => h));\n return;\n }\n case \"date\": {\n const u = (f) => o > 0 ? a.time.add(f) : a.time.sub(f);\n if (!a.equidistant) {\n s.push(st(a.first), ...a.nexts.map((f) => st(f)));\n return;\n }\n function* h() {\n let f = l;\n for (; ; )\n f = u(f), yield new Date(f);\n }\n const c = h();\n s.push(c, ...a.nexts.map(() => c));\n return;\n }\n case \"string+number\": {\n if (!a.equidistant) {\n s.push(st(a.first), ...a.nexts.map((c) => st(c)));\n return;\n }\n function* u() {\n const { prefix: c } = it(a.first), { number: f } = it(l);\n let d = f;\n const p = a.numericDelta * o;\n for (; ; )\n d += p, yield `${c}${Math.abs(d)}`;\n }\n const h = u();\n s.push(h, ...a.nexts.map(() => h));\n return;\n }\n }\n }), s;\n }\n}\nfunction* st(r) {\n for (; ; )\n yield r;\n}\nconst ns = new RegExp(\"(.+?)(\\\\d+)$\"), it = (r) => {\n const t = r.match(ns);\n if (t) {\n const [, e, s] = t;\n return { prefix: e, number: Number(s) };\n }\n return { prefix: \"\", number: 0 };\n};\nclass Ht {\n constructor(t) {\n this.time = b.create(), this.numericDelta = 0, this.equidistant = !0, this.first = t, this.nexts = [], this.kind = this.discriminate(t);\n }\n discriminate(t) {\n const e = t instanceof Date ? \"date\" : typeof t;\n return e === \"number\" || e === \"date\" ? e : e === \"string\" && t[0] === \"=\" ? \"formula\" : e === \"string\" && t.match(ns) ? \"string+number\" : \"other\";\n }\n get last() {\n return this.nexts.length === 0 ? this.first : this.nexts[this.nexts.length - 1];\n }\n add(t) {\n const e = this.discriminate(t);\n if (this.kind !== e || e === \"other\" || e === \"formula\")\n return new Ht(t);\n if (this.nexts.length === 0)\n switch (e) {\n case \"date\": {\n this.time = b.fromDates(t, this.first);\n break;\n }\n case \"number\": {\n this.numericDelta = t - this.first;\n break;\n }\n case \"string+number\": {\n const { prefix: s, number: i } = it(this.first), { prefix: n, number: o } = it(t);\n s === n && (this.numericDelta = o - i);\n break;\n }\n }\n this.nexts.push(t);\n }\n subdivide() {\n if (this.nexts.length === 0)\n return [];\n const t = [];\n let e = this;\n switch (this.kind) {\n case \"date\": {\n const s = this.nexts.every((i, n) => n === 0 || H(i).isSame(this.time.add(this.nexts[n - 1])));\n return this.equidistant = s, [];\n }\n case \"number\": {\n const s = this.nexts.every((i, n) => n === 0 || i === this.first + this.numericDelta * (n + 1));\n return this.equidistant = s, [];\n }\n case \"string+number\": {\n const { prefix: s } = it(this.first);\n for (let i = 0; i < e.nexts.length; i++) {\n const n = e.nexts[i], { prefix: o, number: a } = it(n);\n if (s !== o) {\n const l = this.nexts.splice(i, this.nexts.length);\n e = new Ht(l.splice(0, 1)[0]), l.forEach(e.add.bind(e)), t.push(e, ...e.subdivide());\n break;\n } else {\n const { number: l } = it(e.first);\n a !== l + (i + 1) * e.numericDelta && (e.equidistant = !1);\n }\n }\n break;\n }\n }\n return t;\n }\n}\nfunction Mr(r) {\n var s, i;\n let t = new Ht((s = r[0]) == null ? void 0 : s.value);\n const e = [t];\n for (let n = 1; n < r.length; n++) {\n const o = (i = r[n]) == null ? void 0 : i.value, a = t.add(o);\n a && (e.push(a), t = a);\n }\n for (let n = e.length - 1; n >= 0; n--) {\n const o = e[n];\n e.splice(n + 1, 0, ...o.subdivide());\n }\n return e;\n}\nexport {\n En as Autofill,\n E as BaseFunction,\n De as BaseFunctionAsync,\n _n as COLOR_PALETTE,\n Dt as DEFAULT_COL_KEY,\n J as DEFAULT_HEIGHT,\n ps as DEFAULT_HISTORY_LIMIT,\n vt as DEFAULT_ROW_KEY,\n jt as DEFAULT_WIDTH,\n x as FormulaError,\n nn as FormulaParser,\n Re as HEADER_HEIGHT,\n _e as HEADER_WIDTH,\n $t as Lexer,\n Pr as MIN_HEIGHT,\n kr as MIN_WIDTH,\n $r as OVERSCAN_X,\n Lr as OVERSCAN_Y,\n k as Pending,\n Sn as PercentagePolicyMixin,\n de as Policy,\n Be as RangeEntity,\n Ye as RefEntity,\n Ir as Registry,\n Dr as SHEET_HEIGHT,\n vr as SHEET_WIDTH,\n $ as Sheet,\n B as Spilling,\n bn as ThousandSeparatorPolicyMixin,\n b as Time,\n ie as ValueEntity,\n N as a2p,\n Zr as aa2oa,\n tn as addressesToAreas,\n en as addressesToCols,\n sn as addressesToRows,\n Wr as among,\n Ae as areaDiff,\n Kt as areaShape,\n zr as areaToRange,\n Ee as areaToZone,\n Vr as between,\n Qr as binarySearch,\n Es as buildInitialCells,\n qr as buildInitialCellsFromOrigin,\n _t as c2x,\n Yr as ch,\n _i as check,\n Is as complementSelectingArea,\n Ss as concatAreas,\n gn as conditionArg,\n wn as createBinding,\n xn as createBook,\n mn as createBooleanMask,\n se as createMatrix,\n ye as createRegistry,\n ot as eachMatrix,\n Ot as ensureBoolean,\n Si as ensureDate,\n F as ensureNumber,\n X as ensureString,\n yn as getFunctionHelps,\n Rn as getLabel,\n Cs as getMaxSizesFromCells,\n Le as grantAddressAbsolute,\n Mt as isNumeric,\n ge as isPercentage,\n rn as isZoneNotSelected,\n jr as makeSequence,\n Nt as matrixShape,\n Gr as oa2aa,\n pn as operations,\n D as p2a,\n bs as r2y,\n Kr as range,\n Jr as restrictZone,\n Hr as rh,\n zs as splitRef,\n Br as stripAddressAbsolute,\n Ai as stripMatrix,\n on as stripSheetName,\n Ur as superposeArea,\n fn as toCellCols,\n hn as toCellMatrix,\n un as toCellObject,\n dn as toCellRows,\n Ws as toSheetPrefix,\n ln as toValueCols,\n Vs as toValueMatrix,\n an as toValueObject,\n cn as toValueRows,\n W as x2c,\n Et as y2r,\n Xr as zoneShape,\n Rs as zoneToArea\n};\n//# sourceMappingURL=index.js.map\n","import { Lexer as F, splitRef as A, a2p as I, toSheetPrefix as M, grantAddressAbsolute as B, DEFAULT_WIDTH as z, DEFAULT_HEIGHT as S, OVERSCAN_X as T, OVERSCAN_Y as R, range as E, binarySearch as P } from \"@gridsheet/engine\";\nexport * from \"@gridsheet/engine\";\nconst j = (e) => {\n e == null || e.focus({ preventScroll: !0 });\n}, H = () => typeof navigator < \"u\" && /^((?!chrome|android).)*safari/i.test(navigator.userAgent), $ = (e) => {\n if (!H())\n return () => {\n };\n const o = (t) => {\n const { scrollTop: n, scrollHeight: l, clientHeight: g, scrollLeft: c, scrollWidth: d, clientWidth: f } = e, u = t.deltaY < 0 && n <= 0, b = t.deltaY > 0 && n + g >= l, m = t.deltaX < 0 && c <= 0, x = t.deltaX > 0 && c + f >= d;\n (u || b || m || x) && (t.preventDefault(), window.scrollBy({ top: t.deltaY, left: t.deltaX, behavior: \"auto\" }));\n };\n let i = 0, a = 0;\n const r = (t) => {\n t.touches.length === 1 && (i = t.touches[0].clientX, a = t.touches[0].clientY);\n }, s = (t) => {\n if (t.touches.length !== 1)\n return;\n const { scrollTop: n, scrollHeight: l, clientHeight: g, scrollLeft: c, scrollWidth: d, clientWidth: f } = e, u = t.touches[0].clientX - i, b = t.touches[0].clientY - a, m = b > 0 && n <= 0, x = b < 0 && n + g >= l, y = u > 0 && c <= 0, p = u < 0 && c + f >= d;\n (m || x || y || p) && t.preventDefault();\n };\n return e.addEventListener(\"wheel\", o, { passive: !1 }), e.addEventListener(\"touchstart\", r, { passive: !0 }), e.addEventListener(\"touchmove\", s, { passive: !1 }), () => {\n e.removeEventListener(\"wheel\", o), e.removeEventListener(\"touchstart\", r), e.removeEventListener(\"touchmove\", s);\n };\n}, v = (e, o) => {\n var a;\n j(e), !((a = document.execCommand) != null && a.call(document, \"insertText\", !1, o)) && e.setRangeText(o, e.selectionStart, e.selectionEnd, \"end\");\n}, Y = ({ input: e, ref: o, dryRun: i = !1 }) => {\n var n;\n if (!((n = e == null ? void 0 : e.value) != null && n.startsWith(\"=\")) || e.selectionStart === 0)\n return !1;\n const a = new F(e.value.substring(1));\n a.tokenize();\n const [r, s] = a.getTokenIndexByCharPosition(e.selectionStart - 1);\n let t = a.tokens[r];\n if ((t == null ? void 0 : t.type) === \"SPACE\" && (t = a.tokens[r - 1]), t == null || t.type === \"OPEN\" || t.type === \"COMMA\" || t.type === \"INFIX_OPERATOR\" || t.type === \"PREFIX_OPERATOR\")\n i || v(e, o);\n else if (t.type === \"REF\" || t.type === \"RANGE\") {\n if (!i) {\n const { sheetName: l, addresses: g } = A(o), { addresses: c } = A(t.entity), d = c.map((b) => I(b));\n c.length === 2 && g.length === 1 && g.push(g[0]), o = M(l) + g.map((b, m) => {\n var x, y;\n return B(b, !!((x = d[m]) != null && x.absX), !!((y = d[m]) != null && y.absY));\n }).join(\":\");\n const [f, u] = a.getTokenPositionRange(r + 1, 1);\n e.setSelectionRange(f, u), v(e, o);\n }\n } else\n return !1;\n return !0;\n}, X = (e) => Y({ input: e, ref: \"\", dryRun: !0 }), N = (e) => {\n e != null && (e.style.width = `${e.scrollWidth}px`, e.style.height = `${e.scrollHeight}px`);\n}, _ = (e, o, i) => {\n var t, n;\n const a = e == null ? void 0 : e.style;\n if (a == null)\n return;\n const r = ((t = o.getCell({ x: i.x, y: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : t.width) ?? z, s = ((n = o.getCell(i, { resolution: \"SYSTEM\" })) == null ? void 0 : n.height) ?? S;\n a.width = `${r}px`, a.height = `${s}px`;\n}, U = (e) => typeof window > \"u\" || e == null ? !1 : document.activeElement === e, V = (e, o) => {\n const i = e.currentTarget;\n if (!o.startsWith(\"=\"))\n return !1;\n const { selectionStart: r, selectionEnd: s } = i;\n if (e.key === '\"') {\n if (r !== s) {\n e.preventDefault();\n const g = o.slice(r, s);\n return v(i, `\"${g}\"`), requestAnimationFrame(() => {\n i.setSelectionRange(r + 1, s + 1);\n }), !0;\n }\n const t = o[r], n = o.slice(1, r);\n let l = 0;\n for (let g = 0; g < n.length; g++)\n n[g] === '\"' && (g + 1 < n.length && n[g + 1] === '\"' ? g++ : l++);\n return l % 2 === 1 && t === '\"' ? (e.preventDefault(), i.setSelectionRange(r + 1, r + 1), !0) : (e.preventDefault(), v(i, '\"\"'), requestAnimationFrame(() => {\n i.setSelectionRange(r + 1, r + 1);\n }), !0);\n }\n return e.key === \"Backspace\" && r === s && r > 0 && o[r - 1] === '\"' && o[r] === '\"' ? (e.preventDefault(), i.setRangeText(\"\", r - 1, r + 1, \"end\"), i.dispatchEvent(new Event(\"input\", { bubbles: !0 })), !0) : !1;\n}, O = (e, { y: o, x: i }) => {\n var g;\n const a = e.getCell({ y: 0, x: i }, { resolution: \"SYSTEM\" }), r = e.getCell({ y: o, x: 0 }, { resolution: \"SYSTEM\" }), s = ((g = e.getSystem({ y: 0, x: i })) == null ? void 0 : g.offsetLeft) ?? 0, t = e.getOffsetTop(o), n = (a == null ? void 0 : a.width) || z, l = r != null && r.filtered ? 0 : (r == null ? void 0 : r.height) || S;\n return {\n top: t,\n left: s,\n bottom: t + l,\n right: s + n,\n width: n,\n height: l\n };\n}, L = (e) => {\n const o = e.scrollTop, i = e.scrollLeft, a = e.clientHeight, r = e.clientWidth, s = o + a, t = i + r;\n return { top: o, left: i, bottom: s, right: t, height: a, width: r };\n}, q = (e, o) => {\n var x, y;\n if (o == null)\n return null;\n let i = 0, a = 0, r = e.numRows, s = e.numCols;\n const { top: t, left: n, bottom: l, right: g } = L(o);\n let c = 0, d = 0;\n for (let p = 1; p <= e.numCols; p++) {\n const w = ((x = e.getCell({ y: 0, x: p }, { resolution: \"SYSTEM\" })) == null ? void 0 : x.width) || z;\n if (c += w, a === 0 && c > n && (a = Math.max(p - T, 1)), c > g) {\n s = Math.min(p + T, e.numCols);\n break;\n }\n }\n for (let p = 1; p <= e.numRows; p++) {\n if (e.isRowFiltered(p))\n continue;\n const w = ((y = e.getCell({ y: p, x: 0 }, { resolution: \"SYSTEM\" })) == null ? void 0 : y.height) || S;\n if (d += w, i === 0 && d > t && (i = Math.max(p - R, 1)), d > l) {\n r = Math.min(p + R, e.numRows);\n break;\n }\n }\n const f = i === 0 ? [] : E(i, r).filter((p) => !e.isRowFiltered(p)), u = E(a, s), b = e.getRectSize({\n top: 1,\n left: 1,\n bottom: i,\n right: a\n }), m = e.getRectSize({\n top: r,\n left: s,\n bottom: e.numRows,\n right: e.numCols\n });\n return {\n ys: f,\n xs: u,\n adjuster: {\n top: b.height,\n left: b.width,\n bottom: m.height,\n right: m.width\n }\n };\n}, G = (e, o, i, a = \"auto\") => {\n if (o == null)\n return;\n const r = L(o), s = O(e, i), t = s.top - e.headerHeight, n = s.left - e.headerWidth, l = s.bottom - r.height + 1, g = s.right - r.width + 1, c = t < r.top, d = n < r.left, f = s.bottom > r.bottom, u = s.right > r.right;\n d ? c ? o.scrollTo({ left: n, top: t, behavior: a }) : f ? o.scrollTo({ left: n, top: l, behavior: a }) : o.scrollTo({ left: n, top: r.top, behavior: a }) : u ? c ? o.scrollTo({ left: g, top: t, behavior: a }) : f ? o.scrollTo({ left: g, top: l, behavior: a }) : o.scrollTo({ left: g, top: r.top, behavior: a }) : c ? o.scrollTo({ left: r.left, top: t, behavior: a }) : f && o.scrollTo({ left: r.left, top: l, behavior: a });\n}, k = (e, o, i, a) => {\n var s;\n const r = P(\n 0,\n e.length - 1,\n (t) => o(e[t].getBoundingClientRect()) < i,\n !1\n );\n return parseInt(((s = e[r]) == null ? void 0 : s.dataset[a]) ?? \"1\");\n}, Q = (e) => {\n const {\n top: o,\n left: i,\n bottom: a,\n right: r\n } = e.getBoundingClientRect(), s = Array.from(e.querySelectorAll(\".gs-th-left\")), t = Array.from(e.querySelectorAll(\".gs-th-top\")), n = k(s, (d) => d.top, o, \"y\"), l = k(s, (d) => d.bottom, a + 1, \"y\"), g = k(t, (d) => d.left, i, \"x\"), c = k(t, (d) => d.right, r + 1, \"x\");\n return { top: n, left: g, bottom: l, right: c };\n}, h = 8, J = (e, o = 260, i = h) => e.right - o >= i ? { x: e.right, y: e.bottom, hAlign: \"right\" } : { x: Math.max(e.left, i), y: e.bottom, hAlign: \"left\" }, K = (e, o, i = h) => {\n const r = e + o - (window.innerWidth - i);\n return r > 0 ? e - r : e;\n}, Z = (e, o = h) => {\n if (e.style.left = `calc(100% + ${o}px)`, e.style.right = \"auto\", e.getBoundingClientRect().right > window.innerWidth - h) {\n const a = { left: \"auto\", right: `calc(100% + ${o}px)` };\n return e.style.left = a.left, e.style.right = a.right, a;\n }\n return { left: `calc(100% + ${o}px)`, right: \"auto\" };\n}, ee = (e) => {\n const o = e.getBoundingClientRect(), i = window.innerWidth, a = window.innerHeight;\n o.right > i - h && (e.style.left = `${parseFloat(e.style.left || \"0\") - (o.right - (i - h))}px`), o.bottom > a - h && (e.style.top = `${parseFloat(e.style.top || \"0\") - (o.bottom - (a - h))}px`);\n}, oe = (e) => e === \"right\" ? \"translateX(-100%)\" : \"none\", C = 1786834463, W = `.gs-root1{display:inline-block;position:relative;border-spacing:0;width:fit-content;max-width:100%;overflow:auto;font-family:\"SF Pro Text\",\"SF Pro Icons\",\"Helvetica Neue\",Helvetica,Arial,Meiryo,sans-serif;visibility:hidden;opacity:0}.gs-root1.gs-initialized{visibility:visible;opacity:1;transition:opacity .2s ease-in-out}.gs-root1 .gs-main{flex:1;max-width:100%;overflow:hidden;position:relative;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.gs-root1 .gs-resizing{width:100%;height:100%;position:absolute;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 8%,transparent);top:0;left:0;z-index:2}.gs-root1 .gs-line-horizontal{width:100%}.gs-root1 .gs-line-vertical{height:100%}.gs-root1 .gs-line{position:relative;top:0;left:0;border:dotted 1px var(--gs-accent,#2563eb);box-sizing:border-box}.gs-root1 .gs-line span{font-size:10px;padding:3px;background-color:var(--gs-accent,#2563eb);color:#fff;margin:0;position:absolute;top:0;left:0}.gs-root1 .gs-scroll-handle{width:100%;height:100%;cursor:cell}.gs-hidden{visibility:hidden;position:absolute;top:0;left:0;width:0;height:0;overflow:hidden;pointer-events:none;z-index:-1}.gs-fixed{position:fixed;top:0;left:0;z-index:1}:where(.gs-root1[data-mode=light],.gs-editor[data-mode=light]){--gs-fg:#1f2328;--gs-muted-fg:#6b7280;--gs-border:#e3e6ea;--gs-bg:rgba(128, 128, 128, 0.07);--gs-canvas:transparent;--gs-surface:#ffffff;--gs-editor-surface:#ffffff;--gs-header-bg:#f4f5f7;--gs-header-fg:#59616b;--gs-accent:#2563eb}.gs-root1{background-color:var(--gs-bg);color:var(--gs-fg)}.gs-root1 .gs-main{background-color:var(--gs-canvas)}.gs-root1 .gs-tabular{background-color:var(--gs-canvas)}.gs-root1 .gs-sheet-body-data{background-color:var(--gs-surface)}.gs-root1 .gs-formula-bar{background-color:var(--gs-header-bg)}.gs-root1 .gs-formula-bar-editor-inner{color:var(--gs-fg)}.gs-root1 .gs-cell{border:solid 1px var(--gs-border)}.gs-root1 .gs-adjuster{background-color:var(--gs-border)}.gs-root1 .gs-tabular-inner{background-color:var(--gs-border)}.gs-root1 .gs-large-editor textarea{color:var(--gs-fg);caret-color:var(--gs-fg)}.gs-root1 .gs-th{background-color:var(--gs-header-bg);color:var(--gs-header-fg)}.gs-root1 .gs-th-top{border-left:solid 1px var(--gs-border)}.gs-root1 .gs-th-top .gs-th-inner{border-top:solid var(--gs-mx-bt,1px) var(--gs-border)}.gs-root1 .gs-th-left{border-top:solid 1px var(--gs-border)}.gs-root1 .gs-th-left .gs-th-inner{border-left:solid var(--gs-mx-bl,1px) var(--gs-border)}.gs-root1 .gs-search-bar{color:color-mix(in srgb,var(--gs-fg) 40%,transparent)}.gs-root1 .gs-search-bar textarea{color:var(--gs-fg);caret-color:var(--gs-fg)}.gs-editor.gs-editing textarea{caret-color:var(--gs-fg)}.gs-editor.gs-editing .gs-editor-hl{background-color:var(--gs-editor-surface);color:var(--gs-fg)}.gs-editor .gs-editor-options{color:var(--gs-fg);background-color:var(--gs-editor-surface);border:solid 1px var(--gs-border)}:where(.gs-root1[data-mode=dark],.gs-editor[data-mode=dark]){--gs-fg:#e4e6e9;--gs-muted-fg:#8b9096;--gs-border:#2c2f34;--gs-bg:rgba(128, 128, 128, 0.07);--gs-canvas:transparent;--gs-surface:#1c1e21;--gs-editor-surface:#1c1e21;--gs-header-bg:#212327;--gs-header-fg:#a6abb2;--gs-accent:#3b82f6}:where(.gs-root1[data-mode=auto],.gs-editor[data-mode=auto]){--gs-fg:#1f2328;--gs-muted-fg:#6b7280;--gs-border:#e3e6ea;--gs-bg:rgba(128, 128, 128, 0.07);--gs-canvas:transparent;--gs-surface:#ffffff;--gs-editor-surface:#ffffff;--gs-header-bg:#f4f5f7;--gs-header-fg:#59616b;--gs-accent:#2563eb}@media (prefers-color-scheme:dark){:where(.gs-root1[data-mode=auto],.gs-editor[data-mode=auto]){--gs-fg:#e4e6e9;--gs-muted-fg:#8b9096;--gs-border:#2c2f34;--gs-bg:rgba(128, 128, 128, 0.07);--gs-canvas:transparent;--gs-surface:#1c1e21;--gs-editor-surface:#1c1e21;--gs-header-bg:#212327;--gs-header-fg:#a6abb2;--gs-accent:#3b82f6}}:where(.gs-root1[data-mode=inherit-light],.gs-editor[data-mode=inherit-light]){--gs-fg:#1f2328;--gs-muted-fg:#6b7280;--gs-border:#e3e6ea;--gs-bg:rgba(128, 128, 128, 0.07);--gs-surface:#ffffff;--gs-editor-surface:#ffffff;--gs-header-bg:#f4f5f7;--gs-header-fg:#59616b;--gs-accent:#2563eb;--gs-bg:transparent;--gs-canvas:transparent;--gs-surface:transparent;--gs-header-bg:transparent}:where(.gs-root1[data-mode=inherit-dark],.gs-editor[data-mode=inherit-dark]){--gs-fg:#e4e6e9;--gs-muted-fg:#8b9096;--gs-border:#2c2f34;--gs-bg:rgba(128, 128, 128, 0.07);--gs-surface:#1c1e21;--gs-editor-surface:#1c1e21;--gs-header-bg:#212327;--gs-header-fg:#a6abb2;--gs-accent:#3b82f6;--gs-bg:transparent;--gs-canvas:transparent;--gs-surface:transparent;--gs-header-bg:transparent}.gs-root1[data-mode=inherit-dark] .gs-adjuster,.gs-root1[data-mode=inherit-dark] .gs-tabular-inner,.gs-root1[data-mode=inherit-light] .gs-adjuster,.gs-root1[data-mode=inherit-light] .gs-tabular-inner{background-color:transparent}.gs-root1[data-mode=inherit-light] .gs-th{background-color:rgba(128,128,128,.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.gs-root1[data-mode=inherit-dark] .gs-th{background-color:rgba(128,128,128,.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.gs-root1[data-gridlines=horizontal] .gs-cell{border-left-color:transparent;border-right-color:transparent}.gs-root1[data-gridlines=none] .gs-cell{border-color:transparent}.gs-root1[data-density=comfortable] .gs-cell-rendered{padding:0 10px}.gs-cell{transition:border-color .2s ease;padding:0;margin:0;box-sizing:border-box;position:relative;font-size:13px;letter-spacing:1px;line-height:24px;cursor:cell;user-select:none;-webkit-user-select:none;-moz-user-select:none}.gs-cell.gs-copying textarea:focus{outline:solid 1px var(--gs-accent,#2563eb)}.gs-cell.gs-selecting{z-index:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 7%,transparent)}.gs-cell.gs-selecting .gs-cell-label{display:block}.gs-cell.gs-choosing{margin-top:-1px;margin-left:-1px;z-index:1}.gs-cell.gs-choosing.gs-editing{color:transparent}.gs-cell.gs-choosing .gs-cell-label{display:block}.gs-cell.gs-pending .gs-cell-rendered{position:relative;overflow:hidden}.gs-cell.gs-pending .gs-cell-rendered::after{content:'';position:absolute;bottom:0;left:0;height:4px;width:40%;border-radius:1px;background:color-mix(in srgb,var(--gs-accent,#2563eb) 65%,transparent);animation:gs-pending-slide 1.4s ease-in-out infinite}.gs-cell .gs-formula-error-triangle{position:absolute;top:0;right:0;border-top:4px solid rgba(200,0,0,.9);border-right:4px solid rgba(200,0,0,.9);border-bottom:4px solid transparent;border-left:4px solid transparent;z-index:2;cursor:help}.gs-cell .gs-cell-label{font-size:10px;font-weight:500;font-style:normal;font-family:inherit;letter-spacing:.2px;line-height:1.4;position:absolute;top:0;right:0;background-color:var(--gs-accent,#2563eb);color:#fff;padding:1px 5px;border-bottom-left-radius:4px;display:none;opacity:.92}.gs-cell .gs-cell-inner-wrap{width:100%;height:100%;position:absolute;top:0;left:0}.gs-cell .gs-cell-inner{width:100%;height:100%;overflow:hidden;display:flex;box-sizing:border-box;border:none!important}.gs-cell .gs-cell-rendered{overflow:hidden;white-space:pre-wrap;cursor:cell;word-wrap:break-word;word-break:break-all;padding:0 6px;width:100%;height:100%}.gs-cell .gs-cell-rendered>*{position:relative}.gs-cell .gs-cell-rendered>.backface{z-index:0}.gs-cell .gs-autofill-drag{background-color:var(--gs-accent,#2563eb);position:absolute;width:7px;height:7px;bottom:0;right:0;cursor:crosshair;z-index:1}.gs-th[data-x=\"1\"] .gs-th-inner-wrap{border-left:none}.gs-th[data-y=\"1\"] .gs-th-inner-wrap{border-top:none}.gs-formula-error-tooltip{position:fixed;background-color:rgba(35,8,8,.94);color:#fff;padding:6px 10px;border-radius:4px;border-left:3px solid rgba(220,50,50,.8);font-size:12px;line-height:1.5;max-width:260px;white-space:pre-wrap;word-break:break-word;box-shadow:0 3px 10px rgba(0,0,0,.4);z-index:100;pointer-events:none;letter-spacing:.3px}.gs-menu-modal{width:100%;height:100vh;z-index:12}.gs-label-input-label{font-size:13px;letter-spacing:1px}.gs-menu-divider{background-color:#aaa;padding:0;margin:5px 0;height:1px;list-style-type:none}.gs-menu-btn{position:absolute;background-color:rgba(128,128,128,.3);border:1px solid #ccc;border-radius:50%;cursor:pointer;font-size:12px;font-weight:700;line-height:1;color:#888;width:18px;height:18px;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;z-index:2}.gs-context-menu{z-index:12;position:fixed;background-color:#fff;padding:5px 0;border-radius:5px;box-shadow:rgba(60,64,67,.3) 0 1px 2px 0,rgba(60,64,67,.15) 0 1px 3px 1px;opacity:.9;transition:opacity .15s ease}.gs-context-menu:hover{opacity:1}.gs-context-menu .gs-menu-items{color:#555;margin:0;padding:0;min-width:250px}.gs-menu-item{padding:5px 10px;list-style-type:none;display:flex}.gs-menu-item.gs-enabled{cursor:pointer}.gs-menu-item.gs-enabled:hover{background-color:#eee}.gs-menu-item.gs-disabled{opacity:.5;cursor:not-allowed}.gs-menu-item .gs-menu-name{font-size:13px;letter-spacing:1px;flex:1}.gs-menu-shortcut{font-size:10px;line-height:20px;color:#999}.gs-menu-shortcut:before{content:\"( \"}.gs-menu-shortcut:after{content:\" )\"}.gs-menu-shortcut .gs-menu-underline{text-decoration:underline}.gs-column-menu{z-index:12;position:fixed;background-color:#fff;padding:5px 0;border-radius:5px;box-shadow:rgba(60,64,67,.3) 0 1px 2px 0,rgba(60,64,67,.15) 0 1px 3px 1px;opacity:.9;transition:opacity .15s ease}.gs-column-menu:hover{opacity:1}.gs-column-menu ul{color:#555;margin:0;padding:0;min-width:200px}.gs-column-menu .gs-column-menu-sort{align-items:center}.gs-column-menu .gs-column-menu-sort .gs-sort-buttons{display:flex;gap:4px;margin-left:auto}.gs-column-menu .gs-column-menu-sort .gs-sort-btn{font-size:12px;padding:4px 8px;border:1px solid transparent;border-radius:3px;background-color:rgba(180,180,180,.1);cursor:pointer;color:#555;font-weight:700;letter-spacing:.5px}.gs-column-menu .gs-column-menu-sort .gs-sort-btn:hover:not(:disabled){border-color:#555}.gs-column-menu .gs-column-menu-sort .gs-sort-btn:disabled{opacity:.5;cursor:not-allowed}.gs-column-menu .gs-column-menu-label{padding:5px 10px}.gs-column-menu .gs-label-input-row{display:flex;gap:4px;align-items:center}.gs-column-menu .gs-label-input{flex:1;font-size:13px;padding:4px 6px;border:none;border-bottom:1px solid #ccc;border-radius:0;outline:0;min-width:0;width:100px;background-color:transparent;box-shadow:none}.gs-column-menu .gs-label-input:focus{border-bottom-color:var(--gs-accent,#2563eb);outline:0;box-shadow:none}.gs-column-menu .gs-label-apply-btn{font-size:12px;padding:4px 8px;border:1px solid transparent;border-radius:3px;background-color:rgba(180,180,180,.1);cursor:pointer;color:#555;font-weight:700;letter-spacing:.5px}.gs-column-menu .gs-label-apply-btn:hover:not(:disabled){border-color:#555}.gs-column-menu .gs-label-apply-btn:disabled{opacity:.5;cursor:not-allowed}.gs-column-menu .gs-column-menu-filter{padding:5px 10px;list-style-type:none;font-size:13px}.gs-column-menu .gs-filter-header{display:flex;align-items:center;gap:8px}.gs-column-menu .gs-filter-header .gs-filter-add-btn{font-size:12px;padding:3px 9px;border:1px solid transparent;border-radius:3px;background-color:rgba(180,180,180,.1);cursor:pointer;color:#555;letter-spacing:1px}.gs-column-menu .gs-filter-header .gs-filter-add-btn:hover{border-color:#555}.gs-column-menu .gs-filter-mode-toggle{display:flex;gap:6px;margin-left:auto}.gs-column-menu .gs-filter-mode-toggle label{display:flex;align-items:center;gap:3px;font-size:11px;font-weight:700;letter-spacing:.5px;color:#888;cursor:pointer;user-select:none}.gs-column-menu .gs-filter-mode-toggle label input[type=radio]{margin:0;cursor:pointer}.gs-column-menu .gs-filter-mode-toggle label.gs-active{color:var(--gs-accent,#2563eb)}.gs-column-menu .gs-filter-mode-toggle.gs-disabled{opacity:.4;pointer-events:none}.gs-column-menu .gs-filter-conditions{display:flex;flex-direction:column;gap:5px;margin-top:6px;max-height:200px;overflow-y:auto}.gs-column-menu .gs-filter-condition-row{display:flex;gap:4px;align-items:normal}.gs-column-menu .gs-filter-method-select{font-size:12px;padding:4px 4px;border:none;border-bottom:1px solid #ccc;border-radius:0;outline:0;background-color:#fff;box-shadow:none;min-width:40px;max-width:80px;cursor:pointer}.gs-column-menu .gs-filter-method-select:focus{border-bottom-color:var(--gs-accent,#2563eb);outline:0;box-shadow:none}.gs-column-menu .gs-filter-value-input{flex:1;font-size:13px;padding:4px 6px;border:none;border-bottom:1px solid #ccc;border-radius:0;outline:0;min-width:0;width:80px;background-color:transparent;box-shadow:none}.gs-column-menu .gs-filter-value-input:focus{border-bottom-color:var(--gs-accent,#2563eb);outline:0;box-shadow:none}.gs-column-menu .gs-filter-remove-btn{font-size:12px;padding:0;border:none;border-radius:3px;background-color:transparent;cursor:pointer;color:#999;line-height:1;flex-shrink:0}.gs-column-menu .gs-filter-remove-btn:hover{color:#c33}.gs-column-menu .gs-filter-actions{display:flex;gap:4px;margin-top:10px;align-items:center}.gs-column-menu .gs-filter-actions .gs-filter-reset-all-btn{font-size:12px;padding:3px 9px;border:1px solid transparent;border-radius:3px;background-color:transparent;cursor:pointer;color:#c33;font-weight:700;letter-spacing:1px}.gs-column-menu .gs-filter-actions .gs-filter-reset-all-btn:hover{border-color:#c33}.gs-column-menu .gs-filter-actions .gs-filter-actions-right{display:flex;gap:4px;margin-left:auto}.gs-column-menu .gs-filter-actions .gs-filter-reset-btn{font-size:12px;padding:3px 9px;border:1px solid transparent;border-radius:3px;background-color:transparent;cursor:pointer;color:#e08000;font-weight:700;letter-spacing:1px}.gs-column-menu .gs-filter-actions .gs-filter-reset-btn:hover{border-color:#e08000}.gs-column-menu .gs-filter-actions .gs-filter-apply-btn{font-size:12px;padding:3px 6px;border:1px solid transparent;border-radius:3px;background-color:transparent;color:var(--gs-accent,#2563eb);cursor:pointer;font-weight:700;letter-spacing:1px}.gs-column-menu .gs-filter-actions .gs-filter-apply-btn:hover{border-color:var(--gs-accent,#2563eb)}.gs-column-menu-waiting{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px 30px;gap:12px;min-width:180px}.gs-column-menu-waiting .gs-waiting-message{font-size:13px;font-weight:700;color:#555;letter-spacing:.5px}.gs-column-menu-waiting .gs-waiting-spinner{width:24px;height:24px;border:3px solid #e0e0e0;border-top-color:var(--gs-accent,#2563eb);border-radius:50%;animation:spin .8s linear infinite}.gs-column-menu-waiting .gs-waiting-cancel-btn{font-size:12px;padding:4px 18px;border:1px solid #c33;border-radius:3px;background-color:transparent;color:#c33;cursor:pointer;font-weight:700;letter-spacing:1px}.gs-column-menu-waiting .gs-waiting-cancel-btn:hover{background-color:#c33;color:#fff}.gs-column-menu-btn{right:4px;top:50%;transform:translateY(-50%)}.gs-column-menu-btn.gs-filtered{opacity:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);border-color:var(--gs-accent,#2563eb);color:var(--gs-accent,#2563eb)}.gs-column-menu-btn.gs-active{opacity:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 18%,transparent);border-color:var(--gs-accent,#2563eb);color:var(--gs-accent,#2563eb)}.gs-th-top:hover .gs-column-menu-btn{opacity:1}.gs-row-menu{z-index:12;position:fixed;background-color:#fff;padding:5px 0;border-radius:5px;box-shadow:rgba(60,64,67,.3) 0 1px 2px 0,rgba(60,64,67,.15) 0 1px 3px 1px;opacity:.9;transition:opacity .15s ease}.gs-row-menu:hover{opacity:1}.gs-row-menu ul{color:#555;margin:0;padding:0;min-width:200px}.gs-row-menu .gs-row-fixed-toggle{display:flex;align-items:center;gap:6px}.gs-row-menu .gs-row-fixed-check{font-size:12px;width:14px;text-align:center;color:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent)}.gs-row-menu .gs-row-fixed-check.gs-row-fixed-active{color:var(--gs-accent,#2563eb)}.gs-row-menu-btn{top:50%;transform:translateY(-50%);right:2px}.gs-row-menu-btn.gs-active{opacity:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 18%,transparent);border-color:var(--gs-accent,#2563eb);color:var(--gs-accent,#2563eb)}.gs-th-left:hover .gs-row-menu-btn{opacity:1}.gs-corner-menu-btn{bottom:2px;right:2px}.gs-corner-menu-btn:hover{opacity:1;background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 18%,transparent);border-color:var(--gs-accent,#2563eb);color:var(--gs-accent,#2563eb)}.gs-th-left.gs-th-top:hover .gs-corner-menu-btn{opacity:1}.gs-editor-hl{padding:0 2px!important;position:absolute;font-family:monospace,Arial;font-size:12px;line-height:24px;letter-spacing:1px}.gs-formula-bar-editor-inner{position:relative;flex:1;min-width:0;display:flex;align-items:center}.gs-editor{opacity:0;z-index:-1}.gs-editor .gs-editor-inner{position:relative}.gs-editor .gs-editor-hl{box-sizing:content-box;border:solid 2px var(--gs-accent,#2563eb);margin:-2px -1px}.gs-editor textarea{width:100%;padding:0 2px!important;position:absolute;font-size:12px;font-family:monospace,Arial;line-height:24px;letter-spacing:1px;top:0;left:0;border:none;outline:0;background-color:transparent;color:transparent;resize:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;overflow:hidden;cursor:default;white-space:pre;height:auto}.gs-editor.gs-editing{z-index:11;opacity:1}.gs-editor.gs-editing .gs-cell-label{pointer-events:none;font-family:inherit;font-weight:500;position:absolute;top:0;right:0;margin-top:-17px;margin-right:-2px;padding:1px 5px;border-top-left-radius:4px;border-top-right-radius:4px;font-size:10px;background-color:var(--gs-accent,#2563eb);color:#fff;z-index:1}.gs-formula-bar{width:100%;position:relative;display:flex;align-items:stretch;box-sizing:border-box;border-style:solid;border-color:var(--gs-border,#e3e6ea);border-width:var(--gs-fb-bt,1px) var(--gs-fb-br,1px) var(--gs-fb-bb,1px) var(--gs-fb-bl,1px);padding:3px 6px;gap:6px}.gs-formula-bar .gs-selecting-address{display:flex;align-items:center;justify-content:center;min-width:38px;padding:0 4px;color:var(--gs-muted-fg,#6b7280);font-size:12px;font-variant-numeric:tabular-nums;text-align:center}.gs-formula-bar[data-spill=true]{background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 6%,var(--gs-header-bg,#f4f5f7))}.gs-formula-bar[data-spill=true] .gs-selecting-address{color:var(--gs-accent,#2563eb);font-style:italic}.gs-formula-bar[data-spill=true] .gs-selecting-address::after{content:\"\\\\2196\";margin-left:2px;font-style:normal;font-size:9px}.gs-formula-bar .gs-fx{display:flex;align-items:center;justify-content:center;align-self:center;width:26px;height:18px;flex-shrink:0;color:var(--gs-muted-fg,#6b7280);font-style:italic;font-family:inherit;font-weight:400;text-align:center;font-size:13px;letter-spacing:.3px;border-radius:4px;background-color:color-mix(in srgb,var(--gs-fg,#1f2328) 6%,transparent)}.gs-formula-bar .gs-editor-hl{z-index:0;overflow-y:auto;box-sizing:border-box;white-space:pre-wrap;word-break:break-all;text-align:left;line-height:24px}.gs-formula-bar textarea{position:relative;z-index:1;width:100%;vertical-align:bottom;color:transparent;border:none;background-color:transparent;padding:0 2px;box-sizing:border-box;text-align:left;outline:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;font-size:12px;font-family:monospace,Arial;height:24px;line-height:24px;min-height:24px;letter-spacing:1px;resize:vertical;caret-color:var(--gs-fg,#1f2328);white-space:pre-wrap;word-break:break-all}.gs-token-type-INVALID_REF{color:red}.gs-token-type-VALUE.gs-token-entity-type-boolean,.gs-token-type-VALUE.gs-token-entity-type-number{color:#39f}.gs-token-type-VALUE.gs-token-entity-type-string{color:#090}.gs-editor-options{position:fixed;z-index:1000;padding:4px;background:var(--gs-bg,#fff);box-shadow:0 4px 12px rgba(0,0,0,.15);border:1px solid rgba(0,0,0,.1);border-radius:6px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;overflow:visible}.gs-editor-option{position:relative;cursor:pointer;list-style:none;padding:6px 12px;font-size:13px;border-radius:4px;color:#333;margin-bottom:2px}.gs-editor-option-content{display:flex;justify-content:space-between;width:100%;align-items:center}.gs-editor-option-tab{font-size:10px;color:#aaa;margin-left:8px;padding:2px 4px;border:1px solid #ddd;border-radius:3px;background:#f9f9f9}.gs-editor-option:last-child{margin-bottom:0}.gs-editor-option:hover{background-color:#f5f5f5}.gs-editor-option-selected{background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);color:var(--gs-accent,#2563eb);font-weight:500}.gs-editor-option-selected:hover{background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 18%,transparent)}.gs-fn-guide1{position:absolute;top:-4px;left:calc(100% + 8px);background:#fff;border:1px solid rgba(0,0,0,.1);box-shadow:0 4px 16px rgba(0,0,0,.12);border-radius:6px;padding:16px;width:280px;z-index:1000;cursor:default;white-space:normal;color:#333}.gs-fn-guide1-tooltip{margin-bottom:8px;line-height:1.4;font-size:13px}.gs-fn-guide1-example{font-family:monospace;font-weight:600;font-size:13px;margin-bottom:8px;color:#1a1a1a;background:#f5f5f5;padding:6px 8px;border-radius:4px;border:1px solid #eee;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.gs-fn-guide1-desc{font-size:13px;color:#555;margin-bottom:12px;line-height:1.4}.gs-fn-guide1-desc p{margin:0 0 6px 0}.gs-fn-guide1-desc p:last-child{margin-bottom:0}.gs-fn-guide1-args{border-top:1px solid #eee;padding-top:10px}.gs-fn-guide1-arg{margin-bottom:6px;line-height:1.4;font-size:12px}.gs-fn-guide1-arg-name{font-weight:600;color:var(--gs-accent,#2563eb)}.gs-fn-guide1-arg-opt{color:#888;font-size:11px}.gs-fn-guide1-arg-iter{font-weight:600;color:var(--gs-accent,#2563eb)}.gs-fn-guide1-arg-type{color:var(--gs-accent,#2563eb);padding:0 4px;background:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);border-radius:3px;font-size:11px;margin:0 4px}.gs-fn-guide1-arg-desc{color:#666}.gs-fn-guide-category{position:absolute;top:-11px;right:8px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;padding:2px 7px;border-radius:4px;background:#e8eaf6;color:#3949ab;border:1px solid #c5cae9;white-space:nowrap}.gs-fn-guide-category.gs-fn-guide-category-math{background:#e3f2fd;color:#1565c0;border-color:#bbdefb}.gs-fn-guide-category.gs-fn-guide-category-statistics{background:#e8f5e9;color:#2e7d32;border-color:#c8e6c9}.gs-fn-guide-category.gs-fn-guide-category-text{background:#fff8e1;color:#f57f17;border-color:#ffecb3}.gs-fn-guide-category.gs-fn-guide-category-time{background:#fce4ec;color:#880e4f;border-color:#f8bbd0}.gs-fn-guide-category.gs-fn-guide-category-lookup{background:#f3e5f5;color:#6a1b9a;border-color:#e1bee7}.gs-fn-guide-category.gs-fn-guide-category-logical{background:#e0f2f1;color:#00695c;border-color:#b2dfdb}.gs-fn-guide-category.gs-fn-guide-category-information{background:#e0f7fa;color:#006064;border-color:#b2ebf2}.gs-fn-guide-category.gs-fn-guide-category-finance{background:#fff3e0;color:#e65100;border-color:#ffe0b2}.gs-fn-guide-category.gs-fn-guide-category-engineering{background:#efebe9;color:#4e342e;border-color:#d7ccc8}.gs-fn-guide-category.gs-fn-guide-category-other{background:#f5f5f5;color:#616161;border-color:#e0e0e0}.gs-editor-portal{display:contents}.gs-editor-portal[data-mode=dark] .gs-editor-options,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-options,.gs-editor[data-mode=dark] .gs-editor-options,.gs-editor[data-mode=inherit-dark] .gs-editor-options{background:#252526;border-color:#454545;box-shadow:0 4px 12px rgba(0,0,0,.5)}.gs-editor-portal[data-mode=dark] .gs-editor-option,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option,.gs-editor[data-mode=dark] .gs-editor-option,.gs-editor[data-mode=inherit-dark] .gs-editor-option{color:#ccc}.gs-editor-portal[data-mode=dark] .gs-editor-option:hover,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option:hover,.gs-editor[data-mode=dark] .gs-editor-option:hover,.gs-editor[data-mode=inherit-dark] .gs-editor-option:hover{background-color:#333}.gs-editor-portal[data-mode=dark] .gs-editor-option-selected,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option-selected,.gs-editor[data-mode=dark] .gs-editor-option-selected,.gs-editor[data-mode=inherit-dark] .gs-editor-option-selected{background-color:#094771;color:#fff}.gs-editor-portal[data-mode=dark] .gs-editor-option-selected:hover,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option-selected:hover,.gs-editor[data-mode=dark] .gs-editor-option-selected:hover,.gs-editor[data-mode=inherit-dark] .gs-editor-option-selected:hover{background-color:#0d5a8f}.gs-editor-portal[data-mode=dark] .gs-editor-option-tab,.gs-editor-portal[data-mode=inherit-dark] .gs-editor-option-tab,.gs-editor[data-mode=dark] .gs-editor-option-tab,.gs-editor[data-mode=inherit-dark] .gs-editor-option-tab{color:#777;background:#333;border-color:#444}.gs-editor-portal[data-mode=dark] .gs-fn-guide1,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1,.gs-editor[data-mode=dark] .gs-fn-guide1,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1{background:#252526;border-color:#454545;color:#ccc}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-example,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-example,.gs-editor[data-mode=dark] .gs-fn-guide1-example,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-example{background:#1e1e1e;border-color:#333;color:#d4d4d4}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-desc,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-desc,.gs-editor[data-mode=dark] .gs-fn-guide1-desc,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-desc{color:#aaa}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-args,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-args,.gs-editor[data-mode=dark] .gs-fn-guide1-args,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-args{border-color:#333}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-iter,.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-name,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-iter,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-name,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-iter,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-name,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-iter,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-name{color:#4fc1ff}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-opt,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-opt,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-opt,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-opt{color:#777}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-type,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-type,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-type,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-type{background:#094771;color:#4fc1ff}.gs-editor-portal[data-mode=dark] .gs-fn-guide1-arg-desc,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide1-arg-desc,.gs-editor[data-mode=dark] .gs-fn-guide1-arg-desc,.gs-editor[data-mode=inherit-dark] .gs-fn-guide1-arg-desc{color:#999}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category,.gs-editor[data-mode=dark] .gs-fn-guide-category,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category{background:#2a2d3e;color:#7986cb;border-color:#3d4166}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-math,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-math,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-math,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-math{background:#0d2137;color:#64b5f6;border-color:#1a3a5c}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-statistics,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-statistics,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-statistics,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-statistics{background:#0d2218;color:#66bb6a;border-color:#1a3d2a}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-text,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-text,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-text,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-text{background:#2e2200;color:#ffd54f;border-color:#4d3900}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-time,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-time,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-time,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-time{background:#2d0d1e;color:#f48fb1;border-color:#4d1a33}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-lookup,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-lookup,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-lookup,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-lookup{background:#260d33;color:#ce93d8;border-color:#3d1a54}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-logical,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-logical,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-logical,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-logical{background:#0d2421;color:#4db6ac;border-color:#1a3d39}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-information,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-information,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-information,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-information{background:#0d2426;color:#4dd0e1;border-color:#1a3d40}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-finance,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-finance,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-finance,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-finance{background:#2e1500;color:#ffb74d;border-color:#4d2800}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-engineering,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-engineering,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-engineering,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-engineering{background:#1e1714;color:#bcaaa4;border-color:#332c28}.gs-editor-portal[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-other,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-other,.gs-editor[data-mode=dark] .gs-fn-guide-category.gs-fn-guide-category-other,.gs-editor[data-mode=inherit-dark] .gs-fn-guide-category.gs-fn-guide-category-other{background:#1e1e1e;color:#9e9e9e;border-color:#333}.gs-editor-portal[data-mode=dark] .gs-fn-guide2,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2,.gs-editor[data-mode=dark] .gs-fn-guide2,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2{background:#252526;border-color:#454545;box-shadow:0 4px 12px rgba(0,0,0,.5);color:#ccc}.gs-editor-portal[data-mode=dark] .gs-fn-guide2-name,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2-name,.gs-editor[data-mode=dark] .gs-fn-guide2-name,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2-name{color:#dfdbdb;background:#333;border-color:#444}.gs-editor-portal[data-mode=dark] .gs-fn-guide2 .gs-active-arg,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2 .gs-active-arg,.gs-editor[data-mode=dark] .gs-fn-guide2 .gs-active-arg,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2 .gs-active-arg{color:#fff;background-color:#094771}.gs-editor-portal[data-mode=dark] .gs-fn-guide2-arg-type,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2-arg-type,.gs-editor[data-mode=dark] .gs-fn-guide2-arg-type,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2-arg-type{background:#094771;color:#4fc1ff}.gs-editor-portal[data-mode=dark] .gs-fn-guide2-desc,.gs-editor-portal[data-mode=inherit-dark] .gs-fn-guide2-desc,.gs-editor[data-mode=dark] .gs-fn-guide2-desc,.gs-editor[data-mode=inherit-dark] .gs-fn-guide2-desc{color:#aaa;border-top-color:#333}.gs-fn-guide2{position:fixed;left:0;background:#fff;border:1px solid rgba(0,0,0,.1);box-shadow:0 4px 16px rgba(0,0,0,.12);border-radius:6px;padding:12px 16px;width:280px;z-index:1000;cursor:default;white-space:normal;color:#333;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;transition:opacity .1s ease-in-out}.gs-fn-guide2.gs-fn-guide2-hidden{opacity:0!important;pointer-events:none!important}.gs-fn-guide2-name{font-family:monospace;font-weight:700;font-size:13px;color:#1a1a1a;background:#f5f5f5;padding:6px 8px;border-radius:4px;border:1px solid #eee;display:flex;align-items:center;gap:6px;flex-wrap:wrap;width:100%;box-sizing:border-box;margin-bottom:8px}.gs-fn-guide2-args-inline{font-size:13px;font-family:monospace;line-height:1.5;margin-bottom:8px;color:#666}.gs-fn-guide2-args-inline span{transition:all .2s ease-in-out}.gs-fn-guide2 .gs-active-arg{font-weight:700;color:var(--gs-accent,#2563eb);background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);padding:2px 4px;margin:0 -4px;border-radius:4px}.gs-fn-guide2-arg-type{color:var(--gs-accent,#2563eb);padding:0 4px;background:color-mix(in srgb,var(--gs-accent,#2563eb) 12%,transparent);border-radius:3px;font-size:11px;margin:0 4px}.gs-fn-guide2-desc{font-size:12px;color:#555;line-height:1.4;border-top:1px solid #eee;padding-top:8px;margin-top:4px}.gs-fn-guide2-desc p{margin:0}.gs-fn-guide2-desc-more{font-style:italic;color:#888;margin-top:4px!important;font-size:11px}.gs-adjuster{padding:0}.gs-table{margin:0}.gs-tabular{overflow:auto;display:flex;box-sizing:border-box;position:relative}.gs-root1[data-matrix-align=both] .gs-tabular,.gs-root1[data-matrix-align=horizontal] .gs-tabular{justify-content:safe center}.gs-root1[data-matrix-align=both] .gs-tabular,.gs-root1[data-matrix-align=vertical] .gs-tabular{align-items:safe center}.gs-tabular-inner{flex:0 0 auto;position:relative;overflow:hidden;overflow:clip;box-sizing:border-box;border-right:solid var(--gs-mx-br,1px) var(--gs-border,#e3e6ea);border-bottom:solid var(--gs-mx-bb,1px) var(--gs-border,#e3e6ea)}.gs-tabular-inner>table{table-layout:fixed;border-collapse:collapse;border-spacing:0}.gs-main[data-overflow-x=true] .gs-tabular-inner{border-right-width:0}.gs-main[data-overflow-y=true] .gs-tabular-inner{border-bottom-width:0}.gs-main::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:3;border:0 solid var(--gs-border,#e3e6ea)}.gs-main[data-overflow-x=true]::after{border-right-width:var(--gs-mx-br,1px)}.gs-main[data-overflow-y=true]::after{border-bottom-width:var(--gs-mx-bb,1px)}.gs-th{z-index:2;padding:0;position:sticky;font-size:13px;font-weight:400;box-sizing:border-box;vertical-align:top}.gs-th .gs-resizer{position:absolute;border-color:transparent;box-sizing:border-box;z-index:2}.gs-th .gs-resizer:hover{background-color:var(--gs-accent,#2563eb)}.gs-th .gs-resizer.gs-protected{display:none}.gs-th-inner{height:100%;box-sizing:border-box;vertical-align:middle;overflow:hidden;display:flex;align-items:center;justify-content:center}.gs-th-inner-wrap{height:100%;box-sizing:border-box;background-color:transparent}.gs-th-top{top:0;overflow:hidden}.gs-th-top .gs-resizer{top:0;right:0;width:3px;cursor:e-resize}.gs-th-top .gs-resizer.gs-dragging{border-right-style:dotted;height:1000000px!important;cursor:e-resize}.gs-th-left{left:0;overflow:hidden;min-width:30px;border-top:solid 1px var(--gs-border,#e3e6ea)}.gs-th-left .gs-resizer{left:0;bottom:0;height:3px;cursor:n-resize}.gs-th-left .gs-resizer.gs-dragging{border-bottom-style:dotted;width:1000000px!important;cursor:n-resize}.gs-th-top.gs-th-left{top:0;left:0;z-index:3;border:none!important}.gs-th-left.gs-filter-fixed .gs-th-inner::before{content:'‹\\\\00a0'}.gs-th-left.gs-sort-fixed .gs-th-inner::after{content:'\\\\00a0›'}.gs-col-addr{position:absolute;top:2px;right:4px;font-size:9px;opacity:.5;line-height:1;letter-spacing:.3px;pointer-events:none}.gs-search-bar{width:100%;display:flex;align-items:center;padding:3px 0;border-top:solid 1px rgba(128,128,128,.3);border-left:solid 1px rgba(128,128,128,.3);border-right:solid 1px rgba(128,128,128,.3);border-bottom:solid 1px rgba(128,128,128,.3);box-sizing:border-box;background-color:rgba(200,50,0,.2)}.gs-search-bar.gs-search-found{background-color:rgba(0,200,100,.2)}.gs-search-bar .gs-search-bar-inner{border-left:solid 1px rgba(128,128,128,.5)}.gs-search-bar .gs-search-bar-icon{border-left:solid 1px rgba(128,128,128,.3);display:flex;align-items:center;justify-content:center;width:30px;flex-shrink:0}.gs-search-bar .gs-search-input-wrapper{flex-grow:1;position:relative;display:flex;align-items:center;height:100%}.gs-search-bar .gs-search-input-ghost{position:absolute;left:2px;right:2px;top:0;bottom:0;pointer-events:none;font-size:12px;font-family:monospace,Arial;line-height:24px;letter-spacing:1px;white-space:pre-wrap;word-break:break-all;color:transparent;overflow:hidden}.gs-search-bar .gs-search-input-ghost .gs-search-ghost-hint{color:#aaa}.gs-search-bar textarea{background-color:transparent;border:none;padding:0 2px;box-sizing:border-box;outline:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;font-size:12px;font-family:monospace,Arial;height:24px;line-height:24px;min-height:24px;letter-spacing:1px;caret-color:rgba(128,128,128);white-space:pre-wrap;word-break:break-all;flex-grow:1;width:100%;resize:none}.gs-search-progress{color:#999;font-size:13px;width:60px;flex-shrink:0;white-space:nowrap;text-align:center}.gs-search-close{cursor:pointer;display:flex;align-items:center;justify-content:center;width:24px;flex-shrink:0}.gs-search-buttons{display:flex;align-items:center;white-space:nowrap;flex-shrink:0}.gs-search-button{display:inline-flex;cursor:pointer;margin:0 2px}.gs-search-button span{display:inline-block;font-size:11px;padding:3px 5px;background-color:rgba(128,128,128,.1);border:1px solid rgba(128,128,128,.3);border-radius:3px;transition:all .15s ease;line-height:1}.gs-search-button span:hover{background-color:rgba(128,128,128,.2)}.gs-search-button span.gs-search-button-on{color:var(--gs-accent,#2563eb);background-color:color-mix(in srgb,var(--gs-accent,#2563eb) 22%,transparent);border-color:var(--gs-accent,#2563eb)}.gs-search-range span{white-space:nowrap;font-family:monospace}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.gs-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:color-mix(in srgb,var(--gs-surface,#fff) 70%,transparent);display:flex;align-items:center;justify-content:center;z-index:100;pointer-events:all}.gs-loading-spinner{width:32px;height:32px;border:3px solid color-mix(in srgb,var(--gs-fg,#1f2328) 12%,transparent);border-top-color:var(--gs-accent,#2563eb);border-radius:50%;animation:spin .8s linear infinite}@keyframes gs-pending-slide{0%{left:-40%}100%{left:100%}}@keyframes gs-pending-pulse{0%{left:0;width:0}50%{left:0;width:100%}100%{left:100%;width:0}}@keyframes gs-flash{0%{opacity:0}20%{opacity:1}100%{opacity:0}}.gs-flash-overlay{position:absolute;inset:0;pointer-events:none;z-index:9999;background:color-mix(in srgb,var(--gs-accent,#2563eb) 15%,transparent);opacity:0}.gs-flash-overlay--active{animation:gs-flash .6s ease-out forwards}`, re = () => {\n if (typeof window > \"u\" || document.querySelector(`style.gs-styling[data-modified-at='${C}']`))\n return;\n const o = document.createElement(\"style\");\n document.head.appendChild(o), o.setAttribute(\"class\", \"gs-styling\"), o.setAttribute(\"data-modified-at\", `${C}`), o.innerText = W;\n};\nexport {\n J as calcBelowPosition,\n Z as calcSideStyle,\n K as clampLeft,\n ee as clampPopup,\n re as embedStyle,\n N as expandInput,\n j as focus,\n Q as getAreaInTabular,\n O as getCellRectPositions,\n oe as hAlignTransform,\n V as handleFormulaQuoteAutoClose,\n Y as insertRef,\n v as insertTextAtCursor,\n U as isFocus,\n X as isRefInsertable,\n $ as preventSafariBounce,\n _ as resetInput,\n G as smartScroll,\n q as virtualize\n};\n//# sourceMappingURL=index.js.map\n","import { a2p, x2c, y2r } from '@gridsheet/web';\nimport { Sheet } from '@gridsheet/web';\nimport type { Address, PointType, StorePatchType, StoreType } from '../types';\n\n/**\n * Strip redundant fields from a StorePatchType before recording in history.\n * - selectingZone with endY === -1 && endX === -1 is a no-selection sentinel and need not be stored.\n */\nexport const compactReflection = (reflection: StorePatchType): StorePatchType => {\n const result = { ...reflection };\n if (result.selectingZone != null && result.selectingZone.endY === -1 && result.selectingZone.endX === -1) {\n delete result.selectingZone;\n }\n return result;\n};\n\nexport const restrictPoints = (store: StoreType, sheet: Sheet) => {\n const { choosing, selectingZone } = store;\n let { y, x } = choosing;\n let { startY: y1, startX: x1, endY: y2, endX: x2 } = selectingZone;\n const [numRows, numCols] = [sheet.numRows, sheet.numCols];\n if (y > numRows) {\n y = numRows;\n }\n if (x > numCols) {\n x = numCols;\n }\n if (y1 > numRows) {\n y1 = numRows;\n }\n if (y2 > numRows) {\n y2 = numRows;\n }\n if (x1 > numCols) {\n x1 = numCols;\n }\n if (x2 > numCols) {\n x2 = numCols;\n }\n return {\n choosing: { y, x } as PointType,\n selectingZone: { startY: y1, startX: x1, endY: y2, endX: x2 },\n };\n};\n\nconst FLASH_CLASS = 'gs-flash-overlay--active';\nconst FLASH_DURATION_MS = 600;\nexport const flashSheet = (el: HTMLElement | null) => {\n if (!el) {\n return;\n }\n el.classList.remove(FLASH_CLASS);\n // force reflow to restart animation when called consecutively\n void el.offsetWidth;\n el.classList.add(FLASH_CLASS);\n setTimeout(() => el.classList.remove(FLASH_CLASS), FLASH_DURATION_MS);\n};\n\nexport const flashWithCallback = (\n store: StoreType,\n sheet: Sheet,\n callback: ((s: StoreType) => void) | undefined,\n): StoreType & { callback?: (store: StoreType) => void } => ({\n ...store,\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n});\n\nexport const initSearchStatement = (sheet: Sheet, store: StoreType) => {\n const { searchQuery, searchCaseSensitive, searchRegex, searchRange } = store;\n let { choosing } = store;\n if (!searchQuery) {\n return { matchingCells: [] };\n }\n const matchingCells: Address[] = [];\n\n let matcher: (value: string) => boolean;\n if (searchRegex) {\n try {\n const flags = searchCaseSensitive ? '' : 'i';\n const regex = new RegExp(searchQuery, flags);\n matcher = (v: string) => regex.test(v);\n } catch (e) {\n // Invalid regex, treat as literal string\n const q = searchCaseSensitive ? searchQuery : searchQuery.toLowerCase();\n matcher = (v: string) => {\n const s = searchCaseSensitive ? v : v.toLowerCase();\n return s.indexOf(q) !== -1;\n };\n }\n } else {\n const q = searchCaseSensitive ? searchQuery : searchQuery.toLowerCase();\n matcher = (v: string) => {\n const s = searchCaseSensitive ? v : v.toLowerCase();\n return s.indexOf(q) !== -1;\n };\n }\n\n // Determine search range\n let startY = 1,\n endY = sheet.bottom;\n let startX = 1,\n endX = sheet.right;\n if (searchRange) {\n startY = searchRange.startY;\n endY = searchRange.endY;\n startX = searchRange.startX;\n endX = searchRange.endX;\n }\n\n for (let y = startY; y <= endY; y++) {\n for (let x = startX; x <= endX; x++) {\n const v = sheet.getSerializedValue({ point: { y, x } });\n if (matcher(v)) {\n matchingCells.push(`${x2c(x)}${y2r(y)}`);\n }\n }\n }\n const matchingCellIndex = matchingCells.length === store.matchingCells.length ? store.matchingCellIndex : 0;\n if (matchingCells.length > 0) {\n const address = matchingCells[matchingCellIndex];\n choosing = a2p(address);\n }\n return { matchingCells, searchQuery, matchingCellIndex, choosing };\n};\n\nexport const isXSheetFocused = (store: StoreType) => {\n const { sheetId, sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return false;\n }\n if (sheetId === sheet.registry.editingSheetId) {\n return false;\n }\n return !!sheet.registry.editingAddress;\n};\n","import {\n StoreType,\n RectType,\n ZoneType,\n PointType,\n RangeType,\n FeedbackType,\n CellsByAddressType,\n AreaType,\n PositionType,\n ModeType,\n RawCellType,\n OperatorType,\n FilterConfig,\n} from '../types';\nimport { zoneToArea, superposeArea, matrixShape, areaShape, areaDiff, areaToZone, restrictZone } from '@gridsheet/web';\nimport { Sheet } from '@gridsheet/web';\n\nimport { p2a, a2p } from '@gridsheet/web';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH } from '@gridsheet/web';\nimport { initSearchStatement, restrictPoints, flashSheet, flashWithCallback, compactReflection } from './helpers';\nimport { smartScroll } from '@gridsheet/web';\nimport { operations as prevention } from '@gridsheet/web';\nimport { Autofill } from '@gridsheet/web';\n\nconst resetZone: ZoneType = { startY: -1, startX: -1, endY: -1, endX: -1 };\n\nconst actions: { [s: string]: CoreAction<any> } = {};\n\ntype StoreWithCallback = StoreType & {\n callback?: (store: StoreType) => void;\n};\n\nexport const reducer = <T>(store: StoreType, action: { type: number; value: T }): StoreType => {\n const act: CoreAction<T> | undefined = actions[action.type];\n if (act == null) {\n return store;\n }\n\n // React StrictMode calls reducers twice per dispatch to detect side effects.\n // Since Sheet is a mutable object, the second call re-applies operations (double undo, etc.).\n // Guard: React passes the SAME action object reference to both calls, so we use object identity\n // to distinguish a StrictMode second-call (same reference) from a new dispatch (new reference).\n // Using a Map allows multiple batched dispatches to each have their own cached result,\n // preventing the single-slot cache from being overwritten when actions are processed together.\n const registry = store.sheetReactive.current?.registry;\n if (registry?._strictModeCache?.has(action)) {\n const cached = registry._strictModeCache.get(action) as StoreType;\n registry._strictModeCache.delete(action);\n return cached;\n }\n\n const { callback, ...newStore } = act.reduce(store, action.value);\n callback?.(newStore);\n const result = { ...store, ...newStore };\n\n if (registry) {\n if (!registry._strictModeCache) {\n registry._strictModeCache = new Map();\n }\n registry._strictModeCache.set(action, result);\n queueMicrotask(() => {\n registry._strictModeCache?.delete(action);\n });\n }\n\n return result;\n};\n\nexport class CoreAction<T> {\n static head = 1;\n private actionId: number = 1;\n /** Whether this action mutates sheet data (triggers loading indicator). */\n public mutation = false;\n\n public reduce(store: StoreType, payload: T): StoreWithCallback {\n return store;\n }\n public call(payload: T): { type: number; value: T } {\n return {\n type: this.actionId,\n value: payload,\n };\n }\n public bind() {\n this.actionId = CoreAction.head++;\n actions[this.actionId] = this;\n return this.call.bind(this);\n }\n}\n\n/** Returns true if the given action type is a mutation (heavy operation). */\nexport const isMutationAction = (type: number): boolean => {\n return actions[type]?.mutation === true;\n};\n\nclass SetSearchQueryAction<T extends string | undefined> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchQuery = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchQuery }),\n searchQuery,\n };\n }\n}\nexport const setSearchQuery = new SetSearchQueryAction().bind();\n\nclass SetSearchCaseSensitiveAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchCaseSensitive = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchCaseSensitive }),\n searchCaseSensitive,\n };\n }\n}\nexport const setSearchCaseSensitive = new SetSearchCaseSensitiveAction().bind();\n\nclass SetSearchRegexAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchRegex = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchRegex }),\n searchRegex,\n };\n }\n}\nexport const setSearchRegex = new SetSearchRegexAction().bind();\n\nclass SetSearchRangeAction<T extends ZoneType | undefined> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchRange = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchRange }),\n searchRange,\n };\n }\n}\nexport const setSearchRange = new SetSearchRangeAction().bind();\n\nclass SetEditingAddressAction<T extends string> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editingAddress: payload,\n };\n }\n}\nexport const setEditingAddress = new SetEditingAddressAction().bind();\n\nclass SetAutofillDraggingToAction<T extends PointType | null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n autofillDraggingTo: payload,\n };\n }\n}\nexport const setAutofillDraggingTo = new SetAutofillDraggingToAction().bind();\n\nclass SubmitAutofillAction<T extends PointType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n try {\n const autofill = new Autofill(store, payload);\n const sheet = autofill.applied;\n const selectingZone = areaToZone(autofill.wholeArea);\n\n const result = {\n ...store,\n sheetReactive: { current: sheet },\n ...initSearchStatement(sheet, store),\n ...restrictPoints(store, sheet),\n selectingZone,\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n autofillDraggingTo: null,\n };\n return result;\n } catch (e) {\n // The fill may fail (e.g. a target beyond the sheet). Never leave\n // autofillDraggingTo set — a stuck value blocks all future clicks\n // (handleDragStart early-returns while it is set).\n // eslint-disable-next-line no-console\n console.error('[gridsheet] autofill failed:', e);\n return { ...store, autofillDraggingTo: null };\n }\n }\n}\nexport const submitAutofill = new SubmitAutofillAction().bind();\n\nclass SetContextMenuPositionAction<T extends PositionType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n contextMenuPosition: payload,\n };\n }\n}\nexport const setContextMenuPosition = new SetContextMenuPositionAction().bind();\n\nclass SetResizingPositionYAction<T extends [number, number, number]> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n resizingPositionY: payload,\n };\n }\n}\nexport const setResizingPositionY = new SetResizingPositionYAction().bind();\n\nclass SetResizingPositionXAction<T extends [number, number, number]> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n resizingPositionX: payload,\n };\n }\n}\nexport const setResizingPositionX = new SetResizingPositionXAction().bind();\n\nclass SetEnteringAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n entering: payload,\n };\n }\n}\nexport const setEntering = new SetEnteringAction().bind();\n\nclass UpdateSheetAction<T extends Sheet> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n sheetReactive: { current: payload },\n ...initSearchStatement(payload, store),\n ...restrictPoints(store, payload),\n };\n }\n}\nexport const updateSheet = new UpdateSheetAction().bind();\n\nclass SetEditorRectAction<T extends RectType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editorRect: payload,\n };\n }\n}\nexport const setEditorRect = new SetEditorRectAction().bind();\n\nclass SetDragging<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n dragging: payload,\n };\n }\n}\nexport const setDragging = new SetDragging().bind();\n\nclass BlurAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editingAddress: '',\n };\n }\n}\nexport const blur = new BlurAction().bind();\n\nclass CopyAction<T extends ZoneType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n return {\n ...store,\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingSheetId: sheet.id,\n copyingZone: payload,\n cutting: false,\n });\n },\n };\n }\n}\nexport const copy = new CopyAction().bind();\n\nclass CutAction<T extends ZoneType> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n return {\n ...store,\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingSheetId: sheet.id,\n copyingZone: payload,\n cutting: true,\n });\n },\n };\n }\n}\nexport const cut = new CutAction().bind();\n\nclass PasteAction<T extends { matrix: RawCellType[][]; onlyValue: boolean }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { choosing, selectingZone, sheetReactive: dstSheetRef } = store;\n const dstSheet = dstSheetRef.current;\n if (!dstSheet) {\n return store;\n }\n const { registry } = dstSheet;\n const { copyingSheetId, copyingZone, cutting } = registry;\n const srcSheet = dstSheet.getSheetBySheetId(copyingSheetId);\n\n let selectingArea = zoneToArea(selectingZone);\n const copyingArea = zoneToArea(copyingZone);\n const { matrix, onlyValue } = payload;\n\n if (cutting) {\n if (!srcSheet) {\n return store;\n }\n const src = copyingArea;\n const { rows: dy, cols: dx } = areaDiff(copyingArea);\n const dst: AreaType =\n selectingArea.top !== -1\n ? {\n top: selectingArea.top,\n left: selectingArea.left,\n bottom: selectingArea.top + dy,\n right: selectingArea.left + dx,\n }\n : {\n top: choosing.y,\n left: choosing.x,\n bottom: choosing.y + dy,\n right: choosing.x + dx,\n };\n\n const nextSelectingZone = restrictZone(areaToZone(dst));\n const newSheet = dstSheet.move({\n srcSheet,\n src,\n dst,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: srcSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n transmit: { copyingSheetId: srcSheet.id, copyingZone, cutting: true },\n }),\n redoReflection: compactReflection({\n sheetId: srcSheet.id,\n choosing,\n transmit: { copyingSheetId: srcSheet.id, copyingZone: resetZone },\n }),\n });\n\n return {\n ...store,\n ...initSearchStatement(newSheet, store),\n sheetReactive: { current: newSheet },\n selectingZone: nextSelectingZone,\n inputting: newSheet.getSerializedValue({ point: choosing, resolution: 'RAW' }),\n callback: ({ sheetReactive: sheetRef }) => {\n registry.transmit({\n cutting: false,\n copyingZone: resetZone,\n });\n },\n };\n }\n\n let newSheet: Sheet;\n let { y, x } = choosing;\n\n if (copyingArea.top === -1) {\n const { rows: height, cols: width } = matrixShape({ matrix, base: -1 });\n selectingArea = {\n top: y,\n left: x,\n bottom: y + height,\n right: x + width,\n };\n const nextSelectingZone = restrictZone(areaToZone(selectingArea));\n newSheet = dstSheet.writeRawCellMatrix({\n point: { y, x },\n matrix,\n onlyValue,\n undoReflection: compactReflection({\n sheetId: dstSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: dstSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n }),\n });\n } else {\n if (srcSheet == null) {\n return store;\n }\n let { rows: dy, cols: dx } = areaDiff(copyingArea);\n if (selectingArea.top !== -1) {\n y = selectingArea.top;\n x = selectingArea.left;\n const superposed = superposeArea(selectingArea, copyingArea);\n dy = superposed.rows;\n dx = superposed.cols;\n }\n selectingArea = { top: y, left: x, bottom: y + dy, right: x + dx };\n newSheet = dstSheet.copy({\n srcSheet,\n src: copyingArea,\n dst: selectingArea,\n onlyValue,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: srcSheet.id,\n transmit: { copyingZone },\n choosing,\n selectingZone,\n }),\n redoReflection: compactReflection({\n sheetId: srcSheet.id,\n transmit: { copyingSheetId: srcSheet.id, copyingZone: resetZone },\n choosing,\n selectingZone: areaToZone(selectingArea),\n }),\n });\n }\n\n const nextSelectingZone = restrictZone(areaToZone(selectingArea));\n nextSelectingZone.endX = Math.min(nextSelectingZone.endX, newSheet.numCols);\n nextSelectingZone.endY = Math.min(nextSelectingZone.endY, newSheet.numRows);\n return {\n ...store,\n sheetReactive: { current: newSheet },\n selectingZone: nextSelectingZone,\n inputting: newSheet.getSerializedValue({ point: choosing, resolution: 'RAW' }),\n ...initSearchStatement(newSheet, store),\n callback: ({ sheetReactive: sheetRef }) => {\n registry.transmit({\n copyingZone: resetZone,\n });\n },\n };\n }\n}\nexport const paste = new PasteAction().bind();\n\nclass EscapeAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n return {\n ...store,\n editingAddress: '',\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n callback: ({ sheetReactive: sheetRef }) => {\n sheetRef.current!.registry.transmit({\n copyingZone: resetZone,\n cutting: false,\n });\n },\n };\n }\n}\nexport const escape = new EscapeAction().bind();\n\nclass ChooseAction<T extends PointType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n choosing: payload,\n entering: true,\n };\n }\n}\nexport const choose = new ChooseAction().bind();\n\nclass SelectAction<T extends ZoneType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n selectingZone: payload,\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n };\n }\n}\nexport const select = new SelectAction().bind();\n\nclass SelectRowsAction<T extends { range: RangeType; numCols: number }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { range, numCols } = payload;\n const { start, end } = range;\n const sheet = store.sheetReactive.current;\n const selectingZone = {\n startY: start,\n startX: 1,\n endY: end,\n endX: numCols,\n };\n // Find the first non-filtered row in the selection for choosing\n let choosingY = start;\n if (sheet) {\n for (let y = start; y <= end; y++) {\n if (!sheet.isRowFiltered(y)) {\n choosingY = y;\n break;\n }\n }\n }\n return {\n ...store,\n selectingZone,\n choosing: { y: choosingY, x: 1 },\n leftHeaderSelecting: true,\n topHeaderSelecting: false,\n };\n }\n}\nexport const selectRows = new SelectRowsAction().bind();\n\nclass SelectColsAction<T extends { range: RangeType; numRows: number }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { range, numRows } = payload;\n const { start, end } = range;\n const sheet = store.sheetReactive.current;\n const selectingZone = {\n startY: 1,\n startX: start,\n endY: numRows,\n endX: end,\n };\n // Find the first non-filtered row (y=1 is always visible for columns, use y=1)\n // For columns there is no column-level filter, so choosing y=1 (first data row visible)\n let choosingY = 1;\n if (sheet) {\n for (let y = 1; y <= numRows; y++) {\n if (!sheet.isRowFiltered(y)) {\n choosingY = y;\n break;\n }\n }\n }\n return {\n ...store,\n selectingZone,\n choosing: { y: choosingY, x: start },\n leftHeaderSelecting: false,\n topHeaderSelecting: true,\n };\n }\n}\nexport const selectCols = new SelectColsAction().bind();\n\nclass DragAction<T extends PointType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { startY, startX } = store.selectingZone;\n const selectingZone = {\n startY,\n startX,\n endY: payload.y,\n endX: payload.x,\n };\n if (startY === payload.y && startX === payload.x) {\n selectingZone.endY = -1;\n selectingZone.endX = -1;\n }\n return { ...store, selectingZone };\n }\n}\nexport const drag = new DragAction().bind();\n\nclass SearchAction<T extends number> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { matchingCells } = store;\n let { matchingCellIndex, choosing } = store;\n matchingCellIndex += payload;\n if (matchingCellIndex >= matchingCells.length) {\n matchingCellIndex = 0;\n } else if (matchingCellIndex < 0) {\n matchingCellIndex = matchingCells.length - 1;\n }\n\n if (matchingCells.length > 0) {\n const address = matchingCells[matchingCellIndex];\n choosing = a2p(address);\n }\n return { ...store, matchingCells, matchingCellIndex, choosing };\n }\n}\nexport const search = new SearchAction().bind();\n\nclass WriteAction<T extends { value: string; point?: PointType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n let { value, point } = payload;\n const { choosing, selectingZone, sheetReactive: sheetRef } = store;\n if (point == null) {\n point = choosing;\n }\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n const newSheet = sheet.write({\n point: point,\n value,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing: point,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing: point,\n }),\n });\n return {\n ...store,\n ...initSearchStatement(newSheet, store),\n sheetReactive: { current: newSheet },\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingZone: resetZone,\n });\n },\n };\n }\n}\nexport const write = new WriteAction().bind();\n\nclass ClearAction<T extends null> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { choosing, selectingZone, sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n\n let selectingArea = zoneToArea(selectingZone);\n if (selectingArea.top === -1) {\n const { y, x } = choosing;\n selectingArea = { top: y, left: x, bottom: y, right: x };\n }\n const { top, left, bottom, right } = selectingArea;\n const diff: CellsByAddressType = {};\n let diffCount = 0;\n for (let y = top; y <= bottom; y++) {\n if (sheet.isRowFiltered(y)) {\n continue;\n }\n for (let x = left; x <= right; x++) {\n const cell = sheet.getCell({ y, x }, { resolution: 'SYSTEM' });\n const address = p2a({ y, x });\n if (prevention.hasOperation(cell?.prevention, prevention.Write)) {\n continue;\n }\n // Spilled cells are derived from the origin cell's formula and should\n // not be cleared independently — doing so would blank the FormulaBar\n // while the spill re-populates the value on next evaluation.\n if (sheet.getSystem({ y, x })?.spilledFrom != null) {\n continue;\n }\n if (cell?.value != null) {\n diff[address] = { value: undefined };\n diffCount++;\n }\n }\n }\n if (diffCount === 0) {\n return store;\n }\n sheet.update({\n diff,\n partial: true,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const clear = new ClearAction().bind();\n\nclass UndoAction<T extends null> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n const { history, callback } = sheet.undo();\n if (history == null) {\n return store;\n }\n if (history.dstSheetId !== sheet.id) {\n const { dispatch, store: dstStore } = sheet.registry.contextsBySheetId[history.dstSheetId];\n dispatch(\n setStore({\n ...dstStore,\n ...history.undoReflection,\n sheetReactive: { current: dstStore.sheetReactive.current },\n }),\n );\n flashSheet(dstStore.flashRef.current);\n // For cross-sheet MOVE: the src (current) sheet's lastChangedAddresses was also updated.\n // Return updated sheetReactive so this sheet's Emitter fires onChange.\n if (history.srcSheetId === sheet.id) {\n return flashWithCallback(store, sheet, callback);\n }\n return store;\n }\n return {\n ...store,\n ...restrictPoints(store, sheet),\n ...history.undoReflection,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n };\n }\n}\nexport const undo = new UndoAction().bind();\n\nclass RedoAction<T extends null> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const { history, newSheet, callback } = sheet.redo();\n if (history == null) {\n return store;\n }\n if (history.dstSheetId !== sheet.id) {\n const { dispatch, store: dstStore } = sheet.registry.contextsBySheetId[history.dstSheetId];\n dispatch(\n setStore({\n ...dstStore,\n ...history.redoReflection,\n sheetReactive: { current: dstStore.sheetReactive.current },\n }),\n );\n flashSheet(dstStore.flashRef.current);\n // For cross-sheet MOVE: the src (current) sheet's lastChangedAddresses was also updated.\n // Return updated sheetReactive so this sheet's Emitter fires onChange.\n if (history.srcSheetId === sheet.id) {\n return flashWithCallback(store, sheet, callback);\n }\n return store;\n }\n return {\n ...store,\n ...restrictPoints(store, sheet),\n ...history.redoReflection,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n };\n }\n}\nexport const redo = new RedoAction().bind();\n\nclass ArrowAction<\n T extends {\n shiftKey: boolean;\n deltaY: number;\n deltaX: number;\n numRows: number;\n numCols: number;\n },\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { shiftKey, deltaY, deltaX, numRows, numCols } = payload;\n const { choosing, sheetReactive: sheetRef, tabularRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n let { selectingZone } = store;\n const { y, x } = choosing;\n if (shiftKey) {\n const [dragEndY, dragEndX] = [\n selectingZone.endY === -1 ? y : selectingZone.endY,\n selectingZone.endX === -1 ? x : selectingZone.endX,\n ];\n const [nextY, nextX] = [dragEndY + deltaY, dragEndX + deltaX];\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n selectingZone =\n y === nextY && x === nextX\n ? { startY: -1, startX: -1, endY: -1, endX: -1 }\n : { startY: y, startX: x, endY: nextY, endX: nextX };\n return {\n ...store,\n selectingZone,\n };\n }\n const [nextY, nextX] = [y + deltaY, x + deltaX];\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n // Skip hidden rows\n let resolvedY = nextY;\n if (sheet.isRowFiltered(resolvedY)) {\n const dir = deltaY >= 0 ? 1 : -1;\n while (resolvedY >= 1 && resolvedY <= numRows && sheet.isRowFiltered(resolvedY)) {\n resolvedY += dir;\n }\n if (resolvedY < 1 || resolvedY > numRows) {\n return store; // no visible row in that direction\n }\n }\n let { y: editorTop, x: editorLeft, height, width } = store.editorRect;\n if (deltaY > 0) {\n for (let i = y; i < resolvedY; i++) {\n editorTop += sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n } else if (deltaY < 0) {\n for (let i = y - 1; i >= resolvedY; i--) {\n editorTop -= sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n }\n if (deltaX > 0) {\n for (let i = x; i < nextX; i++) {\n editorLeft += sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n } else if (deltaX < 0) {\n for (let i = x - 1; i >= nextX; i--) {\n editorLeft -= sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n }\n\n const cell = sheet.getCell({ y: resolvedY, x: nextX }, { resolution: 'SYSTEM' });\n height = cell?.height || DEFAULT_HEIGHT;\n width = cell?.width || DEFAULT_WIDTH;\n\n smartScroll(sheet, tabularRef.current, { y: resolvedY, x: nextX });\n return {\n ...store,\n selectingZone: { startY: -1, startX: -1, endY: -1, endX: -1 },\n choosing: { y: resolvedY, x: nextX } as PointType,\n editorRect: { y: editorTop, x: editorLeft, height, width },\n };\n }\n}\nexport const arrow = new ArrowAction().bind();\n\nclass WalkAction<\n T extends {\n deltaY: number;\n deltaX: number;\n numRows: number;\n numCols: number;\n },\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, numCols } = payload;\n let { deltaY, deltaX } = payload;\n const { choosing, selectingZone, sheetReactive: sheetRef, tabularRef: gridOuterRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n let { y: editorTop, x: editorLeft, height, width } = store.editorRect;\n const { y, x } = choosing;\n const selectingArea = zoneToArea(selectingZone);\n const { top, left, bottom, right } = selectingArea;\n let [nextY, nextX] = [y + deltaY, x + deltaX];\n if (nextY < top && top !== -1) {\n deltaY = bottom - nextY;\n nextY = bottom;\n if (nextX > left) {\n nextX--;\n deltaX--;\n } else {\n deltaX = right - nextX;\n nextX = right;\n }\n }\n if (nextY > bottom && bottom !== -1) {\n deltaY = top - nextY;\n nextY = top;\n if (nextX < right) {\n nextX++;\n deltaX++;\n } else {\n deltaX = left - nextX;\n nextX = left;\n }\n }\n if (nextX < left && left !== -1) {\n deltaX = right - nextX;\n nextX = right;\n if (nextY > top) {\n nextY--;\n deltaY--;\n } else {\n deltaY = bottom - nextY;\n nextY = bottom;\n }\n }\n if (nextX > right && right !== -1) {\n deltaX = left - nextX;\n nextX = left;\n if (nextY < bottom) {\n nextY++;\n deltaY++;\n } else {\n deltaY = top - nextY;\n nextY = top;\n }\n }\n\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n\n // Skip hidden rows\n if (sheet.isRowFiltered(nextY)) {\n const dir = deltaY >= 0 ? 1 : -1;\n const lo = top !== -1 ? top : 1;\n const hi = bottom !== -1 ? bottom : numRows;\n while (nextY >= lo && nextY <= hi && sheet.isRowFiltered(nextY)) {\n nextY += dir;\n }\n if (nextY < lo || nextY > hi || sheet.isRowFiltered(nextY)) {\n return store; // no visible row in range\n }\n }\n\n if (deltaY > 0) {\n for (let i = y; i < nextY; i++) {\n editorTop += sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n } else if (deltaY < 0) {\n for (let i = y - 1; i >= nextY; i--) {\n editorTop -= sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n }\n if (deltaX > 0) {\n for (let i = x; i < nextX; i++) {\n editorLeft += sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n } else if (deltaX < 0) {\n for (let i = x - 1; i >= nextX; i--) {\n editorLeft -= sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n }\n const cell = sheet.getCell({ y: nextY, x: nextX }, { resolution: 'SYSTEM' });\n height = cell?.height || DEFAULT_HEIGHT;\n width = cell?.width || DEFAULT_WIDTH;\n smartScroll(sheet, gridOuterRef.current, { y: nextY, x: nextX });\n return {\n ...store,\n choosing: { y: nextY, x: nextX } as PointType,\n editorRect: { y: editorTop, x: editorLeft, height, width },\n };\n }\n}\nexport const walk = new WalkAction().bind();\n\nclass SetInputtingAction<T extends string> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n inputting: payload,\n };\n }\n}\n\nexport const setInputting = new SetInputtingAction().bind();\n\nclass InsertRowsAboveAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.insertRows({\n y,\n numRows,\n baseY: y,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertRowsAbove = new InsertRowsAboveAction().bind();\n\nclass InsertRowsBelowAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const nextSelectingZone = {\n ...selectingZone,\n startY: selectingZone.startY + numRows,\n endY: selectingZone.endY + numRows,\n };\n const nextChoosing = { ...choosing, y: choosing.y + numRows };\n\n sheet.insertRows({\n y: y + 1,\n numRows,\n baseY: y,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n }),\n });\n return {\n ...store,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertRowsBelow = new InsertRowsBelowAction().bind();\n\nclass InsertColsLeftAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.insertCols({\n x,\n numCols,\n baseX: x,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertColsLeft = new InsertColsLeftAction().bind();\n\nclass InsertColsRightAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const nextSelectingZone = {\n ...selectingZone,\n startX: selectingZone.startX + numCols,\n endX: selectingZone.endX + numCols,\n };\n const nextChoosing = { ...choosing, x: choosing.x + numCols };\n\n selectingZone.startX += numCols;\n selectingZone.endX += numCols;\n\n sheet.insertCols({\n x: x + 1,\n numCols,\n baseX: x,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n }),\n });\n return {\n ...store,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertColsRight = new InsertColsRightAction().bind();\n\nclass RemoveRowsAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.removeRows({\n y,\n numRows,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n sheetHeight: store.sheetHeight,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n\n // Move the selection to the adjacent row that shifted into the deleted position\n // (clamped to the last row), skipping filtered rows so it stays visible.\n const numRows2 = sheet.numRows;\n const numCols2 = sheet.numCols;\n let adjY = Math.max(1, Math.min(y, numRows2));\n if (sheet.isRowFiltered(adjY)) {\n let found = -1;\n for (let yy = adjY; yy <= numRows2; yy++) {\n if (!sheet.isRowFiltered(yy)) {\n found = yy;\n break;\n }\n }\n if (found === -1) {\n for (let yy = adjY; yy >= 1; yy--) {\n if (!sheet.isRowFiltered(yy)) {\n found = yy;\n break;\n }\n }\n }\n if (found !== -1) {\n adjY = found;\n }\n }\n\n return {\n ...store,\n sheetReactive: { current: sheet },\n selectingZone: { startY: adjY, startX: 1, endY: adjY, endX: numCols2 },\n choosing: { y: adjY, x: 1 },\n leftHeaderSelecting: true,\n topHeaderSelecting: false,\n };\n }\n}\nexport const removeRows = new RemoveRowsAction().bind();\n\nclass RemoveColsAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.removeCols({\n x,\n numCols,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n sheetWidth: store.sheetWidth,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n\n // Move the selection to the adjacent column that shifted into the deleted position\n // (clamped to the last column). choosing.y lands on the first visible row.\n const numCols2 = sheet.numCols;\n const numRows2 = sheet.numRows;\n const adjX = Math.max(1, Math.min(x, numCols2));\n let choosingY = 1;\n for (let yy = 1; yy <= numRows2; yy++) {\n if (!sheet.isRowFiltered(yy)) {\n choosingY = yy;\n break;\n }\n }\n\n return {\n ...store,\n sheetReactive: { current: sheet },\n selectingZone: { startY: 1, startX: adjX, endY: numRows2, endX: adjX },\n choosing: { y: choosingY, x: adjX },\n leftHeaderSelecting: false,\n topHeaderSelecting: true,\n };\n }\n}\nexport const removeCols = new RemoveColsAction().bind();\n\nclass SortRowsAction<T extends { x: number; direction: 'asc' | 'desc' }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { x, direction } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.sortRows({ x, direction });\n const reflection = compactReflection({ sheetId: sheet.id, selectingZone, choosing });\n if (sheet.registry.lastHistory) {\n sheet.registry.lastHistory.undoReflection = reflection;\n sheet.registry.lastHistory.redoReflection = reflection;\n }\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const sortRows = new SortRowsAction().bind();\n\nclass FilterRowsAction<T extends { x?: number; filter?: FilterConfig }> extends CoreAction<T> {\n mutation = true;\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { x, filter } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.filterRows({ x, filter });\n const reflection = compactReflection({ sheetId: sheet.id, selectingZone, choosing });\n if (sheet.registry.lastHistory) {\n sheet.registry.lastHistory.undoReflection = reflection;\n sheet.registry.lastHistory.redoReflection = reflection;\n }\n let newChoosing = choosing;\n if (sheet.isRowFiltered(choosing.y)) {\n for (let y = 1; y <= sheet.numRows; y++) {\n if (!sheet.isRowFiltered(y)) {\n newChoosing = { y, x: choosing.x };\n break;\n }\n }\n }\n return {\n ...store,\n choosing: newChoosing,\n selectingZone: newChoosing !== choosing ? resetZone : selectingZone,\n sheetReactive: { current: sheet },\n callback: ({ sheetReactive: sheetRef }) => {\n const t = sheetRef.current;\n if (t) {\n t.registry.transmit({\n cutting: false,\n copyingZone: resetZone,\n });\n }\n },\n };\n }\n}\nexport const filterRows = new FilterRowsAction().bind();\n\nclass SetColumnMenuAction<\n T extends { x: number; position: { y: number; x: number }; focusLabel?: boolean } | null,\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n columnMenuState: payload,\n };\n }\n}\nexport const setColumnMenu = new SetColumnMenuAction().bind();\n\nclass SetRowMenuAction<T extends { y: number; position: { y: number; x: number } } | null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n rowMenuState: payload,\n };\n }\n}\nexport const setRowMenu = new SetRowMenuAction().bind();\n\nclass SetEditorHoveringAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editorHovering: payload,\n };\n }\n}\nexport const setEditorHovering = new SetEditorHoveringAction().bind();\n\nclass setStoreAction<T extends Partial<StoreType>> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n ...payload,\n };\n }\n}\nexport const setStore = new setStoreAction().bind();\n\nexport const userActions = {\n blur,\n copy,\n cut,\n paste,\n escape,\n choose,\n select,\n selectRows,\n selectCols,\n drag,\n search,\n write,\n clear,\n undo,\n redo,\n arrow,\n walk,\n insertRowsAbove,\n insertRowsBelow,\n insertColsLeft,\n insertColsRight,\n removeRows,\n removeCols,\n sortRows,\n filterRows,\n};\n","import { useEffect, useState, useRef } from 'react';\nimport { createBook, type BookType, type RegistryProps, type TransmitProps } from '@gridsheet/web';\nimport { updateSheet } from '../store/actions';\n\n// Return the document object with SSR.\nexport const useBrowser = () => {\n const [ok, setOk] = useState(false);\n useEffect(() => {\n setOk(true);\n }, []);\n if (ok && typeof window !== 'undefined') {\n return { window, document };\n }\n return { window: null, document: null };\n};\n\nexport const useDebounce = <T>(value: T, delay = 100) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n const timerRef = useRef<number>();\n\n useEffect(() => {\n timerRef.current = window.setTimeout(() => setDebouncedValue(value), delay);\n return () => {\n window.clearTimeout(timerRef.current);\n };\n }, [value, delay]);\n return debouncedValue;\n};\n\nexport const useDebounceCallback = (callback: (...args: any[]) => void, delay = 100) => {\n const debouncedCallback = useRef(callback);\n const timerRef = useRef<number>();\n\n useEffect(() => {\n debouncedCallback.current = callback;\n }, [callback]);\n\n return (...args: any[]) => {\n window.clearTimeout(timerRef.current);\n timerRef.current = window.setTimeout(() => {\n debouncedCallback.current(...args);\n }, delay);\n };\n};\n\nexport const useBook = (props: RegistryProps = {}) => {\n const [book, setBook] = useState<BookType>(() => createBook(props));\n const { registry } = book;\n registry.updateSheet = updateSheet;\n registry.transmit = (patch?: TransmitProps) => {\n Object.assign(registry, patch);\n if (!registry.ready) {\n return;\n }\n requestAnimationFrame(() => setBook({ registry }));\n };\n useEffect(() => {\n Object.assign(registry, props);\n }, [props]);\n return book;\n};\n"],"names":["ps","J","jt","Dr","vr","Re","_e","kr","Pr","$r","Lr","$e","Zt","ms","gs","ys","Ft","Dt","vt","qt","gt","yt","ws","r","t","e","i","xs","W","_t","Et","bs","D","N","Le","Hr","Yr","Br","He","Ur","Ae","Ss","Rs","Ee","zr","Vr","Wr","_s","Xr","Kt","Nt","jr","Gr","Zr","se","qr","Es","a","c","f","d","As","l","u","h","Cs","Kr","Is","Ts","s","n","o","Jr","Qr","tn","m","g","en","sn","rn","et","b","Ms","Ce","x","ut","At","wt","k$1","k","B","Pt","rt","ie","Os","Ns","Ye","dt","Be","Jt","Qt","kt","Fs","Ds","vs","Ue","ks","I","Ps","$s","Ie","Ls","Hs","L","Ys","Bs","$t","Us","ze","nn","on","zs","Ct","bt","Lt","tt","Ve","Vs","an","cn","ln","hn","un","dn","We","Ws","fn","Bt","Ut","re","ne","oe","ae","It","Tt","ht","zt","ce","Vt","le","he","ue","Wt","Xs","Xe","St","je","Ge","Ze","qe","Ke","Je","js","Gs","O","Zs","pn","H","fs","ds","Qe","qs","Ks","Js","Qs","ts","ti","de","Q","xt","ei","j","ft","pt","mt","si","ii","ri","ni","oi","ai","ci","li","hi","ui","di","Te","fi","lt","Me","pi","$$1","$","ye","p","y","R","A","w","S","_","te","M","T","C","Y","U","G","V","q","P","K","v","ct","os","xe","as","Xt","cs","be","ls","hs","Se","us","Z","nt","Oe","ee","mi","es","Rt","gi","yi","wi","xi","Gt","fe","X","F","pe","ss","is","me","bi","ge","Mt","Ot","Si","Ri","_i","ot","mn","gn","Ei","at","Ai","Ne","Fe","Yt","E","we","De","Ci","Ii","Ti","Mi","Oi","Ni","Fi","Di","vi","ki","Pi","$i","Li","Hi","Yi","Bi","Ui","zi","Vi","Wi","Xi","ji","Gi","Zi","qi","Ki","Ji","Qi","tr","er","sr","ir","rr","nr","or","ar","cr","lr","hr","ur","dr","ve","fr","pr","mr","gr","yr","wr","xr","br","Sr","Rr","_r","Er","Ar","Cr","rs","ke","yn","Ir","xn","Tr","bn","Sn","Rn","_n","z","Pe","En","Mr","st","it","ns","Ht","compactReflection","reflection","result","restrictPoints","store","sheet","choosing","selectingZone","y1","x1","y2","x2","numRows","numCols","FLASH_CLASS","FLASH_DURATION_MS","flashSheet","el","flashWithCallback","callback","initSearchStatement","searchQuery","searchCaseSensitive","searchRegex","searchRange","matchingCells","matcher","flags","regex","startY","endY","startX","endX","x2c","y2r","matchingCellIndex","address","a2p","isXSheetFocused","sheetId","sheetRef","resetZone","actions","reducer","action","act","registry","_a","_b","cached","newStore","_CoreAction","payload","CoreAction","isMutationAction","type","SetSearchQueryAction","setSearchQuery","SetSearchCaseSensitiveAction","setSearchCaseSensitive","SetSearchRegexAction","setSearchRegex","SetSearchRangeAction","setSearchRange","SetEditingAddressAction","setEditingAddress","SetAutofillDraggingToAction","setAutofillDraggingTo","SubmitAutofillAction","autofill","Autofill","areaToZone","submitAutofill","SetContextMenuPositionAction","setContextMenuPosition","SetResizingPositionYAction","setResizingPositionY","SetResizingPositionXAction","setResizingPositionX","SetEnteringAction","setEntering","UpdateSheetAction","updateSheet","SetEditorRectAction","setEditorRect","SetDragging","setDragging","BlurAction","blur","CopyAction","copy","CutAction","cut","PasteAction","dstSheetRef","dstSheet","copyingSheetId","copyingZone","cutting","srcSheet","selectingArea","zoneToArea","copyingArea","matrix","onlyValue","src","dy","dx","areaDiff","dst","nextSelectingZone","restrictZone","newSheet","height","width","matrixShape","superposed","superposeArea","paste","EscapeAction","escape","ChooseAction","choose","SelectAction","select","SelectRowsAction","range","start","end","choosingY","selectRows","SelectColsAction","selectCols","DragAction","drag","SearchAction","search","WriteAction","value","point","write","ClearAction","top","left","bottom","right","diff","diffCount","cell","p2a","prevention","clear","UndoAction","history","dispatch","dstStore","setStore","undo","RedoAction","redo","ArrowAction","shiftKey","deltaY","deltaX","tabularRef","dragEndY","dragEndX","nextY","nextX","resolvedY","dir","editorTop","editorLeft","DEFAULT_HEIGHT","_c","DEFAULT_WIDTH","_d","smartScroll","arrow","WalkAction","gridOuterRef","lo","walk","SetInputtingAction","setInputting","InsertRowsAboveAction","operator","insertRowsAbove","InsertRowsBelowAction","editorRef","nextChoosing","insertRowsBelow","InsertColsLeftAction","insertColsLeft","InsertColsRightAction","insertColsRight","RemoveRowsAction","numRows2","numCols2","adjY","found","yy","removeRows","RemoveColsAction","adjX","removeCols","SortRowsAction","direction","sortRows","FilterRowsAction","filter","newChoosing","filterRows","SetColumnMenuAction","setColumnMenu","SetRowMenuAction","setRowMenu","SetEditorHoveringAction","setEditorHovering","setStoreAction","userActions","useBrowser","ok","setOk","useState","useEffect","useDebounceCallback","delay","debouncedCallback","useRef","timerRef","args","useBook","props","book","setBook","createBook","patch"],"mappings":";;;;AAGK,MAACA,KAAK,IAAIC,IAAI,IAAIC,IAAK,IAAIC,KAAK,KAAKC,KAAK,KAAKC,KAAK,IAAIC,KAAK,IAAIC,KAAK,GAAGC,KAAK,GAAGC,KAAK,GAAGC,KAAK,IAAIC,KAAK,KAAKC,KAAK,OAAOC,KAAK,4BAA4BC,KAAK;AAAA,EACjK,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AACR,GAAGC,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,GAAGC,KAAK,WAAWC,KAAK,cAAcC,KAAK,cAAcC,KAAK,8BAA8BC,KAAqB,oBAAI,IAAK,GAAEC,KAAqB,oBAAI,IAAG,GAAIC,KAAK,CAACC,GAAGC,IAAIb,OAAO;AACzM,QAAMc,IAAIL,GAAG,IAAI,EAAEG,CAAC;AACpB,MAAIE,KAAK;AACP,WAAOA;AACT,MAAIF,MAAM;AACR,WAAO;AACT,MAAI,IAAIA,GAAGG,IAAI;AACf;AACE,IAAAA,IAAIP,GAAG,EAAE,IAAI,EAAE,IAAIO,GAAG,IAAI,KAAK,MAAM,IAAI,EAAE;AAAA,SACtC,IAAI;AACX,EAAAN,GAAG,IAAIG,GAAGG,CAAC;AACX,QAAM,IAAIN,GAAG,KAAM;AACnB,WAAS,IAAI,EAAE,QAAQA,GAAG,OAAOI,GAAG,IAAI,EAAE,KAAM;AAC9C,IAAAJ,GAAG,OAAO,EAAE,KAAK;AACnB,SAAOM;AACT,GAAGC,KAAK,CAACJ,GAAGC,IAAIb,OAAO;AACrB,QAAMc,IAAIJ,GAAG,IAAIE,CAAC;AAClB,MAAIE,KAAK;AACP,WAAOA;AACT,MAAIF,MAAM;AACR,WAAO;AACT,QAAM,IAAIA;AACV,MAAIG,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,UAAM,IAAI,EAAE,EAAE,SAAS,IAAI,CAAC,GAAG,IAAIP,GAAG,QAAQ,CAAC,IAAI;AACnD,IAAAO,KAAKP,GAAG,UAAU,IAAI;AAAA,EAC1B;AACE,EAAAE,GAAG,IAAIE,GAAGG,CAAC;AACX,QAAM,IAAIL,GAAG,KAAM;AACnB,WAAS,IAAI,EAAE,QAAQA,GAAG,OAAOG,GAAG,IAAI,EAAE,KAAM;AAC9C,IAAAH,GAAG,OAAO,EAAE,KAAK;AACnB,SAAOK;AACT,GAAGE,IAAI,CAACL,MAAM;AACZ,MAAIA,MAAM;AACR,WAAO;AACT,QAAMC,IAAIF,GAAGC,IAAI,CAAC;AAClB,SAAOA,IAAI,IAAI,IAAIC,CAAC,KAAKA;AAC3B,GAAGK,KAAK,CAACN,GAAGC,IAAI,OAAO;AACrB,QAAMC,IAAIE,GAAGJ,EAAE,YAAW,CAAE;AAC5B,SAAOC,IAAI,CAACC,IAAIA;AAClB,GAAGK,KAAK,CAACP,MAAMA,MAAM,IAAI,KAAKA,IAAI,IAAI,IAAIA,CAAC,KAAK,OAAOA,CAAC,GAAGQ,KAAK,CAACR,GAAGC,IAAI,QAAQ,OAAOD,KAAK,aAAaA,IAAI,SAASA,GAAG,EAAE,IAAIC,IAAI,CAACD,IAAIA,IAAIS,IAAI,CAAC,EAAE,GAAGT,GAAG,GAAGC,GAAG,MAAMC,GAAG,MAAM,QAAQ;AACpL,MAAID,MAAM,MAAMD,MAAM;AACpB,WAAO;AACT,QAAMG,IAAIF,MAAM,SAAS,KAAKA,MAAM,IAAI,MAAM,GAAGC,IAAI,MAAM,EAAE,GAAGG,EAAEJ,CAAC,CAAC,IAAI,IAAID,MAAM,SAAS,KAAKA,MAAM,IAAI,MAAM,GAAG,IAAI,MAAM,EAAE,GAAGO,GAAGP,CAAC,CAAC;AACvI,SAAO,GAAGG,CAAC,GAAG,CAAC;AACjB,GAAGO,IAAI,CAACV,MAAM;AACZ,QAAMC,IAAID,EAAE,MAAM,+BAA+B;AACjD,MAAIC,KAAK;AACP,WAAO,EAAE,GAAG,IAAI,GAAG,GAAI;AACzB,QAAM,CAAA,EAAGC,GAAG,GAAGC,GAAG,CAAC,IAAIF,EAAE,MAAK,GAAI,CAAC,GAAG,CAAC,IAAI,CAACC,KAAK,MAAMC,KAAK,IAAI;AAChE,SAAO,MAAM,MAAM,MAAM,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,MAAM,IAAI,MAAM,GAAE,IAAK,EAAE,GAAGK,GAAG,CAAC,KAAK,GAAG,GAAGF,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,EAAG;AACzH,GAAGK,KAAK,CAACX,GAAGC,GAAGC,MAAM;AACnB,QAAM,IAAIF,EAAE,MAAM,kBAAkB;AACpC,MAAI,KAAK;AACP,WAAOA;AACT,QAAM,CAAG,EAAAG,GAAG,CAAC,IAAI,EAAE,MAAO;AAC1B,SAAO,GAAGF,IAAI,MAAM,EAAE,GAAGE,EAAE,YAAa,CAAA,GAAGD,IAAI,MAAM,EAAE,GAAG,CAAC;AAC7D,GAAGU,KAAK,CAACZ,MAAM,IAAIA,CAAC,IAAIa,KAAK,CAACb,MAAM,OAAOA,KAAK,WAAW,GAAGK,EAAEL,CAAC,CAAC,MAAM,GAAGA,EAAE,YAAa,CAAA,KAAKc,KAAK,CAACd,MAAMA,EAAE,QAAQ,OAAO,EAAE,GAAGe,KAAK,CAACf,GAAGC,IAAI,IAAIC,IAAI,OAAO,GAAGD,IAAI,MAAM,EAAE,IAAID,CAAC,GAAGE,IAAI,MAAM,EAAE,IAAIc,KAAK,CAAChB,GAAGC,MAAM;AACjN,QAAM,EAAE,MAAMC,GAAG,MAAM,EAAC,IAAKe,GAAGjB,CAAC,GAAG,EAAE,MAAMG,GAAG,MAAM,EAAG,IAAGc,GAAGhB,CAAC;AAC/D,SAAO;AAAA,IACL,MAAMC,IAAIC,IAAID,IAAIC;AAAA,IAClB,MAAM,IAAI,IAAI,IAAI;AAAA,EACnB;AACH,GAAGe,KAAK,CAAClB,GAAGC,MAAM;AAChB,QAAMC,IAAI,EAAE,GAAGF,EAAG;AAClB,SAAOC,EAAE,OAAOD,EAAE,SAASE,EAAE,OAAOD,EAAE,OAAOA,EAAE,QAAQD,EAAE,UAAUE,EAAE,QAAQD,EAAE,QAAQA,EAAE,MAAMD,EAAE,QAAQE,EAAE,MAAMD,EAAE,MAAMA,EAAE,SAASD,EAAE,WAAWE,EAAE,SAASD,EAAE,SAASC;AACzK,GAAGiB,KAAK,CAACnB,MAAM;AACb,MAAIA,EAAE,SAAS,MAAMA,EAAE,SAAS;AAC9B,WAAO,EAAE,KAAK,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,GAAI;AACrD,QAAM,CAACC,GAAGC,CAAC,IAAIF,EAAE,SAASA,EAAE,OAAO,CAACA,EAAE,QAAQA,EAAE,IAAI,IAAI,CAACA,EAAE,MAAMA,EAAE,MAAM,GAAG,CAAC,GAAGG,CAAC,IAAIH,EAAE,SAASA,EAAE,OAAO,CAACA,EAAE,QAAQA,EAAE,IAAI,IAAI,CAACA,EAAE,MAAMA,EAAE,MAAM;AAC/I,SAAO,EAAE,KAAKC,GAAG,MAAM,GAAG,QAAQC,GAAG,OAAOC,EAAG;AACjD,GAAGiB,KAAK,CAACpB,OAAO;AAAA,EACd,QAAQA,EAAE;AAAA,EACV,QAAQA,EAAE;AAAA,EACV,MAAMA,EAAE;AAAA,EACR,MAAMA,EAAE;AACV,IAAIqB,KAAK,CAACrB,MAAM;AACd,QAAM,EAAE,KAAKC,GAAG,MAAMC,GAAG,QAAQ,GAAG,OAAOC,EAAC,IAAKH;AACjD,MAAIC,MAAM,KAAKC,MAAMC;AACnB,WAAOM,EAAE,EAAE,GAAGR,GAAG,GAAGC,EAAC,CAAE;AACzB,QAAM,IAAIO,EAAE,EAAE,GAAGR,GAAG,GAAGC,EAAC,CAAE,GAAG,IAAIO,EAAE,EAAE,GAAG,GAAG,GAAGN,GAAG;AACjD,SAAO,GAAG,CAAC,IAAI,CAAC;AAClB,GAAGmB,KAAK,CAACtB,GAAGC,MAAMD,EAAE,UAAU,MAAMA,EAAE,QAAQ,KAAK,KAAKA,EAAE,SAASC,KAAKA,KAAKD,EAAE,OAAOA,EAAE,OAAOC,KAAKA,KAAKD,EAAE,OAAOuB,KAAK,CAACvB,GAAGC,MAAM;AAC/H,MAAID,EAAE,QAAQ,MAAMA,EAAE,SAAS,MAAMA,EAAE,WAAW,MAAMA,EAAE,UAAU;AAClE,WAAO;AACT,QAAM,EAAE,GAAGE,GAAG,GAAG,EAAC,IAAKD,GAAG,EAAE,KAAKE,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAC,IAAKH;AACrE,SAAOG,KAAKD,KAAKA,KAAK,KAAK,KAAK,KAAK,KAAK;AAC5C,GAAGsB,KAAK,CAACxB,MAAMA,EAAE,SAAS,MAAMA,EAAE,SAAS,KAAK,EAAE,MAAM,GAAG,MAAM,EAAC,IAAK;AAAA,EACrE,MAAM,KAAK,IAAIA,EAAE,SAASA,EAAE,IAAI;AAAA,EAChC,MAAM,KAAK,IAAIA,EAAE,SAASA,EAAE,IAAI;AAClC,GAAGyB,KAAK,CAACzB,MAAMA,EAAE,SAAS,MAAMA,EAAE,SAAS,KAAK,EAAE,MAAM,GAAG,MAAM,EAAC,IAAK;AAAA,EACrE,MAAM,IAAI,KAAK,IAAIA,EAAE,SAASA,EAAE,IAAI;AAAA,EACpC,MAAM,IAAI,KAAK,IAAIA,EAAE,SAASA,EAAE,IAAI;AACtC,GAAGiB,KAAK,CAACjB,OAAO;AAAA,EACd,MAAM,KAAK,IAAIA,EAAE,MAAMA,EAAE,MAAM;AAAA,EAC/B,MAAM,KAAK,IAAIA,EAAE,OAAOA,EAAE,KAAK;AACjC,IAAI0B,KAAK,CAAC1B,OAAO;AAAA,EACf,MAAM,IAAI,KAAK,IAAIA,EAAE,MAAMA,EAAE,MAAM;AAAA,EACnC,MAAM,IAAI,KAAK,IAAIA,EAAE,OAAOA,EAAE,KAAK;AACrC,IAAI2B,KAAK,CAAC,EAAE,MAAM3B,IAAI,GAAG,QAAQC,QAAQ;AACvC,QAAMC,IAAID,EAAE;AACZ,SAAOC,MAAM,IAAI,EAAE,MAAM,GAAG,MAAM,MAAM,EAAE,MAAMF,IAAIE,GAAG,MAAMF,IAAIC,EAAE,CAAC,EAAE,OAAQ;AAChF,GAAG2B,KAAK,CAAC5B,GAAGC,GAAGC,IAAI,MAAM,MAAM,KAAK,EAAE,SAASD,IAAID,IAAI,KAAKE,IAAI,EAAG,GAAE,CAAC,GAAGC,MAAMH,IAAIG,IAAID,CAAC,GAAG2B,KAAK,CAAC7B,GAAGC,MAAM;AACxG,QAAMC,IAAI,CAAE;AACZ,SAAOF,EAAE,QAAQ,CAAC,MAAM;AACtB,UAAMG,IAAI,CAAE;AACZ,IAAAF,EAAE,QAAQ,CAAC,MAAM;AACf,MAAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAAA,IACjB,CAAK,GAAGD,EAAE,KAAKC,CAAC;AAAA,EACb,CAAA,GAAGD;AACN,GAAG4B,KAAK,CAAC9B,GAAGC,MAAM;AAChB,QAAMC,IAAI,CAAE;AACZ,SAAOF,EAAE,QAAQ,CAAC,MAAM;AACtB,UAAMG,IAAI,CAAE;AACZ,MAAE,QAAQ,CAAC,GAAG,MAAM;AAClB,UAAI,KAAKF,EAAE;AACT;AACF,YAAM,IAAIA,EAAE,CAAC;AACb,MAAAE,EAAE,CAAC,IAAI;AAAA,IACb,CAAK,GAAGD,EAAE,KAAKC,CAAC;AAAA,EACb,CAAA,GAAGD;AACN,GAAG6B,KAAK,CAAC/B,GAAGC,GAAGC,MAAM,CAAC,GAAG,MAAMF,CAAC,CAAC,EAAE,IAAI,MAAM,MAAMC,CAAC,EAAE,KAAKC,CAAC,CAAC,GAAG8B,KAAK,CAAC;AAAA,EACpE,OAAOhC,IAAI,CAAE;AAAA,EACb,SAASC,IAAI,CAAE;AAAA,EACf,QAAQC,IAAI,CAAE;AAAA,EACd,WAAW,IAAI;AAAA,EACf,QAAQC,IAAI;AACd,MAAM8B,GAAG;AAAA,EACP,OAAOjC;AAAA,EACP,SAASC;AAAA,EACT,UAAU,EAAE,CAACE,CAAC,GAAGD,EAAG;AAAA,EACpB,WAAW;AACb,CAAC,GAAG+B,KAAK,CAAC;AAAA,EACR,OAAOjC,IAAI,CAAE;AAAA,EACb,SAASC,IAAI,CAAE;AAAA,EACf,UAAUC,IAAI,CAAE;AAAA,EAChB,WAAW,IAAI;AACjB,IAAI,OAAO;AACT,QAAMC,IAAI,OAAO,KAAKH,CAAC,GAAGkC,IAAI,OAAO,OAAOhC,CAAC,EAAE,OAAO,CAACiC,GAAGC,MAAM;AAC9D,QAAIC;AACJ,WAAOF,IAAIC,EAAE,YAAYC,IAAID,EAAE,CAAC,MAAM,OAAO,SAASC,EAAE,WAAW;AAAA,EACvE,GAAK,CAAC,IAAI;AACR,EAAAH,KAAK,OAAO,eAAelC,GAAG,cAAc,EAAE,OAAOE,GAAG,cAAc,GAAE,CAAE,GAAG,OAAO,eAAeF,GAAG,eAAe,EAAE,OAAO,GAAG,cAAc,GAAE,CAAE,KAAKsC,GAAG,EAAE,OAAOtC,GAAG,WAAW,GAAG,UAAUE,EAAC,CAAE;AAClM,QAAM,EAAE,SAASqC,GAAG,SAASC,EAAG,IAAG,OAAO,OAAO,EAAE,SAAS,GAAG,SAAS,EAAG,GAAEvC,CAAC,GAAGwC,IAAIhC,EAAE,EAAE,GAAG8B,GAAG,GAAGC,GAAG;AACrG,SAAOxC,EAAEyC,CAAC,KAAK,SAASzC,EAAEyC,CAAC,IAAI,KAAKP,MAAM/B,EAAE,KAAKsC,CAAC,GAAG,OAAO,eAAezC,GAAG,cAAc,EAAE,OAAOG,GAAG,cAAc,GAAI,CAAA,IAAIH;AAChI,GAAGsC,KAAK,CAAC;AAAA,EACP,OAAOtC,IAAI,CAAE;AAAA,EACb,UAAUC,IAAI,CAAE;AAAA,EAChB,WAAWC;AACb,OAAO,OAAO,KAAKD,CAAC,EAAE,QAAQ,CAAC,MAAM;AACnC,QAAME,IAAIF,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAC,IAAKS,EAAE,CAAC,GAAG,IAAI,CAAE;AAC7C,WAAS,IAAI,GAAG,IAAIP,EAAE,QAAQ,KAAK;AACjC,UAAM,IAAIA,EAAE,CAAC,GAAGsC,IAAI,OAAO,IAAI,CAAC;AAChC,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,QAAE,CAAC,KAAK,SAAS,EAAE,CAAC,IAAIpC,EAAE,IAAI,CAAC;AAC/B,YAAM+B,IAAI,EAAE,CAAC,IAAIK;AACjB,UAAIvC,GAAG;AACL,cAAMmC,IAAIrC,EAAEoC,CAAC;AACb,QAAAC,IAAInC,KAAKmC,MAAMA,EAAEnC,CAAC,IAAI,EAAE,CAAC,KAAKF,EAAEoC,CAAC,IAAI,EAAE,CAAClC,CAAC,GAAG,EAAE,CAAC,EAAG;AAAA,MACnD;AACC,QAAAF,EAAEoC,CAAC,IAAI,EAAE,CAAC;AAAA,IAClB;AAAA,EACA;AACA,CAAC,GAAGpC,IAAI0C,KAAK,CAAC1C,IAAI,CAAE,GAAEC,MAAM;AAC1B,MAAI,CAACC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAClB,UAAQD,KAAK,OAAO,KAAKD,CAAC,GAAG,QAAQ,CAACG,MAAM;AAC1C,QAAIA,MAAMV,MAAMU,MAAMT,MAAMS,MAAMR;AAChC;AACF,UAAM,EAAE,GAAG,GAAG,GAAG,EAAG,IAAGe,EAAEP,CAAC;AAC1B,IAAAD,IAAI,MAAMA,IAAI,IAAI,IAAI,MAAM,IAAI;AAAA,EACjC,CAAA,GAAG,EAAE,SAASA,GAAG,SAAS,EAAG;AAChC,GAAGyC,KAAK,CAAC3C,GAAGC,MAAM;AAChB,QAAMC,IAAI,CAAE;AACZ,WAAS,IAAIF,GAAG,KAAKC,GAAG;AACtB,IAAAC,EAAE,KAAK,CAAC;AACV,SAAOA;AACT,GAAG0C,KAAK,CAAC5C,GAAGC,OAAOD,EAAE,SAAS,OAAOA,IAAI;AAAA,EACvC,MAAMC,EAAE;AAAA,EACR,KAAKA,EAAE;AAAA,EACP,OAAOA,EAAE;AAAA,EACT,QAAQA,EAAE;AACZ,IAAID,IAAI6C,KAAK,CAAC7C,MAAM;AAClB,MAAIA,EAAE,QAAQ,GAAG,MAAM;AACrB,WAAO,CAACA,CAAC;AACX,QAAMC,IAAI,CAAE;AACZ,MAAI,aAAa,KAAKD,CAAC,GAAG;AACxB,UAAM,CAACyC,GAAGN,CAAC,IAAInC,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM;AACtC,aAASoC,IAAIK,GAAGL,KAAKD,GAAGC;AACtB,MAAAnC,EAAE,KAAK,GAAGmC,CAAC,EAAE;AACf,WAAOnC;AAAA,EACX;AACE,QAAM6C,IAAI9C,EAAE,MAAM,kCAAkC;AACpD,MAAI,CAAC8C;AACH,WAAO,QAAQ,MAAM,wBAAwB9C,CAAC,GAAG,CAACA,CAAC;AACrD,QAAM,CAAA,EAAGG,GAAG4C,GAAGC,GAAGd,CAAC,IAAIY,GAAGP,IAAIpC,IAAIG,GAAGH,CAAC,IAAI,GAAGqC,IAAIQ,IAAI1C,GAAG0C,CAAC,IAAI;AAC7D,WAASP,IAAIF,GAAGE,KAAKD,GAAGC,KAAK;AAC3B,UAAMN,IAAIhC,KAAK6C,IAAI3C,EAAEoC,CAAC,IAAI;AAC1B,QAAIM,KAAKb;AACP,eAASE,IAAI,OAAOW,CAAC,GAAGX,KAAK,OAAOF,CAAC,GAAGE;AACtC,QAAAnC,EAAE,KAAK,GAAGkC,CAAC,GAAGC,CAAC,EAAE;AAAA,QAChB,EAACW,KAAK,CAACb,KAAKjC,EAAE,KAAKkC,CAAC;AAAA,EAC7B;AACE,SAAOlC;AACT,GAAGgD,KAAK,CAACjD,MAAM;AACb,QAAMC,IAAIuB,GAAGxB,CAAC;AACd,SAAOC,EAAE,OAAOA,EAAE,SAAS,IAAI,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,GAAI,IAAG,EAAE,GAAGD,EAAG;AAC1F,GAAGkD,KAAK,CAAClD,GAAGC,GAAGC,GAAG,MAAM;AACtB,SAAOF,KAAKC,KAAK;AACf,UAAME,IAAI,KAAK,OAAOH,IAAIC,KAAK,CAAC;AAChC,IAAAC,EAAEC,CAAC,IAAoBH,IAAIG,IAAI,IAAoBF,IAAIE,IAAI;AAAA,EAC/D;AACE,SAAeF;AACjB,GAAGkD,KAAK,CAACnD,MAAM;AACb,MAAIA,EAAE,WAAW;AACf,WAAO,CAAE;AACX,QAAMC,IAAID,EAAE,IAAI,CAAC,MAAM;AACrB,UAAM,EAAE,GAAG,GAAG,GAAG,EAAG,IAAGU,EAAE,CAAC;AAC1B,WAAO,EAAE,GAAG,GAAG,GAAG,EAAG;AAAA,EACtB,CAAA,GAAGR,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAID,EAAE,IAAI,CAAC,MAAMC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAGC,IAAoB,oBAAI,IAAK,GAAE,IAAI,CAAE;AAC5G,aAAW,KAAKF,GAAG;AACjB,UAAM,IAAIC,EAAE,EAAE,GAAG,EAAE,CAAC;AACpB,QAAIC,EAAE,IAAI,CAAC;AACT;AACF,QAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAGsC,IAAI,EAAE,GAAG,IAAI,EAAE;AACrC,UAAML,IAAI,CAAC,CAAC;AACZ,SAAKjC,EAAE,IAAI,CAAC,GAAGiC,EAAE,SAAS,KAAK;AAC7B,YAAM,EAAE,GAAGC,GAAG,GAAG,EAAG,IAAGD,EAAE,MAAO;AAChC,MAAAC,IAAI,MAAM,IAAIA,IAAIA,IAAII,MAAMA,IAAIJ,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI;AACpE,iBAAW,CAACe,GAAGC,CAAC,KAAK;AAAA,QACnB,CAAC,GAAG,CAAC;AAAA,QACL,CAAC,GAAG,EAAE;AAAA,QACN,CAAC,GAAG,CAAC;AAAA,QACL,CAAC,IAAI,CAAC;AAAA,MACd,GAAS;AACD,cAAM,IAAInD,EAAEmC,IAAIe,GAAG,IAAIC,CAAC;AACxB,UAAE,IAAI,CAAC,KAAK,CAAClD,EAAE,IAAI,CAAC,MAAMA,EAAE,IAAI,CAAC,GAAGiC,EAAE,KAAK,EAAE,GAAGC,IAAIe,GAAG,GAAG,IAAIC,EAAC,CAAE;AAAA,MACzE;AAAA,IACA;AACI,MAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQZ,GAAG,OAAO,EAAC,CAAE;AAAA,EACnD;AACE,SAAO;AACT,GAAGa,KAAK,CAACtD,GAAGC,IAAI,OAAO;AACrB,QAAMC,IAAoB,oBAAI,IAAK,GAAE,IAAI,CAAE;AAC3C,aAAWC,KAAKH,GAAG;AACjB,UAAM,EAAE,GAAG,MAAMU,EAAEP,CAAC;AACpB,IAAAD,EAAE,IAAI,CAAC,MAAMA,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;AAAA,EACnC;AACE,SAAOD,MAAM,KAAK,EAAE,KAAK,CAACE,GAAG,MAAMA,IAAI,CAAC,IAAIF,MAAM,MAAM,EAAE,KAAK,CAACE,GAAG,MAAM,IAAIA,CAAC,GAAG;AACnF,GAAGoD,KAAK,CAACvD,GAAGC,IAAI,OAAO;AACrB,QAAMC,IAAoB,oBAAI,IAAK,GAAE,IAAI,CAAE;AAC3C,aAAWC,KAAKH,GAAG;AACjB,UAAM,EAAE,GAAG,MAAMU,EAAEP,CAAC;AACpB,IAAAD,EAAE,IAAI,CAAC,MAAMA,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;AAAA,EACnC;AACE,SAAOD,MAAM,KAAK,EAAE,KAAK,CAACE,GAAG,MAAMA,IAAI,CAAC,IAAIF,MAAM,MAAM,EAAE,KAAK,CAACE,GAAG,MAAM,IAAIA,CAAC,GAAG;AACnF,GAAGqD,KAAK,CAACxD,MAAMA,EAAE,WAAW,MAAMA,EAAE,WAAW,MAAMA,EAAE,SAAS,MAAMA,EAAE,SAAS,IAAIyD,KAAK;AAC1F,MAAMC,EAAE;AAAA,EACN,YAAYzD,GAAGC,IAAI,YAAY;AAC7B,SAAK,WAAW,QAAQ,KAAK,OAAOD,GAAG,KAAK,SAASC;AAAA,EACzD;AAAA,EACE,IAAID,GAAG;AACL,WAAO,IAAI,KAAKA,EAAE,QAAS,IAAG,KAAK,OAAOwD,EAAE;AAAA,EAChD;AAAA,EACE,IAAIxD,GAAG;AACL,WAAO,IAAI,KAAKA,EAAE,QAAS,IAAG,KAAK,OAAOwD,EAAE;AAAA,EAChD;AAAA,EACE,UAAUxD,GAAG;AACX,UAAMC,IAAI,KAAK,eAAgB,GAAE,IAAI,KAAK,IAAIA,CAAC,GAAGC,IAAID,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI;AAChF,QAAI,IAAI,KAAK,MAAM,IAAI,GAAG;AAC1B,UAAM,IAAI,IAAI;AACd,QAAI,KAAK,MAAM,IAAI,EAAE;AACrB,UAAM,IAAI,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,EAAE;AACvC,QAAIiC,IAAIlC,MAAM,MAAM,IAAI,aAAa;AACrC,WAAOkC,IAAIA,EAAE,QAAQ,MAAMhC,IAAI,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,GAAGgC,IAAIA,EAAE,QAAQ,KAAKhC,IAAI,OAAO,CAAC,CAAC,GAAGgC,IAAIA,EAAE,QAAQ,MAAM,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,GAAGA,IAAIA,EAAE,QAAQ,MAAM,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,GAAGA,IAAIA,EAAE,QAAQ,OAAO,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,GAAGA,IAAIA,EAAE,QAAQ,MAAM,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,GAAGA,IAAIA,EAAE,QAAQ,KAAK,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,GAAGA;AAAA,EACxX;AAAA,EACE,iBAAiB;AACf,WAAO,KAAK,OAAOsB;AAAA,EACvB;AAAA,EACE,SAAS;AACP,WAAO,IAAI,KAAKjE,GAAG,QAAS,IAAG,KAAK,OAAOiE,EAAE;AAAA,EACjD;AAAA,EACE,SAAS;AACP,WAAO,EAAE,UAAU,QAAQ,MAAM,KAAK,MAAM,QAAQ,KAAK,OAAQ;AAAA,EACrE;AAAA,EACE,WAAW;AACT,WAAO,KAAK,UAAW;AAAA,EAC3B;AAAA,EACE,OAAO,OAAOxD,IAAI,GAAGC,IAAI,GAAG,IAAI,GAAGC,IAAI,GAAG;AACxC,UAAM,IAAIF,IAAI,OAAOC,IAAI,MAAM,IAAI,MAAMC;AACzC,WAAO,IAAIuD,EAAE,IAAID,EAAE;AAAA,EACvB;AAAA,EACE,OAAO,SAASxD,GAAG;AACjB,UAAMC,IAAID,EAAE,SAAQ,IAAK,OAAOA,EAAE,WAAY,IAAG,MAAMA,EAAE,WAAU,IAAK,MAAMA,EAAE,gBAAiB;AACjG,WAAO,IAAIyD,EAAExD,IAAIuD,EAAE;AAAA,EACvB;AAAA,EACE,OAAO,UAAUxD,GAAGC,GAAG;AACrB,WAAO,IAAIwD,GAAGzD,EAAE,QAAS,IAAGC,EAAE,QAAS,KAAIuD,EAAE;AAAA,EACjD;AAAA,EACE,OAAO,WAAWxD,GAAG;AACnB,WAAO,IAAIyD,EAAEzD,EAAE,MAAMA,EAAE,MAAM;AAAA,EACjC;AAAA,EACE,OAAO,GAAGA,GAAG;AACX,WAAOA,aAAayD,MAAMzD,KAAK,OAAO,SAASA,EAAE,cAAc;AAAA,EACnE;AAAA,EACE,OAAO,OAAOA,GAAG;AACf,WAAOA,aAAayD,IAAIzD,KAAKA,KAAK,OAAO,SAASA,EAAE,cAAc,SAASyD,EAAE,WAAWzD,CAAC,IAAIyD,EAAE,OAAQ;AAAA,EAC3G;AAAA,EACE,OAAO,MAAMzD,GAAGC,GAAG,IAAI,IAAI;AACzB,QAAIA,KAAK,MAAM;AACb,YAAMC,IAAIwD,GAAGzD,CAAC,GAAG,IAAID,EAAE,MAAME,CAAC;AAC9B,UAAI,KAAK,QAAQ,EAAE;AACjB,eAAOuD,EAAE;AAAA,UACP,OAAO,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK,CAAC;AAAA,UACrC,OAAO,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK,CAAC;AAAA,UACrC,OAAO,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK,CAAC;AAAA,UACrC,OAAO,EAAE,OAAO,OAAO,EAAE,OAAO,MAAM,EAAE,OAAO,KAAK,CAAC;AAAA,QACtD;AAAA,IACT;AACI,QAAI,CAAC,GAAG;AACN;AACE,cAAMvD,IAAIF,EAAE,MAAM,wBAAwB;AAC1C,YAAIE,GAAG;AACL,gBAAM,CAAG,EAAA,GAAG,GAAG,CAAC,IAAIA,GAAG,IAAI,MAAM,MAAM,KAAK;AAC5C,iBAAOuD,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;AAAA,QACtD;AAAA,MACA;AACM;AACE,cAAMvD,IAAIF,EAAE,MAAM,gCAAgC;AAClD,YAAIE,GAAG;AACL,gBAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAIA,GAAG,IAAI,MAAM,MAAM,KAAK;AAC/C,iBAAOuD,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;AAAA,QACrE;AAAA,MACA;AACM;AACE,cAAMvD,IAAIF,EAAE,MAAM,uCAAuC;AACzD,YAAIE,GAAG;AACL,gBAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IAAIA,GAAGsC,IAAI,MAAM,MAAM,KAAK;AAClD,iBAAOiB,EAAE,OAAOjB,IAAI,OAAO,CAAC,GAAGA,IAAI,OAAO,CAAC,GAAGA,IAAI,OAAO,CAAC,GAAGA,IAAI,OAAO,CAAC,CAAC;AAAA,QACpF;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA;AACA,MAAMmB,KAAK;AAAA,EACT,IAAI,EAAE,OAAO,MAAM,SAAS,cAAe;AAAA,EAC3C,GAAG,EAAE,OAAO,KAAK,SAAS,cAAe;AAAA,EACzC,IAAI,EAAE,OAAO,MAAM,SAAS,kBAAmB;AAAA,EAC/C,GAAG,EAAE,OAAO,KAAK,SAAS,qBAAsB;AAAA,EAChD,IAAI,EAAE,OAAO,MAAM,SAAS,kBAAmB;AAAA,EAC/C,GAAG,EAAE,OAAO,KAAK,SAAS,qBAAsB;AAAA,EAChD,KAAK,EAAE,OAAO,OAAO,SAAS,iBAAkB;AAAA,EAChD,IAAI,EAAE,OAAO,MAAM,SAAS,gBAAiB;AAAA,EAC7C,GAAG,EAAE,OAAO,KAAK,SAAS,YAAW;AACvC;AACA,SAASD,GAAG3D,GAAG;AACb,QAAMC,IAAI,OAAO,KAAK2D,EAAE,EAAE,KAAK,CAACb,GAAGC,MAAMA,EAAE,SAASD,EAAE,MAAM,GAAG7C,IAAI,IAAI,OAAOD,EAAE,KAAK,GAAG,GAAG,GAAG,GAAGE,IAAIH,EAAE,QAAQ,0BAA0B,MAAM,EAAE,QAAQE,GAAG,CAAC6C,MAAM;AACjK,QAAIC;AACJ,aAASA,IAAIY,GAAGb,CAAC,MAAM,OAAO,SAASC,EAAE,YAAYD;AAAA,EACzD,CAAG;AACD,SAAO,IAAI,OAAO,IAAI5C,CAAC,GAAG;AAC5B;AACA,MAAM0D,EAAE;AAAA,EACN,YAAY5D,GAAGC,GAAG,GAAG;AACnB,SAAK,WAAW,gBAAgB,KAAK,OAAOD,GAAG,KAAK,UAAUC,GAAG,KAAK,QAAQ;AAAA,EAClF;AAAA,EACE,OAAO,GAAGD,GAAG;AACX,WAAOA,aAAa4D,MAAM5D,KAAK,OAAO,SAASA,EAAE,cAAc;AAAA,EACnE;AAAA,EACE,WAAW;AACT,WAAO,KAAK;AAAA,EAChB;AACA;AACA,MAAM6D,GAAG;AAAA,EACP,YAAY7D,GAAG;AACb,SAAK,OAAOA,GAAG,KAAK,WAAW;AAAA,EACnC;AAAA,EACE,GAAGA,GAAG;AACJ,WAAO6D,GAAG,GAAG7D,GAAG,KAAK,IAAI;AAAA,EAC7B;AAAA,EACE,OAAO,GAAGA,GAAGC,GAAG;AACd,WAAOD,aAAa6D,OAAO7D,KAAK,OAAO,SAASA,EAAE,cAAc,aAAaC,KAAK,QAAQD,EAAE,SAASC,IAAI;AAAA,EAC7G;AACA;AACA,MAAM6D,KAAK,IAAID,GAAG,SAAS,GAAGE,KAAK,IAAIF,GAAG,MAAM;AAChD,IAAAG,IAAA,MAAMC,GAAE;AAAA,EACN,YAAYjE,GAAG;AACb,SAAK,WAAW,WAAW,KAAK,UAAUA,GAAG,KAAK,YAAY,KAAK,IAAK;AAAA,EAC5E;AAAA,EACE,OAAO,GAAGA,GAAG;AACX,WAAOA,aAAaiE,OAAMjE,KAAK,OAAO,SAASA,EAAE,cAAc;AAAA,EACnE;AAAA,EACE,WAAW;AACT,WAAO,aAAa,KAAK,SAAS;AAAA,EACtC;AACA;AACA,MAAMkE,EAAE;AAAA,EACN,YAAYlE,GAAG;AACb,SAAK,WAAW,YAAY,KAAK,SAAS,KAAK,SAASA,CAAC;AAAA,EAC7D;AAAA,EACE,SAASA,GAAG;AACV,WAAOA,EAAE,WAAW,IAAI,CAAE,IAAG,MAAM,QAAQA,EAAE,CAAC,CAAC,IAAIA,IAAI,CAACA,CAAC;AAAA,EAC7D;AAAA,EACE,OAAO,GAAGA,GAAG;AACX,WAAOA,aAAakE,MAAMlE,KAAK,OAAO,SAASA,EAAE,cAAc;AAAA,EACnE;AACA;AACA,MAAMmE,KAAK,CAACpE,GAAGC,IAAI,OAAO;AACxB,MAAIC,IAAIF;AACR,SAAOC,KAAKC,EAAE,WAAW,GAAG,MAAMA,IAAIA,EAAE,MAAM,CAAC,IAAID,KAAKC,EAAE,SAAS,GAAG,MAAMA,IAAIA,EAAE,MAAM,GAAG,EAAE,IAAIA,EAAE,QAAQ,KAAK,EAAE;AACpH;AACA,MAAMmE,GAAG;AAAA,EACP,YAAYpE,GAAG;AACb,SAAK,MAAM,CAAA,GAAI,KAAK,QAAQA;AAAA,EAChC;AACA;AACA,MAAMqE,WAAWD,GAAG;AAAA,EAClB,WAAW;AACT,WAAO,KAAK;AAAA,EAChB;AACA;AACA,MAAME,WAAWF,GAAG;AAAA,EAClB,WAAW;AACT,UAAM,IAAIR,EAAE,SAAS,2BAA2B;AAAA,EACpD;AACA;AACA,MAAMW,WAAWH,GAAG;AAAA,EAClB,WAAW;AACT,UAAM,IAAIR,EAAE,UAAU,gBAAgB,KAAK,KAAK,EAAE;AAAA,EACtD;AACA;AACA,MAAMY,WAAWJ,GAAG;AAAA,EAClB,YAAYpE,GAAG;AACb,UAAMA,CAAC;AAAA,EACX;AAAA,EACE,YAAY;AACV,WAAO,KAAK,MAAM,YAAa;AAAA,EACnC;AAAA,EACE,SAAS,EAAE,OAAOA,KAAK;AACrB,UAAMC,IAAIwE,GAAG,KAAK,OAAO,EAAE,OAAOzE,GAAG,YAAY,IAAI;AACrD,QAAIC,EAAE,SAAS;AACb,YAAM,IAAI2D,EAAE,SAAS,kBAAkB3D,EAAE,SAAS,EAAE;AACtD,QAAIA,EAAE,UAAU,WAAW;AACzB,YAAM,IAAI2D,EAAE,SAAS,oBAAoB,KAAK,KAAK,EAAE;AACvD,UAAM,EAAE,GAAG,GAAG,GAAG1D,MAAMO,EAAER,EAAE,UAAU,CAAC,CAAC;AACvC,WAAOA,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,MAAMC,GAAG,QAAQ,GAAG,OAAOA,EAAC,CAAE;AAAA,EAChE;AAAA,EACE,SAASF,GAAG;AACV,UAAM,EAAE,QAAQC,IAAI,GAAG,QAAQ,IAAI,MAAMD,GAAGE,IAAIuE,GAAG,KAAK,OAAOzE,CAAC;AAChE,QAAIE,EAAE,SAAS;AACb,aAAO,KAAK;AACd,UAAM,IAAIA,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,EAAG,IAAGO,EAAE,CAAC,GAAG+B,IAAI;AAAA,MACrE,GAAG,IAAIvC;AAAA,MACP,GAAG,IAAI;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,IACP,GAAE,IAAIC,EAAE,MAAM,MAAMsC,CAAC;AACtB,WAAO,KAAK,OAAO,KAAK,SAAS,KAAK,MAAM,CAAC,CAAC,GAAG,IAAItC,EAAE,MAAM,EAAE,IAAIY,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,EAClF;AACA;AACA,MAAM4D,WAAWN,GAAG;AAAA,EAClB,YAAY;AACV,WAAO,KAAK,MAAM,YAAa;AAAA,EACnC;AAAA,EACE,SAAS,EAAE,OAAOpE,KAAK;AACrB,UAAMC,IAAIwE,GAAG,KAAK,OAAO,EAAE,OAAOzE,GAAG,YAAY,IAAI;AACrD,QAAIC,EAAE,SAAS;AACb,YAAM,IAAI2D,EAAE,SAAS,kBAAkB3D,EAAE,SAAS,EAAE;AACtD,QAAIA,EAAE,UAAU,WAAW;AACzB,YAAM,IAAI2D,EAAE,SAAS,oBAAoB,KAAK,KAAK,EAAE;AACvD,UAAM,IAAI3D,EAAE,MAAM,YAAYA,EAAE,UAAU,KAAK,GAAG,CAAC;AACnD,WAAOA,EAAE,MAAM,KAAK,CAAC;AAAA,EACzB;AAAA,EACE,SAASD,GAAG;AACV,UAAM,EAAE,QAAQC,IAAI,GAAG,QAAQ,IAAI,MAAMD,GAAGE,IAAIuE,GAAG,KAAK,OAAOzE,CAAC;AAChE,QAAIE,EAAE,SAAS;AACb,aAAO,KAAK;AACd,UAAM,IAAI,CAAE;AACZ,aAAS,IAAI,GAAG,IAAIA,EAAE,UAAU,QAAQ,KAAK;AAC3C,YAAM,IAAIA,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,MAAMsC,GAAG,MAAM,EAAG,IAAG/B,EAAE,CAAC,GAAG0B,IAAI;AAAA,QACrE,GAAG,IAAIlC;AAAA,QACP,GAAG,IAAI;AAAA,QACP,MAAMuC;AAAA,QACN,MAAM;AAAA,MACP,GAAEJ,IAAIlC,EAAE,MAAM,MAAMiC,CAAC;AACtB,UAAIC,KAAK;AACP,eAAO,KAAK;AACd,WAAK,IAAI,KAAKA,CAAC,GAAG,EAAE,KAAKtB,GAAGsB,GAAGI,GAAG,CAAC,CAAC;AAAA,IAC1C;AACI,WAAO,IAAItC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC;AAAA,EACxC;AACA;AACA,MAAMyE,WAAWP,GAAG;AAAA,EAClB,MAAMpE,GAAG;AACP,QAAI,KAAK,MAAM,QAAQ,GAAG,MAAM,IAAI;AAClC,YAAM,CAACC,GAAG,CAAC,IAAI,KAAK,MAAM,MAAM,GAAG,GAAGC,IAAI,OAAOD,EAAE,MAAM,CAAC,CAAC;AAC3D,aAAO,EAAE,OAAOD,EAAE,kBAAkBE,CAAC,GAAG,IAAIiE,GAAG,GAAG,EAAE,EAAG;AAAA,IAC7D;AACI,WAAO,EAAE,OAAOnE,GAAG,IAAImE,GAAG,KAAK,OAAO,EAAE,EAAG;AAAA,EAC/C;AAAA,EACE,SAAS,EAAE,OAAOnE,KAAK;AACrB,UAAMC,IAAI,KAAK,MAAMD,CAAC;AACtB,QAAIC,EAAE,OAAO;AACX,YAAM,IAAI2D,EAAE,SAAS,0BAA0B;AACjD,UAAM,EAAE,GAAG,GAAG,GAAG1D,MAAMD,EAAE,MAAM,aAAaA,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,IAAIC,CAAC,CAAC;AACrF,WAAOD,EAAE,MAAM,KAAK;AAAA,MAClB,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,IACb,CAAK;AAAA,EACL;AAAA,EACE,QAAQ,EAAE,OAAOD,GAAG,QAAQC,IAAI,GAAG,QAAQ,IAAI,KAAK;AAClD,UAAMC,IAAI,KAAK,MAAMF,CAAC,GAAG,IAAIE,EAAE,MAAM,eAAeA,EAAE,IAAID,GAAG,CAAC;AAC9D,WAAO,IAAIC,EAAE,MAAM,OAAOF,EAAE,KAAK,IAAI,GAAGE,EAAE,MAAM,YAAa,CAAA,GAAG,CAAC,KAAK;AAAA,EAC1E;AAAA,EACE,SAASF,GAAG;AACV,UAAM,EAAE,OAAOC,GAAG,QAAQ,IAAI,GAAG,QAAQC,IAAI,MAAMF,GAAG,IAAI,KAAK,QAAQ,EAAE,OAAOC,GAAG,QAAQ,GAAG,QAAQC,GAAG;AACzG,QAAI,KAAK,QAAQ,EAAE,SAAS;AAC1B,aAAO;AACT,UAAM,EAAE,SAAS,GAAG,KAAK,EAAC,IAAKuE,GAAG,GAAGzE,CAAC;AACtC,WAAO,KAAK,MAAM,GAAG,KAAK;AAAA,EAC9B;AACA;AACA,MAAM4E,WAAWR,GAAG;AAAA,EAClB,MAAMpE,GAAG;AACP,UAAMC,IAAI,KAAK;AACf,QAAIA,EAAE,QAAQ,GAAG,MAAM,IAAI;AACzB,YAAM,CAAC,GAAGC,CAAC,IAAID,EAAE,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC;AAClD,aAAO,EAAE,OAAOD,EAAE,kBAAkB,CAAC,GAAG,KAAKE,EAAE,MAAM,GAAG,EAAG;AAAA,IACjE;AACI,WAAO,EAAE,OAAOF,GAAG,KAAKC,EAAE,MAAM,GAAG,EAAG;AAAA,EAC1C;AAAA,EACE,SAAS,EAAE,OAAOD,KAAK;AACrB,UAAMC,IAAI,KAAK,MAAMD,CAAC,GAAG,IAAIC,EAAE,IAAI,IAAI,CAAC,MAAMkE,GAAG,CAAC,CAAC,GAAGjE,IAAI,CAAE;AAC5D,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,YAAMiC,IAAI,EAAE,CAAC;AACb,UAAIA,MAAM;AACR,cAAM,IAAIyB,EAAE,SAAS,0BAA0B;AACjD,YAAMxB,IAAInC,EAAE,MAAM,aAAakC,CAAC;AAChC,MAAAjC,EAAE,KAAKkC,CAAC;AAAA,IACd;AACI,UAAM,CAAC,GAAG,CAAC,IAAIlC,GAAG,CAAC,GAAG,GAAG,GAAGsC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAKvC,EAAE,MAAM,SAAS,EAAE,KAAKA,EAAE,MAAM,OAAO;AAC1F,WAAOA,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAOuC,EAAC,CAAE;AAAA,EAChE;AAAA,EACE,QAAQ,EAAE,OAAOxC,GAAG,QAAQC,IAAI,GAAG,QAAQ,IAAI,KAAK;AAClD,UAAMC,IAAI,KAAK,MAAMF,CAAC,GAAG,IAAIE,EAAE,IAAI,IAAI,CAAC,MAAMiE,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,MAAMjE,EAAE,MAAM,eAAe,GAAGD,GAAG,CAAC,KAAK,OAAO,EAAE,KAAK,GAAG;AACxH,WAAOC,EAAE,MAAM,OAAOF,EAAE,KAAK,IAAI,GAAGE,EAAE,MAAM,YAAW,CAAE,GAAG,CAAC;AAAA,EACjE;AAAA,EACE,SAASF,GAAG;AACV,UAAM,EAAE,OAAOC,GAAG,QAAQ,IAAI,GAAG,QAAQC,IAAI,EAAC,IAAKF,GAAG,IAAI,KAAK,QAAQ,EAAE,OAAOC,GAAG,QAAQ,GAAG,QAAQC,EAAG,CAAA,GAAG,EAAE,SAAS,GAAG,KAAK,EAAC,IAAKuE,GAAG,GAAGzE,CAAC;AAC5I,WAAO,KAAK,MAAM,GAAG,KAAK;AAAA,EAC9B;AACA;AACA,MAAM6E,GAAG;AAAA,EACP,YAAY7E,GAAGC,IAAI,GAAG,IAAI,CAAE,GAAEC,GAAG;AAC/B,SAAK,OAAOF,GAAG,KAAK,aAAaC,GAAG,KAAK,OAAO,GAAG,KAAK,KAAKC;AAAA,EACjE;AAAA,EACE,SAAS,EAAE,OAAOF,KAAK;AACrB,UAAMC,IAAI,KAAK,KAAK,YAAa,GAAE,IAAID,EAAE,kBAAkBC,CAAC;AAC5D,QAAI,KAAK;AACP,YAAM,IAAI2D,EAAE,UAAU,qBAAqB3D,CAAC,EAAE;AAChD,WAAO,IAAI,EAAE,EAAE,MAAM,KAAK,MAAM,OAAOD,GAAG,IAAI,KAAK,GAAI,CAAA,EAAE,KAAM;AAAA,EACnE;AACA;AACA,MAAM8E,KAAK,IAAIT,GAAG,CAAC,GAAGU,KAAK;AAAA,EACzB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AACR,GAAGC,KAAK;AAAA,EACN,KAAK;AACP,GAAGC,KAAqB,oBAAI,IAAI,CAAC,KAAK;AAAA,GACnC,MAAM,KAAK,IAAI,CAAC,GAAGC,KAAqB,oBAAI,IAAI,CAAC,GAAGD,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACtH,MAAME,EAAE;AAAA,EACN,YAAYnF,GAAGC,GAAG,IAAI,GAAGC,GAAG,IAAI,IAAI;AAClC,SAAK,OAAOF,GAAG,KAAK,SAASC,GAAG,KAAK,aAAa,GAAG,KAAK,KAAKC,GAAG,KAAK,SAAS;AAAA,EACpF;AAAA,EACE,SAAS;AACP,WAAO,KAAK,SAAS,WAAW,OAAO,KAAK,UAAU,WAAW,KAAK,OAAO,UAAU,KAAK,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,MAAM,EAAE;AAAA,EAC1I;AAAA,EACE,YAAY;AACV,QAAI,KAAK,SAAS,SAAS;AACzB,UAAI,OAAO,KAAK,UAAU;AACxB,eAAO,KAAK,SAAS,IAAI,KAAK,MAAM,MAAM,IAAI,KAAK,MAAM;AAC3D,UAAI,OAAO,KAAK,UAAU;AACxB,eAAO,KAAK,SAAS,SAAS;AAChC,UAAI,KAAK,OAAO;AACd,eAAO,KAAK;AAAA,IACpB;AACI,WAAO,KAAK;AAAA,EAChB;AAAA,EACE,UAAU;AACR,YAAQ,KAAK,MAAI;AAAA,MACf,KAAK;AACH,eAAO,IAAImE,GAAG,KAAK,MAAM;AAAA,MAC3B,KAAK;AACH,eAAO,IAAIM,GAAG,KAAK,MAAM;AAAA,MAC3B,KAAK;AACH,eAAO,IAAIC,GAAG,KAAK,MAAM;AAAA,MAC3B,KAAK;AACH,eAAO,IAAIJ,GAAG,KAAK,MAAM;AAAA,MAC3B,KAAK;AACH,eAAO,IAAIE,GAAG,KAAK,MAAM;AAAA,MAC3B,KAAK,kBAAkB;AACrB,cAAM1E,IAAI+E,GAAG,KAAK,MAAM;AACxB,eAAO,IAAIF,GAAG7E,GAAG,KAAK,YAAY,QAAQ,KAAK,EAAE;AAAA,MACzD;AAAA,MACM,KAAK,mBAAmB;AACtB,cAAMA,IAAIgF,GAAG,KAAK,MAAM;AACxB,eAAO,IAAIH,GAAG7E,GAAG,KAAK,YAAY,QAAQ,KAAK,EAAE;AAAA,MACzD;AAAA,MACM,KAAK;AACH,eAAO,IAAI6E,GAAG,KAAK,QAAQ,GAAG,CAAE,GAAE,KAAK,EAAE;AAAA,MAC3C,KAAK;AACH,eAAO,IAAIP,GAAG,KAAK,MAAM;AAAA,MAC3B,KAAK;AACH,eAAO,IAAIC,GAAG,KAAK,MAAM;AAAA,IACjC;AAAA,EACA;AACA;AACA,MAAMa,KAAK,CAACrF,MAAMkF,GAAG,IAAIlF,CAAC,GAAGsF,KAAK,EAAE,MAAM,IAAI,OAAO,GAAE,GAAIC,KAAK,IAAIH,EAAE,QAAQ,GAAG,GAAGI,KAAK,IAAIJ,EAAE,SAAS,GAAG,GAAGK,KAAK,IAAIL,EAAE,SAAS,GAAG,GAAGM,IAAI,kBAAkBC,KAAK,mBAAmBC,KAAK;AAC3L,MAAMC,GAAG;AAAA,EACP,YAAY5F,GAAGC,GAAG;AAChB,SAAK,SAAS,CAAA,GAAI,KAAK,UAAU,IAAI,KAAK,oBAAoB,IAAI,KAAK,gBAAgB,CAAA,GAAI,KAAK,UAAUD,GAAG,KAAK,QAAQ,GAAG,KAAK,SAAS,CAAA,GAAI,KAAK,KAAKC,KAAK,OAAO,SAASA,EAAE;AAAA,EACpL;AAAA,EACE,eAAe;AACb,WAAOmF,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC;AAAA,EACtC;AAAA,EACE,KAAKpF,IAAI,GAAG;AACV,SAAK,SAASA;AAAA,EAClB;AAAA,EACE,IAAIA,IAAI,GAAG;AACT,WAAO,KAAK,QAAQ,KAAK,QAAQA,CAAC;AAAA,EACtC;AAAA,EACE,SAASA,IAAI,GAAG;AACd,WAAO,KAAK,OAAO,KAAK,OAAO,SAASA,CAAC;AAAA,EAC7C;AAAA,EACE,4BAA4BA,GAAG;AAC7B,QAAIC,IAAI,GAAG,IAAI;AACf,aAASC,IAAI,GAAGA,IAAI,KAAK,OAAO,QAAQA,KAAK;AAC3C,YAAM,IAAI,KAAK,OAAOA,CAAC;AACvB,UAAI,IAAID,IAAI,EAAE,OAAQ,GAAEA,KAAKD,KAAKA,KAAK;AACrC,eAAO,CAACE,GAAGF,MAAMC,KAAKD,MAAM,CAAC;AAC/B,MAAAC,IAAI;AAAA,IACV;AACI,WAAO,CAAC,IAAI,EAAE;AAAA,EAClB;AAAA,EACE,sBAAsBD,GAAGC,IAAI,GAAG;AAC9B,QAAI,IAAI,GAAGC,IAAI;AACf,aAAS,IAAI,GAAG,IAAIF,GAAG;AACrB,UAAIE,GAAGA,KAAK,KAAK,OAAO,CAAC,EAAE,OAAQ;AACrC,WAAO,CAAC,IAAID,GAAGC,IAAID,CAAC;AAAA,EACxB;AAAA,EACE,YAAY;AACV,WAAO,KAAK,OAAO,IAAI,CAACD,MAAMA,EAAE,UAAW,CAAA,EAAE,KAAK,EAAE;AAAA,EACxD;AAAA,EACE,SAASA,GAAG;AACV,UAAMC,IAAI,IAAI,IAAI,CAAE;AACpB,eAAWC,KAAK,KAAK;AACnB,cAAQA,EAAE,MAAI;AAAA,QACZ,KAAK;AACH,iBAAOA,EAAE,UAAU,YAAY,OAAOA,EAAE,UAAU,YAAYD,EAAE,KAAK,OAAOC,EAAE,MAAM,CAAC,IAAID,EAAE,KAAKC,EAAE,SAAS,IAAIA,EAAE,MAAM,MAAM,IAAIA,EAAE,MAAM,EAAE;AAC3I;AAAA,QACF,KAAK,MAAM;AACT,gBAAM,IAAI,IAAIyE,GAAGzE,EAAE,MAAM;AACzB,UAAAD,EAAE,KAAK,EAAE,SAASD,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG;AACtC;AAAA,QACV;AAAA,QACQ,KAAK,YAAY;AACf,gBAAM,IAAI,IAAI4E,GAAG1E,EAAE,MAAM;AACzB,UAAAD,EAAE,KAAK,EAAE,SAASD,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG;AACtC;AAAA,QACV;AAAA,QACQ,KAAK,OAAO;AACV,gBAAM,IAAI,IAAIwE,GAAGtE,EAAE,MAAM;AACzB,UAAAD,EAAE,KAAK,EAAE,SAASD,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG;AACtC;AAAA,QACV;AAAA,QACQ,KAAK,SAAS;AACZ,gBAAM,IAAI,IAAI0E,GAAGxE,EAAE,MAAM;AACzB,UAAAD,EAAE,KAAK,EAAE,SAASD,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG;AACtC;AAAA,QACV;AAAA,QACQ;AACE,UAAAC,EAAE,KAAKC,EAAE,MAAM;AACf;AAAA,MACV;AACI,SAAK,oBAAoBD,EAAE,KAAK,EAAE,GAAG,KAAK,gBAAgB;AAAA,EAC9D;AAAA,EACE,QAAQ,EAAE,OAAOD,KAAK;AACpB,WAAO,KAAK,OAAO,IAAI,CAACC,MAAM;AAC5B,cAAQA,EAAE,MAAI;AAAA,QACZ,KAAK;AACH,iBAAO,OAAOA,EAAE,UAAU,YAAY,OAAOA,EAAE,UAAU,YAAYA,EAAE,OAAOA,EAAE,SAASA,EAAE,SAAS,IAAIA,EAAE,MAAM,MAAM,IAAIA,EAAE,MAAM;AAAA,QACpI,KAAK;AACH,iBAAO,IAAI0E,GAAG1E,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAOD,GAAG;AAAA,QAC9C,KAAK;AACH,iBAAO,IAAI4E,GAAG3E,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAOD,GAAG;AAAA,MACtD;AACM,aAAOC,EAAE;AAAA,IACf,CAAK,EAAE,KAAK,EAAE;AAAA,EACd;AAAA,EACE,SAASD,IAAI,IAAI;AAEf,aADIC,GAAG,GACA,KAAK,SAAS,KAAK,QAAQ,UAAU;AAC1C,WAAK,WAAY;AACjB,UAAIC,IAAI,KAAK,IAAK;AAClB,cAAQ,KAAK,KAAI,GAAIA,GAAC;AAAA,QACpB,KAAK;AACH;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAKoF,EAAE;AACnB;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAKC,EAAE;AACnB;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAKC,EAAE;AACnB;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAK,IAAIL,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC1C;AAAA,QACF,KAAK,KAAK;AACR,gBAAM,KAAKxF,IAAI,KAAK,SAAS,EAAE,MAAM,OAAO,SAASA,EAAE,MAAM,KAAK,IAAI,KAAK,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE;AAC9G,gBAAMwF,KAAK,MAAM,WAAW,MAAMA,IAAI,KAAK,OAAO,KAAK,IAAIN,EAAEO,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,KAAK,OAAO,KAAK,IAAIP,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC/H;AAAA,QACV;AAAA,QACQ,KAAK;AACH,eAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC1C;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC1C;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC1C;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC1C;AAAA,QACF,KAAK;AACH,eAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC1C;AAAA,QACF,KAAK;AACH,cAAI,KAAK,IAAK,MAAK,KAAK;AACtB,iBAAK,KAAM,GAAE,KAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;AACxD;AAAA,UACZ;AACU,eAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC1C;AAAA,QACF,KAAK;AACH,cAAI,KAAK,IAAK,MAAK,KAAK;AACtB,iBAAK,KAAM,GAAE,KAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;AACxD;AAAA,UACZ;AACU,cAAI,KAAK,IAAK,MAAK,KAAK;AACtB,iBAAK,KAAM,GAAE,KAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;AACxD;AAAA,UACZ;AACU,eAAK,OAAO,KAAK,IAAIN,EAAEM,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC;AAC1C;AAAA,QACF,KAAK,KAAK;AACR,gBAAM,EAAE,KAAK,GAAG,QAAQ,EAAC,IAAK,KAAK,UAAU,GAAG;AAChD,eAAK,OAAO,KAAK,IAAIN,EAAE,SAAS,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC;AACjD;AAAA,QACV;AAAA,QACQ,KAAK,KAAK;AACR,gBAAM,EAAE,KAAK,EAAC,IAAK,KAAK,UAAU,GAAG;AACrC,UAAAjF,IAAI,IAAI,CAAC;AACT;AAAA,QACV;AAAA,QACQ,KAAK,KAAK;AACR,eAAK,UAAU;AACf;AAAA,QACV;AAAA,QACQ,KAAK,KAAK;AACR,eAAK,OAAO,KAAK,IAAIiF,EAAEQ,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;AAC3C;AAAA,QACV;AAAA,MACA;AACM,UAAI,IAAIzF;AACR,iBAAW;AACT,cAAM,IAAI,KAAK,IAAK;AACpB,YAAI,MAAM,KAAK;AACb,eAAK,OAAO,KAAK,IAAIiF,EAAE,YAAY,GAAG,GAAG,KAAK,EAAE,GAAGG,EAAE,GAAG,KAAK,KAAM;AACnE;AAAA,QACV;AACQ,YAAI,KAAK,QAAQJ,GAAG,IAAI,CAAC,GAAG;AAC1B,cAAI,EAAE,WAAW;AACf;AACF,cAAI,EAAE,MAAM,qBAAqB,GAAG;AAClC,kBAAM,IAAI,IAAIC,EAAE,SAAS,WAAW,CAAC,GAAG,GAAG,KAAK,EAAE;AAClD,cAAE,MAAM,GAAG,KAAK,OAAO,KAAK,CAAC;AAAA,UACzC,OAAiB;AACL,kBAAM,IAAIE,GAAG,EAAE,YAAW,CAAE;AAC5B,iBAAK,OAAO,KAAK,OAAO,KAAK,IAAIF,EAAE,SAAS,GAAG,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,OAAO,MAAM,KAAK,KAAK,OAAO,KAAK,IAAIA,EAAE,gBAAgB,GAAG,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,KAAK,KAAK,OAAO,KAAK,IAAIA,EAAE,YAAYU,GAAG,GAAG7F,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,IAAI,KAAK,OAAO,KAAK,IAAImF,EAAE,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,KAAK,KAAK,OAAO,KAAK,IAAIA,EAAE,SAAS,GAAG,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE,QAAQ,GAAG,MAAM,MAAM,EAAE,SAAS,GAAG,KAAK,WAAW,KAAK,CAAC,KAAK,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,IAAI,KAAK,OAAO,KAAK,IAAIA,EAAE,eAAe,GAAG,GAAG,KAAK,EAAE,CAAC,IAAI,KAAK,OAAO,KAAK,IAAIA,EAAE,OAAO,GAAG,GAAG,KAAK,EAAE,CAAC;AAAA,UACrlB;AACU;AAAA,QACV;AACQ,aAAK,GAAG,KAAK,KAAM;AAAA,MAC3B;AAAA,IACA;AAAA,EACA;AAAA,EACE,aAAa;AACX,QAAInF,IAAI;AACR,WAAO,KAAK,aAAc;AACxB,MAAAA,KAAK,KAAK,QAAQ,KAAK,OAAO;AAChC,IAAAA,MAAM,MAAM,KAAK,OAAO,KAAK,IAAImF,EAAE,SAASnF,GAAG,GAAG,KAAK,EAAE,CAAC;AAAA,EAC9D;AAAA,EACE,UAAUA,IAAI,KAAK;AACjB,QAAIC,IAAI;AACR,eAAW;AACT,YAAM,IAAI,KAAK,IAAK;AACpB,UAAI,KAAK,QAAQ,KAAK;AACpB,eAAO,EAAE,KAAKA,GAAG,QAAQ,GAAI;AAC/B,UAAI,MAAMD;AACR,YAAIA,MAAM,OAAO,KAAK,IAAG,MAAOA,GAAG;AACjC,UAAAC,KAAKD,GAAG,KAAK,KAAM;AACnB;AAAA,QACV,WAAmBA,MAAM,OAAO,KAAK,IAAG,MAAOA,GAAG;AACxC,UAAAC,KAAK;AACL;AAAA,QACD;AACC,iBAAO,EAAE,KAAKA,GAAG,QAAQ,GAAI;AAAA;AAE/B,QAAAA,KAAK;AAAA,IACb;AAAA,EACA;AACA;AACA,MAAM4F,KAAK,CAAC9F,GAAGC,MAAM;AACnB,QAAM,CAACC,GAAG,CAAC,IAAIF,EAAE,MAAM,GAAG,GAAGG,IAAI,EAAE,MAAM,GAAG,GAAG,IAAoB,oBAAI,IAAK;AAC5E,SAAO,OAAO,KAAKF,CAAC,EAAE,QAAQ,CAAC,MAAM;AACnC,UAAM,IAAIA,EAAE,CAAC,GAAG,IAAI,IAAI,OAAO,UAAU,CAAC,WAAW;AACrD,aAAS,IAAI,GAAG,IAAIE,EAAE,QAAQ,KAAK;AACjC,UAAI,EAAE,IAAI,CAAC;AACT;AACF,YAAMsC,IAAItC,EAAE,CAAC,GAAG,IAAIsC,EAAE,QAAQ,GAAG,CAACL,GAAGC,GAAG,MAAM,GAAGA,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,EAAE,EAAE;AACzE,YAAMI,MAAMtC,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC;AAAA,IACnC;AAAA,EACA,CAAG,GAAG,GAAGD,CAAC,IAAIC,EAAE,KAAK,GAAG,CAAC;AACzB;AACA,MAAM4F,GAAG;AAAA,EACP,YAAY9F,GAAG;AACb,SAAK,QAAQ,GAAG,KAAK,QAAQ,GAAG,KAAK,SAASA;AAAA,EAClD;AAAA,EACE,QAAQ;AACN,UAAM,EAAE,MAAMA,EAAC,IAAK,KAAK,MAAM,EAAE;AACjC,WAAOA;AAAA,EACX;AAAA,EACE,MAAMA,GAAG;AACP,UAAMC,IAAI,CAAE;AACZ,QAAI;AACJ,UAAMC,IAAI,CAAC,IAAI,OAAO;AACpB,UAAI,GAAG;AACL,cAAM,IAAID,EAAE,IAAK;AACjB,UAAE,KAAK,KAAK,CAAC;AAAA,MACrB;AACM,aAAO,EAAE,SAAS,GAAG,MAAMA,EAAE,MAAK,EAAI;AAAA,IACvC;AACD,WAAO,KAAK,OAAO,SAAS,KAAK,SAAS;AACxC,YAAM,IAAI,KAAK,OAAO,KAAK,OAAO;AAClC,UAAI,EAAE,SAAS;AACb,YAAI,EAAE,SAAS,SAAS;AACtB,cAAI,CAACD;AACH,kBAAM,IAAI4D,EAAE,WAAW,eAAe;AACxC,iBAAO1D,EAAE,EAAE;AAAA,QACrB,WAAmB,EAAE,SAAS,WAAW,EAAE,SAAS,QAAQ,EAAE,SAAS,cAAc,EAAE,SAAS,SAAS,EAAE,SAAS,WAAW,EAAE,SAAS,kBAAkB,EAAE,SAAS,eAAe;AAC5K,gBAAM,IAAI,EAAE,QAAS;AACrB,UAAAD,EAAE,KAAK,CAAC;AAAA,QAClB,WAAmB,EAAE,SAAS,sBAAsB,EAAE,WAAW,KAAK;AAC5D,gBAAM,IAAIA,EAAE,IAAK;AACjB,cAAI,CAAC;AACH,kBAAM,IAAI2D,EAAE,WAAW,6BAA6B;AACtD,gBAAM,IAAI,IAAIiB,GAAG,UAAU,GAAG,CAAC,GAAG,IAAIR,GAAG,GAAG,CAAC,CAAC;AAC9C,UAAApE,EAAE,KAAK,CAAC;AAAA,QAClB,WAAmB,EAAE,SAAS,YAAY;AAChC,eAAK,SAAS,KAAK;AACnB,gBAAM,IAAI,EAAE,QAAS;AACrB,eAAKA,EAAE,KAAK,CAAC,OAAO;AAClB,kBAAM,EAAE,MAAM,GAAG,SAAS,EAAC,IAAK,KAAK,MAAM,EAAE;AAC7C,gBAAI,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC;AACxB;AAAA,UACd;AAAA,QACA,WAAmB,EAAE,SAAS,QAAQ;AAC5B,eAAK;AACL,gBAAM,EAAE,MAAM,EAAC,IAAK,KAAK,MAAM,EAAE;AACjC,UAAAA,EAAE,KAAK,CAAC;AAAA,QAClB,WAAmB,EAAE,SAAS,SAAS;AAC7B,cAAI,KAAK,YAAY;AACnB,kBAAM,IAAI2D,EAAE,WAAW,sBAAsB;AAC/C,iBAAO1D,EAAG;AAAA,QACpB,WAAmB,EAAE,SAAS,kBAAkB;AACtC,gBAAM,IAAI,EAAE,QAAS;AACrB,cAAI,IAAID,EAAE,IAAK;AACf,cAAI,KAAK;AACP,gBAAI,EAAE,SAAS,WAAW,EAAE,SAAS;AACnC,kBAAI6E;AAAA;AAEJ,oBAAM,IAAIlB,EAAE,WAAW,yBAAyB;AACpD,cAAI,KAAK;AACP,cAAE,KAAK,KAAK,CAAC,GAAG3D,EAAE,QAAQ,CAAC;AAAA,mBACpB,EAAE,aAAa,EAAE;AACxB,cAAE,KAAK,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,GAAGA,EAAE,QAAQ,CAAC;AAAA,eACxC;AACH,kBAAM,IAAIA,EAAE,MAAO;AACnB,cAAE,KAAK,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,GAAGA,EAAE,QAAQ,CAAC;AAAA,UACvD;AACU,cAAI;AAAA,QACd,WAAmB,EAAE,SAAS,mBAAmB;AACvC,gBAAM,IAAI,EAAE,QAAS;AACrB,cAAI,EAAE,KAAK,KAAK,CAAC,IAAIA,EAAE,QAAQ,CAAC,GAAG,IAAI;AAAA,QACjD;AAAA;AAAA,IAEA;AACI,WAAOC,EAAG;AAAA,EACd;AACA;AACK,MAAC6F,KAAKD,IAAIE,KAAK,CAACjG,OAAOA,EAAE,OAAO,CAAC,MAAM,QAAQA,IAAIA,EAAE,MAAM,CAAC,IAAIA,EAAE,OAAOA,EAAE,SAAS,CAAC,MAAM,QAAQA,IAAIA,EAAE,MAAM,GAAG,EAAE,IAAIA;AAC7H,SAASkG,GAAGlG,GAAG;AACb,MAAIC,GAAGC,IAAI,CAAE;AACb,MAAIF,EAAE,WAAW,GAAG,GAAG;AACrB,QAAI,IAAI,GAAGG,IAAI;AACf,WAAO,IAAIH,EAAE,UAAU;AACrB,YAAMgD,IAAIhD,EAAE,CAAC,GAAGkC,IAAIlC,EAAE,IAAI,CAAC;AAC3B,UAAIgD,MAAM;AACR,YAAId,MAAM;AACR,UAAA/B,KAAK,KAAK,KAAK;AAAA,iBACR+B,MAAM,KAAK;AAClB,eAAK;AACL;AAAA,QACD;AACC,iBAAO,EAAE,WAAW,QAAQ,WAAW,CAAA,EAAI;AAAA;AAE7C,QAAA/B,KAAK6C,GAAG;AAAA,IAChB;AACI,IAAA/C,IAAIE,GAAGD,IAAIF,EAAE,MAAM,CAAC,EAAE,KAAI,EAAG,MAAM,GAAG;AAAA,EAC1C,OAAS;AACL,UAAM,IAAIA,EAAE,QAAQ,GAAG;AACvB,UAAM,MAAMC,IAAID,EAAE,MAAM,GAAG,CAAC,GAAGE,IAAIF,EAAE,MAAM,IAAI,CAAC,EAAE,KAAI,EAAG,MAAM,GAAG,KAAKE,IAAIF,EAAE,KAAI,EAAG,MAAM,GAAG;AAAA,EACjG;AACE,SAAO,EAAE,WAAWC,GAAG,WAAWC,EAAG;AACvC;AACK,MAACwE,KAAK,CAAC1E,GAAG,EAAE,OAAOC,GAAG,WAAWC,GAAG,YAAY,QAAQ;AAC3D,QAAM,EAAE,WAAWC,GAAG,WAAW,EAAG,IAAG+F,GAAGlG,CAAC,GAAG,IAAI,CAAE;AACpD,MAAIG,MAAMF,IAAIA,EAAE,oBAAoBE,CAAC,GAAGF,KAAK;AAC3C,WAAO,EAAE,OAAOA,GAAG,WAAWE,GAAG,WAAW,GAAG,KAAK,EAAG;AACzD,MAAI,EAAE,WAAW;AACf,WAAO,EAAE,OAAOF,GAAG,WAAWE,GAAG,WAAW,GAAG,KAAK,EAAG;AACzD,QAAM,IAAI,CAAE;AACZ,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,UAAMsC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAGL,GAAG,MAAMC,GAAG,MAAM,EAAG,IAAG3B,EAAE+B,CAAC;AACtD,QAAIW,IAAInD,EAAE,MAAM,EAAE,GAAG,GAAG,GAAGmC,GAAG;AAC9B,QAAIgB,MAAM,MAAMlD,MAAM,eAAekD,IAAInD,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,GAAGmC,EAAC,CAAE,IAAIlC,MAAM,iBAAiBkD,IAAInD,EAAE,MAAM,EAAE,GAAG,GAAG,GAAGmC,IAAI,EAAG,CAAA,KAAKgB,KAAK,MAAM;AAC1I,QAAE,KAAKzC,GAAG8B,GAAG,CAAC,CAACJ,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;AAC7B;AAAA,IACN;AACI,MAAE,KAAKe,CAAC,GAAG,EAAE,KAAK,GAAGf,IAAI,MAAM,EAAE,IAAIe,CAAC,GAAG,IAAI,MAAM,EAAE,EAAE;AAAA,EAC3D;AACE,MAAI,IAAI,IAAInD,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC;AAC/B,SAAO;AAAA,IACL,OAAOA;AAAA,IACP,WAAWE;AAAA,IACX,WAAW;AAAA,IACX,KAAK;AAAA,IACL,SAAS;AAAA,EACV;AACH,GAAGgG,KAAK,CAACnG,GAAGC,MAAMA,EAAE,WAAW,IAAID,IAAI,OAAO;AAAA,EAC5C,OAAO,QAAQA,CAAC,EAAE,OAAO,CAAC,CAACE,CAAC,MAAM,CAACD,EAAE,SAASC,CAAC,CAAC;AAClD,GAAGkG,KAAK,CAACpG,GAAGC,GAAGC,IAAI,CAAA,MAAO;AACxB,EAAAF,EAAE,QAAQC,CAAC,KAAK,SAASD,EAAE,QAAQC,CAAC,IAAI;AACxC,QAAM,IAAID,EAAE,QAAQC,CAAC;AACrB,aAAWE,KAAK,OAAO,KAAKD,CAAC;AAC3B,MAAEC,CAAC,MAAM,EAAEA,CAAC,IAAID,EAAEC,CAAC;AACrB,SAAO;AACT,GAAGkG,KAAK,CAACrG,GAAGC,GAAGC,MAAM;AACnB,EAAAF,EAAE,gBAAgBA,EAAE,cAAc,CAAA,IAAKA,EAAE,YAAYC,CAAC,IAAIC;AAC5D,GAAGoG,KAAK,MAAM,IAAIC,KAAK,CAACvG,GAAGC,GAAGC,IAAI,OAAO;AACvC,QAAM,IAAIQ,EAAET,CAAC;AACb,SAAOD,EAAE,QAAQ,GAAGE,CAAC;AACvB,GAAGsG,KAAK,CAACxG,GAAG,EAAE,MAAMC,GAAG,YAAYC,IAAI,YAAY,OAAO,IAAI,IAAI,QAAQC,IAAImG,IAAI,UAAU,IAAI,GAAE,IAAK,CAAA,MAAOtG,EAAE,QAAQ,eAAe,EAAE,MAAMC,GAAG,YAAYC,GAAG,OAAO,GAAG,QAAQC,GAAG,UAAU,EAAG,CAAA,GAAGsG,KAAK,CAACzG,GAAG;AAAA,EAC7M,YAAYC,IAAI;AAAA,EAChB,OAAOC,IAAI;AAAA,EACX,QAAQ,IAAIoG;AAAA,EACZ,WAAWnG;AAAA,EACX,MAAM;AAAA,EACN,UAAU,IAAI;AAChB,IAAI,OAAO;AACT,QAAM,IAAI,CAAE;AACZ,MAAIA,GAAG;AACL,eAAWiC,KAAKjC,GAAG;AACjB,YAAMkC,IAAI3B,EAAE0B,CAAC,GAAG,IAAImE,GAAGvG,GAAGoC,GAAG,EAAE,YAAYnC,GAAG,OAAOC,EAAC,CAAE,KAAK,CAAE;AAC/D,UAAI,EAAE,CAAC,GAAG;AACR,YAAIkD,IAAI,EAAE;AACV,cAAMA,IAAIpD,EAAE,UAAUqC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,MAAM,GAAG,OAAOrC,EAAE,SAAS,OAAOqC,EAAG,CAAA,IAAI,EAAED,CAAC,IAAIgB;AAAA,MAC5G;AAAA,IACA;AACI,WAAO;AAAA,EACX;AACE,QAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQX,GAAG,OAAO,EAAC,IAAK,KAAKzC,EAAE;AACxD,WAASoC,IAAI,GAAGA,KAAKK,GAAGL;AACtB,aAASC,IAAI,GAAGA,KAAK,GAAGA,KAAK;AAC3B,YAAM,IAAIrC,EAAE,QAAQ,EAAE,GAAGoC,GAAG,GAAGC,EAAC,GAAI,EAAE,YAAYpC,GAAG,OAAOC,EAAC,CAAE,KAAK,CAAE;AACtE,UAAI,EAAE,CAAC,GAAG;AACR,YAAIkD,IAAI,EAAE;AACV,cAAMA,IAAIpD,EAAE,UAAU,EAAE,GAAGoC,GAAG,GAAGC,EAAG,CAAA,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,MAAM,GAAG,OAAOrC,EAAE,SAAS,OAAO,EAAE,GAAGoC,GAAG,GAAGC,EAAC,GAAI,IAAI,EAAE5B,EAAE,EAAE,GAAG2B,GAAG,GAAGC,EAAC,CAAE,CAAC,IAAIe;AAAA,MACtJ;AAAA,IACA;AACE,SAAO;AACT,GAAGsD,KAAK,CAAC1G,GAAG,EAAE,YAAYC,IAAI,YAAY,OAAOC,IAAI,IAAI,QAAQ,IAAIoG,IAAI,MAAMnG,GAAG,MAAM,GAAG,UAAU,IAAI,GAAI,IAAG,OAAO;AACrH,QAAM,IAAI,CAAE,GAAE,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQsC,GAAG,OAAO,EAAC,IAAK,KAAKzC,EAAE,MAAMoC,IAAIjC,KAAK,MAAM,KAAK,EAAE,QAAQH,EAAE,QAAS,GAAE,CAACqC,GAAG,MAAM,IAAI,CAAC;AAChI,aAAWA,KAAKD,GAAG;AACjB,UAAM,IAAI,CAAE;AACZ,MAAE,KAAK,CAAC;AACR,aAASgB,IAAI,GAAGA,KAAK,GAAGA,KAAK;AAC3B,YAAMC,IAAIrD,EAAE,QAAQ,EAAE,GAAGqC,GAAG,GAAGe,EAAC,GAAI,EAAE,YAAYnD,GAAG,OAAOC,EAAC,CAAE,KAAK,CAAE;AACtE,UAAI,EAAEmD,CAAC,GAAG;AACR,YAAI,IAAIA,EAAE;AACV,cAAM,IAAIrD,EAAE,UAAU,EAAE,GAAGqC,GAAG,GAAGe,EAAG,CAAA,EAAE,SAAS,EAAE,OAAOC,EAAE,OAAO,MAAMA,GAAG,OAAOrD,EAAE,SAAS,OAAO,EAAE,GAAGqC,GAAG,GAAGe,EAAG,EAAA,CAAE,IAAI,EAAE/C,EAAE+C,CAAC,CAAC,IAAI;AAAA,MACzI;AAAA,IACA;AAAA,EACA;AACE,SAAO;AACT,GAAGuD,KAAK,CAAC3G,GAAG,EAAE,YAAYC,IAAI,YAAY,OAAOC,IAAI,IAAI,QAAQ,IAAIoG,IAAI,MAAMnG,GAAG,MAAM,GAAG,UAAU,IAAI,GAAI,IAAG,OAAO;AACrH,QAAM,IAAI,CAAA,GAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQsC,GAAG,OAAO,EAAG,IAAG,KAAKzC,EAAE,MAAMoC,IAAIjC,IAAIA,EAAE,IAAI,CAACkC,MAAM,OAAOA,KAAK,WAAW/B,GAAG+B,CAAC,IAAIA,CAAC,IAAI,MAAM,KAAK,EAAE,QAAQrC,EAAE,QAAS,GAAE,CAACqC,GAAG,MAAM,IAAI,CAAC;AAChL,aAAWA,KAAKD,GAAG;AACjB,UAAM,IAAI,CAAE;AACZ,MAAE,KAAK,CAAC;AACR,aAASgB,IAAI,GAAGA,KAAKX,GAAGW,KAAK;AAC3B,YAAMC,IAAIrD,EAAE,QAAQ,EAAE,GAAGoD,GAAG,GAAGf,EAAC,GAAI,EAAE,YAAYpC,GAAG,OAAOC,EAAC,CAAE,KAAK,CAAE;AACtE,UAAI,EAAEmD,CAAC,GAAG;AACR,YAAI,IAAIA,EAAE;AACV,cAAM,IAAIrD,EAAE,UAAU,EAAE,GAAGoD,GAAG,GAAGf,EAAG,CAAA,EAAE,SAAS,EAAE,OAAOgB,EAAE,OAAO,MAAMA,GAAG,OAAOrD,EAAE,SAAS,OAAO,EAAE,GAAGoD,GAAG,GAAGf,EAAG,EAAA,CAAE,IAAI,EAAE9B,GAAG6C,CAAC,CAAC,IAAI;AAAA,MAC1I;AAAA,IACA;AAAA,EACA;AACE,SAAO;AACT,GAAGwD,KAAK,CAAC5G,GAAG,EAAE,MAAMC,GAAG,YAAYC,IAAI,YAAY,OAAO,IAAI,IAAI,QAAQC,IAAImG,IAAI,cAAc,IAAI,GAAI,IAAG,OAAO;AAChH,QAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,MAAMrG,KAAKD,EAAE,MAAMyC,IAAIV,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AACzF,WAAS,IAAI,GAAG,KAAK,GAAG;AACtB,aAASK,IAAI,GAAGA,KAAK,GAAGA,KAAK;AAC3B,YAAMC,IAAIrC,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAGoC,EAAC,GAAI,EAAE,YAAYlC,GAAG,OAAO,EAAC,CAAE,KAAK,CAAE;AACtE,UAAIC,EAAEkC,CAAC,GAAG;AACR,cAAM,IAAI8D,GAAG9D,GAAG,CAAC;AACjB,QAAAI,EAAE,IAAI,CAAC,EAAEL,IAAI,CAAC,IAAI;AAAA,MAC1B;AAAA,IACA;AACE,SAAOK;AACT,GAAGoE,KAAK,CAAC7G,GAAG;AAAA,EACV,YAAYC,IAAI;AAAA,EAChB,OAAOC,IAAI;AAAA,EACX,QAAQ,IAAIoG;AAAA,EACZ,WAAWnG;AAAA,EACX,MAAM;AAAA,EACN,cAAc,IAAI,CAAA;AACpB,IAAI,OAAO;AACT,QAAM,IAAI,CAAE;AACZ,MAAIA,GAAG;AACL,eAAWiC,KAAKjC,GAAG;AACjB,YAAMkC,IAAIkE,GAAGvG,GAAGoC,GAAG,EAAE,YAAYnC,GAAG,OAAOC,EAAG,CAAA,KAAK,CAAE;AACrD,QAAEmC,CAAC,MAAM,EAAED,CAAC,IAAI+D,GAAG9D,GAAG,CAAC;AAAA,IAC7B;AACI,WAAO;AAAA,EACX;AACE,QAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQI,GAAG,OAAO,EAAC,IAAK,KAAKzC,EAAE;AACxD,WAASoC,IAAI,GAAGA,KAAKK,GAAGL;AACtB,aAASC,IAAI,GAAGA,KAAK,GAAGA,KAAK;AAC3B,YAAM,IAAIrC,EAAE,QAAQ,EAAE,GAAGoC,GAAG,GAAGC,EAAC,GAAI,EAAE,YAAYpC,GAAG,OAAOC,EAAC,CAAE,KAAK,CAAE;AACtE,QAAE,CAAC,MAAM,EAAEO,EAAE,EAAE,GAAG2B,GAAG,GAAGC,EAAG,CAAA,CAAC,IAAI8D,GAAG,GAAG,CAAC;AAAA,IAC7C;AACE,SAAO;AACT,GAAGW,KAAK,CAAC9G,GAAG,EAAE,YAAYC,IAAI,YAAY,OAAOC,IAAI,IAAI,QAAQ,IAAIoG,IAAI,MAAMnG,GAAG,MAAM,GAAG,cAAc,IAAI,GAAI,IAAG,OAAO;AACzH,QAAM,IAAI,CAAE,GAAE,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQsC,GAAG,OAAO,EAAC,IAAK,KAAKzC,EAAE,MAAMoC,IAAIjC,KAAK,MAAM,KAAK,EAAE,QAAQH,EAAE,QAAS,GAAE,CAACqC,GAAG,MAAM,IAAI,CAAC;AAChI,aAAWA,KAAKD,GAAG;AACjB,UAAM,IAAI,CAAE;AACZ,MAAE,KAAK,CAAC;AACR,aAASgB,IAAI,GAAGA,KAAK,GAAGA,KAAK;AAC3B,YAAMC,IAAIrD,EAAE,QAAQ,EAAE,GAAGqC,GAAG,GAAGe,EAAC,GAAI,EAAE,YAAYnD,GAAG,OAAOC,EAAC,CAAE,KAAK,CAAE;AACtE,QAAEmD,CAAC,MAAM,EAAEhD,EAAE+C,CAAC,CAAC,IAAI+C,GAAG9C,GAAG,CAAC;AAAA,IAChC;AAAA,EACA;AACE,SAAO;AACT,GAAG0D,KAAK,CAAC/G,MAAM,IAAIA,EAAE,QAAQ,MAAM,IAAI,CAAC,KAAKgH,KAAK,CAAChH,MAAMA,IAAI,GAAG+G,GAAG/G,CAAC,CAAC,MAAM,IAAIiH,KAAK,CAACjH,GAAG,EAAE,YAAYC,IAAI,YAAY,OAAOC,IAAI,IAAI,QAAQ,IAAIoG,IAAI,MAAMnG,GAAG,MAAM,GAAG,cAAc,IAAI,GAAI,IAAG,OAAO;AACrM,QAAM,IAAI,CAAA,GAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQsC,GAAG,OAAO,EAAG,IAAG,KAAKzC,EAAE,MAAMoC,IAAIjC,IAAIA,EAAE,IAAI,CAACkC,MAAM,OAAOA,KAAK,WAAW/B,GAAG+B,CAAC,IAAIA,CAAC,IAAI,MAAM,KAAK,EAAE,QAAQrC,EAAE,QAAS,GAAE,CAACqC,GAAG,MAAM,IAAI,CAAC;AAChL,aAAWA,KAAKD,GAAG;AACjB,UAAM,IAAI,CAAE;AACZ,MAAE,KAAK,CAAC;AACR,aAASgB,IAAI,GAAGA,KAAKX,GAAGW,KAAK;AAC3B,YAAMC,IAAIrD,EAAE,QAAQ,EAAE,GAAGoD,GAAG,GAAGf,EAAC,GAAI,EAAE,YAAYpC,GAAG,OAAOC,EAAC,CAAE,KAAK,CAAE;AACtE,QAAEmD,CAAC,MAAM,EAAE9C,GAAG6C,CAAC,CAAC,IAAI+C,GAAG9C,GAAG,CAAC;AAAA,IACjC;AAAA,EACA;AACE,SAAO;AACT,GAAG6D,KAAK,GAAGC,KAAK,GAAGC,KAAK,GAAGC,KAAK,GAAGC,KAAK,IAAIC,KAAK,IAAIC,KAAK,IAAIC,KAAK,KAAKC,KAAK,KAAKC,KAAK,KAAKC,KAAK,MAAMC,KAAK,MAAMC,KAAK,OAAOC,KAAK,OAAOC,KAAK,OAAOC,KAAK,QAAQC,KAAK,GAAGC,KAAKX,KAAKC,IAAIW,KAAKV,KAAKC,KAAKC,KAAKC,KAAKC,KAAKG,IAAII,KAAKjB,KAAKC,IAAIiB,KAAKhB,KAAKC,IAAIgB,KAAKF,KAAKC,IAAIE,KAAKtB,KAAKC,IAAIsB,KAAKL,KAAKI,KAAKD,KAAKJ,IAAIO,KAAKV,KAAKD,KAAKE,IAAIU,KAAK,QAAQC,KAAKH,KAAKC,IAAIG,IAAI,CAAC7I,GAAGC,MAAMD,MAAM,SAAS,MAAMA,IAAIC,OAAOA,GAAG6I,KAAK,CAAC9I,MAAM;AACpZ,QAAMC,IAAI,CAAE;AACZ,SAAO4I,EAAE7I,GAAGkH,EAAE,KAAKjH,EAAE,KAAK,WAAW,GAAG4I,EAAE7I,GAAGmH,EAAE,KAAKlH,EAAE,KAAK,WAAW,GAAG4I,EAAE7I,GAAGoH,EAAE,KAAKnH,EAAE,KAAK,gBAAgB,GAAG4I,EAAE7I,GAAGqH,EAAE,KAAKpH,EAAE,KAAK,gBAAgB,GAAG4I,EAAE7I,GAAGsH,EAAE,KAAKrH,EAAE,KAAK,eAAe,GAAG4I,EAAE7I,GAAGuH,EAAE,KAAKtH,EAAE,KAAK,gBAAgB,GAAG4I,EAAE7I,GAAGwH,EAAE,KAAKvH,EAAE,KAAK,UAAU,GAAG4I,EAAE7I,GAAGyH,EAAE,KAAKxH,EAAE,KAAK,QAAQ,GAAG4I,EAAE7I,GAAG0H,EAAE,KAAKzH,EAAE,KAAK,OAAO,GAAG4I,EAAE7I,GAAG2H,EAAE,KAAK1H,EAAE,KAAK,OAAO,GAAG4I,EAAE7I,GAAG6H,EAAE,KAAK5H,EAAE,KAAK,QAAQ,GAAG4I,EAAE7I,GAAG8H,EAAE,KAAK7H,EAAE,KAAK,WAAW,GAAG4I,EAAE7I,GAAGiI,EAAE,KAAKhI,EAAE,KAAK,UAAU,GAAG4I,EAAE7I,GAAG+H,EAAE,KAAK9H,EAAE,KAAK,MAAM,GAAG4I,EAAE7I,GAAGgI,EAAE,KAAK/H,EAAE,KAAK,QAAQ,GAAGA;AACnf,GAAG8I,KAAqB,uBAAO,OAAuB,uBAAO,eAAe;AAAA,EAC1E,WAAW;AAAA,EACX,KAAKR;AAAA,EACL,YAAYG;AAAA,EACZ,MAAMd;AAAA,EACN,QAAQY;AAAA,EACR,QAAQR;AAAA,EACR,YAAYM;AAAA,EACZ,gBAAgBhB;AAAAA,EAChB,iBAAiBC;AAAA,EACjB,YAAYc;AAAA,EACZ,iBAAiBjB;AAAAA,EACjB,iBAAiBC;AAAA,EACjB,MAAMc;AAAA,EACN,UAAUX;AAAA,EACV,QAAQC;AAAA,EACR,aAAaS;AAAA,EACb,UAAUO;AAAA,EACV,YAAYtB;AAAA,EACZ,YAAYD;AAAA,EACZ,QAAQW;AAAA,EACR,SAASc;AAAA,EACT,UAAUV;AAAA,EACV,WAAWH;AAAA,EACX,MAAMC;AAAA,EACN,OAAOJ;AAAA,EACP,QAAQS;AAAA,EACR,UAAUQ;AAAA,EACV,OAAOlB;AAAA,EACP,iBAAiBoB;AAAA,EACjB,cAAcD;AAChB,GAAG,OAAO,aAAa,EAAE,OAAO,SAAQ,CAAE,CAAC;AAC3CG,EAAE,OAAOC,EAAE;AACXD,EAAE,OAAOE,EAAE;AACX,MAAMC,KAAqB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC,GAAGC,KAAqB,oBAAI,IAAI,CAAC,GAAGD,IAAI,KAAK,GAAG,CAAC,GAAGE,KAAqB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAGF,EAAE,CAAC,GAAGG,KAAqB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAGF,EAAE,CAAC,GAAGG,KAAqB,oBAAI,IAAI;AAAA,EACjV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,SAASC,GAAGxJ,GAAG;AACb,QAAMC,IAAID,EAAE,CAAC;AACb,MAAIC,KAAK,QAAQ,CAACoJ,GAAG,IAAIpJ,EAAE,aAAa,KAAK,CAACqJ,GAAG,IAAItJ,EAAEA,EAAE,SAAS,CAAC,EAAE,YAAW,CAAE,KAAKA,EAAE,MAAM,gCAAgC;AAC7H;AACF,QAAME,IAAIF,EAAE,MAAM,aAAa,EAAE,OAAO,OAAO;AAC/C,aAAWG,KAAKD;AACd,QAAI,cAAc,KAAKC,CAAC,KAAK,CAACoJ,GAAG,IAAIpJ,EAAE,aAAa;AAClD;AACJ,MAAI,IAAI;AACR,MAAI;AACF,QAAI,KAAK,iBAAiB,gBAAiB,EAAC;AAAA,EAChD,QAAU;AAAA,EACV;AACE,MAAI;AACF,WAAO6I,EAAE,GAAGhJ,GAAG,CAAC,EAAE,OAAQ;AAAA,EAC9B,QAAU;AAAA,EACV;AACA;AACA,MAAMyJ,KAAK,EAAE,MAAM,IAAI,OAAO,GAAI;AAClC,MAAMC,GAAG;AAAA,EACP,YAAYzJ,GAAG;AACb,SAAK,WAAW,GAAG,KAAK,iBAAiB,uBAAuB,KAAK,aAAa,cAAc,KAAK,aAAa,YAAY,KAAK,mBAAmB,IAAI,KAAK,uBAAuB,CAAA,GAAI,KAAK,YAAYA,KAAK,OAAO,SAASA,EAAE,aAAa,GAAG,KAAK,YAAYA,KAAK,OAAO,SAASA,EAAE,MAAM,GAAG,KAAK,6BAA8B;AAAA,EAC1U;AAAA,EACE,+BAA+B;AAC7B,SAAK,uBAAuB;AAAA,MAC1B,GAAG,KAAK,mBAAmB,CAAC,KAAK,iBAAiB,KAAK,IAAI,CAAC,IAAI,CAAE;AAAA,MAClE,KAAK,kBAAkB,KAAK,IAAI;AAAA,MAChC,KAAK,gBAAgB,KAAK,IAAI;AAAA,MAC9B,KAAK,gBAAgB,KAAK,IAAI;AAAA,MAC9B,KAAK,gBAAgB,KAAK,IAAI;AAAA,MAC9B,KAAK,eAAe,KAAK,IAAI;AAAA,IAC9B;AAAA,EACL;AAAA,EACE,YAAYA,GAAG;AACb,QAAIA,KAAK;AACP;AACF,UAAMC,IAAI,OAAO,eAAe,IAAI;AACpC,eAAW,KAAKD;AACd,iBAAWE,KAAK;AACd,QAAAD,MAAMwJ,GAAG,aAAa,OAAO,UAAU,eAAe,KAAKxJ,GAAGC,CAAC,MAAM,KAAKA,CAAC,IAAI,EAAEA,CAAC;AAAA,EAC1F;AAAA;AAAA,EAEE,OAAOF,GAAG;AACR,QAAI,EAAE,OAAOC,GAAG,MAAM,EAAG,IAAGD;AAC5B,UAAM,EAAE,OAAOE,GAAG,OAAO,EAAG,IAAGF;AAC/B,SAAK,SAAS,IAAIE,EAAE,QAAQ,GAAG,EAAE,YAAY,aAAa,OAAO,GAAE,CAAE,KAAK,CAAE,GAAED,IAAI,EAAE;AACpF,QAAI;AACJ,QAAIgE,EAAE,GAAGhE,CAAC;AACR,UAAI;AAAA,aACGA,KAAK;AACZ,UAAI,KAAK,WAAW,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,GAAG;AAAA;AAE/C,cAAQ,OAAOA,GAAC;AAAA,QACd,KAAK;AACH,cAAIA,aAAa;AACf,gBAAI,KAAK,WAAW,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,GAAG;AAAA,mBACxCwD,EAAE,GAAGxD,CAAC;AACb,gBAAI,KAAK,WAAW,EAAE,OAAOwD,EAAE,OAAOxD,CAAC,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,CAAE;AAAA,mBAChE,MAAM,QAAQD,CAAC;AACtB,gBAAI,KAAK,YAAY,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,GAAG;AAAA,eAC7C;AACH,gBAAI2D,EAAE,GAAG3D,CAAC;AACR,oBAAMA;AACRyJ,YAAAA,GAAEzJ,CAAC,IAAI,IAAI,KAAK,YAAY,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,EAAG,CAAA,IAAI,IAAI,KAAK,aAAa,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,GAAG;AAAA,UACxH;AACU;AAAA,QACF,KAAK;AACH,cAAI,KAAK,aAAa,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,GAAG;AACjD;AAAA,QACF,KAAK;AACH,cAAI,KAAK,aAAa,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,GAAG;AACjD;AAAA,QACF,KAAK;AACH,cAAI,KAAK,WAAW,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,GAAG;AAC/C;AAAA,QACF,KAAK;AACH,cAAIA,EAAG;AACP;AAAA,QACF;AACE,cAAI;AAAA,MACd;AACI,WAAO,KAAK,iBAAiB,KAAK,eAAe,GAAG,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,EAAC,CAAE,IAAI;AAAA,EACvF;AAAA,EACE,aAAa,EAAE,OAAOD,KAAK;AACzB,WAAOA;AAAA,EACX;AAAA,EACE,WAAW,EAAE,OAAOA,KAAK;AACvB,WAAOA,IAAI,SAAS;AAAA,EACxB;AAAA,EACE,aAAa,EAAE,OAAOA,KAAK;AACzB,WAAO,MAAMA,CAAC,IAAI,QAAQ,WAAWA,EAAE,YAAY,KAAK,gBAAgB,CAAC;AAAA,EAC7E;AAAA,EACE,WAAW,EAAE,OAAOA,KAAK;AACvB,WAAOA,EAAE,SAAU,IAAGA,EAAE,WAAY,IAAGA,EAAE,iBAAiB,IAAI+I,EAAE/I,CAAC,EAAE,OAAO,KAAK,UAAU,IAAI+I,EAAE/I,CAAC,EAAE,OAAO,KAAK,cAAc;AAAA,EAChI;AAAA,EACE,WAAW,EAAE,OAAOA,KAAK;AACvB,WAAOA,EAAE,UAAU,KAAK,UAAU;AAAA,EACtC;AAAA,EACE,YAAYA,GAAG;AACb,QAAI,EAAE,OAAOC,GAAG,MAAM,EAAG,IAAGD;AAC5B,WAAOC,IAAIA,KAAK,OAAO,SAASA,EAAE,CAAC,GAAG,MAAM,QAAQA,CAAC,MAAMA,IAAIA,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,GAAGD,GAAG,OAAOC,GAAG,MAAM,EAAC,CAAE;AAAA,EACjH;AAAA,EACE,aAAa,EAAE,OAAOD,KAAK;AACzB,WAAO,KAAK,UAAUA,CAAC;AAAA,EAC3B;AAAA,EACE,WAAWA,GAAG;AACZ,WAAO;AAAA,EACX;AAAA,EACE,YAAY,EAAE,OAAOA,GAAG,GAAGC,EAAC,GAAI;AAC9B,UAAM,IAAIA,EAAE,MAAM,MAAMA,EAAE,KAAK,GAAGC,IAAIF,EAAE,QAAQ,MAAM,EAAE,OAAO,IAAI,IAAI,GAAG;AAC1E,WAAO,KAAK,OAAO,EAAE,GAAGC,GAAG,OAAOC,GAAG;AAAA,EACzC;AAAA,EACE,qBAAqBF,GAAG;AACtB,WAAO;AAAA,EACX;AAAA,EACE,qBAAqBA,GAAG;AACtB,WAAO;AAAA,EACX;AAAA;AAAA,EAEE,SAASA,GAAG;AACV,UAAM,EAAE,OAAOC,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,IAAKF;AAClD,QAAI,CAACiE,EAAE,GAAGhE,CAAC,GAAG;AACZ,UAAIA,KAAK;AACP,eAAO,KAAK,aAAa,EAAE,OAAOA,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,CAAE;AACpE,cAAQ,OAAOD,GAAC;AAAA,QACd,KAAK;AACH,iBAAO,KAAK,eAAe,EAAE,OAAOA,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,CAAE;AAAA,QACtE,KAAK;AACH,iBAAO,KAAK,eAAe,EAAE,OAAOD,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,CAAE;AAAA,QACtE,KAAK;AACH,iBAAO,KAAK,aAAa,EAAE,OAAOD,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,CAAE;AAAA,QACpE,KAAK;AACH,cAAID,aAAa;AACf,mBAAO,KAAK,aAAa,EAAE,OAAOA,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,CAAE;AACpE,cAAIuD,EAAE,GAAGxD,CAAC;AACR,mBAAO,KAAK,aAAa,EAAE,OAAOwD,EAAE,OAAOxD,CAAC,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,CAAE;AAC9E,cAAI,MAAM,QAAQD,CAAC;AACjB,mBAAO,KAAK,cAAc,EAAE,OAAOA,GAAG,MAAM,GAAG,OAAOC,GAAG,OAAO,EAAC,CAAE;AACrE,cAAI0D,EAAE,GAAG3D,CAAC;AACR,kBAAMA;AACR;AAAA,QACF;AACE;AAAA,MACV;AAAA,IACA;AAAA,EACA;AAAA,EACE,eAAe,EAAE,OAAOD,KAAK;AAC3B,WAAOA;AAAA,EACX;AAAA,EACE,eAAe,EAAE,OAAOA,KAAK;AAC3B,WAAOA,KAAK,OAAO,SAASA,EAAE,YAAY,KAAK,gBAAgB;AAAA,EACnE;AAAA,EACE,aAAa,EAAE,OAAOA,KAAK;AACzB,WAAOA;AAAA,EACX;AAAA,EACE,aAAa,EAAE,OAAOA,KAAK;AACzB,WAAOA,EAAE,SAAU,IAAGA,EAAE,WAAY,IAAGA,EAAE,iBAAiB,IAAI+I,EAAE/I,CAAC,EAAE,OAAO,KAAK,UAAU,IAAI+I,EAAE/I,CAAC,EAAE,OAAO,KAAK,cAAc;AAAA,EAChI;AAAA,EACE,aAAa,EAAE,OAAOA,KAAK;AACzB,WAAOA,EAAE,UAAU,KAAK,UAAU;AAAA,EACtC;AAAA,EACE,cAAc,EAAE,OAAOA,GAAG,MAAMC,GAAG,OAAO,GAAG,OAAOC,KAAK;AACvD,QAAI,IAAIF,KAAK,OAAO,SAASA,EAAE,CAAC;AAChC,WAAO,MAAM,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE,OAAO,GAAG,MAAMC,GAAG,OAAO,GAAG,OAAOC,GAAG;AAAA,EAClG;AAAA,EACE,aAAaF,GAAG;AACd,WAAO;AAAA,EACX;AAAA;AAAA,EAEE,UAAU,EAAE,OAAOA,GAAG,MAAMC,GAAG,OAAO,GAAG,OAAOC,KAAK;AACnD,WAAOF,MAAM,WAAWA,IAAIC,KAAK,OAAO,SAASA,EAAE,QAAQgE,EAAE,GAAGjE,CAAC,IAAI,KAAKA,aAAa,OAAO,KAAK,cAAc,EAAE,OAAOA,GAAG,MAAMC,GAAG,OAAO,GAAG,OAAOC,GAAG,IAAIuD,EAAE,GAAGzD,CAAC,IAAI,KAAK,cAAc,EAAE,OAAOyD,EAAE,OAAOzD,CAAC,GAAG,MAAMC,GAAG,OAAO,GAAG,OAAOC,GAAG,IAAIF,KAAK,OAAO,KAAK,cAAc,EAAE,MAAMC,GAAG,OAAO,GAAG,OAAOC,EAAG,CAAA,IAAI,MAAM,QAAQF,CAAC,IAAI,KAAK,eAAe,EAAE,OAAOA,GAAG,MAAMC,GAAG,OAAO,GAAG,OAAOC,EAAC,CAAE,IAAIF,aAAa4D,IAAI,KAAK,sBAAsB,EAAE,OAAO5D,GAAG,MAAMC,GAAG,OAAO,GAAG,OAAOC,EAAG,CAAA,IAAIF,aAAa,QAAQ,KAAK,eAAe,EAAE,OAAOA,GAAG,MAAMC,GAAG,OAAO,GAAG,OAAOC,EAAC,CAAE,IAAIF,EAAE,SAAU;AAAA,EACvkB;AAAA,EACE,gBAAgB,EAAE,OAAOA,KAAK;AAC5B,WAAOA;AAAA,EACX;AAAA,EACE,cAAc,EAAE,OAAOA,KAAK;AAC1B,WAAOA,IAAI,SAAS;AAAA,EACxB;AAAA,EACE,gBAAgB,EAAE,OAAOA,KAAK;AAC5B,WAAO,MAAMA,CAAC,IAAI,QAAQ,WAAWA,EAAE,YAAY,KAAK,gBAAgB,CAAC,EAAE,SAAU;AAAA,EACzF;AAAA,EACE,cAAc,EAAE,OAAOA,KAAK;AAC1B,WAAOA,EAAE,SAAU,IAAGA,EAAE,WAAY,IAAGA,EAAE,iBAAiB,IAAI+I,EAAE/I,CAAC,EAAE,OAAO,KAAK,UAAU,IAAI+I,EAAE/I,CAAC,EAAE,OAAO,KAAK,cAAc;AAAA,EAChI;AAAA,EACE,cAAc,EAAE,OAAOA,KAAK;AAC1B,WAAOA,EAAE,UAAU,KAAK,UAAU;AAAA,EACtC;AAAA,EACE,eAAeA,GAAG;AAChB,QAAI,EAAE,OAAOC,EAAC,IAAKD;AACnB,WAAOC,IAAIA,KAAK,OAAO,SAASA,EAAE,CAAC,GAAG,MAAM,QAAQA,CAAC,MAAMA,IAAIA,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,GAAGD,GAAG,OAAOC,GAAG;AAAA,EAC3G;AAAA,EACE,cAAcD,GAAG;AACf,WAAO;AAAA,EACX;AAAA,EACE,sBAAsB,EAAE,OAAOA,KAAK;AAClC,WAAOA,EAAE;AAAA,EACb;AAAA,EACE,eAAeA,GAAG;AAChB,WAAO;AAAA,EACX;AAAA,EACE,sBAAsBA,GAAG;AACvB,UAAM,EAAE,OAAOC,GAAG,OAAO,EAAG,IAAGD;AAC/B,WAAO,EAAE,mBAAmB,EAAE,OAAOC,EAAC,CAAE,KAAK;AAAA,EACjD;AAAA;AAAA,EAEE,iBAAiBD,GAAGC,GAAG;AACrB,QAAI;AACF,YAAM,IAAI,OAAOD,KAAK,WAAW,KAAK,eAAeA,GAAGC,CAAC,IAAI,KAAK,YAAYD,GAAGC,CAAC;AAClF,aAAO,KAAK,sBAAsB,KAAK,oBAAoB,GAAGA,CAAC,IAAI;AAAA,IACpE,SAAQ,GAAG;AACV,aAAO,EAAE,GAAGA,GAAG,OAAO,OAAO,CAAC,EAAG;AAAA,IACvC;AAAA,EACA;AAAA,EACE,eAAeD,GAAGC,GAAG;AACnB,WAAOwD,EAAE,GAAGzD,CAAC,MAAMA,IAAIyD,EAAE,OAAOzD,CAAC,IAAI,EAAE,GAAGC,GAAG,OAAOD,EAAG;AAAA,EAC3D;AAAA,EACE,YAAYA,GAAGC,GAAG;AAChB,QAAID,EAAE,CAAC,MAAM;AACX,aAAO,EAAE,GAAGC,GAAG,OAAOD,EAAG;AAC3B,aAAS,IAAI,GAAG,IAAI,KAAK,qBAAqB,QAAQ,KAAK;AACzD,YAAME,IAAI,KAAK,qBAAqB,CAAC,EAAEF,GAAGC,CAAC;AAC3C,WAAKC,KAAK,OAAO,SAASA,EAAE,WAAW;AACrC,eAAO,EAAE,GAAGD,GAAG,GAAGC,EAAG;AAAA,IAC7B;AACI,WAAOF,MAAM,KAAK,EAAE,GAAGC,GAAG,OAAO,OAAM,IAAK,EAAE,GAAGA,GAAG,OAAOD,EAAG;AAAA,EAClE;AAAA,EACE,eAAeA,GAAGC,GAAG;AACnB,WAAOD,KAAK,QAAQA,MAAM,KAAK,EAAE,OAAO,OAAQ,IAAG,EAAE,OAAOA,EAAG;AAAA,EACnE;AAAA,EACE,gBAAgBA,GAAGC,GAAG;AACpB,WAAO,EAAE,OAAOuJ,GAAGxJ,EAAE,YAAa,CAAA,EAAG;AAAA,EACzC;AAAA,EACE,kBAAkBA,GAAGC,GAAG;AACtB,WAAOD,EAAE,MAAM,YAAY,KAAK,QAAQA,EAAE,MAAM,KAAK,KAAK,SAASA,EAAE,MAAM,KAAK,KAAK,CAAE,GAAE,UAAU,IAAI,EAAE,OAAO,WAAWA,CAAC,EAAC,IAAK,EAAE,OAAO,OAAQ;AAAA,EACvJ;AAAA,EACE,gBAAgBA,GAAGC,GAAG;AACpB,WAAOD,EAAE,SAAS,KAAK,MAAMA,EAAEA,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,WAAW,EAAE,OAAOyD,EAAE,MAAMzD,CAAC,EAAG;AAAA,EAC7F;AAAA,EACE,gBAAgBA,GAAGC,GAAG;AACpB,WAAO,EAAE,OAAOsJ,GAAGvJ,CAAC,EAAG;AAAA,EAC3B;AAAA;AAAA,EAEE,kBAAkBA,GAAG;AACnB,WAAO,EAAE,OAAO,KAAM;AAAA,EAC1B;AAAA,EACE,mBAAmB;AACjB,WAAO,CAAE;AAAA,EACb;AAAA,EACE,OAAOA,GAAG;AACR,UAAM,EAAE,MAAMC,GAAG,OAAO,GAAG,OAAOC,EAAC,IAAKF,GAAG,IAAI,KAAK,iBAAkB;AACtE,WAAO,EAAE,WAAW,KAAK,EAAE,KAAK,CAACiC,MAAMA,EAAE,WAAWhC,KAAK,OAAO,SAASA,EAAE,MAAM,IAAIA,IAAI,EAAE,GAAGA,GAAG,GAAG,KAAK,kBAAkB,EAAE,OAAO,GAAG,OAAOC,GAAG,OAAOD,KAAK,OAAO,SAASA,EAAE,MAAK,CAAE,EAAG;AAAA,EAC7L;AACA;AACA,MAAM0J,KAAK,WAAWC,KAAK,IAAIH,GAAG,EAAE,UAAU,EAAG,CAAA,GAAGI,KAAI,CAAC9J,MAAMA,KAAK,OAAO,KAAK,OAAOA,CAAC;AACxF,SAAS+J,GAAG/J,GAAG;AACb,SAAO,OAAOA,KAAK,WAAW,WAAWA,aAAa,OAAO,SAAS0D,EAAE,GAAG1D,CAAC,IAAI,SAAS,OAAOA,KAAK,YAAY,YAAY;AAC/H;AACA,SAASgK,GAAGhK,GAAGC,GAAG;AAChB,UAAQA,GAAC;AAAA,IACP,KAAK,UAAU;AACb,UAAIC,IAAIF,EAAE,QAAQ,SAAS,EAAE,GAAG,IAAI;AACpC,MAAAE,EAAE,SAAS,GAAG,MAAMA,IAAIA,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI;AAC5C,YAAMC,IAAI,OAAOD,CAAC;AAClB,aAAO,EAAE,IAAI,CAAC,MAAMC,CAAC,GAAG,KAAKA,IAAI,EAAG;AAAA,IAC1C;AAAA,IACI,KAAK,QAAQ;AACX,YAAMD,IAAIsJ,GAAGxJ,CAAC;AACd,aAAOE,IAAI,EAAE,IAAI,IAAI,KAAKA,EAAE,QAAS,EAAA,IAAK,EAAE,IAAI,IAAI,KAAK,IAAK;AAAA,IACpE;AAAA,IACI,KAAK,QAAQ;AACX,YAAMA,IAAIwD,EAAE,MAAM1D,CAAC;AACnB,aAAOE,IAAI,EAAE,IAAI,IAAI,KAAKA,EAAE,eAAgB,EAAA,IAAK,EAAE,IAAI,IAAI,KAAK,IAAK;AAAA,IAC3E;AAAA,IACI,KAAK,WAAW;AACd,YAAMA,IAAIF,EAAE,YAAa;AACzB,aAAOE,MAAM,SAAS,EAAE,IAAI,IAAI,KAAK,EAAG,IAAGA,MAAM,UAAU,EAAE,IAAI,IAAI,KAAK,EAAC,IAAK,EAAE,IAAI,IAAI,KAAK,IAAK;AAAA,IAC1G;AAAA,IACI;AACE,aAAO,EAAE,IAAI,IAAI,KAAK,IAAK;AAAA,EACjC;AACA;AACA,SAAS+J,GAAGjK,GAAGC,GAAG;AAChB,UAAQA,GAAC;AAAA,IACP,KAAK;AACH,aAAOD;AAAA,IACT,KAAK;AACH,aAAOA,EAAE,QAAS;AAAA,IACpB,KAAK;AACH,aAAO0D,EAAE,OAAO1D,CAAC,EAAE,eAAgB;AAAA,IACrC,KAAK;AACH,aAAOA,IAAI,IAAI;AAAA,IACjB;AACE,aAAO;AAAA,EACb;AACA;AACA,MAAMkK,KAAK,CAAClK,GAAGC,MAAM;AACnB,QAAMC,IAAI6J,GAAG9J,CAAC;AACd,MAAIC,MAAM,UAAU;AAClB,UAAMC,IAAI2J,GAAE7J,CAAC;AACb,WAAOD,EAAE,MAAM,KAAK,CAAC,MAAMG,MAAM,CAAC;AAAA,EACtC;AACE,QAAM,IAAI8J,GAAGhK,GAAGC,CAAC;AACjB,SAAOF,EAAE,MAAM,KAAK,CAACG,MAAM;AACzB,UAAM,IAAI6J,GAAG7J,GAAGD,CAAC;AACjB,WAAO,EAAE,MAAM,MAAM,EAAE;AAAA,EAC3B,CAAG;AACH,GAAGiK,KAAK,CAACnK,GAAGC,MAAM;AAChB,QAAMC,IAAI6J,GAAG9J,CAAC;AACd,MAAIC,MAAM,UAAU;AAClB,UAAMC,IAAI2J,GAAE7J,CAAC;AACb,WAAO,CAACD,EAAE,MAAM,KAAK,CAAC,MAAMG,MAAM,CAAC;AAAA,EACvC;AACE,QAAM,IAAI8J,GAAGhK,GAAGC,CAAC;AACjB,SAAO,CAACF,EAAE,MAAM,KAAK,CAACG,MAAM;AAC1B,UAAM,IAAI6J,GAAG7J,GAAGD,CAAC;AACjB,WAAO,EAAE,MAAM,MAAM,EAAE;AAAA,EAC3B,CAAG;AACH,GAAGkK,KAAK,CAACpK,GAAGC,MAAM;AAChB,QAAMC,IAAI6J,GAAG9J,CAAC;AACd,MAAIC,MAAM;AACR,WAAO4J,GAAE7J,CAAC,IAAID,EAAE,MAAM,CAAC;AACzB,QAAM,IAAIiK,GAAGhK,GAAGC,CAAC,GAAGC,IAAI6J,GAAGhK,EAAE,MAAM,CAAC,GAAGE,CAAC;AACxC,SAAOC,EAAE,MAAM,IAAIA,EAAE;AACvB,GAAGkK,KAAK,CAACrK,GAAGC,MAAM;AAChB,QAAMC,IAAI6J,GAAG9J,CAAC;AACd,MAAIC,MAAM;AACR,WAAO4J,GAAE7J,CAAC,KAAKD,EAAE,MAAM,CAAC;AAC1B,QAAM,IAAIiK,GAAGhK,GAAGC,CAAC,GAAGC,IAAI6J,GAAGhK,EAAE,MAAM,CAAC,GAAGE,CAAC;AACxC,SAAOC,EAAE,MAAM,KAAKA,EAAE;AACxB,GAAGmK,KAAK,CAACtK,GAAGC,MAAM;AAChB,QAAMC,IAAI6J,GAAG9J,CAAC;AACd,MAAIC,MAAM;AACR,WAAO4J,GAAE7J,CAAC,IAAID,EAAE,MAAM,CAAC;AACzB,QAAM,IAAIiK,GAAGhK,GAAGC,CAAC,GAAGC,IAAI6J,GAAGhK,EAAE,MAAM,CAAC,GAAGE,CAAC;AACxC,SAAOC,EAAE,MAAM,IAAIA,EAAE;AACvB,GAAGoK,KAAK,CAACvK,GAAGC,MAAM;AAChB,QAAMC,IAAI6J,GAAG9J,CAAC;AACd,MAAIC,MAAM;AACR,WAAO4J,GAAE7J,CAAC,KAAKD,EAAE,MAAM,CAAC;AAC1B,QAAM,IAAIiK,GAAGhK,GAAGC,CAAC,GAAGC,IAAI6J,GAAGhK,EAAE,MAAM,CAAC,GAAGE,CAAC;AACxC,SAAOC,EAAE,MAAM,KAAKA,EAAE;AACxB,GAAGqK,KAAK,CAACxK,GAAGC,MAAMA,KAAK,QAAQ6J,GAAE7J,CAAC,MAAM,IAAIwK,KAAK,CAACzK,GAAGC,MAAMA,KAAK,QAAQ6J,GAAE7J,CAAC,MAAM,IAAIyK,KAAK,CAAC1K,GAAGC,MAAM;AAClG,QAAMC,IAAI4J,GAAE7J,CAAC,EAAE,YAAa;AAC5B,SAAOD,EAAE,MAAM,KAAK,CAAC,MAAME,EAAE,SAAS,EAAE,YAAW,CAAE,CAAC;AACxD,GAAGyK,KAAK,CAAC3K,GAAGC,MAAM;AAChB,QAAMC,IAAI4J,GAAE7J,CAAC,EAAE,YAAa;AAC5B,SAAO,CAACD,EAAE,MAAM,KAAK,CAAC,MAAME,EAAE,SAAS,EAAE,YAAW,CAAE,CAAC;AACzD,GAAG0K,KAAK;AAAA,EACN,IAAIV;AAAA,EACJ,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,KAAKC;AAAA,EACL,IAAIC;AAAA,EACJ,KAAKC;AAAA,EACL,OAAOC;AAAA,EACP,UAAUC;AAAA,EACV,UAAUC;AAAA,EACV,UAAUC;AACZ;AACA,SAASE,GAAG7K,GAAGC,GAAG;AAChB,QAAMC,IAAI0K,GAAG5K,EAAE,MAAM;AACrB,SAAOE,IAAIA,EAAEF,GAAGC,CAAC,IAAI;AACvB;AACA,SAAS6K,GAAG9K,GAAGC,GAAG;AAChB,QAAMC,IAAIF,EAAE,QAAQ;AACpB,SAAOA,EAAE,WAAW,WAAW,IAAI,KAAKE,MAAM,QAAQF,EAAE,WAAW,MAAM,CAAC,MAAM6K,GAAG,GAAG5K,CAAC,CAAC,IAAID,EAAE,WAAW,KAAK,CAAC,MAAM6K,GAAG,GAAG5K,CAAC,CAAC;AAC/H;AACA,MAAM8K,GAAG;AAAA,EACP,YAAY9K,GAAG;AACb,SAAK,MAAM,CAAE,GAAE,KAAK,eAA+B,oBAAI,IAAK,GAAE,KAAK,QAAQA;AAAA,EAC/E;AAAA,EACE,qBAAqBA,GAAG;AACtB,IAAAA,EAAE,QAAQ,CAACC,MAAM;AACf,UAAI,GAAGC;AACP,OAACA,KAAK,IAAI,KAAK,MAAM,SAAS,QAAQD,CAAC,MAAM,OAAO,SAAS,EAAE,eAAe,QAAQC,EAAE,QAAQ,CAAC,MAAM;AACrG,aAAK,aAAa,IAAI,CAAC;AAAA,MAC/B,CAAO;AAAA,IACP,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,SAASF,GAAGC,GAAG;AACb,aAAS,IAAI,GAAG,IAAID,EAAE,QAAQ,KAAK;AACjC,YAAME,IAAIF,EAAE,CAAC,GAAG,IAAIC,EAAE,CAAC;AACvB,MAAAC,KAAK,QAAQ,KAAK,QAAQA,MAAM,MAAM,KAAK,kBAAkBA,GAAG,CAAC,GAAG,KAAK,IAAIA,CAAC,IAAI;AAAA,IACxF;AAAA,EACA;AAAA,EACE,kBAAkBF,GAAG;AACnB,SAAK,MAAM,mBAAoB;AAC/B,UAAMC,IAAI,CAAE;AACZ,WAAO,KAAK,aAAa,QAAQ,CAAC,MAAM;AACtC,YAAMC,IAAI,KAAK,MAAM,SAAS,KAAK,CAAC;AACpC,MAAAA,KAAK,SAASD,EAAE,CAAC,IAAI,EAAE,GAAGC,EAAC,GAAI,KAAK,MAAM,kBAAkB,CAAC,GAAGA,EAAE,QAAQ,KAAK,MAAM,eAAeA,EAAE,OAAO;AAAA,QAC3G,YAAY;AAAA,QACZ,OAAO,KAAK;AAAA,QACZ,WAAWF;AAAA,MACnB,CAAO;AAAA,IACF,CAAA,GAAGC;AAAA,EACR;AACA;AACA,MAAM8K,KAAK,CAAChL,MAAM;AAChB,UAAQA,GAAC;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,EACb;AACE,SAAO;AACT,GAAGiL,KAAK,MAAM;AACd,IAAAC,KAAA,MAAMC,GAAE;AAAA,EACN,YAAY,EAAE,QAAQlL,IAAI,CAAA,GAAI,MAAMC,GAAG,UAAU,IAAIkL,GAAG,CAAA,CAAE,GAAG,OAAOjL,IAAI,GAAE,GAAI;AAC5E,SAAK,WAAW,SAAS,KAAK,YAAY6D,IAAI,KAAK,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAG,GAAE,KAAK,KAAK,GAAG,KAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,WAAW,IAAI,KAAK,SAAS,GAAG,KAAK,oBAAoB,CAAE,GAAE,KAAK,aAAa,GAAG,KAAK,cAAc,GAAG,KAAK,aAAa,GAAG,KAAK,kBAAkBrF,GAAI,KAAK,mBAAmBD,GAAG,KAAK,UAAU,GAAG,KAAK,gBAAgC,oBAAI,IAAG,GAAI,KAAK,uBAAuB,CAAA,GAAI,KAAK,aAAa,MAAM,KAAK,gBAAgB,MAAM,KAAK,eAAe,CAAA,GAAI,KAAK,gBAAgB,CAAA,GAAI,KAAK,cAAc,CAAA,GAAI,KAAK,sBAAsC,oBAAI,IAAK,GAAE,KAAK,gBAAgC,oBAAI,OAAO,KAAK,WAAW,IAAI,KAAK,cAAc,KAAK,OAAO,KAAK,QAAQyB,GAAG,KAAK,UAAU;AAAA,MAC7tB,SAASF,EAAE,WAAW;AAAA,MACtB,SAASA,EAAE,WAAW;AAAA,MACtB,SAASA,EAAE,WAAW;AAAA,MACtB,SAASA,EAAE,WAAW;AAAA,IACvB,GAAE,KAAK,OAAOC,KAAK,IAAI,KAAK,WAAW,KAAK,MAAM,KAAK,WAAW;AAAA,EACvE;AAAA,EACE,IAAI,aAAa;AACf,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EACE,IAAI,aAAa;AACf,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EACE,IAAI,aAAa;AACf,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EACE,IAAI,aAAa;AACf,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA,EACE,OAAO,GAAGD,GAAG;AACX,YAAQA,KAAK,OAAO,SAASA,EAAE,cAAc;AAAA,EACjD;AAAA,EACE,WAAW;AACT,WAAO,cAAc8G,GAAG,KAAK,IAAI,CAAC,SAAS,KAAK,GAAG,UAAU,KAAK,IAAI,YAAY,KAAK,MAAM,WAAW,KAAK,KAAK;AAAA,EACtH;AAAA,EACE,IAAI,eAAe;AACjB,QAAI9G;AACJ,aAASA,IAAI,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAG,GAAE,EAAE,YAAY,UAAU,MAAM,OAAO,SAASA,EAAE,WAAWnB;AAAA,EACzG;AAAA,EACE,gBAAgBmB,GAAGC,IAAI,IAAI;AACzB,WAAO,KAAK,OAAO;AAAA,MACjB,MAAM,EAAE,GAAG,EAAE,QAAQD,EAAC,EAAI;AAAA,MAC1B,SAAS;AAAA,MACT,aAAaC;AAAA,IACnB,CAAK;AAAA,EACL;AAAA,EACE,IAAI,cAAc;AAChB,QAAID;AACJ,aAASA,IAAI,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAG,GAAE,EAAE,YAAY,UAAU,MAAM,OAAO,SAASA,EAAE,UAAUlB;AAAA,EACxG;AAAA,EACE,eAAekB,GAAGC,IAAI,IAAI;AACxB,WAAO,KAAK,OAAO;AAAA,MACjB,MAAM,EAAE,GAAG,EAAE,OAAOD,EAAC,EAAI;AAAA,MACzB,SAAS;AAAA,MACT,aAAaC;AAAA,IACnB,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,gBAAgB,EAAE,GAAGD,GAAG,GAAGC,EAAC,GAAI;AAC9B,UAAM,IAAI,KAAK,MAAM,EAAE,GAAGD,GAAG,GAAGC,GAAG;AACnC,QAAI,KAAK;AACP,aAAO,KAAK,qBAAqBD,GAAGC,GAAG,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC;AAAA,EACrE;AAAA,EACE,cAAcD,GAAG;AACf,QAAIC;AACJ,WAAO,CAAC,GAAGA,IAAI,KAAK,gBAAgB,EAAE,GAAGD,GAAG,GAAG,EAAG,CAAA,MAAM,QAAQC,EAAE;AAAA,EACtE;AAAA,EACE,mBAAmB;AACjB,UAAMD,IAAI,KAAK;AACf,aAASC,IAAI,GAAGA,KAAKD,GAAGC,KAAK;AAC3B,YAAM,IAAI,KAAK,gBAAgB,EAAE,GAAG,GAAG,GAAGA,GAAG;AAC7C,UAAI,KAAK,QAAQ,EAAE,UAAU,EAAE,OAAO,WAAW,SAAS;AACxD,eAAO;AAAA,IACf;AACI,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,kBAAkB;AAChB,eAAWD,KAAK,OAAO,KAAK,KAAK,SAAS,IAAI,GAAG;AAC/C,YAAMC,IAAI,KAAK,SAAS,KAAKD,CAAC;AAC9B,UAAIiE,EAAE,GAAGhE,KAAK,OAAO,SAASA,EAAE,KAAK;AACnC,eAAO;AAAA,IACf;AACI,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,iBAAiB;AACf,UAAMD,IAAI,KAAK,SAAS;AACxB,QAAIA,EAAE,OAAO,GAAG;AACd,YAAMC,IAAI,MAAM,KAAKD,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO;AACrD,aAAO,QAAQ,IAAIC,CAAC,EAAE,KAAK,MAAM,KAAK,gBAAgB;AAAA,IAC5D;AACI,WAAO,KAAK,gBAAe,IAAK,IAAI,QAAQ,CAACA,MAAM;AACjD,YAAM,IAAI,MAAM;AACd,YAAI,KAAK,SAAS,aAAa,OAAO,GAAG;AACvC,gBAAMC,IAAI,MAAM,KAAK,KAAK,SAAS,aAAa,OAAM,CAAE,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO;AAC9E,kBAAQ,IAAIA,CAAC,EAAE,KAAK,CAAC;AAAA,QAC/B,MAAe,MAAK,oBAAoB,WAAW,GAAG,EAAE,IAAID,EAAG;AAAA,MACxD;AACD,QAAG;AAAA,IACT,CAAK,IAAI,QAAQ,QAAS;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,0BAA0B;AACxB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBE,aAAa;AACX,QAAI4C;AACJ,UAAM,IAAI,KAAK;AACf,QAAI5C,IAAI;AACR,eAAWC,KAAK,MAAM,KAAK,EAAE,iBAAiB,GAAG;AAC/C,YAAM,IAAI,EAAE,KAAKA,CAAC;AAClB,UAAI,KAAK,QAAQ,OAAO,EAAE,SAAS,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,KAAK;AACxE,UAAE,kBAAkB,OAAOA,CAAC;AAC5B;AAAA,MACR;AACM,YAAM2C,IAAI,EAAE,QAAQ3C,CAAC,MAAM,OAAO,SAAS2C,EAAE,aAAa,KAAK;AAC7D;AACF,YAAM,EAAE,GAAG,GAAG,GAAG,EAAC,IAAK,KAAK,aAAa3C,CAAC;AAC1C,UAAI,IAAI,KAAK,IAAI,GAAG;AAClB,UAAE,kBAAkB,OAAOA,CAAC;AAC5B;AAAA,MACR;AACM,WAAK,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAC,GAAI,EAAE,YAAY,YAAY,OAAO,GAAI,CAAA,GAAGD;AAAA,IAC3E;AACI,WAAOA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,2BAA2B;AACzB,QAAIC,GAAG4C;AACP,UAAM9C,IAAI,CAAA,GAAIC,IAAI,KAAK,SAAS4C,IAAI,KAAK;AACzC,aAAS,IAAI,GAAG,KAAK5C,GAAG,KAAK;AAC3B,YAAM,IAAI,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG;AACnC,WAAK,SAASD,EAAE,CAAC,IAAI,EAAE,UAAUE,IAAI,KAAK,SAAS,KAAK,CAAC,MAAM,OAAO,SAASA,EAAE,WAAW;IAClG;AACI,aAAS,IAAI,GAAG,KAAK2C,GAAG,KAAK;AAC3B,YAAM,IAAI,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG;AACnC,WAAK,SAAS7C,EAAE,CAAC,IAAI,EAAE,YAAY8C,IAAI,KAAK,SAAS,KAAK,CAAC,MAAM,OAAO,SAASA,EAAE,aAAa;IACtG;AACI,WAAO9C;AAAA,EACX;AAAA,EACE,WAAW;AAAA,IACT,GAAGA;AAAA,IACH,QAAQC;AAAA,EACT,IAAG,IAAI;AACN,UAAM,IAAI,KAAK,yBAA0B;AACzC,QAAID,KAAK,MAAM;AACb,YAAM,IAAI,KAAK;AACf,eAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AAC3B,cAAM,IAAI,KAAK,gBAAgB,EAAE,GAAG,GAAG,GAAG,GAAG;AAC7C,aAAK,QAAQ,OAAO,EAAE;AAAA,MAC9B;AAAA,IACA,OAAW;AACL,YAAM,IAAI,KAAK,gBAAgB,EAAE,GAAG,GAAG,GAAGA,GAAG;AAC7C,YAAMC,IAAI,EAAE,SAASA,IAAI,OAAO,EAAE;AAAA,IACxC;AACI,SAAK,gBAAiB;AACtB,UAAMC,IAAI,KAAK,yBAA0B,GAAE,IAAI,OAAO,KAAK,CAAC,EAAE;AAAA,MAC5D,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC,CAAC,MAAM,KAAK,UAAUA,EAAE,CAAC,CAAC;AAAA,IACpD;AACD,QAAI,EAAE,SAAS,GAAG;AAChB,YAAM,IAAI,IAAI,IAAI,CAAE;AACpB,iBAAW,KAAK;AACd,UAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,IAAIA,EAAE,CAAC;AACzB,WAAK,aAAa;AAAA,QAChB,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,SAAS;AAAA,MACjB,CAAO;AAAA,IACP;AACI,WAAO,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC9B;AAAA;AAAA,EAEE,kBAAkB;AAChB,UAAMF,IAAI,KAAK,SAASC,IAAI,CAAA,GAAI,IAAI,CAAE;AACtC,aAAS,IAAI,GAAG,KAAKD,GAAG,KAAK;AAC3B,YAAM,IAAI,KAAK,gBAAgB,EAAE,GAAG,GAAG,GAAG,GAAG;AAC7C,WAAK,QAAQ,EAAE,UAAU,EAAE,OAAO,WAAW,SAAS,KAAKC,EAAE,KAAK,EAAE,GAAG,GAAG,QAAQ,EAAE,QAAQ,GAAG,EAAE,KAAKO,EAAE,EAAE,GAAG,GAAG,GAAG,EAAG,CAAA,CAAC;AAAA,IAC7H;AACI,UAAMN,IAAI,KAAK;AACf,aAAS,IAAI,GAAG,KAAKA,GAAG,KAAK;AAC3B,YAAM,IAAI,KAAK,gBAAgB,EAAE,GAAG,GAAG,GAAG,GAAG;AAC7C,UAAI,CAAC,KAAK,EAAE;AACV;AACF,UAAI,IAAI;AACR,iBAAW,EAAE,GAAG,GAAG,QAAQsC,EAAG,KAAIvC,GAAG;AACnC,cAAM,IAAI,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAG,GAAE,EAAE,YAAY,WAAU,CAAE;AACjE,YAAI,CAAC4K,GAAGrI,GAAG,KAAK,OAAO,SAAS,EAAE,KAAK,GAAG;AACxC,cAAI;AACJ;AAAA,QACV;AAAA,MACA;AACM,YAAM,IAAI,CAAC,CAAC,EAAE;AACd,WAAK,EAAE,WAAW,IAAI,KAAK,cAAc,IAAI,CAAC,MAAM,OAAO,EAAE,UAAU,KAAK,cAAc,OAAO,CAAC,IAAI,MAAM,KAAK,EAAE,KAAKhC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAG,CAAA,CAAC;AAAA,IAC/I;AACI,SAAK,uBAAuB;AAAA,EAChC;AAAA,EACE,SAAS,EAAE,GAAGR,GAAG,WAAWC,EAAC,GAAI;AAC/B,UAAM,IAAI,KAAK;AACf,QAAI,KAAK;AACP,aAAO;AACT,UAAMC,IAAoB,oBAAI,IAAK,GAAE,IAAI,CAAE;AAC3C,aAAS,IAAI,GAAG,KAAK,GAAG,KAAK;AAC3B,YAAMiC,IAAI,KAAK,gBAAgB,EAAE,GAAG,GAAG,GAAG,GAAG;AAC7C,MAAAA,KAAK,QAAQA,EAAE,YAAYjC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAAA,IACpD;AACI,MAAE,KAAK,CAAC,GAAGiC,MAAM;AACf,YAAMC,IAAI,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAGpC,EAAC,GAAI,EAAE,YAAY,WAAU,CAAE,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAGmC,GAAG,GAAGnC,EAAG,GAAE,EAAE,YAAY,WAAU,CAAE,GAAGmD,IAAIf,KAAK,OAAO,SAASA,EAAE,OAAOgB,IAAI,KAAK,OAAO,SAAS,EAAE;AAC/L,UAAID,KAAK,QAAQC,KAAK;AACpB,eAAO;AACT,UAAID,KAAK;AACP,eAAO;AACT,UAAIC,KAAK;AACP,eAAO;AACT,UAAI,IAAI;AACR,aAAO,OAAOD,KAAK,YAAY,OAAOC,KAAK,WAAW,IAAID,IAAIC,IAAID,aAAa,QAAQC,aAAa,OAAO,IAAID,EAAE,QAAO,IAAKC,EAAE,QAAS,IAAG,IAAI,OAAOD,CAAC,EAAE,cAAc,OAAOC,CAAC,CAAC,GAAGnD,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC5M,CAAK;AACD,UAAM,IAAI,CAAE;AACZ,aAAS,IAAI,GAAG,KAAK,GAAG;AACtB,MAAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AACtB,QAAI,IAAI;AACR,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAC5B,UAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG;AACjB,YAAI;AACJ;AAAA,MACR;AACI,QAAI,CAAC;AACH,aAAO;AACT,UAAM,IAAI,CAAE;AACZ,eAAW,KAAKA;AACd,QAAE,CAAC,IAAI;AACT,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAC5B,QAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACf,SAAK,qBAAsB;AAC3B,UAAM,IAAI,KAAK,SAAS,MAAO;AAC/B,eAAW,CAAC,GAAGiC,CAAC,KAAK,OAAO,QAAQ,CAAC;AACnC,WAAK,SAAS,OAAOA,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,SAAK,cAAc,MAAO;AAC1B,UAAMK,IAAI,IAAIsI,GAAG,IAAI;AACrB,WAAOtI,EAAE,SAAS,EAAE,KAAI,GAAI,KAAK,SAAS,KAAI,CAAE,GAAGA,EAAE,kBAAiB,GAAI,KAAK,aAAa;AAAA,MAC1F,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,kBAAkB;AAAA,IACnB,CAAA,GAAG,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC3B;AAAA;AAAA,EAEE,gBAAgBxC,GAAGC,IAAI,IAAI;AACzB,UAAM,IAAI,IAAI,MAAM,KAAK,OAAO;AAChC,QAAIA;AACF,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQD,CAAC,GAAG;AACtC,cAAM,IAAI,OAAO,CAAC;AAClB,UAAE,IAAI,CAAC,IAAI;AAAA,MACnB;AAAA;AAEM,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQA,CAAC,GAAG;AACtC,cAAM,IAAI,OAAO,CAAC;AAClB,UAAE,IAAI,CAAC,IAAI;AAAA,MACnB;AACI,SAAK,qBAAsB;AAC3B,UAAME,IAAI,CAAE;AACZ,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAC5B,MAAAA,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;AAC5B,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAC5B,WAAK,SAAS,IAAI,CAAC,IAAIA,EAAE,CAAC;AAC5B,SAAK,cAAc,MAAO;AAAA,EAC9B;AAAA,EACE,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW;AAAA,EAC3B;AAAA,EACE,IAAI,WAAW;AACb,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA;AAAA,EAEE,UAAUF,GAAG;AACX,UAAMC,IAAI,KAAK,MAAMD,CAAC;AACtB,QAAIC,KAAK;AACP,aAAO,KAAK,SAAS,QAAQA,CAAC;AAAA,EACpC;AAAA;AAAA,EAEE,eAAeD,GAAG,EAAE,OAAOC,GAAG,GAAG,EAAC,GAAI;AACpC,SAAK,OAAOD,KAAK,YAAYA,aAAa,WAAWA,EAAE,OAAO,CAAC,MAAM,KAAK;AACxE,YAAME,IAAI,IAAI0F,GAAG5F,EAAE,UAAU,CAAC,CAAC;AAC/B,aAAOE,EAAE,SAASD,CAAC,GAAGC,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,KAAI,CAAE,GAAGA,EAAE,cAAc,QAAQ,CAAC,MAAM,KAAK,cAAc,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,cAAc,SAAS,KAAK,iBAAiBA,CAAC,IAAI,KAAK,SAAS,kBAAkB,IAAI,EAAE,UAAU,IAAI,KAAK,SAAS,kBAAkB,OAAO,EAAE,UAAU,IAAI,MAAMA,EAAE;AAAA,IAC3S;AACI,WAAO,EAAE,cAAc,QAAQ,KAAK,SAAS,kBAAkB,OAAO,EAAE,UAAU,GAAGF;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,iBAAiBA,GAAG;AAClB,eAAWC,KAAKD,EAAE;AAChB,UAAIC,EAAE,SAAS,YAAY;AACzB,cAAM,IAAI,KAAK,SAAS,UAAU,OAAOA,EAAE,MAAM,EAAE,aAAa;AAChE,YAAI,KAAK,QAAQ,EAAE;AACjB,iBAAO;AAAA,MACjB;AACI,WAAO;AAAA,EACX;AAAA;AAAA,EAEE,kBAAkB;AAChB,SAAK,kBAAkB,QAAQ,CAACD,MAAM;AACpC,UAAI6C;AACJ,YAAM5C,IAAI,KAAK,SAAS,KAAKD,CAAC;AAC9B,QAAE6C,IAAI,KAAK,SAAS,QAAQ7C,CAAC,MAAM,OAAO,SAAS6C,EAAE,YAAY,QAAQ5C,KAAK,SAAS,KAAK,kBAAkBD,CAAC,GAAGC,EAAE,QAAQ,KAAK,eAAeA,KAAK,OAAO,SAASA,EAAE,OAAO,EAAE,YAAYD,EAAG,CAAA;AAAA,IACrM,CAAK,GAAG,KAAK,oBAAoB,CAAE,GAAE,KAAK,SAAS;AAAA,EACnD;AAAA;AAAA,EAEE,oBAAoBA,GAAG;AACrB,UAAMC,IAAI,KAAK,SAAS,eAAeD,CAAC;AACxC,WAAO,KAAK,kBAAkBC,CAAC;AAAA,EACnC;AAAA;AAAA,EAEE,kBAAkBD,GAAG;AACnB,QAAIC,GAAG,GAAGC;AACV,YAAQA,KAAK,KAAKD,IAAI,KAAK,SAAS,kBAAkBD,CAAC,MAAM,OAAO,SAASC,EAAE,UAAU,OAAO,SAAS,EAAE,kBAAkB,OAAO,SAASC,EAAE;AAAA,EACnJ;AAAA;AAAA,EAEE,OAAO,UAAUF,GAAG;AAClB,UAAMC,IAAI,CAAE;AACZ,WAAOD,EAAE,QAAQ,CAAC,MAAM;AACtB,WAAK,QAAQ,EAAE,UAAUC,EAAE,QAAQ,EAAE,GAAGA,EAAE,OAAO,GAAG,EAAE,MAAK,IAAK,KAAK,QAAQ,EAAE,eAAeA,EAAE,cAAcA,EAAE,cAAc,KAAK,EAAE;AAAA,IACtI,CAAA,GAAGA;AAAA,EACR;AAAA;AAAA,EAEE,WAAWD,GAAG;AACZ,QAAI+C,GAAGd;AACP,QAAI,KAAK,SAAS;AAChB;AACF,IAAAjC,EAAE,CAAC,KAAK,SAASA,EAAE,CAAC,IAAI,EAAE,OAAOlB,IAAI,QAAQD,GAAE;AAC/C,UAAMoB,IAAIwC,GAAGzC,GAAGA,EAAE,UAAU;AAC5B,SAAK,OAAO;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQC,EAAE;AAAA,MACV,OAAOA,EAAE;AAAA,IACf,GAAO,KAAK,WAAW,IAAI,MAAMA,EAAE,UAAU,CAAC,GAAG,KAAK,cAAc,CAAE;AAClE,aAAS,IAAI,GAAG,KAAKA,EAAE,SAAS;AAC9B,WAAK,YAAY,CAAC,IAAIG,EAAE,CAAC;AAC3B,UAAMyC,IAAI7C,EAAE,cAAc,OAAO,KAAKA,CAAC;AACvC,IAAA6C,EAAE,QAAQ,CAAC,MAAM;AACf,UAAI,MAAMrD,MAAM,MAAMC,MAAM,MAAMC;AAChC;AACF,YAAM,IAAIkD,GAAG,CAAC,GAAGJ,IAAIxC,EAAE,CAAC;AACxB,QAAE,QAAQ,CAAC,MAAM;AACf,cAAMmC,IAAInC,EAAE,CAAC;AACb,QAAAA,EAAE,CAAC,IAAI;AAAA,UACL,GAAGmC;AAAA,UACH,GAAGK;AAAA,UACH,GAAG0I,GAAE,OAAO/I,GAAGK,CAAC;AAAA,QACjB;AAAA,MACT,CAAO;AAAA,IACF,CAAA,GAAG,KAAK,UAAUxC,KAAK,OAAO,SAASA,EAAER,EAAE,GAAG,KAAK,aAAaQ,KAAK,OAAO,SAASA,EAAEP,EAAE,GAAG,KAAK,aAAaO,KAAK,OAAO,SAASA,EAAEN,EAAE,GAAG,KAAK,aAAaM;AAC7J,UAAME,IAAIF,EAAE;AACZ,QAAIE,GAAG;AACL,WAAK,gBAAgBA,GAAG,KAAK,iBAAiBF,EAAE,aAAa,KAAK,gBAAgB,CAAE;AACpF,iBAAW,KAAK,OAAO,KAAKE,CAAC,GAAG;AAC9B,cAAM,EAAE,GAAG,GAAG,GAAGsC,EAAG,IAAG/B,EAAE,CAAC;AAC1B,aAAK,cAAc,KAAK,EAAE,OAAO,GAAG,OAAO+B,GAAG,QAAQtC,EAAE,CAAC,EAAC,CAAE;AAAA,MACpE;AAAA,IACA;AACI,MAAE6C,IAAI,KAAK,eAAe,OAAO,SAASA,EAAE,UAAU,SAAS,KAAK,kBAAkB,KAAK,WAAW,UAAUd,IAAI,KAAK,eAAe,OAAO,SAASA,EAAE,WAAW,SAAS,KAAK,mBAAmB,KAAK,WAAW,SAAS,KAAK,aAAa,CAAC;AAClP,aAAS,IAAI,GAAG,KAAKhC,EAAE,SAAS,KAAK;AACnC,YAAM,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;AAC5B,WAAK,qBAAqB,GAAG,GAAG,CAAC;AAAA,IACvC;AACI,UAAM6C,IAAID;AACV,eAAW,KAAKC,GAAG;AACjB,UAAI,MAAMtD,MAAM,MAAMC,MAAM,MAAMC;AAChC;AACF,YAAM,IAAIe,EAAE,CAAC,GAAG,EAAE,GAAG+B,GAAG,GAAG,EAAC,IAAK;AACjC,UAAIA,MAAM,KAAK,MAAM,KAAKA,MAAM,KAAK,MAAM,KAAKA,KAAK,KAAK,KAAK,KAAKA,IAAIvC,EAAE,WAAW,IAAIA,EAAE;AACzF;AACF,YAAMmC,IAAI,KAAK,aAAaI,CAAC,EAAE,CAAC;AAChC,MAAAJ,KAAK,QAAQ,KAAK,qBAAqBI,GAAG,GAAGJ,CAAC;AAAA,IACpD;AACI,SAAK,SAAS,GAAG,KAAK,SAAS,eAAe,KAAK,IAAI,IAAI,KAAK;AAAA,EACpE;AAAA;AAAA,EAEE,oBAAoB;AAClB,SAAK,WAAW,KAAK,WAAW,OAAO,qBAAqB,KAAK,UAAU;AAAA,EAC/E;AAAA;AAAA,EAEE,gBAAgBpC,GAAG;AACjB,QAAIA,MAAM;AACR;AACF,IAAAA,EAAE,QAAQ,EAAE;AACZ,UAAMC,IAAI,KAAK,SAAS,kBAAkBD,EAAE,EAAE;AAC9C,QAAIC,MAAM,MAAM;AACd,YAAM,EAAE,UAAU,EAAC,IAAKA;AACxB,4BAAsB,MAAM;AAC1B,UAAE,KAAK,SAAS,YAAYD,CAAC,CAAC;AAAA,MACtC,CAAO;AAAA,IACP;AAAA,EACA;AAAA;AAAA,EAEE,cAAc;AACZ,YAAQ,KAAK,SAAS,YAAY,SAAU;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,aAAaA,GAAG;AACd,QAAIC,IAAI,KAAK,SAASD,CAAC;AACvB,QAAIC,KAAK;AACP,aAAOA;AACT,UAAM,IAAI,KAAK,KAAK;AACpB,IAAAA,IAAI,CAAE;AACN,aAASC,IAAI,GAAGA,KAAK,GAAGA,KAAK;AAC3B,YAAM,IAAI,KAAK,YAAa;AAC5B,MAAAD,EAAE,KAAK,CAAC;AACR,YAAM,IAAI,KAAK,YAAYC,CAAC,KAAKE,EAAEF,CAAC;AACpC,WAAK,cAAc,IAAI,GAAGF,MAAM,IAAI,GAAG,CAAC,MAAME,MAAM,IAAI,IAAIF,CAAC,KAAK,GAAG,CAAC,GAAGA,CAAC,EAAE;AAAA,IAClF;AACI,WAAO,KAAK,SAASA,CAAC,IAAIC,GAAGA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,qBAAqBD,GAAGC,GAAG,GAAG;AAC5B,QAAIqC,GAAGC;AACP,QAAI,KAAK,SAAS,KAAK,CAAC,KAAK;AAC3B;AACF,UAAMrC,IAAI,KAAK,YAAY4C,IAAI,KAAK,IAAK;AACzC,QAAIC;AACJ,QAAI/C,MAAM,KAAKC,IAAI,GAAG;AACpB,YAAMuC,IAAI,KAAK,YAAYvC,CAAC,KAAKG,EAAEH,CAAC,GAAGiC,IAAIhC,KAAK,OAAO,SAASA,EAAEsC,CAAC,GAAG,EAAE,OAAOL,GAAG,GAAGC,EAAG,IAAGF,KAAK,CAAE,GAAEkJ,IAAIlL,KAAK,OAAO,SAASA,EAAEsC,IAAI,GAAG;AACtI,MAAAO,IAAI;AAAA,QACF,GAAG,KAAK;AAAA,QACR,GAAGX;AAAA,QACH,GAAGgJ;AAAA,QACH,GAAGF,GAAE,OAAO,KAAK,YAAYE,CAAC;AAAA,MAC/B;AAAA,IACF,WAAUnL,MAAM,KAAKD,IAAI,GAAG;AAC3B,YAAMwC,IAAIlC,GAAGN,CAAC,GAAGkC,IAAIhC,KAAK,OAAO,SAASA,EAAEsC,CAAC,GAAG,EAAE,OAAOL,GAAG,GAAGC,EAAC,IAAKF,KAAK,CAAE,GAAEkJ,IAAIlL,KAAK,OAAO,SAASA,EAAE,MAAMsC,CAAC;AAChH,MAAAO,IAAI;AAAA,QACF,GAAG,KAAK;AAAA,QACR,GAAGX;AAAA,QACH,GAAGgJ;AAAA,QACH,GAAGF,GAAE,OAAO,KAAK,YAAYE,CAAC;AAAA,MAC/B;AAAA,IACF,WAAUpL,MAAM,KAAKC,MAAM,GAAG;AAC7B,YAAMuC,IAAItC,KAAK,OAAO,SAASA,EAAE,CAAG;AACpC,MAAA6C,IAAI,EAAE,GAAGP,GAAG,GAAG0I,GAAE,OAAO1I,CAAC,EAAG;AAAA,IAClC,OAAW;AACL,YAAMA,IAAI,KAAK,YAAYvC,CAAC,KAAKG,EAAEH,CAAC,GAAGiC,IAAI5B,GAAGN,CAAC,GAAGmC,IAAI,GAAGK,CAAC,GAAGN,CAAC,IAAIE,IAAIlC,KAAK,OAAO,SAASA,EAAEgC,CAAC,GAAGkJ,IAAIlL,KAAK,OAAO,SAASA,EAAEsC,CAAC;AAC7H,UAAIW,IAAIjD,KAAK,OAAO,SAASA,EAAEiC,CAAC;AAChC,WAAKgB,KAAK,QAAQ,EAAE,WAAWA,OAAO,KAAK,cAAc,SAAS;AAChE,mBAAW,EAAE,OAAOC,GAAG,OAAOiI,GAAG,QAAQC,EAAC,KAAM,KAAK,eAAe;AAClE,gBAAMC,IAAIvL,IAAIoD,GAAGoI,IAAIvL,IAAIoL;AACzB,cAAIE,KAAK,KAAKA,IAAID,EAAE,UAAUE,KAAK,KAAKA,IAAIF,EAAEC,CAAC,EAAE,QAAQ;AACvD,kBAAME,IAAIH,EAAEC,CAAC,EAAEC,CAAC;AAChB,gBAAIE;AACJ,iBAAK,iBAAiBA,IAAI,EAAE,CAAC,KAAK,cAAc,GAAGD,EAAG,IAAGC,IAAID,GAAGtI,IAAIA,IAAI,EAAE,GAAGuI,GAAG,GAAGvI,EAAC,IAAKuI;AACzF;AAAA,UACZ;AAAA,QACA;AACM,MAAA3I,IAAI;AAAA,QACF,GAAG,KAAK;AAAA,QACR,GAAGX;AAAA,QACH,GAAGgJ;AAAA,QACH,GAAGjI;AAAA,QACH,GAAG+H,GAAE,OAAO,KAAK,SAAS9I,GAAGgJ,GAAGjI,CAAC;AAAA,MAClC;AAAA,IACP;AACI,KAACZ,KAAKD,IAAIS,KAAK,OAAO,SAASA,EAAE,UAAU,OAAO,SAAST,EAAE,eAAe,QAAQC,EAAE,KAAKD,GAAG,GAAG,OAAOS,KAAK,OAAO,SAASA,EAAE,mBAAmB,OAAO,KAAK,kBAAkB,KAAK,CAAC,GAAG/C,MAAM,IAAI+C,EAAE,SAAS,SAASA,EAAE,QAAQrE,KAAMuB,MAAM,KAAK8C,EAAE,UAAU,SAASA,EAAE,SAAStE,IAAIsE,EAAE,YAAY,KAAK,oBAAoBtE,MAAM,KAAK,oBAAoB,IAAIuB,GAAG+C,EAAE,MAAM,GAAGA,EAAE,YAAY,KAAK,cAAc,IAAI/C,CAAC,MAAM,OAAO+C,EAAE,QAAQ,OAAOA,EAAE,OAAO,OAAOA,EAAE,QAAQA,KAAK,KAAK,SAASA,EAAE,UAAU,EAAE,KAAK,KAAK,eAAe,iBAAiBA,EAAE,OAAOA,CAAC,KAAK,CAAE,GAAE,KAAK,SAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,KAAK,SAAS,QAAQ,CAAC,GAAG,IAAI,GAAG,aAAaD,GAAG,SAAS,KAAK,GAAI,GAAE,KAAK,SAAS,KAAK,CAAC,IAAIC;AAAA,EAC3qB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,uBAAuB;AACrB,aAAS/C,IAAI,GAAGA,IAAI,KAAK,SAAS,QAAQA;AACxC,WAAK,SAASA,CAAC,KAAK,QAAQ,KAAK,aAAaA,CAAC;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,aAAaA,GAAG;AACd,UAAMC,IAAI,KAAK,cAAc,IAAI,KAAK,oBAAoBxB;AAC1D,QAAIyB,IAAID,KAAKD,IAAI,KAAK;AACtB,eAAW,CAAC,GAAG,CAAC,KAAK,KAAK;AACxB,UAAIA,MAAME,KAAK,IAAI;AACrB,eAAW,KAAK,KAAK;AACnB,UAAI,IAAIF,GAAG;AACT,cAAM,IAAI,KAAK,oBAAoB,IAAI,CAAC,KAAK;AAC7C,QAAAE,KAAK;AAAA,MACb;AACI,WAAOA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,uBAAuBF,GAAGC,GAAG;AAC3B,UAAM,IAAoB,oBAAI,IAAK;AACnC,eAAW,CAAC,GAAG,CAAC,KAAK,KAAK;AACxB,UAAID,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,KAAKA,IAAIC,KAAK,EAAE,IAAI,IAAIA,GAAG,CAAC;AACpD,SAAK,sBAAsB;AAC3B,UAAMC,IAAoB,oBAAI,IAAK;AACnC,eAAW,KAAK,KAAK;AACnB,UAAIF,IAAIE,EAAE,IAAI,CAAC,IAAI,KAAKF,IAAIC,KAAKC,EAAE,IAAI,IAAID,CAAC;AAC9C,SAAK,gBAAgBC;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,uBAAuBF,GAAGC,GAAG;AAC3B,UAAM,IAAoB,oBAAI,IAAK;AACnC,eAAW,CAAC,GAAG,CAAC,KAAK,KAAK;AACxB,QAAE,IAAI,IAAID,IAAI,IAAI,IAAIC,GAAG,CAAC;AAC5B,SAAK,sBAAsB;AAC3B,UAAMC,IAAoB,oBAAI,IAAK;AACnC,eAAW,KAAK,KAAK;AACnB,MAAAA,EAAE,IAAI,IAAIF,IAAI,IAAI,IAAIC,CAAC;AACzB,SAAK,gBAAgBC;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOE,aAAaF,GAAGC,GAAG;AACjB,UAAM,IAAI,KAAK,oBAAoBxB;AACnC,aAASyB,IAAI,GAAGA,IAAID,GAAGC,KAAK;AAC1B,YAAM,IAAIF,IAAIE,GAAG,IAAI,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,EAAG,CAAA,GAAG,IAAI,IAAI,KAAK,SAAS,KAAK,CAAC,IAAI;AACjF,OAAC,KAAK,OAAO,SAAS,EAAE,WAAW,QAAQ,EAAE,WAAW,IAAI,KAAK,oBAAoB,IAAI,GAAG,EAAE,MAAM,IAAI,KAAK,oBAAoB,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,WAAW,KAAK,cAAc,IAAI,CAAC,IAAI,KAAK,cAAc,OAAO,CAAC;AAAA,IACnO;AAAA,EACA;AAAA,EACE,YAAY,EAAE,KAAKF,GAAG,MAAMC,GAAG,QAAQ,GAAG,OAAOC,KAAK;AACpD,QAAIkC,GAAGgJ;AACP,UAAMtI,IAAI7C,KAAK,GAAG8C,IAAI/C,KAAK,GAAGiC,MAAMG,IAAI,KAAK,SAAS,QAAQ,KAAK,MAAM,EAAE,GAAG,GAAG,GAAGlC,EAAG,CAAA,CAAC,MAAM,OAAO,SAASkC,EAAE,eAAe,GAAGE,MAAM8I,IAAI,KAAK,SAAS,QAAQ,KAAK,MAAM,EAAE,GAAG,GAAG,GAAGtI,EAAG,CAAA,CAAC,MAAM,OAAO,SAASsI,EAAE,eAAe,GAAG7I,IAAI,KAAK,aAAa,CAAC,GAAGC,IAAI,KAAK,aAAaO,CAAC,GAAGb,IAAI,KAAK,IAAI,GAAGD,IAAIK,CAAC,GAAGH,IAAI,KAAK,IAAI,GAAGI,IAAIC,CAAC;AACvU,WAAO,EAAE,GAAGO,GAAG,GAAGD,GAAG,QAAQX,GAAG,OAAOD,EAAG;AAAA,EAC9C;AAAA;AAAA,EAEE,eAAe;AACb,UAAMlC,IAAI,KAAK,SAASC,IAAI,KAAK,SAAS,IAAI,KAAK,aAAaC,IAAI,KAAK,cAAc,IAAI,KAAK,oBAAoBzB;AACpH,QAAI,IAAI;AACR,aAAS+D,IAAI,GAAGA,KAAKxC,GAAGwC,KAAK;AAC3B,YAAM,IAAI,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAGA,EAAG,GAAE,EAAE,YAAY,SAAU,CAAA,GAAGL,KAAK,KAAK,OAAO,SAAS,EAAE,UAAU,KAAK,mBAAmBzD,GAAI0D,IAAI,KAAK,SAAS,QAAQ,KAAK,MAAM,EAAE,GAAG,GAAG,GAAGI,EAAC,CAAE,CAAC;AACxL,MAAAJ,KAAK,SAASA,EAAE,aAAa,IAAI,IAAI,KAAKD;AAAA,IAChD;AACI,SAAK,aAAa,IAAI;AACtB,QAAI,IAAI,GAAG,IAAI;AACf,eAAW,CAACK,GAAG,CAAC,KAAK,KAAK;AACxB,MAAAA,KAAK,KAAKA,KAAKvC,MAAM,KAAK,IAAI;AAChC,eAAWuC,KAAK,KAAK;AACnB,UAAIA,KAAK,KAAKA,KAAKvC,GAAG;AACpB,cAAM,IAAI,KAAK,oBAAoB,IAAIuC,CAAC,KAAK;AAC7C,aAAK;AAAA,MACb;AACI,UAAM,IAAIvC,IAAI,IAAI;AAClB,SAAK,cAAcC,IAAI,IAAI,GAAG,KAAK,aAAaA,IAAI;AAAA,EACxD;AAAA;AAAA,EAEE,QAAQF,IAAI,IAAIC,IAAI,IAAI;AACtB,WAAO,KAAK,qBAAqB,KAAK,kBAAkB,KAAK,aAAa,KAAK,cAAc,KAAK,IAAK,GAAE,KAAK,kBAAmB,GAAE,KAAK,YAAY8D,IAAI/D,KAAK,KAAK,cAAc,MAAO,GAAEC,KAAK,KAAK,aAAc,GAAE;AAAA,EACvN;AAAA;AAAA,EAEE,MAAMD,IAAI,IAAI;AACZ,UAAMC,IAAI,OAAO,OAAO,OAAO,OAAO,OAAO,eAAe,IAAI,CAAC,GAAG,IAAI;AACxE,WAAOA,EAAE,YAAY8D,IAAI9D,EAAE,QAAQD,CAAC;AAAA,EACxC;AAAA;AAAA,EAEE,aAAaA,GAAGC,IAAI,GAAG,IAAI,GAAG;AAC5B,UAAMC,IAAIF,EAAE,WAAW,GAAG;AAC1B,IAAAE,MAAMF,IAAIA,EAAE,MAAM,CAAC,GAAG,IAAI;AAC1B,UAAM,IAAIA,EAAE,SAAS,GAAG;AACxB,UAAMA,IAAIA,EAAE,MAAM,GAAG,EAAE,GAAGC,IAAI;AAC9B,UAAM,IAAI,KAAK,cAAc,IAAID,CAAC;AAClC,QAAI,GAAG;AACL,YAAM,IAAIS,EAAE,CAAC;AACb,aAAO,EAAE,GAAG,EAAE,IAAIR,GAAG,GAAG,EAAE,IAAI,GAAG,QAAQC,GAAG,QAAQ,EAAG;AAAA,IAC7D;AACI,SAAK,qBAAsB;AAC3B,aAAS,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KAAK;AAC7C,YAAM,IAAI,KAAK,SAAS,CAAC;AACzB,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,cAAMsC,IAAI,EAAE,CAAC,GAAG,IAAIhC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAC,CAAE;AACpC,YAAI,KAAK,cAAc,IAAIgC,GAAG,CAAC,GAAGA,MAAMxC;AACtC,iBAAO;AAAA,YACL,GAAG,IAAIC;AAAA,YACP,GAAG,IAAI;AAAA,YACP,QAAQC;AAAA,YACR,QAAQ;AAAA,UACT;AAAA,MACX;AAAA,IACA;AACI,WAAO,EAAE,GAAG,IAAI,GAAG,IAAI,QAAQA,GAAG,QAAQ,EAAG;AAAA,EACjD;AAAA;AAAA,EAEE,eAAeF,GAAGC,IAAI,GAAG,IAAI,GAAG;AAC9B,UAAM,EAAE,GAAGC,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,EAAC,IAAK,KAAK,aAAaF,GAAGC,GAAG,CAAC;AACtE,WAAOS,GAAGF,EAAE,EAAE,GAAGN,GAAG,GAAG,EAAG,CAAA,GAAG,GAAG,CAAC;AAAA,EACrC;AAAA;AAAA,EAEE,qBAAqB;AACnB,SAAK,cAAc,MAAO;AAAA,EAC9B;AAAA;AAAA,EAEE,qBAAqB;AACnB,SAAK,qBAAsB;AAC3B,aAASF,IAAI,GAAGA,IAAI,KAAK,SAAS,QAAQA,KAAK;AAC7C,YAAMC,IAAI,KAAK,SAASD,CAAC;AACzB,eAAS,IAAI,GAAG,IAAIC,EAAE,QAAQ;AAC5B,aAAK,cAAc,IAAIA,EAAE,CAAC,GAAGO,EAAE,EAAE,GAAGR,GAAG,GAAG,EAAG,CAAA,CAAC;AAAA,IACtD;AAAA,EACA;AAAA;AAAA,EAEE,MAAMA,GAAG;AACP,QAAIE;AACJ,UAAM,EAAE,GAAGD,GAAG,GAAG4C,EAAG,IAAG7C;AACvB,WAAOC,KAAK,KAAK4C,KAAK,KAAK5C,KAAK,KAAK,KAAK,UAAU4C,KAAK,KAAK,KAAK,QAAQ,KAAK,aAAa5C,CAAC,EAAE4C,CAAC,KAAK3C,IAAI,KAAK,SAASD,CAAC,MAAM,OAAO,SAASC,EAAE2C,CAAC;AAAA,EACtJ;AAAA;AAAA,EAEE,QAAQ7C,GAAG,EAAE,YAAYC,IAAI,YAAY,OAAO,IAAI,GAAI,IAAG,IAAI;AAC7D,UAAM,EAAE,GAAGC,GAAG,GAAG,EAAG,IAAGF;AACvB,QAAIE,MAAM,MAAM,MAAM;AACpB;AACF,UAAM,IAAI,KAAK,MAAMF,CAAC;AACtB,QAAI,KAAK;AACP;AACF,SAAK,qBAAqBE,GAAG,GAAG,CAAC;AACjC,UAAM,IAAI,KAAK,SAAS,KAAK,CAAC;AAC9B,QAAI,KAAK;AACP;AACF,QAAI,IAAI,EAAE;AACV,WAAOD,MAAM,aAAa,EAAE,kBAAkB,QAAQ,IAAI0L,GAAG,EAAE,OAAO,GAAG,OAAO,MAAM,OAAO3L,GAAG,OAAO,GAAG,YAAYC,GAAG,IAAI,EAAG,CAAA,IAAI,EAAE,GAAG,GAAG,OAAO,EAAG;AAAA,EAC1J;AAAA;AAAA,EAEE,IAAI,UAAU;AACZ,UAAM,EAAE,KAAKD,GAAG,QAAQC,EAAC,IAAK,KAAK;AACnC,WAAO,IAAIA,IAAID;AAAA,EACnB;AAAA,EACE,IAAI,UAAU;AACZ,UAAM,EAAE,MAAMA,GAAG,OAAOC,EAAC,IAAK,KAAK;AACnC,WAAO,IAAIA,IAAID;AAAA,EACnB;AAAA,EACE,IAAI,MAAM;AACR,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACE,IAAI,OAAO;AACT,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACE,IAAI,SAAS;AACX,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA,EACE,IAAI,QAAQ;AACV,WAAO,KAAK,KAAK;AAAA,EACrB;AAAA;AAAA,EAEE,eAAe;AAAA,IACb,MAAMA;AAAA,IACN,IAAIC;AAAA,IACJ,YAAY,IAAI;AAAA,IAChB,OAAOC,IAAI;AAAA,IACX,QAAQ,IAAI8K;AAAA,IACZ,UAAU,IAAI;AAAA,EACf,IAAG,IAAI;AACN,UAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAOxI,MAAMxC,KAAK,KAAK,MAAM,IAAI8B,GAAG,IAAI,IAAI,GAAGU,IAAI,IAAI,CAAC;AAC5F,aAASL,IAAI,GAAGA,KAAK,GAAGA;AACtB,eAASC,IAAI,GAAGA,KAAKI,GAAGJ,KAAK;AAC3B,cAAM,IAAI,KAAK,MAAM,EAAE,GAAGD,GAAG,GAAGC,GAAG;AACnC,YAAInC,MAAM;AACR,gBAAM,IAAI2D,EAAE,SAAS,6BAA6B;AACpD,cAAMT,IAAI,KAAK,QAAQ,EAAE,GAAGhB,GAAG,GAAGC,EAAC,GAAI,EAAE,YAAY,GAAG,OAAOlC,EAAC,CAAE,KAAK,CAAE;AACzE,YAAI,EAAEiD,CAAC,GAAG;AACR,cAAIC,IAAID,EAAE;AACV,gBAAMC,IAAI,KAAK,UAAU,EAAE,GAAGjB,GAAG,GAAGC,EAAG,CAAA,EAAE,SAAS,EAAE,OAAOe,EAAE,OAAO,MAAMA,GAAG,OAAO,MAAM,OAAO,EAAE,GAAGhB,GAAG,GAAGC,EAAG,EAAA,CAAE,IAAI,EAAED,IAAI,CAAC,EAAEC,IAAI,CAAC,IAAIgB;AAAA,QACjJ;AAAA,MACA;AACI,WAAO;AAAA,EACX;AAAA;AAAA,EAEE,aAAapD,GAAG;AACd,UAAMC,IAAI,KAAK;AACf,QAAIA,EAAE,UAAU,OAAOA,EAAE,eAAe,GAAGA,EAAE,UAAU,MAAM,EAAE,QAAQ,KAAK,cAAc,KAAK,IAAI,CAAC,GAAGA,EAAE,UAAU,KAAKD,CAAC,GAAGC,EAAE,cAAcA,EAAE,iBAAiBD,GAAGC,EAAE,UAAU,SAASA,EAAE,cAAc;AACrM,YAAMC,IAAID,EAAE,UAAU,OAAO,GAAG,CAAC,EAAE,CAAC;AACpC,WAAK,eAAeC,CAAC;AAAA,IACtB;AACC,MAAAD,EAAE;AAAA,EACR;AAAA;AAAA,EAEE,eAAeD,GAAG;AAChB,KAACA,EAAE,cAAc,iBAAiBA,EAAE,cAAc,kBAAkBA,EAAE,QAAQ,QAAQ,CAACC,MAAM;AAC3F,MAAAA,EAAE,QAAQ,CAAC,MAAM;AACf,aAAK,kBAAkB,CAAC;AAAA,MAChC,CAAO;AAAA,IACP,CAAK,GAAGD,EAAE,cAAc,UAAUA,EAAE,cAAc,QAAQ,CAACC,MAAM;AAC3D,MAAAA,EAAE,OAAO,QAAQ,KAAK,kBAAkBA,EAAE,GAAG,GAAGA,EAAE,QAAQ,QAAQ,KAAK,kBAAkBA,EAAE,IAAI;AAAA,IACrG,CAAK;AAAA,EACL;AAAA;AAAA,EAEE,cAAcD,GAAG;AACf,KAACA,EAAE,cAAc,iBAAiBA,EAAE,cAAc,kBAAkBA,EAAE,SAAS,QAAQ,CAACC,MAAM;AAC5F,MAAAA,EAAE,QAAQ,CAAC,MAAM;AACf,aAAK,kBAAkB,CAAC;AAAA,MAChC,CAAO;AAAA,IACP,CAAK;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,kBAAkBD,GAAG;AACnB,QAAI6C;AACJ,UAAM5C,IAAI,KAAK,SAAS,QAAQD,CAAC;AACjC,KAAC6C,IAAI5C,KAAK,OAAO,SAASA,EAAE,iBAAiB,QAAQ4C,EAAE,QAAQ,CAAC3C,MAAM;AACpE,UAAI,GAAG;AACP,OAAC,KAAK,IAAI,KAAK,SAAS,QAAQA,CAAC,MAAM,OAAO,SAAS,EAAE,eAAe,QAAQ,EAAE,OAAOF,CAAC;AAAA,IAC3F,CAAA,GAAG,OAAO,KAAK,SAAS,KAAKA,CAAC,GAAG,OAAO,KAAK,SAAS,QAAQA,CAAC;AAAA,EACpE;AAAA;AAAA,EAEE,gBAAgBA,GAAG;AACjB,QAAIA,KAAK;AACP;AACF,UAAMC,IAAI,CAAE;AACZ,WAAOD,EAAE,SAAS,SAASC,EAAE,QAAQD,EAAE,QAAQA,EAAE,kBAAkB,SAASC,EAAE,iBAAiBD,EAAE,iBAAiBA,EAAE,cAAc,SAASC,EAAE,aAAaD,EAAE,aAAaA,EAAE,UAAU,SAASC,EAAE,SAASD,EAAE,SAASA,EAAE,SAAS,SAASC,EAAE,QAAQD,EAAE,QAAQA,EAAE,UAAU,SAASC,EAAE,SAASD,EAAE,SAASC;AAAA,EAC3S;AAAA,EACE,KAAK;AAAA,IACH,UAAUD,IAAI;AAAA,IACd,KAAKC;AAAA,IACL,KAAK;AAAA,IACL,aAAaC,IAAI;AAAA,IACjB,UAAU,IAAI;AAAA,IACd,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EACpB,GAAK;AACD,UAAM,IAAIF,EAAE,SAAS,IAAI,KAAK,qBAAqB,GAAGC,GAAG,MAAM,CAAC,GAAG,EAAE,YAAYuC,GAAG,WAAW,EAAC,IAAK,KAAK,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;AACtI,WAAO,KAAK,gBAAgB,CAAC,GAAGtC,KAAK,KAAK,aAAa;AAAA,MACrD,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY,EAAE;AAAA,MACd,YAAY,KAAK;AAAA,MACjB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,YAAYsC;AAAA,MACZ,WAAW;AAAA,MACX,eAAe;AAAA,IACrB,CAAK,GAAG,KAAK,QAAQ,EAAE;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWE,qBAAqBxC,GAAGC,GAAG,GAAGC,GAAG;AAC/B,UAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAG,IAAGD,GAAG,EAAE,KAAK,GAAG,MAAMuC,MAAMtC,GAAG,IAAI,EAAE,SAASiC,IAAI,EAAE,SAASC,IAAI,CAAE;AACjH,aAASoJ,IAAI,GAAGA,KAAK,GAAGA;AACtB,MAAAxL,EAAE,cAAcwL,CAAC,KAAKpJ,EAAE,KAAKoJ,CAAC;AAChC,UAAM,IAAI,IAAI,IAAI,GAAGrI,IAAIf,EAAE,QAAQgB,IAAI,CAAE;AACzC;AACE,UAAIoI,IAAI,GAAGC,IAAI;AACf,aAAOD,IAAIrI;AACT,UAAE,cAAcsI,CAAC,MAAMrI,EAAE,KAAKqI,CAAC,GAAGD,MAAMC;AAAA,IAChD;AACI,UAAM,IAAoB,oBAAI,IAAK;AACnC,aAASD,IAAI,GAAGA,IAAIrI,GAAGqI;AACrB,eAASC,IAAI,GAAGA,IAAI,GAAGA;AACrB,UAAE,IAAIjL,EAAE,EAAE,GAAG4B,EAAEoJ,CAAC,GAAG,GAAG,IAAIC,EAAG,CAAA,CAAC;AAClC,UAAMH,IAAoB,oBAAI,IAAK;AACnC,aAASE,IAAI,GAAGA,IAAIrI,GAAGqI,KAAK;AAC1B,YAAMC,IAAIrI,EAAEoI,CAAC;AACb,eAASE,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,cAAME,IAAIpJ,IAAIkJ;AACd,QAAAD,KAAK,KAAKG,KAAKzJ,KAAKmJ,EAAE,IAAI9K,EAAE,EAAE,GAAGiL,GAAG,GAAGG,EAAG,CAAA,CAAC;AAAA,MACnD;AAAA,IACA;AACI,UAAML,IAAI,CAAE;AACZ,aAASC,IAAI,GAAGA,IAAIrI,GAAGqI,KAAK;AAC1B,YAAMC,IAAIrJ,EAAEoJ,CAAC,GAAGE,IAAItI,EAAEoI,CAAC;AACvB,eAASI,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,cAAMC,IAAI,IAAID,GAAGE,IAAItJ,IAAIoJ,GAAGG,IAAIvL,EAAE,EAAE,GAAGiL,GAAG,GAAGI,EAAG,CAAA,GAAGG,IAAIN,KAAK,KAAKI,KAAK3J,GAAG8J,IAAID,IAAIxL,EAAE,EAAE,GAAGkL,GAAG,GAAGI,EAAC,CAAE,IAAI;AACrG,YAAII;AACJ,QAAAlM,MAAM,KAAKsL,EAAE,IAAIS,CAAC,MAAMG,IAAIlM,EAAE;AAC9B,YAAImM;AACJ,YAAIH;AACF,cAAI,EAAEhM,MAAM,KAAK,EAAE,IAAIiM,CAAC,IAAI;AAC1B,kBAAMG,IAAI,EAAE,MAAM,EAAE,GAAGV,GAAG,GAAGI,GAAG;AAChC,YAAAM,KAAK,SAASD,IAAIC;AAAA,UAC9B;AAAA,eACe;AACL,gBAAMA,IAAIpM,EAAE,MAAM,EAAE,GAAGyL,GAAG,GAAGI,GAAG;AAChC,UAAAO,KAAK,SAASD,IAAIC;AAAA,QAC5B;AACQ,cAAMC,IAAIrM,EAAE,QAAQ,EAAE,GAAGyL,GAAG,GAAGI,EAAG,GAAE,EAAE,YAAY,SAAQ,CAAE,GAAGS,IAAIN,IAAI,EAAE,QAAQ,EAAE,GAAGN,GAAG,GAAGI,EAAG,GAAE,EAAE,YAAY,SAAQ,CAAE,IAAI;AAC7H,QAAAP,EAAE,KAAK;AAAA,UACL,QAAQc,KAAK,OAAO,SAASA,EAAE;AAAA,UAC/B,OAAOC,KAAK,OAAO,SAASA,EAAE;AAAA,UAC9B,KAAKP;AAAA,UACL,KAAKE;AAAA,UACL,KAAKC;AAAA,UACL,MAAMC;AAAA,QAChB,CAAS;AAAA,MACT;AAAA,IACA;AACI,WAAOZ;AAAA,EACX;AAAA,EACE,IAAI,gBAAgB;AAClB,WAAO,KAAK,SAAS5B,EAAE,KAAKC;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaE,WAAW5J,GAAGC,GAAG,GAAGC,GAAG,IAAI,UAAU;AACnC,UAAM,IAAI,CAAA,GAAI,IAAI,IAAI4K,GAAG7K,CAAC,GAAG,IAAI,CAAA,GAAI,IAAI,CAAE,GAAEuC,IAAI,CAAE;AACnD,QAAItC;AACF,iBAAW;AAAA,QACT,QAAQiD;AAAA,QACR,OAAOC;AAAA,QACP,KAAK;AAAA,QACL,KAAKkI;AAAA,QACL,KAAKC;AAAA,QACL,MAAMC;AAAA,MACP,KAAI,GAAG;AACN,YAAIF,KAAK,MAAM;AACb,gBAAMG,IAAIhL,EAAE6K,CAAC,GAAGI,IAAIzL,EAAE,MAAMwL,CAAC;AAC7B,cAAIC,KAAK,MAAM;AACb,kBAAME,IAAInL,EAAE,CAAC;AACb,cAAE,KAAK,EAAE,GAAGmL,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIF,EAAC,CAAE;AAAA,UAC5C;AAAA,QACA;AACQ,YAAIF,KAAK;AACP,cAAIF,KAAK,MAAM;AACb,kBAAMG,IAAIhL,EAAE6K,CAAC;AACb,YAAA9I,EAAE,KAAK,EAAE,GAAGiJ,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAID,EAAC,CAAE;AAAA,UAC5C,OAAiB;AACL,kBAAMC,IAAIhL,EAAE,CAAC;AACb,cAAE,KAAK,EAAE,GAAGgL,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAID,EAAC,CAAE;AAAA,UAC5C;AAAA,MACA;AAAA;AAEM,iBAAW;AAAA,QACT,QAAQrI;AAAA,QACR,OAAOC;AAAA,QACP,KAAK;AAAA,QACL,KAAKkI;AAAA,QACL,KAAKC;AAAA,QACL,MAAMC;AAAA,MACP,KAAI,GAAG;AACN,cAAMC,IAAIhL,EAAE,CAAC,GAAGiL,IAAI1L,EAAE,MAAMyL,CAAC,GAAGG,IAAIN,KAAK,OAAO7K,EAAE6K,CAAC,IAAI,QAAQO,IAAID,KAAK,OAAO3L,EAAE,MAAM2L,CAAC,IAAI,QAAQE,IAAIJ,KAAK,OAAO1L,EAAE,SAAS,KAAK0L,CAAC,IAAI,QAAQK,IAAIF,KAAK,OAAO5L,EAAE,SAAS,KAAK4L,CAAC,IAAI;AACtL,YAAI,EAAE,MAAM,WAAWjD,EAAEkD,KAAK,OAAO,SAASA,EAAE,YAAYvE,EAAE,KAAKqB,EAAEmD,KAAK,OAAO,SAASA,EAAE,YAAYvE,EAAE,KAAK;AAC7G,cAAI+D,KAAK,MAAM;AACb,kBAAMS,IAAI7I,KAAKwG,IAAIuC,KAAKlM,EAAE,SAASgM,CAAC,KAAKhM,EAAE,eAAe,OAAO;AAAA,cAC/D,OAAOA;AAAA,cACP,OAAOyL;AAAA,cACP,MAAM,EAAE,OAAO,KAAM;AAAA,cACrB,SAASK;AAAA,cACT,WAAWvE;AAAA,YACzB,CAAa;AACD,cAAEgE,CAAC,IAAI;AAAA,cACL,GAAGW;AAAA,cACH,QAAQ/I;AAAA,YACT,GAAE,KAAK,SAAS,QAAQoI,CAAC,IAAI,EAAE,IAAIA,GAAG,SAASvL,EAAE,IAAI,aAAa,KAAK,IAAK,EAAA,GAAI,EAAE,KAAK,EAAE,GAAGyL,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIF,EAAC,CAAE;AAAA,UAC7H;AACU,cAAIM,KAAK,QAAQD,KAAK,QAAQN,KAAK,MAAM;AACvC,kBAAMU,IAAI5I,KAAKuG,IAAIsC,IAAI9I,KAAKwG,IAAIuC,IAAIjM,EAAE,SAAS+L,CAAC,KAAK/L,EAAE,eAAekM,IAAInM,EAAE,SAASiM,CAAC,KAAKjM,EAAE,eAAeqM,IAAIF,EAAE,WAAWD,EAAE,UAAUE,KAAKC,IAAIF,IAAID,GAAG,OAAO;AAAA,cAC9J,OAAOjM;AAAA,cACP,OAAO2L;AAAA,cACP,MAAME;AAAA,cACN,SAASC;AAAA,cACT,WAAWvE;AAAA,YACzB,CAAa;AACD,gBAAI4E,MAAM,EAAEV,CAAC,IAAII,KAAK,IAAI,EAAEJ,CAAC,IAAI;AAAA,cAC/B,GAAGI;AAAA,cACH,GAAGM;AAAA,cACH,QAAQC,IAAIlJ,IAAIC;AAAA,YAC9B,IAAgB0I,KAAK,MAAM;AACb,oBAAMS,IAAK,KAAK,SAAS,QAAQb,CAAC;AAClC,cAAAa,MAAOA,EAAG,cAAc,KAAK,IAAG;AAAA,YAC9C;AACY,YAAA/J,EAAE,KAAK,EAAE,GAAGoJ,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIF,EAAC,CAAE;AAAA,UAC5C;AAAA,QACA;AAAA,MACA;AACI,IAAAxL,MAAMF,EAAE,qBAAsB,GAAEA,MAAMC,KAAKA,EAAE;AAC7C,UAAM,IAAIC,IAAI,OAAOF,EAAE,SAAS,QAAQmC,IAAI,CAACjC,KAAKF,MAAMC,IAAIA,EAAE,SAAS,KAAI,IAAK;AAChF,WAAO,OAAO,KAAK,SAAS,MAAM,CAAC;AACnC,eAAW,EAAE,GAAGkD,GAAG,GAAGC,GAAG,IAAI,EAAC,KAAM;AAClC,MAAApD,EAAE,aAAamD,CAAC,EAAEC,CAAC,IAAI;AACzB,eAAW,EAAE,GAAGD,GAAG,GAAGC,GAAG,IAAI,EAAC,KAAMZ;AAClC,MAAAvC,EAAE,aAAakD,CAAC,EAAEC,CAAC,IAAI;AACzB,UAAMhB,IAAI,EAAE,OAAO,CAACe,MAAMA,EAAE,OAAO,IAAI,EAAE,IAAI,CAACA,MAAMA,EAAE,GAAG,GAAG,IAAI,EAAE,IAAI,CAACA,MAAMA,EAAE,GAAG;AAClF,QAAInD,MAAMC,IAAIA,EAAE,uBAAuB,CAAC,GAAmB,oBAAI,IAAI,CAAC,GAAG,GAAG,GAAGmC,CAAC,CAAC,CAAC,KAAKnC,EAAE,uBAAuBmC,GAAGpC,EAAE,uBAAuB,IAAI,CAACE,GAAG;AAChJ,QAAE,SAAS,EAAE,KAAI,GAAIF,EAAE,SAAS,KAAI,CAAE,GAAGA,MAAMC,KAAK,EAAE,SAASkC,EAAE,KAAM,GAAElC,EAAE,SAAS,MAAM;AAC1F,YAAMkD,IAAI,EAAE,kBAAkB,MAAM;AACpC,aAAO,OAAO,GAAGA,CAAC;AAAA,IACxB;AACI,WAAO,EAAE,YAAY,GAAG,WAAW,CAAA,EAAI;AAAA,EAC3C;AAAA,EACE,KAAK;AAAA,IACH,UAAUnD,IAAI;AAAA,IACd,KAAKC;AAAA,IACL,KAAK;AAAA,IACL,WAAWC,IAAI;AAAA,IACf,UAAU,IAAI;AAAA,IACd,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EACpB,GAAK;AACD,UAAM,IAAIF,MAAM,MAAM,EAAE,KAAK,GAAG,MAAMwC,GAAG,QAAQ,GAAG,OAAOL,EAAC,IAAKlC,GAAG,EAAE,KAAKmC,GAAG,MAAM,GAAG,QAAQe,GAAG,OAAOC,EAAC,IAAK,GAAG,IAAI,CAAA,GAAIkI,IAAI,KAAK,IAAK,GAAEC,IAAI,CAAE;AAChJ,aAASM,IAAI,GAAGA,KAAK,GAAGA;AACtB,MAAA7L,EAAE,cAAc6L,CAAC,KAAKN,EAAE,KAAKM,CAAC;AAChC,UAAML,IAAI,CAAE;AACZ,aAASK,IAAIzJ,GAAGyJ,KAAK1I,GAAG0I;AACtB,MAAAA,IAAI,KAAK,WAAW,KAAK,cAAcA,CAAC,KAAKL,EAAE,KAAKK,CAAC;AACvD,UAAMJ,IAAIF,EAAE,QAAQG,IAAIvJ,IAAIK,IAAI,GAAGoJ,IAAIxI,IAAI,IAAI;AAC/C,aAASyI,IAAI,GAAGA,IAAIL,EAAE,QAAQK,KAAK;AACjC,YAAMC,IAAIN,EAAEK,CAAC,GAAGE,IAAIR,EAAEM,IAAIJ,CAAC;AAC3B,eAASO,IAAI,GAAGA,KAAKJ,IAAI,GAAGI,KAAK;AAC/B,cAAMC,IAAI,IAAID;AACd,YAAIC,IAAI,KAAK;AACX;AACF,cAAMC,IAAI1J,IAAIwJ,IAAIN,GAAGS,IAAI,IAAI,IAAIL,IAAIC,GAAGM,IAAI,IAAI,IAAIJ,IAAIC,GAAGI,IAAI;AAAA,UAC7D,GAAGtM,EAAE,QAAQ,EAAE,GAAG+L,GAAG,GAAGG,EAAG,GAAE,EAAE,YAAY,SAAU,CAAA;AAAA,QAC/D,GAAWE,IAAI,EAAE,GAAGN,GAAG,GAAGG,EAAG,GAAEM,KAAK,KAAK,QAAQH,GAAG,EAAE,YAAY,SAAQ,CAAE,GAAGI,KAAK,KAAK,UAAUJ,CAAC,GAAGK,KAAK,EAAE,GAAGV,GAAG,GAAGG,KAAKQ,KAAK1M,EAAE,UAAUyM,EAAE,GAAGE,KAAK3M,EAAE,QAAQyM,IAAI,EAAE,YAAY,SAAU,CAAA,GAAGG,KAAKF,GAAG,WAAWF,GAAG;AAC9M,QAAAF,EAAE,SAASM,KAAKD,MAAM,OAAO,SAASA,GAAG,SAASJ,MAAM,OAAO,SAASA,GAAG;AAC3E,cAAMM,KAAK,KAAK,MAAMT,CAAC;AACvB,aAAK,kBAAkBS,EAAE;AACzB,cAAMC,MAAMR,KAAK,OAAO,SAASA,EAAE,mBAAmB,KAAK,KAAK,eAAeA,KAAK,OAAO,SAASA,EAAE,OAAO;AAAA,UAC3G,YAAYO;AAAA,UACZ,QAAQV;AAAA,UACR,QAAQE;AAAA,QAClB,CAAS,IAAIC,KAAK,OAAO,SAASA,EAAE,OAAOS,KAAK,KAAK,MAAMX,CAAC,GAAGY,KAAK,KAAK,SAAS,QAAQD,EAAE;AACpF,QAAAC,MAAM,SAASA,GAAG,cAAc1B;AAChC,cAAM2B,KAAKzM,EAAE4L,CAAC;AACd,YAAIlM,GAAG;AACL,gBAAMgN,KAAI,KAAK,QAAQd,GAAG,EAAE,YAAY,UAAU;AAClD,UAAAE,EAAE,QAAQY,MAAK,OAAO,SAASA,GAAE,OAAOZ,EAAE,iBAAiBY,MAAK,OAAO,SAASA,GAAE,gBAAgBZ,EAAE,aAAaY,MAAK,OAAO,SAASA,GAAE;AAAA,QAClJ;AACQ,UAAED,EAAE,IAAI,EAAE,GAAGX,GAAG,OAAOQ,GAAI;AAAA,MACnC;AAAA,IACA;AACI,WAAO,KAAK,OAAO;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAWnF;AAAA,MACX,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IACtB,CAAK;AAAA,EACL;AAAA,EACE,UAAU3H,GAAG;AACX,UAAMC,IAAI,KAAK,QAAQD,GAAG,EAAE,YAAY,UAAU;AAClD,YAAQC,KAAK,OAAO,SAASA,EAAE,WAAW,OAAO,KAAK,gBAAgB,KAAK,SAASA,EAAE,MAAM,KAAK,KAAK;AAAA,EAC1G;AAAA;AAAA,EAEE,QAAQ;AAAA,IACN,MAAMD;AAAA,IACN,SAASC,IAAI;AAAA,IACb,mBAAmB,IAAI;AAAA,IACvB,cAAcC,IAAI,CAAC,OAAO;AAAA,IAC1B,UAAU,IAAI;AAAA,IACd,WAAW,IAAIiI;AAAA,IACf,iBAAiB,IAAI;AAAA,EACzB,GAAK;AACD,UAAM,IAAI,IAAI,IAAI,CAAE,GAAE3F,IAAI,IAAI,IAAI,KAAK,IAAK;AAC5C,QAAIL,IAAI;AACR,WAAO,OAAO,KAAKnC,CAAC,EAAE,QAAQ,CAACoC,MAAM;AACnC,UAAIoJ,GAAGC,GAAGC,GAAGE,GAAGC;AAChB,YAAMT,IAAI3K,EAAE2B,CAAC,GAAGe,IAAI,KAAK,MAAMiI,CAAC,GAAGhI,IAAI,KAAK,SAAS,KAAKD,CAAC;AAC3D,UAAI,MAAM,UAAUyF,EAAExF,KAAK,OAAO,SAASA,EAAE,YAAY+E,EAAE;AACzD;AACF,UAAIkD,IAAI,EAAE,GAAGrL,EAAEoC,CAAC,EAAG;AACnB,UAAI,KAAK,WAAWiJ,MAAMA,EAAE,mBAAmBjI,KAAK,OAAO,SAASA,EAAE,mBAAmB,QAAQ,KAAK,kBAAkBD,CAAC,GAAGkI,EAAE,QAAQ,KAAK,eAAeA,EAAE,OAAO,EAAE,YAAYlI,EAAG,CAAA,IAAIjD,EAAE,QAAQ,CAAC4L,MAAM;AACvM,QAAAT,EAAES,CAAC,IAAI1I,KAAK,OAAO,SAASA,EAAE0I,CAAC;AAAA,MAChC,CAAA,GAAG,MAAM,UAAUlD,EAAExF,KAAK,OAAO,SAASA,EAAE,YAAYqE,EAAE,KAAK,OAAO4D,EAAE,OAAO,MAAM,UAAUzC,EAAExF,KAAK,OAAO,SAASA,EAAE,YAAYsE,EAAE,OAAO8D,IAAIH,KAAK,OAAO,SAASA,EAAE,UAAU,QAAQ,OAAOG,EAAE,iBAAiBC,IAAIJ,KAAK,OAAO,SAASA,EAAE,UAAU,QAAQ,OAAOI,EAAE,aAAa,MAAM,UAAU7C,EAAExF,KAAK,OAAO,SAASA,EAAE,YAAYwE,EAAE,OAAO8D,IAAIL,KAAK,OAAO,SAASA,EAAE,UAAU,QAAQ,OAAOK,EAAE,QAAQE,IAAIP,KAAK,OAAO,SAASA,EAAE,UAAU,QAAQ,OAAOO,EAAE,UAAUP,EAAE,SAAS,QAAQA,EAAE,UAAU,UAAUlJ,IAAI,KAAK,EAAEgB,CAAC,IAAIC,KAAK,CAAE,GAAEiI,IAAI,EAAE,IAAI,KAAK,UAAUjI,KAAK,OAAO,SAASA,EAAE,WAAWuG,EAAE,KAAK,KAAK,eAAe,OAAO;AAAA,QACjnB,OAAO;AAAA,QACP,OAAOyB;AAAA,QACP,MAAMC;AAAA,QACN,SAASjI;AAAA,QACT,WAAW;AAAA,MACnB,CAAO,EAAC,GAAI,GAAG;AACP,cAAM0I,IAAI,KAAK,SAAS,QAAQ3I,CAAC;AACjC,QAAA2I,KAAK,SAASA,EAAE,cAAc;AAAA,MACtC;AACM,UAAI7L,GAAG;AACL,cAAM6L,IAAI,EAAE,GAAG1I,GAAG,GAAGiI,EAAG;AACxB,aAAK,SAAS,KAAKlI,CAAC,IAAI2I,GAAG,EAAE3I,CAAC,IAAI2I;AAAA,MACnC;AACC,aAAK,SAAS,KAAK3I,CAAC,IAAIkI,GAAG,EAAElI,CAAC,IAAIkI;AACpC,UAAID,EAAE,MAAM,KAAKA,EAAE,KAAK,GAAG;AACzB,cAAMU,KAAKD,IAAI,KAAK,SAAS,KAAK1I,CAAC,MAAM,OAAO,SAAS0I,EAAE,QAAQE,IAAI,KAAK,oBAAoBtN;AAChG,QAAAqN,KAAK,QAAQA,MAAMC,IAAI,KAAK,oBAAoB,IAAIX,EAAE,GAAGU,CAAC,IAAI,KAAK,oBAAoB,OAAOV,EAAE,CAAC;AAAA,MACzG;AACM,MAAA5I,EAAE,KAAKJ,CAAC;AAAA,IACd,CAAK,GAAG,KAAK,uBAAuBI,GAAG;AAAA,MACjC,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,SAASL;AAAA,IACV;AAAA,EACL;AAAA,EACE,OAAO;AAAA,IACL,MAAMnC;AAAA,IACN,SAASC,IAAI;AAAA,IACb,mBAAmB,IAAI;AAAA,IACvB,aAAaC,IAAI;AAAA,IACjB,UAAU,IAAI;AAAA,IACd,WAAW,IAAIiI;AAAA,IACf,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EACpB,GAAK;AACD,UAAM,EAAE,YAAY3F,GAAG,WAAW,GAAG,SAASL,EAAC,IAAK,KAAK,QAAQ;AAAA,MAC/D,MAAMnC;AAAA,MACN,SAASC;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,GAAG,KAAK,OAAO,EAAE,cAAc,EAAC,IAAK,CAAA;AAAA,IAC3C,CAAK;AACD,WAAOC,KAAK,KAAK,aAAa;AAAA,MAC5B,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,YAAYsC;AAAA,MACZ,WAAW;AAAA,MACX,SAASvC;AAAA,IACV,CAAA,GAAG,KAAK,QAAQ,IAAIkC,CAAC;AAAA,EAC1B;AAAA;AAAA,EAEE,mBAAmB;AAAA,IACjB,OAAOnC;AAAA,IACP,QAAQC;AAAA,IACR,mBAAmB,IAAI;AAAA,IACvB,aAAaC,IAAI;AAAA,IACjB,WAAW,IAAI;AAAA,IACf,UAAU,IAAI;AAAA,IACd,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EACpB,GAAK;AACD,UAAM,EAAE,GAAG,GAAG,GAAGsC,MAAMxC,GAAG,IAAI,CAAE;AAChC,QAAImC,IAAI,GAAGC,IAAI;AACf,WAAOD,IAAIlC,EAAE,UAAU,EAAEmC,IAAI,KAAK,WAAW;AAC3C,UAAI,KAAK,cAAcA,CAAC,GAAG;AACzB,QAAAA;AACA;AAAA,MACR;AACM,MAAAnC,EAAEkC,CAAC,EAAE,QAAQ,CAACgB,GAAGC,MAAM;AACrB,cAAMiI,IAAI7I,IAAIY;AACd,YAAIiI,IAAI,KAAK;AACX;AACF,cAAMC,IAAI,EAAE,GAAGlJ,GAAG,GAAGiJ,EAAG,GAAEE,IAAI,KAAK,MAAMD,GAAGnI,EAAE,SAAS,EAAE;AACzD,YAAIoI,EAAE,QAAQ,EAAE,GAAGpI,EAAE,OAAO,GAAGoI,EAAE,MAAO,GAAE,GAAG;AAC3C,gBAAMC,IAAI,KAAK,QAAQF,GAAG,EAAE,YAAY,UAAU;AAClD,UAAAC,EAAE,QAAQC,KAAK,OAAO,SAASA,EAAE,OAAOD,EAAE,iBAAiBC,KAAK,OAAO,SAASA,EAAE,gBAAgBD,EAAE,aAAaC,KAAK,OAAO,SAASA,EAAE;AAAA,QAClJ;AACQ,UAAEhL,EAAE8K,CAAC,CAAC,IAAIC;AAAA,MAClB,CAAO,GAAGpJ,KAAKC;AAAA,IACf;AACI,WAAO,KAAK,OAAO;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,MACT,mBAAmB;AAAA,MACnB,aAAalC;AAAA,MACb,UAAU;AAAA,MACV,WAAWuH;AAAA,MACX,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IACtB,CAAK;AAAA,EACL;AAAA,EACE,YAAYzH,GAAG;AACb,UAAMC,IAAID,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAACE,OAAO,EAAE,OAAOA,EAAC,EAAG,CAAC;AAC1D,WAAO,KAAK,mBAAmB,EAAE,GAAGF,GAAG,QAAQC,GAAG;AAAA,EACtD;AAAA,EACE,MAAMD,GAAG;AACP,UAAM,EAAE,OAAOC,GAAG,OAAO,EAAC,IAAKD,GAAGE,IAAI,KAAK,MAAMD,GAAG,KAAK,EAAE,GAAG,IAAI,KAAK,QAAQA,GAAG,EAAE,YAAY,OAAO;AACvG,UAAM,KAAK,OAAO,SAAS,EAAE,UAAU,UAAUC,EAAE;AACjD,aAAO;AACT,UAAM,IAAI,EAAE,CAACM,EAAEP,CAAC,CAAC,GAAGC,EAAG;AACvB,WAAO,KAAK,OAAO;AAAA,MACjB,GAAGF;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAWyH;AAAA,IACjB,CAAK;AAAA,EACL;AAAA,EACE,WAAW;AAAA,IACT,GAAGzH;AAAA,IACH,SAASC;AAAA,IACT,OAAO;AAAA,IACP,MAAMC;AAAA,IACN,SAAS;AAAA,IACT,mBAAmB;AAAA,IACnB,UAAU,IAAI;AAAA,IACd,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EACpB,GAAK;AACD,QAAI,KAAK,eAAe,MAAM,KAAK,UAAUD,IAAI,KAAK;AACpD,aAAO,QAAQ,MAAM,uBAAuB,KAAK,UAAU,GAAG,GAAG;AACnE,UAAMuC,IAAI,KAAK,SAAS,IAAI,CAAA,GAAIL,IAAI,KAAK,IAAK;AAC9C,aAASC,IAAI,GAAGA,IAAInC,GAAGmC,KAAK;AAC1B,YAAM,IAAI,CAAE;AACZ,eAASe,IAAI,GAAGA,KAAKX,GAAGW,KAAK;AAC3B,cAAMC,IAAI,KAAK,YAAa;AAC5B,UAAE,KAAKA,CAAC;AACR,cAAM,IAAI,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAGD,EAAG,GAAE,EAAE,YAAY,UAAU,GAAGmI,IAAI,KAAK,gBAAgB,CAAC;AAC5F,aAAK,SAAS,KAAKlI,CAAC,IAAI,EAAE,GAAGkI,EAAC,GAAI,KAAK,SAAS,QAAQlI,CAAC,IAAI,EAAE,IAAIA,GAAG,SAAS,KAAK,IAAI,aAAajB,EAAG;AAAA,MAChH;AACM,QAAE,KAAK,CAAC;AAAA,IACd;AACI,QAAI,KAAK,SAAS,OAAOnC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,KAAK,UAAUC,GAAG,KAAK,uBAAuBD,GAAGC,CAAC,GAAG,KAAK,aAAaD,GAAGC,CAAC,GAAG,KAAK,aAAa;AAAA,MACzI,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,GAAGD;AAAA,MACH,SAASC;AAAA,MACT,UAAU;AAAA,IAChB,CAAK,GAAGC,KAAK,OAAO,OAAO,KAAK,SAAS,aAAa,KAAK,QAAQ,EAAE,MAAMA,GAAG,SAAS,GAAG,mBAAmB,GAAG,UAAU,EAAC,CAAE,GAAG;AAAA,MAC1H,SAAS;AAAA,IACf,CAAK,GAAG,KAAK,SAAS,cAAc;AAC9B,YAAMkC,IAAI,KAAK,MAAO;AACtB,MAAAA,EAAE,OAAO;AAAA,QACP,KAAKpC;AAAA,QACL,QAAQA,IAAIC,IAAI;AAAA,QAChB,MAAM,KAAK,KAAK;AAAA,QAChB,OAAO,KAAK,KAAK;AAAA,MACzB,GAASmC,EAAE,gBAAgC,oBAAI,IAAG,GAAI,KAAK,SAAS,aAAa,EAAE,OAAOA,GAAG,GAAGpC,GAAG,SAASC,EAAC,CAAE;AAAA,IAC/G;AACI,WAAO,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC9B;AAAA,EACE,WAAW;AAAA,IACT,GAAGD;AAAA,IACH,SAASC;AAAA,IACT,UAAU,IAAI;AAAA,IACd,gBAAgBC;AAAA,IAChB,gBAAgB;AAAA,EACpB,GAAK;AACD,QAAI,KAAK,eAAe,MAAM,KAAK,UAAUD,IAAI,KAAK;AACpD,aAAO,QAAQ,MAAM,YAAY,KAAK,UAAU,uBAAuB,GAAG;AAC5E,UAAM,IAAI,IAAI6K,GAAG,IAAI,GAAG,IAAI,CAAE;AAC9B,SAAK,qBAAsB;AAC3B,UAAM,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACzC,aAAS,IAAI9K,GAAG,IAAIA,IAAIC,GAAG,KAAK;AAC9B,YAAMkC,IAAI,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAG,GAAE,EAAE,YAAY,SAAQ,CAAE;AAC/D,UAAI,MAAM,UAAUyG,EAAEzG,KAAK,OAAO,SAASA,EAAE,YAAY8E,EAAE;AACzD,eAAO,QAAQ,KAAK,qBAAqB,CAAC,GAAG,GAAG;AAClD,eAAS7E,IAAI,GAAGA,KAAK,KAAK,SAASA,KAAK;AACtC,cAAM,IAAI,KAAK,MAAM,EAAE,GAAG,GAAG,GAAGA,GAAG;AACnC,aAAK,SAAS,EAAE,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,GAAG,IAAInC,GAAG,GAAGmC,EAAC,CAAE;AAAA,MACtF;AACM,QAAE,QAAQ,CAAC;AAAA,IACjB;AACI,UAAM,IAAI,CAAE;AACZ,MAAE,QAAQ,CAAC,MAAM;AACf,YAAMD,IAAI,KAAK,SAAS,OAAO,GAAG,CAAC;AACnC,QAAE,QAAQA,EAAE,CAAC,CAAC;AAAA,IACpB,CAAK,GAAG,KAAK,KAAK,UAAU,EAAE,QAAQ,KAAK,uBAAuBnC,GAAGC,CAAC;AAClE,UAAMuC,IAAI,EAAE,kBAAkB,YAAY;AAC1C,QAAI,KAAK,aAAa;AAAA,MACpB,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,gBAAgBtC;AAAA,MAChB,gBAAgB;AAAA,MAChB,IAAI,EAAE,QAAS;AAAA,MACf,YAAYsC;AAAA,MACZ,SAAS;AAAA,IACf,CAAK,GAAG,KAAK,SAAS,cAAc;AAC9B,YAAM,IAAI,KAAK,MAAO;AACtB,QAAE,WAAW,GAAG,EAAE,OAAO;AAAA,QACvB,KAAKxC;AAAA,QACL,QAAQA,IAAIC,IAAI;AAAA,QAChB,MAAM,KAAK,KAAK;AAAA,QAChB,OAAO,KAAK,KAAK;AAAA,MAClB,GAAE,EAAE,gBAAgC,oBAAI,IAAK,GAAE,KAAK,SAAS,aAAa,EAAE,OAAO,GAAG,IAAI,EAAE,QAAS,EAAA,CAAE;AAAA,IAC9G;AACI,WAAO,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC9B;AAAA,EACE,WAAW;AAAA,IACT,GAAGD;AAAA,IACH,SAASC;AAAA,IACT,OAAO;AAAA,IACP,MAAMC;AAAA,IACN,SAAS;AAAA,IACT,mBAAmB;AAAA,IACnB,UAAU,IAAI;AAAA,IACd,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EACpB,GAAK;AACD,QAAI,KAAK,eAAe,MAAM,KAAK,UAAUD,IAAI,KAAK;AACpD,aAAO,QAAQ,MAAM,0BAA0B,KAAK,UAAU,GAAG,GAAG;AACtE,UAAMuC,IAAI,KAAK,SAAS,IAAI,CAAA,GAAIL,IAAI,KAAK,IAAK;AAC9C,aAASC,IAAI,GAAGA,KAAKI,GAAGJ,KAAK;AAC3B,YAAM,IAAI,CAAE;AACZ,eAASe,IAAI,GAAGA,IAAIlD,GAAGkD,KAAK;AAC1B,cAAMC,IAAI,KAAK,YAAa;AAC5B,UAAE,KAAKA,CAAC;AACR,cAAM,IAAI,KAAK,QAAQ,EAAE,GAAGhB,GAAG,GAAG,EAAG,GAAE,EAAE,YAAY,UAAU,GAAGkJ,IAAI,KAAK,gBAAgB,CAAC;AAC5F,aAAK,aAAalJ,CAAC,EAAE,OAAOpC,GAAG,GAAGoD,CAAC,GAAG,KAAK,SAAS,KAAKA,CAAC,IAAI,EAAE,GAAGkI,EAAC,GAAI,KAAK,SAAS,QAAQlI,CAAC,IAAI,EAAE,IAAIA,GAAG,SAAS,KAAK,IAAI,aAAajB,EAAG;AAAA,MACtJ;AACM,QAAE,KAAK,CAAC;AAAA,IACd;AACI,QAAI,KAAK,KAAK,SAASlC,GAAG,KAAK,aAAa;AAAA,MAC1C,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,GAAGD;AAAA,MACH,SAASC;AAAA,MACT,UAAU;AAAA,IAChB,CAAK,GAAGC,KAAK,OAAO,OAAO,KAAK,SAAS,aAAa,KAAK,QAAQ,EAAE,MAAMA,GAAG,SAAS,GAAG,mBAAmB,GAAG,UAAU,EAAC,CAAE,GAAG;AAAA,MAC1H,SAAS;AAAA,IACf,CAAK,GAAG,KAAK,SAAS,cAAc;AAC9B,YAAMkC,IAAI,KAAK,MAAO;AACtB,MAAAA,EAAE,OAAO;AAAA,QACP,KAAK,KAAK,KAAK;AAAA,QACf,QAAQ,KAAK,KAAK;AAAA,QAClB,MAAMpC;AAAA,QACN,OAAOA,IAAIC,IAAI;AAAA,MACvB,GAASmC,EAAE,gBAAgC,oBAAI,IAAG,GAAI,KAAK,SAAS,aAAa,EAAE,OAAOA,GAAG,GAAGpC,GAAG,SAASC,EAAC,CAAE;AAAA,IAC/G;AACI,WAAO,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC9B;AAAA,EACE,WAAW;AAAA,IACT,GAAGD;AAAA,IACH,SAASC;AAAA,IACT,UAAU,IAAI;AAAA,IACd,gBAAgBC;AAAA,IAChB,gBAAgB;AAAA,EACpB,GAAK;AACD,QAAI,KAAK,eAAe,MAAM,KAAK,UAAUD,IAAI,KAAK;AACpD,aAAO,QAAQ,MAAM,YAAY,KAAK,UAAU,0BAA0B,GAAG;AAC/E,UAAM,IAAI,IAAI6K,GAAG,IAAI,GAAG,IAAI,CAAE;AAC9B,SAAK,qBAAsB;AAC3B,UAAM,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACzC,aAAS,IAAI9K,GAAG,IAAIA,IAAIC,GAAG,KAAK;AAC9B,YAAMkC,IAAI,KAAK,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAG,GAAE,EAAE,YAAY,SAAQ,CAAE;AAC/D,UAAI,MAAM,UAAUyG,EAAEzG,KAAK,OAAO,SAASA,EAAE,YAAY+E,EAAE,GAAG;AAC5D,gBAAQ,KAAK,qBAAqB,CAAC,GAAG;AACtC;AAAA,MACR;AACM,eAAS9E,IAAI,GAAGA,KAAK,KAAK,SAASA,KAAK;AACtC,cAAM,IAAI,KAAK,MAAM,EAAE,GAAGA,GAAG,GAAG,GAAG;AACnC,aAAK,SAAS,EAAE,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,GAAGA,GAAG,GAAG,IAAInC,EAAC,CAAE;AAAA,MACtF;AACM,QAAE,QAAQ,CAAC;AAAA,IACjB;AACI,UAAM,IAAI,CAAE;AACZ,SAAK,SAAS,QAAQ,CAAC,MAAM;AAC3B,YAAMkC,IAAI,CAAE;AACZ,QAAE,KAAKA,CAAC,GAAG,EAAE,QAAQ,CAACC,MAAM;AAC1B,QAAAD,EAAE,QAAQ,GAAG,EAAE,OAAOC,GAAG,CAAC,CAAC;AAAA,MACnC,CAAO;AAAA,IACF,CAAA,GAAG,KAAK,KAAK,SAAS,EAAE;AACzB,UAAMI,IAAI,EAAE,kBAAkB,YAAY;AAC1C,QAAI,KAAK,aAAa;AAAA,MACpB,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,gBAAgBtC;AAAA,MAChB,gBAAgB;AAAA,MAChB,IAAI,EAAE,QAAS;AAAA,MACf,YAAYsC;AAAA,MACZ,SAAS;AAAA,IACf,CAAK,GAAG,KAAK,SAAS,cAAc;AAC9B,YAAM,IAAI,KAAK,MAAO;AACtB,QAAE,WAAW,GAAG,EAAE,OAAO;AAAA,QACvB,KAAK,KAAK,KAAK;AAAA,QACf,QAAQ,KAAK,KAAK;AAAA,QAClB,MAAMxC;AAAA,QACN,OAAOA,IAAIC,IAAI;AAAA,MAChB,GAAE,EAAE,gBAAgC,oBAAI,IAAK,GAAE,KAAK,SAAS,aAAa,EAAE,OAAO,GAAG,IAAI,EAAE,QAAS,EAAA,CAAE;AAAA,IAC9G;AACI,WAAO,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC9B;AAAA;AAAA,EAEE,YAAY;AACV,WAAO,CAAC,GAAG,KAAK,SAAS,SAAS;AAAA,EACtC;AAAA;AAAA,EAEE,eAAe;AACb,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA;AAAA,EAEE,cAAc;AACZ,WAAO,KAAK,SAAS,UAAU;AAAA,EACnC;AAAA;AAAA,EAEE,kBAAkB;AAChB,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA;AAAA,EAEE,MAAMD,GAAGC,GAAG;AACV,UAAM,IAAI,KAAK,QAAQD,GAAG,EAAE,YAAY,SAAU,CAAA,KAAK,CAAE;AACzD,WAAO,KAAK,UAAUA,CAAC,EAAE,iBAAiBC,GAAG,CAAC;AAAA,EAClD;AAAA;AAAA,EAEE,OAAOD,GAAG;AACR,UAAM,EAAE,OAAOC,GAAG,OAAO,EAAG,IAAGD;AAC/B,WAAO,KAAK,MAAMC,CAAC,GAAG,KAAK,UAAUA,CAAC,EAAE,OAAO,EAAE,OAAO,MAAM,OAAOA,GAAG,OAAO,GAAG,OAAO,QAAQ;AAAA,EACrG;AAAA,EACE,mBAAmB;AAAA,IACjB,OAAOD;AAAA,IACP,MAAMC;AAAA,IACN,YAAY,IAAI;AAAA,EACpB,GAAK;AACD,QAAIA,KAAK,MAAM;AACb,YAAM,IAAI,KAAK,MAAMD,CAAC;AACtB,MAAAC,IAAI,KAAK,OAAO,KAAK,SAAS,KAAK,CAAC,IAAI;AAAA,IAC9C;AACI,QAAIA,KAAK;AACP,aAAO;AACT,UAAMC,IAAI,KAAK,UAAUF,CAAC,GAAG,IAAIC,EAAE;AACnC,QAAI,OAAO,KAAK,YAAY,EAAE,CAAC,MAAM,KAAK;AACxC,UAAI,MAAM;AACR,eAAO;AACT,UAAI,MAAM,UAAUA,KAAK,OAAO,SAASA,EAAE,oBAAoB,IAAI;AACjE,cAAM,IAAI,IAAI2F,GAAG,EAAE,UAAU,CAAC,CAAC;AAC/B,eAAO,EAAE,SAAQ,GAAI,MAAM,EAAE,QAAQ,EAAE,OAAO,MAAM;AAAA,MAC5D;AACM,UAAI;AACF,cAAM,IAAI,KAAK,MAAM5F,CAAC,GAAG,IAAI2L,GAAG,EAAE,OAAO,GAAG,OAAO,MAAM,OAAO3L,GAAG,OAAO,IAAI,YAAY,GAAG,IAAI,EAAG,CAAA,GAAG,IAAImN,GAAG,EAAE,OAAO,GAAG,OAAO,GAAE,CAAE;AACrI,eAAOjN,EAAE,UAAU,EAAE,OAAO,GAAG,MAAMD,GAAG,OAAO,MAAM,OAAOD,EAAC,CAAE;AAAA,MAChE,SAAQ,GAAG;AACV,eAAOE,EAAE,UAAU,EAAE,OAAO,GAAG,MAAMD,GAAG,OAAO,MAAM,OAAOD,EAAC,CAAE;AAAA,MACvE;AAAA,IACA;AACI,WAAOE,EAAE,UAAU,EAAE,OAAO,GAAG,MAAMD,GAAG,OAAO,MAAM,OAAOD,EAAC,CAAE;AAAA,EACnE;AAAA;AAAA,EAEE,KAAKA,GAAG;AACN,UAAMC,IAAI,OAAO,OAAO,OAAO,OAAO,OAAO,eAAe,IAAI,CAAC,GAAG,IAAI;AACxE,WAAOA,EAAE,OAAOD,GAAGC,EAAE,YAAY8D,IAAI9D;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,MAAM,EAAE,OAAOD,IAAI,IAAI,IAAIC,KAAK;AAC9B,WAAOmN,GAAG,EAAE,OAAO,MAAM,OAAOpN,GAAG,IAAIC,GAAG;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKE,MAAM,EAAE,OAAOD,IAAI,IAAI,IAAIC,KAAK;AAC9B,QAAIC;AACJ,QAAI,CAAC6D,GAAG,GAAG,KAAK,SAAS;AACvB,aAAO,KAAK;AACd,QAAIlB,IAAI;AACR,WAAOA,aAAaqI;AAClB,MAAArI,KAAK3C,IAAIkN,GAAG,EAAE,OAAOvK,GAAG,OAAO7C,GAAG,IAAIC,EAAC,CAAE,EAAE,CAAC,MAAM,OAAO,SAASC,EAAE,CAAC;AACvE,WAAO,KAAK,YAAY2C,GAAG,KAAK;AAAA,EACpC;AAAA;AAAA,EAEE,WAAW7C,IAAI,IAAIC,IAAI,IAAI;AACzB,UAAM,IAAI,OAAO,KAAKD,CAAC;AACvB,MAAE,QAAQ,CAAC,MAAM;AACf,YAAM,IAAIA,EAAE,CAAC,KAAK,CAAE;AACpB,UAAI;AACJ,MAAAC,KAAK,IAAI,EAAE,GAAG,KAAK,SAAS,KAAK,CAAC,EAAC,GAAI,OAAO,KAAK,CAAC,EAAE,QAAQ,CAACuC,MAAM;AACnE,UAAEA,CAAC,MAAM,SAAS,OAAO,EAAEA,CAAC,IAAI,EAAEA,CAAC,IAAI,EAAEA,CAAC;AAAA,MAClD,CAAO,KAAK,IAAI,EAAE,GAAG,EAAG;AAClB,YAAM,IAAI,KAAK,SAAS,QAAQ,CAAC;AACjC,WAAK,SAAS,EAAE,cAAc,KAAK,IAAK,IAAG,KAAK,SAAS,KAAK,CAAC,IAAI,GAAG,KAAK,kBAAkB,CAAC,GAAG,KAAK,eAAe,EAAE,OAAO,EAAE,YAAY,EAAC,CAAE;AAC/I,YAAM,IAAI,KAAK,cAAc,IAAI,CAAC;AAClC,UAAI,GAAG;AACL,cAAMA,IAAI/B,EAAE,CAAC;AACb,YAAI+B,EAAE,MAAM,KAAKA,EAAE,IAAI,GAAG;AACxB,gBAAM,IAAI,KAAK,oBAAoB/D,GAAG0D,IAAI,EAAE,UAAU;AACtD,UAAAA,MAAM,IAAI,KAAK,oBAAoB,IAAIK,EAAE,GAAGL,CAAC,IAAI,KAAK,oBAAoB,OAAOK,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,cAAc,IAAIA,EAAE,CAAC,IAAI,KAAK,cAAc,OAAOA,EAAE,CAAC;AAAA,QACzK;AAAA,MACA;AAAA,IACA,CAAK,GAAG,KAAK,mBAAoB;AAC7B,UAAMtC,IAAI,CAAE;AACZ,eAAW,KAAK,GAAG;AACjB,YAAM,IAAI,KAAK,eAAe,CAAC;AAC/B,WAAKA,EAAE,KAAK,CAAC;AAAA,IACnB;AACI,SAAK,uBAAuBA;AAAA,EAChC;AAAA,EACE,OAAO;AACL,QAAI,KAAK,SAAS,eAAe;AAC/B,aAAO,EAAE,SAAS,MAAM,UAAU,KAAK,QAAS;AAClD,UAAMF,IAAI,KAAK,SAAS,UAAU,KAAK,SAAS,cAAc;AAC9D,IAAAA,EAAE,UAAU,IAAI,KAAK,SAAS,iBAAiB,KAAK,SAAS,UAAU,KAAK,SAAS,YAAY;AACjG,UAAMC,IAAI,KAAK,kBAAkBD,EAAE,UAAU,GAAG,IAAI,KAAK,kBAAkBA,EAAE,UAAU;AACvF,QAAI,CAAC;AACH,aAAO,EAAE,SAAS,MAAM,UAAU,KAAK,QAAS;AAClD,YAAQA,EAAE,WAAS;AAAA,MACjB,KAAK;AACH,UAAE,WAAWA,EAAE,YAAYA,EAAE,WAAW,EAAE;AAC1C;AAAA,MACF,KAAK,eAAe;AAClB,QAAAA,EAAE,cAAc,EAAE,WAAWA,EAAE,YAAY,EAAE;AAC7C,cAAM,EAAE,MAAME,MAAMwB,GAAG,EAAE,QAAQ1B,EAAE,UAAU;AAC7C,UAAE,qBAAoB,GAAI,EAAE,SAAS,OAAOA,EAAE,GAAGE,CAAC,GAAG,EAAE,KAAK,UAAUA,GAAG,EAAE,uBAAuBF,EAAE,GAAGE,CAAC;AACxG;AAAA,MACR;AAAA,MACM,KAAK,eAAe;AAClB,QAAAF,EAAE,cAAc,EAAE,WAAWA,EAAE,YAAY,EAAE;AAC7C,cAAM,EAAE,MAAME,MAAMwB,GAAG,EAAE,QAAQ1B,EAAE,UAAU;AAC7C,UAAE,qBAAoB,GAAI,EAAE,SAAS,QAAQ,CAAC,MAAM;AAClD,YAAE,OAAOA,EAAE,GAAGE,CAAC;AAAA,QAChB,CAAA,GAAG,EAAE,KAAK,SAASA;AACpB;AAAA,MACR;AAAA,MACM,KAAK,eAAe;AAClB,cAAM,EAAE,IAAIA,GAAG,SAAS,EAAG,IAAGF;AAC9B,UAAE,qBAAoB,GAAIE,EAAE,QAAQ,CAAC,GAAG,MAAM;AAC5C,YAAE,SAAS,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;AAAA,QAC7B,CAAA,GAAG,EAAE,KAAK,UAAUA,EAAE;AACvB,cAAM,IAAI,KAAK,IAAI,GAAGA,CAAC;AACvB,UAAE,uBAAuB,GAAGA,EAAE,MAAM,GAAG,EAAE,aAAa,GAAGA,EAAE,MAAM,GAAG,KAAK,WAAWF,EAAE,YAAY,EAAE;AACpG;AAAA,MACR;AAAA,MACM,KAAK,eAAe;AAClB,cAAM,EAAE,IAAIE,GAAG,SAAS,EAAG,IAAGF;AAC9B,UAAE,qBAAoB,GAAI,EAAE,SAAS,QAAQ,CAAC,GAAG,MAAM;AACrD,mBAAS,IAAI,GAAG,IAAIE,EAAE,QAAQ;AAC5B,cAAE,OAAOA,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAAA,QAC5B,CAAA,GAAG,EAAE,KAAK,SAASA,EAAE,QAAQ,KAAK,WAAWF,EAAE,YAAY,EAAE;AAC9D;AAAA,MACR;AAAA,MACM,KAAK,QAAQ;AACX,QAAAC,KAAK,KAAK,WAAWA,GAAG,GAAGD,EAAE,eAAe,EAAE;AAC9C,cAAME,IAAI,EAAE;AACZ,UAAE,WAAWF,EAAE,YAAY,EAAE,GAAG,EAAE,uBAAuB,CAAC,GAAmB,oBAAI,IAAI,CAAC,GAAGE,GAAG,GAAG,EAAE,oBAAoB,CAAC,CAAC;AACvH;AAAA,MACR;AAAA,MACM,KAAK,aAAa;AAChB,UAAE,qBAAsB;AACxB,cAAMA,IAAI,EAAE,SAAS,KAAM;AAC3B,UAAE,gBAAgBF,EAAE,kBAAkB,EAAE;AACxC,cAAM,IAAI,IAAI8K,GAAG,CAAC;AAClB,UAAE,SAAS5K,GAAG,EAAE,SAAS,MAAM,GAAG,EAAE,qBAAqB,EAAE,gBAAiB;AAC5E;AAAA,MACR;AAAA,IACA;AACI,WAAO,KAAK,QAAQ6K,GAAG/K,EAAE,SAAS,GAAG,EAAE,GAAG,MAAM,SAAS,EAAE,cAAc,MAAK,GAAI,EAAE,aAAc,IAAGA,EAAE,cAAc,UAAUC,KAAKA,MAAM,KAAK,KAAK,gBAAgBA,CAAC,GAAG;AAAA,MACtK,SAASD;AAAA,MACT,UAAU,CAAC,EAAE,eAAeE,QAAQ;AAClC,YAAI,GAAG;AACP,SAAC,IAAIA,EAAE,YAAY,QAAQ,EAAE,SAAS,UAAU,IAAIF,EAAE,mBAAmB,OAAO,SAAS,EAAE,QAAQ;AAAA,MAC3G;AAAA,IACK;AAAA,EACL;AAAA,EACE,OAAO;AACL,QAAI,KAAK,SAAS,eAAe,KAAK,KAAK,SAAS,UAAU;AAC5D,aAAO,EAAE,SAAS,MAAM,UAAU,KAAK,QAAS;AAClD,UAAMA,IAAI,KAAK,SAAS,UAAU,EAAE,KAAK,SAAS,YAAY;AAC9D,IAAAA,EAAE,UAAU,IAAI,KAAK,SAAS,iBAAiBA;AAC/C,UAAMC,IAAI,KAAK,kBAAkBD,EAAE,UAAU,GAAG,IAAI,KAAK,kBAAkBA,EAAE,UAAU;AACvF,QAAI,CAAC;AACH,aAAO,EAAE,SAAS,MAAM,UAAU,KAAK,QAAS;AAClD,YAAQA,EAAE,WAAS;AAAA,MACjB,KAAK;AACH,UAAE,WAAWA,EAAE,WAAWA,EAAE,WAAW,EAAE;AACzC;AAAA,MACF,KAAK,eAAe;AAClB,QAAAA,EAAE,aAAa,EAAE,WAAWA,EAAE,WAAW,EAAE;AAC3C,cAAM,EAAE,MAAME,MAAMwB,GAAG,EAAE,QAAQ1B,EAAE,UAAU;AAC7C,UAAE,qBAAoB,GAAI,EAAE,SAAS,OAAOA,EAAE,GAAG,GAAG,GAAGA,EAAE,QAAQ,GAAG,EAAE,KAAK,UAAUE,GAAG,EAAE,uBAAuBF,EAAE,GAAGE,CAAC,GAAG,EAAE,aAAaF,EAAE,GAAGE,CAAC;AAC/I;AAAA,MACR;AAAA,MACM,KAAK,eAAe;AAClB,QAAAF,EAAE,aAAa,EAAE,WAAWA,EAAE,WAAW,EAAE;AAC3C,cAAM,EAAE,MAAME,MAAMwB,GAAG,EAAE,QAAQ1B,EAAE,UAAU;AAC7C,UAAE,qBAAoB,GAAI,EAAE,SAAS,IAAI,CAAC,GAAG,MAAM;AACjD,YAAE,OAAOA,EAAE,GAAG,GAAG,GAAGA,EAAE,SAAS,CAAC,CAAC;AAAA,QAClC,CAAA,GAAG,EAAE,KAAK,SAASE;AACpB;AAAA,MACR;AAAA,MACM,KAAK,eAAe;AAClB,UAAE,WAAW;AAAA,UACX,GAAGF,EAAE,GAAG,CAAC;AAAA,UACT,SAASA,EAAE,GAAG;AAAA,UACd,UAAU;AAAA,UACV,gBAAgBA,EAAE;AAAA,UAClB,gBAAgBA,EAAE;AAAA,QAC5B,CAAS;AACD;AAAA,MACR;AAAA,MACM,KAAK,eAAe;AAClB,UAAE,WAAW;AAAA,UACX,GAAGA,EAAE,GAAG,CAAC;AAAA,UACT,SAASA,EAAE,GAAG;AAAA,UACd,UAAU;AAAA,UACV,gBAAgBA,EAAE;AAAA,UAClB,gBAAgBA,EAAE;AAAA,QAC5B,CAAS;AACD;AAAA,MACR;AAAA,MACM,KAAK,QAAQ;AACX,QAAAC,KAAK,KAAK,WAAWA,GAAG,GAAGD,EAAE,eAAe,EAAE;AAC9C;AAAA,MACR;AAAA,MACM,KAAK,aAAa;AAChB,UAAE,qBAAsB;AACxB,cAAME,IAAI,EAAE,SAAS,KAAM;AAC3B,UAAE,gBAAgBF,EAAE,kBAAkB,EAAE;AACxC,cAAM,IAAI,IAAI8K,GAAG,CAAC;AAClB,UAAE,SAAS5K,GAAG,EAAE,SAAS,MAAM,GAAG,EAAE,qBAAqB,EAAE,gBAAiB;AAC5E;AAAA,MACR;AAAA,IACA;AACI,WAAO,KAAK,QAAQ6K,GAAG/K,EAAE,SAAS,GAAG,EAAE,GAAG,MAAM,SAAS,EAAE,cAAc,MAAK,GAAI,EAAE,aAAc,IAAGA,EAAE,cAAc,UAAUC,KAAKA,MAAM,KAAK,KAAK,gBAAgBA,CAAC,GAAG;AAAA,MACtK,SAASD;AAAA,MACT,UAAU,CAAC,EAAE,eAAeE,QAAQ;AAClC,YAAI,GAAG;AACP,SAAC,IAAIA,EAAE,YAAY,QAAQ,EAAE,SAAS,UAAU,IAAIF,EAAE,mBAAmB,OAAO,SAAS,EAAE,QAAQ;AAAA,MAC3G;AAAA,IACK;AAAA,EACL;AAAA;AAAA,EAEE,kBAAkBA,GAAG;AACnB,WAAO,KAAK,SAAS,UAAUA,CAAC;AAAA,EACpC;AAAA;AAAA,EAEE,kBAAkBA,GAAG;AACnB,QAAI6C;AACJ,UAAM5C,IAAI,KAAK,SAAS,QAAQD,CAAC;AACjC,KAAC6C,IAAI5C,KAAK,OAAO,SAASA,EAAE,iBAAiB,QAAQ4C,EAAE,QAAQ,CAAC3C,MAAM;AACpE,UAAI,GAAG;AACP,OAAC,KAAK,IAAI,KAAK,SAAS,QAAQA,CAAC,MAAM,OAAO,SAAS,EAAE,eAAe,QAAQ,EAAE,OAAOF,CAAC;AAAA,IAChG,CAAK,GAAGC,KAAK,SAASA,EAAE,eAA+B,oBAAI;EAC3D;AAAA;AAAA,EAEE,cAAcD,GAAGC,GAAG;AAClB,UAAM,IAAIkG,GAAG,KAAK,UAAUnG,CAAC;AAC7B,MAAE,cAAc,SAAS,EAAE,aAA6B,oBAAI,IAAK,IAAG,EAAE,WAAW,IAAIC,CAAC;AACtF,UAAMC,IAAIiG,GAAG,KAAK,UAAUlG,CAAC;AAC7B,IAAAC,EAAE,gBAAgB,SAASA,EAAE,eAA+B,oBAAI,IAAK,IAAGA,EAAE,aAAa,IAAIF,CAAC;AAAA,EAChG;AAAA;AAAA,EAEE,eAAeA,GAAG;AAChB,UAAMC,IAAI,KAAK,MAAMD,CAAC;AACtB,WAAO,CAAC,KAAK,SAAS,aAAa,IAAIC,CAAC,GAAG,KAAK,SAAS,aAAa,IAAIA,CAAC,CAAC;AAAA,EAChF;AAAA;AAAA,EAEE,gBAAgBD,GAAG;AACjB,UAAMC,IAAI,KAAK,MAAMD,CAAC;AACtB,SAAK,SAAS,aAAa,IAAIC,GAAG6D,EAAE,GAAGqC,GAAG,KAAK,UAAUlG,GAAG,EAAE,gBAAgB,CAAE,EAAA,CAAE;AAAA,EACtF;AAAA;AAAA,EAEE,kBAAkBD,GAAGC,GAAG;AACtB,QAAI6D,GAAG,GAAG7D,CAAC;AACT;AACF,UAAM,IAAI,KAAK,MAAMD,CAAC;AACtB,SAAK,SAAS,aAAa,IAAI,GAAGC,CAAC;AACnC,UAAMC,IAAI,KAAK,SAAS,KAAK,CAAC;AAC9B,QAAIA,KAAK;AACP;AACF,UAAM,IAAI,KAAK,SAAS,QAAQ,CAAC,GAAG,IAAI,KAAK,OAAO,SAAS,EAAE;AAC/D,SAAK,SAAS,OAAO,KAAK,CAAC,EAAE,SAAS,IAAIA,EAAE,cAAc,IAAI,OAAOA,EAAE,aAAa,OAAO,EAAE;AAAA,EACjG;AAAA;AAAA,EAEE,oBAAoB;AAClB,SAAK,SAAS,aAAa,MAAO;AAClC,eAAWF,KAAK,KAAK,SAAS,sBAAsB;AAClD,YAAMC,IAAI,KAAK,SAAS,QAAQD,CAAC;AACjC,OAACC,KAAK,OAAO,SAASA,EAAE,gBAAgB,QAAQ,OAAOA,EAAE;AAAA,IAC/D;AACI,SAAK,SAAS,qBAAqB,MAAO;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYE,MAAMD,GAAGC,GAAG;AACV,QAAIgC;AACJ,UAAMY,IAAI5C,EAAE,QAAQC,IAAI2C,IAAI,IAAI5C,EAAE,CAAC,EAAE,SAAS;AAC9C,QAAI4C,KAAK,KAAK3C,KAAK;AACjB,cAAQ+B,IAAIhC,EAAE,CAAC,MAAM,OAAO,SAASgC,EAAE,CAAC;AAC1C,aAAS,IAAI,GAAG,IAAIY,GAAG;AACrB,eAAS,IAAI,GAAG,IAAI3C,GAAG,KAAK;AAC1B,YAAI,MAAM,KAAK,MAAM;AACnB;AACF,cAAMsC,IAAI,EAAE,GAAGxC,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,KAAK,IAAI,KAAK,MAAMwC,CAAC,GAAGL,IAAI3B,EAAEgC,CAAC;AAChE,YAAI,KAAK,MAAM;AACb,kBAAQ,KAAK,gBAAgBL,CAAC,oBAAoB;AAClD;AAAA,QACV;AACQ,cAAMC,IAAI,KAAK,SAAS,KAAK,CAAC;AAC9B,aAAKA,KAAK,OAAO,SAASA,EAAE,UAAU,QAAQA,EAAE,UAAU;AACxD,gBAAM,IAAIwB;AAAA,YACR;AAAA,YACA,oEAAoEzB,CAAC;AAAA,UACtE;AACH,YAAI,KAAK,SAAS,aAAa,IAAI,CAAC;AAClC,gBAAM,IAAIyB;AAAA,YACR;AAAA,YACA,yCAAyCzB,CAAC;AAAA,UAC3C;AAAA,MACX;AACI,UAAMW,IAAI,KAAK,MAAM9C,CAAC,GAAG+C,IAAI,CAAE;AAC/B,aAAS,IAAI,GAAG,IAAIF,GAAG;AACrB,eAAS,IAAI,GAAG,IAAI3C,GAAG,KAAK;AAC1B,cAAMsC,IAAI,EAAE,GAAGxC,EAAE,IAAI,GAAG,GAAGA,EAAE,IAAI,EAAC,GAAI,IAAI,KAAK,MAAMwC,CAAC;AACtD,YAAI,KAAK,SAAS,KAAK,kBAAkBA,GAAGvC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,KAAK,MAAM,OAAO8C,EAAE,KAAKvC,EAAEgC,CAAC,CAAC,GAAGM,KAAK,QAAQ;AACxG,gBAAMX,IAAIgE,GAAG,KAAK,UAAU,GAAG,CAAA,CAAE;AACjC,UAAAhE,EAAE,cAAc3B,EAAER,CAAC,GAAG,KAAK,SAAS,qBAAqB,IAAI,CAAC;AAAA,QACxE;AAAA,MACA;AACI,WAAOC,EAAE,CAAC,EAAE,CAAC;AAAA,EACjB;AAAA;AAAA,EAEE,YAAYD,IAAI,IAAI;AAClB,WAAOA,IAAI,KAAK+G,GAAG,KAAK,IAAI;AAAA,EAChC;AAAA;AAAA,EAEE,YAAY/G,GAAG;AACb,UAAMC,IAAID,EAAE,MAAM,GAAG;AACrB,QAAI,CAAC,GAAGE,CAAC,IAAID;AACb,MAAE,MAAM,WAAW,MAAM,KAAK,MAAM,EAAE,MAAM,QAAQ,MAAM,IAAI,IAAI,CAAC,KAAKC,KAAK,QAAQA,EAAE,MAAM,WAAW,MAAMA,KAAK,KAAK,SAASA,KAAK,QAAQA,EAAE,MAAM,QAAQ,MAAMA,IAAI,GAAGE,EAAE,KAAK,KAAK,CAAC,GAAGF,CAAC;AAC5L,UAAM,EAAE,GAAG,GAAG,GAAG,EAAC,IAAKO,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAG,IAAGA,EAAEP,KAAK,CAAC;AACtD,WAAO;AAAA,MACL,KAAK,KAAK,IAAI,CAAC;AAAA,MACf,MAAM,KAAK,IAAI,CAAC;AAAA,MAChB,QAAQ,KAAK,IAAI,CAAC;AAAA,MAClB,OAAO,KAAK,IAAI,CAAC;AAAA,IAClB;AAAA,EACL;AAAA,EACE,IAAI,UAAU;AACZ,WAAO;AAAA,EACX;AAAA,EACE,IAAI,QAAQ;AACV,WAAOuB,GAAG,KAAK,IAAI;AAAA,EACvB;AAAA,EACE,IAAI,gBAAgB;AAClB,UAAMzB,IAAI,KAAK;AACf,WAAOA,EAAE,SAAS,KAAKA,EAAE,SAAS;AAAA,EACtC;AAAA,EACE,IAAI,iBAAiB;AACnB,WAAO,KAAK;AAAA,EAChB;AACA;AACK,MAAC2L,KAAK,CAAC,EAAE,OAAO5L,GAAG,OAAOC,GAAG,OAAOC,GAAG,OAAO,IAAI,IAAI,YAAYC,IAAI,YAAY,IAAI,QAAQ;AACjG,MAAIqC;AACJ,QAAM,CAACQ,GAAGd,CAAC,IAAIjC,EAAE,eAAeC,CAAC;AACjC,MAAI8C,KAAKhD,KAAK,QAAQ,CAAC+D,GAAG,GAAG7B,CAAC;AAC5B,WAAOA;AACT,MAAI,OAAOlC,KAAK,YAAYG,MAAM;AAChC,WAAOH;AACT,MAAIA,EAAE,OAAO,CAAC,MAAM;AAClB,WAAOG,MAAM,QAAQH,IAAIA,EAAE,UAAU,CAAC;AACxC,MAAIA,EAAE,OAAO,CAAC,MAAM;AAClB,WAAOA;AACT,MAAIG,MAAM,OAAO;AACf,UAAMsC,IAAI,IAAIoD,GAAG7F,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,GAAG;AAC1C,WAAOyC,EAAE,SAAQ,GAAI,MAAMA,EAAE,QAAQ,EAAE,OAAOxC,GAAG;AAAA,EACrD;AACE,MAAIsC,IAAIvC;AACR,MAAIgD,KAAK,CAACe,GAAG,GAAG7B,CAAC;AACf,IAAAK,IAAIL;AAAA;AAEJ,QAAI;AACF,YAAMO,IAAI,IAAIoD,GAAG7F,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,GAAG;AAC1C,MAAAyC,EAAE,SAAU;AACZ,YAAML,IAAI,IAAI2D,GAAGtD,EAAE,MAAM,EAAE,MAAO;AAClC,MAAAF,KAAKC,IAAIJ,KAAK,OAAO,SAASA,EAAE,aAAa,OAAO,SAASI,EAAE,KAAKJ,GAAG,EAAE,OAAOnC,GAAG;AAAA,IACpF,SAAQwC,GAAG;AACV,UAAI;AACF,cAAMxC,EAAE,kBAAkBC,GAAGuC,CAAC,GAAGA;AACnC,aAAOA;AAAA,IACb;AACE,SAAO0B,EAAE,GAAG5B,CAAC,IAAIA,IAAItC,EAAE,MAAMC,GAAGqC,EAAE,MAAM,IAAItC,EAAE,kBAAkBC,GAAGqC,CAAC,GAAGpC,MAAM,cAAcoC,aAAa4I,OAAM5I,IAAI6K,GAAG,EAAE,OAAO7K,GAAG,OAAO,GAAG,IAAI,EAAG,CAAA,IAAI2B,EAAE,GAAG3B,CAAC,KAAKtC,EAAE,kBAAkBC,GAAGqC,CAAC,GAAGA;AAC9L,GAAG8K,KAAK,CAAC,EAAE,OAAOrN,GAAG,OAAOC,IAAI,IAAI,IAAIC,QAAQ;AAC9C,QAAM,IAAIF,EAAE;AACZ,SAAOA,EAAE,eAAe,EAAE,MAAM,GAAG,IAAIE,GAAG,YAAY,SAAQ,CAAE,EAAE,IAAI,CAAC6C,GAAGC,MAAM;AAC9E,UAAMd,IAAI,EAAE,MAAMc;AAClB,WAAOD,EAAE,IAAI,CAACR,GAAGC,MAAM;AACrB,YAAMC,IAAI,EAAE,OAAOD,GAAGL,IAAI,EAAE,GAAGD,GAAG,GAAGO,EAAC,GAAI,CAACL,GAAGC,CAAC,IAAIrC,EAAE,eAAemC,CAAC;AACrE,UAAI;AACF,YAAI4B,GAAG,GAAG1B,CAAC;AACT,gBAAM,IAAIwB,EAAE,SAAS,+BAA+B,IAAI,MAAMtB,CAAC,CAAC;AAClE,YAAI2B,EAAE,GAAG7B,CAAC;AACR,iBAAOA;AACT,YAAIwB,EAAE,GAAGxB,CAAC;AACR,gBAAMA;AACR,YAAIA,KAAK;AACP,iBAAOA;AACT,QAAArC,EAAE,gBAAgBmC,CAAC;AACnB,cAAMkJ,IAAIO,GAAG,EAAE,OAAOrJ,GAAG,OAAOvC,GAAG,OAAOmC,GAAG,OAAOlC,GAAG,IAAIC,GAAG,YAAY,YAAY;AACtF,eAAOF,EAAE,kBAAkBmC,GAAGkJ,CAAC,GAAGA;AAAA,MACnC,SAAQA,GAAG;AACV,YAAIrL,EAAE,kBAAkBmC,GAAGkJ,CAAC,GAAGpL;AAC7B,gBAAMoL;AACR,eAAOA;AAAA,MACf;AAAA,IACA,CAAK;AAAA,EACL,CAAG;AACH,GAAG+B,KAAK,CAAC,EAAE,OAAOpN,GAAG,IAAIC,GAAG,OAAOC,IAAI,GAAI,MAAKF,aAAamL,KAAInL,EAAE,MAAM,EAAE,OAAOE,GAAG,IAAID,EAAG,CAAA,IAAID,GAAGsN,KAAK,IAAIxJ,GAAG,gBAAgB,GAAGyJ,KAAK,CAACvN,MAAMA,EAAE,KAAK,CAACC,MAAMiE,EAAE,GAAGjE,CAAC,CAAC,GAAGuN,KAAK,CAACxN,OAAOA,KAAK,OAAO,SAASA,EAAE,cAAc,SAASyN,KAAK,CAACzN,GAAGC,MAAM;AAC9O,aAAWC,KAAKF;AACd,QAAIkE,EAAE,GAAGhE,CAAC,KAAK,MAAM,QAAQA,CAAC,KAAKuN,GAAGvN,GAAGD,CAAC,KAAKkE,EAAE,GAAGjE,CAAC,KAAKuN,GAAGvN,EAAE,QAAQD,CAAC,KAAKuN,GAAGtN,CAAC,KAAKuN,GAAGvN,EAAE,eAAe,EAAE,IAAID,EAAG,CAAA,GAAGA,CAAC;AACrH,aAAO;AACX,SAAO;AACT,GAAGyN,KAAK,CAAC1N,GAAGC,IAAI,MAAM;AACpB,MAAIC,IAAI,aAAaD,GAAG,IAAI,aAAaA;AACzC,WAASE,IAAI,GAAGA,IAAIH,EAAE,QAAQG,KAAK;AACjC,UAAM,IAAIH,EAAE,WAAWG,CAAC;AACxB,IAAAD,IAAI,KAAK,KAAKA,IAAI,GAAG,UAAU,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,UAAU;AAAA,EACrE;AACE,SAAOA,IAAI,KAAK,KAAKA,IAAIA,MAAM,IAAI,UAAU,GAAGA,KAAK,KAAK,KAAK,IAAI,MAAM,IAAI,UAAU,GAAG,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,UAAU,GAAG,KAAK,KAAK,KAAKA,IAAIA,MAAM,IAAI,UAAU,GAAG,cAAc,UAAU,MAAMA,MAAM;AACnN,GAAGyN,KAAK,CAAC3N,GAAGC,GAAGC,IAAI,MAAM;AACvB,QAAM,IAAI,KAAK,UAAUD,GAAG,CAAC,GAAG,MAAMuN,GAAG,CAAC,IAAIhH,GAAG,CAAC,IAAItC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG/D,IAAI,MAAM,KAAK,EAAE,QAAQD,KAAK,CAAC,GAAG,MAAMwN,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;AACxI,SAAO,GAAG1N,CAAC,IAAI,EAAE,MAAM,IAAIG,EAAE,KAAK,GAAG,CAAC;AACxC,GAAGyN,KAAK,CAAC5N,GAAGC,GAAGC,GAAG,IAAI,OAAO;AAC3B,MAAIqC;AACJ,QAAMpC,IAAIH,EAAE,UAAU+C,IAAI5C,EAAE,KAAKF,CAAC;AAClC,MAAI8C,KAAK;AACP,WAAOuK;AACT,QAAMtK,IAAIoD,GAAGjG,GAAGF,GAAG,EAAE,gBAAgB,CAAA,GAAI;AACzC,MAAI8C,EAAE,eAAe,MAAM;AACzB,UAAM,IAAIA,EAAE,YAAY7C,CAAC;AACzB,QAAI,KAAK,SAAS,EAAE,cAAc,QAAQ,KAAK,IAAG,IAAK,EAAE;AACvD,aAAO8C,EAAE,eAAe9C,CAAC,IAAI,GAAG,EAAE;AAAA,EACxC;AACE,QAAMgC,IAAI,GAAGjC,CAAC,IAAIC,CAAC;AACnB,MAAIC,EAAE,aAAa,IAAI+B,CAAC;AACtB,WAAO/B,EAAE,aAAa,IAAI+B,CAAC;AAC7B,MAAI,MAAOK,IAAIpC,EAAE,kBAAkB,QAAQoC,EAAE,IAAIrC,CAAC,GAAI;AACpD,UAAM,IAAIC,EAAE,cAAc,IAAID,CAAC;AAC/B,WAAOC,EAAE,aAAa,IAAI+B,GAAG,EAAE,OAAO,GAAG,EAAE,QAAQ,QAAQ,KAAK,CAACO,MAAM;AACrE,YAAM,IAAItC,EAAE,KAAKF,CAAC;AAClB,WAAK,QAAQoG,GAAG,GAAGnG,GAAG,EAAE,OAAOuC,GAAG,YAAY,EAAE,WAAU,CAAE;AAAA,IAClE,CAAK,EAAE,MAAM,CAACA,MAAM;AACd,MAAAoB,EAAE,GAAGpB,CAAC,MAAMA,IAAI,IAAIoB,EAAE,YAAYpB,KAAK,OAAO,SAASA,EAAE,YAAY,OAAOA,CAAC,GAAGA,aAAa,QAAQA,IAAI,MAAM;AAC/G,YAAM,IAAItC,EAAE,KAAKF,CAAC;AAClB,WAAK,QAAQoG,GAAG,GAAGnG,GAAG,EAAE,OAAOuC,GAAG,YAAY,EAAE,WAAU,CAAE;AAAA,IAClE,CAAK,EAAE,QAAQ,MAAM;AACf,MAAAtC,EAAE,aAAa,OAAO+B,CAAC;AAAA,IAC7B,CAAK,GAAG,EAAE;AAAA,EACV;AACE,SAAOoL;AACT,GAAGO,KAAK,CAAC7N,GAAGC,GAAGC,GAAG,GAAGC,GAAG,IAAI,OAAO;AACjC,QAAM,IAAIF,EAAE,UAAU,IAAIE,KAAK,OAAO,KAAK,IAAG,IAAKA,IAAI,QAAQ,IAAI,GAAGD,CAAC,IAAI,CAAC,IAAI,IAAI,IAAIgE,EAAElE,CAAC;AAC3F,SAAO,EAAE,aAAa,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,kBAAkB,EAAE,gBAAgC,oBAAI,IAAK,IAAG,EAAE,cAAc,IAAI,GAAG,EAAE,SAAS,GAAG,YAAY,EAAG,CAAA,IAAIA,EAAE,KAAK,CAACyC,MAAM;AAC7K,UAAM,IAAI,EAAE,KAAKvC,CAAC;AAClB,SAAK,QAAQmG,GAAG,GAAG,GAAG,EAAE,OAAO5D,GAAG,YAAY,GAAG;AAAA,EACrD,CAAG,EAAE,MAAM,CAACA,MAAM;AACd,IAAAoB,EAAE,GAAGpB,CAAC,MAAMA,IAAI,IAAIoB,EAAE,YAAYpB,KAAK,OAAO,SAASA,EAAE,YAAY,OAAOA,CAAC,GAAGA,aAAa,QAAQA,IAAI,MAAM;AAC/G,UAAM,IAAI,EAAE,KAAKvC,CAAC;AAClB,SAAK,QAAQmG,GAAG,GAAG,GAAG,EAAE,OAAO5D,GAAG,YAAY,GAAG;AAAA,EACrD,CAAG,EAAE,QAAQ,MAAM;AACf,MAAE,aAAa,OAAO,CAAC,GAAG,KAAK,EAAE,iBAAiB,EAAE,cAAc,OAAO,CAAC,GAAG,EAAE,aAAa,MAAO,GAAE,EAAE,SAAU;AAAA,EAClH,CAAA,GAAG;AACN,GAAGqL,KAAK,MAAM,IAAI5J,EAAE,QAAQ,QAAS,CAAA,GAAG6J,KAAK,CAAC/N,GAAGC,MAAM;AACrD,MAAI,OAAOD,KAAK,YAAY,OAAOC,KAAK;AACtC,WAAO+N,EAAEhO,CAAC,IAAIgO,EAAE/N,CAAC;AACnB,MAAI;AACF,WAAOgO,EAAEjO,CAAC,IAAIiO,EAAEhO,CAAC;AAAA,EACrB,QAAU;AACN,WAAO;AAAA,EACX;AACA,GAAGiO,KAAK,CAAClO,GAAGC,MAAM;AAChB,MAAI,OAAOD,KAAK,YAAY,OAAOC,KAAK;AACtC,WAAO+N,EAAEhO,CAAC,KAAKgO,EAAE/N,CAAC;AACpB,MAAI;AACF,WAAOgO,EAAEjO,CAAC,KAAKiO,EAAEhO,CAAC;AAAA,EACtB,QAAU;AACN,WAAO;AAAA,EACX;AACA,GAAGkO,KAAK,CAACnO,GAAGC,MAAM,CAACiO,GAAGlO,GAAGC,CAAC,GAAGmO,KAAK,CAACpO,GAAGC,MAAM,CAAC8N,GAAG/N,GAAGC,CAAC,GAAGoO,KAAK,CAACrO,GAAGC,MAAM+N,EAAEhO,CAAC,EAAE,YAAW,MAAOgO,EAAE/N,CAAC,EAAE,eAAeqO,KAAK,CAACtO,GAAGC,MAAM,CAACoO,GAAGrO,GAAGC,CAAC,GAAGsO,KAAK,CAACvO,MAAM,OAAOA,KAAK,YAAY,CAACA,EAAE,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,WAAWA,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,GAAGwO,KAAK,CAACxO,MAAM,OAAOA,KAAK,YAAYuO,GAAGvO,CAAC,IAAI,KAAK,OAAOA,KAAK,WAAW,CAAC,MAAM,WAAWA,CAAC,CAAC,KAAK,SAAS,OAAOA,CAAC,CAAC,IAAI,IAAIiO,IAAI,CAACjO,GAAGC,MAAM;AAClX,QAAM,EAAE,aAAaC,GAAG,QAAQ,EAAC,IAAKD,KAAK,CAAE;AAC7C,MAAIiE,EAAE,GAAGlE,CAAC;AACR,WAAOA;AACT,MAAI,OAAOA,IAAI,OAAO,OAAOE,IAAI;AAC/B,WAAOA;AACT,MAAI,CAACF;AACH,WAAO;AACT,MAAIA,aAAamL,IAAG;AAClB,UAAM,IAAIiC,GAAG,EAAE,OAAOpN,EAAC,CAAE;AACzB,WAAOiO,EAAE,GAAG,EAAE,aAAa/N,EAAC,CAAE;AAAA,EAClC;AACE,MAAIF,aAAa;AACf,WAAOA,EAAE,QAAS;AACpB,MAAI0D,EAAE,GAAG1D,CAAC;AACR,WAAOA,EAAE;AACX,MAAIuO,GAAGvO,CAAC;AACN,WAAO,WAAWA,EAAE,MAAM,GAAG,EAAE,CAAC,IAAI;AACtC,QAAMG,IAAI,WAAWH,CAAC;AACtB,MAAI,MAAMG,CAAC,GAAG;AACZ,QAAI;AACF,aAAOD,KAAK;AACd,UAAM,IAAI2D,EAAE,WAAW,GAAG7D,CAAC,kCAAkC;AAAA,EACjE;AACE,SAAOG;AACT,GAAG6N,IAAI,CAAChO,MAAM;AACZ,MAAIkE,EAAE,GAAGlE,CAAC;AACR,WAAOA;AACT,MAAIA,MAAM;AACR,WAAO;AACT,MAAI,CAACA;AACH,WAAO;AACT,MAAIA,aAAamL,IAAG;AAClB,UAAMlL,IAAImN,GAAG,EAAE,OAAOpN,EAAC,CAAE;AACzB,WAAOgO,EAAE/N,CAAC;AAAA,EACd;AACE,UAAQD,EAAE,YAAY,MAAI;AAAA,IACxB,KAAK;AACH,aAAOgJ,EAAEhJ,CAAC,EAAE,OAAOV,EAAE;AAAA,IACvB;AACE,aAAO,OAAOU,CAAC;AAAA,EACrB;AACA,GAAGyO,KAAK,CAACzO,GAAGC,MAAM;AAChB,QAAM,EAAE,aAAaC,GAAG,QAAQ,EAAC,IAAKD,KAAK,CAAE;AAC7C,MAAIiE,EAAE,GAAGlE,CAAC;AACR,WAAOA;AACT,MAAI,OAAOA,IAAI,OAAO,OAAOE,IAAI;AAC/B,WAAOA;AACT,MAAIF,MAAM;AACR,WAAO;AACT,MAAIA,aAAamL,IAAG;AAClB,UAAMhL,IAAIiN,GAAG,EAAE,OAAOpN,EAAC,CAAE;AACzB,WAAOyO,GAAGtO,GAAGF,CAAC;AAAA,EAClB;AACE,MAAI,OAAOD,KAAK,YAAYA,aAAa,QAAQ;AAC/C,UAAMG,IAAI,EAAE,MAAM,IAAI,OAAO,GAAI,EAACH,EAAE,aAAa;AACjD,QAAIG,KAAK,MAAM;AACb,UAAI;AACF,eAAO;AACT,YAAM,IAAI0D,EAAE,WAAW,SAAS7D,CAAC,oCAAoC;AAAA,IAC3E;AACI,WAAOG;AAAA,EACX;AACE,SAAO,CAAC,CAACH;AACX;AACA,SAAS0O,GAAG1O,GAAG;AACb,MAAIkE,EAAE,GAAGlE,CAAC,KAAKA,aAAa;AAC1B,WAAOA;AACT,MAAIA,aAAamL,IAAG;AAClB,UAAMlL,IAAImN,GAAG,EAAE,OAAOpN,EAAC,CAAE;AACzB,WAAO0O,GAAGzO,CAAC;AAAA,EACf;AACE,MAAI,OAAOD,KAAK;AACd,WAAO,IAAI,KAAKA,CAAC;AACnB,MAAI,OAAOA,KAAK,UAAU;AACxB,UAAMC,IAAI,IAAI,KAAKD,CAAC;AACpB,QAAI,CAAC,MAAMC,EAAE,SAAS;AACpB,aAAOA;AAAA,EACb;AACE,QAAM,IAAI4D,EAAE,WAAW,GAAG7D,CAAC,gCAAgC;AAC7D;AACK,MAAC2O,KAAK,2BAA2BC,KAAK,CAAC5O,GAAGC,MAAM;AACnD,QAAMC,IAAID,EAAE,MAAM0O,EAAE,GAAG,CAAA,EAAG,IAAI,IAAIxO,IAAI,EAAE,IAAID,KAAK,CAAE;AACnD,MAAI,IAAIC;AACR,MAAI,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,MAAM;AAChD,YAAQ,OAAOH,KAAK,aAAa,IAAI,WAAWG,CAAC,IAAI,GAAC;AAAA,MACpD,KAAK;AACH,eAAO4N,GAAG/N,GAAG,CAAC;AAAA,MAChB,KAAK;AACH,eAAOkO,GAAGlO,GAAG,CAAC;AAAA,MAChB,KAAK;AACH,eAAOmO,GAAGnO,GAAG,CAAC;AAAA,MAChB,KAAK;AACH,eAAOoO,GAAGpO,GAAG,CAAC;AAAA,IACtB;AACE,QAAM,IAAI,MAAM,MAAM,MAAM;AAC5B,MAAIG,MAAM;AACR,YAAQH,KAAK,QAAQA,MAAM,QAAQ;AACrC,MAAI,OAAOA,KAAK,YAAYA,aAAa,QAAQ;AAC/C,UAAM,IAAIG,EAAE,QAAQ,QAAQ,OAAO,EAAE,QAAQ,QAAQ,OAAO,EAAE,QAAQ,OAAO,MAAM,EAAE,QAAQ,OAAO,KAAK;AACzG,WAAO,OAAO,IAAI,CAAC,KAAK,GAAG,EAAE,KAAKH,CAAC,MAAM;AAAA,EAC7C;AACE,SAAOqO,GAAGrO,GAAG,CAAC,MAAM;AACtB,GAAG6O,KAAK,CAAC7O,GAAGC,GAAGC,MAAM;AACnB,MAAIF,aAAamL,IAAG;AAClB,UAAM,IAAInL,EAAE,MAAM,EAAE,IAAIE,EAAC,CAAE;AAC3B,aAASC,IAAI,GAAGA,IAAI,EAAE,QAAQA;AAC5B,eAAS,IAAI,GAAG,IAAI,EAAEA,CAAC,EAAE,QAAQ;AAC/B,QAAAF,EAAE,EAAEE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAGA,GAAG,GAAG,GAAG;AAAA,EAC9B,WAAUgE,EAAE,GAAGnE,CAAC,GAAG;AAClB,UAAM,IAAIA,EAAE;AACZ,aAASG,IAAI,GAAGA,IAAI,EAAE,QAAQA;AAC5B,eAAS,IAAI,GAAG,IAAI,EAAEA,CAAC,EAAE,QAAQ;AAC/B,QAAAF,EAAE,EAAEE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAGA,GAAG,GAAG,GAAG;AAAA,EACjC,WAAa,MAAM,QAAQH,CAAC,KAAK,MAAM,QAAQA,EAAE,CAAC,CAAC;AAC/C,aAAS,IAAI,GAAG,IAAIA,EAAE,QAAQ;AAC5B,eAASG,IAAI,GAAGA,IAAIH,EAAE,CAAC,EAAE,QAAQG;AAC/B,QAAAF,EAAED,EAAE,CAAC,EAAEG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAGA,GAAG;AAAA;AAE7B,IAAAF,EAAED,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG;AACvB,GAAG8O,KAAK,CAAC9O,GAAGC,GAAGC,MAAM;AACnB,MAAIF,EAAE,WAAW;AACf,WAAO,CAAE;AACX,QAAM,IAAIA,EAAE,CAAC,GAAGG,IAAI,EAAE,SAAS,IAAI,EAAE,SAAS,IAAI,MAAM,KAAK,EAAE,QAAQA,EAAG,GAAE,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;AACnG,WAAS,IAAI,GAAG,IAAIH,EAAE,QAAQ,KAAK;AACjC,UAAM,IAAIA,EAAE,CAAC,GAAG,IAAIC,EAAE,CAAC;AACvB,IAAA4O;AAAA,MACE;AAAA,MACA,CAACpM,GAAG,MAAM;AACR,YAAIL,GAAGC;AACP,SAACD,IAAI,EAAE,EAAE,CAAC,GAAGC,IAAI,EAAE,CAAC,MAAMD,EAAEC,CAAC,IAAIuM,GAAGnM,GAAG,CAAC;AAAA,MACzC;AAAA,MACDvC;AAAA,IACD;AAAA,EACL;AACE,SAAO;AACT,GAAGyJ,KAAI,CAAC3J,OAAOA,KAAK,OAAO,SAASA,EAAE,cAAc,SAAS+O,KAAK;AAAA,EAChE,MAAM;AAAA,EACN,aAAa;AAAA,EACb,eAAe,CAAC,KAAK;AACvB,GAAGC,KAAK,CAAChP,GAAG,EAAE,UAAUC,IAAI,IAAI,eAAeC,IAAI,IAAI,eAAe,EAAC,MAAO;AAC5E,MAAI,CAAC,KAAK,EAAE,WAAW;AACrB,WAAO;AACT,MAAIF,KAAK;AACP,WAAOC;AACT,MAAI4D,EAAE,GAAG7D,CAAC,KAAKA,aAAa,OAAO;AACjC,QAAIE;AACF,aAAO;AACT,UAAMF;AAAA,EACV;AACE,aAAWG,KAAK;AACd,YAAQA,GAAC;AAAA,MACP,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,YAAIqO,GAAGxO,CAAC;AACN,iBAAO;AACT;AAAA,MACF,KAAK;AACH,YAAI,OAAOA,KAAK;AACd,iBAAO;AACT;AAAA,MACF,KAAK;AACH,YAAI,OAAOA,KAAK;AACd,iBAAO;AACT;AAAA,MACF,KAAK;AACH,YAAIA,aAAa;AACf,iBAAO;AACT;AAAA,MACF,KAAK;AACH,YAAI0D,EAAE,GAAG1D,CAAC;AACR,iBAAO;AACT;AAAA,MACF,KAAK;AACH,YAAIiP,GAAGjP,CAAC;AACN,iBAAO;AACT;AAAA,MACF,KAAK;AACH,YAAI2J,GAAE3J,CAAC;AACL,iBAAO;AACT;AAAA,IACR;AACE,SAAO;AACT,GAAGiP,KAAK,CAACjP,MAAM2J,GAAE3J,CAAC,KAAKmE,EAAE,GAAGnE,CAAC,KAAK,MAAM,QAAQA,CAAC,KAAK,MAAM,QAAQA,EAAE,CAAC,CAAC,GAAGkP,KAAK,CAAClP,GAAGC,MAAM;AACxF,MAAIE;AACJ,MAAI,CAAC8O,GAAGjP,CAAC;AACP,WAAOA;AACT,MAAI2J,GAAE3J,CAAC;AACL,WAAOoN,GAAG,EAAE,OAAOpN,GAAG,OAAO,IAAI,IAAIC,GAAG;AAC1C,QAAMC,IAAIiE,EAAE,GAAGnE,CAAC,IAAIA,EAAE,SAASA;AAC/B,UAAQG,IAAID,KAAK,OAAO,SAASA,EAAE,CAAC,MAAM,OAAO,SAASC,EAAE,CAAC;AAC/D,GAAGgP,KAAK,CAACnP,MAAM;AACb,MAAI2J,GAAE3J,CAAC;AACL,WAAO,CAACA,EAAE;AACZ,MAAImE,EAAE,GAAGnE,CAAC,GAAG;AACX,UAAMC,IAAID,EAAE;AACZ,WAAOC,EAAE,SAAS,KAAKA,EAAE,WAAW,KAAKA,EAAE,CAAC,EAAE,SAAS;AAAA,EAC3D;AACE,SAAO,MAAM,QAAQD,CAAC,KAAK,MAAM,QAAQA,EAAE,CAAC,CAAC,IAAIA,EAAE,SAAS,KAAKA,EAAE,CAAC,EAAE,SAAS,IAAI;AACrF,GAAGoP,KAAK,CAACpP,GAAGC,MAAM;AAChB,QAAMC,IAAI,CAAE;AACZ,MAAI,IAAI,IAAIC,IAAI;AAChB,WAAS,IAAI,GAAG,IAAIH,EAAE,QAAQ;AAC5B,IAAAA,EAAE,CAAC,EAAE,aAAa,IAAI,MAAM,IAAI,IAAIG;AACtC,WAAS,IAAI,GAAG,IAAIF,GAAG;AACrB,QAAI,KAAK,KAAK,KAAK,GAAG;AACpB,YAAM,KAAK,IAAI,KAAKE;AACpB,MAAAD,EAAE,KAAK,IAAI,CAAC;AAAA,IACb,MAAM,KAAIF,EAAE,SAASE,EAAE,KAAK,CAAC,IAAIA,EAAE,KAAKF,EAAE,SAAS,CAAC;AACvD,SAAOE;AACT,GAAGmP,KAAK,MAAS;AAAA,EACf,YAAY,EAAE,MAAMpP,GAAG,OAAOC,GAAG,IAAI,KAAK;AACxC,SAAK,OAAO,CAAA,GAAI,KAAK,cAAc,IAAI,KAAK,WAAW,SAAS,KAAK,UAAU,IAAI,KAAK,gBAAgB,GAAG,KAAK,cAAc,IAAI,KAAK,oBAAoB,IAAI,KAAK,eAAe,IAAI,KAAK,aAAa,CAACC,GAAG,MAAM;AACjN,UAAIwJ,GAAExJ,CAAC,GAAG;AACR,cAAM,IAAIA,EAAE,MAAM,EAAE,IAAI,KAAK,IAAI,OAAO,IAAI;AAC5C,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAC5B,mBAAS,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,QAAQ;AAC/B,cAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAAA,MACd,WAAUgE,EAAE,GAAGhE,CAAC,GAAG;AAClB,cAAM,IAAIA,EAAE;AACZ,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAC5B,mBAAS,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,QAAQ;AAC/B,cAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAAA,MACrB,WAAiB,MAAM,QAAQA,CAAC,KAAK,MAAM,QAAQA,EAAE,CAAC,CAAC;AAC/C,iBAAS,IAAI,GAAG,IAAIA,EAAE,QAAQ;AAC5B,mBAAS,IAAI,GAAG,IAAIA,EAAE,CAAC,EAAE,QAAQ;AAC/B,cAAEA,EAAE,CAAC,EAAE,CAAC,CAAC;AAAA;AAEb,UAAEA,CAAC;AAAA,IACN,GAAE,KAAK,OAAOF,EAAE,IAAI,CAACE,MAAM;AAC1B,UAAI;AACF,eAAOA,EAAE,SAAS,EAAE,OAAOD,EAAC,CAAE;AAAA,MAC/B,SAAQ,GAAG;AACV,eAAO;AAAA,MACf;AAAA,IACA,CAAK,GAAG,KAAK,QAAQA,GAAG,KAAK,KAAK,KAAK;AAAA,EACvC;AAAA,EACE,SAASD,GAAG;AACV,WAAO,KAAK,eAAe,IAAIkE,EAAE,KAAK,KAAK,GAAGlE,CAAC,CAAC,IAAI,KAAK,KAAK,GAAGA,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUE,SAASA,GAAG;AACV,UAAMC,IAAI,CAAC,GAAGD,CAAC,GAAG,IAAI,KAAK;AAC3B,QAAI,EAAE,WAAW,GAAG;AAClB,UAAIA,EAAE,WAAW;AACf,cAAM,IAAI4D,EAAE,QAAQ,yCAAyC5D,EAAE,SAAS,GAAG;AAC7E,aAAOC;AAAA,IACb;AACI,QAAIC,IAAI,GAAG,IAAI;AACf,eAAW,KAAK;AACd,QAAE,aAAa,IAAI,KAAK,EAAE,YAAYA;AACxC,QAAIF,EAAE,SAASE;AACb,YAAM,IAAI0D,EAAE,QAAQ,wCAAwC1D,CAAC,SAASF,EAAE,MAAM,GAAG;AACnF,QAAI,CAAC,KAAKA,EAAE,SAAS,EAAE;AACrB,YAAM,IAAI4D,EAAE,QAAQ,wCAAwC,EAAE,MAAM,SAAS5D,EAAE,MAAM,GAAG;AAC1F,UAAM,IAAImP,GAAG,GAAGnP,EAAE,MAAM;AACxB,aAAS,IAAI,GAAG,IAAIA,EAAE,QAAQ,KAAK;AACjC,YAAM,IAAI,EAAE,EAAE,CAAC,CAAC;AAChB,UAAI,CAAC;AACH;AACF,UAAI,IAAIA,EAAE,CAAC;AACX,UAAI,EAAE,CAAC,EAAE,iBAAiB,EAAE,cAAc,WAAW,IAAI;AACvD,YAAIkP,GAAG,CAAC;AACN,cAAI,CAAC,EAAE;AACL;AAAA,cACG,CAAAF,GAAG,CAAC,MAAM,EAAE,gBAAgB,IAAIC,GAAG,GAAG,KAAK,EAAE;AACpD,YAAIX,GAAG,CAAC,MAAM,IAAI,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,IAAI,MAAM,CAACS,GAAG,GAAG,CAAC;AAC3D,gBAAM,IAAInL;AAAA,YACR;AAAA,YACA,aAAa,EAAE,IAAI,eAAe,IAAI,CAAC,cAAc,EAAE,cAAc,KAAK,KAAK,CAAC,SAAS,OAAO,CAAC;AAAA,UAClG;AACH,QAAA3D,EAAE,CAAC,IAAI;AAAA,MACf;AAAA,IACA;AACI,WAAOA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAME,SAASD,GAAG;AACV,WAAOkE,EAAE,GAAGlE,CAAC,IAAIA,EAAE,SAAS0J,GAAE1J,CAAC,IAAIA,EAAE,MAAM,EAAE,IAAI,KAAK,GAAI,CAAA,IAAI,MAAM,QAAQA,CAAC,KAAK,MAAM,QAAQA,EAAE,CAAC,CAAC,IAAIA,IAAI,CAAC,CAACA,CAAC,CAAC;AAAA,EACpH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,SAASA,GAAG;AACV,QAAIC,GAAG,GAAGC;AACV,QAAIwJ,GAAE1J,CAAC,GAAG;AACR,YAAM,EAAE,MAAM,GAAG,MAAM,EAAC,IAAKA,EAAE;AAC/B,aAAO,MAAM,KAAK,MAAM,IAAIA,EAAE,MAAM,CAAE,CAAA,IAAIA;AAAA,IAChD;AACI,WAAOkE,EAAE,GAAGlE,CAAC,KAAK,KAAKC,IAAID,EAAE,WAAW,OAAO,SAASC,EAAE,CAAC,MAAM,OAAO,SAAS,EAAE,CAAC,IAAI,MAAM,QAAQD,CAAC,IAAI,MAAM,QAAQA,EAAE,CAAC,CAAC,KAAKE,IAAIF,EAAE,CAAC,MAAM,OAAO,SAASE,EAAE,CAAC,IAAIF,EAAE,CAAC,IAAIA;AAAA,EACjL;AAAA,EACE,OAAO;AACL,UAAMA,IAAI,KAAK,UAAW;AAC1B,QAAIA,MAAM;AACR,aAAOA;AACT,QAAIwN,GAAG,KAAK,MAAM,KAAK,EAAE;AACvB,aAAOK,GAAI;AACb,QAAI,KAAK,OAAO,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,SAAS;AACtD,YAAM5N,IAAIyN,GAAG,KAAK,YAAY,MAAM,KAAK,MAAM,KAAK,aAAa,GAAG,IAAIC,GAAG,KAAK,OAAO,KAAK,IAAI1N,GAAG,KAAK,WAAW;AACnH,UAAI,MAAMoN;AACR,eAAO;AACT,YAAMnN,IAAI,KAAK,MAAM,GAAG,KAAK,IAAI;AACjC,aAAO0N,GAAG1N,GAAG,KAAK,OAAO,KAAK,IAAID,GAAG,KAAK,iBAAiB,KAAK,WAAW;AAAA,IACjF;AACI,WAAO,KAAK,MAAM,GAAG,KAAK,IAAI;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcE,YAAY;AACV,QAAI,KAAK;AACP;AACF,UAAMD,IAAImP,GAAG,KAAK,MAAM,KAAK,KAAK,MAAM,GAAGlP,IAAI,KAAK,KAAK,IAAI,CAAC,GAAGuC,MAAM;AACrE,UAAIL;AACJ,YAAMD,IAAIlC,EAAEwC,CAAC;AACb,aAAO,GAAGL,IAAI,KAAK,KAAKD,CAAC,MAAM,QAAQC,EAAE;AAAA,IAC/C,CAAK,GAAG,IAAI,KAAK,KAAK,IAAI,CAAC,GAAGK,MAAMvC,EAAEuC,CAAC,KAAK0M,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI;AACvE,QAAI,EAAE,MAAM,CAAC,MAAM,MAAM,IAAI;AAC3B;AACF,UAAMhP,IAAI,KAAK,KAAK,IAAI,CAAC,GAAGsC,MAAM,EAAEA,CAAC,MAAM,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC;AACtE,QAAI,IAAI,GAAG,IAAI;AACf,eAAW,KAAK;AACd,YAAM,IAAI,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK;AAAA,QACxC;AAAA,QACA,EAAE,OAAO,CAACA,GAAG,MAAM,KAAK,IAAIA,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,MACnD;AACI,UAAM,IAAI,KAAK,MAAM,IAAI,CAAE;AAC3B,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAMA,IAAI,CAAE;AACZ,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAML,IAAIjC,EAAE,IAAI,CAACkC,GAAG,MAAM;AACxB,cAAIgB;AACJ,gBAAM,IAAI,EAAE,CAAC;AACb,iBAAO,MAAMA,IAAI,KAAK,OAAO,SAAS,EAAE,CAAC,MAAM,OAAO,SAASA,EAAE,CAAC,MAAM,OAAOhB;AAAA,QACzF,CAAS;AACD,YAAI;AACF,cAAIkL,GAAGnL,CAAC;AACN,YAAAK,EAAE,KAAKqL,IAAI;AAAA,eACR;AACH,kBAAMzL,IAAI,KAAK,SAASD,CAAC;AACzB,YAAAqL,GAAGpL,GAAG,KAAK,EAAE,IAAII,EAAE,KAAKqL,GAAI,CAAA,IAAIrL,EAAE,KAAK,KAAK,MAAM,GAAGJ,CAAC,CAAC;AAAA,UACnE;AAAA,QACS,SAAQA,GAAG;AACV,UAAAI,EAAE,KAAKJ,CAAC;AAAA,QAClB;AAAA,MACA;AACM,QAAE,KAAKI,CAAC;AAAA,IACd;AACI,WAAO,KAAK,OAAO,GAAG;AAAA,EAC1B;AACA;AACA4M,GAAG,SAAS,IAAIA,GAAG,UAAU;AAC1B,IAACC,IAAID;AACR,MAAME,KAAK,cAAiBD,EAAE;AAAA,EAC5B,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU;AAAA,EACxC;AACA;AACAC,GAAG,UAAU;AACV,IAACC,KAAKD;AACT,MAAME,KAAK;AAAA;AAEX,MAAMC,WAAWJ,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,aAAa,KAAK,cAAcG,IAAI,KAAK,OAAO;AAAA,MAClF,EAAE,MAAM,UAAU,aAAa,mBAAmB,eAAe,CAAC,UAAU,QAAQ,MAAM,EAAG;AAAA,MAC7F,EAAE,MAAM,UAAU,aAAa,oBAAoB,eAAe,CAAC,UAAU,QAAQ,MAAM,EAAC;AAAA,IAClG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAKxP,GAAGC,GAAG;AACT,QAAI,OAAOD,KAAK,YAAY,OAAOC,KAAK;AACtC,aAAOD,IAAIC;AACb,QAAID,aAAa,QAAQyD,EAAE,GAAGxD,CAAC;AAC7B,aAAOwD,EAAE,OAAOxD,CAAC,EAAE,IAAID,CAAC;AAC1B,QAAIyD,EAAE,GAAGzD,CAAC,KAAKC,aAAa;AAC1B,aAAOwD,EAAE,OAAOzD,CAAC,EAAE,IAAIC,CAAC;AAC1B,QAAID,aAAa,QAAQ,OAAOC,KAAK;AACnC,aAAO8I,EAAE/I,CAAC,EAAE,IAAIC,IAAIb,IAAI,QAAQ,EAAE,OAAQ;AAC5C,QAAI,OAAOY,KAAK,YAAYC,aAAa;AACvC,aAAO8I,EAAE9I,CAAC,EAAE,IAAID,IAAIZ,IAAI,QAAQ,EAAE,OAAQ;AAC5C,QAAI;AACF,aAAO4O,EAAEhO,GAAG,EAAE,aAAa,EAAC,CAAE,IAAIgO,EAAE/N,GAAG,EAAE,aAAa,EAAC,CAAE;AAAA,IAC/D,QAAY;AACN,YAAM,IAAI2D,EAAE,WAAW,wCAAwC;AAAA,IACrE;AAAA,EACA;AACA;AACA,MAAM8L,KAAK;AAAA;AAEX,MAAMC,WAAWN,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,eAAe,KAAK,cAAcK,IAAI,KAAK,OAAO;AAAA,MACpF,EAAE,MAAM,UAAU,aAAa,qCAAqC,eAAe,CAAC,UAAU,QAAQ,MAAM,EAAG;AAAA,MAC/G;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,QAAQ,MAAM;AAAA,MAChD;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAK1P,GAAGC,GAAG;AACT,QAAI,OAAOD,KAAK,YAAY,OAAOC,KAAK;AACtC,aAAOD,IAAIC;AACb,QAAID,aAAa,QAAQC,aAAa;AACpC,aAAOwD,EAAE,UAAUzD,GAAGC,CAAC;AACzB,QAAID,aAAa,QAAQyD,EAAE,GAAGxD,CAAC;AAC7B,aAAOwD,EAAE,OAAOxD,CAAC,EAAE,IAAID,CAAC;AAC1B,QAAIyD,EAAE,GAAGzD,CAAC,KAAKC,aAAa;AAC1B,aAAOwD,EAAE,OAAOzD,CAAC,EAAE,IAAIC,CAAC;AAC1B,QAAID,aAAa,QAAQ,OAAOC,KAAK;AACnC,aAAO8I,EAAE/I,CAAC,EAAE,SAASC,IAAIb,IAAI,QAAQ,EAAE,OAAQ;AACjD,QAAI;AACF,aAAO4O,EAAEhO,GAAG,EAAE,aAAa,EAAC,CAAE,IAAIgO,EAAE/N,GAAG,EAAE,aAAa,EAAC,CAAE;AAAA,IAC/D,QAAY;AACN,YAAM,IAAI2D,EAAE,WAAW,6CAA6C;AAAA,IAC1E;AAAA,EACA;AACA;AACA,MAAMgM,KAAK;AAAA;AAEX,MAAMC,WAAWR,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,kBAAkB,KAAK,cAAcO,IAAI,KAAK,OAAO;AAAA,MACvF,EAAE,MAAM,WAAW,aAAa,iBAAiB,eAAe,CAAC,QAAQ,EAAG;AAAA,MAC5E,EAAE,MAAM,WAAW,aAAa,kBAAkB,eAAe,CAAC,QAAQ,EAAC;AAAA,IACjF,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAK5P,GAAGC,GAAG;AACT,WAAO+N,EAAEhO,CAAC,IAAIgO,EAAE/N,CAAC;AAAA,EACrB;AACA;AACA,MAAM6P,KAAK;AAAA;AAEX,MAAMC,WAAWV,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,gBAAgB,KAAK,cAAcS,IAAI,KAAK,OAAO;AAAA,MACrF;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,QAAQ;AAAA,MACzB;AAAA,MACD;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,QAAQ;AAAA,MAChC;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,SAAS9P,GAAG;AACV,UAAMC,IAAI,MAAM,SAASD,CAAC,EAAE,IAAI,CAAC,MAAMgO,EAAE,CAAC,CAAC;AAC3C,QAAI/N,EAAE,CAAC,MAAM;AACX,YAAM,IAAI2D,EAAE,WAAW,uCAAuC;AAChE,WAAO3D;AAAA,EACX;AAAA,EACE,KAAKD,GAAGC,GAAG;AACT,WAAOD,IAAIC;AAAA,EACf;AACA;AACA,MAAM+P,KAAK;AACX,MAAMC,WAAWZ,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,qBAAqB,KAAK,cAAcW,IAAI,KAAK,OAAO;AAAA,MAC1F;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,QAAQ;AAAA,QAClC,UAAU;AAAA,MAClB;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,QAAQhQ,GAAG;AACT,QAAIA,EAAE,WAAW;AACf,aAAO;AACT,QAAIC,IAAI;AACR,WAAOD,EAAE,QAAQ,CAAC,MAAM;AACtB,MAAA4O;AAAA,QACE;AAAA,QACA,CAAC1O,MAAM;AACL,UAAAD,KAAK+N,EAAE9N,GAAG,EAAE,QAAQ,GAAE,CAAE;AAAA,QACzB;AAAA,QACD,KAAK;AAAA,MACN;AAAA,IACF,CAAA,GAAGD;AAAA,EACR;AACA;AACA,MAAMiQ,KAAK;AAAA;AAEX,MAAMC,WAAWd,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,4BAA4B,KAAK,cAAca,IAAI,KAAK,OAAO;AAAA,MACjG;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MAC9C;AAAA,MACD;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,UAAU,SAAS;AAAA,MACrD;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAKlQ,GAAGC,GAAG;AACT,WAAO8N,EAAE/N,CAAC,IAAI+N,EAAE9N,CAAC;AAAA,EACrB;AACA;AACA,MAAMmQ,KAAK;AAAA;AAEX,MAAMC,WAAWhB,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,YAAY,KAAK,cAAce,IAAI,KAAK,OAAO;AAAA,MACjF,EAAE,MAAM,UAAU,aAAa,gBAAgB,eAAe,CAAC,KAAK,EAAG;AAAA,MACvE,EAAE,MAAM,UAAU,aAAa,uCAAuC,eAAe,CAAC,KAAK,EAAC;AAAA,IAClG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAKpQ,GAAGC,GAAG;AACT,WAAOmO,GAAGpO,GAAGC,CAAC;AAAA,EAClB;AACA;AACA,MAAMqQ,KAAK;AAAA;AAEX,MAAMC,WAAWlB,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,YAAY,KAAK,cAAciB,IAAI,KAAK,OAAO;AAAA,MACjF,EAAE,MAAM,UAAU,aAAa,gBAAgB,eAAe,CAAC,KAAK,EAAG;AAAA,MACvE,EAAE,MAAM,UAAU,aAAa,uCAAuC,eAAe,CAAC,KAAK,EAAC;AAAA,IAClG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAKtQ,GAAGC,GAAG;AACT,WAAOoO,GAAGrO,GAAGC,CAAC;AAAA,EAClB;AACA;AACA,MAAMuQ,KAAK;AAAA;AAEX,MAAMC,WAAWpB,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,YAAY,KAAK,cAAcmB,IAAI,KAAK,OAAO;AAAA,MACjF,EAAE,MAAM,UAAU,aAAa,gBAAgB,eAAe,CAAC,KAAK,EAAG;AAAA,MACvE,EAAE,MAAM,UAAU,aAAa,uCAAuC,eAAe,CAAC,KAAK,EAAC;AAAA,IAClG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAKxQ,GAAGC,GAAG;AACT,WAAO6N,GAAG9N,GAAGC,CAAC;AAAA,EAClB;AACA;AACA,MAAMyQ,KAAK;AAAA;AAEX,MAAMC,WAAWtB,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,aAAa,KAAK,cAAcqB,IAAI,KAAK,OAAO;AAAA,MAClF,EAAE,MAAM,UAAU,aAAa,gBAAgB,eAAe,CAAC,KAAK,EAAG;AAAA,MACvE,EAAE,MAAM,UAAU,aAAa,uCAAuC,eAAe,CAAC,KAAK,EAAC;AAAA,IAClG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAK1Q,GAAGC,GAAG;AACT,WAAOgO,GAAGjO,GAAGC,CAAC;AAAA,EAClB;AACA;AACA,MAAM2Q,KAAK;AAAA;AAEX,MAAMC,WAAWxB,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,YAAY,KAAK,cAAcuB,IAAI,KAAK,OAAO;AAAA,MACjF,EAAE,MAAM,UAAU,aAAa,gBAAgB,eAAe,CAAC,KAAK,EAAG;AAAA,MACvE,EAAE,MAAM,UAAU,aAAa,uCAAuC,eAAe,CAAC,KAAK,EAAC;AAAA,IAClG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAK5Q,GAAGC,GAAG;AACT,WAAOiO,GAAGlO,GAAGC,CAAC;AAAA,EAClB;AACA;AACA,MAAM6Q,KAAK;AAAA;AAEX,MAAMC,WAAW1B,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,aAAa,KAAK,cAAcyB,IAAI,KAAK,OAAO;AAAA,MAClF,EAAE,MAAM,UAAU,aAAa,gBAAgB,eAAe,CAAC,KAAK,EAAG;AAAA,MACvE,EAAE,MAAM,UAAU,aAAa,uCAAuC,eAAe,CAAC,KAAK,EAAC;AAAA,IAClG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAK9Q,GAAGC,GAAG;AACT,WAAOkO,GAAGnO,GAAGC,CAAC;AAAA,EAClB;AACA;AACA,MAAM+Q,KAAK;AACX,MAAMC,WAAW5B,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,SAAS,KAAK,cAAc2B,IAAI,KAAK,OAAO,CAAE,GAAE,KAAK,WAAW;AAAA,EACxG;AAAA,EACE,OAAO;AACL,WAAuB,oBAAI,KAAM;AAAA,EACrC;AACA;AACA,MAAME,KAAK;AAAA;AAEX,MAAMC,WAAW9B,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,mBAAmB,KAAK,cAAc6B,IAAI,KAAK,OAAO;AAAA,MACxF;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,WAAW,QAAQ;AAAA,QACnC,UAAU;AAAA,MAClB;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,QAAQlR,GAAG;AACT,WAAOA,EAAE,IAAI,CAACC,MAAMuO,GAAGvO,CAAC,CAAC,EAAE,OAAO,CAACA,GAAG,MAAMA,KAAK,CAAC;AAAA,EACtD;AACA;AACA,MAAMmR,KAAK;AAAA;AAEX,MAAMC,WAAWhC,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,kBAAkB,KAAK,cAAc+B,IAAI,KAAK,OAAO;AAAA,MACvF;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,WAAW,QAAQ;AAAA,QACnC,UAAU;AAAA,MAClB;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,QAAQpR,GAAG;AACT,WAAOA,EAAE,IAAI,CAACC,MAAMuO,GAAGvO,CAAC,CAAC,EAAE,OAAO,CAACA,GAAG,MAAMA,KAAK,CAAC;AAAA,EACtD;AACA;AACA,MAAMqR,KAAK;AAAA;AAEX,MAAMC,WAAWlC,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,sCAAsC,KAAK,cAAciC,IAAI,KAAK,OAAO;AAAA,MAC3G,EAAE,MAAM,aAAa,aAAa,gCAAgC,eAAe,CAAC,KAAK,EAAG;AAAA,MAC1F;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,KAAK;AAAA,MACtB;AAAA,MACD;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,UAAU;AAAA,QACV,eAAe,CAAC,KAAK;AAAA,MAC7B;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAKtR,GAAGC,GAAG,IAAI,IAAI;AACjB,WAAOuO,GAAGxO,CAAC,IAAIC,IAAI;AAAA,EACvB;AACA;AACA,MAAMuR,KAAK;AACX,MAAMC,WAAWpC,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,mCAAmC,KAAK,cAAcmC,IAAI,KAAK,OAAO;AAAA,MACxG;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,KAAK;AAAA,QACrB,eAAe;AAAA,MAChB;AAAA,MACD;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,UAAU;AAAA,QACV,eAAe,CAAC,KAAK;AAAA,MAC7B;AAAA,IACK,GAAE,KAAK,WAAW,WAAW,KAAK,oBAAoB;AAAA,EAC3D;AAAA,EACE,KAAKxR,GAAGC,GAAG;AACT,WAAO2D,EAAE,GAAG5D,CAAC,KAAKA,aAAa,QAAQC,IAAID;AAAA,EAC/C;AACA;AACA,MAAM0R,KAAK;AAAA;AAEX,MAAMC,WAAWtC,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,aAAa,KAAK,cAAcqC,IAAI,KAAK,OAAO;AAAA,MAClF;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,WAAW,QAAQ;AAAA,MAC3C;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAK1R,GAAG;AACN,WAAO,CAACwO,GAAGxO,CAAC;AAAA,EAChB;AACA;AACA,MAAM4R,KAAK;AACX,MAAMC,WAAWxC,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,+BAA+B,KAAK,cAAcuC,IAAI,KAAK,OAAO;AAAA,MACpG;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,QAAQ;AAAA,QAClC,UAAU;AAAA,MAClB;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,QAAQ5R,GAAG;AACT,QAAIC,IAAI;AACR,WAAOD,EAAE,QAAQ,CAAC,MAAM;AACtB,MAAAgP,GAAG,CAAC,IAAIJ;AAAA,QACN;AAAA,QACA,CAAC1O,MAAM;AACL,UAAAqO,GAAGrO,CAAC,KAAKD;AAAA,QACV;AAAA,QACD,KAAK;AAAA,MACN,KAAI+N,EAAE,CAAC,GAAG/N;AAAA,IACZ,CAAA,GAAGA;AAAA,EACR;AACA;AACA,MAAM6R,KAAK;AACX,MAAMC,WAAW1C,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,WAAW,KAAK,cAAcyC,IAAI,KAAK,OAAO,CAAC,EAAE,MAAM,SAAS,aAAa,iBAAiB,eAAe,CAAC,QAAQ,GAAG,GAAG,KAAK,WAAW;AAAA,EACpL;AAAA,EACE,KAAK9R,GAAG;AACN,WAAO,KAAK,IAAIgO,EAAEhO,CAAC,CAAC;AAAA,EACxB;AACA;AACA,MAAMgS,KAAK;AACX,MAAMC,WAAW5C,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,gBAAgB,KAAK,cAAc2C,IAAI,KAAK,OAAO;AAAA,MACrF,EAAE,MAAM,QAAQ,aAAa,6CAA6C,eAAe,CAAC,QAAQ,EAAG;AAAA,MACrG,EAAE,MAAM,YAAY,aAAa,kCAAkC,eAAe,CAAC,QAAQ,EAAC;AAAA,IAClG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAKhS,GAAGC,GAAG;AACT,WAAO,KAAK,IAAI+N,EAAEhO,CAAC,GAAGgO,EAAE/N,CAAC,CAAC;AAAA,EAC9B;AACA;AACA,MAAMiS,KAAK;AACX,MAAMC,WAAW9C,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,gCAAgC,KAAK,cAAc6C,IAAI,KAAK,OAAO;AAAA,MACrG;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,QAAQ;AAAA,QAClC,UAAU;AAAA,MAClB;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,QAAQlS,GAAG;AACT,QAAIC,IAAI;AACR,WAAOD,EAAE,QAAQ,CAAC,MAAM;AACtB,MAAA4O;AAAA,QACE;AAAA,QACA,CAAC1O,MAAM;AACL,UAAAA,KAAK,QAAQA,MAAM,MAAMD;AAAA,QAC1B;AAAA,QACD,KAAK;AAAA,MACN;AAAA,IACF,CAAA,GAAGA;AAAA,EACR;AACA;AACA,MAAMmS,KAAK;AACX,MAAMC,WAAWhD,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,yBAAyB,KAAK,cAAc+C,IAAI,KAAK,OAAO;AAAA,MAC9F;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,QAAQ;AAAA,QAClC,UAAU;AAAA,MAClB;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,QAAQpS,GAAG;AACT,QAAIC,IAAI,GAAG,IAAI;AACf,QAAID,EAAE,QAAQ,CAACE,MAAM;AACnB,UAAI8O,GAAG9O,CAAC;AACN,QAAA0O;AAAA,UACE1O;AAAA,UACA,CAAC,MAAM;AACL,YAAAqO,GAAG,CAAC,MAAMtO,KAAK+N,EAAE,CAAC,GAAG;AAAA,UACtB;AAAA,UACD,KAAK;AAAA,QACN;AAAA,WACE;AACH,cAAM,IAAIA,EAAE9N,CAAC;AACb,QAAAD,KAAK,GAAG;AAAA,MAChB;AAAA,IACA,CAAK,GAAG,MAAM;AACR,YAAM,IAAI2D,EAAE,WAAW,+DAA+D;AACxF,WAAO3D,IAAI;AAAA,EACf;AACA;AACA,MAAMqS,KAAK;AACX,MAAMC,WAAWlD,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,qBAAqB,KAAK,cAAciD,IAAI,KAAK,OAAO;AAAA,MAC1F;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,QAAQ;AAAA,QAClC,aAAa;AAAA,QACb,UAAU;AAAA,MAClB;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,QAAQtS,GAAG;AACT,QAAIC,IAAI,QAAQ,IAAI;AACpB,WAAOD,EAAE,QAAQ,CAACE,MAAM;AACtB,UAAI8O,GAAG9O,CAAC;AACN,QAAA0O;AAAA,UACE1O;AAAA,UACA,CAAC,MAAM;AACL,gBAAIqO,GAAG,CAAC,GAAG;AACT,oBAAM,IAAIP,EAAE,CAAC;AACb,kBAAI/N,MAAMA,IAAI,IAAI,IAAI;AAAA,YACpC;AAAA,UACW;AAAA,UACD,KAAK;AAAA,QACN;AAAA,WACE;AACH,cAAM,IAAI+N,EAAE9N,CAAC;AACb,YAAID,MAAMA,IAAI,IAAI,IAAI;AAAA,MAC9B;AAAA,IACA,CAAK,GAAG,IAAIA,IAAI;AAAA,EAChB;AACA;AACA,MAAMuS,KAAK;AACX,MAAMC,WAAWpD,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,qBAAqB,KAAK,cAAcmD,IAAI,KAAK,OAAO;AAAA,MAC1F;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,QAAQ;AAAA,QAClC,aAAa;AAAA,QACb,UAAU;AAAA,MAClB;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,QAAQxS,GAAG;AACT,QAAIC,IAAI,OAAO,IAAI;AACnB,WAAOD,EAAE,QAAQ,CAACE,MAAM;AACtB,UAAI8O,GAAG9O,CAAC;AACN,QAAA0O;AAAA,UACE1O;AAAA,UACA,CAAC,MAAM;AACL,gBAAIqO,GAAG,CAAC,GAAG;AACT,oBAAM,IAAIP,EAAE,CAAC;AACb,kBAAI/N,MAAMA,IAAI,IAAI,IAAI;AAAA,YACpC;AAAA,UACW;AAAA,UACD,KAAK;AAAA,QACN;AAAA,WACE;AACH,cAAM,IAAI+N,EAAE9N,CAAC;AACb,YAAID,MAAMA,IAAI,IAAI,IAAI;AAAA,MAC9B;AAAA,IACA,CAAK,GAAG,IAAIA,IAAI;AAAA,EAChB;AACA;AACA,MAAMyS,KAAK;AACX,MAAMC,WAAWtD,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,WAAW,KAAK,cAAcqD,IAAI,KAAK,OAAO;AAAA,MAChF;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,QAAQ;AAAA,MAC1C;AAAA,IACA,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAK1S,GAAG;AACN,WAAO+N,EAAE/N,CAAC,EAAE;AAAA,EAChB;AACA;AACA,MAAM4S,KAAK;AACX,MAAMC,WAAWxD,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,UAAU,aAAa,KAAK,cAAcuD,IAAI,KAAK,OAAO;AAAA,MAClF,EAAE,MAAM,UAAU,aAAa,qCAAqC,eAAe,CAAC,QAAQ,EAAC;AAAA,IACnG,GAAO,KAAK,WAAW;AAAA,EACvB;AAAA,EACE,KAAK5S,GAAG;AACN,WAAO,CAACgO,EAAEhO,CAAC;AAAA,EACf;AACA;AACA,MAAM8S,KAAK;AAAA;AAEX,MAAMC,WAAW1D,EAAE;AAAA,EACjB,cAAc;AACZ,UAAM,GAAG,SAAS,GAAG,KAAK,eAAe,IAAI,KAAK,UAAU,iCAAiC,KAAK,cAAcyD,IAAI,KAAK,OAAO;AAAA,MAC9H;AAAA,QACE,MAAM;AAAA,QACN,aAAa;AAAA,QACb,aAAa;AAAA,QACb,eAAe,CAAC,UAAU,KAAK;AAAA,MACvC;AAAA,IACK,GAAE,KAAK,WAAW,WAAW,KAAK,oBAAoB;AAAA,EAC3D;AAAA,EACE,KAAK9S,GAAG;AACN,WAAOkE,EAAE,GAAGlE,CAAC,IAAIA,IAAIA,aAAakL,KAAIlL,EAAE,eAAc,IAAK,MAAM,QAAQA,CAAC,IAAIA,IAAI,CAAC,CAACA,CAAC,CAAC;AAAA,EAC1F;AACA;AACK,MAACgT,KAAK;AAAA;AAAA,EAET,KAAKvD;AAAA,EACL,OAAOE;AAAA,EACP,QAAQkD;AAAA,EACR,UAAUhD;AAAA,EACV,QAAQE;AAAA,EACR,KAAKkC;AAAA,EACL,OAAOA;AAAA,EACP,QAAQ9B;AAAA,EACR,IAAIE;AAAA,EACJ,IAAIE;AAAA,EACJ,IAAIE;AAAA,EACJ,KAAKE;AAAA,EACL,IAAIE;AAAA,EACJ,KAAKE;AAAA;AAAA,EAEL,IAAIQ;AAAA,EACJ,SAASE;AAAA,EACT,KAAKN;AAAA,EACL,IAAIE;AAAA,EACJ,KAAKM;AAAA,EACL,cAAcoB;AAAA;AAAA,EAEd,KAAK9C;AAAA,EACL,KAAKsC;AAAA,EACL,KAAKE;AAAA,EACL,SAASJ;AAAA,EACT,OAAOR;AAAA,EACP,QAAQM;AAAA;AAAA,EAER,KAAKQ;AAAA;AAAA,EAEL,KAAKZ;AAAA;AAAA,EAEL,KAAKd;AACP,GAAGgC,KAAqB,oBAAI,IAAG,GAAIC,KAAK,CAACnT,IAAIiT,OAAO;AAClD,MAAIhT,IAAIiT,GAAG,IAAIlT,CAAC;AAChB,SAAOC,MAAMA,IAAI,OAAO,KAAKD,CAAC,EAAE,IAAI,CAACE,MAAM;AACzC,UAAM,IAAIF,EAAEE,CAAC,GAAGC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAA,GAAI,OAAO,CAAE,EAAA,CAAE;AACjD,WAAO;AAAA,MACL,MAAMD,EAAE,YAAa;AAAA,MACrB,UAAUC,EAAE;AAAA,MACZ,SAASA,EAAE,YAAY,KAAK,OAAO,SAAS,EAAE,WAAW;AAAA,MACzD,aAAaA,EAAE,eAAe;AAAA,MAC9B,MAAMA,EAAE,QAAQ,CAAA;AAAA,IACjB;AAAA,EACL,CAAG,GAAG+S,GAAG,IAAIlT,GAAGC,CAAC,IAAIA;AACrB;AACA,MAAMmT,GAAG;AAAA,EACP,YAAY;AAAA,IACV,cAAcnT;AAAA,IACd,qBAAqBC;AAAA,IACrB,UAAU,IAAI,CAAE;AAAA,IAChB,QAAQC;AAAA,IACR,UAAU;AAAA,IACV,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,UAAUsC;AAAA,IACV,SAAS;AAAA,IACT,QAAQL;AAAA,EACT,IAAG,IAAI;AACN,SAAK,YAAY,GAAG,KAAK,WAAW,GAAG,KAAK,OAAO,CAAA,GAAI,KAAK,UAAU,IAAI,KAAK,iBAAiB,IAAI,KAAK,oBAAoB,CAAE,GAAE,KAAK,kBAAkB,GAAG,KAAK,kBAAkB,IAAI,KAAK,iBAAiB,GAAG,KAAK,iBAAiB,IAAI,KAAK,qBAAqB,CAAE,GAAE,KAAK,cAAc,MAAM,KAAK,eAA+B,oBAAI,IAAK,GAAE,KAAK,uBAAuC,oBAAI,IAAK,GAAE,KAAK,oBAAoC,oBAAI,OAAO,KAAK,eAA+B,oBAAI,OAAO,KAAK,iBAAiB,GAAG,KAAK,cAAc7C,IAAI,KAAK,UAAU,IAAI,KAAK,YAAY,CAAA,GAAI,KAAK,eAAe,IAAI,KAAK,eAAed,IAAI,KAAK,qBAAqC,oBAAI,OAAO,KAAK,QAAQ,IAAI,KAAK,YAAY,CAAE,GAAE,KAAK,WAAW,CAAA,GAAI,KAAK,WAAW,CAAC4D,MAAM;AAAA,IAC3vB,GAAO,KAAK,cAAc,CAACA,OAAO,EAAE,MAAM,GAAG,OAAOA,EAAG,IAAGpC,KAAK,SAAS,KAAK,eAAeA,IAAI,KAAK,YAAY;AAAA,MAC3G,GAAGgT;AAAA,MACH,GAAG/S;AAAA,IACJ;AACD,eAAWmC,KAAK,KAAK,WAAW;AAC9B,YAAM,IAAI,KAAK,UAAUA,CAAC;AAC1B,QAAE,SAASA;AAAA,IACjB;AACI,SAAK,WAAW,GAAG,KAAK,SAASlC,GAAG,KAAK,WAAW,GAAG,KAAK,eAAe,GAAG,KAAK,eAAe,GAAG,KAAK,eAAe,GAAG,KAAK,eAAe,GAAG,KAAK,WAAWsC,GAAG,KAAK,UAAU,GAAG,KAAK,SAASL;AAAA,EAC1M;AAAA,EACE,OAAO;AACL,QAAI,KAAK,SAAS,OAAO,KAAK,KAAK,iBAAiB,EAAE,WAAW;AAC/D;AACF,UAAMnC,IAAI,OAAO,KAAK,KAAK,iBAAiB,GAAGC,IAAI,CAAE;AACrD,aAAS,IAAI,GAAG,IAAID,EAAE,QAAQ,KAAK;AACjC,YAAME,IAAIF,EAAE,CAAC,GAAG,IAAI,KAAK,kBAAkBE,CAAC,GAAG,IAAI,EAAE,MAAM,cAAc;AACzE,UAAI,CAAC,KAAK,EAAE,WAAW;AACrB;AACF,MAAAD,EAAE,KAAK,CAAC;AAAA,IACd;AACI,aAAS,IAAI,GAAG,IAAIA,EAAE,QAAQ,KAAK;AACjC,YAAM,EAAE,OAAOC,GAAG,UAAU,EAAG,IAAGD,EAAE,CAAC,GAAG,IAAIC,EAAE,cAAc;AAC5D,YAAM,EAAE,mBAAmB,EAAE,KAAK,YAAY,CAAC,CAAC;AAAA,IACtD;AACI,SAAK,QAAQ;AAAA,EACjB;AACA;AACK,MAACiL,KAAK,CAACpL,IAAI,OAAO,IAAIoT,GAAGpT,CAAC,GAAYqT,KAAK,CAACrT,IAAI,CAAA,OAAQ,EAAE,UAAUoL,GAAGpL,CAAC,EAAG,IAAGsT,KAAK,CAACtT,OAAO;AAAA,EAC9F,aAAa,EAAE,OAAOC,KAAK;AACzB,QAAIA,KAAK,QAAQ,MAAMA,CAAC;AACtB,aAAO;AACT,UAAM,CAACC,GAAG,CAAC,IAAI,OAAO,WAAWD,EAAE,YAAY,KAAK,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAGE,IAAID,EAAE,QAAQ,4BAA4B,KAAKF,CAAC,EAAE;AACtI,WAAO,KAAK,OAAOG,IAAI,GAAGA,CAAC,IAAI,CAAC;AAAA,EACpC;AACA,IAAIoT,KAAKD,GAAG,GAAG,GAAGE,KAAK;AAAA,EACrB,aAAa,EAAE,OAAOxT,KAAK;AACzB,WAAOA,KAAK,QAAQ,MAAMA,CAAC,IAAI,OAAO,GAAG,YAAYA,IAAI,KAAK,YAAY,KAAK,gBAAgB,CAAC,CAAC;AAAA,EACrG;AACA,GAAGyT,KAAK,CAACzT,GAAGC,GAAGC,GAAG,MAAM;AACtB,MAAID,KAAK;AACP,WAAOA;AACT,QAAME,IAAIH,EAAE,UAAUE,CAAC;AACvB,UAAQA,EAAE,MAAM,IAAIC,EAAE,qBAAqB,CAAC,IAAIA,EAAE,qBAAqB,CAAC,MAAM;AAChF,GAAGuT,KAAK;AAAA;AAAA,EAEN;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AACF,GAAGC,IAAI,sBAAsBC,KAAK;AAAA,EAChC,MAAM,CAAC,cAAc,EAAE;AAAA,EACvB,OAAO,CAAC,cAAc,CAAC;AAAA,EACvB,IAAI,CAAC,YAAY,EAAE;AAAA,EACnB,MAAM,CAAC,YAAY,CAAC;AAAA,EACpB,MAAM,CAAC,QAAQ,CAAC;AAClB;AACA,MAAMC,GAAG;AAAA,EACP,YAAY5T,GAAGC,GAAG;AAChB,UAAM,EAAE,eAAe,GAAG,UAAUC,GAAG,eAAe,MAAMF,GAAG,IAAI,EAAE;AACrE,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,wBAAwB;AAC1C,SAAK,MAAM2C,GAAGzB,GAAG,CAAC,GAAGhB,CAAC,GAAG,KAAK,YAAY,KAAK,iBAAiBD,CAAC,GAAG,KAAK,MAAM,KAAK,mBAAmBA,CAAC,GAAG,KAAK,QAAQ;AAAA,EAC5H;AAAA,EACE,IAAI,UAAU;AACZ,QAAIkC,GAAGC;AACP,UAAM,CAACpC,GAAGC,CAAC,IAAI0T,GAAG,KAAK,SAAS,GAAG,EAAE,KAAK9Q,GAAG,MAAM3C,GAAG,QAAQ4C,GAAG,OAAOC,EAAG,IAAG,KAAK,KAAKd,IAAIH,GAAGgB,IAAID,IAAI,GAAGE,IAAI7C,IAAI,CAAC;AACnH,aAASkL,IAAIvI,GAAGuI,KAAKtI,GAAGsI;AACtB,eAASjI,IAAIjD,GAAGiD,KAAKJ,GAAGI;AACtB,QAAAlB,EAAEmJ,IAAIvI,CAAC,EAAEM,IAAIjD,CAAC,IAAI,KAAK,MAAM,QAAQ,EAAE,GAAGkL,GAAG,GAAGjI,EAAC,GAAI,EAAE,YAAY,SAAU,CAAA,KAAK;AACtF,UAAMb,IAAIb,GAAG,KAAK,GAAG,GAAGc,IAAId,GAAG,KAAK,GAAG,GAAGe,IAAI,CAAE;AAChD,QAAIxC,MAAM;AACR,eAASoL,IAAI,GAAGA,IAAI7I,EAAE,MAAM6I,KAAK;AAC/B,cAAMjI,IAAI,KAAK,kBAAkBlB,EAAEmJ,CAAC,GAAG,EAAE;AACzC,iBAAShI,IAAI,GAAGA,IAAIb,EAAE,MAAMa,KAAK;AAC/B,gBAAMiI,KAAKlJ,IAAIF,EAAEmJ,IAAI9I,EAAE,IAAI,MAAM,OAAO,SAASH,EAAEiB,IAAId,EAAE,IAAI,GAAGgJ,IAAIrL,IAAI,IAAI,KAAK,IAAI,OAAOmD,IAAI,KAAK,IAAI,QAAQA,GAAGmI,IAAItL,IAAI,IAAImD,IAAId,EAAE,QAAQA,EAAE,OAAO,IAAIc,IAAId,EAAE,QAAQA,EAAE,MAAMkJ,IAAI,EAAE,GAAG,KAAK,IAAI,MAAMJ,GAAG,GAAGE,KAAKG,IAAI,KAAK,MAAM,MAAMD,CAAC,GAAGE,IAAIvI,EAAEoI,CAAC,EAAE,KAAM,EAAC,OAAOK,KAAKP,KAAK,OAAO,SAASA,EAAE,mBAAmB,KAAK,KAAK,MAAM,eAAeK,GAAG;AAAA,YACnV,YAAYD;AAAA,UACb,CAAA,IAAIC;AACL,UAAAlJ,EAAEhC,EAAEgL,CAAC,CAAC,IAAI;AAAA,YACR,GAAGH;AAAA,YACH,OAAOO;AAAA,UACR;AAAA,QACX;AAAA,MACA;AAAA,aACa5L,MAAM;AACb,eAASoL,IAAI,GAAGA,IAAI7I,EAAE,MAAM6I,KAAK;AAC/B,cAAMjI,IAAI,KAAK;AAAA,UACblB,EAAE,IAAI,CAACmB,MAAMA,EAAEgI,CAAC,CAAC;AAAA,UACjB;AAAA,QACD;AACD,iBAAShI,IAAI,GAAGA,IAAIb,EAAE,MAAMa,KAAK;AAC/B,gBAAMiI,KAAKjJ,IAAIH,EAAEmB,IAAId,EAAE,IAAI,MAAM,OAAO,SAASF,EAAEgJ,IAAI9I,EAAE,IAAI,GAAGgJ,IAAIrL,IAAI,IAAI,KAAK,IAAI,MAAMmD,IAAI,KAAK,IAAI,SAASA,GAAGmI,IAAItL,IAAI,IAAImD,IAAId,EAAE,QAAQA,EAAE,OAAO,IAAIc,IAAId,EAAE,QAAQA,EAAE,MAAMkJ,IAAIrI,EAAEoI,CAAC,EAAE,KAAI,EAAG;AACjM,UAAA/I,EAAEhC,EAAE,EAAE8K,GAAM,GAAG,KAAK,IAAI,OAAOF,EAAG,CAAA,CAAC,IAAI,EAAE,GAAGC,GAAG,OAAOG,EAAG;AAAA,QACnE;AAAA,MACA;AACI,WAAO,KAAK,MAAM,OAAO;AAAA,MACvB,MAAMhJ;AAAA,MACN,UAAU;AAAA,MACV,gBAAgB;AAAA,QACd,SAAS,KAAK,MAAM;AAAA,QACpB,eAAerB,GAAG,KAAK,GAAG;AAAA,MAC3B;AAAA,MACD,gBAAgB;AAAA,QACd,SAAS,KAAK,MAAM;AAAA,QACpB,eAAeA,GAAG,KAAK,GAAG;AAAA,MAClC;AAAA,IACA,CAAK;AAAA,EACL;AAAA,EACE,IAAI,YAAY;AACd,WAAOF,GAAG,KAAK,KAAK,KAAK,GAAG;AAAA,EAChC;AAAA,EACE,aAAajB,GAAG;AACd,UAAM,EAAE,GAAGC,GAAG,GAAG,EAAC,IAAKD,GAAGE,IAAI,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,MAAM,KAAK;AAClF,YAAQ,KAAK,WAAS;AAAA,MACpB,KAAK,QAAQ;AACX,aAAK,IAAI,QAAQD,KAAKA,KAAK,KAAK,IAAI,UAAU,MAAM,MAAMC,EAAE,YAAYwT,IAAI,MAAM,IAAI,MAAMxT,EAAE,YAAYwT,KAAK,KAAK,IAAI,SAASzT,KAAK,KAAK,KAAK,KAAK,MAAMC,EAAE,aAAawT;AAC1K;AAAA,MACR;AAAA,MACM,KAAK,SAAS;AACZ,aAAK,IAAI,QAAQzT,KAAKA,KAAK,KAAK,IAAI,UAAU,MAAM,MAAMC,EAAE,YAAYwT,IAAI,MAAM,IAAI,MAAMxT,EAAE,YAAYwT,KAAK,KAAK,IAAI,UAAUzT,IAAI,KAAK,KAAK,KAAK,KAAK,MAAMC,EAAE,aAAawT;AAC/K;AAAA,MACR;AAAA,MACM,KAAK,MAAM;AACT,aAAK,IAAI,OAAO,KAAK,KAAK,KAAK,IAAI,WAAW,MAAMzT,MAAMC,EAAE,aAAawT,IAAI,MAAMzT,IAAI,MAAMC,EAAE,aAAawT,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAKzT,KAAKA,KAAK,MAAMC,EAAE,YAAYwT;AAC1K;AAAA,MACR;AAAA,MACM,KAAK,QAAQ;AACX,aAAK,IAAI,OAAO,KAAK,KAAK,KAAK,IAAI,WAAW,MAAMzT,MAAMC,EAAE,aAAawT,IAAI,MAAMzT,IAAI,MAAMC,EAAE,aAAawT,KAAK,KAAK,IAAI,WAAW,IAAI,KAAK,KAAKzT,KAAKA,KAAK,MAAMC,EAAE,YAAYwT;AACjL;AAAA,MACR;AAAA,IACA;AACI,WAAOxT;AAAA,EACX;AAAA,EACE,mBAAmBF,GAAG;AACpB,UAAM,EAAE,GAAGC,GAAG,GAAG,EAAG,IAAGD,GAAG,EAAE,KAAKE,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAC,IAAK,KAAK;AAC1E,YAAQ,KAAK,WAAS;AAAA,MACpB,KAAK;AACH,eAAO,EAAE,KAAKA,GAAG,QAAQ,GAAG,MAAMD,GAAG,OAAO,IAAI,EAAG;AAAA,MACrD,KAAK;AACH,eAAO,EAAE,KAAKC,GAAG,QAAQ,GAAG,MAAM,IAAI,GAAG,OAAOD,EAAG;AAAA,MACrD,KAAK;AACH,eAAO,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQC,IAAI,EAAG;AAAA,MACrD,KAAK;AACH,eAAO,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,IAAI,GAAG,QAAQ,EAAG;AAAA,IAC3D;AACI,WAAO,KAAK;AAAA,EAChB;AAAA,EACE,iBAAiBF,GAAG;AAClB,UAAM,EAAE,KAAKC,GAAG,MAAM,GAAG,QAAQC,GAAG,OAAO,EAAG,IAAG,KAAK;AACtD,QAAI,IAAI,GAAG,IAAI;AACf,WAAOF,EAAE,IAAI,IAAI,IAAIA,EAAE,IAAI,IAAIA,EAAE,IAAI,MAAM,IAAIA,EAAE,IAAI,IAAIA,EAAE,IAAIC,IAAI,IAAID,EAAE,IAAIC,IAAID,EAAE,IAAIE,MAAM,IAAIF,EAAE,IAAIE,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,SAAS,UAAU,IAAI,IAAI,OAAO,SAAS,MAAM,IAAI,IAAI,IAAI,SAAS,UAAU,MAAM,IAAI,IAAI,IAAI,OAAO,SAAS;AAAA,EAC1S;AAAA,EACE,kBAAkBF,GAAGC,GAAG;AACtB,UAAM,IAAI,CAAA,GAAIC,IAAI2T,GAAG7T,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI2T,GAAG,KAAK,SAAS;AACnD,WAAOzT,EAAE,QAAQ,CAAC,MAAM;AACtB,YAAM,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE;AAC7B,cAAQ,EAAE,MAAI;AAAA,QACZ,KAAK,SAAS;AACZ,YAAE,KAAK4T,GAAG,EAAE,KAAK,CAAC;AAClB;AAAA,QACV;AAAA,QACQ,KAAK,WAAW;AACd,gBAAM,IAAI,EAAE,OAAOtR,IAAI,KAAK;AAC5B,oBAAU,IAAI;AACZ,gBAAIL,IAAI;AACR,kBAAMC,IAAIpC,EAAE,SAAS;AACrB;AACE,cAAAmC,KAAKC,GAAG,MAAMI,EAAE,eAAe,GAAG;AAAA,gBAChC,YAAYvC;AAAA,gBACZ,QAAQ,MAAM,aAAakC,IAAI;AAAA,gBAC/B,QAAQ,MAAM,eAAeA,IAAI;AAAA,cACjD,CAAe;AAAA,UACf;AACU,YAAE,KAAK,GAAG;AACV;AAAA,QACV;AAAA,QACQ,KAAK,UAAU;AACb,cAAI,CAAC,EAAE,aAAa;AAClB,cAAE,KAAK2R,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,CAAC,MAAMA,GAAG,CAAC,CAAC,CAAC;AAChD;AAAA,UACZ;AACU,oBAAU,IAAI;AACZ,gBAAI,IAAI;AACR,kBAAM3R,IAAI,EAAE,eAAe;AAC3B;AACE,mBAAKA,GAAG,MAAM;AAAA,UAC5B;AACU,gBAAMK,IAAI,EAAG;AACb,YAAE,KAAKA,GAAG,GAAG,EAAE,MAAM,IAAI,MAAMA,CAAC,CAAC;AACjC;AAAA,QACV;AAAA,QACQ,KAAK,QAAQ;AACX,gBAAM,IAAI,CAACL,MAAM,IAAI,IAAI,EAAE,KAAK,IAAIA,CAAC,IAAI,EAAE,KAAK,IAAIA,CAAC;AACrD,cAAI,CAAC,EAAE,aAAa;AAClB,cAAE,KAAK2R,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,CAAC3R,MAAM2R,GAAG3R,CAAC,CAAC,CAAC;AAChD;AAAA,UACZ;AACU,oBAAUK,IAAI;AACZ,gBAAIL,IAAI;AACR;AACE,cAAAA,IAAI,EAAEA,CAAC,GAAG,MAAM,IAAI,KAAKA,CAAC;AAAA,UACxC;AACU,gBAAM,IAAIK,EAAG;AACb,YAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;AACjC;AAAA,QACV;AAAA,QACQ,KAAK,iBAAiB;AACpB,cAAI,CAAC,EAAE,aAAa;AAClB,cAAE,KAAKsR,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,CAAC,MAAMA,GAAG,CAAC,CAAC,CAAC;AAChD;AAAA,UACZ;AACU,oBAAU,IAAI;AACZ,kBAAM,EAAE,QAAQ,EAAG,IAAGC,GAAG,EAAE,KAAK,GAAG,EAAE,QAAQ5R,MAAM4R,GAAG,CAAC;AACvD,gBAAI3R,IAAID;AACR,kBAAM,IAAI,EAAE,eAAe;AAC3B;AACE,cAAAC,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK,IAAIA,CAAC,CAAC;AAAA,UAC9C;AACU,gBAAMI,IAAI,EAAG;AACb,YAAE,KAAKA,GAAG,GAAG,EAAE,MAAM,IAAI,MAAMA,CAAC,CAAC;AACjC;AAAA,QACV;AAAA,MACA;AAAA,IACK,CAAA,GAAG;AAAA,EACR;AACA;AACA,UAAUsR,GAAG/T,GAAG;AACd;AACE,UAAMA;AACV;AACA,MAAMiU,KAAK,IAAI,OAAO,cAAc,GAAGD,KAAK,CAAChU,MAAM;AACjD,QAAMC,IAAID,EAAE,MAAMiU,EAAE;AACpB,MAAIhU,GAAG;AACL,UAAM,CAAG,EAAAC,GAAG,CAAC,IAAID;AACjB,WAAO,EAAE,QAAQC,GAAG,QAAQ,OAAO,CAAC,EAAG;AAAA,EAC3C;AACE,SAAO,EAAE,QAAQ,IAAI,QAAQ,EAAG;AAClC;AACA,MAAMgU,GAAG;AAAA,EACP,YAAYjU,GAAG;AACb,SAAK,OAAOyD,EAAE,OAAQ,GAAE,KAAK,eAAe,GAAG,KAAK,cAAc,IAAI,KAAK,QAAQzD,GAAG,KAAK,QAAQ,CAAA,GAAI,KAAK,OAAO,KAAK,aAAaA,CAAC;AAAA,EAC1I;AAAA,EACE,aAAaA,GAAG;AACd,UAAMC,IAAID,aAAa,OAAO,SAAS,OAAOA;AAC9C,WAAOC,MAAM,YAAYA,MAAM,SAASA,IAAIA,MAAM,YAAYD,EAAE,CAAC,MAAM,MAAM,YAAYC,MAAM,YAAYD,EAAE,MAAMgU,EAAE,IAAI,kBAAkB;AAAA,EAC/I;AAAA,EACE,IAAI,OAAO;AACT,WAAO,KAAK,MAAM,WAAW,IAAI,KAAK,QAAQ,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC;AAAA,EAClF;AAAA,EACE,IAAIhU,GAAG;AACL,UAAMC,IAAI,KAAK,aAAaD,CAAC;AAC7B,QAAI,KAAK,SAASC,KAAKA,MAAM,WAAWA,MAAM;AAC5C,aAAO,IAAIgU,GAAGjU,CAAC;AACjB,QAAI,KAAK,MAAM,WAAW;AACxB,cAAQC,GAAC;AAAA,QACP,KAAK,QAAQ;AACX,eAAK,OAAOwD,EAAE,UAAUzD,GAAG,KAAK,KAAK;AACrC;AAAA,QACV;AAAA,QACQ,KAAK,UAAU;AACb,eAAK,eAAeA,IAAI,KAAK;AAC7B;AAAA,QACV;AAAA,QACQ,KAAK,iBAAiB;AACpB,gBAAM,EAAE,QAAQ,GAAG,QAAQE,EAAC,IAAK6T,GAAG,KAAK,KAAK,GAAG,EAAE,QAAQ,GAAG,QAAQ,EAAG,IAAGA,GAAG/T,CAAC;AAChF,gBAAM,MAAM,KAAK,eAAe,IAAIE;AACpC;AAAA,QACV;AAAA,MACA;AACI,SAAK,MAAM,KAAKF,CAAC;AAAA,EACrB;AAAA,EACE,YAAY;AACV,QAAI,KAAK,MAAM,WAAW;AACxB,aAAO,CAAE;AACX,UAAMA,IAAI,CAAE;AACZ,QAAIC,IAAI;AACR,YAAQ,KAAK,MAAI;AAAA,MACf,KAAK,QAAQ;AACX,cAAM,IAAI,KAAK,MAAM,MAAM,CAACC,GAAG,MAAM,MAAM,KAAK6I,EAAE7I,CAAC,EAAE,OAAO,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7F,eAAO,KAAK,cAAc,GAAG,CAAE;AAAA,MACvC;AAAA,MACM,KAAK,UAAU;AACb,cAAM,IAAI,KAAK,MAAM,MAAM,CAACA,GAAG,MAAM,MAAM,KAAKA,MAAM,KAAK,QAAQ,KAAK,gBAAgB,IAAI,EAAE;AAC9F,eAAO,KAAK,cAAc,GAAG,CAAE;AAAA,MACvC;AAAA,MACM,KAAK,iBAAiB;AACpB,cAAM,EAAE,QAAQ,EAAC,IAAK6T,GAAG,KAAK,KAAK;AACnC,iBAAS7T,IAAI,GAAGA,IAAID,EAAE,MAAM,QAAQC,KAAK;AACvC,gBAAM,IAAID,EAAE,MAAMC,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,MAAM6T,GAAG,CAAC;AACrD,cAAI,MAAM,GAAG;AACX,kBAAM,IAAI,KAAK,MAAM,OAAO7T,GAAG,KAAK,MAAM,MAAM;AAChD,YAAAD,IAAI,IAAIgU,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQhU,EAAE,IAAI,KAAKA,CAAC,CAAC,GAAGD,EAAE,KAAKC,GAAG,GAAGA,EAAE,WAAW;AACnF;AAAA,UACZ,OAAiB;AACL,kBAAM,EAAE,QAAQ,EAAC,IAAK8T,GAAG9T,EAAE,KAAK;AAChC,kBAAM,KAAKC,IAAI,KAAKD,EAAE,iBAAiBA,EAAE,cAAc;AAAA,UACnE;AAAA,QACA;AACQ;AAAA,MACR;AAAA,IACA;AACI,WAAOD;AAAA,EACX;AACA;AACA,SAAS6T,GAAG9T,GAAG;AACb,MAAI8C,GAAG3C;AACP,MAAIF,IAAI,IAAIiU,IAAIpR,IAAI9C,EAAE,CAAC,MAAM,OAAO,SAAS8C,EAAE,KAAK;AACpD,QAAM5C,IAAI,CAACD,CAAC;AACZ,WAAS,IAAI,GAAG,IAAID,EAAE,QAAQ,KAAK;AACjC,UAAM,KAAKG,IAAIH,EAAE,CAAC,MAAM,OAAO,SAASG,EAAE,OAAO,IAAIF,EAAE,IAAI,CAAC;AAC5D,UAAMC,EAAE,KAAK,CAAC,GAAGD,IAAI;AAAA,EACzB;AACE,WAAS,IAAIC,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK;AACtC,UAAM,IAAIA,EAAE,CAAC;AACb,IAAAA,EAAE,OAAO,IAAI,GAAG,GAAG,GAAG,EAAE,WAAW;AAAA,EACvC;AACE,SAAOA;AACT;ACnrJK,MAAC4J,KAAI,CAAC5J,MAAM;AACf,EAAAA,KAAK,QAAQA,EAAE,MAAM,EAAE,eAAe,IAAI;AAC5C,GAAG8I,KAAI,MAAM,OAAO,YAAY,OAAO,iCAAiC,KAAK,UAAU,SAAS,GAAGmC,KAAI,CAACjL,MAAM;AAC5G,MAAI,CAAC8I,GAAG;AACN,WAAO,MAAM;AAAA,IACZ;AACH,QAAMhG,IAAI,CAAC/C,MAAM;AACf,UAAM,EAAE,WAAW8C,GAAG,cAAc,GAAG,cAAcM,GAAG,YAAYlB,GAAG,aAAaE,GAAG,aAAaD,MAAMlC,GAAGsC,IAAIvC,EAAE,SAAS,KAAK8C,KAAK,GAAGW,IAAIzD,EAAE,SAAS,KAAK8C,IAAIM,KAAK,GAAGD,IAAInD,EAAE,SAAS,KAAKkC,KAAK,GAAG0B,IAAI5D,EAAE,SAAS,KAAKkC,IAAIC,KAAKC;AAClO,KAACG,KAAKkB,KAAKN,KAAKS,OAAO5D,EAAE,eAAc,GAAI,OAAO,SAAS,EAAE,KAAKA,EAAE,QAAQ,MAAMA,EAAE,QAAQ,UAAU,OAAM,CAAE;AAAA,EAC/G;AACD,MAAIE,IAAI,GAAG+B,IAAI;AACf,QAAM,IAAI,CAACjC,MAAM;AACf,IAAAA,EAAE,QAAQ,WAAW,MAAME,IAAIF,EAAE,QAAQ,CAAC,EAAE,SAASiC,IAAIjC,EAAE,QAAQ,CAAC,EAAE;AAAA,EAC1E,GAAK6C,IAAI,CAAC7C,MAAM;AACZ,QAAIA,EAAE,QAAQ,WAAW;AACvB;AACF,UAAM,EAAE,WAAW8C,GAAG,cAAc,GAAG,cAAcM,GAAG,YAAYlB,GAAG,aAAaE,GAAG,aAAaD,EAAC,IAAKlC,GAAGsC,IAAIvC,EAAE,QAAQ,CAAC,EAAE,UAAUE,GAAGuD,IAAIzD,EAAE,QAAQ,CAAC,EAAE,UAAUiC,GAAGkB,IAAIM,IAAI,KAAKX,KAAK,GAAGc,IAAIH,IAAI,KAAKX,IAAIM,KAAK,GAAG,IAAIb,IAAI,KAAKL,KAAK,GAAGkJ,IAAI7I,IAAI,KAAKL,IAAIC,KAAKC;AAClQ,KAACe,KAAKS,KAAK,KAAKwH,MAAMpL,EAAE,eAAgB;AAAA,EACzC;AACD,SAAOC,EAAE,iBAAiB,SAAS8C,GAAG,EAAE,SAAS,IAAI,GAAG9C,EAAE,iBAAiB,cAAc,GAAG,EAAE,SAAS,GAAE,CAAE,GAAGA,EAAE,iBAAiB,aAAa4C,GAAG,EAAE,SAAS,GAAE,CAAE,GAAG,MAAM;AACvK,IAAA5C,EAAE,oBAAoB,SAAS8C,CAAC,GAAG9C,EAAE,oBAAoB,cAAc,CAAC,GAAGA,EAAE,oBAAoB,aAAa4C,CAAC;AAAA,EAChH;AACH,GAAGyJ,KAAI,CAACrM,GAAG8C,MAAM;AACf,MAAId;AACJ,EAAA4H,GAAE5J,CAAC,GAAG,GAAGgC,IAAI,SAAS,gBAAgB,QAAQA,EAAE,KAAK,UAAU,cAAc,IAAIc,CAAC,MAAM9C,EAAE,aAAa8C,GAAG9C,EAAE,gBAAgBA,EAAE,cAAc,KAAK;AACnJ,GAAG8L,KAAI,CAAC,EAAE,OAAO9L,GAAG,KAAK8C,GAAG,QAAQ7C,IAAI,SAAS;AAC/C,MAAI4C;AACJ,MAAI,GAAGA,IAAI7C,KAAK,OAAO,SAASA,EAAE,UAAU,QAAQ6C,EAAE,WAAW,GAAG,MAAM7C,EAAE,mBAAmB;AAC7F,WAAO;AACT,QAAMgC,IAAI,IAAI+L,GAAE/N,EAAE,MAAM,UAAU,CAAC,CAAC;AACpC,EAAAgC,EAAE,SAAU;AACZ,QAAM,CAAClC,GAAG8C,CAAC,IAAIZ,EAAE,4BAA4BhC,EAAE,iBAAiB,CAAC;AACjE,MAAID,IAAIiC,EAAE,OAAOlC,CAAC;AAClB,OAAKC,KAAK,OAAO,SAASA,EAAE,UAAU,YAAYA,IAAIiC,EAAE,OAAOlC,IAAI,CAAC,IAAIC,KAAK,QAAQA,EAAE,SAAS,UAAUA,EAAE,SAAS,WAAWA,EAAE,SAAS,oBAAoBA,EAAE,SAAS;AACxK,IAAAE,KAAKoM,GAAErM,GAAG8C,CAAC;AAAA,WACJ/C,EAAE,SAAS,SAASA,EAAE,SAAS;AACtC,QAAI,CAACE,GAAG;AACN,YAAM,EAAE,WAAW,GAAG,WAAWkD,MAAMmI,GAAExI,CAAC,GAAG,EAAE,WAAWb,EAAC,IAAKqJ,GAAEvL,EAAE,MAAM,GAAGoC,IAAIF,EAAE,IAAI,CAACuB,MAAM0B,EAAE1B,CAAC,CAAC;AAClG,MAAAvB,EAAE,WAAW,KAAKkB,EAAE,WAAW,KAAKA,EAAE,KAAKA,EAAE,CAAC,CAAC,GAAGL,IAAI6I,GAAE,CAAC,IAAIxI,EAAE,IAAI,CAACK,GAAGN,MAAM;AAC3E,YAAIS,GAAG;AACP,eAAOM,GAAET,GAAG,CAAC,GAAGG,IAAIxB,EAAEe,CAAC,MAAM,QAAQS,EAAE,OAAO,CAAC,GAAG,IAAIxB,EAAEe,CAAC,MAAM,QAAQ,EAAE,KAAK;AAAA,MACtF,CAAO,EAAE,KAAK,GAAG;AACX,YAAM,CAAChB,GAAGI,CAAC,IAAIN,EAAE,sBAAsBlC,IAAI,GAAG,CAAC;AAC/C,MAAAE,EAAE,kBAAkBkC,GAAGI,CAAC,GAAG+J,GAAErM,GAAG8C,CAAC;AAAA,IACvC;AAAA;AAEI,WAAO;AACT,SAAO;AACT,GAAGgL,KAAI,CAAC9N,MAAM8L,GAAE,EAAE,OAAO9L,GAAG,KAAK,IAAI,QAAQ,GAAE,CAAE,GAAGQ,KAAI,CAACR,MAAM;AAC7D,EAAAA,KAAK,SAASA,EAAE,MAAM,QAAQ,GAAGA,EAAE,WAAW,MAAMA,EAAE,MAAM,SAAS,GAAGA,EAAE,YAAY;AACxF,GAAGyL,KAAI,CAACzL,GAAG8C,GAAG7C,MAAM;AAClB,MAAIF,GAAG8C;AACP,QAAMb,IAAIhC,KAAK,OAAO,SAASA,EAAE;AACjC,MAAIgC,KAAK;AACP;AACF,QAAMlC,MAAMC,IAAI+C,EAAE,QAAQ,EAAE,GAAG7C,EAAE,GAAG,GAAG,KAAK,EAAE,YAAY,SAAQ,CAAE,MAAM,OAAO,SAASF,EAAE,UAAU0T,GAAG7Q,MAAMC,IAAIC,EAAE,QAAQ7C,GAAG,EAAE,YAAY,SAAQ,CAAE,MAAM,OAAO,SAAS4C,EAAE,WAAW2I;AAC3L,EAAAxJ,EAAE,QAAQ,GAAGlC,CAAC,MAAMkC,EAAE,SAAS,GAAGY,CAAC;AACrC,GAAGmJ,KAAI,CAAC/L,MAAM,OAAO,SAAS,OAAOA,KAAK,OAAO,KAAK,SAAS,kBAAkBA,GAAGiM,KAAI,CAACjM,GAAG8C,MAAM;AAChG,QAAM7C,IAAID,EAAE;AACZ,MAAI,CAAC8C,EAAE,WAAW,GAAG;AACnB,WAAO;AACT,QAAM,EAAE,gBAAgBhD,GAAG,cAAc8C,EAAG,IAAG3C;AAC/C,MAAID,EAAE,QAAQ,KAAK;AACjB,QAAIF,MAAM8C,GAAG;AACX,MAAA5C,EAAE,eAAgB;AAClB,YAAMmD,IAAIL,EAAE,MAAMhD,GAAG8C,CAAC;AACtB,aAAOyJ,GAAEpM,GAAG,IAAIkD,CAAC,GAAG,GAAG,sBAAsB,MAAM;AACjD,QAAAlD,EAAE,kBAAkBH,IAAI,GAAG8C,IAAI,CAAC;AAAA,MACjC,CAAA,GAAG;AAAA,IACV;AACI,UAAM7C,IAAI+C,EAAEhD,CAAC,GAAG+C,IAAIC,EAAE,MAAM,GAAGhD,CAAC;AAChC,QAAIuC,IAAI;AACR,aAASc,IAAI,GAAGA,IAAIN,EAAE,QAAQM;AAC5B,MAAAN,EAAEM,CAAC,MAAM,QAAQA,IAAI,IAAIN,EAAE,UAAUA,EAAEM,IAAI,CAAC,MAAM,MAAMA,MAAMd;AAChE,WAAOA,IAAI,MAAM,KAAKtC,MAAM,OAAOC,EAAE,eAAgB,GAAEC,EAAE,kBAAkBH,IAAI,GAAGA,IAAI,CAAC,GAAG,OAAOE,EAAE,kBAAkBqM,GAAEpM,GAAG,IAAI,GAAG,sBAAsB,MAAM;AAC3J,MAAAA,EAAE,kBAAkBH,IAAI,GAAGA,IAAI,CAAC;AAAA,IACjC,CAAA,GAAG;AAAA,EACR;AACE,SAAOE,EAAE,QAAQ,eAAeF,MAAM8C,KAAK9C,IAAI,KAAKgD,EAAEhD,IAAI,CAAC,MAAM,OAAOgD,EAAEhD,CAAC,MAAM,OAAOE,EAAE,eAAgB,GAAEC,EAAE,aAAa,IAAIH,IAAI,GAAGA,IAAI,GAAG,KAAK,GAAGG,EAAE,cAAc,IAAI,MAAM,SAAS,EAAE,SAAS,IAAI,CAAC,GAAG,MAAM;AACnN,GAAG0I,KAAI,CAAC3I,GAAG,EAAE,GAAG8C,GAAG,GAAG7C,QAAQ;AAC5B,MAAIkD;AACJ,QAAMnB,IAAIhC,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAGC,EAAC,GAAI,EAAE,YAAY,SAAQ,CAAE,GAAGH,IAAIE,EAAE,QAAQ,EAAE,GAAG8C,GAAG,GAAG,EAAG,GAAE,EAAE,YAAY,SAAU,CAAA,GAAGF,MAAMO,IAAInD,EAAE,UAAU,EAAE,GAAG,GAAG,GAAGC,EAAC,CAAE,MAAM,OAAO,SAASkD,EAAE,eAAe,GAAGpD,IAAIC,EAAE,aAAa8C,CAAC,GAAGD,KAAKb,KAAK,OAAO,SAASA,EAAE,UAAUyR,GAAGpR,IAAIvC,KAAK,QAAQA,EAAE,WAAW,KAAKA,KAAK,OAAO,SAASA,EAAE,WAAW0L;AAC3U,SAAO;AAAA,IACL,KAAKzL;AAAA,IACL,MAAM6C;AAAA,IACN,QAAQ7C,IAAIsC;AAAA,IACZ,OAAOO,IAAIC;AAAA,IACX,OAAOA;AAAA,IACP,QAAQR;AAAA,EACT;AACH,GAAGmD,KAAI,CAACxF,MAAM;AACZ,QAAM8C,IAAI9C,EAAE,WAAWC,IAAID,EAAE,YAAYgC,IAAIhC,EAAE,cAAc,IAAIA,EAAE,aAAa4C,IAAIE,IAAId,GAAGjC,IAAIE,IAAI;AACnG,SAAO,EAAE,KAAK6C,GAAG,MAAM7C,GAAG,QAAQ2C,GAAG,OAAO7C,GAAG,QAAQiC,GAAG,OAAO,EAAG;AACtE,GAAGkK,KAAI,CAAClM,GAAG8C,MAAM;AACf,MAAIa,GAAGyH;AACP,MAAItI,KAAK;AACP,WAAO;AACT,MAAI7C,IAAI,GAAG+B,IAAI,GAAGlC,IAAIE,EAAE,SAAS4C,IAAI5C,EAAE;AACvC,QAAM,EAAE,KAAKD,GAAG,MAAM8C,GAAG,QAAQR,GAAG,OAAOc,MAAMqC,GAAE1C,CAAC;AACpD,MAAIb,IAAI,GAAGE,IAAI;AACf,WAASgJ,IAAI,GAAGA,KAAKnL,EAAE,SAASmL,KAAK;AACnC,UAAMI,MAAM5H,IAAI3D,EAAE,QAAQ,EAAE,GAAG,GAAGmL,EAAI,GAAI,EAAE,YAAY,UAAU,MAAM,OAAO,SAASxH,EAAE,UAAU8P;AACpG,QAAIxR,KAAKsJ,GAAGvJ,MAAM,KAAKC,IAAIY,MAAMb,IAAI,KAAK,IAAImJ,IAAIS,IAAG,CAAC,IAAI3J,IAAIkB,GAAG;AAC/D,MAAAP,IAAI,KAAK,IAAIuI,IAAIS,IAAG5L,EAAE,OAAO;AAC7B;AAAA,IACN;AAAA,EACA;AACE,WAASmL,IAAI,GAAGA,KAAKnL,EAAE,SAASmL,KAAK;AACnC,QAAInL,EAAE,cAAcmL,CAAC;AACnB;AACF,UAAMI,MAAMH,IAAIpL,EAAE,QAAQ,EAAE,GAAGmL,GAAG,GAAG,EAAC,GAAI,EAAE,YAAY,UAAU,MAAM,OAAO,SAASC,EAAE,WAAWI;AACrG,QAAIrJ,KAAKoJ,GAAGtL,MAAM,KAAKkC,IAAIpC,MAAME,IAAI,KAAK,IAAIkL,IAAIE,IAAG,CAAC,IAAIlJ,IAAIE,GAAG;AAC/D,MAAAvC,IAAI,KAAK,IAAIqL,IAAIE,IAAGrL,EAAE,OAAO;AAC7B;AAAA,IACN;AAAA,EACA;AACE,QAAMkC,IAAIjC,MAAM,IAAI,KAAKmP,GAAEnP,GAAGH,CAAC,EAAE,OAAO,CAACqL,MAAM,CAACnL,EAAE,cAAcmL,CAAC,CAAC,GAAG7I,IAAI8M,GAAEpN,GAAGY,CAAC,GAAGY,IAAIxD,EAAE,YAAY;AAAA,IAClG,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQC;AAAA,IACR,OAAO+B;AAAA,EACX,CAAG,GAAGkB,IAAIlD,EAAE,YAAY;AAAA,IACpB,KAAKF;AAAA,IACL,MAAM8C;AAAA,IACN,QAAQ5C,EAAE;AAAA,IACV,OAAOA,EAAE;AAAA,EACb,CAAG;AACD,SAAO;AAAA,IACL,IAAIkC;AAAA,IACJ,IAAII;AAAA,IACJ,UAAU;AAAA,MACR,KAAKkB,EAAE;AAAA,MACP,MAAMA,EAAE;AAAA,MACR,QAAQN,EAAE;AAAA,MACV,OAAOA,EAAE;AAAA,IACf;AAAA,EACG;AACH,GAAG8I,KAAI,CAAChM,GAAG8C,GAAG7C,GAAG+B,IAAI,WAAW;AAC9B,MAAIc,KAAK;AACP;AACF,QAAM,IAAI0C,GAAE1C,CAAC,GAAGF,IAAI+F,GAAE3I,GAAGC,CAAC,GAAGF,IAAI6C,EAAE,MAAM5C,EAAE,cAAc6C,IAAID,EAAE,OAAO5C,EAAE,aAAa,IAAI4C,EAAE,SAAS,EAAE,SAAS,GAAGO,IAAIP,EAAE,QAAQ,EAAE,QAAQ,GAAGX,IAAIlC,IAAI,EAAE,KAAKoC,IAAIU,IAAI,EAAE,MAAMX,IAAIU,EAAE,SAAS,EAAE,QAAQN,IAAIM,EAAE,QAAQ,EAAE;AACrN,EAAAT,IAAIF,IAAIa,EAAE,SAAS,EAAE,MAAMD,GAAG,KAAK9C,GAAG,UAAUiC,EAAG,CAAA,IAAIE,IAAIY,EAAE,SAAS,EAAE,MAAMD,GAAG,KAAK,GAAG,UAAUb,EAAC,CAAE,IAAIc,EAAE,SAAS,EAAE,MAAMD,GAAG,KAAK,EAAE,KAAK,UAAUb,EAAG,CAAA,IAAIM,IAAIL,IAAIa,EAAE,SAAS,EAAE,MAAMK,GAAG,KAAKpD,GAAG,UAAUiC,EAAG,CAAA,IAAIE,IAAIY,EAAE,SAAS,EAAE,MAAMK,GAAG,KAAK,GAAG,UAAUnB,GAAG,IAAIc,EAAE,SAAS,EAAE,MAAMK,GAAG,KAAK,EAAE,KAAK,UAAUnB,EAAC,CAAE,IAAIC,IAAIa,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK/C,GAAG,UAAUiC,GAAG,IAAIE,KAAKY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,UAAUd,GAAG;AACza,GAAGgC,KAAI,CAAChE,GAAG8C,GAAG7C,GAAG+B,MAAM;AACrB,MAAIY;AACJ,QAAM9C,IAAIqM;AAAAA,IACR;AAAA,IACAnM,EAAE,SAAS;AAAA,IACX,CAACD,MAAM+C,EAAE9C,EAAED,CAAC,EAAE,sBAAqB,CAAE,IAAIE;AAAA,EAE3C;AACA,SAAO,WAAW2C,IAAI5C,EAAEF,CAAC,MAAM,OAAO,SAAS8C,EAAE,QAAQZ,CAAC,MAAM,GAAG;AACrE,GAAGyH,KAAI,CAACzJ,MAAM;AACZ,QAAM;AAAA,IACJ,KAAK8C;AAAA,IACL,MAAM7C;AAAA,IACN,QAAQ+B;AAAA,IACR,OAAO;AAAA,EACR,IAAGhC,EAAE,sBAAqB,GAAI4C,IAAI,MAAM,KAAK5C,EAAE,iBAAiB,aAAa,CAAC,GAAGD,IAAI,MAAM,KAAKC,EAAE,iBAAiB,YAAY,CAAC,GAAG6C,IAAImB,GAAEpB,GAAG,CAACT,MAAMA,EAAE,KAAKW,GAAG,GAAG,GAAG,IAAIkB,GAAEpB,GAAG,CAACT,MAAMA,EAAE,QAAQH,IAAI,GAAG,GAAG,GAAGmB,IAAIa,GAAEjE,GAAG,CAACoC,MAAMA,EAAE,MAAMlC,GAAG,GAAG,GAAGgC,IAAI+B,GAAEjE,GAAG,CAACoC,MAAMA,EAAE,OAAO,IAAI,GAAG,GAAG;AAC/Q,SAAO,EAAE,KAAKU,GAAG,MAAMM,GAAG,QAAQ,GAAG,OAAOlB,EAAG;AACjD,GAAGM,KAAI,GAAG/D,KAAI,CAACwB,GAAG8C,IAAI,KAAK7C,IAAIsC,OAAMvC,EAAE,QAAQ8C,KAAK7C,IAAI,EAAE,GAAGD,EAAE,OAAO,GAAGA,EAAE,QAAQ,QAAQ,QAAS,IAAG,EAAE,GAAG,KAAK,IAAIA,EAAE,MAAMC,CAAC,GAAG,GAAGD,EAAE,QAAQ,QAAQ,OAAM,GAAIoM,KAAI,CAACpM,GAAG8C,GAAG7C,IAAIsC,OAAM;AACnL,QAAMzC,IAAIE,IAAI8C,KAAK,OAAO,aAAa7C;AACvC,SAAOH,IAAI,IAAIE,IAAIF,IAAIE;AACzB,GAAGiN,KAAI,CAACjN,GAAG8C,IAAIP,OAAM;AACnB,MAAIvC,EAAE,MAAM,OAAO,eAAe8C,CAAC,OAAO9C,EAAE,MAAM,QAAQ,QAAQA,EAAE,sBAAqB,EAAG,QAAQ,OAAO,aAAauC,IAAG;AACzH,UAAMP,IAAI,EAAE,MAAM,QAAQ,OAAO,eAAec,CAAC,MAAO;AACxD,WAAO9C,EAAE,MAAM,OAAOgC,EAAE,MAAMhC,EAAE,MAAM,QAAQgC,EAAE,OAAOA;AAAA,EAC3D;AACE,SAAO,EAAE,MAAM,eAAec,CAAC,OAAO,OAAO,OAAQ;AACvD,GAAGsK,KAAK,CAACpN,MAAM;AACb,QAAM8C,IAAI9C,EAAE,yBAAyBC,IAAI,OAAO,YAAY+B,IAAI,OAAO;AACvE,EAAAc,EAAE,QAAQ7C,IAAIsC,OAAMvC,EAAE,MAAM,OAAO,GAAG,WAAWA,EAAE,MAAM,QAAQ,GAAG,KAAK8C,EAAE,SAAS7C,IAAIsC,IAAG,OAAOO,EAAE,SAASd,IAAIO,OAAMvC,EAAE,MAAM,MAAM,GAAG,WAAWA,EAAE,MAAM,OAAO,GAAG,KAAK8C,EAAE,UAAUd,IAAIO,IAAG;AAC/L,GAAG6E,KAAK,CAACpH,MAAMA,MAAM,UAAU,sBAAsB,QAAQ6L,KAAI,YAAY1L,KAAI,gkuCAAgkuC+G,KAAK,MAAM;AAC1puC,MAAI,OAAO,SAAS,OAAO,SAAS,cAAc,sCAAsC2E,EAAC,IAAI;AAC3F;AACF,QAAM/I,IAAI,SAAS,cAAc,OAAO;AACxC,WAAS,KAAK,YAAYA,CAAC,GAAGA,EAAE,aAAa,SAAS,YAAY,GAAGA,EAAE,aAAa,oBAAoB,GAAG+I,EAAC,EAAE,GAAG/I,EAAE,YAAY3C;AACjI,GC1Ka8T,IAAoB,CAACC,MAA+C;AACzE,QAAAC,IAAS,EAAE,GAAGD,EAAW;AAC3B,SAAAC,EAAO,iBAAiB,QAAQA,EAAO,cAAc,SAAS,MAAMA,EAAO,cAAc,SAAS,MACpG,OAAOA,EAAO,eAETA;AACT,GAEaC,KAAiB,CAACC,GAAkBC,MAAiB;AAC1D,QAAA,EAAE,UAAAC,GAAU,eAAAC,EAAA,IAAkBH;AAChC,MAAA,EAAE,GAAAjJ,GAAG,GAAAzH,EAAA,IAAM4Q,GACX,EAAE,QAAQE,GAAI,QAAQC,GAAI,MAAMC,GAAI,MAAMC,EAAA,IAAOJ;AAC/C,QAAA,CAACK,GAASC,CAAO,IAAI,CAACR,EAAM,SAASA,EAAM,OAAO;AACxD,SAAIlJ,IAAIyJ,MACFzJ,IAAAyJ,IAEFlR,IAAImR,MACFnR,IAAAmR,IAEFL,IAAKI,MACFJ,IAAAI,IAEHF,IAAKE,MACFF,IAAAE,IAEHH,IAAKI,MACFJ,IAAAI,IAEHF,IAAKE,MACFF,IAAAE,IAEA;AAAA,IACL,UAAU,EAAE,GAAA1J,GAAG,GAAAzH,EAAE;AAAA,IACjB,eAAe,EAAE,QAAQ8Q,GAAI,QAAQC,GAAI,MAAMC,GAAI,MAAMC,EAAG;AAAA,EAC9D;AACF,GAEMG,KAAc,4BACdC,KAAoB,KACbC,KAAa,CAACC,MAA2B;AACpD,EAAKA,MAGFA,EAAA,UAAU,OAAOH,EAAW,GAE1BG,EAAG,aACLA,EAAA,UAAU,IAAIH,EAAW,GAC5B,WAAW,MAAMG,EAAG,UAAU,OAAOH,EAAW,GAAGC,EAAiB;AACtE,GAEaG,KAAoB,CAC/Bd,GACAC,GACAc,OAC2D;AAAA,EAC3D,GAAGf;AAAA,EACH,eAAe,EAAE,SAASC,EAAM;AAAA,EAChC,UAAU,CAAC,MAAiB;AAC1B,IAAAc,KAAA,QAAAA,EAAW,IACAH,GAAAZ,EAAM,SAAS,OAAO;AAAA,EAAA;AAErC,IAEagB,IAAsB,CAACf,GAAcD,MAAqB;AACrE,QAAM,EAAE,aAAAiB,GAAa,qBAAAC,GAAqB,aAAAC,GAAa,aAAAC,EAAgB,IAAApB;AACnE,MAAA,EAAE,UAAAE,MAAaF;AACnB,MAAI,CAACiB;AACI,WAAA,EAAE,eAAe,GAAG;AAE7B,QAAMI,IAA2B,CAAC;AAE9B,MAAAC;AACJ,MAAIH;AACE,QAAA;AACI,YAAAI,IAAQL,IAAsB,KAAK,KACnCM,IAAQ,IAAI,OAAOP,GAAaM,CAAK;AAC3C,MAAAD,IAAU,CAACtJ,MAAcwJ,EAAM,KAAKxJ,CAAC;AAAA,YAC3B;AAEV,YAAMH,IAAIqJ,IAAsBD,IAAcA,EAAY,YAAY;AACtE,MAAAK,IAAU,CAACtJ,OACCkJ,IAAsBlJ,IAAIA,EAAE,YAAY,GACzC,QAAQH,CAAC,MAAM;AAAA,IAC1B;AAAA,OAEG;AACL,UAAMA,IAAIqJ,IAAsBD,IAAcA,EAAY,YAAY;AACtE,IAAAK,IAAU,CAACtJ,OACCkJ,IAAsBlJ,IAAIA,EAAE,YAAY,GACzC,QAAQH,CAAC,MAAM;AAAA,EAC1B;AAIE,MAAA4J,IAAS,GACXC,IAAOzB,EAAM,QACX0B,IAAS,GACXC,IAAO3B,EAAM;AACf,EAAImB,MACFK,IAASL,EAAY,QACrBM,IAAON,EAAY,MACnBO,IAASP,EAAY,QACrBQ,IAAOR,EAAY;AAGrB,WAASrK,IAAI0K,GAAQ1K,KAAK2K,GAAM3K;AAC9B,aAASzH,IAAIqS,GAAQrS,KAAKsS,GAAMtS,KAAK;AAC7B,YAAA0I,IAAIiI,EAAM,mBAAmB,EAAE,OAAO,EAAE,GAAAlJ,GAAG,GAAAzH,EAAE,GAAG;AAClD,MAAAgS,EAAQtJ,CAAC,KACGqJ,EAAA,KAAK,GAAGQ,EAAIvS,CAAC,CAAC,GAAGwS,GAAI/K,CAAC,CAAC,EAAE;AAAA,IACzC;AAGJ,QAAMgL,IAAoBV,EAAc,WAAWrB,EAAM,cAAc,SAASA,EAAM,oBAAoB;AACtG,MAAAqB,EAAc,SAAS,GAAG;AACtB,UAAAW,IAAUX,EAAcU,CAAiB;AAC/C,IAAA7B,IAAW+B,EAAID,CAAO;AAAA,EAAA;AAExB,SAAO,EAAE,eAAAX,GAAe,aAAAJ,GAAa,mBAAAc,GAAmB,UAAA7B,EAAS;AACnE,GAEagC,KAAkB,CAAClC,MAAqB;AACnD,QAAM,EAAE,SAAAmC,GAAS,eAAeC,EAAa,IAAApC,GACvCC,IAAQmC,EAAS;AAInB,SAHA,CAACnC,KAGDkC,MAAYlC,EAAM,SAAS,iBACtB,KAEF,CAAC,CAACA,EAAM,SAAS;AAC1B,GClHMoC,KAAsB,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,GAAG,GAEnEC,KAA4C,CAAC,GAMtCC,KAAU,CAAIvC,GAAkBwC,MAAkD;;AACvF,QAAAC,IAAiCH,GAAQE,EAAO,IAAI;AAC1D,MAAIC,KAAO;AACF,WAAAzC;AASH,QAAA0C,KAAWC,IAAA3C,EAAM,cAAc,YAApB,gBAAA2C,EAA6B;AAC9C,OAAIC,IAAAF,KAAA,gBAAAA,EAAU,qBAAV,QAAAE,EAA4B,IAAIJ,IAAS;AAC3C,UAAMK,IAASH,EAAS,iBAAiB,IAAIF,CAAM;AAC1C,WAAAE,EAAA,iBAAiB,OAAOF,CAAM,GAChCK;AAAA,EAAA;AAGH,QAAA,EAAE,UAAA9B,GAAU,GAAG+B,MAAaL,EAAI,OAAOzC,GAAOwC,EAAO,KAAK;AAChE,EAAAzB,KAAA,QAAAA,EAAW+B;AACX,QAAMhD,IAAS,EAAE,GAAGE,GAAO,GAAG8C,EAAS;AAEvC,SAAIJ,MACGA,EAAS,qBACHA,EAAA,uCAAuB,IAAI,IAE7BA,EAAA,iBAAiB,IAAIF,GAAQ1C,CAAM,GAC5C,eAAe,MAAM;;AACV,KAAA6C,IAAAD,EAAA,qBAAA,QAAAC,EAAkB,OAAOH;AAAA,EAAM,CACzC,IAGI1C;AACT,GAEaiD,KAAN,MAAMA,GAAc;AAAA,EAApB,cAAA;AAEL,SAAQ,WAAmB,GAE3B,KAAO,WAAW;AAAA,EAAA;AAAA,EAEX,OAAO/C,GAAkBgD,GAA+B;AACtD,WAAAhD;AAAA,EAAA;AAAA,EAEF,KAAKgD,GAAwC;AAC3C,WAAA;AAAA,MACL,MAAM,KAAK;AAAA,MACX,OAAOA;AAAA,IACT;AAAA,EAAA;AAAA,EAEK,OAAO;AACZ,gBAAK,WAAWD,GAAW,QACnBT,GAAA,KAAK,QAAQ,IAAI,MAClB,KAAK,KAAK,KAAK,IAAI;AAAA,EAAA;AAE9B;AAnBES,GAAO,OAAO;AADT,IAAME,IAANF;AAuBM,MAAAG,KAAmB,CAACC,MAA0B;;AAClD,WAAAR,IAAAL,GAAQa,CAAI,MAAZ,gBAAAR,EAAe,cAAa;AACrC;AAEA,MAAMS,WAA2DH,EAAc;AAAA,EAC7E,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM/B,IAAc+B,GACd,EAAE,eAAeZ,EAAA,IAAapC;AAChC,WAAAoC,EAAS,WAAW,OACfpC,IAEF;AAAA,MACL,GAAGA;AAAA,MACH,GAAGgB,EAAoBoB,EAAS,SAAS,EAAE,GAAGpC,GAAO,aAAAiB,GAAa;AAAA,MAClE,aAAAA;AAAA,IACF;AAAA,EAAA;AAEJ;AACO,MAAMoC,KAAiB,IAAID,GAAqB,EAAE,KAAK;AAE9D,MAAME,WAAwDL,EAAc;AAAA,EAC1E,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM9B,IAAsB8B,GACtB,EAAE,eAAeZ,EAAA,IAAapC;AAChC,WAAAoC,EAAS,WAAW,OACfpC,IAEF;AAAA,MACL,GAAGA;AAAA,MACH,GAAGgB,EAAoBoB,EAAS,SAAS,EAAE,GAAGpC,GAAO,qBAAAkB,GAAqB;AAAA,MAC1E,qBAAAA;AAAA,IACF;AAAA,EAAA;AAEJ;AACO,MAAMqC,KAAyB,IAAID,GAA6B,EAAE,KAAK;AAE9E,MAAME,WAAgDP,EAAc;AAAA,EAClE,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM7B,IAAc6B,GACd,EAAE,eAAeZ,EAAA,IAAapC;AAChC,WAAAoC,EAAS,WAAW,OACfpC,IAEF;AAAA,MACL,GAAGA;AAAA,MACH,GAAGgB,EAAoBoB,EAAS,SAAS,EAAE,GAAGpC,GAAO,aAAAmB,GAAa;AAAA,MAClE,aAAAA;AAAA,IACF;AAAA,EAAA;AAEJ;AACO,MAAMsC,KAAiB,IAAID,GAAqB,EAAE,KAAK;AAE9D,MAAME,WAA6DT,EAAc;AAAA,EAC/E,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM5B,IAAc4B,GACd,EAAE,eAAeZ,EAAA,IAAapC;AAChC,WAAAoC,EAAS,WAAW,OACfpC,IAEF;AAAA,MACL,GAAGA;AAAA,MACH,GAAGgB,EAAoBoB,EAAS,SAAS,EAAE,GAAGpC,GAAO,aAAAoB,GAAa;AAAA,MAClE,aAAAA;AAAA,IACF;AAAA,EAAA;AAEJ;AACO,MAAMuC,KAAiB,IAAID,GAAqB,EAAE,KAAK;AAE9D,MAAME,WAAkDX,EAAc;AAAA,EACpE,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,gBAAgBgD;AAAA,IAClB;AAAA,EAAA;AAEJ;AACO,MAAMa,KAAoB,IAAID,GAAwB,EAAE,KAAK;AAEpE,MAAME,WAAgEb,EAAc;AAAA,EAClF,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,oBAAoBgD;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMe,KAAwB,IAAID,GAA4B,EAAE,KAAK;AAE5E,MAAME,WAAkDf,EAAc;AAAA,EACpE,OAAOjD,GAAkBgD,GAA+B;AAClD,QAAA;AACF,YAAMiB,IAAW,IAAIC,GAASlE,GAAOgD,CAAO,GACtC/C,IAAQgE,EAAS,SACjB9D,IAAgBgE,GAAWF,EAAS,SAAS;AAY5C,aAVQ;AAAA,QACb,GAAGjE;AAAA,QACH,eAAe,EAAE,SAASC,EAAM;AAAA,QAChC,GAAGe,EAAoBf,GAAOD,CAAK;AAAA,QACnC,GAAGD,GAAeC,GAAOC,CAAK;AAAA,QAC9B,eAAAE;AAAA,QACA,qBAAqB;AAAA,QACrB,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,MACtB;AAAA,aAEOxU,GAAG;AAKF,qBAAA,MAAM,gCAAgCA,CAAC,GACxC,EAAE,GAAGqU,GAAO,oBAAoB,KAAK;AAAA,IAAA;AAAA,EAC9C;AAEJ;AACO,MAAMoE,KAAiB,IAAIJ,GAAqB,EAAE,KAAK;AAE9D,MAAMK,WAA6DpB,EAAc;AAAA,EAC/E,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,qBAAqBgD;AAAA,IACvB;AAAA,EAAA;AAEJ;AACO,MAAMsB,KAAyB,IAAID,GAA6B,EAAE,KAAK;AAE9E,MAAME,WAAuEtB,EAAc;AAAA,EACzF,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,mBAAmBgD;AAAA,IACrB;AAAA,EAAA;AAEJ;AACO,MAAMwB,KAAuB,IAAID,GAA2B,EAAE,KAAK;AAE1E,MAAME,WAAuExB,EAAc;AAAA,EACzF,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,mBAAmBgD;AAAA,IACrB;AAAA,EAAA;AAEJ;AACO,MAAM0B,KAAuB,IAAID,GAA2B,EAAE,KAAK;AAE1E,MAAME,WAA6C1B,EAAc;AAAA,EAC/D,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,UAAUgD;AAAA,IACZ;AAAA,EAAA;AAEJ;AACO,MAAM4B,KAAc,IAAID,GAAkB,EAAE,KAAK;AAExD,MAAME,WAA2C5B,EAAc;AAAA,EAC7D,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,eAAe,EAAE,SAASgD,EAAQ;AAAA,MAClC,GAAGhC,EAAoBgC,GAAShD,CAAK;AAAA,MACrC,GAAGD,GAAeC,GAAOgD,CAAO;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM8B,KAAc,IAAID,GAAkB,EAAE,KAAK;AAExD,MAAME,WAAgD9B,EAAc;AAAA,EAClE,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,YAAYgD;AAAA,IACd;AAAA,EAAA;AAEJ;AACO,MAAMgC,KAAgB,IAAID,GAAoB,EAAE,KAAK;AAE5D,MAAME,WAAuChC,EAAc;AAAA,EACzD,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,UAAUgD;AAAA,IACZ;AAAA,EAAA;AAEJ;AACO,MAAMkC,KAAc,IAAID,GAAY,EAAE,KAAK;AAElD,MAAME,WAAmClC,EAAc;AAAA,EACrD,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,gBAAgB;AAAA,IAClB;AAAA,EAAA;AAEJ;AACO,MAAMoF,KAAO,IAAID,GAAW,EAAE,KAAK;AAE1C,MAAME,WAAuCpC,EAAc;AAAA,EACzD,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAapC,GAC9BC,IAAQmC,EAAS;AACvB,WAAKnC,IAGE;AAAA,MACL,GAAGD;AAAA,MACH,UAAU,CAAC,EAAE,eAAeoC,QAAe;AACzC,QAAAnC,EAAM,SAAS,SAAS;AAAA,UACtB,gBAAgBA,EAAM;AAAA,UACtB,aAAa+C;AAAA,UACb,SAAS;AAAA,QAAA,CACV;AAAA,MAAA;AAAA,IAEL,IAXShD;AAAA,EAWT;AAEJ;AACO,MAAMsF,KAAO,IAAID,GAAW,EAAE,KAAK;AAE1C,MAAME,WAAsCtC,EAAc;AAAA,EAA1D,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAapC,GAC9BC,IAAQmC,EAAS;AACvB,WAAKnC,IAGE;AAAA,MACL,GAAGD;AAAA,MACH,UAAU,CAAC,EAAE,eAAeoC,QAAe;AACzC,QAAAnC,EAAM,SAAS,SAAS;AAAA,UACtB,gBAAgBA,EAAM;AAAA,UACtB,aAAa+C;AAAA,UACb,SAAS;AAAA,QAAA,CACV;AAAA,MAAA;AAAA,IAEL,IAXShD;AAAA,EAWT;AAEJ;AACO,MAAMwF,KAAM,IAAID,GAAU,EAAE,KAAK;AAExC,MAAME,WAA+ExC,EAAc;AAAA,EAAnG,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM,EAAE,UAAA9C,GAAU,eAAAC,GAAe,eAAeuF,EAAgB,IAAA1F,GAC1D2F,IAAWD,EAAY;AAC7B,QAAI,CAACC;AACI,aAAA3F;AAEH,UAAA,EAAE,UAAA0C,MAAaiD,GACf,EAAE,gBAAAC,GAAgB,aAAAC,GAAa,SAAAC,EAAY,IAAApD,GAC3CqD,IAAWJ,EAAS,kBAAkBC,CAAc;AAEtD,QAAAI,IAAgBC,GAAW9F,CAAa;AACtC,UAAA+F,IAAcD,GAAWJ,CAAW,GACpC,EAAE,QAAAM,GAAQ,WAAAC,EAAA,IAAcpD;AAE9B,QAAI8C,GAAS;AACX,UAAI,CAACC;AACI,eAAA/F;AAET,YAAMqG,IAAMH,GACN,EAAE,MAAMI,GAAI,MAAMC,EAAG,IAAIC,GAASN,CAAW,GAC7CO,IACJT,EAAc,QAAQ,KAClB;AAAA,QACE,KAAKA,EAAc;AAAA,QACnB,MAAMA,EAAc;AAAA,QACpB,QAAQA,EAAc,MAAMM;AAAA,QAC5B,OAAON,EAAc,OAAOO;AAAA,MAAA,IAE9B;AAAA,QACE,KAAKrG,EAAS;AAAA,QACd,MAAMA,EAAS;AAAA,QACf,QAAQA,EAAS,IAAIoG;AAAA,QACrB,OAAOpG,EAAS,IAAIqG;AAAA,MACtB,GAEAG,IAAoBC,GAAaxC,GAAWsC,CAAG,CAAC,GAChDG,IAAWjB,EAAS,KAAK;AAAA,QAC7B,UAAAI;AAAA,QACA,KAAAM;AAAA,QACA,KAAAI;AAAA,QACA,UAAU;AAAA,QACV,gBAAgB7G,EAAkB;AAAA,UAChC,SAASmG,EAAS;AAAA,UAClB,eAAeW;AAAAA,UACf,UAAAxG;AAAA,UACA,UAAU,EAAE,gBAAgB6F,EAAS,IAAI,aAAAF,GAAa,SAAS,GAAK;AAAA,QAAA,CACrE;AAAA,QACD,gBAAgBjG,EAAkB;AAAA,UAChC,SAASmG,EAAS;AAAA,UAClB,UAAA7F;AAAA,UACA,UAAU,EAAE,gBAAgB6F,EAAS,IAAI,aAAa1D,GAAU;AAAA,QACjE,CAAA;AAAA,MAAA,CACF;AAEM,aAAA;AAAA,QACL,GAAGrC;AAAA,QACH,GAAGgB,EAAoB4F,GAAU5G,CAAK;AAAA,QACtC,eAAe,EAAE,SAAS4G,EAAS;AAAA,QACnC,eAAeF;AAAAA,QACf,WAAWE,EAAS,mBAAmB,EAAE,OAAO1G,GAAU,YAAY,OAAO;AAAA,QAC7E,UAAU,CAAC,EAAE,eAAekC,QAAe;AACzC,UAAAM,EAAS,SAAS;AAAA,YAChB,SAAS;AAAA,YACT,aAAaL;AAAA,UAAA,CACd;AAAA,QAAA;AAAA,MAEL;AAAA,IAAA;AAGE,QAAAuE,GACA,EAAE,GAAG,EAAA,IAAM1G;AAEX,QAAAgG,EAAY,QAAQ,IAAI;AACpB,YAAA,EAAE,MAAMW,GAAQ,MAAMC,EAAA,IAAUC,GAAY,EAAE,QAAAZ,GAAQ,MAAM,IAAI;AACtD,MAAAH,IAAA;AAAA,QACd,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,IAAIa;AAAA,QACZ,OAAO,IAAIC;AAAA,MACb;AACA,YAAMJ,IAAoBC,GAAaxC,GAAW6B,CAAa,CAAC;AAChE,MAAAY,IAAWjB,EAAS,mBAAmB;AAAA,QACrC,OAAO,EAAE,GAAG,EAAE;AAAA,QACd,QAAAQ;AAAA,QACA,WAAAC;AAAA,QACA,gBAAgBxG,EAAkB;AAAA,UAChC,SAAS+F,EAAS;AAAA,UAClB,eAAee;AAAAA,UACf,UAAAxG;AAAA,QAAA,CACD;AAAA,QACD,gBAAgBN,EAAkB;AAAA,UAChC,SAAS+F,EAAS;AAAA,UAClB,eAAee;AAAAA,UACf,UAAAxG;AAAA,QACD,CAAA;AAAA,MAAA,CACF;AAAA,IAAA,OACI;AACL,UAAI6F,KAAY;AACP,eAAA/F;AAET,UAAI,EAAE,MAAMsG,GAAI,MAAMC,EAAG,IAAIC,GAASN,CAAW;AAC7C,UAAAF,EAAc,QAAQ,IAAI;AAC5B,YAAIA,EAAc,KAClB,IAAIA,EAAc;AACZ,cAAAgB,IAAaC,GAAcjB,GAAeE,CAAW;AAC3D,QAAAI,IAAKU,EAAW,MAChBT,IAAKS,EAAW;AAAA,MAAA;AAEF,MAAAhB,IAAA,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,IAAIM,GAAI,OAAO,IAAIC,EAAG,GACjEK,IAAWjB,EAAS,KAAK;AAAA,QACvB,UAAAI;AAAA,QACA,KAAKG;AAAA,QACL,KAAKF;AAAA,QACL,WAAAI;AAAA,QACA,UAAU;AAAA,QACV,gBAAgBxG,EAAkB;AAAA,UAChC,SAASmG,EAAS;AAAA,UAClB,UAAU,EAAE,aAAAF,EAAY;AAAA,UACxB,UAAA3F;AAAA,UACA,eAAAC;AAAA,QAAA,CACD;AAAA,QACD,gBAAgBP,EAAkB;AAAA,UAChC,SAASmG,EAAS;AAAA,UAClB,UAAU,EAAE,gBAAgBA,EAAS,IAAI,aAAa1D,GAAU;AAAA,UAChE,UAAAnC;AAAA,UACA,eAAeiE,GAAW6B,CAAa;AAAA,QACxC,CAAA;AAAA,MAAA,CACF;AAAA,IAAA;AAGH,UAAMU,IAAoBC,GAAaxC,GAAW6B,CAAa,CAAC;AAChE,WAAAU,EAAkB,OAAO,KAAK,IAAIA,EAAkB,MAAME,EAAS,OAAO,GAC1EF,EAAkB,OAAO,KAAK,IAAIA,EAAkB,MAAME,EAAS,OAAO,GACnE;AAAA,MACL,GAAG5G;AAAA,MACH,eAAe,EAAE,SAAS4G,EAAS;AAAA,MACnC,eAAeF;AAAA,MACf,WAAWE,EAAS,mBAAmB,EAAE,OAAO1G,GAAU,YAAY,OAAO;AAAA,MAC7E,GAAGc,EAAoB4F,GAAU5G,CAAK;AAAA,MACtC,UAAU,CAAC,EAAE,eAAeoC,QAAe;AACzC,QAAAM,EAAS,SAAS;AAAA,UAChB,aAAaL;AAAA,QAAA,CACd;AAAA,MAAA;AAAA,IAEL;AAAA,EAAA;AAEJ;AACO,MAAM6E,KAAQ,IAAIzB,GAAY,EAAE,KAAK;AAE5C,MAAM0B,WAAqClE,EAAc;AAAA,EACvD,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAapC;AAC7B,WAAA;AAAA,MACL,GAAGA;AAAA,MACH,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,UAAU,CAAC,EAAE,eAAeoC,QAAe;AACzCA,QAAAA,EAAS,QAAS,SAAS,SAAS;AAAA,UAClC,aAAaC;AAAA,UACb,SAAS;AAAA,QAAA,CACV;AAAA,MAAA;AAAA,IAEL;AAAA,EAAA;AAEJ;AACO,MAAM+E,KAAS,IAAID,GAAa,EAAE,KAAK;AAE9C,MAAME,WAA0CpE,EAAc;AAAA,EAC5D,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,UAAUgD;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,EAAA;AAEJ;AACO,MAAMsE,KAAS,IAAID,GAAa,EAAE,KAAK;AAE9C,MAAME,WAAyCtE,EAAc;AAAA,EAC3D,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,eAAegD;AAAA,MACf,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMwE,KAAS,IAAID,GAAa,EAAE,KAAK;AAE9C,MAAME,WAA0ExE,EAAc;AAAA,EAC5F,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,OAAA0E,GAAO,SAAAjH,EAAA,IAAYuC,GACrB,EAAE,OAAA2E,GAAO,KAAAC,EAAA,IAAQF,GACjBzH,IAAQD,EAAM,cAAc,SAC5BG,IAAgB;AAAA,MACpB,QAAQwH;AAAA,MACR,QAAQ;AAAA,MACR,MAAMC;AAAA,MACN,MAAMnH;AAAA,IACR;AAEA,QAAIoH,IAAYF;AAChB,QAAI1H;AACF,eAASlJ,IAAI4Q,GAAO5Q,KAAK6Q,GAAK7Q;AAC5B,YAAI,CAACkJ,EAAM,cAAclJ,CAAC,GAAG;AACf,UAAA8Q,IAAA9Q;AACZ;AAAA,QAAA;AAAA;AAIC,WAAA;AAAA,MACL,GAAGiJ;AAAA,MACH,eAAAG;AAAA,MACA,UAAU,EAAE,GAAG0H,GAAW,GAAG,EAAE;AAAA,MAC/B,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMC,KAAa,IAAIL,GAAiB,EAAE,KAAK;AAEtD,MAAMM,WAA0E9E,EAAc;AAAA,EAC5F,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,OAAA0E,GAAO,SAAAlH,EAAA,IAAYwC,GACrB,EAAE,OAAA2E,GAAO,KAAAC,EAAA,IAAQF,GACjBzH,IAAQD,EAAM,cAAc,SAC5BG,IAAgB;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQwH;AAAA,MACR,MAAMnH;AAAA,MACN,MAAMoH;AAAA,IACR;AAGA,QAAIC,IAAY;AAChB,QAAI5H;AACF,eAASlJ,IAAI,GAAGA,KAAKyJ,GAASzJ;AAC5B,YAAI,CAACkJ,EAAM,cAAclJ,CAAC,GAAG;AACf,UAAA8Q,IAAA9Q;AACZ;AAAA,QAAA;AAAA;AAIC,WAAA;AAAA,MACL,GAAGiJ;AAAA,MACH,eAAAG;AAAA,MACA,UAAU,EAAE,GAAG0H,GAAW,GAAGF,EAAM;AAAA,MACnC,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMK,KAAa,IAAID,GAAiB,EAAE,KAAK;AAEtD,MAAME,WAAwChF,EAAc;AAAA,EAC1D,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM,EAAE,QAAAvB,GAAQ,QAAAE,EAAO,IAAI3B,EAAM,eAC3BG,IAAgB;AAAA,MACpB,QAAAsB;AAAA,MACA,QAAAE;AAAA,MACA,MAAMqB,EAAQ;AAAA,MACd,MAAMA,EAAQ;AAAA,IAChB;AACA,WAAIvB,MAAWuB,EAAQ,KAAKrB,MAAWqB,EAAQ,MAC7C7C,EAAc,OAAO,IACrBA,EAAc,OAAO,KAEhB,EAAE,GAAGH,GAAO,eAAAG,EAAc;AAAA,EAAA;AAErC;AACO,MAAM+H,KAAO,IAAID,GAAW,EAAE,KAAK;AAE1C,MAAME,WAAuClF,EAAc;AAAA,EACzD,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,eAAA3B,MAAkBrB;AACtB,QAAA,EAAE,mBAAA+B,GAAmB,UAAA7B,EAAA,IAAaF;AAQlC,QAPiB+B,KAAAiB,GACjBjB,KAAqBV,EAAc,SACjBU,IAAA,IACXA,IAAoB,MAC7BA,IAAoBV,EAAc,SAAS,IAGzCA,EAAc,SAAS,GAAG;AACtB,YAAAW,IAAUX,EAAcU,CAAiB;AAC/C,MAAA7B,IAAW+B,EAAID,CAAO;AAAA,IAAA;AAExB,WAAO,EAAE,GAAGhC,GAAO,eAAAqB,GAAe,mBAAAU,GAAmB,UAAA7B,EAAS;AAAA,EAAA;AAElE;AACO,MAAMkI,KAAS,IAAID,GAAa,EAAE,KAAK;AAE9C,MAAME,WAAoEpF,EAAc;AAAA,EACtF,OAAOjD,GAAkBgD,GAA+B;AAClD,QAAA,EAAE,OAAAsF,GAAO,OAAAC,EAAA,IAAUvF;AACvB,UAAM,EAAE,UAAA9C,GAAU,eAAAC,GAAe,eAAeiC,EAAa,IAAApC;AAC7D,IAAIuI,KAAS,SACHA,IAAArI;AAEV,UAAMD,IAAQmC,EAAS;AACvB,QAAI,CAACnC;AACI,aAAAD;AAEH,UAAA4G,IAAW3G,EAAM,MAAM;AAAA,MAC3B,OAAAsI;AAAA,MACA,OAAAD;AAAA,MACA,UAAU;AAAA,MACV,gBAAgB1I,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAUoI;AAAA,MAAA,CACX;AAAA,MACD,gBAAgB3I,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAUoI;AAAA,MACX,CAAA;AAAA,IAAA,CACF;AACM,WAAA;AAAA,MACL,GAAGvI;AAAA,MACH,GAAGgB,EAAoB4F,GAAU5G,CAAK;AAAA,MACtC,eAAe,EAAE,SAAS4G,EAAS;AAAA,MACnC,UAAU,CAAC,EAAE,eAAexE,QAAe;AACzC,QAAAnC,EAAM,SAAS,SAAS;AAAA,UACtB,aAAaoC;AAAA,QAAA,CACd;AAAA,MAAA;AAAA,IAEL;AAAA,EAAA;AAEJ;AACO,MAAMmG,KAAQ,IAAIH,GAAY,EAAE,KAAK;AAE5C,MAAMI,WAAoCxF,EAAc;AAAA,EAAxD,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;;AACtD,UAAM,EAAE,UAAA9C,GAAU,eAAAC,GAAe,eAAeiC,EAAa,IAAApC,GACvDC,IAAQmC,EAAS;AACvB,QAAI,CAACnC;AACI,aAAAD;AAGL,QAAAgG,IAAgBC,GAAW9F,CAAa;AACxC,QAAA6F,EAAc,QAAQ,IAAI;AACtB,YAAA,EAAE,GAAAjP,GAAG,GAAAzH,EAAA,IAAM4Q;AACD,MAAA8F,IAAA,EAAE,KAAKjP,GAAG,MAAMzH,GAAG,QAAQyH,GAAG,OAAOzH,EAAE;AAAA,IAAA;AAEzD,UAAM,EAAE,KAAAoZ,GAAK,MAAAC,GAAM,QAAAC,GAAQ,OAAAC,EAAU,IAAA7C,GAC/B8C,IAA2B,CAAC;AAClC,QAAIC,IAAY;AAChB,aAAShS,IAAI2R,GAAK3R,KAAK6R,GAAQ7R;AACzB,UAAA,CAAAkJ,EAAM,cAAclJ,CAAC;AAGzB,iBAASzH,IAAIqZ,GAAMrZ,KAAKuZ,GAAOvZ,KAAK;AAC5B,gBAAA0Z,IAAO/I,EAAM,QAAQ,EAAE,GAAAlJ,GAAG,GAAAzH,KAAK,EAAE,YAAY,UAAU,GACvD0S,IAAUiH,EAAI,EAAE,GAAAlS,GAAG,GAAAzH,GAAG;AAC5B,UAAI4Z,GAAW,aAAaF,KAAA,gBAAAA,EAAM,YAAYE,GAAW,KAAK,OAM1DvG,IAAA1C,EAAM,UAAU,EAAE,GAAAlJ,GAAG,GAAAzH,GAAG,MAAxB,gBAAAqT,EAA2B,gBAAe,SAG1CqG,KAAA,gBAAAA,EAAM,UAAS,SACjBF,EAAK9G,CAAO,IAAI,EAAE,OAAO,OAAU,GACnC+G;AAAA,QACF;AAGJ,WAAIA,MAAc,IACT/I,KAETC,EAAM,OAAO;AAAA,MACX,MAAA6I;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,MACV,gBAAgBlJ,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAGF;AAAA,MACH,GAAGgB,EAAoBf,GAAOD,CAAK;AAAA,MACnC,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAMkJ,KAAQ,IAAIV,GAAY,EAAE,KAAK;AAE5C,MAAMW,WAAmCnG,EAAc;AAAA,EAAvD,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAapC,GAC9BC,IAAQmC,EAAS;AACvB,QAAI,CAACnC;AACI,aAAAD;AAET,UAAM,EAAE,SAAAqJ,GAAS,UAAAtI,MAAad,EAAM,KAAK;AACzC,QAAIoJ,KAAW;AACN,aAAArJ;AAEL,QAAAqJ,EAAQ,eAAepJ,EAAM,IAAI;AAC7B,YAAA,EAAE,UAAAqJ,GAAU,OAAOC,MAAatJ,EAAM,SAAS,kBAAkBoJ,EAAQ,UAAU;AAWrF,aAVJC;AAAA,QACEE,GAAS;AAAA,UACP,GAAGD;AAAA,UACH,GAAGF,EAAQ;AAAA,UACX,eAAe,EAAE,SAASE,EAAS,cAAc,QAAQ;AAAA,QAC1D,CAAA;AAAA,MACH,GACW3I,GAAA2I,EAAS,SAAS,OAAO,GAGhCF,EAAQ,eAAepJ,EAAM,KACxBa,GAAkBd,GAAOC,GAAOc,CAAQ,IAE1Cf;AAAA,IAAA;AAEF,WAAA;AAAA,MACL,GAAGA;AAAA,MACH,GAAGD,GAAeC,GAAOC,CAAK;AAAA,MAC9B,GAAGoJ,EAAQ;AAAA,MACX,GAAGrI,EAAoBf,GAAOD,CAAK;AAAA,MACnC,eAAe,EAAE,SAASC,EAAM;AAAA,MAChC,UAAU,CAAC1R,MAAiB;AAC1B,QAAAwS,KAAA,QAAAA,EAAWxS,IACAqS,GAAAZ,EAAM,SAAS,OAAO;AAAA,MAAA;AAAA,IAErC;AAAA,EAAA;AAEJ;AACO,MAAMyJ,KAAO,IAAIL,GAAW,EAAE,KAAK;AAE1C,MAAMM,WAAmCzG,EAAc;AAAA,EAAvD,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAapC,GAC9BC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAET,UAAM,EAAE,SAAAqJ,GAAS,UAAAzC,GAAU,UAAA7F,EAAS,IAAId,EAAM,KAAK;AACnD,QAAIoJ,KAAW;AACN,aAAArJ;AAEL,QAAAqJ,EAAQ,eAAepJ,EAAM,IAAI;AAC7B,YAAA,EAAE,UAAAqJ,GAAU,OAAOC,MAAatJ,EAAM,SAAS,kBAAkBoJ,EAAQ,UAAU;AAWrF,aAVJC;AAAA,QACEE,GAAS;AAAA,UACP,GAAGD;AAAA,UACH,GAAGF,EAAQ;AAAA,UACX,eAAe,EAAE,SAASE,EAAS,cAAc,QAAQ;AAAA,QAC1D,CAAA;AAAA,MACH,GACW3I,GAAA2I,EAAS,SAAS,OAAO,GAGhCF,EAAQ,eAAepJ,EAAM,KACxBa,GAAkBd,GAAOC,GAAOc,CAAQ,IAE1Cf;AAAA,IAAA;AAEF,WAAA;AAAA,MACL,GAAGA;AAAA,MACH,GAAGD,GAAeC,GAAOC,CAAK;AAAA,MAC9B,GAAGoJ,EAAQ;AAAA,MACX,GAAGrI,EAAoBf,GAAOD,CAAK;AAAA,MACnC,eAAe,EAAE,SAASC,EAAM;AAAA,MAChC,UAAU,CAAC1R,MAAiB;AAC1B,QAAAwS,KAAA,QAAAA,EAAWxS,IACAqS,GAAAZ,EAAM,SAAS,OAAO;AAAA,MAAA;AAAA,IAErC;AAAA,EAAA;AAEJ;AACO,MAAM2J,KAAO,IAAID,GAAW,EAAE,KAAK;AAE1C,MAAME,WAQI3G,EAAc;AAAA,EACtB,OAAOjD,GAAkBgD,GAA+B;;AACtD,UAAM,EAAE,UAAA6G,GAAU,QAAAC,GAAQ,QAAAC,GAAQ,SAAAvJ,GAAS,SAAAC,MAAYuC,GACjD,EAAE,UAAA9C,GAAU,eAAekC,GAAU,YAAA4H,EAAe,IAAAhK,GACpDC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAEL,QAAA,EAAE,eAAAG,MAAkBH;AAClB,UAAA,EAAE,GAAAjJ,GAAG,GAAAzH,EAAA,IAAM4Q;AACjB,QAAI2J,GAAU;AACN,YAAA,CAACI,GAAUC,CAAQ,IAAI;AAAA,QAC3B/J,EAAc,SAAS,KAAKpJ,IAAIoJ,EAAc;AAAA,QAC9CA,EAAc,SAAS,KAAK7Q,IAAI6Q,EAAc;AAAA,MAChD,GACM,CAACgK,GAAOC,CAAK,IAAI,CAACH,IAAWH,GAAQI,IAAWH,CAAM;AAC5D,aAAII,IAAQ,KAAK3J,IAAU2J,KAASC,IAAQ,KAAK3J,IAAU2J,IAClDpK,KAGPG,IAAApJ,MAAMoT,KAAS7a,MAAM8a,IACjB,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,GAAG,IAC7C,EAAE,QAAQrT,GAAG,QAAQzH,GAAG,MAAM6a,GAAO,MAAMC,EAAM,GAChD;AAAA,QACL,GAAGpK;AAAA,QACH,eAAAG;AAAA,MACF;AAAA,IAAA;AAEI,UAAA,CAACgK,GAAOC,CAAK,IAAI,CAACrT,IAAI+S,GAAQxa,IAAIya,CAAM;AAC9C,QAAII,IAAQ,KAAK3J,IAAU2J,KAASC,IAAQ,KAAK3J,IAAU2J;AAClD,aAAApK;AAGT,QAAIqK,IAAYF;AACZ,QAAAlK,EAAM,cAAcoK,CAAS,GAAG;AAC5B,YAAAC,IAAMR,KAAU,IAAI,IAAI;AAC9B,aAAOO,KAAa,KAAKA,KAAa7J,KAAWP,EAAM,cAAcoK,CAAS;AAC/D,QAAAA,KAAAC;AAEX,UAAAD,IAAY,KAAKA,IAAY7J;AACxB,eAAAR;AAAA,IACT;AAEE,QAAA,EAAE,GAAGuK,GAAW,GAAGC,GAAY,QAAA3D,GAAQ,OAAAC,MAAU9G,EAAM;AAC3D,QAAI8J,IAAS;AACX,eAASle,IAAImL,GAAGnL,IAAIye,GAAWze;AAC7B,QAAA2e,OAAa5H,IAAA1C,EAAM,QAAQ,EAAE,GAAGrU,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAA+W,EAAyD,WAAU8H;AAAAA,aAEzEX,IAAS;AAClB,eAASle,IAAImL,IAAI,GAAGnL,KAAKye,GAAWze;AAClC,QAAA2e,OAAa3H,IAAA3C,EAAM,QAAQ,EAAE,GAAGrU,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAAgX,EAAyD,WAAU6H;AAGpF,QAAIV,IAAS;AACX,eAASne,IAAI0D,GAAG1D,IAAIwe,GAAOxe;AACzB,QAAA4e,OAAcE,IAAAzK,EAAM,QAAQ,EAAE,GAAG,GAAG,GAAGrU,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAA8e,EAAyD,UAASC;AAAAA,aAEzEZ,IAAS;AAClB,eAASne,IAAI0D,IAAI,GAAG1D,KAAKwe,GAAOxe;AAC9B,QAAA4e,OAAcI,IAAA3K,EAAM,QAAQ,EAAE,GAAG,GAAG,GAAGrU,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAAgf,EAAyD,UAASD;AAIpF,UAAM3B,IAAO/I,EAAM,QAAQ,EAAEoK,GAAc,GAAGD,EAAS,GAAA,EAAE,YAAY,SAAA,CAAU;AAC/E,WAAAvD,KAASmC,KAAA,gBAAAA,EAAM,WAAUyB,GACzB3D,KAAQkC,KAAA,gBAAAA,EAAM,UAAS2B,GAEXE,GAAA5K,GAAO+J,EAAW,SAAS,EAAEK,GAAc,GAAGD,GAAO,GAC1D;AAAA,MACL,GAAGpK;AAAA,MACH,eAAe,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,GAAG;AAAA,MAC5D,UAAU,EAAEqK,GAAc,GAAGD,EAAM;AAAA,MACnC,YAAY,EAAE,GAAGG,GAAW,GAAGC,GAAY,QAAA3D,GAAQ,OAAAC,EAAM;AAAA,IAC3D;AAAA,EAAA;AAEJ;AACO,MAAMgE,KAAQ,IAAIlB,GAAY,EAAE,KAAK;AAE5C,MAAMmB,WAOI9H,EAAc;AAAA,EACtB,OAAOjD,GAAkBgD,GAA+B;;AAChD,UAAA,EAAE,SAAAxC,GAAS,SAAAC,EAAA,IAAYuC;AACzB,QAAA,EAAE,QAAA8G,GAAQ,QAAAC,EAAA,IAAW/G;AACzB,UAAM,EAAE,UAAA9C,GAAU,eAAAC,GAAe,eAAeiC,GAAU,YAAY4I,MAAiBhL,GACjFC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAGL,QAAA,EAAE,GAAGuK,GAAW,GAAGC,GAAY,QAAA3D,GAAQ,OAAAC,MAAU9G,EAAM;AACrD,UAAA,EAAE,GAAAjJ,GAAG,GAAAzH,EAAA,IAAM4Q,GACX8F,IAAgBC,GAAW9F,CAAa,GACxC,EAAE,KAAAuI,GAAK,MAAAC,GAAM,QAAAC,GAAQ,OAAAC,EAAU,IAAA7C;AACjC,QAAA,CAACmE,GAAOC,CAAK,IAAI,CAACrT,IAAI+S,GAAQxa,IAAIya,CAAM;AA8C5C,QA7CII,IAAQzB,KAAOA,MAAQ,OACzBoB,IAASlB,IAASuB,GACVA,IAAAvB,GACJwB,IAAQzB,KACVyB,KACAL,QAEAA,IAASlB,IAAQuB,GACTA,IAAAvB,KAGRsB,IAAQvB,KAAUA,MAAW,OAC/BkB,IAASpB,IAAMyB,GACPA,IAAAzB,GACJ0B,IAAQvB,KACVuB,KACAL,QAEAA,IAASpB,IAAOyB,GACRA,IAAAzB,KAGRyB,IAAQzB,KAAQA,MAAS,OAC3BoB,IAASlB,IAAQuB,GACTA,IAAAvB,GACJsB,IAAQzB,KACVyB,KACAL,QAEAA,IAASlB,IAASuB,GACVA,IAAAvB,KAGRwB,IAAQvB,KAASA,MAAU,OAC7BkB,IAASpB,IAAOyB,GACRA,IAAAzB,GACJwB,IAAQvB,KACVuB,KACAL,QAEAA,IAASpB,IAAMyB,GACPA,IAAAzB,KAIRyB,IAAQ,KAAK3J,IAAU2J,KAASC,IAAQ,KAAK3J,IAAU2J;AAClD,aAAApK;AAIL,QAAAC,EAAM,cAAckK,CAAK,GAAG;AACxB,YAAAG,IAAMR,KAAU,IAAI,IAAI,IACxBmB,IAAKvC,MAAQ,KAAKA,IAAM,GACxBvS,IAAKyS,MAAW,KAAKA,IAASpI;AACpC,aAAO2J,KAASc,KAAMd,KAAShU,KAAM8J,EAAM,cAAckK,CAAK;AACnD,QAAAA,KAAAG;AAEX,UAAIH,IAAQc,KAAMd,IAAQhU,KAAM8J,EAAM,cAAckK,CAAK;AAChD,eAAAnK;AAAA,IACT;AAGF,QAAI8J,IAAS;AACX,eAASle,IAAImL,GAAGnL,IAAIue,GAAOve;AACzB,QAAA2e,OAAa5H,IAAA1C,EAAM,QAAQ,EAAE,GAAGrU,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAA+W,EAAyD,WAAU8H;AAAAA,aAEzEX,IAAS;AAClB,eAASle,IAAImL,IAAI,GAAGnL,KAAKue,GAAOve;AAC9B,QAAA2e,OAAa3H,IAAA3C,EAAM,QAAQ,EAAE,GAAGrU,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAAgX,EAAyD,WAAU6H;AAGpF,QAAIV,IAAS;AACX,eAASne,IAAI0D,GAAG1D,IAAIwe,GAAOxe;AACzB,QAAA4e,OAAcE,IAAAzK,EAAM,QAAQ,EAAE,GAAG,GAAG,GAAGrU,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAA8e,EAAyD,UAASC;AAAAA,aAEzEZ,IAAS;AAClB,eAASne,IAAI0D,IAAI,GAAG1D,KAAKwe,GAAOxe;AAC9B,QAAA4e,OAAcI,IAAA3K,EAAM,QAAQ,EAAE,GAAG,GAAG,GAAGrU,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAAgf,EAAyD,UAASD;AAGpF,UAAM3B,IAAO/I,EAAM,QAAQ,EAAE,GAAGkK,GAAO,GAAGC,EAAS,GAAA,EAAE,YAAY,SAAA,CAAU;AAC3E,WAAAvD,KAASmC,KAAA,gBAAAA,EAAM,WAAUyB,GACzB3D,KAAQkC,KAAA,gBAAAA,EAAM,UAAS2B,GACXE,GAAA5K,GAAO+K,EAAa,SAAS,EAAE,GAAGb,GAAO,GAAGC,GAAO,GACxD;AAAA,MACL,GAAGpK;AAAA,MACH,UAAU,EAAE,GAAGmK,GAAO,GAAGC,EAAM;AAAA,MAC/B,YAAY,EAAE,GAAGG,GAAW,GAAGC,GAAY,QAAA3D,GAAQ,OAAAC,EAAM;AAAA,IAC3D;AAAA,EAAA;AAEJ;AACO,MAAMoE,KAAO,IAAIH,GAAW,EAAE,KAAK;AAE1C,MAAMI,WAA6ClI,EAAc;AAAA,EAC/D,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,WAAWgD;AAAA,IACb;AAAA,EAAA;AAEJ;AAEO,MAAMoI,KAAe,IAAID,GAAmB,EAAE,KAAK;AAE1D,MAAME,WAAiGpI,EAAc;AAAA,EAArH,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM,EAAE,SAAAxC,GAAS,GAAAzJ,GAAG,UAAAuU,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAjC,GAAe,UAAAD,EAAa,IAAAF,GACvDC,IAAQmC,EAAS;AACvB,WAAInC,KAAS,OACJD,KAETC,EAAM,WAAW;AAAA,MACf,GAAAlJ;AAAA,MACA,SAAAyJ;AAAA,MACA,OAAOzJ;AAAA,MACP,UAAAuU;AAAA,MACA,gBAAgB1L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAGF;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAMsL,KAAkB,IAAIF,GAAsB,EAAE,KAAK;AAEhE,MAAMG,WAAiGvI,EAAc;AAAA,EAArH,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM,EAAE,SAAAxC,GAAS,GAAAzJ,GAAG,UAAAuU,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAjC,GAAe,UAAAD,GAAU,WAAAuL,MAAczL,GAClEC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAET,UAAM0G,IAAoB;AAAA,MACxB,GAAGvG;AAAA,MACH,QAAQA,EAAc,SAASK;AAAA,MAC/B,MAAML,EAAc,OAAOK;AAAA,IAC7B,GACMkL,IAAe,EAAE,GAAGxL,GAAU,GAAGA,EAAS,IAAIM,EAAQ;AAE5D,WAAAP,EAAM,WAAW;AAAA,MACf,GAAGlJ,IAAI;AAAA,MACP,SAAAyJ;AAAA,MACA,OAAOzJ;AAAA,MACP,UAAAuU;AAAA,MACA,gBAAgB1L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAeyG;AAAA,QACf,UAAUgF;AAAA,MACX,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAG1L;AAAA,MACH,eAAe0G;AAAA,MACf,UAAUgF;AAAA,MACV,eAAe,EAAE,SAASzL,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM0L,KAAkB,IAAIH,GAAsB,EAAE,KAAK;AAEhE,MAAMI,WAAgG3I,EAAc;AAAA,EAApH,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM,EAAE,SAAAvC,GAAS,GAAAnR,GAAG,UAAAgc,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAjC,GAAe,UAAAD,GAAU,WAAAuL,MAAczL,GAClEC,IAAQmC,EAAS;AACvB,WAAInC,KAAS,OACJD,KAGTC,EAAM,WAAW;AAAA,MACf,GAAA3Q;AAAA,MACA,SAAAmR;AAAA,MACA,OAAOnR;AAAA,MACP,UAAAgc;AAAA,MACA,gBAAgB1L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAGF;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM4L,KAAiB,IAAID,GAAqB,EAAE,KAAK;AAE9D,MAAME,WAAiG7I,EAAc;AAAA,EAArH,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM,EAAE,SAAAvC,GAAS,GAAAnR,GAAG,UAAAgc,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAjC,GAAe,UAAAD,EAAa,IAAAF,GACvDC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAET,UAAM0G,IAAoB;AAAA,MACxB,GAAGvG;AAAA,MACH,QAAQA,EAAc,SAASM;AAAA,MAC/B,MAAMN,EAAc,OAAOM;AAAA,IAC7B,GACMiL,IAAe,EAAE,GAAGxL,GAAU,GAAGA,EAAS,IAAIO,EAAQ;AAE5D,WAAAN,EAAc,UAAUM,GACxBN,EAAc,QAAQM,GAEtBR,EAAM,WAAW;AAAA,MACf,GAAG3Q,IAAI;AAAA,MACP,SAAAmR;AAAA,MACA,OAAOnR;AAAA,MACP,UAAAgc;AAAA,MACA,gBAAgB1L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAeyG;AAAA,QACf,UAAUgF;AAAA,MACX,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAG1L;AAAA,MACH,eAAe0G;AAAA,MACf,UAAUgF;AAAA,MACV,eAAe,EAAE,SAASzL,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM8L,KAAkB,IAAID,GAAsB,EAAE,KAAK;AAEhE,MAAME,WAA4F/I,EAAc;AAAA,EAAhH,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM,EAAE,SAAAxC,GAAS,GAAAzJ,GAAG,UAAAuU,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAjC,GAAe,UAAAD,GAAU,WAAAuL,MAAczL,GAClEC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAGT,IAAAC,EAAM,WAAW;AAAA,MACf,GAAAlJ;AAAA,MACA,SAAAyJ;AAAA,MACA,UAAA8K;AAAA,MACA,gBAAgB1L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,QACA,aAAaF,EAAM;AAAA,MAAA,CACpB;AAAA,MACD,gBAAgBJ,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF;AAID,UAAM+L,IAAWhM,EAAM,SACjBiM,IAAWjM,EAAM;AACnB,QAAAkM,IAAO,KAAK,IAAI,GAAG,KAAK,IAAIpV,GAAGkV,CAAQ,CAAC;AACxC,QAAAhM,EAAM,cAAckM,CAAI,GAAG;AAC7B,UAAIC,IAAQ;AACZ,eAASC,IAAKF,GAAME,KAAMJ,GAAUI;AAClC,YAAI,CAACpM,EAAM,cAAcoM,CAAE,GAAG;AACpB,UAAAD,IAAAC;AACR;AAAA,QAAA;AAGJ,UAAID,MAAU;AACZ,iBAASC,IAAKF,GAAME,KAAM,GAAGA;AAC3B,cAAI,CAACpM,EAAM,cAAcoM,CAAE,GAAG;AACpB,YAAAD,IAAAC;AACR;AAAA,UAAA;AAAA;AAIN,MAAID,MAAU,OACLD,IAAAC;AAAA,IACT;AAGK,WAAA;AAAA,MACL,GAAGpM;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,MAChC,eAAe,EAAE,QAAQkM,GAAM,QAAQ,GAAG,MAAMA,GAAM,MAAMD,EAAS;AAAA,MACrE,UAAU,EAAE,GAAGC,GAAM,GAAG,EAAE;AAAA,MAC1B,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMG,KAAa,IAAIN,GAAiB,EAAE,KAAK;AAEtD,MAAMO,WAA4FtJ,EAAc;AAAA,EAAhH,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AACtD,UAAM,EAAE,SAAAvC,GAAS,GAAAnR,GAAG,UAAAgc,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAjC,GAAe,UAAAD,GAAU,WAAAuL,MAAczL,GAClEC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAGT,IAAAC,EAAM,WAAW;AAAA,MACf,GAAA3Q;AAAA,MACA,SAAAmR;AAAA,MACA,UAAA6K;AAAA,MACA,gBAAgB1L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,QACA,YAAYF,EAAM;AAAA,MAAA,CACnB;AAAA,MACD,gBAAgBJ,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF;AAID,UAAMgM,IAAWjM,EAAM,SACjBgM,IAAWhM,EAAM,SACjBuM,IAAO,KAAK,IAAI,GAAG,KAAK,IAAIld,GAAG4c,CAAQ,CAAC;AAC9C,QAAIrE,IAAY;AAChB,aAASwE,IAAK,GAAGA,KAAMJ,GAAUI;AAC/B,UAAI,CAACpM,EAAM,cAAcoM,CAAE,GAAG;AAChB,QAAAxE,IAAAwE;AACZ;AAAA,MAAA;AAIG,WAAA;AAAA,MACL,GAAGrM;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,MAChC,eAAe,EAAE,QAAQ,GAAG,QAAQuM,GAAM,MAAMP,GAAU,MAAMO,EAAK;AAAA,MACrE,UAAU,EAAE,GAAG3E,GAAW,GAAG2E,EAAK;AAAA,MAClC,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMC,KAAa,IAAIF,GAAiB,EAAE,KAAK;AAEtD,MAAMG,WAA2EzJ,EAAc;AAAA,EAA/F,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,GAAA1T,GAAG,WAAAqd,EAAA,IAAc3J,GACnB,EAAE,eAAeZ,GAAU,eAAAjC,GAAe,UAAAD,EAAa,IAAAF,GACvDC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAET,IAAAC,EAAM,SAAS,EAAE,GAAA3Q,GAAG,WAAAqd,EAAA,CAAW;AACzB,UAAA9M,IAAaD,EAAkB,EAAE,SAASK,EAAM,IAAI,eAAAE,GAAe,UAAAD,GAAU;AAC/E,WAAAD,EAAM,SAAS,gBACXA,EAAA,SAAS,YAAY,iBAAiBJ,GACtCI,EAAA,SAAS,YAAY,iBAAiBJ,IAEvC;AAAA,MACL,GAAGG;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM2M,KAAW,IAAIF,GAAe,EAAE,KAAK;AAElD,MAAMG,WAA0E5J,EAAc;AAAA,EAA9F,cAAA;AAAA,UAAA,GAAA,SAAA,GACa,KAAA,WAAA;AAAA,EAAA;AAAA,EACX,OAAOjD,GAAkBgD,GAA+B;AAChD,UAAA,EAAE,GAAA1T,GAAG,QAAAwd,EAAA,IAAW9J,GAChB,EAAE,eAAeZ,GAAU,eAAAjC,GAAe,UAAAD,EAAa,IAAAF,GACvDC,IAAQmC,EAAS;AACvB,QAAInC,KAAS;AACJ,aAAAD;AAET,IAAAC,EAAM,WAAW,EAAE,GAAA3Q,GAAG,QAAAwd,EAAA,CAAQ;AACxB,UAAAjN,IAAaD,EAAkB,EAAE,SAASK,EAAM,IAAI,eAAAE,GAAe,UAAAD,GAAU;AAC/E,IAAAD,EAAM,SAAS,gBACXA,EAAA,SAAS,YAAY,iBAAiBJ,GACtCI,EAAA,SAAS,YAAY,iBAAiBJ;AAE9C,QAAIkN,IAAc7M;AAClB,QAAID,EAAM,cAAcC,EAAS,CAAC;AAChC,eAASnJ,IAAI,GAAGA,KAAKkJ,EAAM,SAASlJ;AAClC,YAAI,CAACkJ,EAAM,cAAclJ,CAAC,GAAG;AAC3B,UAAAgW,IAAc,EAAE,GAAAhW,GAAG,GAAGmJ,EAAS,EAAE;AACjC;AAAA,QAAA;AAAA;AAIC,WAAA;AAAA,MACL,GAAGF;AAAA,MACH,UAAU+M;AAAA,MACV,eAAeA,MAAgB7M,IAAWmC,KAAYlC;AAAA,MACtD,eAAe,EAAE,SAASF,EAAM;AAAA,MAChC,UAAU,CAAC,EAAE,eAAemC,QAAe;AACzC,cAAM1W,IAAI0W,EAAS;AACnB,QAAI1W,KACFA,EAAE,SAAS,SAAS;AAAA,UAClB,SAAS;AAAA,UACT,aAAa2W;AAAA,QAAA,CACd;AAAA,MACH;AAAA,IAEJ;AAAA,EAAA;AAEJ;AACO,MAAM2K,KAAa,IAAIH,GAAiB,EAAE,KAAK;AAEtD,MAAMI,WAEIhK,EAAc;AAAA,EACtB,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,iBAAiBgD;AAAA,IACnB;AAAA,EAAA;AAEJ;AACO,MAAMkK,KAAgB,IAAID,GAAoB,EAAE,KAAK;AAE5D,MAAME,WAA6FlK,EAAc;AAAA,EAC/G,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,cAAcgD;AAAA,IAChB;AAAA,EAAA;AAEJ;AACO,MAAMoK,KAAa,IAAID,GAAiB,EAAE,KAAK;AAEtD,MAAME,WAAmDpK,EAAc;AAAA,EACrE,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,gBAAgBgD;AAAA,IAClB;AAAA,EAAA;AAEJ;AACO,MAAMsK,KAAoB,IAAID,GAAwB,EAAE,KAAK;AAEpE,MAAME,WAAqDtK,EAAc;AAAA,EACvE,OAAOjD,GAAkBgD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGhD;AAAA,MACH,GAAGgD;AAAA,IACL;AAAA,EAAA;AAEJ;AACO,MAAMwG,KAAW,IAAI+D,GAAe,EAAE,KAAK,GAErCC,KAAc;AAAA,EACzB,MAAApI;AAAA,EACA,MAAAE;AAAA,EACA,KAAAE;AAAA,EACA,OAAA0B;AAAA,EACA,QAAAE;AAAA,EACA,QAAAE;AAAA,EACA,QAAAE;AAAA,EACA,YAAAM;AAAA,EACA,YAAAE;AAAA,EACA,MAAAE;AAAA,EACA,QAAAE;AAAA,EACA,OAAAI;AAAA,EACA,OAAAW;AAAA,EACA,MAAAM;AAAA,EACA,MAAAE;AAAA,EACA,OAAAmB;AAAA,EACA,MAAAI;AAAA,EACA,iBAAAK;AAAA,EACA,iBAAAI;AAAA,EACA,gBAAAE;AAAA,EACA,iBAAAE;AAAA,EACA,YAAAO;AAAA,EACA,YAAAG;AAAA,EACA,UAAAG;AAAA,EACA,YAAAI;AACF,GC75CaS,KAAa,MAAM;AAC9B,QAAM,CAACC,GAAIC,CAAK,IAAIC,GAAS,EAAK;AAI9B,SAHJC,GAAU,MAAM;AACd,IAAAF,EAAM,EAAI;AAAA,EACZ,GAAG,EAAE,GACDD,KAAM,OAAO,SAAW,MACnB,EAAE,QAAQ,SAAS,IAErB,EAAE,QAAQ,MAAM,UAAU,KAAK;AACxC,GAeaI,KAAsB,CAAC/M,GAAoCgN,IAAQ,QAAQ;AAChF,QAAAC,IAAoBC,GAAOlN,CAAQ,GACnCmN,IAAWD,GAAe;AAEhC,SAAAJ,GAAU,MAAM;AACd,IAAAG,EAAkB,UAAUjN;AAAA,EAAA,GAC3B,CAACA,CAAQ,CAAC,GAEN,IAAIoN,MAAgB;AAClB,WAAA,aAAaD,EAAS,OAAO,GAC3BA,EAAA,UAAU,OAAO,WAAW,MAAM;AACvB,MAAAF,EAAA,QAAQ,GAAGG,CAAI;AAAA,OAChCJ,CAAK;AAAA,EACV;AACF,GAEaK,KAAU,CAACC,IAAuB,OAAO;AAC9C,QAAA,CAACC,GAAMC,CAAO,IAAIX,GAAmB,MAAMY,GAAWH,CAAK,CAAC,GAC5D,EAAE,UAAA3L,MAAa4L;AACrB,SAAA5L,EAAS,cAAcoC,IACdpC,EAAA,WAAW,CAAC+L,MAA0B;AAEzC,IADG,OAAA,OAAO/L,GAAU+L,CAAK,GACxB/L,EAAS,SAGd,sBAAsB,MAAM6L,EAAQ,EAAE,UAAA7L,EAAU,CAAA,CAAC;AAAA,EACnD,GACAmL,GAAU,MAAM;AACP,WAAA,OAAOnL,GAAU2L,CAAK;AAAA,EAAA,GAC5B,CAACA,CAAK,CAAC,GACHC;AACT;"}