@tensorix/metahub 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -6
- package/README.zh-CN.md +7 -2
- package/dist/cli.js +4130 -2200
- package/dist/cli.js.map +54 -46
- package/dist/core/compact.d.ts +42 -0
- package/dist/core/compact.d.ts.map +1 -0
- package/dist/core/config.d.ts +3 -3
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/context.d.ts +4 -4
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/crdt.d.ts +30 -7
- package/dist/core/crdt.d.ts.map +1 -1
- package/dist/core/databases.d.ts +22 -8
- package/dist/core/databases.d.ts.map +1 -1
- package/dist/core/db.d.ts +1 -27
- package/dist/core/db.d.ts.map +1 -1
- package/dist/core/documents.d.ts +30 -15
- package/dist/core/documents.d.ts.map +1 -1
- package/dist/core/driver.d.ts +25 -0
- package/dist/core/driver.d.ts.map +1 -0
- package/dist/core/errors.d.ts +32 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/history.d.ts +174 -0
- package/dist/core/history.d.ts.map +1 -0
- package/dist/core/hlc.d.ts +3 -3
- package/dist/core/hlc.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/indexing.d.ts +4 -4
- package/dist/core/indexing.d.ts.map +1 -1
- package/dist/core/integrity.d.ts +1 -1
- package/dist/core/integrity.d.ts.map +1 -1
- package/dist/core/node.d.ts +2 -2
- package/dist/core/node.d.ts.map +1 -1
- package/dist/core/properties.d.ts +10 -9
- package/dist/core/properties.d.ts.map +1 -1
- package/dist/core/records.d.ts +13 -8
- package/dist/core/records.d.ts.map +1 -1
- package/dist/core/resolve.d.ts +4 -4
- package/dist/core/resolve.d.ts.map +1 -1
- package/dist/core/schema-init.d.ts +37 -0
- package/dist/core/schema-init.d.ts.map +1 -0
- package/dist/core/schema.d.ts +1 -1
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/search.d.ts +3 -3
- package/dist/core/search.d.ts.map +1 -1
- package/dist/core/sites-core.d.ts +60 -0
- package/dist/core/sites-core.d.ts.map +1 -0
- package/dist/core/sites.d.ts +11 -52
- package/dist/core/sites.d.ts.map +1 -1
- package/dist/core/snapshot.d.ts.map +1 -1
- package/dist/core/sqlcols.d.ts +4 -0
- package/dist/core/sqlcols.d.ts.map +1 -0
- package/dist/core/sync/auth.d.ts +5 -3
- package/dist/core/sync/auth.d.ts.map +1 -1
- package/dist/core/sync/client.d.ts +11 -3
- package/dist/core/sync/client.d.ts.map +1 -1
- package/dist/core/sync/files.d.ts.map +1 -1
- package/dist/core/sync/openapi.d.ts +5 -2
- package/dist/core/sync/openapi.d.ts.map +1 -1
- package/dist/core/sync/pairing.d.ts.map +1 -1
- package/dist/core/sync/peers-routes.d.ts +1 -1
- package/dist/core/sync/peers-routes.d.ts.map +1 -1
- package/dist/core/sync/peers.d.ts +10 -10
- package/dist/core/sync/peers.d.ts.map +1 -1
- package/dist/core/sync/protocol.d.ts +5 -0
- package/dist/core/sync/protocol.d.ts.map +1 -1
- package/dist/core/sync/routes.d.ts +4 -0
- package/dist/core/sync/routes.d.ts.map +1 -1
- package/dist/core/sync/server.d.ts +24 -1
- package/dist/core/sync/server.d.ts.map +1 -1
- package/dist/core/sync/sites-routes.d.ts +1 -1
- package/dist/core/sync/sites-routes.d.ts.map +1 -1
- package/dist/db-worker.js +268 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3254 -1865
- package/dist/index.js.map +36 -31
- package/dist/metahub-sdk.js +1 -0
- package/dist/mh-runtime.js +1 -0
- package/dist/sqlite3.wasm +0 -0
- package/dist/sw.js +1 -0
- package/dist/{core/sync/webui.d.ts → webui/server/assets.d.ts} +9 -6
- package/dist/webui/server/assets.d.ts.map +1 -0
- package/dist/webui/server/icons.d.ts +4 -0
- package/dist/webui/server/icons.d.ts.map +1 -0
- package/dist/webui/server/routes.d.ts +3 -0
- package/dist/webui/server/routes.d.ts.map +1 -0
- package/dist/webui.js +57 -57
- package/package.json +3 -1
- package/dist/core/sync/webui-routes.d.ts +0 -3
- package/dist/core/sync/webui-routes.d.ts.map +0 -1
- package/dist/core/sync/webui.d.ts.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/core/paths.ts", "../src/core/ids.ts", "../src/core/node.ts", "../src/core/hlc.ts", "../src/core/blocks.ts", "../src/core/crdt.ts", "../src/core/cache.ts", "../src/core/sites.ts", "../src/core/
|
|
3
|
+
"sources": ["../src/core/errors.ts", "../src/core/paths.ts", "../src/core/ids.ts", "../src/core/node.ts", "../src/core/hlc.ts", "../src/core/blocks.ts", "../src/core/crdt.ts", "../src/core/cache.ts", "../src/core/sites-core.ts", "../src/core/sites.ts", "../src/core/sync/sites-serve.ts", "../src/core/index.ts", "../src/core/db.ts", "../src/core/schema.ts", "../src/core/records.ts", "../src/core/databases.ts", "../src/core/properties.ts", "../src/core/indexing.ts", "../src/core/resolve.ts", "../src/core/fracdex.ts", "../src/core/documents.ts", "../src/core/schema-init.ts", "../src/core/context.ts", "../src/core/search.ts", "../node_modules/zod/v4/core/core.js", "../node_modules/zod/v4/core/util.js", "../node_modules/zod/v4/core/errors.js", "../node_modules/zod/v4/core/parse.js", "../node_modules/zod/v4/core/regexes.js", "../node_modules/zod/v4/core/checks.js", "../node_modules/zod/v4/core/doc.js", "../node_modules/zod/v4/core/versions.js", "../node_modules/zod/v4/core/schemas.js", "../node_modules/zod/v4/locales/ar.js", "../node_modules/zod/v4/locales/az.js", "../node_modules/zod/v4/locales/be.js", "../node_modules/zod/v4/locales/bg.js", "../node_modules/zod/v4/locales/ca.js", "../node_modules/zod/v4/locales/cs.js", "../node_modules/zod/v4/locales/da.js", "../node_modules/zod/v4/locales/de.js", "../node_modules/zod/v4/locales/el.js", "../node_modules/zod/v4/locales/en.js", "../node_modules/zod/v4/locales/eo.js", "../node_modules/zod/v4/locales/es.js", "../node_modules/zod/v4/locales/fa.js", "../node_modules/zod/v4/locales/fi.js", "../node_modules/zod/v4/locales/fr.js", "../node_modules/zod/v4/locales/fr-CA.js", "../node_modules/zod/v4/locales/he.js", "../node_modules/zod/v4/locales/hr.js", "../node_modules/zod/v4/locales/hu.js", "../node_modules/zod/v4/locales/hy.js", "../node_modules/zod/v4/locales/id.js", "../node_modules/zod/v4/locales/is.js", "../node_modules/zod/v4/locales/it.js", "../node_modules/zod/v4/locales/ja.js", "../node_modules/zod/v4/locales/ka.js", "../node_modules/zod/v4/locales/km.js", "../node_modules/zod/v4/locales/kh.js", "../node_modules/zod/v4/locales/ko.js", "../node_modules/zod/v4/locales/lt.js", "../node_modules/zod/v4/locales/mk.js", "../node_modules/zod/v4/locales/ms.js", "../node_modules/zod/v4/locales/nl.js", "../node_modules/zod/v4/locales/no.js", "../node_modules/zod/v4/locales/ota.js", "../node_modules/zod/v4/locales/ps.js", "../node_modules/zod/v4/locales/pl.js", "../node_modules/zod/v4/locales/pt.js", "../node_modules/zod/v4/locales/ro.js", "../node_modules/zod/v4/locales/ru.js", "../node_modules/zod/v4/locales/sl.js", "../node_modules/zod/v4/locales/sv.js", "../node_modules/zod/v4/locales/ta.js", "../node_modules/zod/v4/locales/th.js", "../node_modules/zod/v4/locales/tr.js", "../node_modules/zod/v4/locales/uk.js", "../node_modules/zod/v4/locales/ua.js", "../node_modules/zod/v4/locales/ur.js", "../node_modules/zod/v4/locales/uz.js", "../node_modules/zod/v4/locales/vi.js", "../node_modules/zod/v4/locales/zh-CN.js", "../node_modules/zod/v4/locales/zh-TW.js", "../node_modules/zod/v4/locales/yo.js", "../node_modules/zod/v4/core/registries.js", "../node_modules/zod/v4/core/api.js", "../node_modules/zod/v4/core/to-json-schema.js", "../node_modules/zod/v4/core/json-schema-processors.js", "../node_modules/zod/v4/core/json-schema-generator.js", "../node_modules/zod/v4/classic/iso.js", "../node_modules/zod/v4/classic/errors.js", "../node_modules/zod/v4/classic/parse.js", "../node_modules/zod/v4/classic/schemas.js", "../node_modules/zod/v4/classic/compat.js", "../node_modules/zod/v4/classic/from-json-schema.js", "../node_modules/zod/v4/classic/coerce.js", "../node_modules/zod/v4/classic/external.js", "../src/core/sync/protocol.ts", "../src/core/sync/client.ts", "../src/core/sync/server.ts", "../src/core/sync/token.ts", "../src/core/config.ts", "../src/core/sync/routes.ts", "../src/core/sync/sites-routes.ts", "../src/core/sync/peers-routes.ts", "../src/core/sync/pairing.ts", "../src/core/sync/peers.ts", "../src/core/sync/openapi.ts", "../src/core/sync/auth.ts", "../src/webui/server/assets.ts", "../src/webui/server/icons.ts", "../src/webui/server/routes.ts", "../src/core/history.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
+
"/**\n * Machine-readable error taxonomy — the contract between core and its callers.\n *\n * Agents and scripts dispatch on `code`, never on message text (messages may\n * be reworded freely). The CLI maps codes to exit codes (src/cli/output.ts)\n * and the HTTP layer maps them to status codes (src/webui/server/routes.ts),\n * so adding a code here is enough for both surfaces to pick it up.\n */\nexport type MhErrorCode =\n /** Bad arguments / refusing a request as stated (HTTP 400, exit 2). */\n | \"invalid_input\"\n /** Referenced entity does not exist (HTTP 404, exit 3). */\n | \"not_found\"\n /** A ref matched more than one entity — disambiguate and retry (exit 4). */\n | \"ambiguous\"\n /** Optimistic-concurrency failure: re-read, then retry (HTTP 409, exit 5). */\n | \"stale\"\n /** State conflict, e.g. a name that already exists (HTTP 409, exit 5). */\n | \"conflict\"\n /** Missing/invalid credentials (HTTP 401, exit 6). */\n | \"auth\"\n /** A remote peer was unreachable or replied non-OK — retryable (exit 7). */\n | \"network\"\n /** The requested listen port is taken (exit 98, historical). */\n | \"port_in_use\";\n\nexport class MhError extends Error {\n constructor(\n readonly code: MhErrorCode,\n message: string,\n ) {\n super(message);\n this.name = \"MhError\";\n }\n}\n\n/** The error's code, for errors that carry one (anything else → undefined). */\nexport function errorCode(e: unknown): MhErrorCode | undefined {\n return e instanceof MhError ? e.code : undefined;\n}\n",
|
|
5
6
|
"import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nexport function metahubHome(): string {\n return process.env.METAHUB_HOME ?? join(homedir(), \".metahub\");\n}\n\nexport function dbPath(): string {\n return join(metahubHome(), \"metahub.db\");\n}\n\nexport function cacheDir(): string {\n return join(metahubHome(), \"cache\");\n}\n",
|
|
6
7
|
"const ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n\n/** Collision-resistant lowercase token (base36). */\nexport function randomSuffix(len = 6): string {\n const bytes = crypto.getRandomValues(new Uint8Array(len));\n let out = \"\";\n for (const b of bytes) out += ALPHABET.charAt(b % ALPHABET.length);\n return out;\n}\n\n/** ASCII-only, url-safe slug from an arbitrary name. Empty -> fallback. */\nexport function slugify(name: string, fallback = \"item\"): string {\n const slug = name\n .normalize(\"NFKD\")\n .replace(/[^\\x20-\\x7E]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 32)\n .replace(/-+$/g, \"\");\n return slug || fallback;\n}\n\n/** id = slug(name) + \"-\" + random. Readable yet safe for offline multi-node creation. */\nexport function makeId(name: string, fallback = \"item\"): string {\n return `${slugify(name, fallback)}-${randomSuffix()}`;\n}\n\n/** Entity kinds whose ids carry a type prefix. */\nexport type Kind = \"db\" | \"prop\" | \"rec\" | \"doc\" | \"blk\" | \"site\" | \"sf\";\n\nconst KINDS: ReadonlySet<string> = new Set<Kind>([\n \"db\",\n \"prop\",\n \"rec\",\n \"doc\",\n \"blk\",\n \"site\",\n \"sf\",\n]);\n\n/**\n * Typed id = \"<kind>_<slug>-<rand>\". `slugify` emits only [a-z0-9-] and\n * `randomSuffix` only base36, so the FIRST \"_\" is unambiguously the type\n * separator — `idKind` recovers the kind, and legacy ids (no \"_\") read as null.\n */\nexport function newId(kind: Kind, name: string, fallback: string = kind): string {\n return `${kind}_${slugify(name, fallback)}-${randomSuffix()}`;\n}\n\n/** The kind encoded in a typed id, or null for legacy (prefix-less) ids. */\nexport function idKind(id: string): Kind | null {\n const i = id.indexOf(\"_\");\n if (i <= 0) return null;\n const prefix = id.slice(0, i);\n return KINDS.has(prefix) ? (prefix as Kind) : null;\n}\n",
|
|
7
|
-
"import type {
|
|
8
|
-
"import type {
|
|
8
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { randomSuffix } from \"./ids.ts\";\n\n/** Stable per-machine node id, persisted in the meta table. */\nexport function getNodeId(db: DbDriver): string {\n const row = db\n .query(\"SELECT value FROM meta WHERE key = 'node_id'\")\n .get() as { value: string } | null;\n if (row) return row.value;\n const id = randomSuffix(8);\n db.query(\"INSERT INTO meta (key, value) VALUES ('node_id', ?)\").run(id);\n return id;\n}\n",
|
|
9
|
+
"import type { DbDriver } from \"./driver.ts\";\n\n// Hybrid Logical Clock. String form `<millis:15>-<counter:hex4>-<node>` so that\n// lexicographic order == causal/total order (ASCII, fixed-width numeric parts).\n\nexport interface Hlc {\n millis: number;\n counter: number;\n node: string;\n}\n\nexport function formatHlc(h: Hlc): string {\n return `${String(h.millis).padStart(15, \"0\")}-${h.counter\n .toString(16)\n .padStart(4, \"0\")}-${h.node}`;\n}\n\nexport function parseHlc(s: string): Hlc {\n const i1 = s.indexOf(\"-\");\n const i2 = s.indexOf(\"-\", i1 + 1);\n return {\n millis: Number(s.slice(0, i1)),\n counter: parseInt(s.slice(i1 + 1, i2), 16),\n node: s.slice(i2 + 1),\n };\n}\n\nfunction readLast(db: DbDriver, node: string): Hlc {\n const row = db.query(\"SELECT value FROM meta WHERE key = 'hlc'\").get() as\n | { value: string }\n | null;\n return row ? parseHlc(row.value) : { millis: 0, counter: 0, node };\n}\n\nfunction writeLast(db: DbDriver, h: Hlc): void {\n db.query(\n \"INSERT INTO meta (key, value) VALUES ('hlc', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value\",\n ).run(formatHlc(h));\n}\n\n/** Issue a new timestamp for a local event, advancing the persisted clock. */\nexport function nextHlc(db: DbDriver, node: string, now = Date.now()): string {\n const last = readLast(db, node);\n const millis = Math.max(last.millis, now);\n const counter = millis === last.millis ? last.counter + 1 : 0;\n const h: Hlc = { millis, counter, node };\n writeLast(db, h);\n return formatHlc(h);\n}\n\n/** Advance the local clock to account for an observed remote timestamp. */\nexport function observeHlc(\n db: DbDriver,\n node: string,\n remote: string,\n now = Date.now(),\n): void {\n const last = readLast(db, node);\n const r = parseHlc(remote);\n const millis = Math.max(last.millis, r.millis, now);\n let counter: number;\n if (millis === last.millis && millis === r.millis)\n counter = Math.max(last.counter, r.counter) + 1;\n else if (millis === last.millis) counter = last.counter + 1;\n else if (millis === r.millis) counter = r.counter + 1;\n else counter = 0;\n writeLast(db, { millis, counter, node });\n}\n",
|
|
9
10
|
"// Pure markdown <-> block conversion and diffing. A document body is a sequence\n// of blocks separated by blank lines; fenced code blocks (``` / ~~~) are kept\n// whole so their internal blank lines don't split them. No DB dependency.\n\n/**\n * A document block plus the blank lines the user left after it. `blankAfter` is\n * the count *beyond* the standard single-blank-line separator (so a normal\n * paragraph break is 0); for the last block it's the trailing blank-line run.\n * This is what lets deliberate vertical spacing survive a save/reload without\n * representing blank lines as zero-content blocks (which would churn the\n * text-keyed reconcile). See [[blocks]] doc-block model.\n */\nexport interface DocBlock {\n text: string;\n blankAfter: number;\n}\n\n/**\n * Split markdown into doc blocks, preserving blank-line runs as `blankAfter`.\n * Leading blank lines (before the first block) are dropped; one blank line\n * between two blocks is the standard separator, every extra blank line is kept.\n */\nexport function parseDocBlocks(md: string): DocBlock[] {\n if (!md) return [];\n const lines = md.replace(/\\r\\n?/g, \"\\n\").split(\"\\n\");\n const blocks: DocBlock[] = [];\n let cur: string[] = [];\n let fenceChar: \"`\" | \"~\" | null = null;\n let fenceLen = 0;\n\n const closeBlock = () => {\n if (cur.length) {\n blocks.push({ text: cur.join(\"\\n\"), blankAfter: 0 });\n cur = [];\n }\n };\n const onBlank = () => {\n closeBlock();\n // Count toward the preceding block; a blank line before any block (leading\n // whitespace) has nowhere to attach and is dropped.\n if (blocks.length) blocks[blocks.length - 1]!.blankAfter++;\n };\n\n for (const raw of lines) {\n if (fenceChar) {\n cur.push(raw);\n const m = raw.match(/^\\s*(`{3,}|~{3,})\\s*$/);\n if (m && m[1]![0] === fenceChar && m[1]!.length >= fenceLen) {\n closeBlock();\n fenceChar = null;\n fenceLen = 0;\n }\n continue;\n }\n const open = raw.match(/^\\s*(`{3,}|~{3,})/);\n if (open) {\n closeBlock();\n fenceChar = open[1]![0] as \"`\" | \"~\";\n fenceLen = open[1]!.length;\n cur.push(raw);\n } else if (raw.trim() === \"\") {\n onBlank();\n } else {\n cur.push(raw);\n }\n }\n closeBlock(); // trailing paragraph or unterminated fence\n\n // Convert raw blank-line counts to \"extra beyond the standard separator\". The\n // last block keeps its raw count (trailing blanks have no following separator).\n for (let i = 0; i < blocks.length - 1; i++)\n blocks[i]!.blankAfter = Math.max(0, blocks[i]!.blankAfter - 1);\n return blocks;\n}\n\n/** Serialize doc blocks back to a body, re-emitting kept blank-line runs. */\nexport function serializeDocBlocks(\n blocks: readonly { text: string | null; blankAfter?: number }[],\n): string {\n const live = blocks.filter((b): b is { text: string; blankAfter?: number } => !!b.text && b.text.length > 0);\n const out: string[] = [];\n live.forEach((b, i) => {\n out.push(...b.text.split(\"\\n\"));\n const extra = Math.max(0, b.blankAfter ?? 0);\n if (i < live.length - 1) out.push(\"\"); // standard single-blank-line separator\n for (let k = 0; k < extra; k++) out.push(\"\");\n });\n return out.join(\"\\n\");\n}\n\nexport type ReconcileItem = { keep: number } | { insert: string };\nexport interface ReconcilePlan {\n /** The new block sequence, each item either reusing an old block or inserting text. */\n items: ReconcileItem[];\n /** Old block indices that are no longer present. */\n deleted: number[];\n}\n\n/**\n * Align a new sequence of block texts against the old one. Unchanged blocks\n * (exact text match, in order — the LCS) are kept by index so their identity and\n * order survive; everything else in a gap is a delete (old) or insert (new).\n */\nexport function reconcile(oldTexts: string[], newTexts: string[]): ReconcilePlan {\n const keep = lcs(oldTexts, newTexts);\n const keptOld = new Set(keep.map((p) => p[0]));\n const newToOld = new Map(keep.map((p) => [p[1], p[0]]));\n\n const items: ReconcileItem[] = newTexts.map((text, ni) =>\n newToOld.has(ni) ? { keep: newToOld.get(ni)! } : { insert: text },\n );\n const deleted: number[] = [];\n for (let oi = 0; oi < oldTexts.length; oi++)\n if (!keptOld.has(oi)) deleted.push(oi);\n\n return { items, deleted };\n}\n\n/** Longest common subsequence as aligned (oldIndex, newIndex) pairs. */\nfunction lcs(a: string[], b: string[]): [number, number][] {\n const m = a.length;\n const n = b.length;\n const dp: number[][] = Array.from({ length: m + 1 }, () =>\n new Array<number>(n + 1).fill(0),\n );\n for (let i = m - 1; i >= 0; i--)\n for (let j = n - 1; j >= 0; j--)\n dp[i]![j] =\n a[i] === b[j]\n ? dp[i + 1]![j + 1]! + 1\n : Math.max(dp[i + 1]![j]!, dp[i]![j + 1]!);\n\n const pairs: [number, number][] = [];\n let i = 0;\n let j = 0;\n while (i < m && j < n) {\n if (a[i] === b[j]) {\n pairs.push([i, j]);\n i++;\n j++;\n } else if (dp[i + 1]![j]! >= dp[i]![j + 1]!) {\n i++;\n } else {\n j++;\n }\n }\n return pairs;\n}\n",
|
|
10
|
-
"import type { Database } from \"bun:sqlite\";\nimport { getNodeId } from \"./node.ts\";\nimport { nextHlc, observeHlc } from \"./hlc.ts\";\nimport { serializeDocBlocks } from \"./blocks.ts\";\n\n// A single field assignment — the unit of replication. `value` is JSON-encoded\n// (or null). `dataset`/`row_id`/`col` identify the CRDT register.\nexport interface Change {\n hlc: string;\n node_id: string;\n dataset: string;\n row_id: string;\n col: string;\n value: string | null;\n}\n\n// Domain tables addressable by id, with their write-allowed columns. `col` is\n// interpolated into SQL, so it MUST be validated against these allowlists\n// (changes can arrive from untrusted sync peers).\nconst DOMAIN: Record<string, { table: string; cols: Set<string> }> = {\n databases: {\n table: \"databases\",\n cols: new Set([\"name\", \"icon\", \"created_hlc\", \"__deleted\"]),\n },\n properties: {\n table: \"properties\",\n cols: new Set([\"database_id\", \"name\", \"type\", \"config\", \"position\", \"__deleted\"]),\n },\n documents: {\n table: \"documents\",\n cols: new Set([\"title\", \"body\", \"database_id\", \"parent_id\", \"created_hlc\", \"order_key\", \"__deleted\"]),\n },\n doc_blocks: {\n table: \"doc_blocks\",\n cols: new Set([\"doc_id\", \"text\", \"order_key\", \"blank_after\", \"__deleted\"]),\n },\n sites: {\n table: \"sites\",\n cols: new Set([\"name\", \"title\", \"created_hlc\", \"__deleted\"]),\n },\n site_files: {\n table: \"site_files\",\n cols: new Set([\n \"site_id\",\n \"path\",\n \"content_type\",\n \"encoding\",\n \"content\",\n \"created_hlc\",\n \"__deleted\",\n ]),\n },\n};\n\n// The `records` dataset is special: these cols hit the `records` table, any\n// other col is a property cell (col == property id) folded into records.data JSON.\nconst RECORD_META = new Set([\"database_id\", \"created_hlc\", \"order_key\", \"__deleted\"]);\n\ntype SqlValue = string | number | null;\n\nfunction encodeScalar(val: unknown): SqlValue {\n if (val === null || val === undefined) return null;\n if (typeof val === \"boolean\") return val ? 1 : 0;\n if (typeof val === \"number\") return val;\n if (typeof val === \"string\") return val;\n return JSON.stringify(val);\n}\n\nfunction ensureRow(db: Database, table: string, id: string): void {\n db.query(`INSERT OR IGNORE INTO ${table} (id) VALUES (?)`).run(id);\n}\n\n/** A doc is \"block-managed\" once it has any block row; blocks then own its body. */\nfunction isBlockManaged(db: Database, docId: string): boolean {\n return (\n db.query(\"SELECT 1 AS x FROM doc_blocks WHERE doc_id = ? LIMIT 1\").get(docId) !=\n null\n );\n}\n\n/** Rebuild a document's materialized body from its live blocks (ordered). */\nfunction recomputeDocBody(db: Database, docId: string): void {\n const rows = db\n .query(\n \"SELECT text, blank_after FROM doc_blocks WHERE doc_id = ? AND __deleted = 0 ORDER BY order_key, id\",\n )\n .all(docId) as { text: string | null; blank_after: number | null }[];\n ensureRow(db, \"documents\", docId);\n db.query(\"UPDATE documents SET body = ? WHERE id = ?\").run(\n serializeDocBlocks(rows.map((r) => ({ text: r.text, blankAfter: r.blank_after ?? 0 }))),\n docId,\n );\n}\n\nfunction materialize(\n db: Database,\n dataset: string,\n rowId: string,\n col: string,\n valueJson: string | null,\n): void {\n if (dataset === \"records\") {\n if (RECORD_META.has(col)) {\n ensureRow(db, \"records\", rowId);\n const v = valueJson === null ? null : JSON.parse(valueJson);\n db.query(`UPDATE records SET \"${col}\" = ? WHERE id = ?`).run(\n encodeScalar(v),\n rowId,\n );\n } else {\n // Property cell -> a key in the record's JSON `data`. ensureRow first:\n // a cell write can arrive before database_id (out-of-order sync).\n ensureRow(db, \"records\", rowId);\n if (valueJson === null) {\n db.query(\n `UPDATE records SET data = json_remove(data, '$.\"' || ? || '\"') WHERE id = ?`,\n ).run(col, rowId);\n } else {\n // json(?) embeds the value with its real JSON type (number/array/object),\n // not as a quoted string.\n db.query(\n `UPDATE records SET data = json_set(coalesce(data, '{}'), '$.\"' || ? || '\"', json(?)) WHERE id = ?`,\n ).run(col, valueJson, rowId);\n }\n }\n return;\n }\n\n const d = DOMAIN[dataset];\n if (!d || !d.cols.has(col)) return; // unknown dataset/column -> ignore (forward-compat)\n\n // Legacy documents.body register is ignored once the doc is block-managed:\n // blocks are authoritative and recompute the body cache themselves.\n if (dataset === \"documents\" && col === \"body\" && isBlockManaged(db, rowId)) return;\n\n ensureRow(db, d.table, rowId);\n const v = valueJson === null ? null : JSON.parse(valueJson);\n db.query(`UPDATE ${d.table} SET \"${col}\" = ? WHERE id = ?`).run(\n encodeScalar(v),\n rowId,\n );\n\n // A block change re-derives its document's body cache. doc_id may not have\n // materialized yet (out-of-order sync) — the later doc_id write recomputes.\n if (dataset === \"doc_blocks\") {\n const blk = db\n .query(\"SELECT doc_id FROM doc_blocks WHERE id = ?\")\n .get(rowId) as { doc_id: string | null } | null;\n if (blk?.doc_id) recomputeDocBody(db, blk.doc_id);\n }\n}\n\n/**\n * Record a change in the oplog (idempotent) and, if it is the latest write for\n * its register, materialize it. Order-independent: convergence holds regardless\n * of the order changes are applied, because the winner is recomputed as the max\n * HLC over the full oplog for that register.\n */\nexport function applyChange(db: Database, c: Change): boolean {\n db.query(\n \"INSERT OR IGNORE INTO crdt_changes (hlc, node_id, dataset, row_id, col, value) VALUES (?, ?, ?, ?, ?, ?)\",\n ).run(c.hlc, c.node_id, c.dataset, c.row_id, c.col, c.value);\n\n const cur = db\n .query(\n \"SELECT MAX(hlc) AS h FROM crdt_changes WHERE dataset = ? AND row_id = ? AND col = ?\",\n )\n .get(c.dataset, c.row_id, c.col) as { h: string | null };\n\n if (cur.h !== c.hlc) return false; // a newer write already wins\n materialize(db, c.dataset, c.row_id, c.col, c.value);\n return true;\n}\n\n/** Apply a local write: assign a fresh HLC, append to oplog, materialize. */\nexport function emit(\n db: Database,\n dataset: string,\n rowId: string,\n col: string,\n value: unknown,\n): Change {\n const node = getNodeId(db);\n const change: Change = {\n hlc: nextHlc(db, node),\n node_id: node,\n dataset,\n row_id: rowId,\n col,\n value: value === undefined ? null : JSON.stringify(value),\n };\n applyChange(db, change);\n return change;\n}\n\n/** Apply multiple local field writes to the same row. */\nexport function emitFields(\n db: Database,\n dataset: string,\n rowId: string,\n fields: Record<string, unknown>,\n): Change[] {\n const out: Change[] = [];\n for (const [col, value] of Object.entries(fields)) {\n out.push(emit(db, dataset, rowId, col, value));\n }\n return out;\n}\n\n/** Apply remote changes from a sync peer (advances clock, then merges). */\nexport function ingest(db: Database, changes: Change[]): number {\n const node = getNodeId(db);\n let applied = 0;\n const tx = db.transaction((cs: Change[]) => {\n for (const c of cs) {\n observeHlc(db, node, c.hlc);\n if (applyChange(db, c)) applied++;\n }\n });\n tx(changes);\n return applied;\n}\n\n/** All oplog changes with HLC strictly greater than `since` (test/debug helper). */\nexport function changesSince(db: Database, since: string): Change[] {\n return db\n .query(\n \"SELECT hlc, node_id, dataset, row_id, col, value FROM crdt_changes WHERE hlc > ? ORDER BY hlc\",\n )\n .all(since) as Change[];\n}\n\nexport interface ChangeBatch {\n changes: Change[];\n cursor: number;\n}\n\n/**\n * Changes inserted after `seq` (a local rowid), in insertion order, plus the\n * new high-water cursor. Used for replication: insertion order never skips a\n * change even when clocks are skewed.\n */\nexport function changesAfterSeq(db: Database, seq: number): ChangeBatch {\n const rows = db\n .query(\n \"SELECT rowid AS seq, hlc, node_id, dataset, row_id, col, value FROM crdt_changes WHERE rowid > ? ORDER BY rowid\",\n )\n .all(seq) as (Change & { seq: number })[];\n const last = rows[rows.length - 1];\n const cursor = last ? last.seq : seq;\n return { changes: rows.map(({ seq: _seq, ...c }) => c), cursor };\n}\n",
|
|
11
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { getNodeId } from \"./node.ts\";\nimport { nextHlc, observeHlc } from \"./hlc.ts\";\nimport { serializeDocBlocks } from \"./blocks.ts\";\nimport { randomSuffix } from \"./ids.ts\";\nimport type { ColumnsOf } from \"./sqlcols.ts\";\n\n// A single field assignment — the unit of replication. `value` is JSON-encoded\n// (or null). `dataset`/`row_id`/`col` identify the CRDT register. `txn` groups\n// the changes of one logical mutation (one save / one API call) so history can\n// render them as a single revision; it replicates but plays no role in LWW.\nexport interface Change {\n hlc: string;\n node_id: string;\n dataset: string;\n row_id: string;\n col: string;\n value: string | null;\n txn?: string | null;\n}\n\n/** Oplog SELECT list, locked to the Change interface (also reused by history). */\nexport const CHANGE_COLS = [\"hlc\", \"node_id\", \"dataset\", \"row_id\", \"col\", \"value\", \"txn\"] as const;\nconst _changeCols: ColumnsOf<Change, typeof CHANGE_COLS> = CHANGE_COLS;\nexport const CHANGE_SELECT = CHANGE_COLS.join(\", \");\n\n// Current change group. Core mutations are synchronous and single-threaded, so\n// a module-level slot (set around each public mutator via grouped()) is enough.\nlet currentTxn: string | null = null;\n\n/**\n * Run `fn` with all emits stamped with one shared txn id. Nested calls keep the\n * outermost group (a revert that calls updateDocument is ONE revision). `label`\n * prefixes the id (\"repair:\", \"revert:\") so history can classify the source.\n */\nexport function withChangeGroup<T>(label: string | null, fn: () => T): T {\n if (currentTxn !== null) return fn();\n currentTxn = (label ? label + \":\" : \"\") + randomSuffix(8);\n try {\n return fn();\n } finally {\n currentTxn = null;\n }\n}\n\n/** Wrap a mutator so its body runs inside one change group. */\nexport function grouped<A extends unknown[], R>(\n fn: (...args: A) => R,\n label: string | null = null,\n): (...args: A) => R {\n return (...args) => withChangeGroup(label, () => fn(...args));\n}\n\n// Domain tables addressable by id, with their write-allowed columns. `col` is\n// interpolated into SQL, so it MUST be validated against these allowlists\n// (changes can arrive from untrusted sync peers).\nconst DOMAIN: Record<string, { table: string; cols: Set<string> }> = {\n databases: {\n table: \"databases\",\n cols: new Set([\"name\", \"icon\", \"created_hlc\", \"__deleted\"]),\n },\n properties: {\n table: \"properties\",\n cols: new Set([\"database_id\", \"name\", \"type\", \"config\", \"position\", \"__deleted\"]),\n },\n documents: {\n table: \"documents\",\n cols: new Set([\"title\", \"body\", \"database_id\", \"parent_id\", \"created_hlc\", \"order_key\", \"__deleted\"]),\n },\n doc_blocks: {\n table: \"doc_blocks\",\n cols: new Set([\"doc_id\", \"text\", \"order_key\", \"blank_after\", \"__deleted\"]),\n },\n sites: {\n table: \"sites\",\n cols: new Set([\"name\", \"title\", \"created_hlc\", \"__deleted\"]),\n },\n site_files: {\n table: \"site_files\",\n cols: new Set([\n \"site_id\",\n \"path\",\n \"content_type\",\n \"encoding\",\n \"content\",\n \"created_hlc\",\n \"__deleted\",\n ]),\n },\n};\n\n// The `records` dataset is special: these cols hit the `records` table, any\n// other col is a property cell (col == property id) folded into records.data JSON.\nconst RECORD_META = new Set([\"database_id\", \"created_hlc\", \"order_key\", \"__deleted\"]);\n\ntype SqlValue = string | number | null;\n\nfunction encodeScalar(val: unknown): SqlValue {\n if (val === null || val === undefined) return null;\n if (typeof val === \"boolean\") return val ? 1 : 0;\n if (typeof val === \"number\") return val;\n if (typeof val === \"string\") return val;\n return JSON.stringify(val);\n}\n\nfunction ensureRow(db: DbDriver, table: string, id: string): void {\n db.query(`INSERT OR IGNORE INTO ${table} (id) VALUES (?)`).run(id);\n}\n\n/** A doc is \"block-managed\" once it has any block row; blocks then own its body. */\nfunction isBlockManaged(db: DbDriver, docId: string): boolean {\n return (\n db.query(\"SELECT 1 AS x FROM doc_blocks WHERE doc_id = ? LIMIT 1\").get(docId) !=\n null\n );\n}\n\n/** Rebuild a document's materialized body from its live blocks (ordered). */\nfunction recomputeDocBody(db: DbDriver, docId: string): void {\n const rows = db\n .query(\n \"SELECT text, blank_after FROM doc_blocks WHERE doc_id = ? AND __deleted = 0 ORDER BY order_key, id\",\n )\n .all(docId) as { text: string | null; blank_after: number | null }[];\n ensureRow(db, \"documents\", docId);\n db.query(\"UPDATE documents SET body = ? WHERE id = ?\").run(\n serializeDocBlocks(rows.map((r) => ({ text: r.text, blankAfter: r.blank_after ?? 0 }))),\n docId,\n );\n}\n\nfunction materialize(\n db: DbDriver,\n dataset: string,\n rowId: string,\n col: string,\n valueJson: string | null,\n): void {\n if (dataset === \"records\") {\n if (RECORD_META.has(col)) {\n ensureRow(db, \"records\", rowId);\n const v = valueJson === null ? null : JSON.parse(valueJson);\n db.query(`UPDATE records SET \"${col}\" = ? WHERE id = ?`).run(\n encodeScalar(v),\n rowId,\n );\n } else {\n // Property cell -> a key in the record's JSON `data`. ensureRow first:\n // a cell write can arrive before database_id (out-of-order sync).\n ensureRow(db, \"records\", rowId);\n if (valueJson === null) {\n db.query(\n `UPDATE records SET data = json_remove(data, '$.\"' || ? || '\"') WHERE id = ?`,\n ).run(col, rowId);\n } else {\n // json(?) embeds the value with its real JSON type (number/array/object),\n // not as a quoted string.\n db.query(\n `UPDATE records SET data = json_set(coalesce(data, '{}'), '$.\"' || ? || '\"', json(?)) WHERE id = ?`,\n ).run(col, valueJson, rowId);\n }\n }\n return;\n }\n\n const d = DOMAIN[dataset];\n if (!d || !d.cols.has(col)) return; // unknown dataset/column -> ignore (forward-compat)\n\n // Legacy documents.body register is ignored once the doc is block-managed:\n // blocks are authoritative and recompute the body cache themselves.\n if (dataset === \"documents\" && col === \"body\" && isBlockManaged(db, rowId)) return;\n\n ensureRow(db, d.table, rowId);\n const v = valueJson === null ? null : JSON.parse(valueJson);\n db.query(`UPDATE ${d.table} SET \"${col}\" = ? WHERE id = ?`).run(\n encodeScalar(v),\n rowId,\n );\n\n // A block change re-derives its document's body cache. doc_id may not have\n // materialized yet (out-of-order sync) — the later doc_id write recomputes.\n if (dataset === \"doc_blocks\") {\n const blk = db\n .query(\"SELECT doc_id FROM doc_blocks WHERE id = ?\")\n .get(rowId) as { doc_id: string | null } | null;\n if (blk?.doc_id) recomputeDocBody(db, blk.doc_id);\n }\n}\n\n/**\n * Record a change in the oplog (idempotent) and, if it is the latest write for\n * its register, materialize it. Order-independent: convergence holds regardless\n * of the order changes are applied, because the winner is recomputed as the max\n * HLC over the full oplog for that register.\n */\nexport function applyChange(db: DbDriver, c: Change): boolean {\n db.query(\n \"INSERT OR IGNORE INTO crdt_changes (hlc, node_id, dataset, row_id, col, value, txn) VALUES (?, ?, ?, ?, ?, ?, ?)\",\n ).run(c.hlc, c.node_id, c.dataset, c.row_id, c.col, c.value, c.txn ?? null);\n\n const cur = db\n .query(\n \"SELECT MAX(hlc) AS h FROM crdt_changes WHERE dataset = ? AND row_id = ? AND col = ?\",\n )\n .get(c.dataset, c.row_id, c.col) as { h: string | null };\n\n if (cur.h !== c.hlc) return false; // a newer write already wins\n materialize(db, c.dataset, c.row_id, c.col, c.value);\n return true;\n}\n\n/** Apply a local write: assign a fresh HLC, append to oplog, materialize. */\nexport function emit(\n db: DbDriver,\n dataset: string,\n rowId: string,\n col: string,\n value: unknown,\n): Change {\n const node = getNodeId(db);\n const change: Change = {\n hlc: nextHlc(db, node),\n node_id: node,\n dataset,\n row_id: rowId,\n col,\n value: value === undefined ? null : JSON.stringify(value),\n txn: currentTxn,\n };\n applyChange(db, change);\n return change;\n}\n\n/** Apply multiple local field writes to the same row. */\nexport function emitFields(\n db: DbDriver,\n dataset: string,\n rowId: string,\n fields: Record<string, unknown>,\n): Change[] {\n const out: Change[] = [];\n for (const [col, value] of Object.entries(fields)) {\n out.push(emit(db, dataset, rowId, col, value));\n }\n return out;\n}\n\n/** Apply remote changes from a sync peer (advances clock, then merges). */\nexport function ingest(db: DbDriver, changes: Change[]): number {\n const node = getNodeId(db);\n let applied = 0;\n const tx = db.transaction((cs: Change[]) => {\n for (const c of cs) {\n observeHlc(db, node, c.hlc);\n if (applyChange(db, c)) applied++;\n }\n });\n tx(changes);\n return applied;\n}\n\n/** All oplog changes with HLC strictly greater than `since` (test/debug helper). */\nexport function changesSince(db: DbDriver, since: string): Change[] {\n return db\n .query(`SELECT ${CHANGE_SELECT} FROM crdt_changes WHERE hlc > ? ORDER BY hlc`)\n .all(since) as Change[];\n}\n\nexport interface ChangeBatch {\n changes: Change[];\n cursor: number;\n}\n\nexport interface ChangesAfterOpts {\n /** Max rows to return — pagination for large pulls (initial hydration). */\n limit?: number;\n /** Datasets to omit (partial replicas, e.g. a phone skipping site_files). */\n excludeDatasets?: string[];\n}\n\n/**\n * Changes inserted after `seq` (a local rowid), in insertion order, plus the\n * new high-water cursor. Used for replication: insertion order never skips a\n * change even when clocks are skewed.\n *\n * With `limit`, the cursor stops at the last returned row so the next pull\n * resumes there; when the scan is exhausted (fewer rows than the limit, or no\n * limit) the cursor jumps to the table's high-water rowid so excluded-dataset\n * tails aren't rescanned every round.\n */\nexport function changesAfterSeq(\n db: DbDriver,\n seq: number,\n opts: ChangesAfterOpts = {},\n): ChangeBatch {\n const exclude = opts.excludeDatasets ?? [];\n const where = exclude.length\n ? `rowid > ? AND dataset NOT IN (${exclude.map(() => \"?\").join(\", \")})`\n : \"rowid > ?\";\n const limitSql = opts.limit != null && opts.limit > 0 ? ` LIMIT ${Math.floor(opts.limit)}` : \"\";\n const rows = db\n .query(\n `SELECT rowid AS seq, ${CHANGE_SELECT} FROM crdt_changes WHERE ${where} ORDER BY rowid${limitSql}`,\n )\n .all(seq, ...exclude) as (Change & { seq: number })[];\n\n const exhausted = opts.limit == null || opts.limit <= 0 || rows.length < opts.limit;\n let cursor: number;\n if (exhausted) {\n // Never move backwards: compaction can leave MAX(rowid) below a cursor a\n // client already holds, and regressing it would re-pull old rows.\n const top = db.query(\"SELECT MAX(rowid) AS m FROM crdt_changes\").get() as { m: number | null };\n cursor = Math.max(seq, top.m ?? seq);\n } else {\n cursor = rows[rows.length - 1]!.seq;\n }\n return { changes: rows.map(({ seq: _seq, ...c }) => c), cursor };\n}\n",
|
|
11
12
|
"import { join } from \"node:path\";\nimport { cacheDir } from \"./paths.ts\";\n\nexport interface BlobInfo {\n hash: string;\n path: string;\n size: number;\n}\n\nexport function blobPath(hash: string): string {\n return join(cacheDir(), hash);\n}\n\n/** Store bytes content-addressed (sha256) under cache/. Returns its hash + path. */\nexport async function putBlob(data: ArrayBuffer | Uint8Array | string): Promise<BlobInfo> {\n const bytes =\n typeof data === \"string\"\n ? new TextEncoder().encode(data)\n : data instanceof Uint8Array\n ? data\n : new Uint8Array(data);\n const hasher = new Bun.CryptoHasher(\"sha256\");\n hasher.update(bytes);\n const hash = hasher.digest(\"hex\");\n const path = blobPath(hash);\n if (!(await Bun.file(path).exists())) await Bun.write(path, bytes);\n return { hash, path, size: bytes.byteLength };\n}\n\nexport async function getBlob(hash: string): Promise<Uint8Array | null> {\n const file = Bun.file(blobPath(hash));\n if (!(await file.exists())) return null;\n return new Uint8Array(await file.arrayBuffer());\n}\n",
|
|
12
|
-
"import type { Database } from \"bun:sqlite\";\nimport { newId } from \"./ids.ts\";\nimport { emit } from \"./crdt.ts\";\nimport { putBlob, getBlob } from \"./cache.ts\";\n\n// A \"site\" is a named bucket of files (Supabase-Storage-style) served at\n// /sites/<name>/. Everything is written through emit() so sites replicate over\n// /sync like records and documents. File bytes are stored inline as utf8 (text)\n// or base64 (small binaries) so they ride the oplog; large binaries offload to\n// the content-addressed cache (encoding=\"blob\"), whose bytes are node-local.\n\nexport interface SiteRow {\n id: string;\n name: string;\n title: string | null;\n created_hlc: string;\n}\n\nexport type FileEncoding = \"utf8\" | \"base64\" | \"blob\";\n\nexport interface SiteFileRow {\n id: string;\n site_id: string;\n path: string;\n content_type: string;\n encoding: FileEncoding;\n /** Inline text/base64, or a blob hash when encoding === \"blob\". */\n content: string | null;\n}\n\n/** Manifest entry — file metadata without the (potentially large) content. */\nexport type SiteFileSummary = Omit<SiteFileRow, \"content\">;\n\n/** Binaries at or below this size are stored inline (base64); larger go to a blob. */\nconst INLINE_LIMIT = 256 * 1024;\n\n// ---- mime / encoding helpers -----------------------------------------------\n\nconst MIME: Record<string, string> = {\n html: \"text/html; charset=utf-8\",\n htm: \"text/html; charset=utf-8\",\n css: \"text/css; charset=utf-8\",\n js: \"text/javascript; charset=utf-8\",\n mjs: \"text/javascript; charset=utf-8\",\n json: \"application/json; charset=utf-8\",\n svg: \"image/svg+xml\",\n txt: \"text/plain; charset=utf-8\",\n md: \"text/markdown; charset=utf-8\",\n xml: \"application/xml; charset=utf-8\",\n webmanifest: \"application/manifest+json\",\n ico: \"image/x-icon\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n webp: \"image/webp\",\n avif: \"image/avif\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n ttf: \"font/ttf\",\n otf: \"font/otf\",\n pdf: \"application/pdf\",\n wasm: \"application/wasm\",\n};\n\n/** Guess a content type from a file path's extension; default octet-stream. */\nexport function inferContentType(path: string): string {\n const ext = path.slice(path.lastIndexOf(\".\") + 1).toLowerCase();\n return MIME[ext] ?? \"application/octet-stream\";\n}\n\n// ---- name / path normalization ---------------------------------------------\n\n/**\n * Canonical site slug: lowercase, [a-z0-9-] only, no leading/trailing/repeated\n * dashes. Applied at every write and lookup so the served URL (/sites/<name>/),\n * duplicate detection, and sync replication all agree on one form regardless of\n * how the name was typed (CLI, API, or browser). Throws when nothing usable\n * remains (empty, or all-punctuation). Matches the WebUI's slugify exactly.\n */\nexport function normalizeSiteName(raw: string): string {\n const slug = raw\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n if (!slug) throw new Error(`invalid site name: ${JSON.stringify(raw)}`);\n return slug;\n}\n\n/**\n * Canonical in-site file path: drop empty / \".\" segments, resolve \"..\" within\n * the bucket, strip leading and duplicate slashes. Files live in SQLite keyed by\n * this exact string (there is no filesystem behind them), so normalizing at the\n * write/serve boundary keeps storage, URL routing, and deletes consistent no\n * matter how the path was typed or percent-encoded. May return \"\" (caller decides).\n */\nexport function normalizeSitePath(raw: string): string {\n const segs: string[] = [];\n for (const seg of raw.split(\"/\")) {\n if (seg === \"\" || seg === \".\") continue;\n if (seg === \"..\") segs.pop();\n else segs.push(seg);\n }\n return segs.join(\"/\");\n}\n\n/** Text-ish types are stored as readable utf8; everything else is binary. */\nfunction isTextType(contentType: string): boolean {\n const ct = contentType.toLowerCase();\n return (\n ct.startsWith(\"text/\") ||\n ct.startsWith(\"application/json\") ||\n ct.startsWith(\"application/manifest+json\") ||\n ct.startsWith(\"application/xml\") ||\n ct.startsWith(\"text/javascript\") ||\n ct.startsWith(\"application/javascript\") ||\n ct.startsWith(\"image/svg+xml\")\n );\n}\n\nfunction toBytes(data: string | Uint8Array | ArrayBuffer): Uint8Array {\n if (typeof data === \"string\") return new TextEncoder().encode(data);\n return data instanceof Uint8Array ? data : new Uint8Array(data);\n}\n\n// ---- sites -----------------------------------------------------------------\n\nexport function createSite(db: Database, opts: { name: string; title?: string }): SiteRow {\n const name = normalizeSiteName(opts.name);\n if (getSiteByName(db, name)) throw new Error(`site name already exists: ${name}`);\n const id = newId(\"site\", name);\n const first = emit(db, \"sites\", id, \"name\", name);\n emit(db, \"sites\", id, \"created_hlc\", first.hlc);\n if (opts.title !== undefined) emit(db, \"sites\", id, \"title\", opts.title);\n return getSite(db, id)!;\n}\n\nexport function getSite(db: Database, id: string): SiteRow | null {\n return db\n .query(\"SELECT id, name, title, created_hlc FROM sites WHERE id = ? AND __deleted = 0\")\n .get(id) as SiteRow | null;\n}\n\n/** Most recently created live site with this name (URL routing). */\nexport function getSiteByName(db: Database, name: string): SiteRow | null {\n // Normalize so lookups, dedup, and URL routing all key off the canonical slug\n // (e.g. \"Demo\" and \"demo\" collide). An unusable name simply matches nothing.\n let slug: string;\n try {\n slug = normalizeSiteName(name);\n } catch {\n return null;\n }\n return db\n .query(\n \"SELECT id, name, title, created_hlc FROM sites WHERE name = ? AND __deleted = 0 ORDER BY created_hlc DESC LIMIT 1\",\n )\n .get(slug) as SiteRow | null;\n}\n\nexport function listSites(db: Database): SiteRow[] {\n return db\n .query(\"SELECT id, name, title, created_hlc FROM sites WHERE __deleted = 0 ORDER BY created_hlc\")\n .all() as SiteRow[];\n}\n\n/** Resolve a site ref (`site_…` id or name) to its row, or throw. */\nexport function resolveSite(db: Database, ref: string): SiteRow {\n const byId = ref.startsWith(\"site_\") ? getSite(db, ref) : null;\n const site = byId ?? getSiteByName(db, ref);\n if (!site) throw new Error(`no such site: ${ref}`);\n return site;\n}\n\n/** Rename a site and/or change its title. Guards against duplicate names. */\nexport function updateSite(\n db: Database,\n id: string,\n opts: { name?: string; title?: string },\n): SiteRow {\n if (!getSite(db, id)) throw new Error(`no such site: ${id}`);\n if (opts.name !== undefined) {\n const name = normalizeSiteName(opts.name);\n const dup = getSiteByName(db, name);\n if (dup && dup.id !== id) throw new Error(`site name already exists: ${name}`);\n emit(db, \"sites\", id, \"name\", name);\n }\n if (opts.title !== undefined) emit(db, \"sites\", id, \"title\", opts.title);\n return getSite(db, id)!;\n}\n\nexport function deleteSite(db: Database, id: string): boolean {\n if (!getSite(db, id)) return false;\n const files = db\n .query(\"SELECT id FROM site_files WHERE site_id = ? AND __deleted = 0\")\n .all(id) as { id: string }[];\n for (const f of files) emit(db, \"site_files\", f.id, \"__deleted\", 1);\n emit(db, \"sites\", id, \"__deleted\", 1);\n return true;\n}\n\n// ---- files -----------------------------------------------------------------\n\n/** Stable id for a (site, path) pair so re-uploads merge instead of duplicate. */\nfunction fileIdFor(db: Database, siteId: string, path: string): string | null {\n const row = db\n .query(\"SELECT id FROM site_files WHERE site_id = ? AND path = ? ORDER BY created_hlc LIMIT 1\")\n .get(siteId, path) as { id: string } | null;\n return row?.id ?? null;\n}\n\n/** Upload or replace one file. Picks utf8 / base64 / blob storage automatically. */\nexport async function putFile(\n db: Database,\n siteId: string,\n path: string,\n opts: { data: string | Uint8Array | ArrayBuffer; contentType?: string },\n): Promise<SiteFileRow> {\n const cleanPath = normalizeSitePath(path);\n if (!cleanPath) throw new Error(`invalid file path: ${JSON.stringify(path)}`);\n const contentType = opts.contentType ?? inferContentType(cleanPath);\n const bytes = toBytes(opts.data);\n\n let encoding: FileEncoding;\n let content: string;\n if (isTextType(contentType)) {\n encoding = \"utf8\";\n content = typeof opts.data === \"string\" ? opts.data : new TextDecoder().decode(bytes);\n } else if (bytes.byteLength <= INLINE_LIMIT) {\n encoding = \"base64\";\n content = Buffer.from(bytes).toString(\"base64\");\n } else {\n encoding = \"blob\";\n content = (await putBlob(bytes)).hash;\n }\n\n const existing = fileIdFor(db, siteId, cleanPath);\n const id = existing ?? newId(\"sf\", cleanPath);\n if (!existing) {\n const first = emit(db, \"site_files\", id, \"site_id\", siteId);\n emit(db, \"site_files\", id, \"path\", cleanPath);\n emit(db, \"site_files\", id, \"created_hlc\", first.hlc);\n }\n emit(db, \"site_files\", id, \"content_type\", contentType);\n emit(db, \"site_files\", id, \"encoding\", encoding);\n emit(db, \"site_files\", id, \"content\", content);\n emit(db, \"site_files\", id, \"__deleted\", 0); // un-delete on re-upload\n\n return db\n .query(\n \"SELECT id, site_id, path, content_type, encoding, content FROM site_files WHERE id = ?\",\n )\n .get(id) as SiteFileRow;\n}\n\nexport function listFiles(db: Database, siteId: string): SiteFileSummary[] {\n return db\n .query(\n \"SELECT id, site_id, path, content_type, encoding FROM site_files WHERE site_id = ? AND __deleted = 0 ORDER BY path\",\n )\n .all(siteId) as SiteFileSummary[];\n}\n\nexport function deleteFile(db: Database, siteId: string, path: string): boolean {\n const id = fileIdFor(db, siteId, normalizeSitePath(path));\n if (!id) return false;\n const live = db.query(\"SELECT __deleted AS d FROM site_files WHERE id = ?\").get(id) as {\n d: number;\n } | null;\n if (!live || live.d) return false;\n emit(db, \"site_files\", id, \"__deleted\", 1);\n return true;\n}\n\n/** Resolve a file to served bytes + content type. \"\" / trailing \"/\" → index.html. */\nexport async function getFileForServe(\n db: Database,\n siteId: string,\n path: string,\n): Promise<{ contentType: string; bytes: Uint8Array } | null> {\n // Resolve directory-style requests to index.html *before* normalizing (the\n // trailing-slash signal is lost once empty segments are dropped), then key the\n // lookup off the same canonical path putFile stored.\n const withIndex = path === \"\" || path.endsWith(\"/\") ? `${path}index.html` : path;\n const p = normalizeSitePath(withIndex);\n if (!p) return null;\n const row = db\n .query(\n \"SELECT content_type, encoding, content FROM site_files WHERE site_id = ? AND path = ? AND __deleted = 0 ORDER BY created_hlc LIMIT 1\",\n )\n .get(siteId, p) as { content_type: string; encoding: FileEncoding; content: string | null } | null;\n if (!row) return null;\n\n const content = row.content ?? \"\";\n let bytes: Uint8Array | null;\n if (row.encoding === \"utf8\") bytes = new TextEncoder().encode(content);\n else if (row.encoding === \"base64\") bytes = new Uint8Array(Buffer.from(content, \"base64\"));\n else bytes = await getBlob(content); // blob hash\n if (!bytes) return null;\n\n return { contentType: row.content_type, bytes };\n}\n",
|
|
13
|
-
"import { fileURLToPath } from \"node:url\";\n\n// Serves the browser WebUI at `/`. This module is imported lazily from\n// server.ts (only when a browser actually hits `/` or `/webui.js`), so neither\n// it nor the Preact bundle ever enters the CLI's startup import graph — zero\n// cost to `mh <command>`.\n\n/** The HTML shell. The Preact app is delivered separately as /webui.js. CSS is\n * inlined here to avoid a third asset route and keep it out of the JS bundle. */\nconst HTML = `<!doctype html>\n<html lang=\"zh\">\n<head>\n<meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n<title>Metahub</title>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<!-- Load web fonts without blocking first paint: media=\"print\" keeps the\n stylesheet non-render-blocking, then onload flips it to \"all\". The page\n paints instantly with the system-font fallbacks baked into --ui/--mono and\n swaps to the web fonts when they arrive (or stays on system fonts offline).\n This is what kept the desktop cold-start white for seconds on slow networks. -->\n<link rel=\"stylesheet\" media=\"print\" onload=\"this.media='all'\" href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap\">\n<noscript><link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap\"></noscript>\n<script>try{document.documentElement.dataset.theme=localStorage.getItem('mh-theme')||'system'}catch(e){}</script>\n<style>\n :root {\n --bg:#ffffff; --surface:#fbfbfa; --surface-2:#f1f1ef; --sidebar:#f7f7f5;\n --fg:#2c2c30; --fg-soft:#5b5b62; --muted:#8a8a93; --line:#ebebe8; --line-strong:#dededb;\n --accent:#4a55d6; --accent-fg:#ffffff; --accent-soft:#eef0ff; --danger:#d6473b; --danger-soft:#fdeceb;\n --hover:rgba(45,45,55,.045); --hover-2:rgba(45,45,55,.08);\n --shadow-sm:0 1px 2px rgba(20,20,40,.06),0 1px 1px rgba(20,20,40,.04);\n --shadow-md:0 4px 12px rgba(20,20,40,.08),0 2px 4px rgba(20,20,40,.05);\n --shadow-lg:0 16px 48px rgba(20,20,40,.16),0 4px 12px rgba(20,20,40,.08);\n --radius:8px; --radius-sm:6px;\n --ui:\"Hanken Grotesk\",-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"PingFang SC\",\"Microsoft YaHei\",sans-serif;\n --mono:\"JetBrains Mono\",ui-monospace,SFMono-Regular,monospace;\n --note-lh:1.6;\n --code-bg:#f8f8f6;\n --hl-cmt:#9a9aa2; --hl-key:#a626a4; --hl-str:#28823f; --hl-num:#b76a00;\n --hl-fn:#3f51d6; --hl-type:#0a7ea4; --hl-var:#c2410c;\n }\n /* Dark palette. Applied (a) when explicitly chosen via [data-theme=\"dark\"],\n * or (b) when following the system and the OS reports dark. Light is the\n * default :root above, so [data-theme=\"light\"] needs no extra rule. */\n :root[data-theme=\"dark\"] {\n --bg:#1a1a1c; --surface:#202022; --surface-2:#2a2a2d; --sidebar:#171719;\n --fg:#e6e6e9; --fg-soft:#b4b4bb; --muted:#7d7d86; --line:#2c2c30; --line-strong:#3a3a40;\n --accent:#7b86ff; --accent-fg:#14141a; --accent-soft:#23243a; --danger:#f87168; --danger-soft:#341e1c;\n --hover:rgba(255,255,255,.05); --hover-2:rgba(255,255,255,.09);\n --shadow-sm:0 1px 2px rgba(0,0,0,.4); --shadow-md:0 4px 14px rgba(0,0,0,.45); --shadow-lg:0 20px 56px rgba(0,0,0,.6);\n --code-bg:#1d1d20;\n --hl-cmt:#7d7d86; --hl-key:#d291e4; --hl-str:#7ed492; --hl-num:#e0a566;\n --hl-fn:#86a8ff; --hl-type:#5fc6e0; --hl-var:#f0936b;\n }\n @media (prefers-color-scheme: dark) {\n :root[data-theme=\"system\"], :root:not([data-theme]) {\n --bg:#1a1a1c; --surface:#202022; --surface-2:#2a2a2d; --sidebar:#171719;\n --fg:#e6e6e9; --fg-soft:#b4b4bb; --muted:#7d7d86; --line:#2c2c30; --line-strong:#3a3a40;\n --accent:#7b86ff; --accent-fg:#14141a; --accent-soft:#23243a; --danger:#f87168; --danger-soft:#341e1c;\n --hover:rgba(255,255,255,.05); --hover-2:rgba(255,255,255,.09);\n --shadow-sm:0 1px 2px rgba(0,0,0,.4); --shadow-md:0 4px 14px rgba(0,0,0,.45); --shadow-lg:0 20px 56px rgba(0,0,0,.6);\n --code-bg:#1d1d20;\n --hl-cmt:#7d7d86; --hl-key:#d291e4; --hl-str:#7ed492; --hl-num:#e0a566;\n --hl-fn:#86a8ff; --hl-type:#5fc6e0; --hl-var:#f0936b;\n }\n }\n * { box-sizing: border-box; }\n html, body { margin: 0; height: 100%; }\n body { font-family: var(--ui); font-size: 14px; line-height: 1.55; color: var(--fg); background: var(--bg);\n overflow: hidden; text-rendering: auto; }\n button { font: inherit; color: inherit; cursor: pointer; background: none; border: 0; padding: 0; }\n input, textarea { font: inherit; color: inherit; }\n .muted { color: var(--muted); }\n svg { display: block; }\n .ico { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; flex:none; }\n .ico.sm { width:14px; height:14px; }\n ::-webkit-scrollbar { width:10px; height:10px; }\n ::-webkit-scrollbar-thumb { background:var(--line-strong); border-radius:8px; border:3px solid transparent; background-clip:padding-box; }\n ::-webkit-scrollbar-thumb:hover { background:var(--muted); background-clip:padding-box; border:3px solid transparent; }\n\n #app { display: flex; height: 100vh; }\n\n /* sidebar */\n .sidebar { width:268px; flex:none; background:var(--sidebar); border-right:1px solid var(--line);\n display:flex; flex-direction:column; position:relative; transition:margin-left .22s cubic-bezier(.4,0,.2,1); }\n .sb-resizer { position:absolute; top:0; right:-3px; width:6px; height:100%; cursor:col-resize; z-index:5; }\n .sb-head { display:flex; align-items:center; gap:8px; padding:14px 14px 10px; }\n .brand { display:flex; align-items:center; gap:8px; flex:1; font-weight:700; font-size:15px; letter-spacing:-.01em; }\n .brand .mark { width:24px; height:24px; border-radius:7px; background:linear-gradient(135deg,var(--accent),#8b94ff);\n display:grid; place-items:center; color:#fff; box-shadow:var(--shadow-sm); }\n .brand .mark svg { width:15px; height:15px; stroke:#fff; }\n .sb-search { margin:0 12px 8px; display:flex; align-items:center; gap:7px; cursor:text;\n background:var(--bg); border:1px solid var(--line); border-radius:var(--radius-sm); padding:6px 9px; color:var(--muted);\n box-shadow:var(--shadow-sm); transition:border-color .15s; }\n .sb-search:focus-within { border-color:var(--accent); }\n .sb-search input { border:0; background:none; outline:none; color:var(--fg); width:100%; }\n .sb-search kbd { font-family:var(--mono); font-size:10px; color:var(--muted); border:1px solid var(--line-strong); border-radius:4px; padding:1px 4px; }\n .sb-scroll { flex:1; overflow-y:auto; padding:4px 8px 24px; }\n .sb-section { margin-top:12px; }\n .sb-section-head { display:flex; align-items:center; justify-content:space-between;\n font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); padding:4px 8px; }\n .sb-section-head .add { opacity:0; padding:3px; border-radius:5px; color:var(--muted); transition:opacity .12s; }\n .sb-section:hover .add { opacity:1; }\n .sb-section-head .add:hover { background:var(--hover-2); color:var(--fg); }\n .navitem { display:flex; align-items:center; gap:3px; width:100%; text-align:left; padding:5px 6px; margin-bottom:2px; border-radius:var(--radius-sm);\n color:var(--fg-soft); font-size:13.5px; position:relative; white-space:nowrap; transition:background .1s; }\n .navitem:hover { background:var(--hover-2); }\n .navitem.active { background:var(--bg); color:var(--fg); font-weight:600; box-shadow:var(--shadow-sm); }\n .navitem .tw { width:18px; height:18px; display:grid; place-items:center; color:var(--muted); border-radius:4px; flex:none; }\n .navitem .tw:hover { background:var(--hover-2); }\n .navitem .tw svg { width:13px; height:13px; transition:transform .12s; }\n .navitem .tw.open svg { transform:rotate(90deg); }\n .navitem .emoji { width:20px; text-align:center; flex:none; font-size:14px; }\n .navitem .label { flex:1; overflow:hidden; text-overflow:ellipsis; }\n .navitem .acts { display:flex; gap:1px; opacity:0; }\n .navitem:hover .acts { opacity:1; }\n .navitem .acts button { width:22px; height:22px; display:grid; place-items:center; color:var(--muted); border-radius:5px; }\n .navitem .acts button:hover { background:var(--hover-2); color:var(--fg); }\n .navchildren { margin-left:16px; border-left:1px solid var(--line-strong); padding-left:2px; }\n .navitem.drop-into { box-shadow:inset 0 0 0 2px var(--accent); }\n .navitem.drop-before { box-shadow:inset 0 2px 0 0 var(--accent); }\n .navitem.drop-after { box-shadow:inset 0 -2px 0 0 var(--accent); }\n .dragging { opacity:.35; }\n .sb-footer { flex:none; padding:6px 8px; border-top:1px solid var(--line); }\n .sb-footer .navitem { font-size:13.5px; }\n .nav-dot { flex:none; width:7px; height:7px; border-radius:50%; background:var(--danger);\n box-shadow:0 0 0 2px var(--surface); margin-right:2px; }\n\n /* settings page */\n .set-page { max-width:680px; margin:0 auto; padding:40px 28px 64px; }\n .set-title { font-size:26px; font-weight:700; letter-spacing:-.02em; color:var(--fg); }\n .set-sub { color:var(--muted); margin-top:4px; }\n .set-section { margin-top:34px; }\n .set-section-head { font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); margin-bottom:4px; }\n .set-section-desc { color:var(--fg-soft); margin-bottom:16px; }\n .set-footer { margin-top:40px; padding-top:20px; border-top:1px solid var(--line); display:flex;\n flex-wrap:wrap; justify-content:center; align-items:center; gap:7px; color:var(--muted); font-size:12px; }\n .set-footer-sep { opacity:.45; }\n .ver-num { font-family:var(--mono); font-size:11px; color:var(--fg-soft); letter-spacing:-.01em; }\n .ver-up { display:inline-flex; align-items:center; gap:6px; }\n .ver-up.err .ver-msg { color:var(--danger); }\n .ver-act { background:none; border:0; padding:0; margin:0; font:inherit; font-size:12px; line-height:1;\n color:var(--muted); cursor:pointer; transition:color .12s; }\n .ver-act:hover { color:var(--accent); }\n .ver-act.accent { color:var(--accent); font-weight:600; }\n .ver-act[aria-disabled=\"true\"] { opacity:.6; cursor:default; pointer-events:none; }\n .ver-dot { width:6px; height:6px; border-radius:50%; background:var(--accent); flex:none; }\n .ver-dot.pulse { animation:verpulse 1.8s ease-in-out infinite; }\n @keyframes verpulse { 0%,100% { opacity:1; } 50% { opacity:.4; } }\n .theme-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }\n .theme-card { position:relative; display:flex; flex-direction:column; align-items:flex-start; gap:10px;\n text-align:left; padding:16px; border:1px solid var(--line-strong); border-radius:var(--radius);\n background:var(--surface); color:var(--fg-soft); box-shadow:var(--shadow-sm);\n transition:border-color .14s, background .14s, transform .14s, box-shadow .14s; }\n .theme-card:hover { border-color:var(--muted); transform:translateY(-1px); }\n .theme-card .tc-ico { width:34px; height:34px; display:grid; place-items:center; border-radius:9px;\n background:var(--surface-2); color:var(--fg); }\n .theme-card .tc-ico svg { width:18px; height:18px; }\n .theme-card .tc-name { font-weight:600; font-size:14px; color:var(--fg); }\n .theme-card .tc-desc { font-size:12px; color:var(--muted); line-height:1.45; }\n .theme-card .tc-check { position:absolute; top:10px; right:10px; width:18px; height:18px; border-radius:50%;\n background:var(--accent); color:var(--accent-fg); display:grid; place-items:center; opacity:0; transform:scale(.6); transition:opacity .14s, transform .14s; }\n .theme-card .tc-check svg { width:12px; height:12px; stroke-width:2.6; }\n .theme-card.sel { border-color:var(--accent); background:var(--accent-soft); box-shadow:0 0 0 1px var(--accent) inset, var(--shadow-sm); }\n .theme-card.sel .tc-ico { background:var(--accent); color:var(--accent-fg); }\n .theme-card.sel .tc-check { opacity:1; transform:scale(1); }\n @media (max-width:560px) { .theme-grid { grid-template-columns:1fr; } }\n\n /* sync devices */\n .peer-actions { display:flex; gap:10px; margin-bottom:16px; flex-wrap:wrap; }\n .peer-actions .btn { display:inline-flex; align-items:center; gap:6px; }\n .peer-list { display:flex; flex-direction:column; gap:8px; }\n .peer-row { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--line);\n border-radius:10px; background:var(--surface); }\n .peer-dot { width:9px; height:9px; border-radius:50%; flex:none; background:var(--muted); }\n .peer-dot.on { background:#3fb950; } .peer-dot.err { background:#f85149; } .peer-dot.off { background:var(--muted); }\n .peer-main { flex:1; min-width:0; }\n .peer-url { font-weight:600; font-size:14px; color:var(--fg); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .peer-sub { font-size:12px; color:var(--muted); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .peer-menu { flex:none; padding:6px; }\n .pair-code { font-family:var(--mono); font-size:26px; font-weight:700; letter-spacing:.12em;\n text-align:center; padding:16px; border:1px dashed var(--line); border-radius:10px; background:var(--surface); color:var(--fg); }\n\n /* main */\n .main { flex:1; display:flex; flex-direction:column; overflow:hidden; min-width:0; }\n .topbar { display:flex; align-items:center; gap:6px; padding:10px 18px; border-bottom:1px solid var(--line); min-height:49px; }\n .topbar.bare { border-bottom:0; }\n .topbar .hamburger { display:none; }\n .topbar .hamburger.show-collapsed { display:grid; }\n .sidebar.collapsed { overflow:hidden; }\n .sidebar.collapsed .sb-resizer { pointer-events:none; }\n .crumb { display:flex; align-items:center; gap:7px; flex:1; min-width:0; font-size:13.5px; color:var(--fg); font-weight:500; }\n .crumb .emoji { font-size:15px; } .crumb .sub { color:var(--muted); font-weight:400; }\n .iconbtn { width:30px; height:30px; display:grid; place-items:center; border-radius:var(--radius-sm); color:var(--fg-soft); transition:background .12s; }\n .iconbtn:hover { background:var(--hover-2); color:var(--fg); }\n .content { flex:1; overflow:auto; }\n .btn { display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:var(--radius-sm); font-size:13px; font-weight:500; transition:all .12s; white-space:nowrap; }\n .btn-ghost { color:var(--fg-soft); } .btn-ghost:hover { background:var(--hover-2); color:var(--fg); }\n .btn-secondary { background:var(--bg); border:1px solid var(--line-strong); color:var(--fg); box-shadow:var(--shadow-sm); }\n .btn-secondary:hover { background:var(--surface-2); }\n .btn-primary { background:var(--accent); color:var(--accent-fg); box-shadow:var(--shadow-sm); }\n .btn-primary:hover { filter:brightness(1.07); }\n .btn-danger { background:var(--danger); color:#fff; } .btn-danger:hover { filter:brightness(1.05); }\n\n /* desktop app (frameless): drop the sidebar logo; on macOS reserve a draggable\n strip for the inset traffic lights so they never overlap our controls */\n body.desktop .brand { display:none; }\n /* logo gone → keep the collapse button on the right (where .brand's flex used to push it) */\n body.desktop .sb-head .iconbtn { margin-left:auto; }\n body.desktop-mac .sb-head { -webkit-app-region:drag; }\n body.desktop-mac .sb-head .iconbtn { -webkit-app-region:no-drag; }\n body.desktop-mac .topbar { -webkit-app-region:drag; }\n body.desktop-mac .topbar .iconbtn, body.desktop-mac .topbar .btn { -webkit-app-region:no-drag; }\n /* peek drawer header overlaps the topbar drag region → clear its buttons so they stay clickable */\n body.desktop-mac .peek-head { -webkit-app-region:drag; }\n body.desktop-mac .peek-head .iconbtn, body.desktop-mac .peek-head .btn { -webkit-app-region:no-drag; }\n /* sidebar collapsed → traffic lights sit over the main header; clear the hamburger */\n body.desktop-mac .sidebar.collapsed ~ .main .topbar { padding-left:80px; }\n\n /* document editor */\n .doc { max-width:740px; margin:0 auto; padding:60px 60px 36vh; }\n .doc-title { font-size:38px; font-weight:700; letter-spacing:-.02em; outline:none; line-height:1.15; margin-bottom:4px; }\n .doc-title:empty::before { content:\"无标题\"; color:var(--muted); }\n .doc-meta { display:flex; gap:14px; color:var(--muted); font-size:12.5px; margin-bottom:22px; }\n .doc-meta span { display:inline-flex; align-items:center; gap:5px; }\n .doc.source-mode { min-height:100%; }\n .doc-source { display:block; width:100%; min-height:calc(100vh - 210px); resize:none; border:0;\n background:transparent; color:var(--fg); outline:none; overflow:hidden; padding:3px 2px 36vh;\n font-family:var(--ui); font-size:15px; line-height:1.7; tab-size:2; }\n .block-wrap { position:relative; }\n .block-wrap.nested { padding-left:24px; }\n /* Subtle indent guide only for true sub-lists; suppressed for code/other\n nested content so code-in-list items don't stack a thicket of lines. */\n .block-wrap.nested:has(> .block.b-bullet, > .block.b-numbered, > .block.b-todo)::before {\n content:\"\"; position:absolute; left:8px; top:2px; bottom:2px; width:1px; background:var(--line); }\n .block { position:relative; display:flex; align-items:flex-start; padding:1px 0; border-radius:4px; }\n .block .gutter { position:absolute; left:-52px; top:2px; display:flex; gap:1px; opacity:0; transition:opacity .12s; }\n .block:hover .gutter, .block.drop-before .gutter, .block.drop-after .gutter, .block.dragging .gutter { opacity:1; }\n .gutter button { width:22px; height:24px; display:grid; place-items:center; color:var(--muted); border-radius:5px; }\n .gutter button:hover { background:var(--hover-2); color:var(--fg); }\n .gutter .grip { cursor:grab; } .gutter .grip:active { cursor:grabbing; }\n .block.dragging { opacity:.42; background:var(--hover); }\n .block.drop-before::before, .block.drop-after::after { content:\"\"; position:absolute; left:0; right:0; height:2px; background:var(--accent);\n border-radius:2px; pointer-events:none; box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent); }\n .block.drop-before::before { top:-1px; }\n .block.drop-after::after { bottom:-1px; }\n /* multi-block selection: whole-block tint + suppress stray native text highlight while dragging */\n .block.selected { background:var(--accent-soft); }\n .block.selected .editable::selection, .block.selected .editable *::selection { background:transparent; }\n .doc.selecting, .doc.selecting * { user-select:none; -webkit-user-select:none; cursor:default; }\n .block.list-code-host { height:0; min-height:0; padding:0; overflow:visible; }\n .block-wrap:hover > .block.list-code-host .gutter { opacity:1; }\n .block.list-code-host .marker { position:absolute; left:0; top:0; padding-top:4px; z-index:1; }\n /* The list item's host gutter controls the whole unit, so suppress the nested\n code block's own gutter (it would overlap the list marker on the same row). */\n .block.list-code-host + .block-wrap.nested .gutter { display:none; }\n .editable { outline:none; flex:1; min-width:0; padding:3px 2px; line-height:var(--note-lh); }\n .editable:empty::before { content:attr(data-ph); color:var(--muted); pointer-events:none; }\n /* The generic \"/\" prompt only shows on the focused line; idle blank lines (paragraphs and list items, any depth) stay blank. */\n .editable[data-ph-hint=\"slash\"]:empty:not(:focus)::before { content:\"\"; }\n .b-h1 .editable { font-size:28px; font-weight:700; letter-spacing:-.02em; padding-top:12px; }\n .b-h2 .editable { font-size:22px; font-weight:650; letter-spacing:-.01em; padding-top:8px; }\n .b-h3 .editable { font-size:18px; font-weight:600; padding-top:4px; }\n .b-h1 .gutter { top:22px; } .b-h2 .gutter { top:14px; } .b-h3 .gutter { top:7px; }\n .b-quote .editable { border-left:3px solid var(--line-strong); padding:1px 0 1px 16px; color:var(--fg-soft); font-style:italic; }\n\n /* code block: transparent textarea over a highlight.js mirror */\n .b-code .codeblock { flex:1; min-width:0; }\n .codeblock { position:relative; --code-fs:12.5px; --code-lh:1.55; --code-pad:8px; margin:2px 0;\n background:var(--code-bg); border:1px solid var(--line); border-radius:8px; overflow:hidden; box-shadow:var(--shadow-sm); }\n /* lang + copy float bottom-right, revealed on hover */\n .code-tools { position:absolute; right:6px; bottom:6px; z-index:2; display:flex; align-items:center; gap:1px;\n padding:2px; border-radius:7px; border:1px solid var(--line); box-shadow:var(--shadow-sm);\n background:color-mix(in srgb,var(--code-bg) 82%,transparent); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);\n opacity:0; transform:translateY(3px); pointer-events:none; transition:opacity .12s,transform .12s; }\n .codeblock:hover .code-tools, .code-tools:focus-within { opacity:1; transform:none; pointer-events:auto; }\n .code-lang { position:relative; display:inline-flex; align-items:center; }\n .code-lang select { appearance:none; -webkit-appearance:none; border:0; outline:none; background:none; cursor:pointer;\n font-family:var(--mono); font-size:10.5px; font-weight:500; color:var(--fg-soft); padding:3px 17px 3px 7px; border-radius:5px; }\n .code-lang select:hover { background:var(--hover-2); }\n .code-lang svg { position:absolute; right:3px; width:12px; height:12px; pointer-events:none; color:var(--muted); }\n .code-copy { display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:500; color:var(--muted);\n padding:3px 7px; border-radius:5px; transition:background .12s,color .12s; }\n .code-copy:hover { background:var(--hover-2); color:var(--fg-soft); }\n .code-copy.ok { color:var(--accent); }\n .code-body { display:flex; align-items:stretch; font-family:var(--mono); font-size:var(--code-fs); line-height:var(--code-lh); }\n .code-gutter { flex:none; text-align:right; white-space:pre; user-select:none; color:var(--muted); opacity:.55;\n padding:var(--code-pad) 8px var(--code-pad) 12px; border-right:1px solid var(--line); font-variant-numeric:tabular-nums; }\n .code-scroll { position:relative; flex:1; min-width:0; }\n .code-hl, .code-input { margin:0; font-family:var(--mono); font-size:var(--code-fs); line-height:var(--code-lh);\n padding:var(--code-pad) 16px; tab-size:2; -moz-tab-size:2; white-space:pre; letter-spacing:0; }\n .code-hl { position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none; background:none; color:var(--fg); }\n .code-hl code { display:block; font:inherit; background:none; padding:0; }\n .code-input { display:block; position:relative; z-index:1; width:100%; border:0; outline:none; resize:none;\n overflow-x:auto; overflow-y:hidden; background:transparent; color:transparent; caret-color:var(--fg);\n min-height:calc(var(--code-fs) * var(--code-lh) + var(--code-pad) * 2); }\n .code-input::placeholder { color:var(--muted); }\n\n /* highlight.js token theme (cohesive with the app palette) */\n .hljs-comment, .hljs-quote { color:var(--hl-cmt); font-style:italic; }\n .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-section, .hljs-doctag { color:var(--hl-key); }\n .hljs-string, .hljs-regexp, .hljs-addition, .hljs-meta .hljs-string { color:var(--hl-str); }\n .hljs-number, .hljs-bullet { color:var(--hl-num); }\n .hljs-title, .hljs-title.function_, .hljs-name, .hljs-selector-id, .hljs-selector-class { color:var(--hl-fn); }\n .hljs-type, .hljs-class .hljs-title, .hljs-built_in, .hljs-attr, .hljs-attribute, .hljs-property { color:var(--hl-type); }\n .hljs-variable, .hljs-template-variable, .hljs-symbol, .hljs-tag, .hljs-meta, .hljs-link { color:var(--hl-var); }\n .hljs-deletion { color:var(--danger); }\n .hljs-params, .hljs-subst { color:var(--fg); }\n .hljs-emphasis { font-style:italic; }\n .hljs-strong { font-weight:700; }\n .marker { width:24px; flex:none; text-align:center; color:var(--fg-soft); user-select:none; padding-top:4px; }\n .b-todo .marker { box-sizing:content-box; padding-top:3px; height:calc(1em * var(--note-lh));\n display:flex; align-items:center; justify-content:center; }\n .b-todo .marker input { width:15px; height:15px; accent-color:var(--accent); cursor:pointer; }\n .b-divider { padding:10px 0; }\n .b-divider hr { border:0; border-top:1px solid var(--line-strong); margin:0; width:100%; }\n .b-done .editable { color:var(--muted); text-decoration:line-through; }\n .editable b, .editable strong { font-weight:700; }\n .editable code { font-family:var(--mono); background:var(--surface-2); padding:1px 5px; border-radius:4px; font-size:.9em; }\n .editable a { color:var(--accent); }\n\n /* document table (GFM pipe table block) */\n .b-table .doc-table-wrap { flex:1; min-width:0; margin:4px 0; }\n .doc-table-scroll { overflow-x:auto; padding:2px 0; }\n .doc-table-inner { width:max-content; }\n .doc-table-row { display:flex; align-items:stretch; }\n table.doc-table { border-collapse:separate; border-spacing:0; table-layout:fixed; width:max-content;\n border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; box-shadow:var(--shadow-sm); }\n table.doc-table td { position:relative; vertical-align:top; padding:0;\n border-right:1px solid var(--line); border-bottom:1px solid var(--line); }\n table.doc-table tr td:last-child { border-right:0; }\n table.doc-table tr:last-child td { border-bottom:0; }\n table.doc-table .doc-th { background:var(--surface); }\n .doc-td { outline:none; padding:7px 22px 7px 10px; min-height:20px; line-height:1.55; word-break:break-word; white-space:pre-wrap; }\n .doc-th .doc-td { font-weight:650; color:var(--fg); }\n .doc-td:empty::before { content:attr(data-ph); color:var(--muted); pointer-events:none; }\n .doc-td b, .doc-td strong { font-weight:700; }\n .doc-td code { font-family:var(--mono); background:var(--surface-2); padding:1px 5px; border-radius:4px; font-size:.9em; }\n .doc-td a { color:var(--accent); }\n /* header cell: column menu + resize handle */\n .doc-col-menu { position:absolute; top:4px; right:4px; width:18px; height:18px; display:grid; place-items:center;\n color:var(--muted); border-radius:4px; opacity:0; transition:opacity .12s,background .12s; }\n .doc-th:hover .doc-col-menu { opacity:1; }\n .doc-col-menu:hover { background:var(--hover-2); color:var(--fg); }\n .doc-col-resizer { position:absolute; top:0; right:-3px; width:7px; height:100%; cursor:col-resize; z-index:3; touch-action:none; }\n .doc-col-resizer:hover, .doc-col-resizer.dragging { background:var(--accent); opacity:.35; }\n /* per-row delete: small handle floating at the first cell on row hover */\n .doc-row-del { position:absolute; top:3px; left:2px; width:18px; height:18px; display:grid; place-items:center;\n color:var(--muted); background:var(--bg); border:1px solid var(--line); border-radius:5px; box-shadow:var(--shadow-sm);\n opacity:0; transition:opacity .12s; }\n table.doc-table tr:hover .doc-row-del { opacity:1; }\n .doc-row-del:hover { background:var(--danger-soft); color:var(--danger); border-color:var(--danger-soft); }\n /* add-column (right edge) and add-row (bottom edge) buttons */\n .doc-table-addcol { width:22px; margin-left:4px; flex:none; display:grid; place-items:center; color:var(--muted);\n border:1px dashed var(--line-strong); border-radius:var(--radius-sm); background:var(--surface); transition:background .12s,color .12s,border-color .12s; }\n .doc-table-addrow { width:100%; height:22px; margin-top:4px; display:grid; place-items:center; color:var(--muted);\n border:1px dashed var(--line-strong); border-radius:var(--radius-sm); background:var(--surface); transition:background .12s,color .12s,border-color .12s; }\n .doc-table-addcol:hover, .doc-table-addrow:hover { background:var(--accent-soft); color:var(--accent); border-color:var(--accent); }\n\n /* database / table */\n .db { padding:22px 36px 90px; min-width:0; }\n .db-head { display:flex; align-items:center; gap:12px; }\n .db-icon { width:38px; height:38px; border-radius:9px; background:var(--surface-2); display:grid; place-items:center; font-size:20px; }\n .db-title { font-size:27px; font-weight:700; letter-spacing:-.02em; outline:none; }\n .db-desc { color:var(--muted); font-size:13px; margin-top:2px; }\n .views { display:flex; align-items:center; gap:2px; border-bottom:1px solid var(--line); margin:16px 0 0; }\n .view-tab { display:flex; align-items:center; gap:6px; padding:8px 11px; font-size:13.5px; font-weight:500; color:var(--muted);\n border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .12s; }\n .view-tab.active { color:var(--fg); border-bottom-color:var(--accent); }\n .view-tab:hover { color:var(--fg); } .view-tab svg { width:14px; height:14px; }\n .toolbar { display:flex; align-items:center; gap:2px; padding:10px 0; }\n .toolbar .spacer { flex:1; }\n .tbtn { display:flex; align-items:center; gap:6px; padding:5px 9px; border-radius:var(--radius-sm); color:var(--fg-soft); font-size:13px; font-weight:500; }\n .tbtn:hover { background:var(--hover-2); color:var(--fg); }\n .tbtn.on { color:var(--accent); }\n .tablewrap { border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow-sm); }\n .tablescroll { overflow-x:auto; }\n /* fixed layout + max-content: each <col> width is authoritative, so the table\n is exactly the sum of its columns and resizing one column never redistributes\n width to its neighbours. min-width:100% fills the container when columns are\n narrow, with the slack absorbed only by the trailing auto (filler) column. */\n table.grid { border-collapse:collapse; table-layout:fixed; width:max-content; min-width:100%; }\n table.grid th, table.grid td { border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:0; text-align:left; }\n table.grid th:last-child, table.grid td:last-child { border-right:0; }\n table.grid tbody tr:last-child td { border-bottom:0; }\n thead th { background:var(--surface); position:relative; user-select:none; font-weight:600; color:var(--fg-soft); }\n .colhead { display:flex; align-items:center; gap:7px; padding:9px 11px; font-size:13px; cursor:pointer; }\n .colhead:hover { background:var(--hover); }\n .colhead .ti { color:var(--muted); } .colhead .ti svg { width:14px; height:14px; }\n .colhead .nm { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .col-resizer { position:absolute; top:0; right:-3px; width:7px; height:100%; cursor:col-resize; z-index:2; touch-action:none; }\n .col-resizer:hover, .col-resizer.dragging { background:var(--accent); opacity:.35; }\n .addcol { min-width:46px; } .addcol .colhead { justify-content:flex-start; color:var(--muted); }\n /* trailing filler column: empty canvas to the right of the data, not a real cell */\n table.grid td.filler { border-right:0; border-bottom:0; background:transparent; }\n body.col-resizing { user-select:none; cursor:col-resize; }\n table.grid .selcell { width:38px; min-width:38px; max-width:38px; text-align:center; }\n table.grid .gripcol, table.grid .rowgrip { width:26px; min-width:26px; max-width:26px; text-align:center; }\n td.cell-td { vertical-align:top; }\n .cell { padding:8px 11px; min-height:37px; cursor:text; word-break:break-word; display:flex; flex-wrap:wrap; gap:3px; align-items:center; }\n /* hover/active tint goes on the <td> (always full row height) not the inner\n .cell (only as tall as its content), so a taller sibling row never leaves a\n gap of un-tinted space at the bottom of the hovered cell. */\n td.cell-td { transition:background .1s; }\n td.cell-td:hover { background:var(--hover); } .cell.center { justify-content:center; }\n tbody tr { transition:background .08s; }\n tbody tr:hover { background:var(--hover); }\n tbody tr.sel { background:var(--accent-soft); }\n /* cell range selection: per-cell fill; the accent rectangle outline is drawn via inline box-shadow on edge cells. Placed after :hover so it wins on equal specificity. */\n td.cell-td.cellsel, td.cell-td.cellsel:hover { background:var(--accent-soft); }\n body.cell-selecting { user-select:none; cursor:cell; }\n body.cell-selecting .cell { cursor:cell; }\n table.grid tr.drop-before td { box-shadow:inset 0 2px 0 0 var(--accent); }\n table.grid tr.drop-after td { box-shadow:inset 0 -2px 0 0 var(--accent); }\n table.grid th.drop-before { box-shadow:inset 2px 0 0 0 var(--accent); }\n table.grid th.drop-after { box-shadow:inset -2px 0 0 0 var(--accent); }\n .rowgrip { color:transparent; cursor:grab; vertical-align:middle; touch-action:none; }\n .rowgrip[aria-disabled=\"true\"] { cursor:not-allowed; }\n tbody tr:hover .rowgrip { color:var(--muted); }\n .colhead { touch-action:none; }\n .drag-source { opacity:.35; }\n body.table-dragging { user-select:none; cursor:grabbing; }\n .drag-ghost { position:fixed; left:0; top:0; z-index:120; pointer-events:none; display:flex; align-items:center;\n padding:7px 11px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; border:1px solid var(--line-strong);\n border-radius:7px; background:var(--bg); color:var(--fg); box-shadow:var(--shadow-lg); opacity:.94; font-size:13px; }\n .row-ghost { min-height:34px; }\n .col-ghost { justify-content:center; font-weight:600; color:var(--fg-soft); background:var(--surface); }\n .selcell { vertical-align:middle; }\n .selcell input { width:15px; height:15px; accent-color:var(--accent); opacity:0; cursor:pointer; vertical-align:middle; }\n tbody tr:hover .selcell input, tbody tr.sel .selcell input, .selcell input:checked, thead .selcell input { opacity:1; }\n .firstcell { position:relative; width:100%; min-width:0; }\n /* row actions float over the cell on hover, never reserving column width */\n /* right:-5px pulls the button out over the cell's 11px right padding so it\n sits ~6px from the column border instead of ~15px inside it */\n .rowactions { position:absolute; top:0; bottom:0; right:-5px; display:flex; align-items:flex-start;\n padding:1px 0 0; opacity:0; pointer-events:none; }\n tbody tr:hover .rowactions { opacity:1; pointer-events:auto; }\n /* square icon button — \"open as page\" (Notion-style) */\n .rowopen { width:23px; height:23px; flex:none; display:inline-flex; align-items:center; justify-content:center;\n border:1px solid var(--line); border-radius:6px; background:var(--bg); color:var(--fg-soft); box-shadow:var(--shadow-sm); }\n .rowopen:hover { background:var(--surface-2); color:var(--fg); border-color:var(--line-strong); }\n .rowopen svg { width:14px; height:14px; }\n .chip { display:inline-flex; align-items:center; gap:4px; border-radius:5px; padding:2px 8px; font-size:12.5px; font-weight:500; white-space:nowrap;\n background:color-mix(in srgb,var(--c) 15%,transparent); color:var(--c); }\n @media (prefers-color-scheme: dark) { .chip { background:color-mix(in srgb,var(--c) 22%,transparent); color:color-mix(in srgb,var(--c) 75%,#fff); } }\n .addrow { display:flex; align-items:center; gap:7px; padding:9px 12px; color:var(--muted); font-size:13px; cursor:pointer; border-top:1px solid var(--line); }\n .addrow:hover { background:var(--hover); color:var(--fg-soft); }\n .gridfoot { display:flex; gap:18px; color:var(--muted); font-size:12px; padding:8px 2px; }\n input.inlineedit { width:100%; border:0; outline:2px solid var(--accent); border-radius:4px; padding:7px 9px; background:var(--bg); color:var(--fg); font:inherit; }\n\n /* ---- sites (站点管理) ---- */\n .sites-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(264px, 1fr)); gap:14px; margin-top:6px; }\n .site-card { display:flex; flex-direction:column; gap:13px; padding:16px 16px 14px; background:var(--bg); border:1px solid var(--line);\n border-radius:var(--radius); box-shadow:var(--shadow-sm); cursor:pointer; transition:box-shadow .16s, border-color .16s, transform .16s; }\n .site-card:hover { box-shadow:var(--shadow-md); border-color:var(--line-strong); transform:translateY(-1px); }\n .site-card-head { display:flex; align-items:center; gap:11px; min-width:0; }\n .site-card .si { width:40px; height:40px; border-radius:11px; background:var(--accent-soft); color:var(--accent); display:grid; place-items:center; flex:none; }\n .site-card .si svg { width:20px; height:20px; }\n .site-card-id { min-width:0; }\n .site-card .slug { font-family:var(--mono); font-weight:600; font-size:14.5px; color:var(--fg); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .site-card .ttl { font-size:12px; color:var(--fg-soft); margin-top:1px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .site-card .ttl.muted { color:var(--muted); font-style:italic; }\n .site-addr { display:flex; align-items:center; gap:6px; width:100%; text-align:left; background:var(--surface); border:1px solid var(--line);\n border-radius:var(--radius-sm); padding:6px 9px; color:var(--muted); font-family:var(--mono); font-size:11.5px; transition:border-color .12s, color .12s; }\n .site-addr svg { flex:none; }\n .site-addr span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .site-addr:hover { border-color:var(--accent); color:var(--accent); }\n .site-card-meta { display:flex; align-items:center; gap:7px; font-size:12px; color:var(--muted); }\n .site-card-meta b { color:var(--fg-soft); font-weight:600; font-variant-numeric:tabular-nums; }\n .site-card-meta .dot { color:var(--line-strong); }\n .site-card-foot { display:flex; align-items:center; gap:6px; padding-top:12px; margin-top:1px; border-top:1px solid var(--line); }\n .site-card-foot .btn-secondary { padding:6px 12px; justify-content:center; }\n\n .site-empty { text-align:center; color:var(--muted); border:1px dashed var(--line-strong); border-radius:var(--radius); padding:48px 24px; margin-top:8px; }\n .site-empty .ei { font-size:30px; margin-bottom:10px; }\n .site-empty .et { font-size:14px; color:var(--fg-soft); margin-bottom:4px; font-weight:600; }\n .site-empty .ed { font-size:12.5px; margin-bottom:16px; }\n\n /* site peek: access bar + file manager */\n .acc-link { display:flex; align-items:center; gap:6px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-sm); padding:7px 8px 7px 11px; margin-bottom:16px; }\n .acc-link .url { flex:1; font-family:var(--mono); font-size:12.5px; color:var(--fg-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .acc-link button { width:28px; height:28px; display:grid; place-items:center; border-radius:6px; color:var(--muted); flex:none; }\n .acc-link button:hover { background:var(--hover-2); color:var(--fg); }\n .acc-link button.accent { color:var(--accent); }\n .site-meta { display:flex; gap:18px; color:var(--muted); font-size:12px; margin-bottom:20px; }\n .site-meta b { color:var(--fg); font-weight:600; }\n .files-head { display:flex; align-items:center; justify-content:space-between; font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); margin:0 0 4px; }\n .filerow { display:flex; align-items:center; gap:10px; padding:9px 8px; border-radius:var(--radius-sm); cursor:pointer; border-bottom:1px solid var(--line); }\n .filerow:last-child { border-bottom:0; }\n .filerow:hover { background:var(--hover); }\n .filerow .fi { color:var(--muted); display:grid; place-items:center; flex:none; }\n .filerow .fpath { flex:1; font-family:var(--mono); font-size:12.5px; color:var(--fg); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .filerow .facts { display:flex; gap:1px; opacity:0; flex:none; }\n .filerow:hover .facts { opacity:1; }\n .filerow .facts button { width:27px; height:27px; display:grid; place-items:center; border-radius:6px; color:var(--muted); }\n .filerow .facts button:hover { background:var(--hover-2); color:var(--fg); }\n .filerow .facts button.del:hover { color:var(--danger); }\n .enc-badge { display:inline-flex; align-items:center; font-family:var(--mono); font-size:10.5px; font-weight:500; letter-spacing:.02em;\n padding:2px 6px; border-radius:5px; background:var(--surface-2); color:var(--fg-soft); border:1px solid var(--line); }\n .enc-badge.blob { color:var(--accent); background:var(--accent-soft); border-color:transparent; }\n\n /* file preview (inside modal) */\n .preview-box { font-family:var(--mono); font-size:12.5px; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius);\n padding:14px 16px; max-height:52vh; overflow:auto; white-space:pre-wrap; line-height:1.6; color:var(--fg); }\n .preview-bin { text-align:center; color:var(--muted); border:1px dashed var(--line-strong); border-radius:var(--radius); padding:40px 20px; }\n .preview-bin .pi { font-size:28px; margin-bottom:8px; }\n .preview-bin .pt { color:var(--fg-soft); font-size:13px; }\n\n /* in-app site preview (browser-framed iframe) */\n .spv-scrim { position:fixed; inset:0; background:rgba(15,15,25,.5); z-index:85; display:grid; place-items:center; padding:28px;\n opacity:0; pointer-events:none; transition:opacity .16s; animation:spv-in .16s forwards; }\n @keyframes spv-in { to { opacity:1; pointer-events:auto; } }\n .spv-scrim.open { opacity:1; pointer-events:auto; }\n .spv { width:min(1100px, 92vw); height:88vh; background:var(--bg); border-radius:14px; box-shadow:var(--shadow-lg);\n display:flex; flex-direction:column; overflow:hidden; }\n .spv-chrome { display:flex; align-items:center; gap:10px; padding:9px 12px; border-bottom:1px solid var(--line); background:var(--surface); }\n .spv-dots { display:flex; gap:6px; flex:none; }\n .spv-dots i { width:11px; height:11px; border-radius:50%; background:var(--line-strong); }\n .spv-url { flex:1; display:flex; align-items:center; gap:6px; min-width:0; background:var(--bg); border:1px solid var(--line);\n border-radius:7px; padding:5px 10px; color:var(--fg-soft); font-family:var(--mono); font-size:12px; }\n .spv-url svg { color:var(--muted); flex:none; }\n .spv-url span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .spv-btn { display:inline-flex; align-items:center; gap:5px; flex:none; padding:6px 10px; border-radius:7px; color:var(--fg-soft); font-size:12.5px; font-weight:500; }\n .spv-btn:hover { background:var(--hover-2); color:var(--fg); }\n .spv-btn.icon { padding:6px; }\n .spv-frame { flex:1; width:100%; border:0; background:#fff; }\n\n .selbar { position:fixed; bottom:24px; left:50%; transform:translateX(-50%); z-index:65; display:flex; align-items:center; gap:4px;\n background:var(--fg); color:var(--bg); padding:7px 8px 7px 14px; border-radius:11px; box-shadow:var(--shadow-lg); }\n .selbar .cnt { font-size:13px; font-weight:600; margin-right:6px; }\n .selbar button { display:flex; align-items:center; gap:6px; color:var(--bg); padding:6px 10px; border-radius:7px; font-size:13px; font-weight:500; }\n .selbar button:hover { background:rgba(127,127,127,.25); }\n .selbar .del:hover { background:var(--danger); color:#fff; }\n\n /* record peek */\n .scrim { position:fixed; inset:0; background:rgba(15,15,25,.32); z-index:70; opacity:0; pointer-events:none; transition:opacity .22s; }\n .scrim.open { opacity:1; pointer-events:auto; }\n .peek { position:fixed; top:0; right:0; width:580px; max-width:94vw; height:100%; background:var(--bg); border-left:1px solid var(--line);\n box-shadow:var(--shadow-lg); z-index:71; transform:translateX(100%); transition:transform .24s cubic-bezier(.32,.72,0,1); display:flex; flex-direction:column; }\n .peek.open { transform:none; }\n .peek-head { display:flex; align-items:center; gap:4px; padding:12px 16px; border-bottom:1px solid var(--line); }\n .peek-body { overflow:auto; padding:28px 32px; }\n .peek h2 { font-size:27px; font-weight:700; letter-spacing:-.02em; margin:0 0 20px; outline:none; }\n .proprow { display:flex; gap:8px; align-items:flex-start; margin:1px 0; }\n .proprow .k { width:160px; flex:none; color:var(--muted); display:flex; align-items:center; gap:7px; font-size:13px; padding:7px 8px; border-radius:var(--radius-sm); }\n .proprow .k:hover { background:var(--hover); }\n .proprow .v { flex:1; padding:7px 8px; border-radius:var(--radius-sm); cursor:text; min-height:33px; display:flex; flex-wrap:wrap; gap:3px; align-items:center; }\n .proprow .v:hover { background:var(--hover); }\n .peek-divider { height:1px; background:var(--line); margin:22px 0 18px; }\n\n /* menu / popover */\n .menu-layer { position:fixed; inset:0; z-index:90; }\n .pop { position:fixed; background:var(--bg); border:1px solid var(--line); border-radius:11px; box-shadow:var(--shadow-lg);\n padding:6px; min-width:232px; max-height:70vh; overflow:auto; animation:pop .12s ease; }\n @keyframes pop { from { opacity:0; transform:translateY(-4px); } }\n .pop .lbl { font-size:11px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; padding:6px 8px 3px; }\n .pop .item { display:flex; align-items:center; gap:10px; padding:7px 8px; border-radius:var(--radius-sm); width:100%; text-align:left; color:var(--fg); font-size:13.5px; }\n .pop .item:hover, .pop .item.sel { background:var(--hover-2); }\n .pop .item .lico { width:28px; height:28px; display:grid; place-items:center; border:1px solid var(--line); border-radius:6px; color:var(--fg-soft); flex:none; }\n .pop .item .lico.plain { border:0; width:22px; height:22px; }\n .pop .item .meta { flex:1; min-width:0; }\n .pop .item .t { font-size:13.5px; } .pop .item .d { font-size:11.5px; color:var(--muted); display:block; }\n .pop .item .chk { color:var(--accent); margin-left:auto; }\n .pop .item.danger { color:var(--danger); } .pop .item.danger .lico { color:var(--danger); }\n .pop .sep { height:1px; background:var(--line); margin:5px 4px; }\n .pop .typegrid { display:grid; grid-template-columns:repeat(4,1fr); gap:4px; padding:2px 2px 4px; }\n .pop .typegrid .item { flex-direction:column; gap:5px; padding:9px 4px; text-align:center; }\n .pop .typegrid .item .lico { margin:0 auto; }\n .pop input.field { width:100%; border:1px solid var(--line-strong); border-radius:var(--radius-sm); padding:7px 9px; outline:none; background:var(--surface); margin:2px; }\n .pop input.field:focus { border-color:var(--accent); }\n .optrow { display:flex; align-items:center; gap:6px; padding:3px 4px; }\n .optrow .chip { flex:1; }\n .optrow .x { width:22px; height:22px; display:grid; place-items:center; color:var(--muted); border-radius:5px; }\n .optrow .x:hover { background:var(--hover-2); color:var(--danger); }\n\n /* modal */\n .modal-scrim { position:fixed; inset:0; background:rgba(15,15,25,.4); z-index:100; display:flex; align-items:center; justify-content:center;\n opacity:0; pointer-events:none; transition:opacity .15s; padding:20px; }\n .modal-scrim.open { opacity:1; pointer-events:auto; }\n .modal { background:var(--bg); border-radius:16px; box-shadow:var(--shadow-lg); width:440px; max-width:100%; max-height:100%; display:flex; flex-direction:column; overflow:hidden; }\n .modal-head { padding:20px 22px 0; }\n .modal-head h3 { margin:0; font-size:18px; font-weight:700; letter-spacing:-.01em; }\n .modal-head p { margin:6px 0 0; color:var(--muted); font-size:13.5px; }\n .modal-body { padding:18px 22px; overflow-y:auto; }\n .modal-foot { display:flex; justify-content:flex-end; gap:8px; padding:14px 22px; background:var(--surface); border-top:1px solid var(--line); }\n .field-label { font-size:12px; font-weight:600; color:var(--fg-soft); margin:12px 0 5px; }\n .field-label:first-child { margin-top:0; }\n .text-input { width:100%; border:1px solid var(--line-strong); border-radius:var(--radius-sm); padding:9px 11px; outline:none; background:var(--surface); font-size:14px; }\n .text-input:focus { border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }\n .icon-pick { display:flex; gap:6px; flex-wrap:wrap; }\n .icon-pick button { width:38px; height:38px; border-radius:9px; border:1px solid var(--line); font-size:19px; display:grid; place-items:center; }\n .icon-pick button:hover { background:var(--hover-2); }\n .icon-pick button.sel { border-color:var(--accent); background:var(--accent-soft); }\n .tmpl { display:flex; gap:8px; }\n .tmpl button { flex:1; border:1px solid var(--line); border-radius:var(--radius); padding:12px; text-align:left; }\n .tmpl button:hover { border-color:var(--accent); background:var(--surface); }\n .tmpl button.sel { border-color:var(--accent); background:var(--accent-soft); }\n .tmpl .tt { font-weight:600; font-size:13.5px; } .tmpl .td { font-size:11.5px; color:var(--muted); margin-top:2px; }\n\n /* toast */\n .toasts { position:fixed; bottom:20px; left:20px; z-index:110; display:flex; flex-direction:column; gap:8px; }\n .toast { background:var(--fg); color:var(--bg); padding:10px 14px; border-radius:9px; font-size:13px; box-shadow:var(--shadow-lg);\n display:flex; align-items:center; gap:8px; animation:slidein .2s ease; }\n @keyframes slidein { from { opacity:0; transform:translateX(-12px); } }\n\n /* misc */\n .empty { display:flex; flex-direction:column; align-items:center; justify-content:center; height:100%;\n color:var(--muted); text-align:center; padding:40px; }\n\n /* ---- empty state: 知识生长插画 ---- */\n .estate-art { width:240px; height:208px; overflow:visible; animation:idleFloat 5s ease-in-out 1.6s infinite; }\n .estate-art .stroke-a { fill:none; stroke:var(--accent); stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }\n .estate-art .stroke { fill:none; stroke:var(--line-strong); stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }\n .estate-art .fill-a { fill:var(--accent); }\n .estate-art .fill-soft { fill:var(--accent-soft); }\n .estate-art .fill-surface { fill:var(--bg); }\n .estate-art .ground { fill:var(--accent); }\n .estate-title { margin:28px 0 0; font-size:18px; font-weight:600; letter-spacing:.2px; color:var(--fg);\n opacity:0; animation:fadeUp .5s ease forwards 1.0s; }\n .estate-hint { margin:9px 0 0; font-size:13.5px; line-height:1.6; color:var(--muted); max-width:300px;\n opacity:0; animation:fadeUp .5s ease forwards 1.15s; }\n .estate-link { margin:18px 0 0; font-size:14px; font-weight:600; color:var(--accent);\n display:inline-flex; align-items:center; gap:6px; padding:9px 8px; border-radius:var(--radius-sm);\n opacity:0; animation:fadeUp .5s ease forwards 1.3s; transition:opacity .15s; }\n .estate-link:hover { opacity:.7; }\n /* intro */\n .draw { stroke-dasharray:100; stroke-dashoffset:100; }\n @keyframes draw { to { stroke-dashoffset:0; } }\n @keyframes leafGrow { from { opacity:0; transform:scale(.2) rotate(-10deg); } to { opacity:1; transform:scale(1) rotate(0); } }\n @keyframes cardUp { from { opacity:0; transform:translateY(16px) scale(.96); } to { opacity:1; transform:translateY(0) scale(1); } }\n @keyframes groundIn { to { opacity:.1; } }\n @keyframes glowIn { to { opacity:.6; } }\n @keyframes fadeUp { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:translateY(0); } }\n /* idle loops — each 0% equals the settled rest state to avoid a jump */\n @keyframes idleFloat { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-5px); } }\n @keyframes plantSway { 0%,100% { transform:rotate(0deg); } 25% { transform:rotate(-1.3deg); } 75% { transform:rotate(1.3deg); } }\n @keyframes leafSwayA { 0%,100% { transform:rotate(0deg); } 25% { transform:rotate(-2.6deg); } 75% { transform:rotate(2.6deg); } }\n @keyframes leafSwayB { 0%,100% { transform:rotate(0deg); } 25% { transform:rotate(2.6deg); } 75% { transform:rotate(-2.6deg); } }\n @keyframes groundBreathe { 0%,100% { transform:scale(1); opacity:.10; } 50% { transform:scale(1.07); opacity:.15; } }\n @keyframes glowPulse { 0%,100% { transform:scale(1); opacity:.6; } 50% { transform:scale(1.1); opacity:.85; } }\n @keyframes particle { 0% { opacity:0; transform:translate(0,0) scale(.4); } 35% { opacity:.85; transform:translate(2px,-4px) scale(1); } 70% { opacity:0; transform:translate(4px,-9px) scale(.5); } 100% { opacity:0; transform:translate(0,0) scale(.4); } }\n /* wiring */\n .kg-ground { transform-box:fill-box; transform-origin:center; opacity:0;\n animation:groundIn .5s ease forwards .1s, groundBreathe 6s ease-in-out 1.6s infinite; }\n .kg-glow { filter:blur(9px); transform-box:fill-box; transform-origin:center; opacity:0;\n animation:glowIn .6s ease forwards .1s, glowPulse 4.6s ease-in-out 1.6s infinite; }\n .kg-cardB { transform-box:fill-box; transform-origin:center; opacity:0; animation:cardUp .55s cubic-bezier(.2,.8,.2,1) forwards .2s; }\n .kg-cardA { transform-box:fill-box; transform-origin:center; opacity:0; animation:cardUp .55s cubic-bezier(.2,.8,.2,1) forwards .32s; }\n .kg-plant { transform-box:fill-box; transform-origin:50% 100%; animation:plantSway 6s ease-in-out 1.7s infinite; }\n .kg-stem { animation:draw .9s ease-out forwards .4s; }\n .kg-leaf { transform-box:fill-box; }\n .kg-grow { transform-box:fill-box; opacity:0; }\n .kg-leaf.l1 { transform-origin:90% 100%; animation:leafSwayA 4.6s ease-in-out 1.7s infinite; }\n .kg-leaf.l2 { transform-origin:0% 80%; animation:leafSwayB 5.2s ease-in-out 1.8s infinite; }\n .kg-leaf.l3 { transform-origin:0% 100%; animation:leafSwayA 5.0s ease-in-out 1.9s infinite; }\n .kg-leaf.l1 .kg-grow { transform-origin:90% 100%; animation:leafGrow .52s cubic-bezier(.18,.9,.24,1.22) forwards .85s; }\n .kg-leaf.l2 .kg-grow { transform-origin:0% 80%; animation:leafGrow .52s cubic-bezier(.18,.9,.24,1.22) forwards 1.0s; }\n .kg-leaf.l3 .kg-grow { transform-origin:0% 100%; animation:leafGrow .52s cubic-bezier(.18,.9,.24,1.22) forwards 1.15s; }\n .kg-particle { transform-box:fill-box; transform-origin:center; opacity:0; }\n .kg-particle.p1 { animation:particle 4.5s ease-in-out 1.6s infinite; }\n .kg-particle.p2 { animation:particle 5.2s ease-in-out 2.0s infinite; }\n .kg-particle.p3 { animation:particle 4.8s ease-in-out 2.6s infinite; }\n .kg-particle.p4 { animation:particle 5.6s ease-in-out 3.1s infinite; }\n .kg-particle.p5 { animation:particle 4.2s ease-in-out 2.3s infinite; }\n @media (prefers-reduced-motion: reduce) {\n .estate-art, .estate-art *, .estate-title, .estate-hint, .estate-link { animation:none !important; opacity:1 !important; transform:none !important; }\n .draw { stroke-dashoffset:0 !important; }\n .kg-ground { opacity:.1 !important; }\n .kg-glow { opacity:.6 !important; }\n .kg-particle { opacity:0 !important; }\n }\n .error-bar { margin:12px 24px; padding:10px 14px; background:var(--danger-soft); color:var(--danger); border-radius:var(--radius-sm); font-size:13px; cursor:pointer; }\n .view-placeholder { padding:40px; text-align:center; border:1px dashed var(--line-strong); border-radius:var(--radius); color:var(--muted); margin-top:8px; }\n .ico.flip { transform:scaleX(-1); }\n\n /* ---- board (kanban) view ---- */\n .board-wrap { margin-top:4px; }\n .board-bar { display:flex; align-items:center; gap:10px; padding:2px 0 12px; }\n .board { display:flex; align-items:flex-start; gap:12px; overflow-x:auto; padding-bottom:14px; min-height:240px; }\n .board-col { flex:0 0 272px; width:272px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); display:flex; flex-direction:column; max-height:calc(100vh - 240px); transition:box-shadow .12s,border-color .12s; }\n .board-col.drop-into { border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-soft); }\n .board-col-head { display:flex; align-items:center; gap:8px; padding:10px 10px 8px; }\n .board-col-head .spacer { flex:1; }\n .board-count { color:var(--muted); font-size:12px; font-weight:600; }\n .board-col-head .iconbtn.sm { width:24px; height:24px; }\n .board-col-body { display:flex; flex-direction:column; gap:7px; padding:0 8px 8px; overflow-y:auto; }\n .kcard { background:var(--bg); border:1px solid var(--line); border-radius:var(--radius-sm); padding:9px 10px; box-shadow:var(--shadow-sm);\n cursor:grab; display:flex; flex-direction:column; gap:5px; touch-action:none; transition:border-color .1s,box-shadow .1s; }\n .kcard:hover { border-color:var(--line-strong); }\n .kcard.drag-source { opacity:.4; }\n .kcard.dragging-ghost { position:fixed; left:0; top:0; z-index:120; pointer-events:none; cursor:grabbing;\n box-shadow:var(--shadow-lg); opacity:.95; transform:translate3d(-9999px,0,0); }\n .kcard-title { font-size:13.5px; font-weight:600; line-height:1.35; word-break:break-word; }\n .kcard-field { display:flex; align-items:center; gap:6px; font-size:12.5px; color:var(--fg-soft); min-width:0; }\n .kcard-field svg { width:13px; height:13px; color:var(--muted); flex:none; }\n .board-add { display:flex; align-items:center; gap:6px; padding:7px 8px; color:var(--muted); font-size:12.5px; border-radius:var(--radius-sm); }\n .board-add:hover { background:var(--hover-2); color:var(--fg-soft); }\n\n /* ---- calendar (month) view ---- */\n .cal { margin-top:4px; display:flex; flex-direction:column; }\n .cal-nav { display:flex; align-items:center; gap:8px; padding:2px 0 12px; }\n .cal-nav .spacer { flex:1; }\n .cal-title { font-size:15px; font-weight:650; min-width:120px; }\n .cal-grid { display:grid; grid-template-columns:repeat(7,1fr); }\n .cal-head { border:1px solid var(--line); border-bottom:0; border-radius:var(--radius) var(--radius) 0 0; background:var(--surface); }\n .cal-wd { padding:8px 10px; font-size:12px; font-weight:600; color:var(--muted); text-align:left; border-right:1px solid var(--line); }\n .cal-wd:last-child { border-right:0; }\n .cal-body { border:1px solid var(--line); border-radius:0 0 var(--radius) var(--radius); overflow:hidden; }\n .cal-week { border-bottom:1px solid var(--line); }\n .cal-week:last-child { border-bottom:0; }\n .cal-day { min-height:108px; border-right:1px solid var(--line); padding:5px 6px; display:flex; flex-direction:column; gap:4px; transition:background .1s; cursor:pointer; }\n .cal-day:last-child { border-right:0; }\n .cal-day:hover { background:var(--hover); }\n .cal-day.dim { background:var(--surface); color:var(--muted); }\n .cal-day.dim:hover { background:var(--hover); }\n .cal-day.drop-into { background:var(--accent-soft); }\n .cal-daynum { display:flex; align-items:center; justify-content:space-between; font-size:12.5px; font-weight:600; color:var(--fg-soft); }\n .cal-day.dim .cal-daynum { color:var(--muted); }\n .cal-day.today .cal-daynum span:first-child { background:var(--accent); color:var(--accent-fg); width:21px; height:21px; border-radius:50%; display:grid; place-items:center; }\n .cal-add { opacity:0; width:20px; height:20px; display:grid; place-items:center; color:var(--muted); border-radius:5px; transition:opacity .12s; }\n .cal-day:hover .cal-add { opacity:1; }\n .cal-add:hover { background:var(--hover-2); color:var(--fg); }\n .cal-events { display:flex; flex-direction:column; gap:3px; }\n .cal-ev { font-size:12px; padding:2px 7px; border-radius:5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:grab; touch-action:none;\n background:color-mix(in srgb,var(--c) 16%,transparent); color:var(--c); border-left:2px solid var(--c); }\n .cal-ev:hover { filter:brightness(1.04); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c) 40%,transparent); }\n @media (prefers-color-scheme: dark) { .cal-ev { background:color-mix(in srgb,var(--c) 24%,transparent); color:color-mix(in srgb,var(--c) 78%,#fff); } }\n .cal-more { display:block; width:100%; text-align:left; font-size:11.5px; color:var(--muted); padding:2px 7px; border-radius:5px; }\n .cal-more:hover { background:var(--hover-2); color:var(--fg-soft); }\n\n /* ---- timeline (gantt) view ---- */\n .tl { margin-top:4px; }\n .tl-toolbar { display:flex; align-items:center; gap:8px; padding:2px 0 12px; }\n .tl-scroll { overflow:auto; border:1px solid var(--line); border-radius:var(--radius); max-height:calc(100vh - 230px); }\n .tl-canvas { position:relative; }\n .tl-axis { position:sticky; top:0; z-index:4; background:var(--surface); border-bottom:1px solid var(--line); }\n .tl-corner { position:sticky; left:0; z-index:5; height:100%; display:flex; align-items:center; padding:0 12px; font-size:12px; font-weight:600; color:var(--muted);\n background:var(--surface); border-right:1px solid var(--line); }\n .tl-tick { position:absolute; top:0; height:100%; box-sizing:border-box; border-right:1px solid var(--line); display:flex; flex-direction:column; justify-content:flex-end; padding:0 0 4px 4px; }\n .tl-tick.mstart { border-right-color:var(--line-strong); }\n .tl-tick .tl-month { position:absolute; top:5px; left:4px; font-size:10.5px; font-weight:700; color:var(--fg-soft); white-space:nowrap; }\n .tl-tick .tl-dnum { font-size:11px; color:var(--muted); }\n .tl-tick.today .tl-dnum { color:var(--accent); font-weight:700; }\n .tl-row { position:absolute; left:0; right:0; border-bottom:1px solid var(--line); }\n .tl-rowlabel { position:sticky; left:0; z-index:3; height:100%; display:flex; align-items:center; padding:0 12px; font-size:13px; font-weight:500;\n background:var(--bg); border-right:1px solid var(--line); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n .tl-item { position:absolute; top:7px; height:22px; box-sizing:border-box; background:var(--accent); color:var(--accent-fg); border-radius:6px;\n display:flex; align-items:center; gap:2px; padding:0 4px; cursor:grab; touch-action:none; box-shadow:var(--shadow-sm); overflow:hidden; }\n .tl-item .tl-label { flex:1; font-size:12px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; pointer-events:none; }\n .tl-row:hover .tl-item { box-shadow:0 0 0 1px var(--accent), var(--shadow-sm); }\n .tl-item .tl-h { width:8px; align-self:stretch; flex:none; cursor:col-resize; border-radius:6px; opacity:0; transition:opacity .1s; }\n .tl-item:hover .tl-h { opacity:1; background:rgba(255,255,255,.35); }\n .tl-item .tl-h:hover { background:rgba(255,255,255,.6); }\n .tl-milestone { position:absolute; top:9px; width:18px; height:18px; transform:rotate(45deg); background:var(--accent); border-radius:3px; cursor:grab; touch-action:none; box-shadow:var(--shadow-sm); margin-left:-9px; }\n .tl-milestone:hover { box-shadow:0 0 0 2px var(--accent-soft), var(--shadow-sm); }\n .tl-track-empty { position:absolute; top:0; right:0; height:100%; cursor:copy; }\n .tl-track-empty:hover { background:var(--hover); }\n .tl-schedule { position:sticky; top:7px; height:22px; display:inline-flex; align-items:center; padding:0 10px; border-radius:6px; font-size:12px;\n color:var(--muted); border:1px dashed var(--line-strong); background:var(--bg); white-space:nowrap; }\n .tl-schedule:hover { color:var(--accent); border-color:var(--accent); }\n .tl-today { position:absolute; top:0; width:2px; background:var(--accent); opacity:.55; z-index:2; pointer-events:none; }\n .tl-guide { position:absolute; top:0; width:0; border-left:1px dashed var(--accent); z-index:6; pointer-events:none; }\n .tl-guide-label { position:absolute; top:2px; left:4px; font-size:11px; font-weight:600; color:var(--accent-fg); background:var(--accent);\n padding:1px 6px; border-radius:5px; white-space:nowrap; box-shadow:var(--shadow-sm); }\n\n /* mobile */\n .backdrop { display:none; }\n @media (max-width: 768px) {\n .sidebar { position:fixed; z-index:80; height:100%; margin-left:-300px; }\n .sidebar.open { margin-left:0; box-shadow:var(--shadow-lg); }\n .backdrop { position:fixed; inset:0; background:rgba(0,0,0,.4); z-index:79; }\n .backdrop.show { display:block; }\n .topbar .hamburger { display:grid; }\n .sb-resizer { display:none; }\n .doc { padding:28px 20px 36vh; } .doc-title { font-size:30px; }\n .block .gutter { display:none; }\n .db { padding:16px 14px 90px; }\n .peek { width:100%; }\n }\n\n /* Quick Notes window (desktop, loaded at #quick). A transparent body lets the\n macOS vibrancy blur show through; a translucent panel keeps text readable.\n The top bar is the window drag region; its buttons opt back out. */\n body.quicknote { background:transparent; }\n /* The main app lays #app out as a flex row (sidebar + main); the quick-note\n route has a single child, so override to a full-bleed block or the panel\n shrinks to its content width and the window's vibrancy shows through. */\n body.quicknote #app { display:block; width:100vw; height:100vh; }\n .qn { display:flex; flex-direction:column; width:100%; height:100vh; overflow:hidden;\n background:color-mix(in srgb, var(--bg) 20%, transparent); }\n .qn-bar { display:flex; align-items:center; gap:6px; padding:4px 10px 4px 76px;\n user-select:none; -webkit-app-region:drag;\n background:color-mix(in srgb, var(--surface) 30%, transparent); }\n .qn-brand { flex:1; min-width:0; font-size:12px; font-weight:600; color:var(--fg-soft);\n white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n .qn-actions { display:flex; gap:2px; -webkit-app-region:no-drag; }\n .qn-actions .iconbtn { width:26px; height:26px; }\n .qn-actions .iconbtn.active { color:var(--accent); background:var(--hover-2); }\n .qn-body { flex:1; overflow:auto; -webkit-app-region:no-drag; }\n .qn-body .doc { max-width:none; margin:0; padding:14px 22px 30vh; }\n .qn-body .doc-title { font-size:24px; margin-bottom:2px; }\n .qn-body .doc-meta { display:none; }\n /* A native checkbox paints an opaque white box when unchecked, which breaks\n the window's vibrancy blur. Draw a custom box so the unchecked background\n stays transparent; checked falls back to the accent fill + checkmark. */\n body.quicknote .b-todo .marker input {\n appearance:none; -webkit-appearance:none; box-sizing:border-box;\n border:1.5px solid color-mix(in srgb, var(--fg-soft) 55%, transparent);\n border-radius:4px; background:transparent; }\n body.quicknote .b-todo .marker input:checked {\n border-color:var(--accent);\n background:var(--accent) center/10px no-repeat\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E\"); }\n /* Compact menus inside the quick-note window only (dropdown + slash command\n share .pop/.item/.lico with the main app; scope under body.quicknote so the\n main app keeps its roomier density). */\n body.quicknote .pop { padding:5px; border-radius:9px; }\n body.quicknote .pop .lbl { padding:4px 8px 2px; font-size:10px; }\n body.quicknote .pop .item { padding:5px 9px; gap:8px; font-size:12.5px; }\n body.quicknote .pop .item .t { font-size:12.5px; }\n body.quicknote .pop .item .d { font-size:10.5px; }\n body.quicknote .pop .item .lico { width:22px; height:22px; }\n body.quicknote .pop .item .lico.plain { width:20px; height:20px; }\n body.quicknote .pop .sep { margin:4px 4px; }\n\n /* Quick Notes settings rows (desktop only). */\n .qn-set-row { display:flex; align-items:center; gap:14px; padding:12px 0; border-top:1px solid var(--line); }\n .qn-set-row:first-of-type { border-top:0; }\n .qn-set-main { flex:1; min-width:0; }\n .qn-set-name { font-weight:600; }\n .qn-set-desc { color:var(--muted); font-size:13px; margin-top:2px; }\n .qn-shortcut { min-width:140px; justify-content:center; font-family:var(--mono); }\n .qn-shortcut.capturing { outline:2px solid var(--accent); color:var(--accent); }\n</style>\n</head>\n<body>\n<div id=\"app\"></div>\n<script type=\"module\" src=\"/webui.js\"></script>\n</body>\n</html>`;\n\nlet cachedJs: string | null = null;\n\n/** Inject a prebuilt WebUI bundle. Used by `bun build --compile` binaries\n * (e.g. the desktop sidecar), where neither a sibling dist/webui.js nor the\n * source tree exists at runtime — the bundle is embedded at build time and\n * handed in here so getJs() can serve it without touching the filesystem. */\nexport function setWebuiBundle(js: string): void {\n cachedJs = js;\n}\n\n/** Resolve the app bundle: prefer a prebuilt dist/webui.js next to the running\n * file; in dev (running from source) build it on first request and cache. */\nasync function getJs(): Promise<string> {\n if (cachedJs != null) return cachedJs;\n\n const prebuilt = Bun.file(fileURLToPath(new URL(\"./webui.js\", import.meta.url)));\n if (await prebuilt.exists()) {\n cachedJs = await prebuilt.text();\n return cachedJs;\n }\n\n const entry = fileURLToPath(new URL(\"../../webui/app.tsx\", import.meta.url));\n const res = await Bun.build({ entrypoints: [entry], target: \"browser\", minify: true });\n if (!res.success) throw new AggregateError(res.logs, \"webui build failed\");\n cachedJs = await res.outputs[0]!.text();\n return cachedJs;\n}\n\n/** Pre-build & cache the JS bundle ahead of the first request. In dev the first\n * `/webui.js` hit otherwise pays for a `Bun.build` (1–3s) that blocks the\n * WebUI's first paint; warming it right after the server starts listening\n * moves that cost off the cold-start critical path. In packaged builds the\n * bundle is already embedded via setWebuiBundle(), so this is a no-op. */\nexport async function warmWebui(): Promise<void> {\n try {\n await getJs();\n } catch {\n // best-effort: a failed warm just falls back to building on first request\n }\n}\n\n/** Handle WebUI asset requests. Returns null for anything else so the caller\n * can fall through to the API routes. */\nexport async function serveWebui(req: Request): Promise<Response | null> {\n if (req.method !== \"GET\") return null;\n const { pathname } = new URL(req.url);\n\n if (pathname === \"/\") {\n return new Response(HTML, { headers: { \"content-type\": \"text/html; charset=utf-8\" } });\n }\n if (pathname === \"/webui.js\") {\n try {\n return new Response(await getJs(), {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n });\n } catch (e) {\n // This catch is the only thing between the error and oblivion: Bun only\n // auto-logs *uncaught* handler errors, and we catch this one. Log the full\n // error object (not `${e}`) so getJs's AggregateError sub-logs surface —\n // otherwise the 500 lives solely in the response body, never the logs.\n console.error(\"[webui] failed to serve /webui.js —\", e);\n return new Response(`webui build failed: ${e}`, { status: 500 });\n }\n }\n return null;\n}\n",
|
|
13
|
+
"// Portable (driver-only) half of the sites feature: types, name/path\n// canonicalization, MIME inference, and read paths. Split from sites.ts so the\n// browser replica's worker can serve site files offline without pulling the\n// blob store (cache.ts → node:fs) into a browser bundle. sites.ts re-exports\n// everything here — server-side callers keep importing from sites.ts.\n\nimport type { DbDriver } from \"./driver.ts\";\nimport { MhError } from \"./errors.ts\";\nimport type { ColumnsOf } from \"./sqlcols.ts\";\n\nexport interface SiteRow {\n id: string;\n name: string;\n title: string | null;\n created_hlc: string;\n}\n\nexport const SITE_COLS = [\"id\", \"name\", \"title\", \"created_hlc\"] as const;\nconst _siteCols: ColumnsOf<SiteRow, typeof SITE_COLS> = SITE_COLS;\nconst SITE_SELECT = SITE_COLS.join(\", \");\n\nexport type FileEncoding = \"utf8\" | \"base64\" | \"blob\";\n\nexport interface SiteFileRow {\n id: string;\n site_id: string;\n path: string;\n content_type: string;\n encoding: FileEncoding;\n /** Inline text/base64, or a blob hash when encoding === \"blob\". */\n content: string | null;\n}\n\n/** Manifest entry — file metadata without the (potentially large) content. */\nexport type SiteFileSummary = Omit<SiteFileRow, \"content\">;\n\nexport const SITE_FILE_COLS = [\n \"id\", \"site_id\", \"path\", \"content_type\", \"encoding\", \"content\",\n] as const;\nconst _siteFileCols: ColumnsOf<SiteFileRow, typeof SITE_FILE_COLS> = SITE_FILE_COLS;\nexport const SITE_FILE_SELECT = SITE_FILE_COLS.join(\", \");\n\n// ---- mime / encoding helpers -----------------------------------------------\n\nconst MIME: Record<string, string> = {\n html: \"text/html; charset=utf-8\",\n htm: \"text/html; charset=utf-8\",\n css: \"text/css; charset=utf-8\",\n js: \"text/javascript; charset=utf-8\",\n mjs: \"text/javascript; charset=utf-8\",\n json: \"application/json; charset=utf-8\",\n svg: \"image/svg+xml\",\n txt: \"text/plain; charset=utf-8\",\n md: \"text/markdown; charset=utf-8\",\n xml: \"application/xml; charset=utf-8\",\n webmanifest: \"application/manifest+json\",\n ico: \"image/x-icon\",\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n webp: \"image/webp\",\n avif: \"image/avif\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n ttf: \"font/ttf\",\n otf: \"font/otf\",\n pdf: \"application/pdf\",\n wasm: \"application/wasm\",\n};\n\n/** Guess a content type from a file path's extension; default octet-stream. */\nexport function inferContentType(path: string): string {\n const ext = path.slice(path.lastIndexOf(\".\") + 1).toLowerCase();\n return MIME[ext] ?? \"application/octet-stream\";\n}\n\n// ---- name / path normalization ---------------------------------------------\n\n/**\n * Canonical site slug: lowercase, [a-z0-9-] only, no leading/trailing/repeated\n * dashes. Applied at every write and lookup so the served URL (/sites/<name>/),\n * duplicate detection, and sync replication all agree on one form regardless of\n * how the name was typed (CLI, API, or browser). Throws when nothing usable\n * remains (empty, or all-punctuation). Matches the WebUI's slugify exactly.\n */\nexport function normalizeSiteName(raw: string): string {\n const slug = raw\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n if (!slug) throw new MhError(\"invalid_input\", `invalid site name: ${JSON.stringify(raw)}`);\n return slug;\n}\n\n/**\n * Canonical in-site file path: drop empty / \".\" segments, resolve \"..\" within\n * the bucket, strip leading and duplicate slashes. Files live in SQLite keyed by\n * this exact string (there is no filesystem behind them), so normalizing at the\n * write/serve boundary keeps storage, URL routing, and deletes consistent no\n * matter how the path was typed or percent-encoded. May return \"\" (caller decides).\n */\nexport function normalizeSitePath(raw: string): string {\n const segs: string[] = [];\n for (const seg of raw.split(\"/\")) {\n if (seg === \"\" || seg === \".\") continue;\n if (seg === \"..\") segs.pop();\n else segs.push(seg);\n }\n return segs.join(\"/\");\n}\n\n// ---- read paths --------------------------------------------------------------\n\nexport function getSite(db: DbDriver, id: string): SiteRow | null {\n return db\n .query(`SELECT ${SITE_SELECT} FROM sites WHERE id = ? AND __deleted = 0`)\n .get(id) as SiteRow | null;\n}\n\n/** Most recently created live site with this name (URL routing). */\nexport function getSiteByName(db: DbDriver, name: string): SiteRow | null {\n // Normalize so lookups, dedup, and URL routing all key off the canonical slug\n // (e.g. \"Demo\" and \"demo\" collide). An unusable name simply matches nothing.\n let slug: string;\n try {\n slug = normalizeSiteName(name);\n } catch {\n return null;\n }\n return db\n .query(\n `SELECT ${SITE_SELECT} FROM sites WHERE name = ? AND __deleted = 0 ORDER BY created_hlc DESC LIMIT 1`,\n )\n .get(slug) as SiteRow | null;\n}\n\nexport function listSites(db: DbDriver): SiteRow[] {\n return db\n .query(`SELECT ${SITE_SELECT} FROM sites WHERE __deleted = 0 ORDER BY created_hlc`)\n .all() as SiteRow[];\n}\n\n/** Resolve a site ref (`site_…` id or name) to its row, or throw. */\nexport function resolveSite(db: DbDriver, ref: string): SiteRow {\n const byId = ref.startsWith(\"site_\") ? getSite(db, ref) : null;\n const site = byId ?? getSiteByName(db, ref);\n if (!site) throw new MhError(\"not_found\", `no such site: ${ref}`);\n return site;\n}\n\n/**\n * Portable half of file serving: canonical path resolution (\"\" / trailing \"/\"\n * → index.html, same normalization putFile stored under) + the raw row. Used\n * directly by the browser replica's worker, which must decode utf8/base64\n * itself and cannot reach \"blob\" content at all (blob bytes live in the\n * server's on-disk store, not the oplog — they don't replicate).\n */\nexport function getFileRow(\n db: DbDriver,\n siteId: string,\n path: string,\n): { content_type: string; encoding: FileEncoding; content: string | null } | null {\n // Resolve directory-style requests to index.html *before* normalizing (the\n // trailing-slash signal is lost once empty segments are dropped).\n const withIndex = path === \"\" || path.endsWith(\"/\") ? `${path}index.html` : path;\n const p = normalizeSitePath(withIndex);\n if (!p) return null;\n return db\n .query(\n \"SELECT content_type, encoding, content FROM site_files WHERE site_id = ? AND path = ? AND __deleted = 0 ORDER BY created_hlc LIMIT 1\",\n )\n .get(siteId, p) as { content_type: string; encoding: FileEncoding; content: string | null } | null;\n}\n\nexport function listFiles(db: DbDriver, siteId: string): SiteFileSummary[] {\n return db\n .query(\n \"SELECT id, site_id, path, content_type, encoding FROM site_files WHERE site_id = ? AND __deleted = 0 ORDER BY path\",\n )\n .all(siteId) as SiteFileSummary[];\n}\n",
|
|
14
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { newId } from \"./ids.ts\";\nimport { emit, grouped, withChangeGroup } from \"./crdt.ts\";\nimport { putBlob, getBlob } from \"./cache.ts\";\nimport { MhError } from \"./errors.ts\";\nimport {\n type SiteRow,\n type FileEncoding,\n type SiteFileRow,\n SITE_FILE_SELECT,\n inferContentType,\n normalizeSiteName,\n normalizeSitePath,\n getSite,\n getSiteByName,\n getFileRow,\n} from \"./sites-core.ts\";\n\n// A \"site\" is a named bucket of files (Supabase-Storage-style) served at\n// /sites/<name>/. Everything is written through emit() so sites replicate over\n// /sync like records and documents. File bytes are stored inline as utf8 (text)\n// or base64 (small binaries) so they ride the oplog; large binaries offload to\n// the content-addressed cache (encoding=\"blob\"), whose bytes are node-local.\n//\n// Types, normalization, and all read paths live in sites-core.ts (portable —\n// the browser replica serves sites offline from the same code); this module\n// adds the mutations and the blob-capable byte decoding, which need Bun/node.\n\nexport * from \"./sites-core.ts\";\n\n/** Binaries at or below this size are stored inline (base64); larger go to a blob. */\nconst INLINE_LIMIT = 256 * 1024;\n\n/** Text-ish types are stored as readable utf8; everything else is binary. */\nfunction isTextType(contentType: string): boolean {\n const ct = contentType.toLowerCase();\n return (\n ct.startsWith(\"text/\") ||\n ct.startsWith(\"application/json\") ||\n ct.startsWith(\"application/manifest+json\") ||\n ct.startsWith(\"application/xml\") ||\n ct.startsWith(\"text/javascript\") ||\n ct.startsWith(\"application/javascript\") ||\n ct.startsWith(\"image/svg+xml\")\n );\n}\n\nfunction toBytes(data: string | Uint8Array | ArrayBuffer): Uint8Array {\n if (typeof data === \"string\") return new TextEncoder().encode(data);\n return data instanceof Uint8Array ? data : new Uint8Array(data);\n}\n\n// ---- sites -----------------------------------------------------------------\n\nexport const createSite = grouped(function createSite(\n db: DbDriver,\n opts: { name: string; title?: string },\n): SiteRow {\n const name = normalizeSiteName(opts.name);\n if (getSiteByName(db, name)) throw new MhError(\"conflict\", `site name already exists: ${name}`);\n const id = newId(\"site\", name);\n const first = emit(db, \"sites\", id, \"name\", name);\n emit(db, \"sites\", id, \"created_hlc\", first.hlc);\n if (opts.title !== undefined) emit(db, \"sites\", id, \"title\", opts.title);\n return getSite(db, id)!;\n});\n\n/** Rename a site and/or change its title. Guards against duplicate names. */\nexport const updateSite = grouped(function updateSite(\n db: DbDriver,\n id: string,\n opts: { name?: string; title?: string },\n): SiteRow {\n if (!getSite(db, id)) throw new MhError(\"not_found\", `no such site: ${id}`);\n if (opts.name !== undefined) {\n const name = normalizeSiteName(opts.name);\n const dup = getSiteByName(db, name);\n if (dup && dup.id !== id) throw new MhError(\"conflict\", `site name already exists: ${name}`);\n emit(db, \"sites\", id, \"name\", name);\n }\n if (opts.title !== undefined) emit(db, \"sites\", id, \"title\", opts.title);\n return getSite(db, id)!;\n});\n\nexport const deleteSite = grouped(function deleteSite(db: DbDriver, id: string): boolean {\n if (!getSite(db, id)) return false;\n const files = db\n .query(\"SELECT id FROM site_files WHERE site_id = ? AND __deleted = 0\")\n .all(id) as { id: string }[];\n for (const f of files) emit(db, \"site_files\", f.id, \"__deleted\", 1);\n emit(db, \"sites\", id, \"__deleted\", 1);\n return true;\n});\n\n// ---- files -----------------------------------------------------------------\n\n/** Stable id for a (site, path) pair so re-uploads merge instead of duplicate. */\nfunction fileIdFor(db: DbDriver, siteId: string, path: string): string | null {\n const row = db\n .query(\"SELECT id FROM site_files WHERE site_id = ? AND path = ? ORDER BY created_hlc LIMIT 1\")\n .get(siteId, path) as { id: string } | null;\n return row?.id ?? null;\n}\n\n/** Upload or replace one file. Picks utf8 / base64 / blob storage automatically. */\nexport async function putFile(\n db: DbDriver,\n siteId: string,\n path: string,\n opts: { data: string | Uint8Array | ArrayBuffer; contentType?: string },\n): Promise<SiteFileRow> {\n const cleanPath = normalizeSitePath(path);\n if (!cleanPath) throw new MhError(\"invalid_input\", `invalid file path: ${JSON.stringify(path)}`);\n const contentType = opts.contentType ?? inferContentType(cleanPath);\n const bytes = toBytes(opts.data);\n\n let encoding: FileEncoding;\n let content: string;\n if (isTextType(contentType)) {\n encoding = \"utf8\";\n content = typeof opts.data === \"string\" ? opts.data : new TextDecoder().decode(bytes);\n } else if (bytes.byteLength <= INLINE_LIMIT) {\n encoding = \"base64\";\n content = Buffer.from(bytes).toString(\"base64\");\n } else {\n encoding = \"blob\";\n content = (await putBlob(bytes)).hash;\n }\n\n // The emit tail is synchronous — group it here rather than wrapping the whole\n // async function (an outer group would be reset before post-await emits run).\n const existing = fileIdFor(db, siteId, cleanPath);\n const id = existing ?? newId(\"sf\", cleanPath);\n withChangeGroup(null, () => {\n if (!existing) {\n const first = emit(db, \"site_files\", id, \"site_id\", siteId);\n emit(db, \"site_files\", id, \"path\", cleanPath);\n emit(db, \"site_files\", id, \"created_hlc\", first.hlc);\n }\n emit(db, \"site_files\", id, \"content_type\", contentType);\n emit(db, \"site_files\", id, \"encoding\", encoding);\n emit(db, \"site_files\", id, \"content\", content);\n emit(db, \"site_files\", id, \"__deleted\", 0); // un-delete on re-upload\n });\n\n return db\n .query(\n `SELECT ${SITE_FILE_SELECT} FROM site_files WHERE id = ?`,\n )\n .get(id) as SiteFileRow;\n}\n\nexport const deleteFile = grouped(function deleteFile(\n db: DbDriver,\n siteId: string,\n path: string,\n): boolean {\n const id = fileIdFor(db, siteId, normalizeSitePath(path));\n if (!id) return false;\n const live = db.query(\"SELECT __deleted AS d FROM site_files WHERE id = ?\").get(id) as {\n d: number;\n } | null;\n if (!live || live.d) return false;\n emit(db, \"site_files\", id, \"__deleted\", 1);\n return true;\n});\n\n/** Resolve a file to served bytes + content type. \"\" / trailing \"/\" → index.html. */\nexport async function getFileForServe(\n db: DbDriver,\n siteId: string,\n path: string,\n): Promise<{ contentType: string; bytes: Uint8Array } | null> {\n const row = getFileRow(db, siteId, path);\n if (!row) return null;\n\n const content = row.content ?? \"\";\n let bytes: Uint8Array | null;\n if (row.encoding === \"utf8\") bytes = new TextEncoder().encode(content);\n else if (row.encoding === \"base64\") bytes = new Uint8Array(Buffer.from(content, \"base64\"));\n else bytes = await getBlob(content); // blob hash\n if (!bytes) return null;\n\n return { contentType: row.content_type, bytes };\n}\n",
|
|
14
15
|
"import type { RouteCtx } from \"./routes.ts\";\nimport { resolveSite, getFileForServe } from \"../sites.ts\";\n\n// Serves agent-published sites at /sites/<name>/<path...>. Imported lazily from\n// server.ts so it stays off the CLI startup path. Returns null only for paths it\n// does not own (so the caller can fall through to 404). HTML responses get the\n// auth fetch-shim injected by the caller (server.ts withShim) in non-debug mode.\n\nexport async function serveSite(req: Request, ctx: RouteCtx): Promise<Response | null> {\n const url = new URL(req.url);\n const rest = url.pathname.slice(\"/sites/\".length);\n if (rest === \"\") return null; // /sites/ with no site name\n\n const slash = rest.indexOf(\"/\");\n const name = decodeURIComponent(slash === -1 ? rest : rest.slice(0, slash));\n\n // /sites/<name> → canonical /sites/<name>/ so relative asset URLs resolve.\n if (slash === -1) return Response.redirect(`${url.origin}/sites/${name}/`, 301);\n\n const filePath = decodeURIComponent(rest.slice(slash + 1));\n\n let siteId: string;\n try {\n siteId = resolveSite(ctx.db, name).id;\n } catch {\n return new Response(\"site not found\", { status: 404 });\n }\n\n const file = await getFileForServe(ctx.db, siteId, filePath);\n if (!file) return new Response(\"not found\", { status: 404 });\n return new Response(file.bytes, { headers: { \"content-type\": file.contentType } });\n}\n",
|
|
15
|
-
"export * from \"./paths.ts\";\nexport * from \"./db.ts\";\nexport * from \"./ids.ts\";\nexport * from \"./resolve.ts\";\nexport * from \"./hlc.ts\";\nexport * from \"./crdt.ts\";\nexport * from \"./blocks.ts\";\nexport * from \"./fracdex.ts\";\nexport * from \"./node.ts\";\nexport * from \"./databases.ts\";\nexport * from \"./context.ts\";\nexport * from \"./properties.ts\";\nexport * from \"./indexing.ts\";\nexport * from \"./records.ts\";\nexport * from \"./documents.ts\";\nexport * from \"./search.ts\";\nexport * from \"./cache.ts\";\nexport * from \"./sites.ts\";\nexport * from \"./sync/protocol.ts\";\nexport * from \"./sync/client.ts\";\nexport * from \"./sync/server.ts\";\n",
|
|
16
|
-
"import { Database } from \"bun:sqlite\";\nimport { mkdirSync } from \"node:fs\";\nimport { dbPath, cacheDir, metahubHome } from \"./paths.ts\";\nimport {
|
|
17
|
-
"export const CORE_SCHEMA = `\nCREATE TABLE IF NOT EXISTS meta (\n key TEXT PRIMARY KEY,\n value TEXT\n);\n\n-- CRDT oplog: one row per field assignment. Source of truth for sync.\nCREATE TABLE IF NOT EXISTS crdt_changes (\n hlc TEXT NOT NULL,\n node_id TEXT NOT NULL,\n dataset TEXT NOT NULL,\n row_id TEXT NOT NULL,\n col TEXT NOT NULL,\n value TEXT,\n PRIMARY KEY (dataset, row_id, col, hlc)\n);\nCREATE INDEX IF NOT EXISTS idx_changes_hlc ON crdt_changes(hlc);\n\n-- Per-peer replication cursors (SQLite rowids: monotonic in insertion order,\n-- so no change is ever skipped regardless of HLC/clock skew). Outbound side of\n-- a pairing: \"token\" is the credential the *remote* issued to us (sent as a\n-- Bearer header when we sync to them). See migratePeers in db.ts for the columns\n-- added to legacy databases.\nCREATE TABLE IF NOT EXISTS peers (\n url TEXT PRIMARY KEY,\n pull_cursor INTEGER NOT NULL DEFAULT 0,\n push_cursor INTEGER NOT NULL DEFAULT 0,\n token TEXT,\n label TEXT,\n node_id TEXT,\n enabled INTEGER NOT NULL DEFAULT 1,\n last_sync_at INTEGER,\n last_status TEXT,\n last_error TEXT\n);\n\n-- Inbound side of a pairing: credentials *we* issued to remote devices. A peer\n-- presents one of these on /sync; acceptsSyncToken() checks it alongside the\n-- managed master token. Revoke by deleting the row.\nCREATE TABLE IF NOT EXISTS peer_grants (\n token TEXT PRIMARY KEY,\n peer_url TEXT,\n node_id TEXT,\n created_at INTEGER\n);\n\n-- One-time pairing codes minted by \"mh config peer code\" / POST /api/pair/new.\n-- Short-lived and single-use: redeemed during the pairing handshake, then the\n-- two devices exchange durable peer_grants. used/exp gate redemption.\nCREATE TABLE IF NOT EXISTS pairing_codes (\n code TEXT PRIMARY KEY,\n exp INTEGER NOT NULL,\n used INTEGER NOT NULL DEFAULT 0,\n created_at INTEGER\n);\n\nCREATE TABLE IF NOT EXISTS databases (\n id TEXT PRIMARY KEY,\n name TEXT,\n icon TEXT,\n created_hlc TEXT,\n __deleted INTEGER NOT NULL DEFAULT 0\n);\n\nCREATE TABLE IF NOT EXISTS properties (\n id TEXT PRIMARY KEY,\n database_id TEXT,\n name TEXT,\n type TEXT,\n config TEXT,\n position REAL,\n __deleted INTEGER NOT NULL DEFAULT 0\n);\nCREATE INDEX IF NOT EXISTS idx_properties_db ON properties(database_id);\n\n-- One row per record. Field cells live in the data JSON object, keyed by\n-- property id (rename-safe). Each (record,property) is still an independent\n-- CRDT register in the oplog; materialize() folds the winner into data via\n-- json_set/json_remove. Hot fields get expression indexes on data->>'propid'\n-- (see indexing.ts) so filter/sort/limit push down to SQL.\nCREATE TABLE IF NOT EXISTS records (\n id TEXT PRIMARY KEY,\n database_id TEXT,\n created_hlc TEXT,\n order_key TEXT,\n data TEXT NOT NULL DEFAULT '{}',\n __deleted INTEGER NOT NULL DEFAULT 0\n);\nCREATE INDEX IF NOT EXISTS idx_records_db_hlc ON records(database_id, created_hlc);\n\nCREATE TABLE IF NOT EXISTS documents (\n id TEXT PRIMARY KEY,\n title TEXT,\n body TEXT, -- materialized cache: serialized from doc_blocks\n database_id TEXT,\n parent_id TEXT,\n created_hlc TEXT,\n order_key TEXT, -- fractional index among siblings (same parent_id); ties broken by created_hlc,id\n __deleted INTEGER NOT NULL DEFAULT 0\n);\n\n-- Document body as an ordered list of blocks; each (block,field) is an\n-- independent CRDT register so concurrent edits to different blocks merge.\n-- order_key is a fractional index (ties broken by id) giving display order.\nCREATE TABLE IF NOT EXISTS doc_blocks (\n id TEXT PRIMARY KEY,\n doc_id TEXT,\n text TEXT,\n order_key TEXT,\n blank_after INTEGER NOT NULL DEFAULT 0, -- extra blank lines kept after this block (user spacing)\n __deleted INTEGER NOT NULL DEFAULT 0\n);\nCREATE INDEX IF NOT EXISTS idx_doc_blocks_doc ON doc_blocks(doc_id);\n\n-- A named static site (Supabase-Storage-style bucket). Served at /sites/<name>/.\nCREATE TABLE IF NOT EXISTS sites (\n id TEXT PRIMARY KEY,\n name TEXT, -- URL slug; resolved by getSiteByName\n title TEXT,\n created_hlc TEXT,\n __deleted INTEGER NOT NULL DEFAULT 0\n);\n\n-- One row per file in a site. content holds inline utf8/base64 text, or a blob\n-- hash (see cache.ts) when encoding = 'blob'. (site_id, path) maps to a stable\n-- id so re-uploads merge as a CRDT register instead of duplicating.\nCREATE TABLE IF NOT EXISTS site_files (\n id TEXT PRIMARY KEY,\n site_id TEXT,\n path TEXT,\n content_type TEXT,\n encoding TEXT, -- 'utf8' | 'base64' | 'blob'\n content TEXT,\n created_hlc TEXT,\n __deleted INTEGER NOT NULL DEFAULT 0\n);\nCREATE INDEX IF NOT EXISTS idx_site_files_site ON site_files(site_id);\n`;\n\n// Best-effort: FTS5 may not be compiled in. Search falls back to LIKE if this fails.\nexport const FTS_SCHEMA = `\nCREATE VIRTUAL TABLE IF NOT EXISTS search_fts USING fts5(\n kind UNINDEXED,\n id UNINDEXED,\n database_id UNINDEXED,\n title,\n body\n);\n`;\n",
|
|
18
|
-
"import type { Database } from \"bun:sqlite\";\nimport { newId, slugify, idKind } from \"./ids.ts\";\nimport { emit } from \"./crdt.ts\";\nimport { getDatabase } from \"./databases.ts\";\nimport { listProperties, type PropertyRow } from \"./properties.ts\";\nimport { maybeAutoIndex } from \"./indexing.ts\";\nimport { resolveCandidates } from \"./resolve.ts\";\nimport { keyBetween, keysBetween } from \"./fracdex.ts\";\n\ntype SqlValue = string | number | null;\n\n/** Scalars push down to SQL; arrays/objects/null are filtered in JS. */\nfunction isSqlScalar(v: unknown): v is string | number | boolean {\n return typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\";\n}\n\n/** Encode a coerced scalar to match what `data ->> '<prop>'` returns. */\nfunction sqlFilterValue(v: string | number | boolean): SqlValue {\n return typeof v === \"boolean\" ? (v ? 1 : 0) : v;\n}\n\nexport interface RecordRow {\n id: string;\n database_id: string;\n values: Record<string, unknown>;\n}\n\ninterface OrderedRecordRow {\n id: string;\n database_id: string;\n created_hlc: string | null;\n order_key: string | null;\n}\n\n/**\n * Resolve one relation value to a concrete record id in the target database.\n * Accepts a full id / unique prefix / name. A well-formed record id that does\n * not (yet) exist passes through unchanged — a forward reference / explicit id\n * escape valve. Names/prefixes that match nothing, or match many, throw.\n */\nfunction resolveRelation(db: Database, prop: PropertyRow, value: string): string {\n const target = prop.config?.database;\n if (!target) return value; // misconfigured relation — leave the value as-is\n const cands = resolveCandidates(db, value, { kind: \"rec\", databaseId: target });\n const exact = cands.find((c) => c.id === value);\n if (exact) return exact.id;\n if (cands.length === 1) return cands[0]!.id;\n if (cands.length === 0) {\n if (idKind(value) === \"rec\") return value; // forward reference to a full id\n throw new Error(`${prop.name}: no such record in target database: ${value}`);\n }\n throw new Error(`${prop.name}: ambiguous relation \"${value}\" (${cands.length} matches); use a full id`);\n}\n\n/** Validate + normalize a value for a property's type. Throws on mismatch. */\nfunction coerce(db: Database, prop: PropertyRow, value: unknown): unknown {\n switch (prop.type) {\n case \"text\":\n case \"url\":\n case \"date\": {\n if (value === null) return null;\n if (typeof value !== \"string\") throw new Error(`${prop.name} expects a string`);\n return value;\n }\n case \"number\": {\n if (value === null) return null;\n const n = typeof value === \"number\" ? value : Number(value);\n if (!Number.isFinite(n)) throw new Error(`${prop.name} expects a number`);\n return n;\n }\n case \"checkbox\": {\n if (typeof value === \"boolean\") return value;\n if (value === \"true\" || value === 1) return true;\n if (value === \"false\" || value === 0 || value === null) return false;\n throw new Error(`${prop.name} expects a boolean`);\n }\n case \"select\": {\n if (value === null) return null;\n const v = String(value);\n if (!prop.config?.options?.includes(v))\n throw new Error(`${prop.name}: '${v}' is not an allowed option`);\n return v;\n }\n case \"multi_select\": {\n const arr = value === null ? [] : Array.isArray(value) ? value : [value];\n const opts = prop.config?.options ?? [];\n for (const item of arr)\n if (!opts.includes(String(item)))\n throw new Error(`${prop.name}: '${item}' is not an allowed option`);\n return arr.map(String);\n }\n case \"relation\": {\n const arr = value === null ? [] : Array.isArray(value) ? value : [value];\n return arr.map((v) => resolveRelation(db, prop, String(v)));\n }\n }\n}\n\n/** Match data keys (property name OR id) to properties. */\nfunction resolveData(\n props: PropertyRow[],\n data: Record<string, unknown>,\n): { prop: PropertyRow; value: unknown }[] {\n const byId = new Map(props.map((p) => [p.id, p]));\n const byName = new Map(props.map((p) => [p.name.toLowerCase(), p]));\n const out: { prop: PropertyRow; value: unknown }[] = [];\n for (const [key, value] of Object.entries(data)) {\n const prop = byId.get(key) ?? byName.get(key.toLowerCase());\n if (!prop) throw new Error(`unknown property: ${key}`);\n out.push({ prop, value });\n }\n return out;\n}\n\n/** Build a RecordRow from a materialized row; keys in `data` are property ids. */\nfunction rowToRecord(\n row: { id: string; database_id: string; data: string },\n props: PropertyRow[],\n): RecordRow {\n const raw = JSON.parse(row.data || \"{}\") as Record<string, unknown>;\n const byId = new Map(props.map((p) => [p.id, p]));\n const values: Record<string, unknown> = {};\n for (const [propId, v] of Object.entries(raw)) {\n const p = byId.get(propId);\n if (p) values[p.name] = v; // skip cells for removed properties\n }\n return { id: row.id, database_id: row.database_id, values };\n}\n\nfunction deriveTitle(\n props: PropertyRow[],\n resolved: { prop: PropertyRow; value: unknown }[],\n fallbackBase: string,\n): string {\n const text = resolved.find(\n (r) => r.prop.type === \"text\" && typeof r.value === \"string\" && r.value,\n );\n return newId(\"rec\", text ? String(text.value) : \"\", fallbackBase);\n}\n\nfunction tableExists(db: Database, table: string): boolean {\n return (\n db\n .query(\"SELECT 1 AS ok FROM sqlite_master WHERE type = 'table' AND name = ?\")\n .get(table) != null\n );\n}\n\nfunction canEmitOrderKeys(db: Database): boolean {\n return tableExists(db, \"meta\") && tableExists(db, \"crdt_changes\");\n}\n\nfunction writeRecordOrderKey(db: Database, recordId: string, orderKey: string, emitChange: boolean): void {\n if (emitChange) emit(db, \"records\", recordId, \"order_key\", orderKey);\n else db.query(\"UPDATE records SET order_key = ? WHERE id = ?\").run(orderKey, recordId);\n}\n\nfunction lastRecordOrderKey(db: Database, databaseId: string): string | null {\n const row = db\n .query(\n `SELECT order_key FROM records\n WHERE database_id = ? AND __deleted = 0 AND order_key IS NOT NULL\n ORDER BY order_key DESC, id DESC LIMIT 1`,\n )\n .get(databaseId) as { order_key: string | null } | null;\n return row?.order_key ?? null;\n}\n\nfunction orderedRecordRows(db: Database, databaseId: string): OrderedRecordRow[] {\n return db\n .query(\n `SELECT id, database_id, created_hlc, order_key FROM records\n WHERE database_id = ? AND __deleted = 0\n ORDER BY order_key IS NULL, order_key, created_hlc, id`,\n )\n .all(databaseId) as OrderedRecordRow[];\n}\n\nfunction rebalanceRecordOrderKeys(db: Database, databaseId: string): void {\n const rows = orderedRecordRows(db, databaseId);\n const keys = keysBetween(null, null, rows.length);\n rows.forEach((row, i) => {\n if (row.order_key !== keys[i]) emit(db, \"records\", row.id, \"order_key\", keys[i]!);\n });\n}\n\nexport function backfillRecordOrderKeys(db: Database, databaseId?: string): void {\n const emitChange = canEmitOrderKeys(db);\n const dbRows = databaseId\n ? [{ database_id: databaseId }]\n : (db\n .query(\n `SELECT DISTINCT database_id FROM records\n WHERE database_id IS NOT NULL AND __deleted = 0 AND order_key IS NULL`,\n )\n .all() as { database_id: string }[]);\n\n for (const d of dbRows) {\n const missing = db\n .query(\n `SELECT id FROM records\n WHERE database_id = ? AND __deleted = 0 AND order_key IS NULL\n ORDER BY created_hlc, id`,\n )\n .all(d.database_id) as { id: string }[];\n if (!missing.length) continue;\n\n const start = lastRecordOrderKey(db, d.database_id);\n const keys = keysBetween(start, null, missing.length);\n missing.forEach((row, i) => writeRecordOrderKey(db, row.id, keys[i]!, emitChange));\n }\n}\n\nexport function createRecord(\n db: Database,\n databaseId: string,\n data: Record<string, unknown>,\n): RecordRow {\n const dbRow = getDatabase(db, databaseId);\n if (!dbRow) throw new Error(`no such database: ${databaseId}`);\n const props = listProperties(db, databaseId);\n const resolved = resolveData(props, data);\n const id = deriveTitle(props, resolved, slugify(dbRow.name, \"rec\"));\n const orderKey = keyBetween(lastRecordOrderKey(db, databaseId), null);\n\n const first = emit(db, \"records\", id, \"database_id\", databaseId);\n emit(db, \"records\", id, \"created_hlc\", first.hlc);\n emit(db, \"records\", id, \"order_key\", orderKey);\n for (const { prop, value } of resolved)\n emit(db, \"records\", id, prop.id, coerce(db, prop, value));\n return getRecord(db, id)!;\n}\n\nexport function getRecord(db: Database, id: string): RecordRow | null {\n const row = db\n .query(\"SELECT id, database_id, data FROM records WHERE id = ? AND __deleted = 0\")\n .get(id) as { id: string; database_id: string; data: string } | null;\n if (!row) return null;\n return rowToRecord(row, listProperties(db, row.database_id));\n}\n\n/** Quote a property id for embedding in a JSON path / index expression. */\nfunction jsonKeyLit(propId: string): string {\n return propId.replace(/'/g, \"''\");\n}\n\nexport function listRecords(\n db: Database,\n databaseId: string,\n opts: { filter?: Record<string, unknown>; sort?: string; limit?: number } = {},\n): RecordRow[] {\n const props = listProperties(db, databaseId);\n\n // Coerce filters, then split: scalars push down to SQL (and earn an index),\n // arrays/objects/null are matched in JS afterward.\n const resolved =\n opts.filter && Object.keys(opts.filter).length\n ? resolveData(props, opts.filter).map(({ prop, value }) => ({\n prop,\n value: coerce(db, prop, value),\n }))\n : [];\n const sqlFilters = resolved.filter((f) => isSqlScalar(f.value));\n const jsFilters = resolved.filter((f) => !isSqlScalar(f.value));\n\n // Resolve sort: default created_hlc; \"-field\" = descending.\n let sortProp: PropertyRow | undefined;\n let sortDesc = false;\n if (opts.sort) {\n let key = opts.sort;\n if (key.startsWith(\"-\")) {\n sortDesc = true;\n key = key.slice(1);\n }\n if (key !== \"created\" && key !== \"created_hlc\") {\n const p = props.find(\n (p) => p.name.toLowerCase() === key.toLowerCase() || p.id === key,\n );\n if (!p) throw new Error(`unknown sort field: ${key}`);\n sortProp = p;\n }\n }\n\n // The act of filtering/sorting on a field is the signal to (maybe) index it.\n for (const f of sqlFilters) maybeAutoIndex(db, databaseId, f.prop);\n if (sortProp) maybeAutoIndex(db, databaseId, sortProp);\n\n const where = [\"database_id = ?\", \"__deleted = 0\"];\n const args: SqlValue[] = [databaseId];\n for (const f of sqlFilters) {\n where.push(`data ->> '${jsonKeyLit(f.prop.id)}' = ?`);\n args.push(sqlFilterValue(f.value as string | number | boolean));\n }\n\n const manualOrder = opts.sort == null;\n const orderExpr = sortProp\n ? `data ->> '${jsonKeyLit(sortProp.id)}'`\n : \"created_hlc\";\n let sql =\n `SELECT id, database_id, data FROM records WHERE ${where.join(\" AND \")} ` +\n (manualOrder\n ? \"ORDER BY order_key IS NULL, order_key, id\"\n : `ORDER BY ${orderExpr} ${sortDesc ? \"DESC\" : \"ASC\"}, id`);\n\n // LIMIT only pushes down when no JS-side filtering remains.\n const pushLimit = opts.limit != null && jsFilters.length === 0;\n if (pushLimit) {\n sql += \" LIMIT ?\";\n args.push(opts.limit!);\n }\n\n let rows = (\n db.query(sql).all(...args) as { id: string; database_id: string; data: string }[]\n ).map((r) => rowToRecord(r, props));\n\n if (jsFilters.length) {\n rows = rows.filter((r) =>\n jsFilters.every(\n (f) => JSON.stringify(r.values[f.prop.name] ?? null) === JSON.stringify(f.value),\n ),\n );\n if (opts.limit != null) rows = rows.slice(0, opts.limit);\n }\n return rows;\n}\n\nexport function moveRecord(\n db: Database,\n id: string,\n targetId: string,\n where: \"before\" | \"after\",\n): RecordRow {\n if (where !== \"before\" && where !== \"after\")\n throw new Error(`unknown move position: ${where}`);\n\n const src = db\n .query(\n \"SELECT id, database_id FROM records WHERE id = ? AND __deleted = 0\",\n )\n .get(id) as { id: string; database_id: string } | null;\n if (!src) throw new Error(`no such record: ${id}`);\n const target = db\n .query(\n \"SELECT id, database_id FROM records WHERE id = ? AND __deleted = 0\",\n )\n .get(targetId) as { id: string; database_id: string } | null;\n if (!target) throw new Error(`no such record: ${targetId}`);\n if (src.database_id !== target.database_id)\n throw new Error(\"cannot move a record across databases\");\n if (id === targetId) return getRecord(db, id)!;\n\n backfillRecordOrderKeys(db, src.database_id);\n\n let rows = orderedRecordRows(db, src.database_id).filter((r) => r.id !== id);\n let to = rows.findIndex((r) => r.id === targetId);\n if (to < 0) throw new Error(`no such target record: ${targetId}`);\n\n let left = where === \"before\" ? (rows[to - 1]?.order_key ?? null) : rows[to]!.order_key;\n let right = where === \"before\" ? rows[to]!.order_key : (rows[to + 1]?.order_key ?? null);\n if (left !== null && right !== null && left >= right) {\n rebalanceRecordOrderKeys(db, src.database_id);\n rows = orderedRecordRows(db, src.database_id).filter((r) => r.id !== id);\n to = rows.findIndex((r) => r.id === targetId);\n left = where === \"before\" ? (rows[to - 1]?.order_key ?? null) : rows[to]!.order_key;\n right = where === \"before\" ? rows[to]!.order_key : (rows[to + 1]?.order_key ?? null);\n }\n emit(db, \"records\", id, \"order_key\", keyBetween(left, right));\n return getRecord(db, id)!;\n}\n\nexport function updateRecord(\n db: Database,\n id: string,\n data: Record<string, unknown>,\n): RecordRow {\n const rec = db\n .query(\"SELECT id, database_id FROM records WHERE id = ? AND __deleted = 0\")\n .get(id) as { id: string; database_id: string } | null;\n if (!rec) throw new Error(`no such record: ${id}`);\n const resolved = resolveData(listProperties(db, rec.database_id), data);\n for (const { prop, value } of resolved)\n emit(db, \"records\", id, prop.id, coerce(db, prop, value));\n return getRecord(db, id)!;\n}\n\nexport function deleteRecord(db: Database, id: string): boolean {\n const rec = db\n .query(\"SELECT id FROM records WHERE id = ? AND __deleted = 0\")\n .get(id) as { id: string } | null;\n if (!rec) return false;\n emit(db, \"records\", id, \"__deleted\", 1);\n return true;\n}\n",
|
|
19
|
-
"import type {
|
|
20
|
-
"import type {
|
|
21
|
-
"import type {
|
|
22
|
-
"import type {
|
|
16
|
+
"export * from \"./errors.ts\";\nexport * from \"./paths.ts\";\nexport * from \"./driver.ts\";\nexport * from \"./db.ts\";\nexport * from \"./ids.ts\";\nexport * from \"./resolve.ts\";\nexport * from \"./hlc.ts\";\nexport * from \"./crdt.ts\";\nexport * from \"./blocks.ts\";\nexport * from \"./fracdex.ts\";\nexport * from \"./node.ts\";\nexport * from \"./databases.ts\";\nexport * from \"./context.ts\";\nexport * from \"./properties.ts\";\nexport * from \"./indexing.ts\";\nexport * from \"./records.ts\";\nexport * from \"./documents.ts\";\nexport * from \"./search.ts\";\nexport * from \"./cache.ts\";\nexport * from \"./sites.ts\";\nexport * from \"./sync/protocol.ts\";\nexport * from \"./sync/client.ts\";\nexport * from \"./sync/server.ts\";\n",
|
|
17
|
+
"import { Database } from \"bun:sqlite\";\nimport { mkdirSync } from \"node:fs\";\nimport { dbPath, cacheDir, metahubHome } from \"./paths.ts\";\nimport { initSchema } from \"./schema-init.ts\";\n\n// Schema bootstrap lives in schema-init.ts (runtime-agnostic, driver-typed);\n// re-exported here so existing imports keep working.\nexport {\n runSchema,\n ftsAvailable,\n migrateRecords,\n migratePeers,\n migrateDocBlocks,\n migrateDocuments,\n migrateOplog,\n initSchema,\n} from \"./schema-init.ts\";\n\nexport function ensureDirs(): void {\n mkdirSync(metahubHome(), { recursive: true });\n mkdirSync(cacheDir(), { recursive: true });\n}\n\n/** Open (and migrate) the on-disk metahub database for the resolved home. */\nexport function openMetahub(): Database {\n ensureDirs();\n const db = new Database(dbPath(), { create: true });\n db.exec(\"PRAGMA journal_mode = WAL;\");\n initSchema(db);\n return db;\n}\n",
|
|
18
|
+
"export const CORE_SCHEMA = `\nCREATE TABLE IF NOT EXISTS meta (\n key TEXT PRIMARY KEY,\n value TEXT\n);\n\n-- CRDT oplog: one row per field assignment. Source of truth for sync.\n-- txn groups the changes of one logical mutation for history rendering\n-- (nullable: legacy rows and changes from pre-txn peers have none).\nCREATE TABLE IF NOT EXISTS crdt_changes (\n hlc TEXT NOT NULL,\n node_id TEXT NOT NULL,\n dataset TEXT NOT NULL,\n row_id TEXT NOT NULL,\n col TEXT NOT NULL,\n value TEXT,\n txn TEXT,\n PRIMARY KEY (dataset, row_id, col, hlc)\n);\nCREATE INDEX IF NOT EXISTS idx_changes_hlc ON crdt_changes(hlc);\n-- Serves history's \"every block ever attached to this doc\" lookup. Partial so\n-- it never indexes the large values other datasets carry (e.g. site file bodies).\nCREATE INDEX IF NOT EXISTS idx_changes_docref ON crdt_changes(value)\n WHERE dataset = 'doc_blocks' AND col = 'doc_id';\n\n-- Per-peer replication cursors (SQLite rowids: monotonic in insertion order,\n-- so no change is ever skipped regardless of HLC/clock skew). Outbound side of\n-- a pairing: \"token\" is the credential the *remote* issued to us (sent as a\n-- Bearer header when we sync to them). See migratePeers in db.ts for the columns\n-- added to legacy databases.\nCREATE TABLE IF NOT EXISTS peers (\n url TEXT PRIMARY KEY,\n pull_cursor INTEGER NOT NULL DEFAULT 0,\n push_cursor INTEGER NOT NULL DEFAULT 0,\n token TEXT,\n label TEXT,\n node_id TEXT,\n enabled INTEGER NOT NULL DEFAULT 1,\n last_sync_at INTEGER,\n last_status TEXT,\n last_error TEXT\n);\n\n-- Inbound side of a pairing: credentials *we* issued to remote devices. A peer\n-- presents one of these on /sync; acceptsSyncToken() checks it alongside the\n-- managed master token. Revoke by deleting the row.\nCREATE TABLE IF NOT EXISTS peer_grants (\n token TEXT PRIMARY KEY,\n peer_url TEXT,\n node_id TEXT,\n created_at INTEGER\n);\n\n-- One-time pairing codes minted by \"mh config peer code\" / POST /api/pair/new.\n-- Short-lived and single-use: redeemed during the pairing handshake, then the\n-- two devices exchange durable peer_grants. used/exp gate redemption.\nCREATE TABLE IF NOT EXISTS pairing_codes (\n code TEXT PRIMARY KEY,\n exp INTEGER NOT NULL,\n used INTEGER NOT NULL DEFAULT 0,\n created_at INTEGER\n);\n\nCREATE TABLE IF NOT EXISTS databases (\n id TEXT PRIMARY KEY,\n name TEXT,\n icon TEXT,\n created_hlc TEXT,\n __deleted INTEGER NOT NULL DEFAULT 0\n);\n\nCREATE TABLE IF NOT EXISTS properties (\n id TEXT PRIMARY KEY,\n database_id TEXT,\n name TEXT,\n type TEXT,\n config TEXT,\n position REAL,\n __deleted INTEGER NOT NULL DEFAULT 0\n);\nCREATE INDEX IF NOT EXISTS idx_properties_db ON properties(database_id);\n\n-- One row per record. Field cells live in the data JSON object, keyed by\n-- property id (rename-safe). Each (record,property) is still an independent\n-- CRDT register in the oplog; materialize() folds the winner into data via\n-- json_set/json_remove. Hot fields get expression indexes on data->>'propid'\n-- (see indexing.ts) so filter/sort/limit push down to SQL.\nCREATE TABLE IF NOT EXISTS records (\n id TEXT PRIMARY KEY,\n database_id TEXT,\n created_hlc TEXT,\n order_key TEXT,\n data TEXT NOT NULL DEFAULT '{}',\n __deleted INTEGER NOT NULL DEFAULT 0\n);\nCREATE INDEX IF NOT EXISTS idx_records_db_hlc ON records(database_id, created_hlc);\n\nCREATE TABLE IF NOT EXISTS documents (\n id TEXT PRIMARY KEY,\n title TEXT,\n body TEXT, -- materialized cache: serialized from doc_blocks\n database_id TEXT,\n parent_id TEXT,\n created_hlc TEXT,\n order_key TEXT, -- fractional index among siblings (same parent_id); ties broken by created_hlc,id\n __deleted INTEGER NOT NULL DEFAULT 0\n);\n\n-- Document body as an ordered list of blocks; each (block,field) is an\n-- independent CRDT register so concurrent edits to different blocks merge.\n-- order_key is a fractional index (ties broken by id) giving display order.\nCREATE TABLE IF NOT EXISTS doc_blocks (\n id TEXT PRIMARY KEY,\n doc_id TEXT,\n text TEXT,\n order_key TEXT,\n blank_after INTEGER NOT NULL DEFAULT 0, -- extra blank lines kept after this block (user spacing)\n __deleted INTEGER NOT NULL DEFAULT 0\n);\nCREATE INDEX IF NOT EXISTS idx_doc_blocks_doc ON doc_blocks(doc_id);\n\n-- A named static site (Supabase-Storage-style bucket). Served at /sites/<name>/.\nCREATE TABLE IF NOT EXISTS sites (\n id TEXT PRIMARY KEY,\n name TEXT, -- URL slug; resolved by getSiteByName\n title TEXT,\n created_hlc TEXT,\n __deleted INTEGER NOT NULL DEFAULT 0\n);\n\n-- One row per file in a site. content holds inline utf8/base64 text, or a blob\n-- hash (see cache.ts) when encoding = 'blob'. (site_id, path) maps to a stable\n-- id so re-uploads merge as a CRDT register instead of duplicating.\nCREATE TABLE IF NOT EXISTS site_files (\n id TEXT PRIMARY KEY,\n site_id TEXT,\n path TEXT,\n content_type TEXT,\n encoding TEXT, -- 'utf8' | 'base64' | 'blob'\n content TEXT,\n created_hlc TEXT,\n __deleted INTEGER NOT NULL DEFAULT 0\n);\nCREATE INDEX IF NOT EXISTS idx_site_files_site ON site_files(site_id);\n`;\n\n// Best-effort: FTS5 may not be compiled in. Search falls back to LIKE if this fails.\nexport const FTS_SCHEMA = `\nCREATE VIRTUAL TABLE IF NOT EXISTS search_fts USING fts5(\n kind UNINDEXED,\n id UNINDEXED,\n database_id UNINDEXED,\n title,\n body\n);\n`;\n",
|
|
19
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { newId, slugify, idKind } from \"./ids.ts\";\nimport { emit, grouped } from \"./crdt.ts\";\nimport { getDatabase } from \"./databases.ts\";\nimport { listProperties, type PropertyRow } from \"./properties.ts\";\nimport { maybeAutoIndex } from \"./indexing.ts\";\nimport { resolveCandidates } from \"./resolve.ts\";\nimport { keyBetween, keysBetween } from \"./fracdex.ts\";\nimport { MhError } from \"./errors.ts\";\n\ntype SqlValue = string | number | null;\n\n/** Scalars push down to SQL; arrays/objects/null are filtered in JS. */\nfunction isSqlScalar(v: unknown): v is string | number | boolean {\n return typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\";\n}\n\n/** Encode a coerced scalar to match what `data ->> '<prop>'` returns. */\nfunction sqlFilterValue(v: string | number | boolean): SqlValue {\n return typeof v === \"boolean\" ? (v ? 1 : 0) : v;\n}\n\nexport interface RecordRow {\n id: string;\n database_id: string;\n /** Cells keyed by property NAME — friendly for CLI / external agents, but\n * lossy when two properties share a name (one entry wins). */\n values: Record<string, unknown>;\n /** Cells keyed by property ID — lossless under duplicate names; the WebUI\n * reads/writes through this. */\n cells: Record<string, unknown>;\n}\n\ninterface OrderedRecordRow {\n id: string;\n database_id: string;\n created_hlc: string | null;\n order_key: string | null;\n}\n\n/**\n * Resolve one relation value to a concrete record id in the target database.\n * Accepts a full id / unique prefix / name. A well-formed record id that does\n * not (yet) exist passes through unchanged — a forward reference / explicit id\n * escape valve. Names/prefixes that match nothing, or match many, throw.\n */\nfunction resolveRelation(db: DbDriver, prop: PropertyRow, value: string): string {\n const target = prop.config?.database;\n if (!target) return value; // misconfigured relation — leave the value as-is\n const cands = resolveCandidates(db, value, { kind: \"rec\", databaseId: target });\n const exact = cands.find((c) => c.id === value);\n if (exact) return exact.id;\n if (cands.length === 1) return cands[0]!.id;\n if (cands.length === 0) {\n if (idKind(value) === \"rec\") return value; // forward reference to a full id\n throw new MhError(\"not_found\", `${prop.name}: no such record in target database: ${value}`);\n }\n throw new MhError(\"ambiguous\", `${prop.name}: ambiguous relation \"${value}\" (${cands.length} matches); use a full id`);\n}\n\n/** Validate + normalize a value for a property's type. Throws on mismatch. */\nfunction coerce(db: DbDriver, prop: PropertyRow, value: unknown): unknown {\n switch (prop.type) {\n case \"text\":\n case \"url\":\n case \"date\": {\n if (value === null) return null;\n if (typeof value !== \"string\") throw new MhError(\"invalid_input\", `${prop.name} expects a string`);\n return value;\n }\n case \"number\": {\n if (value === null) return null;\n const n = typeof value === \"number\" ? value : Number(value);\n if (!Number.isFinite(n)) throw new MhError(\"invalid_input\", `${prop.name} expects a number`);\n return n;\n }\n case \"checkbox\": {\n if (typeof value === \"boolean\") return value;\n if (value === \"true\" || value === 1) return true;\n if (value === \"false\" || value === 0 || value === null) return false;\n throw new MhError(\"invalid_input\", `${prop.name} expects a boolean`);\n }\n case \"select\": {\n if (value === null) return null;\n const v = String(value);\n if (!prop.config?.options?.includes(v))\n throw new MhError(\"invalid_input\", `${prop.name}: '${v}' is not an allowed option`);\n return v;\n }\n case \"multi_select\": {\n const arr = value === null ? [] : Array.isArray(value) ? value : [value];\n const opts = prop.config?.options ?? [];\n for (const item of arr)\n if (!opts.includes(String(item)))\n throw new MhError(\"invalid_input\", `${prop.name}: '${item}' is not an allowed option`);\n return arr.map(String);\n }\n case \"relation\": {\n const arr = value === null ? [] : Array.isArray(value) ? value : [value];\n return arr.map((v) => resolveRelation(db, prop, String(v)));\n }\n }\n}\n\n/** Group properties by lowercased name; duplicate names are legal. */\nfunction propsByName(props: PropertyRow[]): Map<string, PropertyRow[]> {\n const byName = new Map<string, PropertyRow[]>();\n for (const p of props) {\n const k = p.name.toLowerCase();\n const list = byName.get(k);\n if (list) list.push(p);\n else byName.set(k, [p]);\n }\n return byName;\n}\n\n/**\n * Match data keys (property name OR id) to properties. Duplicate property\n * names are a legal state (offline peers can create them concurrently), so a\n * name that matches several properties is ambiguous — callers must switch to\n * the property id.\n */\nfunction resolveData(\n props: PropertyRow[],\n data: Record<string, unknown>,\n): { prop: PropertyRow; value: unknown }[] {\n const byId = new Map(props.map((p) => [p.id, p]));\n const byName = propsByName(props);\n const out: { prop: PropertyRow; value: unknown }[] = [];\n for (const [key, value] of Object.entries(data)) {\n let prop = byId.get(key);\n if (!prop) {\n const matches = byName.get(key.toLowerCase()) ?? [];\n if (matches.length > 1)\n throw new MhError(\n \"ambiguous\",\n `property name \"${key}\" matches ${matches.length} properties; use a property id`,\n );\n prop = matches[0];\n }\n if (!prop) throw new MhError(\"not_found\", `unknown property: ${key}`);\n out.push({ prop, value });\n }\n return out;\n}\n\n/** Build a RecordRow from a materialized row; keys in `data` are property ids. */\nfunction rowToRecord(\n row: { id: string; database_id: string; data: string },\n props: PropertyRow[],\n): RecordRow {\n const raw = JSON.parse(row.data || \"{}\") as Record<string, unknown>;\n const byId = new Map(props.map((p) => [p.id, p]));\n const values: Record<string, unknown> = {};\n const cells: Record<string, unknown> = {};\n for (const [propId, v] of Object.entries(raw)) {\n const p = byId.get(propId);\n if (!p) continue; // skip cells for removed properties\n values[p.name] = v;\n cells[p.id] = v;\n }\n return { id: row.id, database_id: row.database_id, values, cells };\n}\n\nfunction deriveTitle(\n props: PropertyRow[],\n resolved: { prop: PropertyRow; value: unknown }[],\n fallbackBase: string,\n): string {\n const text = resolved.find(\n (r) => r.prop.type === \"text\" && typeof r.value === \"string\" && r.value,\n );\n return newId(\"rec\", text ? String(text.value) : \"\", fallbackBase);\n}\n\nfunction tableExists(db: DbDriver, table: string): boolean {\n return (\n db\n .query(\"SELECT 1 AS ok FROM sqlite_master WHERE type = 'table' AND name = ?\")\n .get(table) != null\n );\n}\n\nfunction canEmitOrderKeys(db: DbDriver): boolean {\n return tableExists(db, \"meta\") && tableExists(db, \"crdt_changes\");\n}\n\nfunction writeRecordOrderKey(db: DbDriver, recordId: string, orderKey: string, emitChange: boolean): void {\n if (emitChange) emit(db, \"records\", recordId, \"order_key\", orderKey);\n else db.query(\"UPDATE records SET order_key = ? WHERE id = ?\").run(orderKey, recordId);\n}\n\nfunction lastRecordOrderKey(db: DbDriver, databaseId: string): string | null {\n const row = db\n .query(\n `SELECT order_key FROM records\n WHERE database_id = ? AND __deleted = 0 AND order_key IS NOT NULL\n ORDER BY order_key DESC, id DESC LIMIT 1`,\n )\n .get(databaseId) as { order_key: string | null } | null;\n return row?.order_key ?? null;\n}\n\nfunction orderedRecordRows(db: DbDriver, databaseId: string): OrderedRecordRow[] {\n return db\n .query(\n `SELECT id, database_id, created_hlc, order_key FROM records\n WHERE database_id = ? AND __deleted = 0\n ORDER BY order_key IS NULL, order_key, created_hlc, id`,\n )\n .all(databaseId) as OrderedRecordRow[];\n}\n\nfunction rebalanceRecordOrderKeys(db: DbDriver, databaseId: string): void {\n const rows = orderedRecordRows(db, databaseId);\n const keys = keysBetween(null, null, rows.length);\n rows.forEach((row, i) => {\n if (row.order_key !== keys[i]) emit(db, \"records\", row.id, \"order_key\", keys[i]!);\n });\n}\n\nexport const backfillRecordOrderKeys = grouped(function backfillRecordOrderKeys(\n db: DbDriver,\n databaseId?: string,\n): void {\n const emitChange = canEmitOrderKeys(db);\n const dbRows = databaseId\n ? [{ database_id: databaseId }]\n : (db\n .query(\n `SELECT DISTINCT database_id FROM records\n WHERE database_id IS NOT NULL AND __deleted = 0 AND order_key IS NULL`,\n )\n .all() as { database_id: string }[]);\n\n for (const d of dbRows) {\n const missing = db\n .query(\n `SELECT id FROM records\n WHERE database_id = ? AND __deleted = 0 AND order_key IS NULL\n ORDER BY created_hlc, id`,\n )\n .all(d.database_id) as { id: string }[];\n if (!missing.length) continue;\n\n const start = lastRecordOrderKey(db, d.database_id);\n const keys = keysBetween(start, null, missing.length);\n missing.forEach((row, i) => writeRecordOrderKey(db, row.id, keys[i]!, emitChange));\n }\n});\n\nexport const createRecord = grouped(function createRecord(\n db: DbDriver,\n databaseId: string,\n data: Record<string, unknown>,\n): RecordRow {\n const dbRow = getDatabase(db, databaseId);\n if (!dbRow) throw new MhError(\"not_found\", `no such database: ${databaseId}`);\n const props = listProperties(db, databaseId);\n const resolved = resolveData(props, data);\n const id = deriveTitle(props, resolved, slugify(dbRow.name, \"rec\"));\n const orderKey = keyBetween(lastRecordOrderKey(db, databaseId), null);\n\n const first = emit(db, \"records\", id, \"database_id\", databaseId);\n emit(db, \"records\", id, \"created_hlc\", first.hlc);\n emit(db, \"records\", id, \"order_key\", orderKey);\n for (const { prop, value } of resolved)\n emit(db, \"records\", id, prop.id, coerce(db, prop, value));\n return getRecord(db, id)!;\n});\n\nexport function getRecord(db: DbDriver, id: string): RecordRow | null {\n const row = db\n .query(\"SELECT id, database_id, data FROM records WHERE id = ? AND __deleted = 0\")\n .get(id) as { id: string; database_id: string; data: string } | null;\n if (!row) return null;\n return rowToRecord(row, listProperties(db, row.database_id));\n}\n\n/** Quote a property id for embedding in a JSON path / index expression. */\nfunction jsonKeyLit(propId: string): string {\n return propId.replace(/'/g, \"''\");\n}\n\nexport function listRecords(\n db: DbDriver,\n databaseId: string,\n opts: { filter?: Record<string, unknown>; sort?: string; limit?: number } = {},\n): RecordRow[] {\n const props = listProperties(db, databaseId);\n\n // Coerce filters, then split: scalars push down to SQL (and earn an index),\n // arrays/objects/null are matched in JS afterward.\n const resolved =\n opts.filter && Object.keys(opts.filter).length\n ? resolveData(props, opts.filter).map(({ prop, value }) => ({\n prop,\n value: coerce(db, prop, value),\n }))\n : [];\n const sqlFilters = resolved.filter((f) => isSqlScalar(f.value));\n const jsFilters = resolved.filter((f) => !isSqlScalar(f.value));\n\n // Resolve sort: default created_hlc; \"-field\" = descending.\n let sortProp: PropertyRow | undefined;\n let sortDesc = false;\n if (opts.sort) {\n let key = opts.sort;\n if (key.startsWith(\"-\")) {\n sortDesc = true;\n key = key.slice(1);\n }\n if (key !== \"created\" && key !== \"created_hlc\") {\n let p = props.find((p) => p.id === key);\n if (!p) {\n const matches = props.filter((q) => q.name.toLowerCase() === key.toLowerCase());\n if (matches.length > 1)\n throw new MhError(\n \"ambiguous\",\n `sort field \"${key}\" matches ${matches.length} properties; use a property id`,\n );\n p = matches[0];\n }\n if (!p) throw new MhError(\"not_found\", `unknown sort field: ${key}`);\n sortProp = p;\n }\n }\n\n // The act of filtering/sorting on a field is the signal to (maybe) index it.\n for (const f of sqlFilters) maybeAutoIndex(db, databaseId, f.prop);\n if (sortProp) maybeAutoIndex(db, databaseId, sortProp);\n\n const where = [\"database_id = ?\", \"__deleted = 0\"];\n const args: SqlValue[] = [databaseId];\n for (const f of sqlFilters) {\n where.push(`data ->> '${jsonKeyLit(f.prop.id)}' = ?`);\n args.push(sqlFilterValue(f.value as string | number | boolean));\n }\n\n const manualOrder = opts.sort == null;\n const orderExpr = sortProp\n ? `data ->> '${jsonKeyLit(sortProp.id)}'`\n : \"created_hlc\";\n let sql =\n `SELECT id, database_id, data FROM records WHERE ${where.join(\" AND \")} ` +\n (manualOrder\n ? \"ORDER BY order_key IS NULL, order_key, id\"\n : `ORDER BY ${orderExpr} ${sortDesc ? \"DESC\" : \"ASC\"}, id`);\n\n // LIMIT only pushes down when no JS-side filtering remains.\n const pushLimit = opts.limit != null && jsFilters.length === 0;\n if (pushLimit) {\n sql += \" LIMIT ?\";\n args.push(opts.limit!);\n }\n\n let rows = (\n db.query(sql).all(...args) as { id: string; database_id: string; data: string }[]\n ).map((r) => rowToRecord(r, props));\n\n if (jsFilters.length) {\n rows = rows.filter((r) =>\n jsFilters.every(\n (f) => JSON.stringify(r.cells[f.prop.id] ?? null) === JSON.stringify(f.value),\n ),\n );\n if (opts.limit != null) rows = rows.slice(0, opts.limit);\n }\n return rows;\n}\n\nexport const moveRecord = grouped(function moveRecord(\n db: DbDriver,\n id: string,\n targetId: string,\n where: \"before\" | \"after\",\n): RecordRow {\n if (where !== \"before\" && where !== \"after\")\n throw new MhError(\"invalid_input\", `unknown move position: ${where}`);\n\n const src = db\n .query(\n \"SELECT id, database_id FROM records WHERE id = ? AND __deleted = 0\",\n )\n .get(id) as { id: string; database_id: string } | null;\n if (!src) throw new MhError(\"not_found\", `no such record: ${id}`);\n const target = db\n .query(\n \"SELECT id, database_id FROM records WHERE id = ? AND __deleted = 0\",\n )\n .get(targetId) as { id: string; database_id: string } | null;\n if (!target) throw new MhError(\"not_found\", `no such record: ${targetId}`);\n if (src.database_id !== target.database_id)\n throw new MhError(\"invalid_input\", \"cannot move a record across databases\");\n if (id === targetId) return getRecord(db, id)!;\n\n backfillRecordOrderKeys(db, src.database_id);\n\n let rows = orderedRecordRows(db, src.database_id).filter((r) => r.id !== id);\n let to = rows.findIndex((r) => r.id === targetId);\n if (to < 0) throw new MhError(\"not_found\", `no such target record: ${targetId}`);\n\n let left = where === \"before\" ? (rows[to - 1]?.order_key ?? null) : rows[to]!.order_key;\n let right = where === \"before\" ? rows[to]!.order_key : (rows[to + 1]?.order_key ?? null);\n if (left !== null && right !== null && left >= right) {\n rebalanceRecordOrderKeys(db, src.database_id);\n rows = orderedRecordRows(db, src.database_id).filter((r) => r.id !== id);\n to = rows.findIndex((r) => r.id === targetId);\n left = where === \"before\" ? (rows[to - 1]?.order_key ?? null) : rows[to]!.order_key;\n right = where === \"before\" ? rows[to]!.order_key : (rows[to + 1]?.order_key ?? null);\n }\n emit(db, \"records\", id, \"order_key\", keyBetween(left, right));\n return getRecord(db, id)!;\n});\n\nexport const updateRecord = grouped(function updateRecord(\n db: DbDriver,\n id: string,\n data: Record<string, unknown>,\n): RecordRow {\n const rec = db\n .query(\"SELECT id, database_id FROM records WHERE id = ? AND __deleted = 0\")\n .get(id) as { id: string; database_id: string } | null;\n if (!rec) throw new MhError(\"not_found\", `no such record: ${id}`);\n const resolved = resolveData(listProperties(db, rec.database_id), data);\n for (const { prop, value } of resolved)\n emit(db, \"records\", id, prop.id, coerce(db, prop, value));\n return getRecord(db, id)!;\n});\n\nexport const deleteRecord = grouped(function deleteRecord(db: DbDriver, id: string): boolean {\n const rec = db\n .query(\"SELECT id FROM records WHERE id = ? AND __deleted = 0\")\n .get(id) as { id: string } | null;\n if (!rec) return false;\n emit(db, \"records\", id, \"__deleted\", 1);\n return true;\n});\n",
|
|
20
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { newId } from \"./ids.ts\";\nimport { emit, grouped } from \"./crdt.ts\";\nimport { MhError } from \"./errors.ts\";\nimport { addProperty, listProperties, type PropertyConfig } from \"./properties.ts\";\nimport { createRecord, listRecords } from \"./records.ts\";\nimport type { ColumnsOf } from \"./sqlcols.ts\";\n\nexport interface DatabaseRow {\n id: string;\n name: string;\n icon: string | null;\n created_hlc: string;\n}\n\nexport const DATABASE_COLS = [\"id\", \"name\", \"icon\", \"created_hlc\"] as const;\nconst _databaseCols: ColumnsOf<DatabaseRow, typeof DATABASE_COLS> = DATABASE_COLS;\nconst DATABASE_SELECT = DATABASE_COLS.join(\", \");\n\nexport const createDatabase = grouped(function createDatabase(\n db: DbDriver,\n opts: { name: string; icon?: string },\n): DatabaseRow {\n const id = newId(\"db\", opts.name);\n const first = emit(db, \"databases\", id, \"name\", opts.name);\n emit(db, \"databases\", id, \"created_hlc\", first.hlc);\n if (opts.icon !== undefined) emit(db, \"databases\", id, \"icon\", opts.icon);\n return getDatabase(db, id)!;\n});\n\nexport const updateDatabase = grouped(function updateDatabase(\n db: DbDriver,\n id: string,\n fields: { name?: string; icon?: string | null },\n): DatabaseRow {\n if (!getDatabase(db, id)) throw new MhError(\"not_found\", `no such database: ${id}`);\n if (fields.name !== undefined) emit(db, \"databases\", id, \"name\", fields.name);\n if (fields.icon !== undefined) emit(db, \"databases\", id, \"icon\", fields.icon);\n return getDatabase(db, id)!;\n});\n\n/**\n * Copy a database whole — name, icon, every property (type/config/position\n * preserved) and every record (in order, cells carried via an old→new property\n * id map, so duplicate property names copy losslessly). A relation column\n * pointing back at the *source* database is remapped to the copy so it stays\n * self-referential; relations to other databases keep their target.\n * `name`/`icon` override the defaults; the locale \"copy\" suffix is the\n * caller's job. All emits share one txn, so the copy syncs as one revision.\n */\nexport const duplicateDatabase = grouped(function duplicateDatabase(\n db: DbDriver,\n id: string,\n opts: { name?: string; icon?: string } = {},\n): DatabaseRow {\n const src = getDatabase(db, id);\n if (!src) throw new MhError(\"not_found\", `no such database: ${id}`);\n const dup = createDatabase(db, {\n name: opts.name ?? src.name,\n icon: (opts.icon ?? src.icon) ?? undefined,\n });\n const propIdMap = new Map<string, string>();\n for (const p of listProperties(db, id)) {\n const config: PropertyConfig | undefined =\n p.config?.database === id ? { ...p.config, database: dup.id } : (p.config ?? undefined);\n const np = addProperty(db, dup.id, { name: p.name, type: p.type, config, position: p.position });\n propIdMap.set(p.id, np.id);\n }\n for (const r of listRecords(db, id)) {\n const data: Record<string, unknown> = {};\n for (const [pid, v] of Object.entries(r.cells)) {\n const nid = propIdMap.get(pid);\n if (nid) data[nid] = v;\n }\n createRecord(db, dup.id, data);\n }\n return getDatabase(db, dup.id)!;\n});\n\nexport function getDatabase(db: DbDriver, id: string): DatabaseRow | null {\n return db\n .query(`SELECT ${DATABASE_SELECT} FROM databases WHERE id = ? AND __deleted = 0`)\n .get(id) as DatabaseRow | null;\n}\n\nexport function listDatabases(db: DbDriver): DatabaseRow[] {\n return db\n .query(`SELECT ${DATABASE_SELECT} FROM databases WHERE __deleted = 0 ORDER BY created_hlc`)\n .all() as DatabaseRow[];\n}\n\nexport const deleteDatabase = grouped(function deleteDatabase(db: DbDriver, id: string): boolean {\n if (!getDatabase(db, id)) return false;\n emit(db, \"databases\", id, \"__deleted\", 1);\n\n // Cascade so nothing is left dangling (the same fixes repairHub would make off\n // the database tombstone, applied eagerly here by the deleting node):\n // - properties/records are meaningless without the database -> tombstone;\n // - documents keep an optional scope link -> detach so their content survives.\n const tombstone = (table: string) => {\n for (const r of liveChildren(db, table, \"database_id\", id))\n emit(db, table, r, \"__deleted\", 1);\n };\n tombstone(\"properties\");\n tombstone(\"records\");\n for (const d of liveChildren(db, \"documents\", \"database_id\", id))\n emit(db, \"documents\", d, \"database_id\", null);\n\n // Drop the \"current database\" pointer if it referenced this one (raw query to\n // avoid a context.ts <-> databases.ts import cycle; read-side also self-heals).\n db.query(\"DELETE FROM meta WHERE key = 'current_db' AND value = ?\").run(id);\n return true;\n});\n\n/** Ids of live rows in `table` whose `col` references `parentId`. */\nfunction liveChildren(db: DbDriver, table: string, col: string, parentId: string): string[] {\n return (\n db\n .query(`SELECT id FROM ${table} WHERE ${col} = ? AND __deleted = 0`)\n .all(parentId) as { id: string }[]\n ).map((r) => r.id);\n}\n",
|
|
21
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { newId } from \"./ids.ts\";\nimport { emit, grouped } from \"./crdt.ts\";\nimport { getDatabase } from \"./databases.ts\";\nimport { ensurePropIndex } from \"./indexing.ts\";\nimport { MhError } from \"./errors.ts\";\nimport type { ColumnsOf } from \"./sqlcols.ts\";\n\nexport type PropType =\n | \"text\"\n | \"number\"\n | \"checkbox\"\n | \"select\"\n | \"multi_select\"\n | \"date\"\n | \"relation\"\n | \"url\";\n\nexport const PROP_TYPES: ReadonlySet<string> = new Set([\n \"text\",\n \"number\",\n \"checkbox\",\n \"select\",\n \"multi_select\",\n \"date\",\n \"relation\",\n \"url\",\n]);\n\nexport interface PropertyConfig {\n options?: string[]; // select / multi_select\n database?: string; // relation target database id\n indexed?: boolean; // hot query key — materialize an index for this field\n width?: number; // table column width in px (UI metadata, replicated via config)\n}\n\nexport interface PropertyRow {\n id: string;\n database_id: string;\n name: string;\n type: PropType;\n config: PropertyConfig | null;\n position: number;\n}\n\n// SQL returns config as a JSON string; rows are parsed into PropertyRow after.\nexport const PROPERTY_COLS = [\"id\", \"database_id\", \"name\", \"type\", \"config\", \"position\"] as const;\nconst _propertyCols: ColumnsOf<PropertyRow, typeof PROPERTY_COLS> = PROPERTY_COLS;\nconst PROPERTY_SELECT = PROPERTY_COLS.join(\", \");\n\nfunction validateConfig(type: PropType, config: PropertyConfig | undefined): void {\n if (type === \"select\" || type === \"multi_select\") {\n const opts = config?.options;\n if (!Array.isArray(opts) || opts.length === 0 || !opts.every((o) => typeof o === \"string\"))\n throw new MhError(\"invalid_input\", `${type} requires config.options: string[]`);\n }\n if (type === \"relation\") {\n if (typeof config?.database !== \"string\")\n throw new MhError(\"invalid_input\", \"relation requires config.database (target database id)\");\n }\n}\n\nfunction nextPosition(db: DbDriver, databaseId: string): number {\n const row = db\n .query(\n \"SELECT MAX(position) AS m FROM properties WHERE database_id = ? AND __deleted = 0\",\n )\n .get(databaseId) as { m: number | null };\n return (row.m ?? 0) + 1;\n}\n\nexport const addProperty = grouped(function addProperty(\n db: DbDriver,\n databaseId: string,\n opts: {\n name: string;\n type: PropType;\n config?: PropertyConfig;\n position?: number;\n // Low-level hint for built-in features that know a field is a hot query\n // key (e.g. an IM conversation id). Not surfaced to CLI users — ad-hoc\n // fields get indexed automatically from query usage (see indexing.ts).\n indexed?: boolean;\n },\n): PropertyRow {\n if (!getDatabase(db, databaseId)) throw new MhError(\"not_found\", `no such database: ${databaseId}`);\n if (!PROP_TYPES.has(opts.type)) throw new MhError(\"invalid_input\", `unknown property type: ${opts.type}`);\n validateConfig(opts.type, opts.config);\n\n // Persist the indexed hint in config so it replicates to peers and survives\n // snapshot/restore (the index itself is derived, not in the oplog).\n const config: PropertyConfig | null = opts.indexed\n ? { ...(opts.config ?? {}), indexed: true }\n : (opts.config ?? null);\n\n const id = newId(\"prop\", opts.name);\n emit(db, \"properties\", id, \"database_id\", databaseId);\n emit(db, \"properties\", id, \"name\", opts.name);\n emit(db, \"properties\", id, \"type\", opts.type);\n emit(db, \"properties\", id, \"config\", config);\n emit(db, \"properties\", id, \"position\", opts.position ?? nextPosition(db, databaseId));\n\n // Relations are almost always query keys; index eagerly. Honor explicit hint.\n if (opts.type === \"relation\" || opts.indexed === true)\n ensurePropIndex(db, databaseId, id);\n return getProperty(db, id)!;\n});\n\nexport function getProperty(db: DbDriver, id: string): PropertyRow | null {\n const row = db\n .query(`SELECT ${PROPERTY_SELECT} FROM properties WHERE id = ? AND __deleted = 0`)\n .get(id) as (Omit<PropertyRow, \"config\"> & { config: string | null }) | null;\n if (!row) return null;\n return { ...row, config: row.config ? (JSON.parse(row.config) as PropertyConfig) : null };\n}\n\nexport function listProperties(db: DbDriver, databaseId: string): PropertyRow[] {\n const rows = db\n .query(\n `SELECT ${PROPERTY_SELECT} FROM properties WHERE database_id = ? AND __deleted = 0 ORDER BY position`,\n )\n .all(databaseId) as (Omit<PropertyRow, \"config\"> & { config: string | null })[];\n return rows.map((r) => ({\n ...r,\n config: r.config ? (JSON.parse(r.config) as PropertyConfig) : null,\n }));\n}\n\nexport const updateProperty = grouped(function updateProperty(\n db: DbDriver,\n id: string,\n fields: { name?: string; type?: PropType; config?: PropertyConfig; position?: number },\n): PropertyRow {\n const cur = getProperty(db, id);\n if (!cur) throw new MhError(\"not_found\", `no such property: ${id}`);\n\n const typeChanged = fields.type !== undefined && fields.type !== cur.type;\n if (fields.type !== undefined && !PROP_TYPES.has(fields.type))\n throw new MhError(\"invalid_input\", `unknown property type: ${fields.type}`);\n\n // Validate config against whichever type will be in effect.\n const effectiveType = fields.type ?? cur.type;\n if (fields.config !== undefined) validateConfig(effectiveType, fields.config);\n else if (typeChanged) validateConfig(fields.type!, undefined);\n\n if (fields.name !== undefined) emit(db, \"properties\", id, \"name\", fields.name);\n if (fields.type !== undefined) emit(db, \"properties\", id, \"type\", fields.type);\n if (fields.config !== undefined) emit(db, \"properties\", id, \"config\", fields.config);\n if (fields.position !== undefined) emit(db, \"properties\", id, \"position\", fields.position);\n\n // A type change invalidates existing cell values (a number may not be a valid\n // select option, etc.), so clear the cells that currently hold a value for\n // this property. The field is keyed by property id in the records data JSON.\n if (typeChanged) {\n const rows = db\n .query(\n \"SELECT id FROM records WHERE database_id = ? AND __deleted = 0 AND data ->> ? IS NOT NULL\",\n )\n .all(cur.database_id, id) as { id: string }[];\n for (const r of rows) emit(db, \"records\", r.id, id, null);\n }\n return getProperty(db, id)!;\n});\n\n// Persist a column's display width. Merges into the existing config server-side\n// so concurrent callers can't strip sibling fields (e.g. a select's `options`),\n// and clamps to a sane range. The width replicates with `config` via the oplog.\nexport function setPropertyWidth(db: DbDriver, id: string, width: number): PropertyRow {\n const cur = getProperty(db, id);\n if (!cur) throw new MhError(\"not_found\", `no such property: ${id}`);\n if (!Number.isFinite(width)) throw new MhError(\"invalid_input\", \"width must be a finite number\");\n const w = Math.max(80, Math.min(2000, Math.round(width)));\n return updateProperty(db, id, { config: { ...(cur.config ?? {}), width: w } });\n}\n\nexport const removeProperty = grouped(function removeProperty(db: DbDriver, id: string): boolean {\n const prop = getProperty(db, id);\n if (!prop) return false;\n emit(db, \"properties\", id, \"__deleted\", 1);\n // Clear this property's now-orphaned cells (keyed by property id in the records\n // data JSON) so no dead cell data lingers — same cleanup repairHub would do off\n // the property tombstone. emit(undefined) materializes to json_remove.\n const rows = db\n .query(\n \"SELECT id FROM records WHERE database_id = ? AND __deleted = 0 AND data ->> ? IS NOT NULL\",\n )\n .all(prop.database_id, id) as { id: string }[];\n for (const r of rows) emit(db, \"records\", r.id, id, undefined);\n return true;\n});\n",
|
|
22
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport type { PropertyRow } from \"./properties.ts\";\n\n// Records of all databases share one `records` table; indexes are partial on\n// database_id so they stay small and per-collection. A field is indexed only\n// when it's actually used to filter/sort AND the collection is large enough to\n// matter — small tables scan instantly and don't earn the write cost.\nconst AUTO_INDEX_ROW_THRESHOLD = 2000;\n\n/** SQLite identifiers we build are slug+suffix ids; keep only safe chars. */\nfunction sanitize(s: string): string {\n return s.replace(/[^a-zA-Z0-9_]/g, \"_\");\n}\n\n/** Escape a string for embedding as a single-quoted SQL literal. */\nfunction lit(s: string): string {\n return s.replace(/'/g, \"''\");\n}\n\nfunction indexName(databaseId: string, propId: string): string {\n return `idx_rec_${sanitize(databaseId)}_${sanitize(propId)}`;\n}\n\nexport function hasIndex(db: DbDriver, databaseId: string, propId: string): boolean {\n const row = db\n .query(\"SELECT 1 AS ok FROM sqlite_master WHERE type = 'index' AND name = ?\")\n .get(indexName(databaseId, propId)) as { ok: number } | null;\n return row != null;\n}\n\n/**\n * Create an expression index on `data ->> '<propId>'` (with created_hlc as the\n * sort tail), partial on this database. Idempotent. The expression matches\n * exactly what listRecords emits, so the optimizer uses it.\n */\nexport function ensurePropIndex(db: DbDriver, databaseId: string, propId: string): void {\n const name = indexName(databaseId, propId);\n db.exec(\n `CREATE INDEX IF NOT EXISTS \"${name}\" ON records (data ->> '${lit(propId)}', created_hlc) ` +\n `WHERE database_id = '${lit(databaseId)}' AND __deleted = 0`,\n );\n}\n\n/**\n * Ensure an index for a field that a query filters/sorts on — but only when it\n * will pay off. relation fields are almost always query keys (cheap, index\n * eagerly); other fields wait until the collection crosses the row threshold.\n */\nexport function maybeAutoIndex(db: DbDriver, databaseId: string, prop: PropertyRow): void {\n if (hasIndex(db, databaseId, prop.id)) return;\n if (prop.type !== \"relation\") {\n const row = db\n .query(\n \"SELECT COUNT(*) AS c FROM records WHERE database_id = ? AND __deleted = 0\",\n )\n .get(databaseId) as { c: number };\n if (row.c < AUTO_INDEX_ROW_THRESHOLD) return;\n }\n ensurePropIndex(db, databaseId, prop.id);\n}\n",
|
|
23
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { idKind, type Kind } from \"./ids.ts\";\nimport { MhError } from \"./errors.ts\";\n\n/** Kinds reachable through the public reference resolver. `blk` is internal. */\nexport type PublicKind = \"db\" | \"prop\" | \"rec\" | \"doc\";\n\nexport interface Candidate {\n kind: PublicKind;\n id: string;\n label: string;\n}\n\ninterface KindSpec {\n table: string;\n nameCol: string | null; // column matched by name/title (null = no name match)\n scoped: boolean; // filtered by database_id when a scope is supplied\n noun: string; // human label for \"no such <noun>\"\n}\n\nconst SPECS: Record<PublicKind, KindSpec> = {\n db: { table: \"databases\", nameCol: \"name\", scoped: false, noun: \"database\" },\n prop: { table: \"properties\", nameCol: \"name\", scoped: true, noun: \"property\" },\n rec: { table: \"records\", nameCol: null, scoped: true, noun: \"record\" },\n doc: { table: \"documents\", nameCol: \"title\", scoped: true, noun: \"document\" },\n};\n\nconst PUBLIC_KINDS: PublicKind[] = [\"db\", \"prop\", \"rec\", \"doc\"];\n\nfunction isPublic(k: Kind | null): k is PublicKind {\n return k !== null && k !== \"blk\";\n}\n\ntype SqlValue = string;\n\n// '{' (0x7B) is the first code point above every char an id can contain\n// ([a-z0-9_-], max 'z' = 0x7A), so [p, p+'{') is exactly the set of ids with\n// prefix p under BINARY collation — a primary-key range scan, no LIKE wildcards.\nconst HI = \"{\";\n\n/** The first text property's id for a database — a record's de-facto title. */\nfunction titlePropId(db: DbDriver, databaseId: string): string | null {\n const row = db\n .query(\n \"SELECT id FROM properties WHERE database_id = ? AND type = 'text' AND __deleted = 0 ORDER BY position LIMIT 1\",\n )\n .get(databaseId) as { id: string } | null;\n return row?.id ?? null;\n}\n\n/** All live rows of one kind matching `ref` by id-prefix or name. */\nfunction queryKind(\n db: DbDriver,\n kind: PublicKind,\n ref: string,\n databaseId?: string,\n): Candidate[] {\n const spec = SPECS[kind];\n // Records have no name column; when scoped to a database, match/show the\n // first text property's value (its title) so \"Alice Chen\" resolves.\n let nameCol = spec.nameCol;\n if (kind === \"rec\" && databaseId) {\n const tp = titlePropId(db, databaseId);\n if (tp) nameCol = `data ->> '${tp.replace(/'/g, \"''\")}'`;\n }\n const labelExpr = nameCol ?? \"''\"; // kinds without a name show id only\n const conds: string[] = [];\n const args: SqlValue[] = [];\n\n // Raw prefix (covers an exact full id, and a typed prefix like \"rec_log\").\n conds.push(\"(id >= ? AND id < ?)\");\n args.push(ref, ref + HI);\n // Typed slug prefix: lets a bare slug \"login-bug\" hit \"rec_login-bug-…\".\n const typed = `${kind}_${ref}`;\n conds.push(\"(id >= ? AND id < ?)\");\n args.push(typed, typed + HI);\n // Name/title equality (case-insensitive), where the kind has a name.\n if (nameCol) {\n conds.push(`lower(${nameCol}) = lower(?)`);\n args.push(ref);\n }\n\n let sql = `SELECT id, ${labelExpr} AS label FROM ${spec.table} WHERE __deleted = 0 AND (${conds.join(\" OR \")})`;\n if (spec.scoped && databaseId) {\n sql += \" AND database_id = ?\";\n args.push(databaseId);\n }\n\n const rows = db.query(sql).all(...args) as { id: string; label: string | null }[];\n return rows.map((r) => ({ kind, id: r.id, label: r.label ?? \"\" }));\n}\n\n/**\n * Every entity matching `ref`. Kind scope: an explicit `opts.kind` (the command\n * knows what it wants) wins; otherwise a typed prefix on `ref` dispatches; else\n * all public kinds are searched (the generic `mh get`). `databaseId` narrows\n * rec/doc/prop to one collection.\n */\nexport function resolveCandidates(\n db: DbDriver,\n ref: string,\n opts: { kind?: PublicKind; databaseId?: string } = {},\n): Candidate[] {\n const kinds: PublicKind[] = opts.kind\n ? [opts.kind]\n : isPublic(idKind(ref))\n ? [idKind(ref) as PublicKind]\n : PUBLIC_KINDS;\n\n const out: Candidate[] = [];\n const seen = new Set<string>();\n for (const k of kinds) {\n for (const c of queryKind(db, k, ref, opts.databaseId)) {\n if (seen.has(c.id)) continue;\n seen.add(c.id);\n out.push(c);\n }\n }\n return out;\n}\n\nfunction fmt(cands: Candidate[]): string {\n return cands\n .map((c) => ` ${c.id}${c.label ? \" \" + c.label : \"\"} (${c.kind})`)\n .join(\"\\n\");\n}\n\n/**\n * Resolve `ref` to one entity. An exact full-id match always wins (the full id\n * keeps working). Otherwise a single candidate is returned; zero throws\n * \"no such …\"; multiple throws a git-style ambiguity list.\n */\nexport function resolveEntity(\n db: DbDriver,\n ref: string,\n opts: { kind?: PublicKind; databaseId?: string } = {},\n): Candidate {\n const cands = resolveCandidates(db, ref, opts);\n const exact = cands.filter((c) => c.id === ref);\n if (exact.length === 1) return exact[0]!;\n if (exact.length === 0 && cands.length === 1) return cands[0]!;\n\n if (cands.length === 0) {\n const noun = opts.kind ? SPECS[opts.kind].noun : \"item\";\n throw new MhError(\"not_found\", `no such ${noun}: ${ref}`);\n }\n const shown = exact.length > 1 ? exact : cands;\n throw new MhError(\n \"ambiguous\",\n `ambiguous \"${ref}\" — ${shown.length} matches:\\n${fmt(shown)}\\n add more characters.`,\n );\n}\n\n/** Resolve `ref` to one concrete row id. See {@link resolveEntity}. */\nexport function resolveRef(\n db: DbDriver,\n ref: string,\n opts: { kind?: PublicKind; databaseId?: string } = {},\n): string {\n return resolveEntity(db, ref, opts).id;\n}\n",
|
|
23
24
|
"// Fractional indexing: compact string keys that sort lexicographically, so a new\n// key can always be produced strictly between two existing ones. Used to order\n// document blocks; concurrent inserts at the same slot are tie-broken by block id.\n//\n// Alphabet is base62 with ASCII order matching digit order (0-9 < A-Z < a-z), so\n// SQLite's default BINARY collation orders keys correctly with plain `ORDER BY`.\n\nconst DIGITS = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n/**\n * A digit string strictly between `a` and `b`. `a` is a digit string (possibly\n * \"\" = start) and `b` is a digit string or null (= end), with `a < b`. Neither\n * may end in the zero digit; this invariant is preserved by construction.\n */\nfunction midpoint(a: string, b: string | null): string {\n const zero = DIGITS[0]!;\n if (b !== null && a >= b) throw new Error(`fracdex: ${a} >= ${b}`);\n if (a.endsWith(zero) || (b !== null && b.endsWith(zero)))\n throw new Error(`fracdex: trailing zero in ${a}/${b}`);\n\n if (b !== null) {\n // Strip the common prefix, padding `a` with implicit zeros as we descend.\n let n = 0;\n while ((a[n] ?? zero) === b[n]) n++;\n if (n > 0) return b.slice(0, n) + midpoint(a.slice(n), b.slice(n));\n }\n\n const da = a === \"\" ? 0 : DIGITS.indexOf(a[0]!);\n const db = b === null ? DIGITS.length : DIGITS.indexOf(b[0]!);\n if (db - da > 1) {\n const mid = Math.round(0.5 * (da + db));\n return DIGITS[mid]!;\n }\n // First digits are consecutive (or equal at the boundary): descend.\n if (b !== null && b.length > 1) return b.slice(0, 1);\n return DIGITS[da]! + midpoint(a.slice(1), null);\n}\n\n/** A key strictly between `a` and `b` (lexicographically). null = open boundary. */\nexport function keyBetween(a: string | null, b: string | null): string {\n return midpoint(a ?? \"\", b);\n}\n\n/** `n` distinct keys in ascending order, all strictly between `a` and `b`. */\nexport function keysBetween(\n a: string | null,\n b: string | null,\n n: number,\n): string[] {\n if (n <= 0) return [];\n if (n === 1) return [keyBetween(a, b)];\n\n if (b === null) {\n let prev = keyBetween(a, null);\n const out = [prev];\n for (let i = 1; i < n; i++) {\n prev = keyBetween(prev, null);\n out.push(prev);\n }\n return out;\n }\n if (a === null) {\n let next = keyBetween(null, b);\n const out = [next];\n for (let i = 1; i < n; i++) {\n next = keyBetween(null, next);\n out.unshift(next);\n }\n return out;\n }\n\n // Both bounded: bisect so key lengths grow logarithmically.\n const mid = Math.floor(n / 2);\n const c = keyBetween(a, b);\n return [...keysBetween(a, c, mid), c, ...keysBetween(c, b, n - mid - 1)];\n}\n",
|
|
24
|
-
"import type { Database } from \"bun:sqlite\";\nimport { newId } from \"./ids.ts\";\nimport { emit } from \"./crdt.ts\";\nimport { parseDocBlocks, serializeDocBlocks, reconcile, type DocBlock } from \"./blocks.ts\";\nimport { keyBetween, keysBetween } from \"./fracdex.ts\";\n\nexport interface DocumentRow {\n id: string;\n title: string;\n body: string | null;\n database_id: string | null;\n parent_id: string | null;\n created_hlc: string;\n order_key: string | null;\n}\n\nexport type DocumentSummary = Omit<DocumentRow, \"body\">;\n\ninterface BlockRow {\n id: string;\n text: string;\n order_key: string;\n blank_after: number;\n}\n\n// ---- block helpers ---------------------------------------------------------\n\nfunction liveBlocks(db: Database, docId: string): BlockRow[] {\n return db\n .query(\n \"SELECT id, text, order_key, blank_after FROM doc_blocks WHERE doc_id = ? AND __deleted = 0 ORDER BY order_key, id\",\n )\n .all(docId) as BlockRow[];\n}\n\nfunction makeBlockId(text: string): string {\n return newId(\"blk\", text.split(\"\\n\", 1)[0] ?? \"\");\n}\n\n/** Emit a new block's fields; text last so the final body recompute is complete.\n * blank_after is only emitted when non-zero (0 is the column default). */\nfunction emitBlock(\n db: Database,\n docId: string,\n fields: { text: string; order_key: string; blankAfter: number },\n): void {\n const id = makeBlockId(fields.text);\n emit(db, \"doc_blocks\", id, \"doc_id\", docId);\n emit(db, \"doc_blocks\", id, \"order_key\", fields.order_key);\n if (fields.blankAfter) emit(db, \"doc_blocks\", id, \"blank_after\", fields.blankAfter);\n emit(db, \"doc_blocks\", id, \"text\", fields.text);\n}\n\nfunction insertBlocks(\n db: Database,\n docId: string,\n blocks: readonly DocBlock[],\n after: string | null,\n before: string | null,\n): void {\n const keys = keysBetween(after, before, blocks.length);\n blocks.forEach((b, i) =>\n emitBlock(db, docId, { text: b.text, order_key: keys[i]!, blankAfter: b.blankAfter }),\n );\n}\n\n/** Lazily migrate a legacy body-only document into blocks (idempotent). */\nfunction ensureBlocks(db: Database, docId: string): void {\n if (db.query(\"SELECT 1 AS x FROM doc_blocks WHERE doc_id = ? LIMIT 1\").get(docId))\n return;\n const row = db.query(\"SELECT body FROM documents WHERE id = ?\").get(docId) as\n | { body: string | null }\n | null;\n const blocks = parseDocBlocks(row?.body ?? \"\");\n if (blocks.length) insertBlocks(db, docId, blocks, null, null);\n}\n\n/** Diff a full new body against current blocks; keep unchanged, delete/insert the rest. */\nfunction reconcileBody(db: Database, docId: string, body: string): void {\n const old = liveBlocks(db, docId);\n const next = parseDocBlocks(body);\n const plan = reconcile(\n old.map((b) => b.text),\n next.map((b) => b.text),\n );\n\n for (const oi of plan.deleted) emit(db, \"doc_blocks\", old[oi]!.id, \"__deleted\", 1);\n\n const { items } = plan;\n let i = 0;\n while (i < items.length) {\n const it = items[i]!;\n if (\"keep\" in it) {\n // Text unchanged: only the surrounding blank-line count may have shifted.\n const oldB = old[it.keep]!;\n const want = next[i]!.blankAfter;\n if ((oldB.blank_after ?? 0) !== want) emit(db, \"doc_blocks\", oldB.id, \"blank_after\", want);\n i++;\n continue;\n }\n let j = i;\n while (j < items.length && \"insert\" in items[j]!) j++;\n const left = i > 0 ? old[(items[i - 1] as { keep: number }).keep]!.order_key : null;\n const right = j < items.length ? old[(items[j] as { keep: number }).keep]!.order_key : null;\n insertBlocks(db, docId, next.slice(i, j), left, right);\n i = j;\n }\n}\n\n/** Max HLC over a document's own register and all its blocks — a read/edit token. */\nexport function documentVersion(db: Database, id: string): string {\n const row = db\n .query(\n `SELECT MAX(hlc) AS h FROM crdt_changes\n WHERE (dataset = 'documents' AND row_id = ?)\n OR (dataset = 'doc_blocks' AND row_id IN (SELECT id FROM doc_blocks WHERE doc_id = ?))`,\n )\n .get(id, id) as { h: string | null };\n return row.h ?? \"\";\n}\n\n// ---- public API ------------------------------------------------------------\n\nexport function createDocument(\n db: Database,\n opts: { title: string; body?: string; database_id?: string; parent_id?: string },\n): DocumentRow {\n const id = newId(\"doc\", opts.title);\n const first = emit(db, \"documents\", id, \"title\", opts.title);\n emit(db, \"documents\", id, \"created_hlc\", first.hlc);\n if (opts.database_id !== undefined) emit(db, \"documents\", id, \"database_id\", opts.database_id);\n if (opts.parent_id !== undefined) emit(db, \"documents\", id, \"parent_id\", opts.parent_id);\n placeInSiblings(db, id, opts.parent_id ?? null); // append to the end of its sibling group\n if (opts.body !== undefined) {\n const blocks = parseDocBlocks(opts.body);\n if (blocks.length) insertBlocks(db, id, blocks, null, null);\n }\n return getDocument(db, id)!;\n}\n\nexport function getDocument(db: Database, id: string): DocumentRow | null {\n return db\n .query(\n \"SELECT id, title, body, database_id, parent_id, created_hlc, order_key FROM documents WHERE id = ? AND __deleted = 0\",\n )\n .get(id) as DocumentRow | null;\n}\n\n/** Display order among siblings: explicit order_key first, NULLs fall back to\n * creation time so an un-backfilled tree still renders in its historical order. */\nconst ORDER_BY = \"ORDER BY order_key IS NULL, order_key, created_hlc, id\";\n\nexport function listDocuments(\n db: Database,\n opts: { database_id?: string; parent_id?: string } = {},\n): DocumentSummary[] {\n const cols =\n \"SELECT id, title, database_id, parent_id, created_hlc, order_key FROM documents WHERE __deleted = 0\";\n if (opts.parent_id !== undefined)\n return db\n .query(`${cols} AND parent_id = ? ${ORDER_BY}`)\n .all(opts.parent_id) as DocumentSummary[];\n if (opts.database_id)\n return db\n .query(`${cols} AND database_id = ? ${ORDER_BY}`)\n .all(opts.database_id) as DocumentSummary[];\n return db.query(`${cols} ${ORDER_BY}`).all() as DocumentSummary[];\n}\n\n// ---- sibling ordering (fractional index scoped per parent_id) --------------\n\ninterface SiblingRow {\n id: string;\n order_key: string | null;\n}\n\n/** WHERE fragment + args selecting siblings under `parentId` (null = top level). */\nfunction siblingWhere(parentId: string | null): { clause: string; args: string[] } {\n return parentId === null\n ? { clause: \"parent_id IS NULL\", args: [] }\n : { clause: \"parent_id = ?\", args: [parentId] };\n}\n\nfunction canEmitOrderKeys(db: Database): boolean {\n return tableExists(db, \"meta\") && tableExists(db, \"crdt_changes\");\n}\n\nfunction tableExists(db: Database, table: string): boolean {\n return (\n db\n .query(\"SELECT 1 AS ok FROM sqlite_master WHERE type = 'table' AND name = ?\")\n .get(table) != null\n );\n}\n\n/** Greatest order_key among siblings (optionally ignoring one row being placed). */\nfunction lastSiblingOrderKey(\n db: Database,\n parentId: string | null,\n excludeId?: string,\n): string | null {\n const w = siblingWhere(parentId);\n const exclude = excludeId ? \" AND id <> ?\" : \"\";\n const row = db\n .query(\n `SELECT order_key FROM documents WHERE ${w.clause}${exclude}\n AND __deleted = 0 AND order_key IS NOT NULL\n ORDER BY order_key DESC, id DESC LIMIT 1`,\n )\n .get(...w.args, ...(excludeId ? [excludeId] : [])) as { order_key: string | null } | null;\n return row?.order_key ?? null;\n}\n\nfunction orderedSiblings(db: Database, parentId: string | null): SiblingRow[] {\n const w = siblingWhere(parentId);\n return db\n .query(`SELECT id, order_key FROM documents WHERE ${w.clause} AND __deleted = 0 ${ORDER_BY}`)\n .all(...w.args) as SiblingRow[];\n}\n\n/** Re-space every sibling's key evenly — escape hatch when fractional keys collide. */\nfunction rebalanceSiblings(db: Database, parentId: string | null): void {\n const rows = orderedSiblings(db, parentId);\n const keys = keysBetween(null, null, rows.length);\n rows.forEach((row, i) => {\n if (row.order_key !== keys[i]) emit(db, \"documents\", row.id, \"order_key\", keys[i]!);\n });\n}\n\n/** Assign keys to siblings that still lack one, appending in creation order. */\nfunction backfillSiblings(db: Database, parentId: string | null): void {\n const emitChange = canEmitOrderKeys(db);\n const w = siblingWhere(parentId);\n const missing = db\n .query(\n `SELECT id FROM documents WHERE ${w.clause} AND __deleted = 0 AND order_key IS NULL\n ORDER BY created_hlc, id`,\n )\n .all(...w.args) as { id: string }[];\n if (!missing.length) return;\n const keys = keysBetween(lastSiblingOrderKey(db, parentId), null, missing.length);\n missing.forEach((row, i) => {\n if (emitChange) emit(db, \"documents\", row.id, \"order_key\", keys[i]!);\n else db.query(\"UPDATE documents SET order_key = ? WHERE id = ?\").run(keys[i]!, row.id);\n });\n}\n\n/** Backfill order_key for every parent group that has un-keyed live documents. */\nexport function backfillDocumentOrderKeys(db: Database): void {\n const parents = db\n .query(\"SELECT DISTINCT parent_id FROM documents WHERE __deleted = 0 AND order_key IS NULL\")\n .all() as { parent_id: string | null }[];\n for (const p of parents) backfillSiblings(db, p.parent_id);\n}\n\n/**\n * Place `id` under `parentId` at the given position — the single point where a\n * document's parent_id and order_key are kept consistent (reparent always\n * implies a new sibling scope). No `anchor` appends to the end of the group.\n */\nfunction placeInSiblings(\n db: Database,\n id: string,\n parentId: string | null,\n anchor?: { targetId: string; where: \"before\" | \"after\" },\n): void {\n // Walk the prospective ancestor chain; reaching `id` would form a cycle and\n // make the tree unrenderable. Guarded here so every caller is protected.\n let cur: string | null | undefined = parentId;\n while (cur) {\n if (cur === id) throw new Error(`cannot set parent_id: would create a cycle (${id})`);\n cur = getDocument(db, cur)?.parent_id ?? null;\n }\n\n const current = getDocument(db, id);\n if (current && (current.parent_id ?? null) !== parentId)\n emit(db, \"documents\", id, \"parent_id\", parentId);\n\n let key: string;\n if (!anchor) {\n key = keyBetween(lastSiblingOrderKey(db, parentId, id), null);\n } else {\n backfillSiblings(db, parentId); // ensure neighbors carry comparable keys\n const neighbors = (): [string | null, string | null] => {\n const rows = orderedSiblings(db, parentId).filter((r) => r.id !== id);\n const to = rows.findIndex((r) => r.id === anchor.targetId);\n if (to < 0) throw new Error(`no such target document: ${anchor.targetId}`);\n return anchor.where === \"before\"\n ? [rows[to - 1]?.order_key ?? null, rows[to]!.order_key]\n : [rows[to]!.order_key, rows[to + 1]?.order_key ?? null];\n };\n let [left, right] = neighbors();\n if (left !== null && right !== null && left >= right) {\n rebalanceSiblings(db, parentId);\n [left, right] = neighbors();\n }\n key = keyBetween(left, right);\n }\n emit(db, \"documents\", id, \"order_key\", key);\n}\n\n/**\n * Move a document next to / into another, atomically updating both its parent\n * and its order_key. `into` nests it as the last child of `targetId`;\n * `before`/`after` re-orders (and reparents if needed) among the target's siblings.\n */\nexport function moveDocument(\n db: Database,\n id: string,\n targetId: string,\n where: \"before\" | \"after\" | \"into\",\n): DocumentRow {\n const src = getDocument(db, id);\n if (!src) throw new Error(`no such document: ${id}`);\n if (id === targetId) return src;\n const target = getDocument(db, targetId);\n if (!target) throw new Error(`no such target document: ${targetId}`);\n\n if (where === \"into\") placeInSiblings(db, id, targetId);\n else placeInSiblings(db, id, target.parent_id, { targetId, where });\n return getDocument(db, id)!;\n}\n\nexport function updateDocument(\n db: Database,\n id: string,\n fields: { title?: string; body?: string; database_id?: string; parent_id?: string | null },\n): DocumentRow {\n if (!getDocument(db, id)) throw new Error(`no such document: ${id}`);\n if (fields.title !== undefined) emit(db, \"documents\", id, \"title\", fields.title);\n if (fields.database_id !== undefined) emit(db, \"documents\", id, \"database_id\", fields.database_id);\n if (fields.parent_id !== undefined) {\n // Reparenting moves the document into a new sibling scope, so its order_key\n // must be reassigned too — placeInSiblings keeps both consistent (and guards\n // against cycles) for every caller: CLI, WebUI, sync. Only act on a real\n // change so a no-op PATCH doesn't silently jump the document to the end.\n const next = fields.parent_id ?? null;\n if ((getDocument(db, id)!.parent_id ?? null) !== next) placeInSiblings(db, id, next);\n }\n if (fields.body !== undefined) {\n ensureBlocks(db, id);\n reconcileBody(db, id, fields.body);\n }\n return getDocument(db, id)!;\n}\n\nexport interface EditDocResult {\n id: string;\n changed: boolean;\n replaced: number;\n version: string;\n}\n\n/**\n * Anchored find/replace, like the Edit tool. `old` must occur exactly once\n * (or pass `replaceAll`); supplying it is the read-before-edit guarantee — you\n * cannot author it without current content, and drift surfaces as \"not found\".\n * `ifMatch` is an optional staleness backstop (a version from documentVersion).\n */\nexport function editDocument(\n db: Database,\n id: string,\n opts: { old: string; new: string; replaceAll?: boolean; ifMatch?: string },\n): EditDocResult {\n if (!getDocument(db, id)) throw new Error(`no such document: ${id}`);\n if (opts.ifMatch !== undefined && documentVersion(db, id) !== opts.ifMatch)\n throw new Error(`stale: document changed since ${opts.ifMatch}; re-read first`);\n if (opts.old === \"\") throw new Error(\"--old must not be empty\");\n\n ensureBlocks(db, id);\n const blocks = liveBlocks(db, id);\n const body = serializeDocBlocks(blocks.map((b) => ({ text: b.text, blankAfter: b.blank_after })));\n const count = countOccurrences(body, opts.old);\n if (count === 0) throw new Error(`anchor not found: no match for --old`);\n if (count > 1 && !opts.replaceAll)\n throw new Error(\n `${count} matches for --old; add surrounding context or use --replace-all`,\n );\n\n // Fast path: edit stays within single blocks and introduces no block break.\n if (!opts.old.includes(\"\\n\\n\")) {\n const affected = blocks.filter((b) => b.text.includes(opts.old));\n const next = affected.map((b) =>\n opts.replaceAll ? b.text.replaceAll(opts.old, opts.new) : b.text.replace(opts.old, opts.new),\n );\n if (next.every((t) => t.length > 0 && !t.includes(\"\\n\\n\"))) {\n const targets = opts.replaceAll ? affected : affected.slice(0, 1);\n targets.forEach((b, i) => emit(db, \"doc_blocks\", b.id, \"text\", next[i]!));\n return { id, changed: true, replaced: opts.replaceAll ? count : 1, version: documentVersion(db, id) };\n }\n }\n\n // General path: rewrite the body and reconcile (handles spans/splits/merges).\n const newBody = opts.replaceAll\n ? body.replaceAll(opts.old, opts.new)\n : body.replace(opts.old, opts.new);\n reconcileBody(db, id, newBody);\n return { id, changed: newBody !== body, replaced: opts.replaceAll ? count : 1, version: documentVersion(db, id) };\n}\n\nexport function appendDocument(db: Database, id: string, body: string): EditDocResult {\n if (!getDocument(db, id)) throw new Error(`no such document: ${id}`);\n ensureBlocks(db, id);\n const next = parseDocBlocks(body);\n if (next.length) {\n const blocks = liveBlocks(db, id);\n const last = blocks.length ? blocks[blocks.length - 1]!.order_key : null;\n insertBlocks(db, id, next, last, null);\n }\n return { id, changed: next.length > 0, replaced: next.length, version: documentVersion(db, id) };\n}\n\nexport function prependDocument(db: Database, id: string, body: string): EditDocResult {\n if (!getDocument(db, id)) throw new Error(`no such document: ${id}`);\n ensureBlocks(db, id);\n const next = parseDocBlocks(body);\n if (next.length) {\n const blocks = liveBlocks(db, id);\n const first = blocks.length ? blocks[0]!.order_key : null;\n insertBlocks(db, id, next, null, first);\n }\n return { id, changed: next.length > 0, replaced: next.length, version: documentVersion(db, id) };\n}\n\nexport function deleteDocument(db: Database, id: string): boolean {\n if (!getDocument(db, id)) return false;\n emit(db, \"documents\", id, \"__deleted\", 1);\n // Cascade off the tombstone, mirroring repairHub: the doc's blocks are derived\n // content -> tombstone them; live child documents survive as roots -> unparent.\n for (const b of liveChildIds(db, \"doc_blocks\", \"doc_id\", id))\n emit(db, \"doc_blocks\", b, \"__deleted\", 1);\n for (const c of liveChildIds(db, \"documents\", \"parent_id\", id))\n emit(db, \"documents\", c, \"parent_id\", null);\n return true;\n}\n\n/** Ids of live rows in `table` whose `col` references `parentId`. */\nfunction liveChildIds(db: Database, table: string, col: string, parentId: string): string[] {\n return (\n db\n .query(`SELECT id FROM ${table} WHERE ${col} = ? AND __deleted = 0`)\n .all(parentId) as { id: string }[]\n ).map((r) => r.id);\n}\n\nfunction countOccurrences(haystack: string, needle: string): number {\n if (needle === \"\") return 0;\n let n = 0;\n let i = haystack.indexOf(needle);\n while (i !== -1) {\n n++;\n i = haystack.indexOf(needle, i + needle.length);\n }\n return n;\n}\n",
|
|
25
|
-
"
|
|
26
|
-
"import type { Database } from \"bun:sqlite\";\nimport { ftsAvailable } from \"./db.ts\";\nimport { changesAfterSeq } from \"./crdt.ts\";\n\nexport interface SearchHit {\n type: \"document\" | \"record\";\n id: string;\n database_id: string | null;\n title?: string;\n snippet: string;\n}\n\nconst TEXT_TYPES = \"('text','url','select','multi_select','date')\";\n\n// Bump when the indexing logic changes (TEXT_TYPES, indexed columns, FTS schema)\n// so existing hubs discard `search_seq` and rebuild from scratch on next search.\nconst SEARCH_INDEX_VERSION = \"1\";\n\nfunction readMeta(db: Database, key: string): string | null {\n return (\n (db.query(\"SELECT value FROM meta WHERE key = ?\").get(key) as { value: string } | null)\n ?.value ?? null\n );\n}\n\nfunction writeMeta(db: Database, key: string, value: string): void {\n db.query(\n \"INSERT INTO meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value\",\n ).run(key, value);\n}\n\n// --- per-object (re)indexing ------------------------------------------------\n// FTS rows are derived from the materialized tables, so (re)indexing one object\n// is \"delete its rows, then re-derive from the live row(s)\". A tombstoned or\n// body-less object simply re-derives to nothing.\n\ninterface DocRow {\n id: string;\n title: string | null;\n body: string | null;\n database_id: string | null;\n}\n\nfunction reindexDocument(db: Database, id: string): void {\n db.query(\"DELETE FROM search_fts WHERE kind = 'document' AND id = ?\").run(id);\n const d = db\n .query(\"SELECT id, title, body, database_id FROM documents WHERE id = ? AND __deleted = 0\")\n .get(id) as DocRow | null;\n if (d)\n db.query(\n \"INSERT INTO search_fts (kind, id, database_id, title, body) VALUES ('document', ?, ?, ?, ?)\",\n ).run(d.id, d.database_id, d.title ?? \"\", d.body ?? \"\");\n}\n\ninterface RecBodyRow {\n id: string;\n database_id: string | null;\n body: string | null;\n}\n\n// A record's body is the concatenation of its TEXT-typed cell values. `where`\n// scopes which records to (re)derive; it is a fixed literal, never user input.\nfunction recordBodyRows(db: Database, where: string, ...args: (string | number)[]): RecBodyRow[] {\n return db\n .query(\n `SELECT r.id AS id, r.database_id AS database_id, group_concat(je.value, ' ') AS body\n FROM records r, json_each(r.data) je\n JOIN properties p ON p.id = je.key AND p.__deleted = 0\n WHERE ${where} AND r.__deleted = 0 AND p.type IN ${TEXT_TYPES}\n GROUP BY r.id`,\n )\n .all(...args) as RecBodyRow[];\n}\n\nfunction insertRecordRow(db: Database, r: RecBodyRow): void {\n db.query(\n \"INSERT INTO search_fts (kind, id, database_id, title, body) VALUES ('record', ?, ?, ?, ?)\",\n ).run(r.id, r.database_id, r.id, r.body ?? \"\");\n}\n\nfunction reindexRecord(db: Database, id: string): void {\n db.query(\"DELETE FROM search_fts WHERE kind = 'record' AND id = ?\").run(id);\n const r = recordBodyRows(db, \"r.id = ?\", id)[0];\n if (r) insertRecordRow(db, r);\n}\n\n// Used for property-level changes (type/deletion/scope) that affect a whole\n// database's records at once.\nfunction reindexDatabaseRecords(db: Database, databaseId: string): void {\n db.query(\"DELETE FROM search_fts WHERE kind = 'record' AND database_id = ?\").run(databaseId);\n for (const r of recordBodyRows(db, \"r.database_id = ?\", databaseId)) insertRecordRow(db, r);\n}\n\n// --- index maintenance ------------------------------------------------------\n\n// Full rebuild: the fallback path (first build, version bump, snapshot reset,\n// manual repair). Clears the index and re-derives every object, then pins the\n// cursor to the current oplog head so incremental updates pick up from there.\nfunction fullRebuild(db: Database): void {\n db.query(\"DELETE FROM search_fts\").run();\n for (const d of db\n .query(\"SELECT id, title, body, database_id FROM documents WHERE __deleted = 0\")\n .all() as DocRow[])\n db.query(\n \"INSERT INTO search_fts (kind, id, database_id, title, body) VALUES ('document', ?, ?, ?, ?)\",\n ).run(d.id, d.database_id, d.title ?? \"\", d.body ?? \"\");\n for (const r of recordBodyRows(db, \"1 = 1\")) insertRecordRow(db, r);\n const max = (db.query(\"SELECT MAX(rowid) AS m FROM crdt_changes\").get() as { m: number | null }).m ?? 0;\n writeMeta(db, \"search_seq\", String(max));\n writeMeta(db, \"search_index_version\", SEARCH_INDEX_VERSION);\n}\n\n// Incremental: scan oplog changes since the cursor, derive the set of affected\n// objects, and re-derive only those. Insertion-order (rowid) means no change is\n// ever skipped, even when a remote write carries an older HLC than the local max.\nfunction incrementalUpdate(db: Database): void {\n const cursor = Number(readMeta(db, \"search_seq\") ?? \"0\");\n const { changes, cursor: next } = changesAfterSeq(db, cursor);\n if (changes.length === 0) return;\n\n const docIds = new Set<string>();\n const recordIds = new Set<string>();\n const dbIds = new Set<string>(); // databases whose records need a full re-derive\n\n for (const c of changes) {\n switch (c.dataset) {\n case \"documents\":\n docIds.add(c.row_id);\n break;\n case \"doc_blocks\": {\n const blk = db\n .query(\"SELECT doc_id FROM doc_blocks WHERE id = ?\")\n .get(c.row_id) as { doc_id: string | null } | null;\n if (blk?.doc_id) docIds.add(blk.doc_id);\n break;\n }\n case \"records\":\n recordIds.add(c.row_id);\n break;\n case \"properties\":\n // Only type/deletion/scope change which cells contribute to record bodies.\n if (c.col === \"type\" || c.col === \"__deleted\" || c.col === \"database_id\") {\n const p = db\n .query(\"SELECT database_id FROM properties WHERE id = ?\")\n .get(c.row_id) as { database_id: string | null } | null;\n if (p?.database_id) dbIds.add(p.database_id);\n }\n break;\n // databases / sites / site_files are not represented in the FTS index.\n }\n }\n\n for (const id of docIds) reindexDocument(db, id);\n for (const dbId of dbIds) reindexDatabaseRecords(db, dbId);\n for (const id of recordIds) {\n const r = db\n .query(\"SELECT database_id FROM records WHERE id = ?\")\n .get(id) as { database_id: string | null } | null;\n if (r?.database_id && dbIds.has(r.database_id)) continue; // already covered above\n reindexRecord(db, id);\n }\n writeMeta(db, \"search_seq\", String(next));\n}\n\n// Bring the FTS index up to date before searching. Returns false when FTS5 is\n// unavailable (caller falls back to LIKE). All work is one transaction so the\n// cursor never advances past the index state it describes.\nfunction ensureIndex(db: Database): boolean {\n if (!ftsAvailable(db)) return false;\n const version = readMeta(db, \"search_index_version\");\n const seq = readMeta(db, \"search_seq\");\n db.transaction(() => {\n if (version !== SEARCH_INDEX_VERSION || seq === null) fullRebuild(db);\n else incrementalUpdate(db);\n })();\n return true;\n}\n\n/** Force a full rebuild of the search index (maintenance / repair). */\nexport function rebuildSearchIndex(db: Database): boolean {\n if (!ftsAvailable(db)) return false;\n db.transaction(() => fullRebuild(db))();\n return true;\n}\n\nfunction ftsSearch(db: Database, query: string, limit: number): SearchHit[] {\n const match = query\n .split(/\\s+/)\n .filter(Boolean)\n .map((t) => `\"${t.replace(/\"/g, '\"\"')}\"`)\n .join(\" \");\n if (!match) return [];\n const rows = db\n .query(\n \"SELECT kind, id, database_id, title, snippet(search_fts, -1, '[', ']', '…', 10) AS snippet FROM search_fts WHERE search_fts MATCH ? ORDER BY rank LIMIT ?\",\n )\n .all(match, limit) as {\n kind: \"document\" | \"record\";\n id: string;\n database_id: string | null;\n title: string | null;\n snippet: string;\n }[];\n return rows.map((r) => ({\n type: r.kind,\n id: r.id,\n database_id: r.database_id,\n title: r.title || undefined,\n snippet: r.snippet,\n }));\n}\n\nfunction makeSnippet(text: string, q: string): string {\n const i = text.toLowerCase().indexOf(q.toLowerCase());\n if (i < 0) return text.slice(0, 80);\n const start = Math.max(0, i - 30);\n return `${start > 0 ? \"…\" : \"\"}${text.slice(start, i + q.length + 50)}…`;\n}\n\n// Substring match — robust for CJK and exact phrases where FTS tokenization misses.\nfunction likeSearch(db: Database, query: string, limit: number): SearchHit[] {\n const like = `%${query.replace(/[%_\\\\]/g, \"\\\\$&\")}%`;\n const out: SearchHit[] = [];\n const docs = db\n .query(\n \"SELECT id, title, body, database_id FROM documents WHERE __deleted = 0 AND (title LIKE ? ESCAPE '\\\\' OR body LIKE ? ESCAPE '\\\\') LIMIT ?\",\n )\n .all(like, like, limit) as {\n id: string;\n title: string | null;\n body: string | null;\n database_id: string | null;\n }[];\n for (const d of docs)\n out.push({\n type: \"document\",\n id: d.id,\n database_id: d.database_id,\n title: d.title ?? undefined,\n snippet: makeSnippet(d.body || d.title || \"\", query),\n });\n\n if (out.length < limit) {\n const recs = db\n .query(\n `SELECT r.id AS id, r.database_id AS database_id, group_concat(je.value, ' ') AS body\n FROM records r, json_each(r.data) je\n JOIN properties p ON p.id = je.key AND p.__deleted = 0\n WHERE r.__deleted = 0 AND p.type IN ${TEXT_TYPES}\n GROUP BY r.id HAVING body LIKE ? ESCAPE '\\\\' LIMIT ?`,\n )\n .all(like, limit - out.length) as {\n id: string;\n database_id: string | null;\n body: string | null;\n }[];\n for (const r of recs)\n out.push({\n type: \"record\",\n id: r.id,\n database_id: r.database_id,\n snippet: makeSnippet(r.body || \"\", query),\n });\n }\n return out;\n}\n\nexport function search(\n db: Database,\n query: string,\n opts: { limit?: number } = {},\n): SearchHit[] {\n const limit = opts.limit ?? 20;\n if (ensureIndex(db)) {\n try {\n const hits = ftsSearch(db, query, limit);\n if (hits.length) return hits;\n } catch {\n // fall through to LIKE\n }\n }\n return likeSearch(db, query, limit);\n}\n",
|
|
25
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { newId } from \"./ids.ts\";\nimport { emit, grouped } from \"./crdt.ts\";\nimport { parseDocBlocks, serializeDocBlocks, reconcile, type DocBlock } from \"./blocks.ts\";\nimport { keyBetween, keysBetween } from \"./fracdex.ts\";\nimport { MhError } from \"./errors.ts\";\nimport type { ColumnsOf } from \"./sqlcols.ts\";\n\nexport interface DocumentRow {\n id: string;\n title: string;\n body: string | null;\n database_id: string | null;\n parent_id: string | null;\n created_hlc: string;\n order_key: string | null;\n}\n\nexport type DocumentSummary = Omit<DocumentRow, \"body\">;\n\nexport const DOCUMENT_COLS = [\n \"id\", \"title\", \"body\", \"database_id\", \"parent_id\", \"created_hlc\", \"order_key\",\n] as const;\nconst _documentCols: ColumnsOf<DocumentRow, typeof DOCUMENT_COLS> = DOCUMENT_COLS;\nconst DOCUMENT_SELECT = DOCUMENT_COLS.join(\", \");\n\nconst DOC_SUMMARY_COLS = [\n \"id\", \"title\", \"database_id\", \"parent_id\", \"created_hlc\", \"order_key\",\n] as const;\nconst _docSummaryCols: ColumnsOf<DocumentSummary, typeof DOC_SUMMARY_COLS> = DOC_SUMMARY_COLS;\nconst DOC_SUMMARY_SELECT = DOC_SUMMARY_COLS.join(\", \");\n\ninterface BlockRow {\n id: string;\n text: string;\n order_key: string;\n blank_after: number;\n}\n\n// ---- block helpers ---------------------------------------------------------\n\nfunction liveBlocks(db: DbDriver, docId: string): BlockRow[] {\n return db\n .query(\n \"SELECT id, text, order_key, blank_after FROM doc_blocks WHERE doc_id = ? AND __deleted = 0 ORDER BY order_key, id\",\n )\n .all(docId) as BlockRow[];\n}\n\nfunction makeBlockId(text: string): string {\n return newId(\"blk\", text.split(\"\\n\", 1)[0] ?? \"\");\n}\n\n/** Emit a new block's fields; text last so the final body recompute is complete.\n * blank_after is only emitted when non-zero (0 is the column default). */\nfunction emitBlock(\n db: DbDriver,\n docId: string,\n fields: { text: string; order_key: string; blankAfter: number },\n): void {\n const id = makeBlockId(fields.text);\n emit(db, \"doc_blocks\", id, \"doc_id\", docId);\n emit(db, \"doc_blocks\", id, \"order_key\", fields.order_key);\n if (fields.blankAfter) emit(db, \"doc_blocks\", id, \"blank_after\", fields.blankAfter);\n emit(db, \"doc_blocks\", id, \"text\", fields.text);\n}\n\nfunction insertBlocks(\n db: DbDriver,\n docId: string,\n blocks: readonly DocBlock[],\n after: string | null,\n before: string | null,\n): void {\n const keys = keysBetween(after, before, blocks.length);\n blocks.forEach((b, i) =>\n emitBlock(db, docId, { text: b.text, order_key: keys[i]!, blankAfter: b.blankAfter }),\n );\n}\n\n/** Lazily migrate a legacy body-only document into blocks (idempotent). */\nfunction ensureBlocks(db: DbDriver, docId: string): void {\n if (db.query(\"SELECT 1 AS x FROM doc_blocks WHERE doc_id = ? LIMIT 1\").get(docId))\n return;\n const row = db.query(\"SELECT body FROM documents WHERE id = ?\").get(docId) as\n | { body: string | null }\n | null;\n const blocks = parseDocBlocks(row?.body ?? \"\");\n if (blocks.length) insertBlocks(db, docId, blocks, null, null);\n}\n\n/** Diff a full new body against current blocks; keep unchanged, delete/insert the rest. */\nfunction reconcileBody(db: DbDriver, docId: string, body: string): void {\n const old = liveBlocks(db, docId);\n const next = parseDocBlocks(body);\n const plan = reconcile(\n old.map((b) => b.text),\n next.map((b) => b.text),\n );\n\n for (const oi of plan.deleted) emit(db, \"doc_blocks\", old[oi]!.id, \"__deleted\", 1);\n\n const { items } = plan;\n let i = 0;\n while (i < items.length) {\n const it = items[i]!;\n if (\"keep\" in it) {\n // Text unchanged: only the surrounding blank-line count may have shifted.\n const oldB = old[it.keep]!;\n const want = next[i]!.blankAfter;\n if ((oldB.blank_after ?? 0) !== want) emit(db, \"doc_blocks\", oldB.id, \"blank_after\", want);\n i++;\n continue;\n }\n let j = i;\n while (j < items.length && \"insert\" in items[j]!) j++;\n const left = i > 0 ? old[(items[i - 1] as { keep: number }).keep]!.order_key : null;\n const right = j < items.length ? old[(items[j] as { keep: number }).keep]!.order_key : null;\n insertBlocks(db, docId, next.slice(i, j), left, right);\n i = j;\n }\n}\n\n/** Max HLC over a document's own register and all its blocks — a read/edit token. */\nexport function documentVersion(db: DbDriver, id: string): string {\n const row = db\n .query(\n `SELECT MAX(hlc) AS h FROM crdt_changes\n WHERE (dataset = 'documents' AND row_id = ?)\n OR (dataset = 'doc_blocks' AND row_id IN (SELECT id FROM doc_blocks WHERE doc_id = ?))`,\n )\n .get(id, id) as { h: string | null };\n return row.h ?? \"\";\n}\n\n// ---- public API ------------------------------------------------------------\n\nexport const createDocument = grouped(function createDocument(\n db: DbDriver,\n opts: { title: string; body?: string; database_id?: string; parent_id?: string },\n): DocumentRow {\n const id = newId(\"doc\", opts.title);\n const first = emit(db, \"documents\", id, \"title\", opts.title);\n emit(db, \"documents\", id, \"created_hlc\", first.hlc);\n if (opts.database_id !== undefined) emit(db, \"documents\", id, \"database_id\", opts.database_id);\n if (opts.parent_id !== undefined) emit(db, \"documents\", id, \"parent_id\", opts.parent_id);\n placeInSiblings(db, id, opts.parent_id ?? null); // append to the end of its sibling group\n if (opts.body !== undefined) {\n const blocks = parseDocBlocks(opts.body);\n if (blocks.length) insertBlocks(db, id, blocks, null, null);\n }\n return getDocument(db, id)!;\n});\n\nexport function getDocument(db: DbDriver, id: string): DocumentRow | null {\n return db\n .query(`SELECT ${DOCUMENT_SELECT} FROM documents WHERE id = ? AND __deleted = 0`)\n .get(id) as DocumentRow | null;\n}\n\n/** Display order among siblings: explicit order_key first, NULLs fall back to\n * creation time so an un-backfilled tree still renders in its historical order. */\nconst ORDER_BY = \"ORDER BY order_key IS NULL, order_key, created_hlc, id\";\n\nexport function listDocuments(\n db: DbDriver,\n opts: { database_id?: string; parent_id?: string } = {},\n): DocumentSummary[] {\n const cols = `SELECT ${DOC_SUMMARY_SELECT} FROM documents WHERE __deleted = 0`;\n if (opts.parent_id !== undefined)\n return db\n .query(`${cols} AND parent_id = ? ${ORDER_BY}`)\n .all(opts.parent_id) as DocumentSummary[];\n if (opts.database_id)\n return db\n .query(`${cols} AND database_id = ? ${ORDER_BY}`)\n .all(opts.database_id) as DocumentSummary[];\n return db.query(`${cols} ${ORDER_BY}`).all() as DocumentSummary[];\n}\n\n// ---- sibling ordering (fractional index scoped per parent_id) --------------\n\ninterface SiblingRow {\n id: string;\n order_key: string | null;\n}\n\n/** WHERE fragment + args selecting siblings under `parentId` (null = top level). */\nfunction siblingWhere(parentId: string | null): { clause: string; args: string[] } {\n return parentId === null\n ? { clause: \"parent_id IS NULL\", args: [] }\n : { clause: \"parent_id = ?\", args: [parentId] };\n}\n\nfunction canEmitOrderKeys(db: DbDriver): boolean {\n return tableExists(db, \"meta\") && tableExists(db, \"crdt_changes\");\n}\n\nfunction tableExists(db: DbDriver, table: string): boolean {\n return (\n db\n .query(\"SELECT 1 AS ok FROM sqlite_master WHERE type = 'table' AND name = ?\")\n .get(table) != null\n );\n}\n\n/** Greatest order_key among siblings (optionally ignoring one row being placed). */\nfunction lastSiblingOrderKey(\n db: DbDriver,\n parentId: string | null,\n excludeId?: string,\n): string | null {\n const w = siblingWhere(parentId);\n const exclude = excludeId ? \" AND id <> ?\" : \"\";\n const row = db\n .query(\n `SELECT order_key FROM documents WHERE ${w.clause}${exclude}\n AND __deleted = 0 AND order_key IS NOT NULL\n ORDER BY order_key DESC, id DESC LIMIT 1`,\n )\n .get(...w.args, ...(excludeId ? [excludeId] : [])) as { order_key: string | null } | null;\n return row?.order_key ?? null;\n}\n\nfunction orderedSiblings(db: DbDriver, parentId: string | null): SiblingRow[] {\n const w = siblingWhere(parentId);\n return db\n .query(`SELECT id, order_key FROM documents WHERE ${w.clause} AND __deleted = 0 ${ORDER_BY}`)\n .all(...w.args) as SiblingRow[];\n}\n\n/** Re-space every sibling's key evenly — escape hatch when fractional keys collide. */\nfunction rebalanceSiblings(db: DbDriver, parentId: string | null): void {\n const rows = orderedSiblings(db, parentId);\n const keys = keysBetween(null, null, rows.length);\n rows.forEach((row, i) => {\n if (row.order_key !== keys[i]) emit(db, \"documents\", row.id, \"order_key\", keys[i]!);\n });\n}\n\n/** Assign keys to siblings that still lack one, appending in creation order. */\nfunction backfillSiblings(db: DbDriver, parentId: string | null): void {\n const emitChange = canEmitOrderKeys(db);\n const w = siblingWhere(parentId);\n const missing = db\n .query(\n `SELECT id FROM documents WHERE ${w.clause} AND __deleted = 0 AND order_key IS NULL\n ORDER BY created_hlc, id`,\n )\n .all(...w.args) as { id: string }[];\n if (!missing.length) return;\n const keys = keysBetween(lastSiblingOrderKey(db, parentId), null, missing.length);\n missing.forEach((row, i) => {\n if (emitChange) emit(db, \"documents\", row.id, \"order_key\", keys[i]!);\n else db.query(\"UPDATE documents SET order_key = ? WHERE id = ?\").run(keys[i]!, row.id);\n });\n}\n\n/** Backfill order_key for every parent group that has un-keyed live documents. */\nexport const backfillDocumentOrderKeys = grouped(function backfillDocumentOrderKeys(\n db: DbDriver,\n): void {\n const parents = db\n .query(\"SELECT DISTINCT parent_id FROM documents WHERE __deleted = 0 AND order_key IS NULL\")\n .all() as { parent_id: string | null }[];\n for (const p of parents) backfillSiblings(db, p.parent_id);\n});\n\n/**\n * Place `id` under `parentId` at the given position — the single point where a\n * document's parent_id and order_key are kept consistent (reparent always\n * implies a new sibling scope). No `anchor` appends to the end of the group.\n */\nfunction placeInSiblings(\n db: DbDriver,\n id: string,\n parentId: string | null,\n anchor?: { targetId: string; where: \"before\" | \"after\" },\n): void {\n // Walk the prospective ancestor chain; reaching `id` would form a cycle and\n // make the tree unrenderable. Guarded here so every caller is protected.\n let cur: string | null | undefined = parentId;\n while (cur) {\n if (cur === id) throw new MhError(\"invalid_input\", `cannot set parent_id: would create a cycle (${id})`);\n cur = getDocument(db, cur)?.parent_id ?? null;\n }\n\n const current = getDocument(db, id);\n if (current && (current.parent_id ?? null) !== parentId)\n emit(db, \"documents\", id, \"parent_id\", parentId);\n\n let key: string;\n if (!anchor) {\n key = keyBetween(lastSiblingOrderKey(db, parentId, id), null);\n } else {\n backfillSiblings(db, parentId); // ensure neighbors carry comparable keys\n const neighbors = (): [string | null, string | null] => {\n const rows = orderedSiblings(db, parentId).filter((r) => r.id !== id);\n const to = rows.findIndex((r) => r.id === anchor.targetId);\n if (to < 0) throw new MhError(\"not_found\", `no such target document: ${anchor.targetId}`);\n return anchor.where === \"before\"\n ? [rows[to - 1]?.order_key ?? null, rows[to]!.order_key]\n : [rows[to]!.order_key, rows[to + 1]?.order_key ?? null];\n };\n let [left, right] = neighbors();\n if (left !== null && right !== null && left >= right) {\n rebalanceSiblings(db, parentId);\n [left, right] = neighbors();\n }\n key = keyBetween(left, right);\n }\n emit(db, \"documents\", id, \"order_key\", key);\n}\n\n/**\n * Move a document next to / into another, atomically updating both its parent\n * and its order_key. `into` nests it as the last child of `targetId`;\n * `before`/`after` re-orders (and reparents if needed) among the target's siblings.\n */\nexport const moveDocument = grouped(function moveDocument(\n db: DbDriver,\n id: string,\n targetId: string,\n where: \"before\" | \"after\" | \"into\",\n): DocumentRow {\n const src = getDocument(db, id);\n if (!src) throw new MhError(\"not_found\", `no such document: ${id}`);\n if (id === targetId) return src;\n const target = getDocument(db, targetId);\n if (!target) throw new MhError(\"not_found\", `no such target document: ${targetId}`);\n\n if (where === \"into\") placeInSiblings(db, id, targetId);\n else placeInSiblings(db, id, target.parent_id, { targetId, where });\n return getDocument(db, id)!;\n});\n\n/**\n * Copy a document — title, every block (verbatim, with fresh block ids so the\n * copy edits independently) and its `database_id`/`parent_id`. The copy lands\n * right after its source in the same sibling scope. Blocks are cloned at the\n * block level (not via a markdown round-trip) so empty list items / blank-line\n * runs survive losslessly. `title`/`parentId` override the defaults; the locale\n * \"copy\" suffix is the caller's job. `created_hlc` is the copy's own birth time.\n */\nexport const duplicateDocument = grouped(function duplicateDocument(\n db: DbDriver,\n id: string,\n opts: { title?: string; parentId?: string | null } = {},\n): DocumentRow {\n const src = getDocument(db, id);\n if (!src) throw new MhError(\"not_found\", `no such document: ${id}`);\n ensureBlocks(db, id);\n const blocks = liveBlocks(db, id);\n const parentId = opts.parentId !== undefined ? opts.parentId : src.parent_id;\n const dup = createDocument(db, {\n title: opts.title ?? src.title,\n database_id: src.database_id ?? undefined,\n parent_id: parentId ?? undefined,\n });\n if (blocks.length)\n insertBlocks(\n db,\n dup.id,\n blocks.map((b) => ({ text: b.text, blankAfter: b.blank_after })),\n null,\n null,\n );\n // Sit the copy right after its source when they share a sibling scope.\n if (parentId === src.parent_id) moveDocument(db, dup.id, src.id, \"after\");\n return getDocument(db, dup.id)!;\n});\n\nexport const updateDocument = grouped(function updateDocument(\n db: DbDriver,\n id: string,\n fields: { title?: string; body?: string; database_id?: string; parent_id?: string | null },\n opts: { ifMatch?: string } = {},\n): DocumentRow {\n if (!getDocument(db, id)) throw new MhError(\"not_found\", `no such document: ${id}`);\n // Same staleness backstop as editDocument: a version from documentVersion()\n // rejects the write if the doc changed since the caller read it.\n if (opts.ifMatch !== undefined && documentVersion(db, id) !== opts.ifMatch)\n throw new MhError(\"stale\", `stale: document changed since ${opts.ifMatch}; re-read first`);\n if (fields.title !== undefined) emit(db, \"documents\", id, \"title\", fields.title);\n if (fields.database_id !== undefined) emit(db, \"documents\", id, \"database_id\", fields.database_id);\n if (fields.parent_id !== undefined) {\n // Reparenting moves the document into a new sibling scope, so its order_key\n // must be reassigned too — placeInSiblings keeps both consistent (and guards\n // against cycles) for every caller: CLI, WebUI, sync. Only act on a real\n // change so a no-op PATCH doesn't silently jump the document to the end.\n const next = fields.parent_id ?? null;\n if ((getDocument(db, id)!.parent_id ?? null) !== next) placeInSiblings(db, id, next);\n }\n if (fields.body !== undefined) {\n ensureBlocks(db, id);\n reconcileBody(db, id, fields.body);\n }\n return getDocument(db, id)!;\n});\n\nexport interface EditDocResult {\n id: string;\n changed: boolean;\n replaced: number;\n version: string;\n}\n\n/**\n * Anchored find/replace, like the Edit tool. `old` must occur exactly once\n * (or pass `replaceAll`); supplying it is the read-before-edit guarantee — you\n * cannot author it without current content, and drift surfaces as \"not found\".\n * `ifMatch` is an optional staleness backstop (a version from documentVersion).\n */\nexport const editDocument = grouped(function editDocument(\n db: DbDriver,\n id: string,\n opts: { old: string; new: string; replaceAll?: boolean; ifMatch?: string },\n): EditDocResult {\n if (!getDocument(db, id)) throw new MhError(\"not_found\", `no such document: ${id}`);\n if (opts.ifMatch !== undefined && documentVersion(db, id) !== opts.ifMatch)\n throw new MhError(\"stale\", `stale: document changed since ${opts.ifMatch}; re-read first`);\n if (opts.old === \"\") throw new MhError(\"invalid_input\", \"--old must not be empty\");\n\n ensureBlocks(db, id);\n const blocks = liveBlocks(db, id);\n const body = serializeDocBlocks(blocks.map((b) => ({ text: b.text, blankAfter: b.blank_after })));\n const count = countOccurrences(body, opts.old);\n if (count === 0) throw new MhError(\"invalid_input\", `anchor not found: no match for --old`);\n if (count > 1 && !opts.replaceAll)\n throw new MhError(\n \"ambiguous\",\n `${count} matches for --old; add surrounding context or use --replace-all`,\n );\n\n // Fast path: edit stays within single blocks and introduces no block break.\n if (!opts.old.includes(\"\\n\\n\")) {\n const affected = blocks.filter((b) => b.text.includes(opts.old));\n const next = affected.map((b) =>\n opts.replaceAll ? b.text.replaceAll(opts.old, opts.new) : b.text.replace(opts.old, opts.new),\n );\n if (next.every((t) => t.length > 0 && !t.includes(\"\\n\\n\"))) {\n const targets = opts.replaceAll ? affected : affected.slice(0, 1);\n targets.forEach((b, i) => emit(db, \"doc_blocks\", b.id, \"text\", next[i]!));\n return { id, changed: true, replaced: opts.replaceAll ? count : 1, version: documentVersion(db, id) };\n }\n }\n\n // General path: rewrite the body and reconcile (handles spans/splits/merges).\n const newBody = opts.replaceAll\n ? body.replaceAll(opts.old, opts.new)\n : body.replace(opts.old, opts.new);\n reconcileBody(db, id, newBody);\n return { id, changed: newBody !== body, replaced: opts.replaceAll ? count : 1, version: documentVersion(db, id) };\n});\n\nexport const appendDocument = grouped(function appendDocument(\n db: DbDriver,\n id: string,\n body: string,\n): EditDocResult {\n if (!getDocument(db, id)) throw new MhError(\"not_found\", `no such document: ${id}`);\n ensureBlocks(db, id);\n const next = parseDocBlocks(body);\n if (next.length) {\n const blocks = liveBlocks(db, id);\n const last = blocks.length ? blocks[blocks.length - 1]!.order_key : null;\n insertBlocks(db, id, next, last, null);\n }\n return { id, changed: next.length > 0, replaced: next.length, version: documentVersion(db, id) };\n});\n\nexport const prependDocument = grouped(function prependDocument(\n db: DbDriver,\n id: string,\n body: string,\n): EditDocResult {\n if (!getDocument(db, id)) throw new MhError(\"not_found\", `no such document: ${id}`);\n ensureBlocks(db, id);\n const next = parseDocBlocks(body);\n if (next.length) {\n const blocks = liveBlocks(db, id);\n const first = blocks.length ? blocks[0]!.order_key : null;\n insertBlocks(db, id, next, null, first);\n }\n return { id, changed: next.length > 0, replaced: next.length, version: documentVersion(db, id) };\n});\n\nexport const deleteDocument = grouped(function deleteDocument(db: DbDriver, id: string): boolean {\n if (!getDocument(db, id)) return false;\n emit(db, \"documents\", id, \"__deleted\", 1);\n // Cascade off the tombstone, mirroring repairHub: the doc's blocks are derived\n // content -> tombstone them; live child documents survive as roots -> unparent.\n for (const b of liveChildIds(db, \"doc_blocks\", \"doc_id\", id))\n emit(db, \"doc_blocks\", b, \"__deleted\", 1);\n for (const c of liveChildIds(db, \"documents\", \"parent_id\", id))\n emit(db, \"documents\", c, \"parent_id\", null);\n return true;\n});\n\n/** Ids of live rows in `table` whose `col` references `parentId`. */\nfunction liveChildIds(db: DbDriver, table: string, col: string, parentId: string): string[] {\n return (\n db\n .query(`SELECT id FROM ${table} WHERE ${col} = ? AND __deleted = 0`)\n .all(parentId) as { id: string }[]\n ).map((r) => r.id);\n}\n\nfunction countOccurrences(haystack: string, needle: string): number {\n if (needle === \"\") return 0;\n let n = 0;\n let i = haystack.indexOf(needle);\n while (i !== -1) {\n n++;\n i = haystack.indexOf(needle, i + needle.length);\n }\n return n;\n}\n",
|
|
26
|
+
"// Runtime-agnostic schema bootstrap: everything needed to bring a metahub\n// database to the current schema, typed against the portable driver surface so\n// it runs both on Bun (bun:sqlite) and in a browser worker (sqlite-wasm).\n// Opening the on-disk database lives in db.ts, which composes these.\n\nimport type { DbDriver } from \"./driver.ts\";\nimport { CORE_SCHEMA, FTS_SCHEMA } from \"./schema.ts\";\nimport { backfillRecordOrderKeys } from \"./records.ts\";\nimport { backfillDocumentOrderKeys } from \"./documents.ts\";\n\nexport function runSchema(db: DbDriver): void {\n db.exec(CORE_SCHEMA);\n try {\n db.exec(FTS_SCHEMA);\n } catch {\n // FTS5 unavailable; search will fall back to LIKE.\n }\n}\n\nexport function ftsAvailable(db: DbDriver): boolean {\n const row = db\n .query(\"SELECT 1 AS ok FROM sqlite_master WHERE name = 'search_fts'\")\n .get() as { ok: number } | null;\n return row != null;\n}\n\nfunction hasColumn(db: DbDriver, table: string, column: string): boolean {\n const cols = db.query(`PRAGMA table_info(${table})`).all() as { name: string }[];\n return cols.some((c) => c.name === column);\n}\n\nfunction tableExists(db: DbDriver, table: string): boolean {\n return (\n db\n .query(\"SELECT 1 AS ok FROM sqlite_master WHERE type = 'table' AND name = ?\")\n .get(table) != null\n );\n}\n\n/**\n * Migrate legacy EAV records (record_values: one row per cell) to the JSON\n * layout (records.data: one row per record). Idempotent — keyed off schema\n * shape, no version flag. A no-op for fresh databases.\n */\nexport function migrateRecords(db: DbDriver): void {\n if (!hasColumn(db, \"records\", \"data\"))\n db.exec(\"ALTER TABLE records ADD COLUMN data TEXT NOT NULL DEFAULT '{}'\");\n if (!hasColumn(db, \"records\", \"order_key\"))\n db.exec(\"ALTER TABLE records ADD COLUMN order_key TEXT\");\n\n if (!tableExists(db, \"record_values\")) return;\n\n const tx = db.transaction(() => {\n // Fold each record's cells into a JSON object keyed by property id.\n db.exec(`\n UPDATE records SET data = coalesce((\n SELECT json_group_object(rv.property_id, json(rv.value))\n FROM record_values rv WHERE rv.record_id = records.id\n ), '{}')\n WHERE id IN (SELECT DISTINCT record_id FROM record_values);\n `);\n db.exec(\"DROP TABLE record_values\");\n backfillRecordOrderKeys(db);\n });\n tx();\n\n backfillRecordOrderKeys(db);\n}\n\n/**\n * Add the peer-pairing columns to a legacy `peers` table (token/label/node_id/\n * enabled/last_sync_at/last_status/last_error). Idempotent — guarded per column,\n * never drops the table so existing replication cursors survive.\n */\nexport function migratePeers(db: DbDriver): void {\n const add: [string, string][] = [\n [\"token\", \"TEXT\"],\n [\"label\", \"TEXT\"],\n [\"node_id\", \"TEXT\"],\n [\"enabled\", \"INTEGER NOT NULL DEFAULT 1\"],\n [\"last_sync_at\", \"INTEGER\"],\n [\"last_status\", \"TEXT\"],\n [\"last_error\", \"TEXT\"],\n ];\n for (const [col, decl] of add) {\n if (!hasColumn(db, \"peers\", col)) db.exec(`ALTER TABLE peers ADD COLUMN ${col} ${decl}`);\n }\n}\n\n/**\n * Add the `blank_after` column to a legacy `doc_blocks` table. Idempotent —\n * guarded by hasColumn; existing blocks default to 0 (canonical single-blank-line\n * separators), so the migration never changes an existing document's body.\n */\nexport function migrateDocBlocks(db: DbDriver): void {\n if (!hasColumn(db, \"doc_blocks\", \"blank_after\"))\n db.exec(\"ALTER TABLE doc_blocks ADD COLUMN blank_after INTEGER NOT NULL DEFAULT 0\");\n}\n\n/**\n * Add the `order_key` column to a legacy `documents` table and backfill it.\n * Idempotent — guarded by hasColumn; backfill only touches rows with a NULL key,\n * assigning per-parent fractional indices in current created_hlc order, so the\n * displayed document order is unchanged until the user first drags something.\n */\nexport function migrateDocuments(db: DbDriver): void {\n if (!hasColumn(db, \"documents\", \"order_key\"))\n db.exec(\"ALTER TABLE documents ADD COLUMN order_key TEXT\");\n backfillDocumentOrderKeys(db);\n}\n\n/**\n * Add the `txn` change-group column to a legacy `crdt_changes` table.\n * Idempotent — guarded by hasColumn; existing rows stay NULL (history falls\n * back to time-gap clustering for them).\n */\nexport function migrateOplog(db: DbDriver): void {\n if (!hasColumn(db, \"crdt_changes\", \"txn\"))\n db.exec(\"ALTER TABLE crdt_changes ADD COLUMN txn TEXT\");\n}\n\n/** Bring a freshly opened (or legacy) database to the current schema. */\nexport function initSchema(db: DbDriver): void {\n runSchema(db);\n migrateOplog(db);\n migrateRecords(db);\n migratePeers(db);\n migrateDocBlocks(db);\n migrateDocuments(db);\n}\n",
|
|
27
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { getDatabase, type DatabaseRow } from \"./databases.ts\";\n\n// The \"current database\" is per-machine UI context, not data — it lives in the\n// local `meta` table (like node_id / search_hlc), never in the oplog, so it\n// does not sync to peers.\nconst KEY = \"current_db\";\n\n/**\n * The current database, or null. Validated on read: if it points at a database\n * that no longer exists (deleted, or gone after a snapshot restore), the stale\n * pointer is cleared and null returned — no coupling to delete/restore paths.\n */\nexport function getCurrentDatabase(db: DbDriver): DatabaseRow | null {\n const row = db.query(\"SELECT value FROM meta WHERE key = ?\").get(KEY) as\n | { value: string }\n | null;\n if (!row) return null;\n const found = getDatabase(db, row.value);\n if (!found) {\n clearCurrentDatabase(db);\n return null;\n }\n return found;\n}\n\nexport function setCurrentDatabase(db: DbDriver, id: string): void {\n db.query(\n \"INSERT INTO meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value\",\n ).run(KEY, id);\n}\n\nexport function clearCurrentDatabase(db: DbDriver): void {\n db.query(\"DELETE FROM meta WHERE key = ?\").run(KEY);\n}\n",
|
|
28
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { ftsAvailable } from \"./schema-init.ts\";\nimport { changesAfterSeq } from \"./crdt.ts\";\n\nexport interface SearchHit {\n type: \"document\" | \"record\";\n id: string;\n database_id: string | null;\n title?: string;\n snippet: string;\n}\n\nconst TEXT_TYPES = \"('text','url','select','multi_select','date')\";\n\n// Bump when the indexing logic changes (TEXT_TYPES, indexed columns, FTS schema)\n// so existing hubs discard `search_seq` and rebuild from scratch on next search.\nconst SEARCH_INDEX_VERSION = \"1\";\n\nfunction readMeta(db: DbDriver, key: string): string | null {\n return (\n (db.query(\"SELECT value FROM meta WHERE key = ?\").get(key) as { value: string } | null)\n ?.value ?? null\n );\n}\n\nfunction writeMeta(db: DbDriver, key: string, value: string): void {\n db.query(\n \"INSERT INTO meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value\",\n ).run(key, value);\n}\n\n// --- per-object (re)indexing ------------------------------------------------\n// FTS rows are derived from the materialized tables, so (re)indexing one object\n// is \"delete its rows, then re-derive from the live row(s)\". A tombstoned or\n// body-less object simply re-derives to nothing.\n\ninterface DocRow {\n id: string;\n title: string | null;\n body: string | null;\n database_id: string | null;\n}\n\nfunction reindexDocument(db: DbDriver, id: string): void {\n db.query(\"DELETE FROM search_fts WHERE kind = 'document' AND id = ?\").run(id);\n const d = db\n .query(\"SELECT id, title, body, database_id FROM documents WHERE id = ? AND __deleted = 0\")\n .get(id) as DocRow | null;\n if (d)\n db.query(\n \"INSERT INTO search_fts (kind, id, database_id, title, body) VALUES ('document', ?, ?, ?, ?)\",\n ).run(d.id, d.database_id, d.title ?? \"\", d.body ?? \"\");\n}\n\ninterface RecBodyRow {\n id: string;\n database_id: string | null;\n body: string | null;\n}\n\n// A record's body is the concatenation of its TEXT-typed cell values. `where`\n// scopes which records to (re)derive; it is a fixed literal, never user input.\nfunction recordBodyRows(db: DbDriver, where: string, ...args: (string | number)[]): RecBodyRow[] {\n return db\n .query(\n `SELECT r.id AS id, r.database_id AS database_id, group_concat(je.value, ' ') AS body\n FROM records r, json_each(r.data) je\n JOIN properties p ON p.id = je.key AND p.__deleted = 0\n WHERE ${where} AND r.__deleted = 0 AND p.type IN ${TEXT_TYPES}\n GROUP BY r.id`,\n )\n .all(...args) as RecBodyRow[];\n}\n\nfunction insertRecordRow(db: DbDriver, r: RecBodyRow): void {\n db.query(\n \"INSERT INTO search_fts (kind, id, database_id, title, body) VALUES ('record', ?, ?, ?, ?)\",\n ).run(r.id, r.database_id, r.id, r.body ?? \"\");\n}\n\nfunction reindexRecord(db: DbDriver, id: string): void {\n db.query(\"DELETE FROM search_fts WHERE kind = 'record' AND id = ?\").run(id);\n const r = recordBodyRows(db, \"r.id = ?\", id)[0];\n if (r) insertRecordRow(db, r);\n}\n\n// Used for property-level changes (type/deletion/scope) that affect a whole\n// database's records at once.\nfunction reindexDatabaseRecords(db: DbDriver, databaseId: string): void {\n db.query(\"DELETE FROM search_fts WHERE kind = 'record' AND database_id = ?\").run(databaseId);\n for (const r of recordBodyRows(db, \"r.database_id = ?\", databaseId)) insertRecordRow(db, r);\n}\n\n// --- index maintenance ------------------------------------------------------\n\n// Full rebuild: the fallback path (first build, version bump, snapshot reset,\n// manual repair). Clears the index and re-derives every object, then pins the\n// cursor to the current oplog head so incremental updates pick up from there.\nfunction fullRebuild(db: DbDriver): void {\n db.query(\"DELETE FROM search_fts\").run();\n for (const d of db\n .query(\"SELECT id, title, body, database_id FROM documents WHERE __deleted = 0\")\n .all() as DocRow[])\n db.query(\n \"INSERT INTO search_fts (kind, id, database_id, title, body) VALUES ('document', ?, ?, ?, ?)\",\n ).run(d.id, d.database_id, d.title ?? \"\", d.body ?? \"\");\n for (const r of recordBodyRows(db, \"1 = 1\")) insertRecordRow(db, r);\n const max = (db.query(\"SELECT MAX(rowid) AS m FROM crdt_changes\").get() as { m: number | null }).m ?? 0;\n writeMeta(db, \"search_seq\", String(max));\n writeMeta(db, \"search_index_version\", SEARCH_INDEX_VERSION);\n}\n\n// Incremental: scan oplog changes since the cursor, derive the set of affected\n// objects, and re-derive only those. Insertion-order (rowid) means no change is\n// ever skipped, even when a remote write carries an older HLC than the local max.\nfunction incrementalUpdate(db: DbDriver): void {\n const cursor = Number(readMeta(db, \"search_seq\") ?? \"0\");\n const { changes, cursor: next } = changesAfterSeq(db, cursor);\n if (changes.length === 0) return;\n\n const docIds = new Set<string>();\n const recordIds = new Set<string>();\n const dbIds = new Set<string>(); // databases whose records need a full re-derive\n\n for (const c of changes) {\n switch (c.dataset) {\n case \"documents\":\n docIds.add(c.row_id);\n break;\n case \"doc_blocks\": {\n const blk = db\n .query(\"SELECT doc_id FROM doc_blocks WHERE id = ?\")\n .get(c.row_id) as { doc_id: string | null } | null;\n if (blk?.doc_id) docIds.add(blk.doc_id);\n break;\n }\n case \"records\":\n recordIds.add(c.row_id);\n break;\n case \"properties\":\n // Only type/deletion/scope change which cells contribute to record bodies.\n if (c.col === \"type\" || c.col === \"__deleted\" || c.col === \"database_id\") {\n const p = db\n .query(\"SELECT database_id FROM properties WHERE id = ?\")\n .get(c.row_id) as { database_id: string | null } | null;\n if (p?.database_id) dbIds.add(p.database_id);\n }\n break;\n // databases / sites / site_files are not represented in the FTS index.\n }\n }\n\n for (const id of docIds) reindexDocument(db, id);\n for (const dbId of dbIds) reindexDatabaseRecords(db, dbId);\n for (const id of recordIds) {\n const r = db\n .query(\"SELECT database_id FROM records WHERE id = ?\")\n .get(id) as { database_id: string | null } | null;\n if (r?.database_id && dbIds.has(r.database_id)) continue; // already covered above\n reindexRecord(db, id);\n }\n writeMeta(db, \"search_seq\", String(next));\n}\n\n// Bring the FTS index up to date before searching. Returns false when FTS5 is\n// unavailable (caller falls back to LIKE). All work is one transaction so the\n// cursor never advances past the index state it describes.\nfunction ensureIndex(db: DbDriver): boolean {\n if (!ftsAvailable(db)) return false;\n const version = readMeta(db, \"search_index_version\");\n const seq = readMeta(db, \"search_seq\");\n db.transaction(() => {\n if (version !== SEARCH_INDEX_VERSION || seq === null) fullRebuild(db);\n else incrementalUpdate(db);\n })();\n return true;\n}\n\n/** Force a full rebuild of the search index (maintenance / repair). */\nexport function rebuildSearchIndex(db: DbDriver): boolean {\n if (!ftsAvailable(db)) return false;\n db.transaction(() => fullRebuild(db))();\n return true;\n}\n\nfunction ftsSearch(db: DbDriver, query: string, limit: number): SearchHit[] {\n const match = query\n .split(/\\s+/)\n .filter(Boolean)\n .map((t) => `\"${t.replace(/\"/g, '\"\"')}\"`)\n .join(\" \");\n if (!match) return [];\n const rows = db\n .query(\n \"SELECT kind, id, database_id, title, snippet(search_fts, -1, '[', ']', '…', 10) AS snippet FROM search_fts WHERE search_fts MATCH ? ORDER BY rank LIMIT ?\",\n )\n .all(match, limit) as {\n kind: \"document\" | \"record\";\n id: string;\n database_id: string | null;\n title: string | null;\n snippet: string;\n }[];\n return rows.map((r) => ({\n type: r.kind,\n id: r.id,\n database_id: r.database_id,\n title: r.title || undefined,\n snippet: r.snippet,\n }));\n}\n\nfunction makeSnippet(text: string, q: string): string {\n const i = text.toLowerCase().indexOf(q.toLowerCase());\n if (i < 0) return text.slice(0, 80);\n const start = Math.max(0, i - 30);\n return `${start > 0 ? \"…\" : \"\"}${text.slice(start, i + q.length + 50)}…`;\n}\n\n// Substring match — robust for CJK and exact phrases where FTS tokenization misses.\nfunction likeSearch(db: DbDriver, query: string, limit: number): SearchHit[] {\n const like = `%${query.replace(/[%_\\\\]/g, \"\\\\$&\")}%`;\n const out: SearchHit[] = [];\n const docs = db\n .query(\n \"SELECT id, title, body, database_id FROM documents WHERE __deleted = 0 AND (title LIKE ? ESCAPE '\\\\' OR body LIKE ? ESCAPE '\\\\') LIMIT ?\",\n )\n .all(like, like, limit) as {\n id: string;\n title: string | null;\n body: string | null;\n database_id: string | null;\n }[];\n for (const d of docs)\n out.push({\n type: \"document\",\n id: d.id,\n database_id: d.database_id,\n title: d.title ?? undefined,\n snippet: makeSnippet(d.body || d.title || \"\", query),\n });\n\n if (out.length < limit) {\n const recs = db\n .query(\n `SELECT r.id AS id, r.database_id AS database_id, group_concat(je.value, ' ') AS body\n FROM records r, json_each(r.data) je\n JOIN properties p ON p.id = je.key AND p.__deleted = 0\n WHERE r.__deleted = 0 AND p.type IN ${TEXT_TYPES}\n GROUP BY r.id HAVING body LIKE ? ESCAPE '\\\\' LIMIT ?`,\n )\n .all(like, limit - out.length) as {\n id: string;\n database_id: string | null;\n body: string | null;\n }[];\n for (const r of recs)\n out.push({\n type: \"record\",\n id: r.id,\n database_id: r.database_id,\n snippet: makeSnippet(r.body || \"\", query),\n });\n }\n return out;\n}\n\nexport function search(\n db: DbDriver,\n query: string,\n opts: { limit?: number } = {},\n): SearchHit[] {\n const limit = opts.limit ?? 20;\n if (ensureIndex(db)) {\n try {\n const hits = ftsSearch(db, query, limit);\n if (hits.length) return hits;\n } catch {\n // fall through to LIKE\n }\n }\n return likeSearch(db, query, limit);\n}\n",
|
|
27
29
|
"var _a;\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n",
|
|
28
30
|
"import { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const ratio = val / step;\n const roundedRatio = Math.round(ratio);\n // Use a relative epsilon scaled to the magnitude of the result\n const tolerance = Number.EPSILON * Math.max(Math.abs(ratio), 1);\n if (Math.abs(ratio - roundedRatio) < tolerance)\n return 0;\n return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n // Skip the probe under `jitless`: strict CSPs report the caught `new Function`\n // as a `securitypolicyviolation` even though the throw is swallowed.\n if (globalConfig.jitless) {\n return false;\n }\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n if (o instanceof Map)\n return new Map(o);\n if (o instanceof Set)\n return new Set(o);\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\",\n]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n if (a._zod.def.checks?.length) {\n throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n }\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: b._zod.def.checks ?? [],\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined).\n// Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue === false) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n const { inst: _inst, continue: _continue, input: _input, ...rest } = iss;\n rest.path ?? (rest.path = []);\n rest.message = message;\n if (ctx?.reportInput) {\n rest.input = _input;\n }\n return rest;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n",
|
|
29
31
|
"import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error, path = []) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n",
|
|
@@ -98,21 +100,24 @@
|
|
|
98
100
|
"import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = /*@__PURE__*/ new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Apply `default` so it wraps the fully-composed schema. This ensures\n // `parse(undefined) -> default` works regardless of which branch of\n // `convertBaseSchema` produced the inner schema (enum/const/not/typed/etc.).\n if (schema.default !== undefined) {\n baseSchema = baseSchema.default(schema.default);\n }\n // Collect non-description annotation metadata into the user-supplied\n // registry. Description is handled separately below via `.describe()` to\n // preserve the contract that `schema.description` reads from globalRegistry.\n const extraMeta = {};\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n // Apply description last. `.describe()` clones the schema and sets\n // `_zod.parent` on the clone, so registry lookups on the returned reference\n // still resolve `extraMeta` via parent inheritance.\n if (schema.description) {\n baseSchema = baseSchema.describe(schema.description);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Normalize input via a JSON round-trip. This guarantees the converter\n // walks a plain, finite, JSON-valid object graph: cyclic inputs fail here,\n // getter/Proxy-based properties are materialized into static values, and\n // class instances collapse to plain objects.\n let normalized;\n try {\n normalized = JSON.parse(JSON.stringify(schema));\n }\n catch {\n throw new Error(\"fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas\");\n }\n const version = detectVersion(normalized, params?.defaultTarget);\n const defs = (normalized.$defs || normalized.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: normalized,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(normalized, ctx);\n}\n",
|
|
99
101
|
"import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n",
|
|
100
102
|
"export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n",
|
|
101
|
-
"import { z } from \"zod\";\nimport type { Change as CrdtChange } from \"../crdt.ts\";\n\n// Single source of truth: these Zod schemas drive runtime validation *and*\n// the auto-generated OpenAPI docs (see ./openapi.ts). `.describe(...)` text\n// flows straight into the published spec.\n\nexport const ChangeSchema = z.object({\n hlc: z.string().describe(\"Hybrid Logical Clock timestamp\"),\n node_id: z.string().describe(\"Origin node that produced the change\"),\n dataset: z.string().describe(\"CRDT dataset, e.g. databases / records / documents\"),\n row_id: z.string().describe(\"Row identifier within the dataset\"),\n col: z.string().describe(\"Column / property identifier\"),\n value: z.string().nullable().describe(\"JSON-encoded field value, or null\"),\n});\n\nexport const SyncRequestSchema = z.object({\n node_id: z.string().describe(\"Calling client's node id\"),\n since: z.number().describe(\"Server cursor the client last pulled\"),\n changes: z.array(ChangeSchema).describe(\"Client's changes to push\"),\n});\n\nexport const SyncResponseSchema = z.object({\n node_id: z.string().describe(\"Server's node id\"),\n changes: z.array(ChangeSchema).describe(\"Server changes after `since`\"),\n cursor: z.number().describe(\"New server cursor for the client to store\"),\n});\n\nexport const HealthResponseSchema = z.object({\n ok: z.boolean(),\n node: z.string().describe(\"Server's node id\"),\n});\n\n// Pairing handshake (see ./pairing.ts). The caller (device B) presents a\n// one-time code, its node id, the durable credential it issues to us, and\n// optionally its own reachable URL so we can register it back as a peer.\nexport const PairRequestSchema = z.object({\n code: z.string().describe(\"One-time pairing code minted by this server\"),\n node_id: z.string().describe(\"Calling device's node id\"),\n grant: z.string().describe(\"Durable credential the caller issues to us\"),\n self_url: z.string().optional().describe(\"Caller's reachable server URL (for mutual sync)\"),\n});\n\nexport const PairResponseSchema = z.object({\n node_id: z.string().describe(\"This server's node id\"),\n grant: z.string().describe(\"Durable credential we issue to the caller\"),\n});\n\nexport type PairRequest = z.infer<typeof PairRequestSchema>;\nexport type PairResponse = z.infer<typeof PairResponseSchema>;\n\n// `Change` stays sourced from crdt.ts to avoid a second source of truth; the\n// schema above is structurally compatible and used only for validation/docs.\nexport type SyncRequest = z.infer<typeof SyncRequestSchema> & { changes: CrdtChange[] };\nexport type SyncResponse = z.infer<typeof SyncResponseSchema> & { changes: CrdtChange[] };\nexport type HealthResponse = z.infer<typeof HealthResponseSchema>;\n\nexport const SYNC_PATH = \"/sync\";\nexport const HEALTH_PATH = \"/health\";\n// Token exchange: a holder of the current (or an in-grace previous) token swaps\n// it for the current token. Exempt from the gate so an expired token can reach it.\nexport const RENEW_PATH = \"/auth/token\";\n// Pairing handshake. Exempt from the master-token gate because the caller only\n// holds a one-time code (validated inside the handler), not the server token.\nexport const PAIR_PATH = \"/api/pair\";\n",
|
|
102
|
-
"import type {
|
|
103
|
-
"import { openMetahub } from \"../db.ts\";\nimport { getNodeId } from \"../node.ts\";\nimport { getServerConfig } from \"../config.ts\";\nimport pkg from \"../../../package.json\" with { type: \"json\" };\nimport { routes, type RouteCtx } from \"./routes.ts\";\nimport { SYNC_PATH, HEALTH_PATH, RENEW_PATH, PAIR_PATH } from \"./protocol.ts\";\nimport { DEFAULT_TTL_MS, DEFAULT_GRACE_MS } from \"./token.ts\";\nimport { syncAllPeers } from \"./peers.ts\";\nimport { buildOpenApi } from \"./openapi.ts\";\nimport {\n type AuthConfig,\n activeToken,\n hasValidToken,\n acceptsSyncToken,\n renewToken,\n wantsHtml,\n unlockPage,\n withShim,\n unauthorized,\n HTML_HEADERS,\n} from \"./auth.ts\";\n\nexport interface RunningServer {\n server: ReturnType<typeof Bun.serve>;\n node: string;\n port: number;\n /** Resolved bind address (loopback unless explicitly exposed). */\n host: string;\n /** The active token, or null in --debug mode (auth disabled). */\n token: string | null;\n /** Token expiry (epoch ms); Infinity for a static --token, null when auth is off. */\n exp: number | null;\n /** How the token was sourced: rotating (managed), fixed (static), or off (disabled). */\n authMode: \"managed\" | \"static\" | \"disabled\";\n /** Whether the auto-sync timer is running. */\n autoSync: boolean;\n /** Auto-sync poll interval in ms (meaningful only when autoSync). */\n syncIntervalMs: number;\n /** Stop the server and the auto-sync timer. */\n stop: () => void;\n}\n\n/** Thrown when the requested port is already taken, so callers can react. */\nexport class PortInUseError extends Error {\n constructor(\n readonly port: number,\n readonly host: string,\n ) {\n super(\n `port ${port} is already in use — another mh server may be running. ` +\n `Stop it, or start on a free port with --port <n>.`,\n );\n this.name = \"PortInUseError\";\n }\n}\n\nexport interface ServerOptions {\n port?: number;\n /** Bind address. Defaults to 127.0.0.1; pass \"0.0.0.0\" to expose. */\n host?: string;\n /** Disable auth entirely. */\n debug?: boolean;\n /** Custom token. If omitted in non-debug mode, one is generated. */\n token?: string;\n /** Auto-sync poll interval in ms; <= 0 disables it. Falls back to stored config. */\n syncIntervalMs?: number;\n /** Master switch for the auto-sync timer. Falls back to stored config. */\n autoSync?: boolean;\n}\n\n/** Scalar API reference UI, loaded from CDN — no bundling or npm dependency. */\nfunction scalarHtml(specUrl: string): string {\n return `<!doctype html><html><head>\n<meta charset=\"utf-8\"><title>Metahub API</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"></head>\n<body><script id=\"api-reference\" data-url=\"${specUrl}\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/@scalar/api-reference\"></script>\n</body></html>`;\n}\n\n/** Start the CRDT sync server. It is just another node backed by ~/.metahub. */\nexport function startServer(opts: ServerOptions = {}): RunningServer {\n const db = openMetahub();\n const node = getNodeId(db);\n const ctx: RouteCtx = { db, node };\n\n // Resolve runtime settings: explicit opts (CLI flags) override stored config.\n const cfg = getServerConfig(db);\n const port = opts.port ?? cfg.port;\n const host = opts.host ?? cfg.host;\n const syncIntervalMs = opts.syncIntervalMs ?? cfg.syncIntervalMs;\n const autoSync = opts.autoSync ?? cfg.autoSync;\n\n // Three modes: --debug disables auth; an explicit --token/env is a fixed,\n // non-persisted token; otherwise a persistent, rotating token from ~/.metahub.\n const auth: AuthConfig = opts.debug\n ? { debug: true, staticToken: null, db: null, ttlMs: 0, graceMs: 0 }\n : opts.token\n ? { debug: false, staticToken: opts.token, db: null, ttlMs: 0, graceMs: 0 }\n : {\n debug: false,\n staticToken: null,\n db,\n ttlMs: DEFAULT_TTL_MS,\n graceMs: DEFAULT_GRACE_MS,\n };\n\n let server: ReturnType<typeof Bun.serve>;\n try {\n server = Bun.serve({\n port,\n hostname: host,\n async fetch(req) {\n const url = new URL(req.url);\n\n // /sync now requires the master token OR a per-peer grant from pairing\n // (the old open trusted-peer model is gone; pairing distributes the\n // credentials — see ./pairing.ts, acceptsSyncToken). /health and\n // /auth/token stay open (the latter must work with an expired token), and\n // the pairing handshake authenticates via its one-time code in-handler.\n if (url.pathname === SYNC_PATH) {\n if (!acceptsSyncToken(req, url, auth, db)) return unauthorized();\n } else {\n const exempt =\n url.pathname === HEALTH_PATH ||\n url.pathname === RENEW_PATH ||\n url.pathname === PAIR_PATH;\n\n // Token gate (no-op in --debug). A browser without a token gets the\n // unlock page; everything else gets 401. Once the unlock page sets the\n // cookie the reload passes here and the real content is served.\n if (!exempt && !hasValidToken(req, url, auth)) {\n return wantsHtml(req)\n ? new Response(unlockPage(), { headers: HTML_HEADERS })\n : unauthorized();\n }\n }\n\n // Seamless renewal: swap the current (or in-grace previous) token for the\n // current token + expiry. 401 if the presented token isn't recognized.\n if (url.pathname === RENEW_PATH) {\n const r = renewToken(req, url, auth);\n return r ? Response.json(r) : unauthorized();\n }\n\n // Auto-generated API docs.\n if (req.method === \"GET\" && url.pathname === \"/docs.json\") {\n return Response.json(buildOpenApi(pkg.version));\n }\n if (req.method === \"GET\" && url.pathname === \"/docs\") {\n return withShim(new Response(scalarHtml(\"/docs.json\"), { headers: HTML_HEADERS }), auth);\n }\n\n // Browser WebUI at `/`. Imported lazily so neither it nor the Preact\n // bundle ever loads on the CLI startup path — only when a browser asks.\n if (req.method === \"GET\" && (url.pathname === \"/\" || url.pathname === \"/webui.js\")) {\n const { serveWebui } = await import(\"./webui.ts\");\n const res = await serveWebui(req);\n if (res) return withShim(res, auth);\n }\n\n // Agent-published static sites at /sites/<name>/<path...>. Lazy-imported\n // for the same zero-startup-cost reason as the WebUI.\n if (req.method === \"GET\" && url.pathname.startsWith(\"/sites/\")) {\n const { serveSite } = await import(\"./sites-serve.ts\");\n const res = await serveSite(req, ctx);\n if (res) return withShim(res, auth);\n }\n\n // Registered API routes.\n const route = routes.find((r) => r.method === req.method && r.path === url.pathname);\n if (route) return route.handler(req, ctx);\n\n return new Response(\"not found\", { status: 404 });\n },\n });\n } catch (e) {\n // Bun.serve throws synchronously on a bind failure. Turn the raw EADDRINUSE\n // (and the related EACCES) into an actionable message instead of a stack\n // trace pointing into the framework.\n const code = (e as { code?: string } | null)?.code;\n if (code === \"EADDRINUSE\") {\n throw new PortInUseError(port, host);\n }\n if (code === \"EACCES\") {\n throw new Error(\n `permission denied binding ${host}:${port} — ports below 1024 need elevated privileges; pick a higher port with --port`,\n );\n }\n throw e;\n }\n // Auto-sync timer: each tick runs one push/pull round against every enabled\n // peer. The DB is the source of truth, so peers added by `mh config` (a\n // separate process) are picked up on the next tick without a restart.\n let timer: ReturnType<typeof setInterval> | null = null;\n if (autoSync && syncIntervalMs > 0) {\n timer = setInterval(() => {\n // Per-peer errors are already recorded in the DB (last_error) by syncPeer\n // and surfaced via CLI/WebUI, so we don't re-log those every tick. This\n // catch only covers an *unexpected* tick crash, which would otherwise be\n // wholly silent.\n void syncAllPeers(db).catch((e) => console.error(\"[sync] auto-sync tick failed —\", e));\n }, syncIntervalMs);\n timer.unref?.();\n }\n\n const active = activeToken(auth);\n const authMode: RunningServer[\"authMode\"] = opts.debug\n ? \"disabled\"\n : opts.token\n ? \"static\"\n : \"managed\";\n return {\n server,\n node,\n port: server.port ?? port,\n host,\n token: active?.token ?? null,\n exp: active?.exp ?? null,\n authMode,\n autoSync: Boolean(autoSync && syncIntervalMs > 0),\n syncIntervalMs,\n stop() {\n if (timer) clearInterval(timer);\n server.stop();\n },\n };\n}\n",
|
|
103
|
+
"import { z } from \"zod\";\nimport type { Change as CrdtChange } from \"../crdt.ts\";\n\n// Single source of truth: these Zod schemas drive runtime validation *and*\n// the auto-generated OpenAPI docs (see ./openapi.ts). `.describe(...)` text\n// flows straight into the published spec.\n\nexport const ChangeSchema = z.object({\n hlc: z.string().describe(\"Hybrid Logical Clock timestamp\"),\n node_id: z.string().describe(\"Origin node that produced the change\"),\n dataset: z.string().describe(\"CRDT dataset, e.g. databases / records / documents\"),\n row_id: z.string().describe(\"Row identifier within the dataset\"),\n col: z.string().describe(\"Column / property identifier\"),\n value: z.string().nullable().describe(\"JSON-encoded field value, or null\"),\n // Change-group id for history rendering; optional so pre-txn peers interop\n // (their changes simply fall back to time-gap clustering in history views).\n txn: z.string().nullable().optional().describe(\"Change-group id (one logical mutation)\"),\n});\n\nexport const SyncRequestSchema = z.object({\n node_id: z.string().describe(\"Calling client's node id\"),\n since: z.number().describe(\"Server cursor the client last pulled\"),\n changes: z.array(ChangeSchema).describe(\"Client's changes to push\"),\n // Both optional and absent in classic peer rounds (full pull). Browser\n // replicas use them: `limit` chunks the initial hydration into bounded\n // pulls, `exclude_datasets` lets a device opt out of heavy datasets it\n // never edits (e.g. site_files on a small phone).\n limit: z.number().optional().describe(\"Max changes to return (pagination for hydration)\"),\n exclude_datasets: z\n .array(z.string())\n .optional()\n .describe(\"Datasets to omit from the pull (partial replica)\"),\n});\n\nexport const SyncResponseSchema = z.object({\n node_id: z.string().describe(\"Server's node id\"),\n changes: z.array(ChangeSchema).describe(\"Server changes after `since`\"),\n cursor: z.number().describe(\"New server cursor for the client to store\"),\n});\n\nexport const HealthResponseSchema = z.object({\n ok: z.boolean(),\n node: z.string().describe(\"Server's node id\"),\n});\n\n// Pairing handshake (see ./pairing.ts). The caller (device B) presents a\n// one-time code, its node id, the durable credential it issues to us, and\n// optionally its own reachable URL so we can register it back as a peer.\nexport const PairRequestSchema = z.object({\n code: z.string().describe(\"One-time pairing code minted by this server\"),\n node_id: z.string().describe(\"Calling device's node id\"),\n grant: z.string().describe(\"Durable credential the caller issues to us\"),\n self_url: z.string().optional().describe(\"Caller's reachable server URL (for mutual sync)\"),\n});\n\nexport const PairResponseSchema = z.object({\n node_id: z.string().describe(\"This server's node id\"),\n grant: z.string().describe(\"Durable credential we issue to the caller\"),\n});\n\nexport type PairRequest = z.infer<typeof PairRequestSchema>;\nexport type PairResponse = z.infer<typeof PairResponseSchema>;\n\n// `Change` stays sourced from crdt.ts to avoid a second source of truth; the\n// schema above is structurally compatible and used only for validation/docs.\nexport type SyncRequest = z.infer<typeof SyncRequestSchema> & { changes: CrdtChange[] };\nexport type SyncResponse = z.infer<typeof SyncResponseSchema> & { changes: CrdtChange[] };\nexport type HealthResponse = z.infer<typeof HealthResponseSchema>;\n\nexport const SYNC_PATH = \"/sync\";\nexport const HEALTH_PATH = \"/health\";\n// Token exchange: a holder of the current (or an in-grace previous) token swaps\n// it for the current token. Exempt from the gate so an expired token can reach it.\nexport const RENEW_PATH = \"/auth/token\";\n// Pairing handshake. Exempt from the master-token gate because the caller only\n// holds a one-time code (validated inside the handler), not the server token.\nexport const PAIR_PATH = \"/api/pair\";\n",
|
|
104
|
+
"import type { DbDriver } from \"../driver.ts\";\nimport { getNodeId } from \"../node.ts\";\nimport { ingest, changesAfterSeq } from \"../crdt.ts\";\nimport { type SyncResponse, SYNC_PATH } from \"./protocol.ts\";\nimport { MhError } from \"../errors.ts\";\n\ninterface PeerCursors {\n pull_cursor: number;\n push_cursor: number;\n token: string | null;\n}\n\nfunction getPeer(db: DbDriver, url: string): PeerCursors {\n const row = db\n .query(\"SELECT pull_cursor, push_cursor, token FROM peers WHERE url = ?\")\n .get(url) as PeerCursors | null;\n return row ?? { pull_cursor: 0, push_cursor: 0, token: null };\n}\n\nfunction setPeer(db: DbDriver, url: string, c: { pull_cursor: number; push_cursor: number }): void {\n db.query(\n \"INSERT INTO peers (url, pull_cursor, push_cursor) VALUES (?, ?, ?) ON CONFLICT(url) DO UPDATE SET pull_cursor = excluded.pull_cursor, push_cursor = excluded.push_cursor\",\n ).run(url, c.pull_cursor, c.push_cursor);\n}\n\nexport interface SyncResult {\n pushed: number;\n pulled: number;\n}\n\nexport interface SyncOpts {\n /** Bearer credential; defaults to the one stored for this peer (pairing). */\n token?: string;\n /** Max changes to pull this round — chunked initial hydration. */\n pullLimit?: number;\n /** Datasets this replica opts out of (partial replica, e.g. site_files). */\n excludeDatasets?: string[];\n}\n\n/**\n * Run one push/pull round against a peer server. A single round is bidirectional\n * (pushes local changes, pulls remote ones). The token defaults to the credential\n * stored for this peer (set during pairing) and is sent as a Bearer header so a\n * token-gated /sync accepts the request.\n */\nexport async function syncWithPeer(\n db: DbDriver,\n url: string,\n opts: SyncOpts | string = {},\n): Promise<SyncResult> {\n // Back-compat: the third parameter used to be the bare token string.\n const o: SyncOpts = typeof opts === \"string\" ? { token: opts } : opts;\n const node = getNodeId(db);\n const peer = getPeer(db, url);\n const bearer = o.token ?? peer.token ?? undefined;\n const toPush = changesAfterSeq(db, peer.push_cursor);\n\n const headers: Record<string, string> = { \"content-type\": \"application/json\" };\n if (bearer) headers.authorization = `Bearer ${bearer}`;\n const res = await fetch(new URL(SYNC_PATH, url), {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n node_id: node,\n since: peer.pull_cursor,\n changes: toPush.changes,\n ...(o.pullLimit != null ? { limit: o.pullLimit } : {}),\n ...(o.excludeDatasets?.length ? { exclude_datasets: o.excludeDatasets } : {}),\n }),\n });\n if (!res.ok)\n throw new MhError(\n res.status === 401 || res.status === 403 ? \"auth\" : \"network\",\n `sync failed: ${res.status} ${await res.text()}`,\n );\n\n const data = (await res.json()) as SyncResponse;\n const pulled = data.changes?.length ?? 0;\n ingest(db, data.changes ?? []);\n setPeer(db, url, { pull_cursor: data.cursor, push_cursor: toPush.cursor });\n\n return { pushed: toPush.changes.length, pulled };\n}\n",
|
|
105
|
+
"import { openMetahub } from \"../db.ts\";\nimport { MhError } from \"../errors.ts\";\nimport { getNodeId } from \"../node.ts\";\nimport { getServerConfig } from \"../config.ts\";\nimport pkg from \"../../../package.json\" with { type: \"json\" };\nimport { routes, type Route, type RouteCtx } from \"./routes.ts\";\nimport { SYNC_PATH, HEALTH_PATH, RENEW_PATH, PAIR_PATH } from \"./protocol.ts\";\nimport { DEFAULT_TTL_MS, DEFAULT_GRACE_MS } from \"./token.ts\";\nimport { syncAllPeers } from \"./peers.ts\";\nimport { buildOpenApi } from \"./openapi.ts\";\nimport {\n type AuthConfig,\n activeToken,\n hasValidToken,\n acceptsSyncToken,\n renewToken,\n wantsHtml,\n unlockPage,\n withShim,\n unauthorized,\n HTML_HEADERS,\n} from \"./auth.ts\";\n\nexport interface RunningServer {\n server: ReturnType<typeof Bun.serve>;\n node: string;\n port: number;\n /** Resolved bind address (loopback unless explicitly exposed). */\n host: string;\n /** The active token, or null in --debug mode (auth disabled). */\n token: string | null;\n /** Token expiry (epoch ms); Infinity for a static --token, null when auth is off. */\n exp: number | null;\n /** How the token was sourced: rotating (managed), fixed (static), or off (disabled). */\n authMode: \"managed\" | \"static\" | \"disabled\";\n /** Whether the server terminates TLS itself (URLs are https://). */\n tls: boolean;\n /** Whether the auto-sync timer is running. */\n autoSync: boolean;\n /** Auto-sync poll interval in ms (meaningful only when autoSync). */\n syncIntervalMs: number;\n /** Stop the server and the auto-sync timer. */\n stop: () => void;\n}\n\n/** Thrown when the requested port is already taken, so callers can react. */\nexport class PortInUseError extends MhError {\n constructor(\n readonly port: number,\n readonly host: string,\n ) {\n super(\n \"port_in_use\",\n `port ${port} is already in use — another mh server may be running. ` +\n `Stop it, or start on a free port with --port <n>.`,\n );\n this.name = \"PortInUseError\";\n }\n}\n\nexport interface ServerOptions {\n port?: number;\n /** Bind address. Defaults to 127.0.0.1; pass \"0.0.0.0\" to expose. */\n host?: string;\n /** Disable auth entirely. */\n debug?: boolean;\n /** Custom token. If omitted in non-debug mode, one is generated. */\n token?: string;\n /** Auto-sync poll interval in ms; <= 0 disables it. Falls back to stored config. */\n syncIntervalMs?: number;\n /** Master switch for the auto-sync timer. Falls back to stored config. */\n autoSync?: boolean;\n /** Browser UI plug-in point. Core ships no UI; callers (CLI, desktop\n * sidecar) inject the WebUI's asset handler + data API routes here.\n * Omitted = a headless sync/sites server. */\n ui?: UiHandler;\n /** Optional TLS (PEM file paths). When set the server terminates TLS itself\n * and serves https — service workers/PWA need a secure context off\n * localhost. A reverse proxy (Caddy, Tailscale Serve) in front is the\n * recommended alternative; this is for setups without one. */\n tls?: { certPath: string; keyPath: string };\n}\n\n/** What a pluggable browser UI provides (see src/webui/server/). */\nexport interface UiHandler {\n /** Serve UI assets (GET / , /webui.js, /webui.css); null = not a UI asset. */\n serveAssets(req: Request): Promise<Response | null>;\n /** The UI's data API routes, merged into the route registry (and /docs). */\n routes: Route[];\n}\n\n/** Scalar API reference UI, loaded from CDN — no bundling or npm dependency. */\nfunction scalarHtml(specUrl: string): string {\n return `<!doctype html><html><head>\n<meta charset=\"utf-8\"><title>Metahub API</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"></head>\n<body><script id=\"api-reference\" data-url=\"${specUrl}\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/@scalar/api-reference\"></script>\n</body></html>`;\n}\n\n/** Start the CRDT sync server. It is just another node backed by ~/.metahub. */\nexport function startServer(opts: ServerOptions = {}): RunningServer {\n const db = openMetahub();\n const node = getNodeId(db);\n const ctx: RouteCtx = { db, node };\n const allRoutes = opts.ui ? [...routes, ...opts.ui.routes] : routes;\n\n // Resolve runtime settings: explicit opts (CLI flags) override stored config.\n const cfg = getServerConfig(db);\n const port = opts.port ?? cfg.port;\n const host = opts.host ?? cfg.host;\n const syncIntervalMs = opts.syncIntervalMs ?? cfg.syncIntervalMs;\n const autoSync = opts.autoSync ?? cfg.autoSync;\n\n // Three modes: --debug disables auth; an explicit --token/env is a fixed,\n // non-persisted token; otherwise a persistent, rotating token from ~/.metahub.\n const auth: AuthConfig = opts.debug\n ? { debug: true, staticToken: null, db: null, ttlMs: 0, graceMs: 0 }\n : opts.token\n ? { debug: false, staticToken: opts.token, db: null, ttlMs: 0, graceMs: 0 }\n : {\n debug: false,\n staticToken: null,\n db,\n ttlMs: DEFAULT_TTL_MS,\n graceMs: DEFAULT_GRACE_MS,\n };\n\n let server: ReturnType<typeof Bun.serve>;\n try {\n server = Bun.serve({\n port,\n hostname: host,\n tls: opts.tls\n ? { cert: Bun.file(opts.tls.certPath), key: Bun.file(opts.tls.keyPath) }\n : undefined,\n async fetch(req) {\n const url = new URL(req.url);\n\n // /sync now requires the master token OR a per-peer grant from pairing\n // (the old open trusted-peer model is gone; pairing distributes the\n // credentials — see ./pairing.ts, acceptsSyncToken). /health and\n // /auth/token stay open (the latter must work with an expired token), and\n // the pairing handshake authenticates via its one-time code in-handler.\n if (url.pathname === SYNC_PATH) {\n if (!acceptsSyncToken(req, url, auth, db)) return unauthorized();\n } else {\n const exempt =\n url.pathname === HEALTH_PATH ||\n url.pathname === RENEW_PATH ||\n url.pathname === PAIR_PATH ||\n // PWA install metadata + the worker script: browsers fetch these\n // without credentials, and they carry nothing sensitive (app name,\n // icons, generic caching code), so they sit outside the token gate.\n url.pathname === \"/manifest.webmanifest\" ||\n url.pathname === \"/sw.js\" ||\n url.pathname.startsWith(\"/icons/\");\n\n // Token gate (no-op in --debug). A browser without a token gets the\n // unlock page; everything else gets 401. Once the unlock page sets the\n // cookie the reload passes here and the real content is served.\n if (!exempt && !hasValidToken(req, url, auth)) {\n return wantsHtml(req)\n ? // x-mh-unlock tells the service worker this 200 is the unlock\n // page, not the app shell — caching it would brick offline starts.\n new Response(unlockPage(), { headers: { ...HTML_HEADERS, \"x-mh-unlock\": \"1\" } })\n : unauthorized();\n }\n }\n\n // Seamless renewal: swap the current (or in-grace previous) token for the\n // current token + expiry. 401 if the presented token isn't recognized.\n if (url.pathname === RENEW_PATH) {\n const r = renewToken(req, url, auth);\n return r ? Response.json(r) : unauthorized();\n }\n\n // Auto-generated API docs.\n if (req.method === \"GET\" && url.pathname === \"/docs.json\") {\n return Response.json(buildOpenApi(pkg.version, allRoutes));\n }\n if (req.method === \"GET\" && url.pathname === \"/docs\") {\n return withShim(new Response(scalarHtml(\"/docs.json\"), { headers: HTML_HEADERS }), auth);\n }\n\n // Injected browser UI assets (core itself ships no UI).\n if (req.method === \"GET\" && opts.ui) {\n const res = await opts.ui.serveAssets(req);\n if (res) return withShim(res, auth);\n }\n\n // Agent-published static sites at /sites/<name>/<path...>. Lazy-imported\n // for the same zero-startup-cost reason as the WebUI.\n if (req.method === \"GET\" && url.pathname.startsWith(\"/sites/\")) {\n const { serveSite } = await import(\"./sites-serve.ts\");\n const res = await serveSite(req, ctx);\n if (res) return withShim(res, auth);\n }\n\n // Registered API routes.\n const route = allRoutes.find((r) => r.method === req.method && r.path === url.pathname);\n if (route) return route.handler(req, ctx);\n\n return new Response(\"not found\", { status: 404 });\n },\n });\n } catch (e) {\n // Bun.serve throws synchronously on a bind failure. Turn the raw EADDRINUSE\n // (and the related EACCES) into an actionable message instead of a stack\n // trace pointing into the framework.\n const code = (e as { code?: string } | null)?.code;\n if (code === \"EADDRINUSE\") {\n throw new PortInUseError(port, host);\n }\n if (code === \"EACCES\") {\n throw new MhError(\n \"invalid_input\",\n `permission denied binding ${host}:${port} — ports below 1024 need elevated privileges; pick a higher port with --port`,\n );\n }\n throw e;\n }\n // Auto-sync timer: each tick runs one push/pull round against every enabled\n // peer. The DB is the source of truth, so peers added by `mh config` (a\n // separate process) are picked up on the next tick without a restart.\n let timer: ReturnType<typeof setInterval> | null = null;\n if (autoSync && syncIntervalMs > 0) {\n timer = setInterval(() => {\n // Per-peer errors are already recorded in the DB (last_error) by syncPeer\n // and surfaced via CLI/WebUI, so we don't re-log those every tick. This\n // catch only covers an *unexpected* tick crash, which would otherwise be\n // wholly silent.\n void syncAllPeers(db).catch((e) => console.error(\"[sync] auto-sync tick failed —\", e));\n }, syncIntervalMs);\n timer.unref?.();\n }\n\n const active = activeToken(auth);\n const authMode: RunningServer[\"authMode\"] = opts.debug\n ? \"disabled\"\n : opts.token\n ? \"static\"\n : \"managed\";\n return {\n server,\n node,\n port: server.port ?? port,\n host,\n token: active?.token ?? null,\n exp: active?.exp ?? null,\n authMode,\n tls: Boolean(opts.tls),\n autoSync: Boolean(autoSync && syncIntervalMs > 0),\n syncIntervalMs,\n stop() {\n if (timer) clearInterval(timer);\n server.stop();\n },\n };\n}\n",
|
|
104
106
|
"// Managed server auth token, persisted in the `meta` table (same pattern as\n// getNodeId in ../node.ts). The DB is the source of truth: the running server\n// reads state per request, so a separate `mh token refresh` process is picked up\n// immediately and expiry rotation happens lazily on the next request.\n//\n// auth_token current token\n// auth_token_exp when it expires (epoch ms) → lazy rotation past this\n// auth_token_prev the token from before the last rotation (one generation)\n// auth_token_prev_exp until when `prev` may still be exchanged (epoch ms)\n\nimport type { Database } from \"bun:sqlite\";\nimport { randomSuffix } from \"../ids.ts\";\n\nconst K_TOKEN = \"auth_token\";\nconst K_EXP = \"auth_token_exp\";\nconst K_PREV = \"auth_token_prev\";\nconst K_PREV_EXP = \"auth_token_prev_exp\";\n\nexport interface TokenState {\n token: string;\n /** Epoch ms; once `now > exp`, the next request rotates. */\n exp: number;\n /** The immediately-previous token, exchangeable until `prevExp`. */\n prev: string | null;\n /** Epoch ms; how long `prev` stays exchangeable. */\n prevExp: number;\n}\n\n/** Parse a duration like \"30d\" / \"24h\" / \"90m\" / \"3600\" (bare number = seconds). */\nexport function parseDuration(s: string | undefined, fallbackMs: number): number {\n if (!s) return fallbackMs;\n const m = /^(\\d+)\\s*(ms|s|m|h|d)?$/.exec(s.trim());\n if (!m) return fallbackMs;\n const n = Number(m[1]);\n switch (m[2]) {\n case \"ms\":\n return n;\n case \"m\":\n return n * 60_000;\n case \"h\":\n return n * 3_600_000;\n case \"d\":\n return n * 86_400_000;\n default:\n return n * 1000; // \"s\" or bare = seconds\n }\n}\n\nconst DAY = 86_400_000;\n/** Default token lifetime (override with METAHUB_TOKEN_TTL). */\nexport const DEFAULT_TTL_MS = parseDuration(process.env.METAHUB_TOKEN_TTL, 30 * DAY);\n/** Default grace window an old token stays swappable (override with METAHUB_TOKEN_GRACE). */\nexport const DEFAULT_GRACE_MS = parseDuration(process.env.METAHUB_TOKEN_GRACE, 7 * DAY);\n\nfunction getMeta(db: Database, key: string): string | null {\n const row = db.query(\"SELECT value FROM meta WHERE key = ?\").get(key) as\n | { value: string }\n | null;\n return row ? row.value : null;\n}\n\nfunction setMeta(db: Database, key: string, value: string): void {\n db.query(\n \"INSERT INTO meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value\",\n ).run(key, value);\n}\n\n/** Current persisted state, or null if no token has been minted yet. */\nexport function readState(db: Database): TokenState | null {\n const token = getMeta(db, K_TOKEN);\n if (!token) return null;\n const prev = getMeta(db, K_PREV);\n return {\n token,\n exp: Number(getMeta(db, K_EXP) ?? 0),\n prev: prev && prev.length > 0 ? prev : null,\n prevExp: Number(getMeta(db, K_PREV_EXP) ?? 0),\n };\n}\n\n/** Rotate: current → prev (swappable for `graceMs`), mint a fresh current. */\nexport function rotate(db: Database, ttlMs: number, graceMs: number): TokenState {\n const now = Date.now();\n const old = getMeta(db, K_TOKEN);\n const next: TokenState = {\n token: randomSuffix(24),\n exp: now + ttlMs,\n prev: old,\n prevExp: old ? now + graceMs : 0,\n };\n setMeta(db, K_TOKEN, next.token);\n setMeta(db, K_EXP, String(next.exp));\n setMeta(db, K_PREV, next.prev ?? \"\");\n setMeta(db, K_PREV_EXP, String(next.prevExp));\n return next;\n}\n\n/** Persisted state, minting or rotating when missing/expired. */\nexport function loadOrRotate(db: Database, ttlMs: number, graceMs: number): TokenState {\n const s = readState(db);\n if (!s || Date.now() > s.exp) return rotate(db, ttlMs, graceMs);\n return s;\n}\n",
|
|
105
|
-
"// Server-level configuration, persisted in the `meta` table (same pattern as\n// getNodeId / context.ts). These are local-machine settings — they never enter\n// the CRDT oplog and never sync to peers. `mh --server` reads them as defaults\n// (CLI flags still win); `mh config` and the WebUI settings page edit them.\n\nimport type {
|
|
106
|
-
"import type { ZodType } from \"zod\";\nimport type { Database } from \"bun:sqlite\";\nimport { ingest, changesAfterSeq } from \"../crdt.ts\";\nimport {\n SyncRequestSchema,\n SyncResponseSchema,\n HealthResponseSchema,\n SYNC_PATH,\n HEALTH_PATH,\n type SyncRequest,\n} from \"./protocol.ts\";\nimport {
|
|
107
|
-
"import { z } from \"zod\";\nimport type { Route, RouteCtx } from \"./routes.ts\";\nimport { listDatabases, createDatabase, updateDatabase, deleteDatabase } from \"../databases.ts\";\nimport {\n listProperties,\n addProperty,\n updateProperty,\n setPropertyWidth,\n removeProperty,\n type PropType,\n type PropertyConfig,\n} from \"../properties.ts\";\nimport {\n listRecords,\n getRecord,\n createRecord,\n updateRecord,\n moveRecord,\n deleteRecord,\n} from \"../records.ts\";\nimport {\n listDocuments,\n getDocument,\n createDocument,\n updateDocument,\n moveDocument,\n deleteDocument,\n} from \"../documents.ts\";\nimport { search } from \"../search.ts\";\nimport pkg from \"../../../package.json\" with { type: \"json\" };\n\n// Read-only viewer + light editing for the browser UI. These routes wrap the\n// same core functions the CLI uses, so every write goes through `emit()` and\n// replicates over /sync. Ids are carried as query params to keep the server's\n// exact-path matcher (see ./routes.ts) and OpenAPI generation unchanged.\n\n// --- pragmatic schemas (drive /docs; intentionally loose) -------------------\n\nconst DatabaseSchema = z.object({\n id: z.string(),\n name: z.string(),\n icon: z.string().nullable(),\n created_hlc: z.string(),\n});\nconst PropertySchema = z.object({\n id: z.string(),\n database_id: z.string(),\n name: z.string(),\n type: z.string(),\n config: z.any().nullable(),\n position: z.number(),\n});\nconst RecordSchema = z.object({\n id: z.string(),\n database_id: z.string(),\n values: z\n .record(z.string(), z.any())\n .describe(\n 'Field values keyed by property name (e.g. {\"Amount\":35}). Reads nest cells here; writes take a flat {column: value} map.',\n ),\n});\nconst MoveRecordReq = z.object({\n target: z.string(),\n where: z.enum([\"before\", \"after\"]),\n});\nconst DocumentSummarySchema = z.object({\n id: z.string(),\n title: z.string(),\n database_id: z.string().nullable(),\n parent_id: z.string().nullable(),\n created_hlc: z.string(),\n order_key: z.string().nullable(),\n});\nconst MoveDocumentReq = z.object({\n target: z.string(),\n where: z.enum([\"before\", \"after\", \"into\"]),\n});\nconst DocumentSchema = DocumentSummarySchema.extend({ body: z.string().nullable() });\nconst SearchHitSchema = z.object({\n type: z.string(),\n id: z.string(),\n database_id: z.string().nullable(),\n title: z.string().optional(),\n snippet: z.string(),\n});\nconst OkSchema = z.object({ ok: z.boolean() });\n\nconst CreateDatabaseReq = z.object({ name: z.string(), icon: z.string().optional() });\nconst UpdateDatabaseReq = z.object({\n name: z.string().optional(),\n icon: z.string().nullable().optional(),\n});\nconst CreatePropertyReq = z.object({\n db: z.string(),\n name: z.string(),\n type: z.string(),\n config: z.any().optional(),\n});\nconst UpdatePropertyReq = z.object({\n name: z.string().optional(),\n type: z.string().optional(),\n config: z.any().optional(),\n position: z.number().optional(),\n});\nconst SetWidthReq = z.object({ width: z.number() });\nconst RecordValuesReq = z\n .record(z.string(), z.any())\n .describe('Flat { column: value } cell patch (keyed by property name).');\nconst CreateDocumentReq = z.object({\n title: z.string(),\n body: z.string().optional(),\n database_id: z.string().optional(),\n parent_id: z.string().optional(),\n});\nconst UpdateDocumentReq = z.object({\n title: z.string().optional(),\n body: z.string().optional(),\n parent_id: z.string().nullable().optional(),\n});\n\n// --- helpers ----------------------------------------------------------------\n\nfunction need(req: Request, key: string): string {\n const v = new URL(req.url).searchParams.get(key);\n if (!v) throw new Error(`missing query param: ${key}`);\n return v;\n}\n\nfunction opt(req: Request, key: string): string | undefined {\n return new URL(req.url).searchParams.get(key) ?? undefined;\n}\n\n/** Wrap a handler: serialize the return value, turn thrown errors into 400 JSON. */\nfunction handle(\n fn: (req: Request, ctx: RouteCtx) => unknown | Promise<unknown>,\n): Route[\"handler\"] {\n return async (req, ctx) => {\n try {\n const out = await fn(req, ctx);\n if (out instanceof Response) return out;\n return Response.json(out ?? null);\n } catch (e) {\n return Response.json({ error: (e as Error).message }, { status: 400 });\n }\n };\n}\n\n// --- routes -----------------------------------------------------------------\n\nconst VersionSchema = z.object({ version: z.string() });\n\nexport const webuiRoutes: Route[] = [\n {\n method: \"GET\",\n path: \"/api/version\",\n summary: \"Version of the running core (sidecar). Used by the desktop app's settings footer.\",\n response: VersionSchema,\n handler: () => Response.json({ version: pkg.version }),\n },\n {\n method: \"GET\",\n path: \"/api/databases\",\n summary: \"List all databases\",\n response: z.array(DatabaseSchema),\n handler: handle((_req, { db }) => listDatabases(db)),\n },\n {\n method: \"POST\",\n path: \"/api/databases\",\n summary: \"Create a database\",\n request: CreateDatabaseReq,\n response: DatabaseSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { name: string; icon?: string };\n return createDatabase(db, body);\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/database\",\n summary: \"Rename a database or change its icon. Query: ?id=<id>\",\n request: UpdateDatabaseReq,\n response: DatabaseSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { name?: string; icon?: string | null };\n return updateDatabase(db, need(req, \"id\"), body);\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/database\",\n summary: \"Delete a database (and stop it being the current one). Query: ?id=<id>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: deleteDatabase(db, need(req, \"id\")) })),\n },\n {\n method: \"GET\",\n path: \"/api/properties\",\n summary: \"List a database's properties (columns). Query: ?db=<id>\",\n response: z.array(PropertySchema),\n handler: handle((req, { db }) => listProperties(db, need(req, \"db\"))),\n },\n {\n method: \"POST\",\n path: \"/api/properties\",\n summary: \"Add a property to a database\",\n request: CreatePropertyReq,\n response: PropertySchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as {\n db: string;\n name: string;\n type: PropType;\n config?: PropertyConfig;\n };\n return addProperty(db, body.db, { name: body.name, type: body.type, config: body.config });\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/property\",\n summary: \"Update a property: rename, change type, edit config/options, reorder. Query: ?id=<id>\",\n request: UpdatePropertyReq,\n response: PropertySchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as {\n name?: string;\n type?: PropType;\n config?: PropertyConfig;\n position?: number;\n };\n return updateProperty(db, need(req, \"id\"), body);\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/property/width\",\n summary: \"Set a property's table column width (px). Query: ?id=<id>\",\n request: SetWidthReq,\n response: PropertySchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { width: number };\n return setPropertyWidth(db, need(req, \"id\"), body.width);\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/property\",\n summary: \"Delete a property (column) and its cells. Query: ?id=<id>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: removeProperty(db, need(req, \"id\")) })),\n },\n {\n method: \"GET\",\n path: \"/api/records\",\n summary: \"List records in a database. Query: ?db=<id>&sort=<field>&limit=<n>\",\n response: z.array(RecordSchema),\n handler: handle((req, { db }) => {\n const limit = opt(req, \"limit\");\n return listRecords(db, need(req, \"db\"), {\n sort: opt(req, \"sort\"),\n limit: limit ? Number(limit) : undefined,\n });\n }),\n },\n {\n method: \"POST\",\n path: \"/api/records\",\n summary: \"Create a record. Query: ?db=<id>; body is a {field: value} map\",\n request: RecordValuesReq,\n response: RecordSchema,\n handler: handle(async (req, { db }) => {\n const values = (await req.json()) as Record<string, unknown>;\n return createRecord(db, need(req, \"db\"), values);\n }),\n },\n {\n method: \"GET\",\n path: \"/api/record\",\n summary: \"Get one record. Query: ?id=<id>\",\n response: RecordSchema,\n handler: handle((req, { db }) => {\n const rec = getRecord(db, need(req, \"id\"));\n return rec ?? new Response(\"not found\", { status: 404 });\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/record\",\n summary: \"Update record fields. Query: ?id=<id>; body is a {field: value} map\",\n request: RecordValuesReq,\n response: RecordSchema,\n handler: handle(async (req, { db }) => {\n const values = (await req.json()) as Record<string, unknown>;\n return updateRecord(db, need(req, \"id\"), values);\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/record/order\",\n summary: \"Move a record before or after another record. Query: ?id=<id>\",\n request: MoveRecordReq,\n response: RecordSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { target: string; where: \"before\" | \"after\" };\n return moveRecord(db, need(req, \"id\"), body.target, body.where);\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/record\",\n summary: \"Delete a record. Query: ?id=<id>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: deleteRecord(db, need(req, \"id\")) })),\n },\n {\n method: \"GET\",\n path: \"/api/documents\",\n summary: \"List documents. Optional query: ?db=<id> or ?parent=<id>\",\n response: z.array(DocumentSummarySchema),\n handler: handle((req, { db }) =>\n listDocuments(db, { database_id: opt(req, \"db\"), parent_id: opt(req, \"parent\") }),\n ),\n },\n {\n method: \"POST\",\n path: \"/api/documents\",\n summary: \"Create a document\",\n request: CreateDocumentReq,\n response: DocumentSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as {\n title: string;\n body?: string;\n database_id?: string;\n parent_id?: string;\n };\n return createDocument(db, body);\n }),\n },\n {\n method: \"GET\",\n path: \"/api/document\",\n summary: \"Get one document with full body. Query: ?id=<id>\",\n response: DocumentSchema,\n handler: handle((req, { db }) => {\n const doc = getDocument(db, need(req, \"id\"));\n return doc ?? new Response(\"not found\", { status: 404 });\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/document\",\n summary: \"Update a document's title/body/parent_id (null = top level). Query: ?id=<id>\",\n request: UpdateDocumentReq,\n response: DocumentSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { title?: string; body?: string; parent_id?: string | null };\n return updateDocument(db, need(req, \"id\"), body);\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/document/move\",\n summary: \"Move a document before/after another, or into it as a child. Query: ?id=<id>\",\n request: MoveDocumentReq,\n response: DocumentSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { target: string; where: \"before\" | \"after\" | \"into\" };\n return moveDocument(db, need(req, \"id\"), body.target, body.where);\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/document\",\n summary: \"Delete a document. Query: ?id=<id>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: deleteDocument(db, need(req, \"id\")) })),\n },\n {\n method: \"GET\",\n path: \"/api/search\",\n summary: \"Full-text search across documents and records. Query: ?q=<text>&limit=<n>\",\n response: z.array(SearchHitSchema),\n handler: handle((req, { db }) => {\n const limit = opt(req, \"limit\");\n return search(db, need(req, \"q\"), { limit: limit ? Number(limit) : undefined });\n }),\n },\n];\n",
|
|
108
|
-
"import { z } from \"zod\";\nimport
|
|
109
|
-
"// Device pairing: bootstrap a mutual trust relationship between two nodes using\n// a short-lived one-time code, then exchange durable per-peer credentials\n// (\"certificates\"). The master server token is never shared.\n//\n// A: generatePairingCode() -> CODE (printed in A's terminal / UI)\n// B: performPairing(A-url, CODE) -> calls POST {A-url}/api/pair\n// A: handlePairRequest(...) -> redeems CODE, mints+returns a grant\n//\n// After the handshake each side holds a grant it ISSUED (stored in peer_grants,\n// accepted on /sync) and a grant it RECEIVED (stored in peers.token, presented\n// when syncing out). See acceptsSyncToken in ./auth.ts and syncWithPeer.\n\nimport type { Database } from \"bun:sqlite\";\nimport { randomSuffix } from \"../ids.ts\";\nimport { parseDuration } from \"./token.ts\";\nimport { addPeer } from \"./peers.ts\";\nimport { PAIR_PATH, type PairRequest, type PairResponse } from \"./protocol.ts\";\n\n/** Default one-time pairing-code lifetime (override with METAHUB_PAIR_TTL). */\nexport const DEFAULT_PAIR_TTL_MS = parseDuration(process.env.METAHUB_PAIR_TTL, 10 * 60_000);\n\nexport interface PairingCode {\n code: string;\n exp: number;\n}\n\n/** Mint a one-time pairing code, stored until redeemed or expired. */\nexport function generatePairingCode(db: Database, ttlMs: number = DEFAULT_PAIR_TTL_MS): PairingCode {\n const now = Date.now();\n // Opportunistic housekeeping: drop spent/expired codes so the table can't grow.\n db.query(\"DELETE FROM pairing_codes WHERE used = 1 OR exp < ?\").run(now);\n const code = randomSuffix(12); // ~62 bits; brute-forcing within the TTL is infeasible\n const exp = now + ttlMs;\n db.query(\n \"INSERT INTO pairing_codes (code, exp, used, created_at) VALUES (?, ?, 0, ?)\",\n ).run(code, exp, now);\n return { code, exp };\n}\n\n/**\n * Validate and consume a pairing code. The check-and-consume is a single atomic\n * UPDATE (guarded on used=0 AND not-expired) so two concurrent redemptions of\n * the same code can't both succeed. Returns false if unknown/used/expired.\n */\nexport function redeemPairingCode(db: Database, code: string): boolean {\n return (\n db\n .query(\"UPDATE pairing_codes SET used = 1 WHERE code = ? AND used = 0 AND exp >= ?\")\n .run(code, Date.now()).changes > 0\n );\n}\n\n/** Mint a durable credential we issue to a peer and will accept on /sync. */\nexport function mintGrant(db: Database, peerUrl: string | null, nodeId: string | null): string {\n const token = randomSuffix(32);\n db.query(\n \"INSERT INTO peer_grants (token, peer_url, node_id, created_at) VALUES (?, ?, ?, ?)\",\n ).run(token, peerUrl, nodeId, Date.now());\n return token;\n}\n\n/** Whether a presented token matches a credential we issued during pairing. */\nexport function isAcceptedGrant(db: Database, token: string): boolean {\n return db.query(\"SELECT 1 FROM peer_grants WHERE token = ?\").get(token) != null;\n}\n\nexport interface GrantRow {\n token: string;\n peer_url: string | null;\n node_id: string | null;\n created_at: number | null;\n}\n\n/** All credentials we have issued and still accept on /sync (inbound access). */\nexport function listGrants(db: Database): GrantRow[] {\n return db\n .query(\"SELECT token, peer_url, node_id, created_at FROM peer_grants ORDER BY created_at DESC\")\n .all() as GrantRow[];\n}\n\n/**\n * Revoke issued credentials by exact token or a unique prefix (handy for the\n * grants minted by one-directional pairing, which removePeer can't reach since\n * they have a null peer_url). Returns the number of grants revoked.\n */\nexport function revokeGrant(db: Database, tokenOrPrefix: string): number {\n return db\n .query(\"DELETE FROM peer_grants WHERE token = ? OR token LIKE ? || '%'\")\n .run(tokenOrPrefix, tokenOrPrefix).changes;\n}\n\n/**\n * Inbound side (device A): redeem the caller's one-time code, mint a grant for\n * the caller, register the caller back as a peer if it gave a reachable URL.\n */\nexport function handlePairRequest(db: Database, node: string, body: PairRequest): PairResponse {\n if (!redeemPairingCode(db, body.code)) {\n throw new
|
|
110
|
-
"// Outbound peer management: the devices this node syncs *to*. Each row carries\n// the durable credential the remote issued to us during pairing (see pairing.ts)\n// plus replication cursors and last-sync status. `syncAllPeers` is what the\n// server's auto-sync timer calls each tick.\n\nimport type {
|
|
111
|
-
"import { z } from \"zod\";\nimport
|
|
112
|
-
"
|
|
113
|
-
"// Token gate for the server. In --debug mode auth is disabled entirely. Otherwise\n// a single token guards every request. A token may arrive three ways so both\n// programmatic clients and browsers work:\n// - Authorization: Bearer <token> (API clients, and the injected fetch shim)\n// - Cookie: mh_token=<token> (browser top-level navigations)\n// - ?token=<token> (links / quick curl testing)\n// Browsers without a token get an unlock page that stores the password to\n// localStorage + a cookie and reloads; served HTML then gets a fetch shim that\n// re-attaches the token as a Bearer header on same-origin API calls.\n\nimport type { Database } from \"bun:sqlite\";\nimport { loadOrRotate } from \"./token.ts\";\nimport { isAcceptedGrant } from \"./pairing.ts\";\nimport { RENEW_PATH } from \"./protocol.ts\";\n\n// Three modes:\n// debug — auth off entirely.\n// staticToken — fixed token from --token/env; not persisted, never expires.\n// db (managed) — persistent, rotating token in ~/.metahub (see ./token.ts).\nexport interface AuthConfig {\n debug: boolean;\n staticToken: string | null;\n db: Database | null;\n ttlMs: number;\n graceMs: number;\n}\n\nconst COOKIE = \"mh_token\";\n\nfunction cookieToken(req: Request): string | null {\n const header = req.headers.get(\"cookie\");\n if (!header) return null;\n for (const part of header.split(\";\")) {\n const [k, ...v] = part.trim().split(\"=\");\n if (k === COOKIE) return decodeURIComponent(v.join(\"=\"));\n }\n return null;\n}\n\nexport function extractToken(req: Request, url: URL): string | null {\n const auth = req.headers.get(\"authorization\");\n if (auth?.startsWith(\"Bearer \")) return auth.slice(7);\n return cookieToken(req) ?? url.searchParams.get(\"token\");\n}\n\n/** Whether auth is on at all (so the gate runs and the fetch shim is injected). */\nexport function authActive(cfg: AuthConfig): boolean {\n return !cfg.debug && (cfg.staticToken != null || cfg.db != null);\n}\n\n/** The currently-valid token and its expiry, or null when auth is off. */\nexport function activeToken(cfg: AuthConfig): { token: string; exp: number } | null {\n if (cfg.debug) return null;\n if (cfg.staticToken != null) return { token: cfg.staticToken, exp: Infinity };\n if (cfg.db) {\n const s = loadOrRotate(cfg.db, cfg.ttlMs, cfg.graceMs);\n return { token: s.token, exp: s.exp };\n }\n return null;\n}\n\nexport function hasValidToken(req: Request, url: URL, cfg: AuthConfig): boolean {\n const cur = activeToken(cfg);\n if (!cur) return true;\n return extractToken(req, url) === cur.token;\n}\n\n/**\n * Gate for /sync: accept the master token OR any durable per-peer grant issued\n * during pairing (see ./pairing.ts). Returns true when auth is off (--debug).\n * `db` is needed to look up grants even in staticToken mode where cfg.db is null.\n */\nexport function acceptsSyncToken(req: Request, url: URL, cfg: AuthConfig, db: Database): boolean {\n if (!authActive(cfg)) return true;\n const presented = extractToken(req, url);\n if (!presented) return false;\n const cur = activeToken(cfg);\n if (cur && presented === cur.token) return true;\n return isAcceptedGrant(db, presented);\n}\n\n/**\n * Token exchange: a holder of the current token (or the in-grace previous token)\n * gets the current token back. Managed mode only — returns null otherwise.\n */\nexport function renewToken(\n req: Request,\n url: URL,\n cfg: AuthConfig,\n): { token: string; exp: number } | null {\n if (cfg.debug || cfg.staticToken != null || !cfg.db) return null;\n const s = loadOrRotate(cfg.db, cfg.ttlMs, cfg.graceMs);\n const presented = extractToken(req, url);\n if (!presented) return null;\n if (presented === s.token) return { token: s.token, exp: s.exp };\n if (s.prev && presented === s.prev && Date.now() < s.prevExp) {\n return { token: s.token, exp: s.exp };\n }\n return null;\n}\n\n/** A browser navigation (so we can answer with an unlock page instead of a 401). */\nexport function wantsHtml(req: Request): boolean {\n return req.method === \"GET\" && (req.headers.get(\"accept\") ?? \"\").includes(\"text/html\");\n}\n\nconst HTML_HEADERS = { \"content-type\": \"text/html; charset=utf-8\" };\n\n/** Self-contained password prompt: stores token to localStorage + cookie, reloads. */\nexport function unlockPage(): string {\n return `<!doctype html><html lang=\"en\"><head>\n<meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<title>Unlock</title>\n<style>\n body{font:14px/1.5 -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif;\n display:flex;min-height:100vh;margin:0;align-items:center;justify-content:center;\n background:#0d1117;color:#e6edf3}\n form{background:#161b22;border:1px solid #30363d;border-radius:10px;padding:28px;width:300px}\n h1{font-size:16px;margin:0 0 14px}\n input{width:100%;box-sizing:border-box;padding:8px;border-radius:6px;border:1px solid #30363d;\n background:#0d1117;color:inherit;margin-bottom:12px}\n button{width:100%;padding:8px;border:0;border-radius:6px;background:#238636;color:#fff;cursor:pointer}\n .err{color:#f85149;margin:0 0 12px;font-size:13px}\n</style></head><body>\n<form id=\"f\" style=\"display:none\">\n <h1>🔒 This server requires a token</h1>\n <p class=\"err\" id=\"e\" style=\"display:none\">Token rejected — try again.</p>\n <input id=\"t\" type=\"password\" placeholder=\"Token\" autocomplete=\"current-password\">\n <button type=\"submit\">Unlock</button>\n</form>\n<script>\n var KEY = \"mh_token\";\n function save(t) {\n localStorage.setItem(KEY, t);\n document.cookie = \"${COOKIE}=\" + encodeURIComponent(t) + \"; path=/; SameSite=Strict; Max-Age=31536000\";\n }\n function showForm() {\n document.getElementById(\"f\").style.display = \"block\";\n // A leftover token means an attempt (or silent renewal) failed the gate.\n if (localStorage.getItem(KEY)) document.getElementById(\"e\").style.display = \"block\";\n document.getElementById(\"t\").focus();\n }\n document.getElementById(\"f\").addEventListener(\"submit\", function (ev) {\n ev.preventDefault();\n save(document.getElementById(\"t\").value);\n location.reload();\n });\n // Seamless renewal for top-level navigation: if we hold a token, try swapping\n // it for the current one before prompting. Covers the case where the token\n // rotated while this browser held the (in-grace) previous one.\n var stored = localStorage.getItem(KEY);\n if (stored) {\n fetch(\"${RENEW_PATH}\", { headers: { authorization: \"Bearer \" + stored } })\n .then(function (r) { return r.ok ? r.json() : null; })\n .then(function (d) { if (d && d.token) { save(d.token); location.reload(); } else { showForm(); } })\n .catch(showForm);\n } else {\n showForm();\n }\n</script>\n</body></html>`;\n}\n\n/**\n * Wrap window.fetch so same-origin requests carry the stored token as a Bearer\n * header, and so a 401 transparently swaps an old token for the current one\n * (via ${RENEW_PATH}) and retries once — seamless renewal after a rotation.\n */\nconst SHIM = `<script>(function(){\n var KEY = \"mh_token\";\n function save(t){\n try { localStorage.setItem(KEY, t); } catch (e) {}\n document.cookie = KEY + \"=\" + encodeURIComponent(t) + \"; path=/; SameSite=Strict; Max-Age=31536000\";\n }\n var orig = window.fetch.bind(window);\n window.fetch = function(input, init){\n init = init || {};\n var t = null; try { t = localStorage.getItem(KEY); } catch (e) {}\n var url;\n try { url = new URL((typeof input === \"string\" ? input : input.url), location.href); } catch (e) { url = null; }\n var same = url && url.origin === location.origin;\n if (same && t) {\n var h = new Headers(init.headers || (typeof input !== \"string\" && input.headers) || {});\n if (!h.has(\"authorization\")) h.set(\"authorization\", \"Bearer \" + t);\n init.headers = h;\n }\n return orig(input, init).then(function(res){\n if (res.status !== 401 || !same || !t || init.__mhRetried) return res;\n return orig(\"${RENEW_PATH}\", { headers: { authorization: \"Bearer \" + t } }).then(function(r){\n if (!r.ok) return res;\n return r.json().then(function(d){\n if (!d || !d.token) return res;\n save(d.token);\n var h2 = new Headers(init.headers || {});\n h2.set(\"authorization\", \"Bearer \" + d.token);\n init.headers = h2;\n init.__mhRetried = true;\n return orig(input, init);\n });\n }).catch(function(){ return res; });\n });\n };\n})();</script>`;\n\n/** Insert the fetch shim into an HTML document (right after <head>, else prepend). */\nexport function injectShim(html: string): string {\n const i = html.toLowerCase().indexOf(\"<head>\");\n if (i >= 0) return html.slice(0, i + 6) + SHIM + html.slice(i + 6);\n return SHIM + html;\n}\n\n/** For HTML responses when auth is active, inject the shim; otherwise pass through. */\nexport async function withShim(res: Response, cfg: AuthConfig): Promise<Response> {\n if (!authActive(cfg)) return res;\n const ct = res.headers.get(\"content-type\") ?? \"\";\n if (!ct.includes(\"text/html\")) return res;\n const html = injectShim(await res.text());\n const headers = new Headers(res.headers);\n return new Response(html, { status: res.status, headers });\n}\n\nexport function unauthorized(): Response {\n return Response.json({ error: \"unauthorized\" }, { status: 401 });\n}\n\nexport { HTML_HEADERS };\n"
|
|
107
|
+
"// Server-level configuration, persisted in the `meta` table (same pattern as\n// getNodeId / context.ts). These are local-machine settings — they never enter\n// the CRDT oplog and never sync to peers. `mh --server` reads them as defaults\n// (CLI flags still win); `mh config` and the WebUI settings page edit them.\n\nimport type { DbDriver } from \"./driver.ts\";\nimport { parseDuration } from \"./sync/token.ts\";\n\nconst K_HOST = \"cfg_host\";\nconst K_PORT = \"cfg_port\";\nconst K_SYNC_INTERVAL = \"cfg_sync_interval\";\nconst K_AUTO_SYNC = \"cfg_auto_sync\";\n\nexport interface ServerConfig {\n host: string;\n port: number;\n /** Auto-sync poll interval in ms; <= 0 disables the timer. */\n syncIntervalMs: number;\n autoSync: boolean;\n}\n\nexport const DEFAULT_CONFIG: ServerConfig = {\n host: \"127.0.0.1\",\n port: 7777,\n syncIntervalMs: parseDuration(process.env.METAHUB_SYNC_INTERVAL, 30_000),\n autoSync: true,\n};\n\nfunction getMeta(db: DbDriver, key: string): string | null {\n const row = db.query(\"SELECT value FROM meta WHERE key = ?\").get(key) as\n | { value: string }\n | null;\n return row ? row.value : null;\n}\n\nfunction setMeta(db: DbDriver, key: string, value: string): void {\n db.query(\n \"INSERT INTO meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value\",\n ).run(key, value);\n}\n\n/** Persisted server config, falling back to DEFAULT_CONFIG per field. */\nexport function getServerConfig(db: DbDriver): ServerConfig {\n const host = getMeta(db, K_HOST);\n const port = getMeta(db, K_PORT);\n const interval = getMeta(db, K_SYNC_INTERVAL);\n const auto = getMeta(db, K_AUTO_SYNC);\n return {\n host: host ?? DEFAULT_CONFIG.host,\n port: port != null ? Number(port) : DEFAULT_CONFIG.port,\n syncIntervalMs: interval != null ? Number(interval) : DEFAULT_CONFIG.syncIntervalMs,\n autoSync: auto != null ? auto === \"1\" : DEFAULT_CONFIG.autoSync,\n };\n}\n\n/** Persist a partial config update. Only provided fields are written. */\nexport function setServerConfig(db: DbDriver, partial: Partial<ServerConfig>): ServerConfig {\n if (partial.host != null) setMeta(db, K_HOST, partial.host);\n if (partial.port != null) setMeta(db, K_PORT, String(partial.port));\n if (partial.syncIntervalMs != null)\n setMeta(db, K_SYNC_INTERVAL, String(partial.syncIntervalMs));\n if (partial.autoSync != null) setMeta(db, K_AUTO_SYNC, partial.autoSync ? \"1\" : \"0\");\n return getServerConfig(db);\n}\n",
|
|
108
|
+
"import type { ZodType } from \"zod\";\nimport type { Database } from \"bun:sqlite\";\nimport { ingest, changesAfterSeq } from \"../crdt.ts\";\nimport {\n SyncRequestSchema,\n SyncResponseSchema,\n HealthResponseSchema,\n SYNC_PATH,\n HEALTH_PATH,\n type SyncRequest,\n} from \"./protocol.ts\";\nimport { sitesRoutes } from \"./sites-routes.ts\";\nimport { peersRoutes } from \"./peers-routes.ts\";\nimport { errorCode, type MhErrorCode } from \"../errors.ts\";\n\n/** Injected at server startup; handlers reuse the open DB connection. */\nexport interface RouteCtx {\n db: Database;\n node: string;\n}\n\n/** HTTP status per error code (see core/errors.ts). Uncategorized errors stay\n * 400, matching the historical catch-all behavior. */\nconst HTTP_STATUS: Record<MhErrorCode, number> = {\n invalid_input: 400,\n not_found: 404,\n ambiguous: 400,\n stale: 409,\n conflict: 409,\n auth: 401,\n network: 502,\n port_in_use: 500,\n};\n\n/** Turn a thrown handler error into a JSON response: `{error, code?}` with a\n * semantic status, so HTTP clients can dispatch on `code` like CLI users\n * dispatch on exit codes. */\nexport function errorResponse(e: unknown): Response {\n const message = e instanceof Error ? e.message : String(e);\n const code = errorCode(e);\n return Response.json(code ? { error: message, code } : { error: message }, {\n status: code ? HTTP_STATUS[code] : 400,\n });\n}\n\n/**\n * One entry per endpoint. `request`/`response` are Zod schemas that double as\n * the OpenAPI source (see ./openapi.ts). Add an endpoint here and it shows up\n * in /docs automatically — no generate step, no separate spec file.\n */\nexport interface Route {\n method: \"GET\" | \"POST\" | \"PATCH\" | \"DELETE\";\n path: string;\n summary: string;\n request?: ZodType;\n response: ZodType;\n handler: (req: Request, ctx: RouteCtx) => Promise<Response> | Response;\n}\n\nconst syncRoutes: Route[] = [\n {\n method: \"POST\",\n path: SYNC_PATH,\n summary: \"CRDT replication: push local changes and pull server changes\",\n request: SyncRequestSchema,\n response: SyncResponseSchema,\n async handler(req, { db, node }) {\n const body = (await req.json()) as SyncRequest;\n ingest(db, body.changes ?? []);\n const batch = changesAfterSeq(db, body.since ?? 0, {\n limit: body.limit,\n excludeDatasets: body.exclude_datasets,\n });\n return Response.json({ node_id: node, changes: batch.changes, cursor: batch.cursor });\n },\n },\n {\n method: \"GET\",\n path: HEALTH_PATH,\n summary: \"Health check\",\n response: HealthResponseSchema,\n handler(_req, { node }) {\n return Response.json({ ok: true, node });\n },\n },\n];\n\n// CRDT sync protocol routes + read-only site endpoints (sites are authored via\n// the `mh site` CLI) + peer pairing/management endpoints. The WebUI's data API\n// is not part of core: it is injected via startServer's `ui` option.\nexport const routes: Route[] = [...syncRoutes, ...sitesRoutes, ...peersRoutes];\n",
|
|
109
|
+
"import { z } from \"zod\";\nimport { MhError } from \"../errors.ts\";\nimport { errorResponse, type Route, type RouteCtx } from \"./routes.ts\";\nimport {\n listSites,\n listFiles,\n resolveSite,\n createSite,\n updateSite,\n deleteSite,\n putFile,\n deleteFile,\n} from \"../sites.ts\";\n\n// Site endpoints for the WebUI / served pages. Reads (list sites/files) and\n// authoring (create, rename, delete, upload) both wrap the same core functions\n// the `mh site` CLI uses, so changes ride the CRDT oplog and replicate over\n// /sync. All routes are gated by the server's master-token middleware.\n\nconst SiteSchema = z.object({\n id: z.string(),\n name: z.string(),\n title: z.string().nullable(),\n created_hlc: z.string(),\n});\nconst SiteWithCountSchema = SiteSchema.extend({ file_count: z.number() });\nconst SiteFileSchema = z.object({\n id: z.string(),\n site_id: z.string(),\n path: z.string(),\n content_type: z.string(),\n encoding: z.string(),\n});\n// Request bodies — used both for the OpenAPI doc and to .parse() at runtime so a\n// malformed body is a clean 400 rather than an `as`-cast lie. Semantic rules\n// (slug/path shape) live in core (normalizeSiteName/normalizeSitePath).\nconst CreateSiteBody = z.object({ name: z.string(), title: z.string().optional() });\nconst UpdateSiteBody = z.object({ name: z.string().optional(), title: z.string().optional() });\n\nfunction need(req: Request, key: string): string {\n const v = new URL(req.url).searchParams.get(key);\n if (!v) throw new MhError(\"invalid_input\", `missing query param: ${key}`);\n return v;\n}\n\nfunction handle(fn: (req: Request, ctx: RouteCtx) => unknown): Route[\"handler\"] {\n return async (req, ctx) => {\n try {\n return Response.json((await fn(req, ctx)) ?? null);\n } catch (e) {\n return errorResponse(e);\n }\n };\n}\n\nexport const sitesRoutes: Route[] = [\n {\n method: \"GET\",\n path: \"/api/sites\",\n summary: \"List published sites (with file counts)\",\n response: z.array(SiteWithCountSchema),\n handler: handle((_req, { db }) =>\n listSites(db).map((s) => ({ ...s, file_count: listFiles(db, s.id).length })),\n ),\n },\n {\n method: \"GET\",\n path: \"/api/site/files\",\n summary: \"List a site's files (manifest). Query: ?site=<id|name>\",\n response: z.array(SiteFileSchema),\n handler: handle((req, { db }) => listFiles(db, resolveSite(db, need(req, \"site\")).id)),\n },\n {\n method: \"POST\",\n path: \"/api/sites\",\n summary: \"Create a site\",\n request: CreateSiteBody,\n response: SiteSchema,\n handler: handle(async (req, { db }) => {\n const body = CreateSiteBody.parse(await req.json());\n return createSite(db, body);\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/site\",\n summary: \"Rename a site or change its title. Query: ?id=<id>\",\n request: UpdateSiteBody,\n response: SiteSchema,\n handler: handle(async (req, { db }) => {\n const body = UpdateSiteBody.parse(await req.json());\n return updateSite(db, need(req, \"id\"), body);\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/site\",\n summary: \"Delete a site and its files. Query: ?id=<id>\",\n response: z.object({ ok: z.boolean() }),\n handler: handle((req, { db }) => ({ ok: deleteSite(db, need(req, \"id\")) })),\n },\n {\n method: \"POST\",\n path: \"/api/site/file\",\n summary: \"Upload/replace a file. Query: ?site=<id|name>&path=<path>; body is raw bytes\",\n response: SiteFileSchema,\n handler: handle(async (req, { db }) => {\n const site = resolveSite(db, need(req, \"site\"));\n // Fall back to path-based inference when the browser sends no/generic type.\n const ct = req.headers.get(\"content-type\");\n const file = await putFile(db, site.id, need(req, \"path\"), {\n data: await req.arrayBuffer(),\n contentType: ct && ct !== \"application/octet-stream\" ? ct : undefined,\n });\n const { content: _content, ...summary } = file;\n return summary;\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/site/file\",\n summary: \"Delete a file. Query: ?site=<id|name>&path=<path>\",\n response: z.object({ ok: z.boolean() }),\n handler: handle((req, { db }) => ({\n ok: deleteFile(db, resolveSite(db, need(req, \"site\")).id, need(req, \"path\")),\n })),\n },\n];\n",
|
|
110
|
+
"import { z } from \"zod\";\nimport { MhError } from \"../errors.ts\";\nimport { errorResponse, type Route, type RouteCtx } from \"./routes.ts\";\nimport {\n PairRequestSchema,\n PairResponseSchema,\n PAIR_PATH,\n type PairRequest,\n} from \"./protocol.ts\";\nimport {\n generatePairingCode,\n handlePairRequest,\n performPairing,\n listGrants,\n revokeGrant,\n} from \"./pairing.ts\";\nimport {\n listPeers,\n removePeer,\n setPeerEnabled,\n setPeerLabel,\n syncPeer,\n} from \"./peers.ts\";\n\n// Peer pairing + management API. Mirrors the `mh config peer` CLI; the WebUI\n// settings page calls these. POST /api/pair is the cross-device handshake\n// endpoint (exempt from the master-token gate in server.ts — it authenticates\n// via the one-time code inside handlePairRequest). Everything else is gated by\n// the master token like the rest of /api/*.\n\n// --- schemas (drive /docs; intentionally loose) -----------------------------\n\nconst PeerSchema = z.object({\n url: z.string(),\n pull_cursor: z.number(),\n push_cursor: z.number(),\n token: z.string().nullable(),\n label: z.string().nullable(),\n node_id: z.string().nullable(),\n enabled: z.number(),\n last_sync_at: z.number().nullable(),\n last_status: z.string().nullable(),\n last_error: z.string().nullable(),\n});\nconst PairingCodeSchema = z.object({ code: z.string(), exp: z.number() });\nconst AddPeerReq = z.object({\n url: z.string(),\n code: z.string(),\n self_url: z.string().optional(),\n});\nconst AddPeerRes = z.object({ node_id: z.string(), url: z.string() });\nconst UpdatePeerReq = z.object({\n enabled: z.boolean().optional(),\n label: z.string().optional(),\n});\nconst PeerSyncRes = z.object({\n url: z.string(),\n ok: z.boolean(),\n pushed: z.number().optional(),\n pulled: z.number().optional(),\n error: z.string().optional(),\n});\nconst GrantSchema = z.object({\n token: z.string(),\n peer_url: z.string().nullable(),\n node_id: z.string().nullable(),\n created_at: z.number().nullable(),\n});\nconst RevokeRes = z.object({ revoked: z.number() });\nconst OkSchema = z.object({ ok: z.boolean() });\n\n// --- helpers ----------------------------------------------------------------\n\nfunction need(req: Request, key: string): string {\n const v = new URL(req.url).searchParams.get(key);\n if (!v) throw new MhError(\"invalid_input\", `missing query param: ${key}`);\n return v;\n}\n\nfunction handle(\n fn: (req: Request, ctx: RouteCtx) => unknown | Promise<unknown>,\n): Route[\"handler\"] {\n return async (req, ctx) => {\n try {\n const out = await fn(req, ctx);\n if (out instanceof Response) return out;\n return Response.json(out ?? null);\n } catch (e) {\n return errorResponse(e);\n }\n };\n}\n\n// --- routes -----------------------------------------------------------------\n\nexport const peersRoutes: Route[] = [\n {\n method: \"POST\",\n path: PAIR_PATH,\n summary: \"Pairing handshake: redeem a one-time code and exchange credentials\",\n request: PairRequestSchema,\n response: PairResponseSchema,\n handler: handle(async (req, { db, node }) => {\n const body = (await req.json()) as PairRequest;\n return handlePairRequest(db, node, body);\n }),\n },\n {\n method: \"POST\",\n path: \"/api/pair/new\",\n summary: \"Mint a one-time pairing code for another device to redeem\",\n response: PairingCodeSchema,\n handler: handle((_req, { db }) => generatePairingCode(db)),\n },\n {\n method: \"POST\",\n path: \"/api/peers/pair\",\n summary: \"Pair this server with a remote one using its one-time code\",\n request: AddPeerReq,\n response: AddPeerRes,\n handler: handle(async (req, { db, node }) => {\n const body = (await req.json()) as z.infer<typeof AddPeerReq>;\n return performPairing(db, node, body.url, body.code, body.self_url);\n }),\n },\n {\n method: \"GET\",\n path: \"/api/peers\",\n summary: \"List configured sync peers with status\",\n response: z.array(PeerSchema),\n handler: handle((_req, { db }) => listPeers(db)),\n },\n {\n method: \"PATCH\",\n path: \"/api/peer\",\n summary: \"Update a peer (enable/disable or label). Query: ?url=<url>\",\n request: UpdatePeerReq,\n response: OkSchema,\n handler: handle(async (req, { db }) => {\n const url = need(req, \"url\");\n const body = (await req.json()) as z.infer<typeof UpdatePeerReq>;\n if (body.enabled != null) setPeerEnabled(db, url, body.enabled);\n if (body.label != null) setPeerLabel(db, url, body.label);\n return { ok: true };\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/peer\",\n summary: \"Remove a sync peer. Query: ?url=<url>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: removePeer(db, need(req, \"url\")) })),\n },\n {\n method: \"POST\",\n path: \"/api/peer/sync\",\n summary: \"Manually sync once with a peer. Query: ?url=<url>\",\n response: PeerSyncRes,\n handler: handle((req, { db }) => syncPeer(db, need(req, \"url\"))),\n },\n {\n method: \"GET\",\n path: \"/api/grants\",\n summary: \"List credentials this server issued and accepts on /sync (inbound)\",\n response: z.array(GrantSchema),\n handler: handle((_req, { db }) => listGrants(db)),\n },\n {\n method: \"DELETE\",\n path: \"/api/grant\",\n summary: \"Revoke an issued credential by token or prefix. Query: ?token=<token>\",\n response: RevokeRes,\n handler: handle((req, { db }) => ({ revoked: revokeGrant(db, need(req, \"token\")) })),\n },\n];\n",
|
|
111
|
+
"// Device pairing: bootstrap a mutual trust relationship between two nodes using\n// a short-lived one-time code, then exchange durable per-peer credentials\n// (\"certificates\"). The master server token is never shared.\n//\n// A: generatePairingCode() -> CODE (printed in A's terminal / UI)\n// B: performPairing(A-url, CODE) -> calls POST {A-url}/api/pair\n// A: handlePairRequest(...) -> redeems CODE, mints+returns a grant\n//\n// After the handshake each side holds a grant it ISSUED (stored in peer_grants,\n// accepted on /sync) and a grant it RECEIVED (stored in peers.token, presented\n// when syncing out). See acceptsSyncToken in ./auth.ts and syncWithPeer.\n\nimport type { Database } from \"bun:sqlite\";\nimport { randomSuffix } from \"../ids.ts\";\nimport { parseDuration } from \"./token.ts\";\nimport { addPeer } from \"./peers.ts\";\nimport { PAIR_PATH, type PairRequest, type PairResponse } from \"./protocol.ts\";\nimport { MhError } from \"../errors.ts\";\n\n/** Default one-time pairing-code lifetime (override with METAHUB_PAIR_TTL). */\nexport const DEFAULT_PAIR_TTL_MS = parseDuration(process.env.METAHUB_PAIR_TTL, 10 * 60_000);\n\nexport interface PairingCode {\n code: string;\n exp: number;\n}\n\n/** Mint a one-time pairing code, stored until redeemed or expired. */\nexport function generatePairingCode(db: Database, ttlMs: number = DEFAULT_PAIR_TTL_MS): PairingCode {\n const now = Date.now();\n // Opportunistic housekeeping: drop spent/expired codes so the table can't grow.\n db.query(\"DELETE FROM pairing_codes WHERE used = 1 OR exp < ?\").run(now);\n const code = randomSuffix(12); // ~62 bits; brute-forcing within the TTL is infeasible\n const exp = now + ttlMs;\n db.query(\n \"INSERT INTO pairing_codes (code, exp, used, created_at) VALUES (?, ?, 0, ?)\",\n ).run(code, exp, now);\n return { code, exp };\n}\n\n/**\n * Validate and consume a pairing code. The check-and-consume is a single atomic\n * UPDATE (guarded on used=0 AND not-expired) so two concurrent redemptions of\n * the same code can't both succeed. Returns false if unknown/used/expired.\n */\nexport function redeemPairingCode(db: Database, code: string): boolean {\n return (\n db\n .query(\"UPDATE pairing_codes SET used = 1 WHERE code = ? AND used = 0 AND exp >= ?\")\n .run(code, Date.now()).changes > 0\n );\n}\n\n/** Mint a durable credential we issue to a peer and will accept on /sync. */\nexport function mintGrant(db: Database, peerUrl: string | null, nodeId: string | null): string {\n const token = randomSuffix(32);\n db.query(\n \"INSERT INTO peer_grants (token, peer_url, node_id, created_at) VALUES (?, ?, ?, ?)\",\n ).run(token, peerUrl, nodeId, Date.now());\n return token;\n}\n\n/** Whether a presented token matches a credential we issued during pairing. */\nexport function isAcceptedGrant(db: Database, token: string): boolean {\n return db.query(\"SELECT 1 FROM peer_grants WHERE token = ?\").get(token) != null;\n}\n\nexport interface GrantRow {\n token: string;\n peer_url: string | null;\n node_id: string | null;\n created_at: number | null;\n}\n\n/** All credentials we have issued and still accept on /sync (inbound access). */\nexport function listGrants(db: Database): GrantRow[] {\n return db\n .query(\"SELECT token, peer_url, node_id, created_at FROM peer_grants ORDER BY created_at DESC\")\n .all() as GrantRow[];\n}\n\n/**\n * Revoke issued credentials by exact token or a unique prefix (handy for the\n * grants minted by one-directional pairing, which removePeer can't reach since\n * they have a null peer_url). Returns the number of grants revoked.\n */\nexport function revokeGrant(db: Database, tokenOrPrefix: string): number {\n return db\n .query(\"DELETE FROM peer_grants WHERE token = ? OR token LIKE ? || '%'\")\n .run(tokenOrPrefix, tokenOrPrefix).changes;\n}\n\n/**\n * Inbound side (device A): redeem the caller's one-time code, mint a grant for\n * the caller, register the caller back as a peer if it gave a reachable URL.\n */\nexport function handlePairRequest(db: Database, node: string, body: PairRequest): PairResponse {\n if (!redeemPairingCode(db, body.code)) {\n throw new MhError(\"auth\", \"invalid or expired pairing code\");\n }\n // The caller's grant lets us sync OUT to it; store it as our peer token.\n if (body.self_url) {\n addPeer(db, { url: body.self_url, token: body.grant, node_id: body.node_id });\n }\n // Mint a grant the caller will present when syncing IN to us.\n const grant = mintGrant(db, body.self_url ?? null, body.node_id);\n return { node_id: node, grant };\n}\n\nexport interface PairOutcome {\n /** The paired peer's node id. */\n node_id: string;\n url: string;\n}\n\n/**\n * Outbound side (device B): mint a grant for the remote, post the handshake to\n * its /api/pair, then register it as a peer with the grant it returned.\n */\nexport async function performPairing(\n db: Database,\n node: string,\n remoteUrl: string,\n code: string,\n selfUrl?: string,\n): Promise<PairOutcome> {\n // Our grant lets the remote sync OUT to us; we store it so we accept it.\n const ourGrant = mintGrant(db, remoteUrl, null);\n const reqBody: PairRequest = { code, node_id: node, grant: ourGrant, self_url: selfUrl };\n\n const res = await fetch(new URL(PAIR_PATH, remoteUrl), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(reqBody),\n });\n if (!res.ok)\n throw new MhError(\n res.status === 401 || res.status === 403 ? \"auth\" : \"network\",\n `pairing failed: ${res.status} ${await res.text()}`,\n );\n\n const data = (await res.json()) as PairResponse;\n // The remote's grant lets us sync OUT to it; store it as our peer token.\n addPeer(db, { url: remoteUrl, token: data.grant, node_id: data.node_id });\n return { node_id: data.node_id, url: remoteUrl };\n}\n",
|
|
112
|
+
"// Outbound peer management: the devices this node syncs *to*. Each row carries\n// the durable credential the remote issued to us during pairing (see pairing.ts)\n// plus replication cursors and last-sync status. `syncAllPeers` is what the\n// server's auto-sync timer calls each tick.\n\nimport type { DbDriver } from \"../driver.ts\";\nimport { syncWithPeer, type SyncResult } from \"./client.ts\";\n\nexport interface PeerRow {\n url: string;\n pull_cursor: number;\n push_cursor: number;\n token: string | null;\n label: string | null;\n node_id: string | null;\n enabled: number;\n last_sync_at: number | null;\n last_status: string | null;\n last_error: string | null;\n}\n\nexport function listPeers(db: DbDriver): PeerRow[] {\n return db\n .query(\n \"SELECT url, pull_cursor, push_cursor, token, label, node_id, enabled, last_sync_at, last_status, last_error FROM peers ORDER BY url\",\n )\n .all() as PeerRow[];\n}\n\nexport function getPeer(db: DbDriver, url: string): PeerRow | null {\n return (db\n .query(\n \"SELECT url, pull_cursor, push_cursor, token, label, node_id, enabled, last_sync_at, last_status, last_error FROM peers WHERE url = ?\",\n )\n .get(url) as PeerRow | null) ?? null;\n}\n\nexport interface AddPeerInput {\n url: string;\n token?: string | null;\n label?: string | null;\n node_id?: string | null;\n}\n\n/** Upsert a peer, preserving replication cursors on conflict. */\nexport function addPeer(db: DbDriver, input: AddPeerInput): void {\n db.query(\n `INSERT INTO peers (url, token, label, node_id, enabled, pull_cursor, push_cursor)\n VALUES (?, ?, ?, ?, 1, 0, 0)\n ON CONFLICT(url) DO UPDATE SET\n token = coalesce(excluded.token, peers.token),\n label = coalesce(excluded.label, peers.label),\n node_id = coalesce(excluded.node_id, peers.node_id),\n enabled = 1`,\n ).run(input.url, input.token ?? null, input.label ?? null, input.node_id ?? null);\n}\n\n/**\n * Remove a peer AND revoke the credential we issued to it during pairing, so\n * disconnecting is mutual: we stop syncing out to it (peers row) and it can no\n * longer sync in to us (peer_grants row, keyed by peer_url). Grants minted for a\n * peer that never sent a self_url have a null peer_url and can't be revoked here.\n */\nexport function removePeer(db: DbDriver, url: string): boolean {\n const tx = db.transaction(() => {\n const changed = db.query(\"DELETE FROM peers WHERE url = ?\").run(url).changes > 0;\n db.query(\"DELETE FROM peer_grants WHERE peer_url = ?\").run(url);\n return changed;\n });\n return tx();\n}\n\nexport function setPeerEnabled(db: DbDriver, url: string, enabled: boolean): boolean {\n return (\n db.query(\"UPDATE peers SET enabled = ? WHERE url = ?\").run(enabled ? 1 : 0, url).changes > 0\n );\n}\n\nexport function setPeerLabel(db: DbDriver, url: string, label: string): boolean {\n return db.query(\"UPDATE peers SET label = ? WHERE url = ?\").run(label, url).changes > 0;\n}\n\nexport function updatePeerStatus(\n db: DbDriver,\n url: string,\n status: string,\n error?: string | null,\n): void {\n db.query(\n \"UPDATE peers SET last_sync_at = ?, last_status = ?, last_error = ? WHERE url = ?\",\n ).run(Date.now(), status, error ?? null, url);\n}\n\nexport interface PeerSyncOutcome {\n url: string;\n ok: boolean;\n pushed?: number;\n pulled?: number;\n error?: string;\n}\n\n/** Sync once with a single peer, recording status. Errors are captured, not thrown. */\nexport async function syncPeer(db: DbDriver, url: string): Promise<PeerSyncOutcome> {\n try {\n const result: SyncResult = await syncWithPeer(db, url);\n updatePeerStatus(db, url, \"ok\", null);\n return { url, ok: true, pushed: result.pushed, pulled: result.pulled };\n } catch (e) {\n const error = (e as Error).message;\n updatePeerStatus(db, url, \"error\", error);\n return { url, ok: false, error };\n }\n}\n\n/** Sync once with every enabled peer. Used by the auto-sync timer. */\nexport async function syncAllPeers(db: DbDriver): Promise<PeerSyncOutcome[]> {\n const peers = listPeers(db).filter((p) => p.enabled);\n const out: PeerSyncOutcome[] = [];\n for (const p of peers) out.push(await syncPeer(db, p.url));\n return out;\n}\n",
|
|
113
|
+
"import { z } from \"zod\";\nimport { routes as coreRoutes, type Route } from \"./routes.ts\";\n\n/**\n * Build an OpenAPI 3.1 document by walking a route registry. Each route's\n * Zod schemas are converted to JSON Schema (draft 2020-12, which 3.1 accepts).\n * Adding a route to ./routes.ts is enough — this picks it up with no codegen.\n * The server passes its full registry (core + injected UI routes) so /docs\n * always matches what is actually served.\n */\nexport function buildOpenApi(version: string, routes: readonly Route[] = coreRoutes) {\n const paths: Record<string, Record<string, unknown>> = {};\n\n for (const route of routes) {\n const op: Record<string, unknown> = {\n summary: route.summary,\n responses: {\n \"200\": {\n description: \"OK\",\n content: { \"application/json\": { schema: z.toJSONSchema(route.response) } },\n },\n },\n };\n if (route.request) {\n op.requestBody = {\n required: true,\n content: { \"application/json\": { schema: z.toJSONSchema(route.request) } },\n };\n }\n (paths[route.path] ??= {})[route.method.toLowerCase()] = op;\n }\n\n return {\n openapi: \"3.1.0\",\n info: { title: \"Metahub Sync API\", version },\n paths,\n };\n}\n",
|
|
114
|
+
"// Token gate for the server. In --debug mode auth is disabled entirely. Otherwise\n// a single token guards every request. A token may arrive three ways so both\n// programmatic clients and browsers work:\n// - Authorization: Bearer <token> (API clients, and the injected fetch shim)\n// - Cookie: mh_token=<token> (browser top-level navigations)\n// - ?token=<token> (links / quick curl testing)\n// Browsers without a token get an unlock page that stores the password to\n// localStorage + a cookie and reloads; served HTML then gets a fetch shim that\n// re-attaches the token as a Bearer header on same-origin API calls.\n\nimport type { Database } from \"bun:sqlite\";\nimport { loadOrRotate } from \"./token.ts\";\nimport { isAcceptedGrant } from \"./pairing.ts\";\nimport { RENEW_PATH } from \"./protocol.ts\";\n\n// Three modes:\n// debug — auth off entirely.\n// staticToken — fixed token from --token/env; not persisted, never expires.\n// db (managed) — persistent, rotating token in ~/.metahub (see ./token.ts).\nexport interface AuthConfig {\n debug: boolean;\n staticToken: string | null;\n db: Database | null;\n ttlMs: number;\n graceMs: number;\n}\n\nconst COOKIE = \"mh_token\";\n\nfunction cookieToken(req: Request): string | null {\n const header = req.headers.get(\"cookie\");\n if (!header) return null;\n for (const part of header.split(\";\")) {\n const [k, ...v] = part.trim().split(\"=\");\n if (k === COOKIE) return decodeURIComponent(v.join(\"=\"));\n }\n return null;\n}\n\nexport function extractToken(req: Request, url: URL): string | null {\n const auth = req.headers.get(\"authorization\");\n if (auth?.startsWith(\"Bearer \")) return auth.slice(7);\n return cookieToken(req) ?? url.searchParams.get(\"token\");\n}\n\n/** Whether auth is on at all (so the gate runs and the fetch shim is injected). */\nexport function authActive(cfg: AuthConfig): boolean {\n return !cfg.debug && (cfg.staticToken != null || cfg.db != null);\n}\n\n/** The currently-valid token and its expiry, or null when auth is off. */\nexport function activeToken(cfg: AuthConfig): { token: string; exp: number } | null {\n if (cfg.debug) return null;\n if (cfg.staticToken != null) return { token: cfg.staticToken, exp: Infinity };\n if (cfg.db) {\n const s = loadOrRotate(cfg.db, cfg.ttlMs, cfg.graceMs);\n return { token: s.token, exp: s.exp };\n }\n return null;\n}\n\nexport function hasValidToken(req: Request, url: URL, cfg: AuthConfig): boolean {\n const cur = activeToken(cfg);\n if (!cur) return true;\n return extractToken(req, url) === cur.token;\n}\n\n/**\n * Gate for /sync: accept the master token OR any durable per-peer grant issued\n * during pairing (see ./pairing.ts). Returns true when auth is off (--debug).\n * `db` is needed to look up grants even in staticToken mode where cfg.db is null.\n */\nexport function acceptsSyncToken(req: Request, url: URL, cfg: AuthConfig, db: Database): boolean {\n if (!authActive(cfg)) return true;\n const presented = extractToken(req, url);\n if (!presented) return false;\n const cur = activeToken(cfg);\n if (cur && presented === cur.token) return true;\n return isAcceptedGrant(db, presented);\n}\n\n/**\n * Token exchange: a holder of the current token (or the in-grace previous token)\n * gets the current token back. Managed mode only — returns null otherwise.\n */\nexport function renewToken(\n req: Request,\n url: URL,\n cfg: AuthConfig,\n): { token: string; exp: number } | null {\n if (cfg.debug || cfg.staticToken != null || !cfg.db) return null;\n const s = loadOrRotate(cfg.db, cfg.ttlMs, cfg.graceMs);\n const presented = extractToken(req, url);\n if (!presented) return null;\n if (presented === s.token) return { token: s.token, exp: s.exp };\n if (s.prev && presented === s.prev && Date.now() < s.prevExp) {\n return { token: s.token, exp: s.exp };\n }\n return null;\n}\n\n/** A browser navigation (so we can answer with an unlock page instead of a 401). */\nexport function wantsHtml(req: Request): boolean {\n return req.method === \"GET\" && (req.headers.get(\"accept\") ?? \"\").includes(\"text/html\");\n}\n\nconst HTML_HEADERS = { \"content-type\": \"text/html; charset=utf-8\" };\n\n/** Self-contained password prompt: stores token to localStorage + cookie, reloads. */\nexport function unlockPage(): string {\n return `<!doctype html><html lang=\"en\"><head>\n<meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<title>Unlock</title>\n<style>\n body{font:14px/1.5 -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif;\n display:flex;min-height:100vh;margin:0;align-items:center;justify-content:center;\n background:#0d1117;color:#e6edf3}\n form{background:#161b22;border:1px solid #30363d;border-radius:10px;padding:28px;width:300px}\n h1{font-size:16px;margin:0 0 14px}\n input{width:100%;box-sizing:border-box;padding:8px;border-radius:6px;border:1px solid #30363d;\n background:#0d1117;color:inherit;margin-bottom:12px}\n button{width:100%;padding:8px;border:0;border-radius:6px;background:#238636;color:#fff;cursor:pointer}\n .err{color:#f85149;margin:0 0 12px;font-size:13px}\n</style></head><body>\n<form id=\"f\" style=\"display:none\">\n <h1>🔒 This server requires a token</h1>\n <p class=\"err\" id=\"e\" style=\"display:none\">Token rejected — try again.</p>\n <input id=\"t\" type=\"password\" placeholder=\"Token\" autocomplete=\"current-password\">\n <button type=\"submit\">Unlock</button>\n</form>\n<script>\n var KEY = \"mh_token\";\n function save(t) {\n localStorage.setItem(KEY, t);\n document.cookie = \"${COOKIE}=\" + encodeURIComponent(t) + \"; path=/; SameSite=Strict; Max-Age=31536000\";\n }\n function showForm() {\n document.getElementById(\"f\").style.display = \"block\";\n // A leftover token means an attempt (or silent renewal) failed the gate.\n if (localStorage.getItem(KEY)) document.getElementById(\"e\").style.display = \"block\";\n document.getElementById(\"t\").focus();\n }\n document.getElementById(\"f\").addEventListener(\"submit\", function (ev) {\n ev.preventDefault();\n save(document.getElementById(\"t\").value);\n location.reload();\n });\n // Seamless renewal for top-level navigation: if we hold a token, try swapping\n // it for the current one before prompting. Covers the case where the token\n // rotated while this browser held the (in-grace) previous one.\n var stored = localStorage.getItem(KEY);\n if (stored) {\n fetch(\"${RENEW_PATH}\", { headers: { authorization: \"Bearer \" + stored } })\n .then(function (r) { return r.ok ? r.json() : null; })\n .then(function (d) { if (d && d.token) { save(d.token); location.reload(); } else { showForm(); } })\n .catch(showForm);\n } else {\n showForm();\n }\n</script>\n</body></html>`;\n}\n\n/**\n * The injected page runtime (built from src/webui/runtime.ts, served at\n * /mh-runtime.js). Carries what the old inline fetch shim did — same-origin\n * Bearer attach + transparent 401 renewal — plus the offline machinery:\n * service-worker registration and the local-replica RPC bridge that lets\n * hosted site pages read/write hub data with no network. Loaded synchronously\n * (classic script, head-first) so fetch is wrapped before page code runs.\n */\nconst RUNTIME_TAG = `<script src=\"/mh-runtime.js\"></script>`;\n\n/** Insert the runtime into an HTML document (right after <head>, else prepend). */\nexport function injectShim(html: string): string {\n const i = html.toLowerCase().indexOf(\"<head>\");\n if (i >= 0) return html.slice(0, i + 6) + RUNTIME_TAG + html.slice(i + 6);\n return RUNTIME_TAG + html;\n}\n\n/** Inject the page runtime into HTML responses. Unconditional (unlike the old\n * token-only shim): the offline bridge matters even in --debug mode where\n * auth is off — the token half simply no-ops without a stored token. */\nexport async function withShim(res: Response, _cfg: AuthConfig): Promise<Response> {\n const ct = res.headers.get(\"content-type\") ?? \"\";\n if (!ct.includes(\"text/html\")) return res;\n const html = injectShim(await res.text());\n const headers = new Headers(res.headers);\n return new Response(html, { status: res.status, headers });\n}\n\nexport function unauthorized(): Response {\n return Response.json({ error: \"unauthorized\" }, { status: 401 });\n}\n\nexport { HTML_HEADERS };\n",
|
|
115
|
+
"import { fileURLToPath } from \"node:url\";\nimport { readdirSync, statSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\n// Inlined as a string at build time (Bun text loader), so packaged builds and\n// compiled binaries carry the stylesheet with no extra asset file. In dev the\n// file is re-read from disk per request instead — see getCss().\nimport APP_CSS from \"../styles.css\" with { type: \"text\" };\nimport { ICON_192, ICON_512, ICON_180 } from \"./icons.ts\";\n\n// Serves the browser WebUI at `/`. Core never imports this module: it is wired\n// into the server through startServer's `ui` option (see core/sync/server.ts),\n// keeping presentation code out of the core layer and off the CLI startup path.\n// The Preact bundle itself is built or loaded lazily on the first request.\n\n/** True when running from the source tree (bun dev / bun test) rather than a\n * packaged dist build or a compiled binary. Switches asset serving to\n * rebuild-on-change so a browser refresh is enough to see edits. */\nconst RUNNING_FROM_SOURCE = import.meta.url.includes(\"/src/webui/\");\n\n/** The HTML shell. The Preact app and stylesheet are delivered separately as\n * /webui.js and /webui.css (both served below, never cached). */\nconst HTML = `<!doctype html>\n<html lang=\"zh\">\n<head>\n<meta charset=\"utf-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\" />\n<!-- Mobile browser chrome (status/address bar) tints to theme-color; app.tsx\n keeps #theme-color-meta in sync with the active theme + visible surface. -->\n<meta name=\"theme-color\" id=\"theme-color-meta\" content=\"#ffffff\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"default\" />\n<title>Metahub</title>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<!-- Load web fonts without blocking first paint: media=\"print\" keeps the\n stylesheet non-render-blocking, then onload flips it to \"all\". The page\n paints instantly with the system-font fallbacks baked into --ui/--mono and\n swaps to the web fonts when they arrive (or stays on system fonts offline).\n This is what kept the desktop cold-start white for seconds on slow networks. -->\n<link rel=\"stylesheet\" media=\"print\" onload=\"this.media='all'\" href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap\">\n<noscript><link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap\"></noscript>\n<!-- FOUC guard: resolve the stored choice (system → OS preference) to an\n explicit data-resolved before first paint. CSS keys off data-resolved\n alone, so the dark palette exists exactly once — see styles.css. Dark also\n pre-tints the status bar (hex mirrors --bg) so the first frame isn't white. -->\n<script>try{var t=localStorage.getItem('mh-theme'),d=t==='dark'||(t!=='light'&&matchMedia('(prefers-color-scheme: dark)').matches);document.documentElement.dataset.resolved=d?'dark':'light';if(d)document.getElementById('theme-color-meta').content='#1a1a1c'}catch(e){}</script>\n<link rel=\"manifest\" href=\"/manifest.webmanifest\">\n<link rel=\"apple-touch-icon\" href=\"/icons/icon-180.png\">\n<link rel=\"stylesheet\" href=\"/webui.css\">\n</head>\n<body>\n<div id=\"app\"></div>\n<script type=\"module\" src=\"/webui.js\"></script>\n</body>\n</html>`;\n\n/** Bundles injected by `bun build --compile` binaries (e.g. the desktop\n * sidecar), where neither a sibling dist/ nor the source tree exists at\n * runtime — embedded at build time and handed in here. */\nconst injected: Record<string, string | null> = {\n js: null,\n sw: null,\n dbWorker: null,\n runtime: null,\n sdk: null,\n};\nlet injectedWasm: ArrayBuffer | null = null;\n\nexport function setWebuiBundle(bundle: {\n js: string;\n sw: string;\n dbWorker: string;\n runtime: string;\n sdk: string;\n wasm: Uint8Array;\n}): void {\n injected.js = bundle.js;\n injected.sw = bundle.sw;\n injected.dbWorker = bundle.dbWorker;\n injected.runtime = bundle.runtime;\n injected.sdk = bundle.sdk;\n // Normalize to a whole ArrayBuffer (what Response accepts under every lib).\n const w = bundle.wasm;\n injectedWasm =\n w.byteOffset === 0 && w.byteLength === w.buffer.byteLength\n ? (w.buffer as ArrayBuffer)\n : (w.slice().buffer as ArrayBuffer);\n}\n\n/** Newest mtime across the browser-bundle sources (src/webui/**.ts[x]).\n * ./server is skipped — server-side code never enters the browser bundle. */\nfunction newestSourceMtime(dir: string): number {\n let newest = 0;\n for (const e of readdirSync(dir, { withFileTypes: true })) {\n if (e.name === \"server\" || e.name.startsWith(\".\")) continue;\n const p = join(dir, e.name);\n if (e.isDirectory()) newest = Math.max(newest, newestSourceMtime(p));\n else if (/\\.tsx?$/.test(e.name)) newest = Math.max(newest, statSync(p).mtimeMs);\n }\n return newest;\n}\n\n/**\n * One resolver per browser bundle, all with the same three-way strategy:\n * embedded (compiled binary) > rebuild-on-change from source (dev: any newer\n * source file triggers a rebuild, so a refresh is enough) > prebuilt dist\n * sibling (packaged builds), process-cached.\n */\nfunction bundleGetter(opts: {\n key: keyof typeof injected;\n /** Dev entrypoint, relative to this file. */\n entry: string;\n /** Prebuilt artifact name in dist/ (sibling of the compiled assets.js). */\n dist: string;\n /** Extra source dirs (relative to repo src/) the dev mtime scan must cover. */\n extraDirs?: string[];\n}): () => Promise<string> {\n let cached: string | null = null;\n let cachedMtime = 0;\n return async () => {\n const fromBinary = injected[opts.key];\n if (fromBinary != null) return fromBinary;\n\n if (RUNNING_FROM_SOURCE) {\n const srcDir = fileURLToPath(new URL(\"..\", import.meta.url));\n let newest = newestSourceMtime(srcDir);\n for (const extra of opts.extraDirs ?? []) {\n newest = Math.max(newest, newestSourceMtime(fileURLToPath(new URL(extra, import.meta.url))));\n }\n if (cached == null || newest > cachedMtime) {\n const entry = fileURLToPath(new URL(opts.entry, import.meta.url));\n const res = await Bun.build({ entrypoints: [entry], target: \"browser\" });\n if (!res.success) throw new AggregateError(res.logs, `${opts.dist} build failed`);\n cached = await res.outputs[0]!.text();\n cachedMtime = newest;\n }\n return cached;\n }\n\n if (cached == null) {\n const prebuilt = Bun.file(fileURLToPath(new URL(`./${opts.dist}`, import.meta.url)));\n if (!(await prebuilt.exists())) {\n throw new Error(`${opts.dist} missing: run \\`bun run build\\``);\n }\n cached = await prebuilt.text();\n }\n return cached;\n };\n}\n\nconst getJs = bundleGetter({ key: \"js\", entry: \"../app.tsx\", dist: \"webui.js\" });\nconst getSwRaw = bundleGetter({ key: \"sw\", entry: \"../sw.ts\", dist: \"sw.js\" });\nconst getDbWorker = bundleGetter({ key: \"dbWorker\", entry: \"../data/db-worker.ts\", dist: \"db-worker.js\" });\nconst getRuntime = bundleGetter({ key: \"runtime\", entry: \"../runtime.ts\", dist: \"mh-runtime.js\" });\nconst getSdk = bundleGetter({ key: \"sdk\", entry: \"../../sdk/client.ts\", dist: \"metahub-sdk.js\", extraDirs: [\"../../sdk\"] });\n\n/** The stylesheet: read from disk per request in dev (so CSS edits land on the\n * next refresh), the build-time inlined copy otherwise. */\nasync function getCss(): Promise<string> {\n if (RUNNING_FROM_SOURCE) {\n return Bun.file(fileURLToPath(new URL(\"../styles.css\", import.meta.url))).text();\n }\n return APP_CSS;\n}\n\n/** /sw.js with its cache version stamped in: a hash of the current js+css, so\n * any bundle change byte-diffs the worker (the browser's update trigger) and\n * stale shell caches are dropped on activation. */\nasync function getSw(): Promise<string> {\n const [raw, js, css] = await Promise.all([getSwRaw(), getJs(), getCss()]);\n const version = new Bun.CryptoHasher(\"sha256\").update(js).update(css).digest(\"hex\").slice(0, 16);\n return raw.replaceAll(\"__MH_SW_VERSION__\", version);\n}\n\n/** sqlite3.wasm bytes: embedded (compiled binary) > node_modules (dev) >\n * sibling dist copy (packaged; build.ts copies it next to the bundles). */\nasync function getWasm(): Promise<ArrayBuffer> {\n if (injectedWasm != null) return injectedWasm;\n const path = RUNNING_FROM_SOURCE\n ? join(\n dirname(Bun.resolveSync(\"@sqlite.org/sqlite-wasm\", fileURLToPath(new URL(\".\", import.meta.url)))),\n \"sqlite3.wasm\",\n )\n : fileURLToPath(new URL(\"./sqlite3.wasm\", import.meta.url));\n const f = Bun.file(path);\n if (!(await f.exists())) {\n throw new Error(`sqlite3.wasm missing at ${path} — run \\`bun install\\` / \\`bun run build\\``);\n }\n return f.arrayBuffer();\n}\n\n/** Web app manifest: installability metadata for add-to-home-screen/PWA. */\nconst MANIFEST = JSON.stringify({\n name: \"Metahub\",\n short_name: \"Metahub\",\n start_url: \"/\",\n scope: \"/\",\n display: \"standalone\",\n background_color: \"#ffffff\",\n theme_color: \"#ffffff\",\n icons: [\n { src: \"/icons/icon-192.png\", sizes: \"192x192\", type: \"image/png\" },\n { src: \"/icons/icon-512.png\", sizes: \"512x512\", type: \"image/png\" },\n ],\n});\n\nconst ICONS: Record<string, string> = {\n \"/icons/icon-192.png\": ICON_192,\n \"/icons/icon-512.png\": ICON_512,\n \"/icons/icon-180.png\": ICON_180,\n};\n\n/** Pre-build & cache the JS bundle ahead of the first request. In dev the first\n * `/webui.js` hit otherwise pays for a `Bun.build` (1–3s) that blocks the\n * WebUI's first paint; warming it right after the server starts listening\n * moves that cost off the cold-start critical path. In packaged builds the\n * bundle is already embedded via setWebuiBundle(), so this is a no-op. */\nexport async function warmWebui(): Promise<void> {\n try {\n await getJs();\n } catch {\n // best-effort: a failed warm just falls back to building on first request\n }\n}\n\n// Served by a local server to (mostly) one machine: `no-store` everywhere\n// trades a few KB per load for never needing a hard refresh after an update.\nfunction asset(body: string, contentType: string): Response {\n return new Response(body, {\n headers: { \"content-type\": contentType, \"cache-control\": \"no-store\" },\n });\n}\n\n/** Handle WebUI asset requests. Returns null for anything else so the caller\n * can fall through to the API routes. */\nexport async function serveWebui(req: Request): Promise<Response | null> {\n if (req.method !== \"GET\") return null;\n const { pathname } = new URL(req.url);\n\n if (pathname === \"/\") return asset(HTML, \"text/html; charset=utf-8\");\n if (pathname === \"/webui.css\") return asset(await getCss(), \"text/css; charset=utf-8\");\n if (pathname === \"/manifest.webmanifest\") return asset(MANIFEST, \"application/manifest+json\");\n const icon = ICONS[pathname];\n if (icon) {\n return new Response(Buffer.from(icon, \"base64\"), {\n // Icons never change within a deploy; let the browser keep them a day.\n headers: { \"content-type\": \"image/png\", \"cache-control\": \"public, max-age=86400\" },\n });\n }\n if (pathname === \"/sqlite3.wasm\") {\n try {\n return new Response(await getWasm(), {\n // ~1MB and changes only on dependency upgrades; the service worker\n // additionally keeps it cache-first for offline starts.\n headers: { \"content-type\": \"application/wasm\", \"cache-control\": \"public, max-age=86400\" },\n });\n } catch (e) {\n console.error(\"[webui] failed to serve /sqlite3.wasm —\", e);\n return new Response(`sqlite3.wasm unavailable: ${e}`, { status: 500 });\n }\n }\n const script: Record<string, () => Promise<string>> = {\n \"/webui.js\": getJs,\n \"/sw.js\": getSw,\n \"/db-worker.js\": getDbWorker,\n \"/mh-runtime.js\": getRuntime,\n \"/metahub-sdk.js\": getSdk,\n };\n const getter = script[pathname];\n if (getter) {\n try {\n return asset(await getter(), \"text/javascript; charset=utf-8\");\n } catch (e) {\n // This catch is the only thing between the error and oblivion: Bun only\n // auto-logs *uncaught* handler errors, and we catch this one. Log the full\n // error object (not `${e}`) so getJs's AggregateError sub-logs surface —\n // otherwise the 500 lives solely in the response body, never the logs.\n console.error(`[webui] failed to serve ${pathname} —`, e);\n return new Response(`webui build failed: ${e}`, { status: 500 });\n }\n }\n return null;\n}\n",
|
|
116
|
+
"// PWA icons (PNG, base64) — resized from apps/desktop/build/icon.png (1024px).\n// Embedded as strings so packaged builds and compiled binaries need no asset files.\n\nexport const ICON_192 = \"iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAwKADAAQAAAABAAAAwAAAAABNOznKAAAb6ElEQVR4Ae1da5Ac1XW+t7tnZ996IBvQW2BABAGFEFCY2DEOBAuwIIAQFiBUNggQ6IfsCgGnKK/jik1IuZQKIBxQ4uUlg4VtLAuEK0AgDoXBvIxFBCWDJCQkXpJW0r5mZ7o75+vZkWZHMzvT93b39MycW7U7M933nHvOd8+574cQHBgBRoARYAQYAUaAEWAEGAFGgBFgBBgBRoARYAQYAUaAEWAEGAFGgBFgBBgBRoARYAQYAUaAEWAEGAFGgBFgBBgBRoARYAQYAUaAEahJBGRNSp0n9PLlbkvrwMB4V5jjXJkaJwyzI+81fw0aAcfeL93kHinsPf0tLbtXrJADQScRJb+acoCuLtfKfNJ7jCus2Y5rzyGgZgnhTpdSTHBd2SalTBhGIkr8Gi4tx0kL13XTUrp9ris+E0JuIRA2GNJ8VYrM69bn2zd1dclMrQATewdYtmxTstOZfAaBPk+67lddIY43zWQzGTtlhCMcJyNc4ZAfuPSJkP1fKxlQe3JK4RkN4S+FIQzDElIacAph26lBerfRlfI5yp+1+4ztL9911zGpOOsYWwf4h5v2THOdxBVUwiwkAE+yzGbP2B3XK4HijGnDyoZCyZAJzyky9iBweIsKpNXSSD/6T/eM2xpHYGLnALfdnJopbXspgbXQMpOHoYS3qdrlkj2O5jOaTFKY1BxFDZGxU7so5mrXNFf+6O7kO6NRRf0uNg7w3SV9RwpLfke48loy/DEoQVzXjhoPTi8EBKQ0BWpwcoS9QrqrRMb98Q/va9sZQlK+WVbdAahjawx91L/Ylcb3yPCnZuwBr23vWxMmiD0C6CtYZgsc4QPpOt9vOqK1mzrM1IGrXqiqA9x6Y89RUjStoKpyHpo6+ONQ/wigWYQ/atqudcXQ8jvuHft+tbSumgPcsmTfxZZh3WWaTZPTGQwl8+hNtYygOulKkbBaaORoaHvGySy7877OJ6ohR1Uc4LYb9t1KowU/IIWtbAe3GqpzmnFAAB1lChka3bv9Rz/pvCNqmSJ1gK75btPg+N4VlpVcSp7Pbf2oczum6aFvQC0BkcmkVjbvbl/etUYORSVqZA7QtdhtHkz2dies1gXpTD/px02eqDK5NtJBk6hVkG081pxqX9zVLb2JhLBlj8QBhkv+By3P+PvY9sPO1VrlT9aYsNqoJiAn2N2+KIqawIgCq2yzp2VBOs3GHwXeNZsGNQpgI5bVsgA2E4UeoTvA3y/pudU0kkvT6ZpeNBhFXnAawwjAVmAzsJ2wQQm1CXTLdfvmWWbiF7Ry08LCNQ6MQKUIoGNMK0wzGTt96Z33d66tlM5vvNAc4NYb9kwXTtOLhmFM5KFOv9nC8YEAhkgdx9khjKGz7vjJuC1hoBKKA8yf75ozxu57gnr1F2ZHfMIQnXk2AgLDI0PrNvd0XrxmjQx8cVgofYAZ43sW0eInNv5GsNCQdUQBCluCTYWRVOA1wHev7T3cls5r0jAn8dqeMLKs8Xhi3ZDr2B+arnHqD1e1fxwkAoHXABmR+Tsa72fjDzKXGpwXClLYFGwraCgCrQFu+eanx0mr+RUSspNHfYLOqsbmh1EhCvvczODpd/7n594NCg0rKEYeH9O6mdZ7d3oTXoEyZmaNjgAK1ESirTPtZm4mLJYFhUdgNcAt1+6aLGSC9oAa43gnV1DZw3zyEcDOMiGcPcJNn3TnqsO2579T/R5cH0AmrqTSn41fNSeYriwCKFhhY1TQXlk2coURAnGAZcvcJFVRV+HMGA6MQJgIZM8lcq6CzQWRTiB9gOaBPadL2XQCn94QRJYwj9EQgI1JaZ0Am6N4vxstbiXvAnEAavdfZBlNkmd9K4Gc4+ghQOcCmmRrduYi4qPtANpNoCVLXk1QB/0cnvTSy1amrhwB2BpsDrZXOVXxmNo1QIc49mhhuDMz3P4vjjA/DRwBz9YMOdOzPSG0DtrSrgFoY++pdJ4PdUh4i2PgOc0MSyCAZhDZHNleiQgVP9Z2AOmKOTgklQMjECUCsDnYnm6a2k0g4bizXKxS5QpANy+Y3gcCtDiO5sRcOh5fL2gV3TjpgU5vnk47vvSkYGpGwCcCWZuT07M26JM4L7qWA+x1dh1Gp/LT5RS83TEPU/4aAQKwOdgebFAnOb0mkGGMp8Tbh4XRkSNwWrqvgY7XILb0adASEvxGrWmSxiaWlHA4BAGb8LEJM+BFR/17eOE2DIsww+9YhWyh206HjMIGP1SVTc8BhBhLlyLQhvd4dQBg+ElqnJ08JyGOm5UQnWPp8h5apbFjuy3+9GpabNuK9eV0w0ncMlU1FzXpsoWFK6ZMs8SJhNnEyXScOY2w7+txxbsb0uLtP6ZFio6pgiPEJcDiYHv0MVZHJi2VyH46DJLBdiI7ya6srum0K2YcY4lLrm4VU2eMLOpPPDUhzp6bFC8+mxLrfzHolXbZZeZl2dZtBBSkqBUv/EaLOOuvk6KpaWSpcMaXm8QHm23xy4f6xeZNGVqSPPJ99YBxqfCnTfPC1roUUasPUD3li6eMkh/Gf9232w8x/hwFMvjsuc3i8m+2egNXMau8cmJG8gndUZICC2BSaPw5IVCQAFNg6zUrcy/q4LNuHACZiem4y65pFW3t5UupOV9sEuddRLeWUI3RqAG6AwNgUS4AU2DrTXnWEWTaDgAs4vCXybjihFMSYvK0kc2e0TL2XMr82Wc2iaFUNkfjoEcUMgAT6AzdgUGlAdgCY2AdhZyVpFGp7KXiaTtAKcZRP0cNMPNEf2ujDNL+skWtYspRFp1JGbXE1UsPukJn6A4M/ARgXE/NRp/qF4GqEjeNII5BQzodY8o3fQo1aOuQ4qrrW0VHJ919PjxsGpviLQTcoCN0hc7Q3W8AxsA6Nhj5VaAgvr4DFDCs5k/VkulIGvZbQB1BlIaqPKqpd6VpQzfoCF2hs0qoN3zqygFUMjRHgyHSuZfUd6cYnV7oCF05ZBHQmgfIssjV07UP6TkXNouPd9ri5RdSoinpv3kQZwTQ6T3jr5ICOuoH5Hkcgr4c2g4QF/PXh4JmFqk+vJQm0D4hJ9hCkz5WwaRQHLJcRYbMEE0OHmt5ugUx8VdPea7fBMqhEYdPFesooGlpleLKJW1izDijLjrF6PRCF+gE3QIJccjrnAyaCuk7gKYAcSQ/fKIpFpLBYO1LLS90hezQAbpAJw6HIsAOcCgm3pPjT0qICy9v8SZ9SkSJ/WNMWEEH6MKhOALsAMVx8Z5+5WvN4syzkwdmikeJGrtX6PRCdujAoTQC7AClsfGWS6NTfOxfJESaOpK1EiArZIbsvOR79FzTcwDaQIGJkbj8ja6q2ttks/Ta0OMnmN6egrjoWkoO7HuArGj3Q/YwQqm0q/FcaO7G1XOAMNCNIc8JhxueQSVo0WScO8WQDTLC+CEzh/IIBIBSbjwqDp/lFVaNcdwsS1x8ZYuwbex/joOuh8oA2SAjZA03HJp29TDR0zQAB9AToJaov3ROs/jSuc2x7BSj0wvZICOHyhGoLwdAwRRyuHhhq7fsOk0GF5cAWbBMGbKFHuKjdiCq6jtA/dSGFQGKNUJXXd8uPncEOsWkfJX1hwyQBTJFtn6pyjqPwLyiXCsdScsB4rZ8vrSawb4ZN4GWFtyQNTh0CaplD0gbRg9ZIFNUoVr6FksXNqgTokNNR8oY0n5hJi0uW9TmjQph+C/q4A05kgNABsjCQQ0BdgA13DyqL9JM69nnN1dlkgyTXUgbMnBQR0DfAYrVS9V65hMHlKI4+EknfH1Bi5h1ysGN9aG3h0hYjPggTaStE6C7Uu1Vrfwtlq4OAEQbjANoClEtciwTeOY3g94GGFUZcFAUJp6wxdDrFKsyqpAOaSAtpKlzSBU2/UD3ml4qAYfQDPoOEHqRV8ztR3vmDxEc6/jYT3vFts3q3amx4w1x9Y3t3np7xxlNNr134I01/UgLaaoG6Aqd1Y601NMh+CEDVRSydOooDqdb63DgINje/a54YGUvnYWJWV61MP0LdMzINW3CIRbwgaBxAU/wRhpISzVAR+gKnaG73xC0Xrr8/MpfGF/bAQoZ1uJvHAT74QcZ8bNVvdldYIpKnPHlpPibi1pC6RSj0wveSEM1YHcYdISu0JmDbh8AK/F0XThIepUcHU6/idryb748JNat6VfhcoDmgstaxSmnD3eKA9INnV7wBG+dAN2gI3Q9kG8qDAPS64AMOvx4NahKDhanSdAm+P9a2y9+Tx1E1YCTlr9xXbuYNJUOktUbYPJEAA/wAk/wVg3QCbpBRw4HEeAm0EEsvBEROnNePN7d550KkffK19eOMYa45qZ20U4nsKHdrhpACx7gBZ6qASdcQCfoVtOjPqoAjEKnjuowU53aK2jaUfQs+apQBpycNjDgigfv3S96dqtb75QZFp3A1ualq9IpBg0CeICXaoAO0AU6eSffEaN8nVX45tNX+7uK/Pk02g6Qz6weviND0dTAbTIP/3svHZqLJ2ph9plJcd7fqnWK0ekFLXioBsgOHaALdFLXRFWC+NPpO0C1i4DC9FUwL+RBv9FR3PDakPj1ar1O8dxLWsVpZ9HG+kFiWiSdYs8QFzSg1QmQHTqM6PTmy6DCPJ8+Dt9VdMij0XSAelgPWjoXm2h74XNPDdCVSnRBlmLAhXxXfKtNTDvapNoETarS6eEd4iAuaHQu84PMkB06jJ6mimKj6zB6ekHTqk9gQnNNB1ABr4ZoaMAE7ebHH+gVm/5PfUinrcMQi27qEJ3UkcVNlaUC3iEO4oJGNUBWyAzZccsjh9IIqKNcmmddvYERDdGo6EPUkdz92SjWW0ZrDGVeeX1HtiOKQrAgYFEa0kIcxFUNkBGyQmbPAVQZNQidlgPAHIKu0HT4qeZZuTQNssdPPrJpNKWXrgtFbLVw0hyazLq81etYF6aJDiveIY5qgGyQEbJC5sI0Cn+rplPIp5q/1YukrPZaDuCxqKb2hWmr5GghjxK/sfJy45tD4pcP96mkcoDm3HmttJyBNtbndYrxHc/wTidANsjorRItocchXqGSYKW8o4inIn8ejb4D5DGr96+4RvR/fjsgXnh6QFlVNEuu+Fa7OHomnTZHpT7+8B3PdJoskAmylbrqVFngOidkB/CTwdShNE3p1QIb31K/HBxLmq8Z7hSj04vvOkeXQxaU/pCNO71+MpRHgfyhRbFxwUSabP8hamt/Sm1t1YDjyq++scP70zm6HDJAFsgUxOUXqvrUKh3XAAo5h1nV3Z9Sp3jlfjFISwxUw4mnNtF9XeqdXqQNGSCLzkI5VfnrgU59vG1Ye+wqUttZFCx8GEZUMUWPztPBnzxYT//uhiHxc9pZhZI86kVmkBtpQwYcjeI3D7L55k9nxAbGqrT+Uxudwq/OxbhxDVAMlQqfwfBefHZAPLtOb7lEhcmNiIY0kXZkh2GNSL1+frADaOalRcOjT/ysT2x4Q71T7FcEpIU0kTYHPQTYAfTw85o+2Gr40L37xM7teutSKhEFaSAtpBl1s6sS+WotDjtAADmGRWs9u2iz+T207r5PpSdSmRDgjTSQls5CucpSa4xYeg6AAs/rFcXo02++BSQ/Zl/feyctHv2P/aFcooHLL8Abafia6S2nX5XwCsxuNCtd/VGgYdv3i2PQ8VXL3Xz70JUJHdKXnh8Uh0+yxPmX6i1rKJRl/a/6Pd7eiE/hS4XfOb0VSA/YrgptkDSqeZ4vg14NkM+Jv3sIoGO67ud94o2X1TfWF0IJXuDJnd5CZPR/swPoYziCAzqm2Mz+yH3Z83dGvFT4gTN8wAs8udOrAGAZkgAcIFeZxuGzjLZFXwcvt2m6dMpcRvz03/aJ3n3YBaYWQAse4AWe4XS4VGQLSxYVviryH6TRdwAVmcOiOaiXv28hyJOwpNj657RYfd/+UXeBlRIUu8NACx7gdaDhHaSspRIv9zxIGXR5lZO1zHt9ByiTQCO/Rof1D/87KJ583P8eAtCAlmd6w7Wghh8FAry5QigMqC3aQwBjPmKSKU77y8pucMw5DWghWxhBh2+YePnRVUeHXDpcA+SQCOkz13Fdff9+sWlj+Y31iIO4CDnakERjtoQAO0AEZoCdXv29rrj3n3u8sXwsYygMeIY5BMRBXJ3dYYW8+XdpBLSbQKG2H0rLfegb1fowV5+r0h8qSdEnWLoAw+6mUZ3n1w+IWbObxMQpWfh3bMuIDa8P0XmkaW9Ti7fMIWR5tPIth1lRTSN8GABG+g4Qob61npRXqlNtsHnTEC1pGDrQxMHaflxWYWG0h0OkCGg5AGpyMAjAEbWVVpUBdLk/bSEqZGCSoRfbwaWqQ4XJjoimo7MO7QghNH9AjiKtSV9ctRxACOyJjYsLQG8VE4pLdvrKtwAiq+qtSheAyIewgCzq+7LBjjvBh4DKDxoJAb0aAM5HbVelgjdolFEYqIRcgaZKr5JmHGhyeqvIokOrkl4pGsihVwFwDVAKW37eGAhwE6gx8pm1LIGAXhOImMapNoQsfkNOfhVav2nFKX5Ob78y5ejigFcQMtRXDaCKiCqdX+uJU3xVnVXp4qR7nizaNUCsqoA8xSr+igzN/VVMVAcRdXTWoQ0SOsihGeqrBtAEg8kbDwH9GqDmi8+4FGdRG5+O3gEUvYGoqy9HHdUA+mAEkicNwaR+sNauAbKHy1Y/1yGHSgBZXHRQkV+VxtNZkTgueKnmeb7adVQD5KvF3xmByhBgB6gMJ45VpwiwA9RpxrJalSHADlAZThyrThHQ7gTHZhRUsRN8QH5V+lo1DK/3ryi8Dq1ikkXJAsgzLQfASlRs4gtAjqL6+XmoI0Nc8tOPvrpx6wEv6KC5GtrbzqWJZVzMRzdLNWGoOfJ6wEtHh2yGcR+g5gyXBQ4SgbpyAD5IKkjTKM6r3jDW6gN4W/JjsiXSpsbg3j3+WoQ4jKpnt509hEq/Ni1uMTF9iiNaoDswKHZCRSmxgTGwjsUVTcgzf1l+iFp1VQP86TV/l1Ls2JYWH9Glc4bReOfxQGfoDgz8BL8Y++FdjbjaDgAnjMMfbk958w8psfX9yjP02XV9YmCQpA/p9PE44FJKBugM3YFBpQHYAmNgXYpv1M8rlb1UPG0HKMU46udom6YGHPHQyr0VXUrx0n8PiN89M5C9cC5qYWOSHi7bAwbAolzAZR3AFhjXUz+gbhwAGYiS6c8bh8S//uNuOn6weE0wlHLF07/qE91393h5Xk+ZWc6IC9/ndAcWwATYFAvAEpgC23q7p0yvEyzc/Y5DvSgXbeji4BUDNMxn2etKh8Sdt+0SJ5+WFCeckhRjDzNFesgV27ZkxOsvDYit76W9czi9pn88xA4TklF5AwN0hB9dtZdqgn4x+8wWMWW6JRJ0N0HPLlu8/UZK/JGaPYODzsHrWUflGNVLSfemkeBkgzopajmAIewex8VYkNTio6NAMVocMptOO+L3L1D1Tn8m1XNYO46L5jB64d2zW4ywQZ+hJgAm26iNjxOqMUKEZzYu5iNMrAT9xfDgXtd1MrBBnWzTMlzDFrtty+2VQo51g9idoKNJIS3lnNU08iFGbBHcmNRWWWni898ga8BfLuS3j+OGmSQPJZl6jYzYnZNX5TNfR9/0gxMm7yIpPpN8wJxv7JhADwHP5sj2PBvUYKXlAN3dcpAK2i0Sh9tzYAQiRAA2B9uDDeokm1fhKbJx3Q3SNc/hVoUifkymhADZHDp2G5SI84i0agDwoaroVepe5rHkr4xAFAjQfIRne3pp6TuAK16z7UFag4DxAg6MQBQISFqPNJiSZHu6qek3gXbseM+ZdMQ7ppE42XaKTz7pCsn0jEA+AiYNVdnO0DvGjp3v5T9X+a5dA9z32hyyeuMZKWmwmAMjEAECWVsznsnanl6C+jUApe9I8WvbTn2bOsLcDtLLD6auAAGyNRc2V0HUslECcYCOoSNf6bO2v20YTbMcbgaVBZ0jqCNgGAma0R96uyM9+RV1LgcptZtAYHXXepmiov9hg5tBB5Hlb6EgABuDrcHmgkggEAeAIDIjH7Ht/j1SBsYyCP2YRx0hANvybIxsLSi1ArPWVesnb3dc9xHDaPbmxLDIkv8YgyBtALYFG4OtBeUAgfQBcsKkjfTd0k4togmKTlqpl3vMn4yANgLZ0j+1DzamzSyPQWA1AHg+vPaod11h32+Sp3JgBIJEADYF24KNBck3UAeAYKZM/EvGHvjQiNcWgSAxY14RIwBbgk3BtoJOOnAHWLX28I9JyNslO0DQedWw/IZt6fZh2woUh8AdANL1tkx80HYG11lmS6DCMrPGQwA2BFuCTYWhfWgzt4u/tnm6tJpelNKcyJNjYWRd/fPEpJfr2jvczNBZ3U/P2BKGxqHUABAUAjuufSP1XDI8NxBG1tU3T89myHZgQ2EZPxAMzQHA/IEnp651nNTthsTm3NAqGyTFoa4QoIF0shnYDmwoTNUiscrFF2y/h9pySzN2f5i6MO86QcAyWzHqs7L7yck3ha1SqDVATvi+1r3LM5mBx6AYB0ZgNAQ84ydbgc2MFi+od5HUABB28VfcZtH6YTfVBAvIu+kJJsk5MAI5BKTAiA/ZxmOif9Li7uf1NrvnuJb7jMwBIMj8+W83tfWNWWGYyaW0pJV6+LxcolwGNcJ7dHhpKb1w7NTKvra9y9esOWEoKr0jdYCcUovP33Yr7er5AfWLLR4izaHSmJ8Y6sRIoeumb+9+asodUaNQFQeAkovnfnCxNBJ3EQCTs02iqFXn9KqNAJo8VABud530su71U5+ohjxVcwAou/CCrUclhbWCprrn0YQHLXXFYacc6h0BrO2hCVJqAmfWpkRm+eonp71fLZ2r6gBQuku4xpa5OxZTc+h7ppGcStPe3DeoljWEnC7a+ljVaTupD6jZ8/3p6yd2dwlZ1Y5g1R0gh/lV52050rSs70jXuNY0msZknBSmwXOv+bOGEUBpbxlJHGWy15XOKjuT+fHDv52+Mw4qxcYBcmAs/vqOmdQlWkon/y40zebDHDdN7UTvHPhcFP6sCQRoNpfO78EeXjrEahedIL5aWHJl928mvhMn8WPnADlwFp7//jTLTV5Bh2AvpObRSag64Qx0JDzVnjyHkMMpTp9k5ELmjJ6aspRNb9FJOaszMvXo6qeO2honWXOyxNYBcgLOnbsp+XnZdgZZ/jxaT/RVmjs43jSTzVS+EL6210zCfMIBp4jbPQU5Rerlc/heJc/YqU2P5o0U1KGl82HpvJ5BaudvJMt/jjxh7Sdu38vr1x8TyOkNYcEXewfIV7zrK671XtvOYwxHzBYiM4dsfRa9n045MIHOiWyjtX0JVLscwkMg2xx10nQrVh9Z/WeU0hbyCTql2XrVMcTrR/cduanreVkzw3k15QDFsnX+/G0tLQNivOsmxtG68XF0c0hHsXj8LBgE6Cag/bTPg46/Se8ZaBG716yZUv6KyWCSZi6MACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAowAI8AIMAKMACPACDACjAAjwAgwAgcR+H8GnxXewbCSvAAAAABJRU5ErkJggg==\";\n\nexport const ICON_512 = \"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\";\n\nexport const ICON_180 = \"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\";\n",
|
|
117
|
+
"import { z } from \"zod\";\nimport { MhError } from \"../../core/errors.ts\";\nimport { errorResponse, type Route, type RouteCtx } from \"../../core/sync/routes.ts\";\nimport {\n listDatabases,\n createDatabase,\n updateDatabase,\n duplicateDatabase,\n deleteDatabase,\n} from \"../../core/databases.ts\";\nimport {\n listProperties,\n addProperty,\n updateProperty,\n setPropertyWidth,\n removeProperty,\n type PropType,\n type PropertyConfig,\n} from \"../../core/properties.ts\";\nimport {\n listRecords,\n getRecord,\n createRecord,\n updateRecord,\n moveRecord,\n deleteRecord,\n} from \"../../core/records.ts\";\nimport {\n listDocuments,\n getDocument,\n createDocument,\n updateDocument,\n documentVersion,\n moveDocument,\n duplicateDocument,\n deleteDocument,\n} from \"../../core/documents.ts\";\nimport {\n listDocumentRevisions,\n documentAtVersion,\n revertDocument,\n listRecordRevisions,\n recordAtVersion,\n recordFieldHistory,\n revertRecord,\n listPropertyRevisions,\n revertProperty,\n listDatabaseActivity,\n} from \"../../core/history.ts\";\nimport { search } from \"../../core/search.ts\";\nimport { getNodeId } from \"../../core/node.ts\";\nimport pkg from \"../../../package.json\" with { type: \"json\" };\n\n// Read-only viewer + light editing for the browser UI. These routes wrap the\n// same core functions the CLI uses, so every write goes through `emit()` and\n// replicates over /sync. Ids are carried as query params to keep the server's\n// exact-path matcher (see ./routes.ts) and OpenAPI generation unchanged.\n\n// --- pragmatic schemas (drive /docs; intentionally loose) -------------------\n\nconst DatabaseSchema = z.object({\n id: z.string(),\n name: z.string(),\n icon: z.string().nullable(),\n created_hlc: z.string(),\n});\nconst PropertySchema = z.object({\n id: z.string(),\n database_id: z.string(),\n name: z.string(),\n type: z.string(),\n config: z.any().nullable(),\n position: z.number(),\n});\nconst RecordSchema = z.object({\n id: z.string(),\n database_id: z.string(),\n values: z\n .record(z.string(), z.any())\n .describe(\n 'Field values keyed by property name (e.g. {\"Amount\":35}). Reads nest cells here; writes take a flat {column: value} map. Lossy when two properties share a name — prefer `cells` then.',\n ),\n cells: z\n .record(z.string(), z.any())\n .describe(\n \"Field values keyed by property id — lossless under duplicate property names. Writes accept property ids as keys too.\",\n ),\n});\nconst MoveRecordReq = z.object({\n target: z.string(),\n where: z.enum([\"before\", \"after\"]),\n});\nconst DocumentSummarySchema = z.object({\n id: z.string(),\n title: z.string(),\n database_id: z.string().nullable(),\n parent_id: z.string().nullable(),\n created_hlc: z.string(),\n order_key: z.string().nullable(),\n});\nconst MoveDocumentReq = z.object({\n target: z.string(),\n where: z.enum([\"before\", \"after\", \"into\"]),\n});\nconst DocumentSchema = DocumentSummarySchema.extend({\n body: z.string().nullable(),\n // Read/edit token (max HLC over the doc + its blocks); echo it back as\n // `if_match` on PATCH to detect concurrent changes.\n version: z.string().optional(),\n});\nconst SearchHitSchema = z.object({\n type: z.string(),\n id: z.string(),\n database_id: z.string().nullable(),\n title: z.string().optional(),\n snippet: z.string(),\n});\nconst OkSchema = z.object({ ok: z.boolean() });\n\nconst CreateDatabaseReq = z.object({ name: z.string(), icon: z.string().optional() });\nconst UpdateDatabaseReq = z.object({\n name: z.string().optional(),\n icon: z.string().nullable().optional(),\n});\nconst DuplicateDatabaseReq = z.object({\n name: z.string().optional().describe(\"Name for the copy (defaults to the source name)\"),\n icon: z.string().optional(),\n});\nconst CreatePropertyReq = z.object({\n db: z.string(),\n name: z.string(),\n type: z.string(),\n config: z.any().optional(),\n});\nconst UpdatePropertyReq = z.object({\n name: z.string().optional(),\n type: z.string().optional(),\n config: z.any().optional(),\n position: z.number().optional(),\n});\nconst SetWidthReq = z.object({ width: z.number() });\nconst RecordValuesReq = z\n .record(z.string(), z.any())\n .describe('Flat { column: value } cell patch (keyed by property name).');\nconst CreateDocumentReq = z.object({\n title: z.string(),\n body: z.string().optional(),\n database_id: z.string().optional(),\n parent_id: z.string().optional(),\n});\nconst UpdateDocumentReq = z.object({\n title: z.string().optional(),\n body: z.string().optional(),\n parent_id: z.string().nullable().optional(),\n // Optimistic concurrency: a `version` from GET /api/document. A concurrent\n // change (CLI, another window, sync) makes the PATCH fail 409 `stale`\n // instead of silently clobbering it.\n if_match: z.string().optional(),\n});\nconst DuplicateDocumentReq = z.object({\n title: z.string().optional().describe(\"Title for the copy (defaults to the source title)\"),\n parent_id: z.string().nullable().optional(),\n});\n\nconst RevisionBase = z.object({\n // Version token (max HLC of the revision); pass as `to` on revert or\n // `version` on GET /api/document/at.\n version: z.string(),\n at: z.string().describe(\"Wall-clock time of the revision (ISO 8601)\"),\n node_id: z.string(),\n kind: z.enum([\"user\", \"repair\", \"revert\"]).describe(\"Source of the revision\"),\n changes: z.number(),\n created: z.boolean(),\n deleted: z.boolean(),\n});\nconst DocRevisionSchema = RevisionBase.extend({\n title_changed: z.boolean(),\n blocks_changed: z.number(),\n blocks_deleted: z.number(),\n});\nconst RecordRevisionSchema = RevisionBase.extend({\n fields: z.array(z.string()).describe(\"Property ids of the cells written\"),\n moved: z.boolean(),\n});\nconst DatabaseActivityEntrySchema = RecordRevisionSchema.extend({\n record_id: z.string(),\n record_title: z\n .string()\n .nullable()\n .describe(\"Title-property value as of this revision (deleted records keep their last title)\"),\n diffs: z\n .array(\n z.object({\n prop: z.string(),\n before: z.any().optional(),\n after: z.any().optional(),\n }),\n )\n .describe(\"Value-level cell changes; a missing side means the cell did not exist\"),\n});\nconst DocumentVersionStateSchema = z.object({\n id: z.string(),\n title: z.string(),\n body: z.string(),\n deleted: z.boolean(),\n version: z.string(),\n});\nconst RevertDocumentReq = z.object({\n to: z.string().describe(\"Version token from /api/document/history\"),\n if_match: z.string().optional(),\n});\nconst RevertRecordReq = z.object({\n to: z.string().describe(\"Version token from /api/record/history\"),\n});\nconst RevertDocResultSchema = z.object({\n id: z.string(),\n changed: z.boolean(),\n restored: z.string(),\n version: z.string(),\n undeleted: z.boolean(),\n});\nconst RevertRecordResultSchema = z.object({\n id: z.string(),\n changed: z.boolean(),\n fields: z.array(z.string()),\n undeleted: z.boolean(),\n restored: z.string(),\n});\nconst PropertyRevisionSchema = RevisionBase.extend({\n fields: z.array(z.string()).describe(\"Definition columns touched (name/type/config/position)\"),\n cells_cleared: z.number(),\n});\nconst RevertPropertyReq = z.object({\n to: z.string().describe(\"Version token from /api/property/history\"),\n});\nconst RevertPropertyResultSchema = z.object({\n id: z.string(),\n changed: z.boolean(),\n fields: z.array(z.string()),\n restored_cells: z.number(),\n skipped_cells: z.number(),\n undeleted: z.boolean(),\n restored: z.string(),\n});\nconst RecordVersionStateSchema = z.object({\n id: z.string(),\n database_id: z.string().nullable(),\n deleted: z.boolean(),\n data: z.record(z.string(), z.any()).describe(\"Cells at that version, keyed by property id\"),\n version: z.string(),\n});\nconst FieldHistoryEntrySchema = z.object({\n version: z.string(),\n at: z.string(),\n node_id: z.string(),\n value: z.any().optional(),\n cleared: z.boolean(),\n});\nconst NodeInfoSchema = z.object({\n node_id: z.string(),\n label: z.string().nullable().describe(\"Peer label from pairing; null when unnamed\"),\n self: z.boolean().describe(\"True for the node serving this request\"),\n});\n\n// --- helpers ----------------------------------------------------------------\n\nfunction need(req: Request, key: string): string {\n const v = new URL(req.url).searchParams.get(key);\n if (!v) throw new Error(`missing query param: ${key}`);\n return v;\n}\n\nfunction opt(req: Request, key: string): string | undefined {\n return new URL(req.url).searchParams.get(key) ?? undefined;\n}\n\n/** Wrap a handler: serialize the return value, turn thrown errors into 400 JSON. */\nfunction handle(\n fn: (req: Request, ctx: RouteCtx) => unknown | Promise<unknown>,\n): Route[\"handler\"] {\n return async (req, ctx) => {\n try {\n const out = await fn(req, ctx);\n if (out instanceof Response) return out;\n return Response.json(out ?? null);\n } catch (e) {\n return errorResponse(e);\n }\n };\n}\n\n// --- routes -----------------------------------------------------------------\n\nconst VersionSchema = z.object({ version: z.string() });\n\nexport const webuiRoutes: Route[] = [\n {\n method: \"GET\",\n path: \"/api/version\",\n summary: \"Version of the running core (sidecar). Used by the desktop app's settings footer.\",\n response: VersionSchema,\n handler: () => Response.json({ version: pkg.version }),\n },\n {\n method: \"GET\",\n path: \"/api/databases\",\n summary: \"List all databases\",\n response: z.array(DatabaseSchema),\n handler: handle((_req, { db }) => listDatabases(db)),\n },\n {\n method: \"POST\",\n path: \"/api/databases\",\n summary: \"Create a database\",\n request: CreateDatabaseReq,\n response: DatabaseSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { name: string; icon?: string };\n return createDatabase(db, body);\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/database\",\n summary: \"Rename a database or change its icon. Query: ?id=<id>\",\n request: UpdateDatabaseReq,\n response: DatabaseSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { name?: string; icon?: string | null };\n return updateDatabase(db, need(req, \"id\"), body);\n }),\n },\n {\n method: \"POST\",\n path: \"/api/database/duplicate\",\n summary: \"Copy a database whole — schema and all records. Query: ?id=<id>\",\n request: DuplicateDatabaseReq,\n response: DatabaseSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json().catch(() => ({}))) as { name?: string; icon?: string };\n return duplicateDatabase(db, need(req, \"id\"), body);\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/database\",\n summary: \"Delete a database (and stop it being the current one). Query: ?id=<id>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: deleteDatabase(db, need(req, \"id\")) })),\n },\n {\n method: \"GET\",\n path: \"/api/database/activity\",\n summary:\n \"Recent changes across all records of a database, newest first. Query: ?db=<id>&limit=<n>\",\n response: z.array(DatabaseActivityEntrySchema),\n handler: handle((req, { db }) => {\n const limit = opt(req, \"limit\");\n return listDatabaseActivity(db, need(req, \"db\"), {\n limit: limit ? Number(limit) : undefined,\n });\n }),\n },\n {\n method: \"GET\",\n path: \"/api/properties\",\n summary: \"List a database's properties (columns). Query: ?db=<id>\",\n response: z.array(PropertySchema),\n handler: handle((req, { db }) => listProperties(db, need(req, \"db\"))),\n },\n {\n method: \"POST\",\n path: \"/api/properties\",\n summary: \"Add a property to a database\",\n request: CreatePropertyReq,\n response: PropertySchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as {\n db: string;\n name: string;\n type: PropType;\n config?: PropertyConfig;\n };\n return addProperty(db, body.db, { name: body.name, type: body.type, config: body.config });\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/property\",\n summary: \"Update a property: rename, change type, edit config/options, reorder. Query: ?id=<id>\",\n request: UpdatePropertyReq,\n response: PropertySchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as {\n name?: string;\n type?: PropType;\n config?: PropertyConfig;\n position?: number;\n };\n return updateProperty(db, need(req, \"id\"), body);\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/property/width\",\n summary: \"Set a property's table column width (px). Query: ?id=<id>\",\n request: SetWidthReq,\n response: PropertySchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { width: number };\n return setPropertyWidth(db, need(req, \"id\"), body.width);\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/property\",\n summary: \"Delete a property (column) and its cells. Query: ?id=<id>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: removeProperty(db, need(req, \"id\")) })),\n },\n {\n method: \"GET\",\n path: \"/api/property/history\",\n summary: \"List a property's definition revisions, newest first. Query: ?id=<id>\",\n response: z.array(PropertyRevisionSchema),\n handler: handle((req, { db }) => listPropertyRevisions(db, need(req, \"id\"))),\n },\n {\n method: \"POST\",\n path: \"/api/property/revert\",\n summary:\n \"Schema rollback: restore a property's definition and the cells its type-change/removal cleared (user edits since are kept). Query: ?id=<id>\",\n request: RevertPropertyReq,\n response: RevertPropertyResultSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { to: string };\n return revertProperty(db, need(req, \"id\"), body.to);\n }),\n },\n {\n method: \"GET\",\n path: \"/api/records\",\n summary: \"List records in a database. Query: ?db=<id>&sort=<field>&limit=<n>\",\n response: z.array(RecordSchema),\n handler: handle((req, { db }) => {\n const limit = opt(req, \"limit\");\n return listRecords(db, need(req, \"db\"), {\n sort: opt(req, \"sort\"),\n limit: limit ? Number(limit) : undefined,\n });\n }),\n },\n {\n method: \"POST\",\n path: \"/api/records\",\n summary: \"Create a record. Query: ?db=<id>; body is a {field: value} map\",\n request: RecordValuesReq,\n response: RecordSchema,\n handler: handle(async (req, { db }) => {\n const values = (await req.json()) as Record<string, unknown>;\n return createRecord(db, need(req, \"db\"), values);\n }),\n },\n {\n method: \"GET\",\n path: \"/api/record\",\n summary: \"Get one record. Query: ?id=<id>\",\n response: RecordSchema,\n handler: handle((req, { db }) => {\n const id = need(req, \"id\");\n const rec = getRecord(db, id);\n if (!rec) throw new MhError(\"not_found\", `no such record: ${id}`);\n return rec;\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/record\",\n summary: \"Update record fields. Query: ?id=<id>; body is a {field: value} map\",\n request: RecordValuesReq,\n response: RecordSchema,\n handler: handle(async (req, { db }) => {\n const values = (await req.json()) as Record<string, unknown>;\n return updateRecord(db, need(req, \"id\"), values);\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/record/order\",\n summary: \"Move a record before or after another record. Query: ?id=<id>\",\n request: MoveRecordReq,\n response: RecordSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { target: string; where: \"before\" | \"after\" };\n return moveRecord(db, need(req, \"id\"), body.target, body.where);\n }),\n },\n {\n method: \"GET\",\n path: \"/api/record/history\",\n summary: \"List a record's revisions, newest first. Query: ?id=<id>\",\n response: z.array(RecordRevisionSchema),\n handler: handle((req, { db }) => listRecordRevisions(db, need(req, \"id\"))),\n },\n {\n method: \"GET\",\n path: \"/api/record/at\",\n summary: \"A record's cells as of a past version. Query: ?id=<id>&version=<token>\",\n response: RecordVersionStateSchema,\n handler: handle((req, { db }) => recordAtVersion(db, need(req, \"id\"), need(req, \"version\"))),\n },\n {\n method: \"GET\",\n path: \"/api/record/field-history\",\n summary: \"The write trail of one record cell, newest first. Query: ?id=<id>&prop=<propertyId>\",\n response: z.array(FieldHistoryEntrySchema),\n handler: handle((req, { db }) => recordFieldHistory(db, need(req, \"id\"), need(req, \"prop\"))),\n },\n {\n method: \"POST\",\n path: \"/api/record/revert\",\n summary:\n \"Restore a record's cells to a past version, recorded as a new revision. Query: ?id=<id>\",\n request: RevertRecordReq,\n response: RevertRecordResultSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { to: string };\n return revertRecord(db, need(req, \"id\"), body.to);\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/record\",\n summary: \"Delete a record. Query: ?id=<id>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: deleteRecord(db, need(req, \"id\")) })),\n },\n {\n method: \"GET\",\n path: \"/api/documents\",\n summary: \"List documents. Optional query: ?db=<id> or ?parent=<id>\",\n response: z.array(DocumentSummarySchema),\n handler: handle((req, { db }) =>\n listDocuments(db, { database_id: opt(req, \"db\"), parent_id: opt(req, \"parent\") }),\n ),\n },\n {\n method: \"POST\",\n path: \"/api/documents\",\n summary: \"Create a document\",\n request: CreateDocumentReq,\n response: DocumentSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as {\n title: string;\n body?: string;\n database_id?: string;\n parent_id?: string;\n };\n return createDocument(db, body);\n }),\n },\n {\n method: \"GET\",\n path: \"/api/document\",\n summary: \"Get one document with full body. Query: ?id=<id>\",\n response: DocumentSchema,\n handler: handle((req, { db }) => {\n const id = need(req, \"id\");\n const doc = getDocument(db, id);\n if (!doc) throw new MhError(\"not_found\", `no such document: ${id}`);\n return { ...doc, version: documentVersion(db, doc.id) };\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/document\",\n summary: \"Update a document's title/body/parent_id (null = top level). Query: ?id=<id>\",\n request: UpdateDocumentReq,\n response: DocumentSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as {\n title?: string;\n body?: string;\n parent_id?: string | null;\n if_match?: string;\n };\n const { if_match, ...fields } = body;\n const doc = updateDocument(db, need(req, \"id\"), fields, { ifMatch: if_match });\n return { ...doc, version: documentVersion(db, doc.id) };\n }),\n },\n {\n method: \"POST\",\n path: \"/api/document/duplicate\",\n summary: \"Copy a document — title and every block — next to the source. Query: ?id=<id>\",\n request: DuplicateDocumentReq,\n response: DocumentSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json().catch(() => ({}))) as {\n title?: string;\n parent_id?: string | null;\n };\n const doc = duplicateDocument(db, need(req, \"id\"), {\n title: body.title,\n parentId: body.parent_id,\n });\n return { ...doc, version: documentVersion(db, doc.id) };\n }),\n },\n {\n method: \"PATCH\",\n path: \"/api/document/move\",\n summary: \"Move a document before/after another, or into it as a child. Query: ?id=<id>\",\n request: MoveDocumentReq,\n response: DocumentSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { target: string; where: \"before\" | \"after\" | \"into\" };\n return moveDocument(db, need(req, \"id\"), body.target, body.where);\n }),\n },\n {\n method: \"GET\",\n path: \"/api/document/history\",\n summary: \"List a document's revisions, newest first. Query: ?id=<id>\",\n response: z.array(DocRevisionSchema),\n handler: handle((req, { db }) => listDocumentRevisions(db, need(req, \"id\"))),\n },\n {\n method: \"GET\",\n path: \"/api/document/at\",\n summary: \"A document's title/body as of a past version. Query: ?id=<id>&version=<token>\",\n response: DocumentVersionStateSchema,\n handler: handle((req, { db }) => documentAtVersion(db, need(req, \"id\"), need(req, \"version\"))),\n },\n {\n method: \"POST\",\n path: \"/api/document/revert\",\n summary:\n \"Restore a document's title/body to a past version, recorded as a new revision. Query: ?id=<id>\",\n request: RevertDocumentReq,\n response: RevertDocResultSchema,\n handler: handle(async (req, { db }) => {\n const body = (await req.json()) as { to: string; if_match?: string };\n return revertDocument(db, need(req, \"id\"), body.to, { ifMatch: body.if_match });\n }),\n },\n {\n method: \"DELETE\",\n path: \"/api/document\",\n summary: \"Delete a document. Query: ?id=<id>\",\n response: OkSchema,\n handler: handle((req, { db }) => ({ ok: deleteDocument(db, need(req, \"id\")) })),\n },\n {\n method: \"GET\",\n path: \"/api/nodes\",\n summary: \"Known nodes for display: this device plus paired peers with their labels\",\n response: z.array(NodeInfoSchema),\n handler: handle((_req, { db }) => {\n const self = getNodeId(db);\n const peers = db\n .query(\n \"SELECT node_id, label FROM peers WHERE node_id IS NOT NULL AND node_id <> '' GROUP BY node_id\",\n )\n .all() as { node_id: string; label: string | null }[];\n return [\n { node_id: self, label: null, self: true },\n ...peers.filter((p) => p.node_id !== self).map((p) => ({ ...p, self: false })),\n ];\n }),\n },\n {\n method: \"GET\",\n path: \"/api/search\",\n summary: \"Full-text search across documents and records. Query: ?q=<text>&limit=<n>\",\n response: z.array(SearchHitSchema),\n handler: handle((req, { db }) => {\n const limit = opt(req, \"limit\");\n return search(db, need(req, \"q\"), { limit: limit ? Number(limit) : undefined });\n }),\n },\n];\n",
|
|
118
|
+
"import type { DbDriver } from \"./driver.ts\";\nimport { emit, grouped, CHANGE_SELECT } from \"./crdt.ts\";\nimport { serializeDocBlocks } from \"./blocks.ts\";\nimport { getDocument, updateDocument, documentVersion } from \"./documents.ts\";\nimport { listProperties } from \"./properties.ts\";\nimport { MhError } from \"./errors.ts\";\n\n// Read-side history over the CRDT oplog. The oplog (crdt_changes) is append-only\n// and never compacted, so the state of any register at a cutoff HLC `at` is the\n// value with the greatest hlc <= at — the same last-write-wins rule materialize()\n// applies at the head. Revert is a *forward* write: reconstruct the old state,\n// diff against the present, and emit the differences as new changes. The oplog\n// itself is never edited (it is the sync source of truth), so reverts replicate\n// and converge like any other edit.\n\n/** Changes from the same node closer together than this are one revision: a\n * single save emits a burst of field writes with near-identical timestamps. */\nconst REVISION_GAP_MS = 1500;\n\n/** Physical wall-clock milliseconds encoded in an HLC (first 15 digits). */\nfunction hlcMillis(hlc: string): number {\n return Number(hlc.slice(0, 15));\n}\n\nfunction hlcIso(hlc: string): string {\n return new Date(hlcMillis(hlc)).toISOString();\n}\n\n// A fully-read oplog row: Change with txn always present (CHANGE_SELECT\n// includes it; NULL for legacy rows). The reused select list keeps these\n// queries locked to the Change interface.\ninterface RawChange {\n hlc: string;\n node_id: string;\n dataset: string;\n row_id: string;\n col: string;\n value: string | null;\n txn: string | null;\n}\n\n/** Where a revision came from, derived from its change-group label. */\nexport type RevisionKind = \"user\" | \"repair\" | \"revert\";\n\nfunction revisionKind(txn: string | null): RevisionKind {\n if (txn?.startsWith(\"repair:\")) return \"repair\";\n if (txn?.startsWith(\"revert:\")) return \"revert\";\n return \"user\";\n}\n\n/**\n * Group an HLC-ordered change stream into revisions. Changes sharing a txn are\n * one revision; between txn-less changes (legacy rows, pre-txn peers) fall back\n * to author + wall-clock gap. Clustering depends only on oplog content, so\n * every synced node renders the same list.\n */\nfunction clusterRevisions(changes: RawChange[]): RawChange[][] {\n const groups: RawChange[][] = [];\n let cur: RawChange[] = [];\n for (const c of changes) {\n const prev = cur[cur.length - 1];\n const boundary =\n prev &&\n (prev.txn !== null && c.txn !== null\n ? prev.txn !== c.txn\n : prev.node_id !== c.node_id || hlcMillis(c.hlc) - hlcMillis(prev.hlc) > REVISION_GAP_MS);\n if (boundary) {\n groups.push(cur);\n cur = [];\n }\n cur.push(c);\n }\n if (cur.length) groups.push(cur);\n return groups;\n}\n\n/** True when a JSON-encoded oplog value is a truthy flag (e.g. __deleted = 1). */\nfunction flagSet(value: string | null): boolean {\n return value !== null && value !== \"0\" && value !== \"false\" && value !== \"null\";\n}\n\n/** Latest value per register (col) among `changes` with hlc <= at.\n * A `null` value column means the register was cleared (json_remove). */\nfunction registersAt(\n changes: RawChange[],\n at: string,\n): Map<string, { value: string | null; hlc: string }> {\n const out = new Map<string, { value: string | null; hlc: string }>();\n for (const c of changes) {\n if (c.hlc > at) continue;\n const cur = out.get(c.col);\n if (!cur || c.hlc > cur.hlc) out.set(c.col, { value: c.value, hlc: c.hlc });\n }\n return out;\n}\n\n/** All oplog changes for one row of a dataset, in HLC order. */\nfunction rowChanges(db: DbDriver, dataset: string, rowId: string): RawChange[] {\n return db\n .query(\n `SELECT ${CHANGE_SELECT} FROM crdt_changes WHERE dataset = ? AND row_id = ? ORDER BY hlc`,\n )\n .all(dataset, rowId) as RawChange[];\n}\n\n// ---- documents ---------------------------------------------------------------\n\n/** Ids of every block that was ever assigned to this document. Whether a block\n * counts at a given cutoff is decided later from its registers at that cutoff. */\nfunction everBlockIds(db: DbDriver, docId: string): string[] {\n return (\n db\n .query(\n \"SELECT DISTINCT row_id FROM crdt_changes WHERE dataset = 'doc_blocks' AND col = 'doc_id' AND value = ?\",\n )\n .all(JSON.stringify(docId)) as { row_id: string }[]\n ).map((r) => r.row_id);\n}\n\n/** Doc register changes + changes of every block ever attached, in HLC order. */\nfunction docChanges(db: DbDriver, docId: string): RawChange[] {\n const blocks = everBlockIds(db, docId);\n const placeholders = blocks.map(() => \"?\").join(\",\");\n const blockClause = blocks.length\n ? ` OR (dataset = 'doc_blocks' AND row_id IN (${placeholders}))`\n : \"\";\n return db\n .query(\n `SELECT ${CHANGE_SELECT} FROM crdt_changes\n WHERE (dataset = 'documents' AND row_id = ?)${blockClause}\n ORDER BY hlc`,\n )\n .all(docId, ...blocks) as RawChange[];\n}\n\nexport interface DocRevision {\n /** Version token (max HLC of the revision) — pass to documentAtVersion/revertDocument. */\n version: string;\n /** Wall-clock time derived from the version HLC (ISO 8601). */\n at: string;\n node_id: string;\n /** Source of the revision: a user edit, a repairHub fix, or a revert. */\n kind: RevisionKind;\n changes: number;\n created: boolean;\n deleted: boolean;\n title_changed: boolean;\n blocks_changed: number;\n blocks_deleted: number;\n}\n\n/** A document's edit history, newest first, clustered into save-sized revisions. */\nexport function listDocumentRevisions(db: DbDriver, id: string): DocRevision[] {\n const changes = docChanges(db, id);\n if (!changes.length) throw new MhError(\"not_found\", `no such document: ${id}`);\n return clusterRevisions(changes)\n .map((group) => {\n const changedBlocks = new Set<string>();\n const deletedBlocks = new Set<string>();\n let created = false;\n let deleted = false;\n let titleChanged = false;\n for (const c of group) {\n if (c.dataset === \"documents\") {\n if (c.col === \"created_hlc\") created = true;\n else if (c.col === \"title\") titleChanged = true;\n else if (c.col === \"__deleted\") deleted = flagSet(c.value);\n } else if (c.col === \"__deleted\" && flagSet(c.value)) {\n deletedBlocks.add(c.row_id);\n } else if (c.col === \"text\") {\n changedBlocks.add(c.row_id);\n }\n }\n const last = group[group.length - 1]!;\n return {\n version: last.hlc,\n at: hlcIso(last.hlc),\n node_id: last.node_id,\n kind: revisionKind(last.txn),\n changes: group.length,\n created,\n deleted,\n title_changed: titleChanged,\n blocks_changed: changedBlocks.size,\n blocks_deleted: deletedBlocks.size,\n };\n })\n .reverse();\n}\n\nexport interface DocumentVersionState {\n id: string;\n title: string;\n body: string;\n deleted: boolean;\n /** Exact version (max HLC <= the requested cutoff) this state corresponds to. */\n version: string;\n}\n\n/** Reconstruct a document as of version cutoff `at` (state at hlc <= at). */\nexport function documentAtVersion(db: DbDriver, id: string, at: string): DocumentVersionState {\n if (!at) throw new MhError(\"invalid_input\", \"missing version cutoff\");\n const changes = docChanges(db, id).filter((c) => c.hlc <= at);\n if (!changes.length)\n throw new MhError(\"not_found\", `no version of document ${id} at or before ${at}`);\n\n const docRegs = registersAt(changes.filter((c) => c.dataset === \"documents\"), at);\n const parse = (col: string): unknown => {\n const r = docRegs.get(col);\n return r?.value == null ? undefined : JSON.parse(r.value);\n };\n\n // Per-block registers at the cutoff; a block counts only if it points at this\n // document, is not tombstoned, and has text — mirroring recomputeDocBody().\n const byBlock = new Map<string, RawChange[]>();\n for (const c of changes) {\n if (c.dataset !== \"doc_blocks\") continue;\n (byBlock.get(c.row_id) ?? byBlock.set(c.row_id, []).get(c.row_id)!).push(c);\n }\n const blocks: { id: string; text: string; order_key: string | null; blankAfter: number }[] = [];\n for (const [blockId, blockChanges] of byBlock) {\n const regs = registersAt(blockChanges, at);\n const reg = (col: string): unknown => {\n const r = regs.get(col);\n return r?.value == null ? undefined : JSON.parse(r.value);\n };\n if (reg(\"doc_id\") !== id) continue;\n if (regs.get(\"__deleted\") && flagSet(regs.get(\"__deleted\")!.value)) continue;\n const text = reg(\"text\");\n if (typeof text !== \"string\" || !text) continue;\n blocks.push({\n id: blockId,\n text,\n order_key: (reg(\"order_key\") as string | undefined) ?? null,\n blankAfter: (reg(\"blank_after\") as number | undefined) ?? 0,\n });\n }\n blocks.sort((a, b) => {\n if (a.order_key !== b.order_key) {\n if (a.order_key === null) return -1; // NULL sorts first, like the SQL ORDER BY\n if (b.order_key === null) return 1;\n return a.order_key < b.order_key ? -1 : 1;\n }\n return a.id < b.id ? -1 : 1;\n });\n\n // Pre-block-model documents kept their body in the documents.body register;\n // it stays authoritative until the first block exists (cf. isBlockManaged).\n const body = byBlock.size\n ? serializeDocBlocks(blocks)\n : ((parse(\"body\") as string | undefined) ?? \"\");\n\n return {\n id,\n title: (parse(\"title\") as string | undefined) ?? \"\",\n body,\n deleted: docRegs.get(\"__deleted\") ? flagSet(docRegs.get(\"__deleted\")!.value) : false,\n version: changes[changes.length - 1]!.hlc,\n };\n}\n\nexport interface RevertDocResult {\n id: string;\n changed: boolean;\n /** The version token the document was restored to. */\n restored: string;\n /** The document's version after the revert (a new head — revert is a forward write). */\n version: string;\n /** True when the revert resurrected a tombstoned document. */\n undeleted: boolean;\n}\n\n/**\n * Restore a document's title/body to a past version, as a new forward edit\n * (reuses updateDocument's block reconcile, so unchanged blocks keep identity).\n * Reverting a tombstoned document resurrects it; children unparented by the\n * delete stay where they are. One change group, so history shows ONE revision.\n */\nexport const revertDocument = grouped(function revertDocument(\n db: DbDriver,\n id: string,\n to: string,\n opts: { ifMatch?: string } = {},\n): RevertDocResult {\n let cur = getDocument(db, id);\n if (!cur && !db.query(\"SELECT 1 AS x FROM documents WHERE id = ?\").get(id))\n throw new MhError(\"not_found\", `no such document: ${id}`);\n if (opts.ifMatch !== undefined && documentVersion(db, id) !== opts.ifMatch)\n throw new MhError(\"stale\", `stale: document changed since ${opts.ifMatch}; re-read first`);\n\n const past = documentAtVersion(db, id, to);\n if (past.deleted)\n throw new MhError(\"invalid_input\", \"target version is a deleted state; use doc delete instead\");\n\n const undeleted = !cur;\n if (!cur) {\n // Resurrect the doc row; its blocks stay tombstoned (the body cache is empty),\n // so the body restore below re-inserts the past blocks via reconcile.\n emit(db, \"documents\", id, \"__deleted\", 0);\n cur = getDocument(db, id)!;\n }\n\n const fields: { title?: string; body?: string } = {};\n if (past.title !== cur.title) fields.title = past.title;\n if (past.body !== (cur.body ?? \"\")) fields.body = past.body;\n if (Object.keys(fields).length) updateDocument(db, id, fields);\n\n return {\n id,\n changed: Object.keys(fields).length > 0 || undeleted,\n restored: past.version,\n version: documentVersion(db, id),\n undeleted,\n };\n}, \"revert\");\n\n// ---- records -------------------------------------------------------------------\n\n/** records-dataset meta columns; every other col is a property cell. */\nconst RECORD_META = new Set([\"database_id\", \"created_hlc\", \"order_key\", \"__deleted\"]);\n\nexport interface RecordRevision {\n version: string;\n at: string;\n node_id: string;\n kind: RevisionKind;\n changes: number;\n created: boolean;\n deleted: boolean;\n /** Property ids of the cells written in this revision. */\n fields: string[];\n moved: boolean;\n}\n\n/** Summarize one change group of a record into a revision. */\nfunction recordRevisionOf(group: RawChange[]): RecordRevision {\n const fields = new Set<string>();\n let created = false;\n let deleted = false;\n let moved = false;\n for (const c of group) {\n if (c.col === \"created_hlc\") created = true;\n else if (c.col === \"__deleted\") deleted = flagSet(c.value);\n else if (c.col === \"order_key\") moved = true;\n else if (!RECORD_META.has(c.col)) fields.add(c.col);\n }\n const last = group[group.length - 1]!;\n return {\n version: last.hlc,\n at: hlcIso(last.hlc),\n node_id: last.node_id,\n kind: revisionKind(last.txn),\n changes: group.length,\n created,\n deleted,\n fields: [...fields],\n moved,\n };\n}\n\n/** A record's edit history, newest first, clustered into save-sized revisions. */\nexport function listRecordRevisions(db: DbDriver, id: string): RecordRevision[] {\n const changes = rowChanges(db, \"records\", id);\n if (!changes.length) throw new MhError(\"not_found\", `no such record: ${id}`);\n return clusterRevisions(changes).map(recordRevisionOf).reverse();\n}\n\n/** One cell's value change inside a revision. A missing `before`/`after` key\n * means the cell did not exist on that side (distinct from an explicit null). */\nexport interface FieldChange {\n prop: string;\n before?: unknown;\n after?: unknown;\n}\n\nexport interface DatabaseActivityEntry extends RecordRevision {\n record_id: string;\n /** Title-property value as of this revision — deleted records keep their last title. */\n record_title: string | null;\n /** Value-level changes of the touched cells. */\n diffs: FieldChange[];\n}\n\n/**\n * \"What happened in this table lately\": every record's revisions, merged and\n * sorted newest first. Includes tombstoned records (so deletions show up) — a\n * read-only aggregation, same clustering as listRecordRevisions per record.\n * Walking each record's change stream oldest-first lets us carry a running\n * cell-state map, so every entry ships its old→new values and a title snapshot\n * for free (no extra queries). After compaction, `before` at the window edge\n * may be missing (the superseded write was pruned) — it reads as \"was empty\".\n */\nexport function listDatabaseActivity(\n db: DbDriver,\n databaseId: string,\n opts: { limit?: number } = {},\n): DatabaseActivityEntry[] {\n if (!db.query(\"SELECT 1 AS x FROM databases WHERE id = ?\").get(databaseId))\n throw new MhError(\"not_found\", `no such database: ${databaseId}`);\n // The first live text property is the de-facto record title (same rule the\n // reference resolver uses).\n const titleProp =\n (\n db\n .query(\n \"SELECT id FROM properties WHERE database_id = ? AND type = 'text' AND __deleted = 0 ORDER BY position LIMIT 1\",\n )\n .get(databaseId) as { id: string } | null\n )?.id ?? null;\n\n const changes = db\n .query(\n `SELECT ${CHANGE_SELECT} FROM crdt_changes\n WHERE dataset = 'records' AND row_id IN (SELECT id FROM records WHERE database_id = ?)\n ORDER BY row_id, hlc`,\n )\n .all(databaseId) as RawChange[];\n\n const out: DatabaseActivityEntry[] = [];\n let start = 0;\n for (let i = 1; i <= changes.length; i++) {\n if (i !== changes.length && changes[i]!.row_id === changes[start]!.row_id) continue;\n const rowId = changes[start]!.row_id;\n // Running cell state, mirroring materialize(): null value = json_remove.\n const state = new Map<string, unknown>();\n for (const g of clusterRevisions(changes.slice(start, i))) {\n const touched = new Set<string>();\n for (const c of g) if (!RECORD_META.has(c.col)) touched.add(c.col);\n const before = new Map<string, unknown>();\n for (const col of touched) if (state.has(col)) before.set(col, state.get(col));\n for (const c of g) {\n if (RECORD_META.has(c.col)) continue;\n if (c.value === null) state.delete(c.col);\n else state.set(c.col, JSON.parse(c.value));\n }\n const diffs: FieldChange[] = [];\n for (const col of touched) {\n const fc: FieldChange = { prop: col };\n if (before.has(col)) fc.before = before.get(col);\n if (state.has(col)) fc.after = state.get(col);\n diffs.push(fc);\n }\n out.push({\n ...recordRevisionOf(g),\n record_id: rowId,\n record_title:\n titleProp && state.has(titleProp) ? String(state.get(titleProp) ?? \"\") : null,\n diffs,\n });\n }\n start = i;\n }\n out.sort((a, b) => (a.version < b.version ? 1 : -1));\n return out.slice(0, opts.limit ?? 100);\n}\n\nexport interface RecordVersionState {\n id: string;\n database_id: string | null;\n deleted: boolean;\n /** Cells present at that version, keyed by property id (raw, no name mapping). */\n data: Record<string, unknown>;\n version: string;\n}\n\n/** Reconstruct a record as of version cutoff `at` (state at hlc <= at). */\nexport function recordAtVersion(db: DbDriver, id: string, at: string): RecordVersionState {\n if (!at) throw new MhError(\"invalid_input\", \"missing version cutoff\");\n const changes = rowChanges(db, \"records\", id).filter((c) => c.hlc <= at);\n if (!changes.length)\n throw new MhError(\"not_found\", `no version of record ${id} at or before ${at}`);\n\n const regs = registersAt(changes, at);\n const data: Record<string, unknown> = {};\n for (const [col, reg] of regs) {\n if (RECORD_META.has(col)) continue;\n if (reg.value === null) continue; // cleared cell (json_remove)\n data[col] = JSON.parse(reg.value);\n }\n const dbReg = regs.get(\"database_id\");\n return {\n id,\n database_id: dbReg?.value == null ? null : (JSON.parse(dbReg.value) as string),\n deleted: regs.get(\"__deleted\") ? flagSet(regs.get(\"__deleted\")!.value) : false,\n data,\n version: changes[changes.length - 1]!.hlc,\n };\n}\n\nexport interface RevertRecordResult {\n id: string;\n changed: boolean;\n /** Property ids whose cells were written by the revert. */\n fields: string[];\n /** True when the revert resurrected a tombstoned record. */\n undeleted: boolean;\n restored: string;\n}\n\n/** Restore a record's cells to a past version as a new forward edit. Only cells\n * of currently-live properties are touched, so no orphan cells are recreated\n * (the repairHub invariant). Reverting a tombstoned record resurrects it. */\nexport const revertRecord = grouped(function revertRecord(\n db: DbDriver,\n id: string,\n to: string,\n): RevertRecordResult {\n const cur = db\n .query(\"SELECT database_id, data, __deleted FROM records WHERE id = ?\")\n .get(id) as { database_id: string | null; data: string; __deleted: number } | null;\n if (!cur) throw new MhError(\"not_found\", `no such record: ${id}`);\n\n const past = recordAtVersion(db, id, to);\n if (past.deleted)\n throw new MhError(\"invalid_input\", \"target version is a deleted state; use record delete instead\");\n\n const liveProps = new Set(\n cur.database_id ? listProperties(db, cur.database_id).map((p) => p.id) : [],\n );\n const curData = JSON.parse(cur.data || \"{}\") as Record<string, unknown>;\n const fields: string[] = [];\n for (const propId of liveProps) {\n const inPast = Object.hasOwn(past.data, propId);\n const inCur = Object.hasOwn(curData, propId);\n if (inPast && (!inCur || JSON.stringify(past.data[propId]) !== JSON.stringify(curData[propId]))) {\n emit(db, \"records\", id, propId, past.data[propId]);\n fields.push(propId);\n } else if (!inPast && inCur) {\n emit(db, \"records\", id, propId, undefined); // clear: materializes as json_remove\n fields.push(propId);\n }\n }\n const undeleted = cur.__deleted !== 0;\n if (undeleted) emit(db, \"records\", id, \"__deleted\", 0);\n\n return { id, changed: fields.length > 0 || undeleted, fields, undeleted, restored: past.version };\n}, \"revert\");\n\n// ---- properties (schema-level rollback) ------------------------------------------\n\n/** Property register columns that make up the column definition. */\nconst PROP_DEF_COLS = [\"name\", \"type\", \"config\", \"position\"] as const;\n\nexport interface PropertyRevision {\n version: string;\n at: string;\n node_id: string;\n kind: RevisionKind;\n changes: number;\n created: boolean;\n deleted: boolean;\n /** Definition columns touched in this revision (name/type/config/position). */\n fields: string[];\n /** Record cells the same change group cleared (a type change / removal cascade). */\n cells_cleared: number;\n}\n\n/** A property's definition history, newest first. Cascaded cell clears are\n * counted via the shared txn so a type change reads as one revision. */\nexport function listPropertyRevisions(db: DbDriver, id: string): PropertyRevision[] {\n const changes = rowChanges(db, \"properties\", id);\n if (!changes.length) throw new MhError(\"not_found\", `no such property: ${id}`);\n const clearedByTxn = new Map<string, number>(\n (\n db\n .query(\n \"SELECT txn, COUNT(*) AS n FROM crdt_changes WHERE dataset = 'records' AND col = ? AND txn IS NOT NULL GROUP BY txn\",\n )\n .all(id) as { txn: string; n: number }[]\n ).map((r) => [r.txn, r.n]),\n );\n return clusterRevisions(changes)\n .map((group) => {\n const fields = new Set<string>();\n let created = false;\n let deleted = false;\n for (const c of group) {\n if (c.col === \"database_id\") created = true; // only emitted at creation\n else if (c.col === \"__deleted\") deleted = flagSet(c.value);\n else if ((PROP_DEF_COLS as readonly string[]).includes(c.col)) fields.add(c.col);\n }\n const last = group[group.length - 1]!;\n return {\n version: last.hlc,\n at: hlcIso(last.hlc),\n node_id: last.node_id,\n kind: revisionKind(last.txn),\n changes: group.length,\n created,\n deleted,\n fields: [...fields],\n cells_cleared: last.txn ? (clearedByTxn.get(last.txn) ?? 0) : 0,\n };\n })\n .reverse();\n}\n\nexport interface PropertyVersionState {\n id: string;\n database_id: string | null;\n name: string;\n type: string;\n config: unknown;\n position: number | null;\n deleted: boolean;\n version: string;\n}\n\n/** Reconstruct a property definition as of version cutoff `at`. */\nexport function propertyAtVersion(db: DbDriver, id: string, at: string): PropertyVersionState {\n if (!at) throw new MhError(\"invalid_input\", \"missing version cutoff\");\n const changes = rowChanges(db, \"properties\", id).filter((c) => c.hlc <= at);\n if (!changes.length)\n throw new MhError(\"not_found\", `no version of property ${id} at or before ${at}`);\n const regs = registersAt(changes, at);\n const reg = (col: string): unknown => {\n const r = regs.get(col);\n return r?.value == null ? undefined : JSON.parse(r.value);\n };\n return {\n id,\n database_id: (reg(\"database_id\") as string | undefined) ?? null,\n name: (reg(\"name\") as string | undefined) ?? \"\",\n type: (reg(\"type\") as string | undefined) ?? \"text\",\n config: reg(\"config\") ?? null,\n position: (reg(\"position\") as number | undefined) ?? null,\n deleted: regs.get(\"__deleted\") ? flagSet(regs.get(\"__deleted\")!.value) : false,\n version: changes[changes.length - 1]!.hlc,\n };\n}\n\nexport interface RevertPropertyResult {\n id: string;\n changed: boolean;\n /** Definition columns the revert wrote. */\n fields: string[];\n /** Record cells restored to their value at the target version. */\n restored_cells: number;\n /** Cells left alone because a user wrote them after the target version. */\n skipped_cells: number;\n undeleted: boolean;\n restored: string;\n}\n\n/**\n * Schema-level rollback: restore a property's definition AND the record cells\n * its later type-change/removal cascades cleared. Definition registers are\n * emitted directly (never via updateProperty — its type-change cascade would\n * re-clear the cells being restored). A cell is only touched when its current\n * winner IS the cascade (or a repair); it is restored to the last value before\n * that cascade, so user data — written before or after the target version —\n * always survives. Cells whose winner is a user write are kept (skipped_cells).\n * Pre-txn legacy writes can't be attributed, so they count as user writes.\n */\nexport const revertProperty = grouped(function revertProperty(\n db: DbDriver,\n id: string,\n to: string,\n): RevertPropertyResult {\n const cur = db\n .query(\n \"SELECT database_id, name, type, config, position, __deleted FROM properties WHERE id = ?\",\n )\n .get(id) as {\n database_id: string | null;\n name: string | null;\n type: string | null;\n config: string | null;\n position: number | null;\n __deleted: number;\n } | null;\n if (!cur) throw new MhError(\"not_found\", `no such property: ${id}`);\n\n const past = propertyAtVersion(db, id, to);\n if (past.deleted)\n throw new MhError(\"invalid_input\", \"target version is a deleted state; use prop remove instead\");\n\n // 1) Restore the column definition (diff only — no cascades).\n const curDef: Record<string, unknown> = {\n name: cur.name,\n type: cur.type,\n config: cur.config ? JSON.parse(cur.config) : null,\n position: cur.position,\n };\n const pastDef: Record<string, unknown> = {\n name: past.name,\n type: past.type,\n config: past.config,\n position: past.position,\n };\n const fields: string[] = [];\n for (const col of PROP_DEF_COLS) {\n if (JSON.stringify(pastDef[col] ?? null) !== JSON.stringify(curDef[col] ?? null)) {\n emit(db, \"properties\", id, col, pastDef[col]);\n fields.push(col);\n }\n }\n const undeleted = cur.__deleted !== 0;\n if (undeleted) emit(db, \"properties\", id, \"__deleted\", 0);\n\n // 2) Restore the cells. Cascade writes are identified by sharing a txn with a\n // post-target change to this property's own registers.\n const schemaTxns = new Set(\n (\n db\n .query(\n \"SELECT DISTINCT txn FROM crdt_changes WHERE dataset = 'properties' AND row_id = ? AND hlc > ? AND txn IS NOT NULL\",\n )\n .all(id, to) as { txn: string }[]\n ).map((r) => r.txn),\n );\n const cellChanges = db\n .query(\n \"SELECT row_id, hlc, value, txn FROM crdt_changes WHERE dataset = 'records' AND col = ? ORDER BY row_id, hlc\",\n )\n .all(id) as { row_id: string; hlc: string; value: string | null; txn: string | null }[];\n\n const isCascade = (txn: string | null): boolean =>\n txn !== null && (schemaTxns.has(txn) || txn.startsWith(\"repair:\"));\n\n let restored = 0;\n let skipped = 0;\n let i = 0;\n while (i < cellChanges.length) {\n const rowId = cellChanges[i]!.row_id;\n let winner = cellChanges[i]!;\n let lastUser: { value: string | null } | null = null; // latest non-cascade write\n for (; i < cellChanges.length && cellChanges[i]!.row_id === rowId; i++) {\n winner = cellChanges[i]!;\n if (!isCascade(winner.txn)) lastUser = winner;\n }\n if (winner.hlc <= to) continue; // untouched since the target version\n if (!isCascade(winner.txn)) {\n skipped++; // current value is a user write — keep it\n continue;\n }\n const target = lastUser ? lastUser.value : null; // null = cell never had a user value\n if (target === winner.value) continue; // converged back on its own\n emit(db, \"records\", rowId, id, target === null ? undefined : JSON.parse(target));\n restored++;\n }\n\n return {\n id,\n changed: fields.length > 0 || undeleted || restored > 0,\n fields,\n restored_cells: restored,\n skipped_cells: skipped,\n undeleted,\n restored: past.version,\n };\n}, \"revert\");\n\nexport interface FieldHistoryEntry {\n version: string;\n at: string;\n node_id: string;\n /** The value written; undefined when the write cleared the cell. */\n value: unknown;\n cleared: boolean;\n}\n\n/** The full write trail of one record cell (property id), newest first. */\nexport function recordFieldHistory(db: DbDriver, id: string, propId: string): FieldHistoryEntry[] {\n const rows = db\n .query(\n \"SELECT hlc, node_id, value FROM crdt_changes WHERE dataset = 'records' AND row_id = ? AND col = ? ORDER BY hlc DESC\",\n )\n .all(id, propId) as { hlc: string; node_id: string; value: string | null }[];\n return rows.map((r) => ({\n version: r.hlc,\n at: hlcIso(r.hlc),\n node_id: r.node_id,\n value: r.value === null ? undefined : JSON.parse(r.value),\n cleared: r.value === null,\n }));\n}\n"
|
|
114
119
|
],
|
|
115
|
-
"mappings": "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AA;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAi0BT,WAA0B;AAAA;;;;;;;ACl0B9B,eAAsB,SAAS,CAAC,KAAc,KAAyC;AAAA,EACrF,MAAM,OAAM,IAAI,IAAI,IAAI,GAAG;AAAA,EAC3B,MAAM,OAAO,KAAI,SAAS,MAAM,UAAU,MAAM;AAAA,EAChD,IAAI,SAAS;AAAA,IAAI,OAAO;AAAA,EAExB,MAAM,QAAQ,KAAK,QAAQ,GAAG;AAAA,EAC9B,MAAM,OAAO,mBAAmB,UAAU,KAAK,OAAO,KAAK,MAAM,GAAG,KAAK,CAAC;AAAA,EAG1E,IAAI,UAAU;AAAA,IAAI,OAAO,SAAS,SAAS,GAAG,KAAI,gBAAgB,SAAS,GAAG;AAAA,EAE9E,MAAM,WAAW,mBAAmB,KAAK,MAAM,QAAQ,CAAC,CAAC;AAAA,EAEzD,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,YAAY,IAAI,IAAI,IAAI,EAAE;AAAA,IACnC,MAAM;AAAA,IACN,OAAO,IAAI,SAAS,kBAAkB,EAAE,QAAQ,IAAI,CAAC;AAAA;AAAA,EAGvD,MAAM,QAAO,MAAM,gBAAgB,IAAI,IAAI,QAAQ,QAAQ;AAAA,EAC3D,IAAI,CAAC;AAAA,IAAM,OAAO,IAAI,SAAS,aAAa,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC3D,OAAO,IAAI,SAAS,MAAK,OAAO,EAAE,SAAS,EAAE,gBAAgB,MAAK,YAAY,EAAE,CAAC;AAAA;AAAA;AAAA,EA7BnF;AAAA;;;ACDA;;;ACEA;AAFA;AACA;;;ACDO,IAAM,cAAc;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;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;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4IpB,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC3I1B;AACA;;;ACDA;AACA;AASO,SAAS,cAAc,CAC5B,IACA,MACa;AAAA,EACb,MAAM,KAAK,MAAM,MAAM,KAAK,IAAI;AAAA,EAChC,MAAM,QAAQ,KAAK,IAAI,aAAa,IAAI,QAAQ,KAAK,IAAI;AAAA,EACzD,KAAK,IAAI,aAAa,IAAI,eAAe,MAAM,GAAG;AAAA,EAClD,IAAI,KAAK,SAAS;AAAA,IAAW,KAAK,IAAI,aAAa,IAAI,QAAQ,KAAK,IAAI;AAAA,EACxE,OAAO,YAAY,IAAI,EAAE;AAAA;AAGpB,SAAS,cAAc,CAC5B,IACA,IACA,QACa;AAAA,EACb,IAAI,CAAC,YAAY,IAAI,EAAE;AAAA,IAAG,MAAM,IAAI,MAAM,qBAAqB,IAAI;AAAA,EACnE,IAAI,OAAO,SAAS;AAAA,IAAW,KAAK,IAAI,aAAa,IAAI,QAAQ,OAAO,IAAI;AAAA,EAC5E,IAAI,OAAO,SAAS;AAAA,IAAW,KAAK,IAAI,aAAa,IAAI,QAAQ,OAAO,IAAI;AAAA,EAC5E,OAAO,YAAY,IAAI,EAAE;AAAA;AAGpB,SAAS,WAAW,CAAC,IAAc,IAAgC;AAAA,EACxE,OAAO,GACJ,MACC,kFACF,EACC,IAAI,EAAE;AAAA;AAGJ,SAAS,aAAa,CAAC,IAA6B;AAAA,EACzD,OAAO,GACJ,MACC,4FACF,EACC,IAAI;AAAA;AAGF,SAAS,cAAc,CAAC,IAAc,IAAqB;AAAA,EAChE,IAAI,CAAC,YAAY,IAAI,EAAE;AAAA,IAAG,OAAO;AAAA,EACjC,KAAK,IAAI,aAAa,IAAI,aAAa,CAAC;AAAA,EAMxC,MAAM,YAAY,CAAC,UAAkB;AAAA,IACnC,WAAW,KAAK,aAAa,IAAI,OAAO,eAAe,EAAE;AAAA,MACvD,KAAK,IAAI,OAAO,GAAG,aAAa,CAAC;AAAA;AAAA,EAErC,UAAU,YAAY;AAAA,EACtB,UAAU,SAAS;AAAA,EACnB,WAAW,KAAK,aAAa,IAAI,aAAa,eAAe,EAAE;AAAA,IAC7D,KAAK,IAAI,aAAa,GAAG,eAAe,IAAI;AAAA,EAI9C,GAAG,MAAM,yDAAyD,EAAE,IAAI,EAAE;AAAA,EAC1E,OAAO;AAAA;AAIT,SAAS,YAAY,CAAC,IAAc,OAAe,KAAa,UAA4B;AAAA,EAC1F,OACE,GACG,MAAM,kBAAkB,eAAe,2BAA2B,EAClE,IAAI,QAAQ,EACf,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA;;;AC7EnB;AACA;;;ACKA,IAAM,2BAA2B;AAGjC,SAAS,QAAQ,CAAC,GAAmB;AAAA,EACnC,OAAO,EAAE,QAAQ,kBAAkB,GAAG;AAAA;AAIxC,SAAS,GAAG,CAAC,GAAmB;AAAA,EAC9B,OAAO,EAAE,QAAQ,MAAM,IAAI;AAAA;AAG7B,SAAS,SAAS,CAAC,YAAoB,QAAwB;AAAA,EAC7D,OAAO,WAAW,SAAS,UAAU,KAAK,SAAS,MAAM;AAAA;AAGpD,SAAS,QAAQ,CAAC,IAAc,YAAoB,QAAyB;AAAA,EAClF,MAAM,MAAM,GACT,MAAM,qEAAqE,EAC3E,IAAI,UAAU,YAAY,MAAM,CAAC;AAAA,EACpC,OAAO,OAAO;AAAA;AAQT,SAAS,eAAe,CAAC,IAAc,YAAoB,QAAsB;AAAA,EACtF,MAAM,OAAO,UAAU,YAAY,MAAM;AAAA,EACzC,GAAG,KACD,+BAA+B,+BAA+B,IAAI,MAAM,sBACtE,wBAAwB,IAAI,UAAU,sBAC1C;AAAA;AAQK,SAAS,cAAc,CAAC,IAAc,YAAoB,MAAyB;AAAA,EACxF,IAAI,SAAS,IAAI,YAAY,KAAK,EAAE;AAAA,IAAG;AAAA,EACvC,IAAI,KAAK,SAAS,YAAY;AAAA,IAC5B,MAAM,MAAM,GACT,MACC,2EACF,EACC,IAAI,UAAU;AAAA,IACjB,IAAI,IAAI,IAAI;AAAA,MAA0B;AAAA,EACxC;AAAA,EACA,gBAAgB,IAAI,YAAY,KAAK,EAAE;AAAA;;;AD1ClC,IAAM,aAAkC,IAAI,IAAI;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAkBD,SAAS,cAAc,CAAC,MAAgB,QAA0C;AAAA,EAChF,IAAI,SAAS,YAAY,SAAS,gBAAgB;AAAA,IAChD,MAAM,OAAO,QAAQ;AAAA,IACrB,IAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AAAA,MACvF,MAAM,IAAI,MAAM,GAAG,wCAAwC;AAAA,EAC/D;AAAA,EACA,IAAI,SAAS,YAAY;AAAA,IACvB,IAAI,OAAO,QAAQ,aAAa;AAAA,MAC9B,MAAM,IAAI,MAAM,wDAAwD;AAAA,EAC5E;AAAA;AAGF,SAAS,YAAY,CAAC,IAAc,YAA4B;AAAA,EAC9D,MAAM,MAAM,GACT,MACC,mFACF,EACC,IAAI,UAAU;AAAA,EACjB,QAAQ,IAAI,KAAK,KAAK;AAAA;AAGjB,SAAS,WAAW,CACzB,IACA,YACA,MAUa;AAAA,EACb,IAAI,CAAC,YAAY,IAAI,UAAU;AAAA,IAAG,MAAM,IAAI,MAAM,qBAAqB,YAAY;AAAA,EACnF,IAAI,CAAC,WAAW,IAAI,KAAK,IAAI;AAAA,IAAG,MAAM,IAAI,MAAM,0BAA0B,KAAK,MAAM;AAAA,EACrF,eAAe,KAAK,MAAM,KAAK,MAAM;AAAA,EAIrC,MAAM,SAAgC,KAAK,UACvC,KAAM,KAAK,UAAU,CAAC,GAAI,SAAS,KAAK,IACvC,KAAK,UAAU;AAAA,EAEpB,MAAM,KAAK,MAAM,QAAQ,KAAK,IAAI;AAAA,EAClC,KAAK,IAAI,cAAc,IAAI,eAAe,UAAU;AAAA,EACpD,KAAK,IAAI,cAAc,IAAI,QAAQ,KAAK,IAAI;AAAA,EAC5C,KAAK,IAAI,cAAc,IAAI,QAAQ,KAAK,IAAI;AAAA,EAC5C,KAAK,IAAI,cAAc,IAAI,UAAU,MAAM;AAAA,EAC3C,KAAK,IAAI,cAAc,IAAI,YAAY,KAAK,YAAY,aAAa,IAAI,UAAU,CAAC;AAAA,EAGpF,IAAI,KAAK,SAAS,cAAc,KAAK,YAAY;AAAA,IAC/C,gBAAgB,IAAI,YAAY,EAAE;AAAA,EACpC,OAAO,YAAY,IAAI,EAAE;AAAA;AAGpB,SAAS,WAAW,CAAC,IAAc,IAAgC;AAAA,EACxE,MAAM,MAAM,GACT,MACC,qGACF,EACC,IAAI,EAAE;AAAA,EACT,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAU,KAAK,MAAM,IAAI,MAAM,IAAuB,KAAK;AAAA;AAGnF,SAAS,cAAc,CAAC,IAAc,YAAmC;AAAA,EAC9E,MAAM,OAAO,GACV,MACC,gIACF,EACC,IAAI,UAAU;AAAA,EACjB,OAAO,KAAK,IAAI,CAAC,OAAO;AAAA,OACnB;AAAA,IACH,QAAQ,EAAE,SAAU,KAAK,MAAM,EAAE,MAAM,IAAuB;AAAA,EAChE,EAAE;AAAA;AAGG,SAAS,cAAc,CAC5B,IACA,IACA,QACa;AAAA,EACb,MAAM,MAAM,YAAY,IAAI,EAAE;AAAA,EAC9B,IAAI,CAAC;AAAA,IAAK,MAAM,IAAI,MAAM,qBAAqB,IAAI;AAAA,EAEnD,MAAM,cAAc,OAAO,SAAS,aAAa,OAAO,SAAS,IAAI;AAAA,EACrE,IAAI,OAAO,SAAS,aAAa,CAAC,WAAW,IAAI,OAAO,IAAI;AAAA,IAC1D,MAAM,IAAI,MAAM,0BAA0B,OAAO,MAAM;AAAA,EAGzD,MAAM,gBAAgB,OAAO,QAAQ,IAAI;AAAA,EACzC,IAAI,OAAO,WAAW;AAAA,IAAW,eAAe,eAAe,OAAO,MAAM;AAAA,EACvE,SAAI;AAAA,IAAa,eAAe,OAAO,MAAO,SAAS;AAAA,EAE5D,IAAI,OAAO,SAAS;AAAA,IAAW,KAAK,IAAI,cAAc,IAAI,QAAQ,OAAO,IAAI;AAAA,EAC7E,IAAI,OAAO,SAAS;AAAA,IAAW,KAAK,IAAI,cAAc,IAAI,QAAQ,OAAO,IAAI;AAAA,EAC7E,IAAI,OAAO,WAAW;AAAA,IAAW,KAAK,IAAI,cAAc,IAAI,UAAU,OAAO,MAAM;AAAA,EACnF,IAAI,OAAO,aAAa;AAAA,IAAW,KAAK,IAAI,cAAc,IAAI,YAAY,OAAO,QAAQ;AAAA,EAKzF,IAAI,aAAa;AAAA,IACf,MAAM,OAAO,GACV,MACC,2FACF,EACC,IAAI,IAAI,aAAa,EAAE;AAAA,IAC1B,WAAW,KAAK;AAAA,MAAM,KAAK,IAAI,WAAW,EAAE,IAAI,IAAI,IAAI;AAAA,EAC1D;AAAA,EACA,OAAO,YAAY,IAAI,EAAE;AAAA;AAMpB,SAAS,gBAAgB,CAAC,IAAc,IAAY,OAA4B;AAAA,EACrF,MAAM,MAAM,YAAY,IAAI,EAAE;AAAA,EAC9B,IAAI,CAAC;AAAA,IAAK,MAAM,IAAI,MAAM,qBAAqB,IAAI;AAAA,EACnD,IAAI,CAAC,OAAO,SAAS,KAAK;AAAA,IAAG,MAAM,IAAI,MAAM,+BAA+B;AAAA,EAC5E,MAAM,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,MAAM,KAAK,MAAM,KAAK,CAAC,CAAC;AAAA,EACxD,OAAO,eAAe,IAAI,IAAI,EAAE,QAAQ,KAAM,IAAI,UAAU,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;AAAA;AAGxE,SAAS,cAAc,CAAC,IAAc,IAAqB;AAAA,EAChE,MAAM,OAAO,YAAY,IAAI,EAAE;AAAA,EAC/B,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAClB,KAAK,IAAI,cAAc,IAAI,aAAa,CAAC;AAAA,EAIzC,MAAM,OAAO,GACV,MACC,2FACF,EACC,IAAI,KAAK,aAAa,EAAE;AAAA,EAC3B,WAAW,KAAK;AAAA,IAAM,KAAK,IAAI,WAAW,EAAE,IAAI,IAAI,SAAS;AAAA,EAC7D,OAAO;AAAA;;;AEtLT;AAkBA,IAAM,QAAsC;AAAA,EAC1C,IAAI,EAAE,OAAO,aAAa,SAAS,QAAQ,QAAQ,OAAO,MAAM,WAAW;AAAA,EAC3E,MAAM,EAAE,OAAO,cAAc,SAAS,QAAQ,QAAQ,MAAM,MAAM,WAAW;AAAA,EAC7E,KAAK,EAAE,OAAO,WAAW,SAAS,MAAM,QAAQ,MAAM,MAAM,SAAS;AAAA,EACrE,KAAK,EAAE,OAAO,aAAa,SAAS,SAAS,QAAQ,MAAM,MAAM,WAAW;AAC9E;AAEA,IAAM,eAA6B,CAAC,MAAM,QAAQ,OAAO,KAAK;AAE9D,SAAS,QAAQ,CAAC,GAAiC;AAAA,EACjD,OAAO,MAAM,QAAQ,MAAM;AAAA;AAQ7B,IAAM,KAAK;AAGX,SAAS,WAAW,CAAC,IAAc,YAAmC;AAAA,EACpE,MAAM,MAAM,GACT,MACC,+GACF,EACC,IAAI,UAAU;AAAA,EACjB,OAAO,KAAK,MAAM;AAAA;AAIpB,SAAS,SAAS,CAChB,IACA,MACA,KACA,YACa;AAAA,EACb,MAAM,OAAO,MAAM;AAAA,EAGnB,IAAI,UAAU,KAAK;AAAA,EACnB,IAAI,SAAS,SAAS,YAAY;AAAA,IAChC,MAAM,KAAK,YAAY,IAAI,UAAU;AAAA,IACrC,IAAI;AAAA,MAAI,UAAU,aAAa,GAAG,QAAQ,MAAM,IAAI;AAAA,EACtD;AAAA,EACA,MAAM,YAAY,WAAW;AAAA,EAC7B,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,OAAmB,CAAC;AAAA,EAG1B,MAAM,KAAK,sBAAsB;AAAA,EACjC,KAAK,KAAK,KAAK,MAAM,EAAE;AAAA,EAEvB,MAAM,QAAQ,GAAG,QAAQ;AAAA,EACzB,MAAM,KAAK,sBAAsB;AAAA,EACjC,KAAK,KAAK,OAAO,QAAQ,EAAE;AAAA,EAE3B,IAAI,SAAS;AAAA,IACX,MAAM,KAAK,SAAS,qBAAqB;AAAA,IACzC,KAAK,KAAK,GAAG;AAAA,EACf;AAAA,EAEA,IAAI,MAAM,cAAc,2BAA2B,KAAK,kCAAkC,MAAM,KAAK,MAAM;AAAA,EAC3G,IAAI,KAAK,UAAU,YAAY;AAAA,IAC7B,OAAO;AAAA,IACP,KAAK,KAAK,UAAU;AAAA,EACtB;AAAA,EAEA,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,IAAI,GAAG,IAAI;AAAA,EACtC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,IAAI,OAAO,EAAE,SAAS,GAAG,EAAE;AAAA;AAS5D,SAAS,iBAAiB,CAC/B,IACA,KACA,OAAmD,CAAC,GACvC;AAAA,EACb,MAAM,QAAsB,KAAK,OAC7B,CAAC,KAAK,IAAI,IACV,SAAS,OAAO,GAAG,CAAC,IAClB,CAAC,OAAO,GAAG,CAAe,IAC1B;AAAA,EAEN,MAAM,MAAmB,CAAC;AAAA,EAC1B,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,KAAK,OAAO;AAAA,IACrB,WAAW,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,UAAU,GAAG;AAAA,MACtD,IAAI,KAAK,IAAI,EAAE,EAAE;AAAA,QAAG;AAAA,MACpB,KAAK,IAAI,EAAE,EAAE;AAAA,MACb,IAAI,KAAK,CAAC;AAAA,IACZ;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,GAAG,CAAC,OAA4B;AAAA,EACvC,OAAO,MACJ,IAAI,CAAC,MAAM,KAAK,EAAE,KAAK,EAAE,QAAQ,OAAO,EAAE,QAAQ,QAAQ,EAAE,OAAO,EACnE,KAAK;AAAA,CAAI;AAAA;AAQP,SAAS,aAAa,CAC3B,IACA,KACA,OAAmD,CAAC,GACzC;AAAA,EACX,MAAM,QAAQ,kBAAkB,IAAI,KAAK,IAAI;AAAA,EAC7C,MAAM,QAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG;AAAA,EAC9C,IAAI,MAAM,WAAW;AAAA,IAAG,OAAO,MAAM;AAAA,EACrC,IAAI,MAAM,WAAW,KAAK,MAAM,WAAW;AAAA,IAAG,OAAO,MAAM;AAAA,EAE3D,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,MAAM,OAAO,KAAK,OAAO,MAAM,KAAK,MAAM,OAAO;AAAA,IACjD,MAAM,IAAI,MAAM,WAAW,SAAS,KAAK;AAAA,EAC3C;AAAA,EACA,MAAM,QAAQ,MAAM,SAAS,IAAI,QAAQ;AAAA,EACzC,MAAM,IAAI,MACR,cAAc,eAAS,MAAM;AAAA,EAAoB,IAAI,KAAK;AAAA,uBAC5D;AAAA;AAIK,SAAS,UAAU,CACxB,IACA,KACA,OAAmD,CAAC,GAC5C;AAAA,EACR,OAAO,cAAc,IAAI,KAAK,IAAI,EAAE;AAAA;;;ACtJtC,IAAM,SAAS;AAOf,SAAS,QAAQ,CAAC,GAAW,GAA0B;AAAA,EACrD,MAAM,OAAO,OAAO;AAAA,EACpB,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,MAAM,IAAI,MAAM,YAAY,QAAQ,GAAG;AAAA,EACjE,IAAI,EAAE,SAAS,IAAI,KAAM,MAAM,QAAQ,EAAE,SAAS,IAAI;AAAA,IACpD,MAAM,IAAI,MAAM,6BAA6B,KAAK,GAAG;AAAA,EAEvD,IAAI,MAAM,MAAM;AAAA,IAEd,IAAI,IAAI;AAAA,IACR,QAAQ,EAAE,MAAM,UAAU,EAAE;AAAA,MAAI;AAAA,IAChC,IAAI,IAAI;AAAA,MAAG,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAAA,EACnE;AAAA,EAEA,MAAM,KAAK,MAAM,KAAK,IAAI,OAAO,QAAQ,EAAE,EAAG;AAAA,EAC9C,MAAM,KAAK,MAAM,OAAO,OAAO,SAAS,OAAO,QAAQ,EAAE,EAAG;AAAA,EAC5D,IAAI,KAAK,KAAK,GAAG;AAAA,IACf,MAAM,MAAM,KAAK,MAAM,OAAO,KAAK,GAAG;AAAA,IACtC,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,IAAI,MAAM,QAAQ,EAAE,SAAS;AAAA,IAAG,OAAO,EAAE,MAAM,GAAG,CAAC;AAAA,EACnD,OAAO,OAAO,MAAO,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI;AAAA;AAIzC,SAAS,UAAU,CAAC,GAAkB,GAA0B;AAAA,EACrE,OAAO,SAAS,KAAK,IAAI,CAAC;AAAA;AAIrB,SAAS,WAAW,CACzB,GACA,GACA,GACU;AAAA,EACV,IAAI,KAAK;AAAA,IAAG,OAAO,CAAC;AAAA,EACpB,IAAI,MAAM;AAAA,IAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;AAAA,EAErC,IAAI,MAAM,MAAM;AAAA,IACd,IAAI,OAAO,WAAW,GAAG,IAAI;AAAA,IAC7B,MAAM,MAAM,CAAC,IAAI;AAAA,IACjB,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,MAC1B,OAAO,WAAW,MAAM,IAAI;AAAA,MAC5B,IAAI,KAAK,IAAI;AAAA,IACf;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,MAAM,MAAM;AAAA,IACd,IAAI,OAAO,WAAW,MAAM,CAAC;AAAA,IAC7B,MAAM,MAAM,CAAC,IAAI;AAAA,IACjB,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,MAC1B,OAAO,WAAW,MAAM,IAAI;AAAA,MAC5B,IAAI,QAAQ,IAAI;AAAA,IAClB;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,MAAM,KAAK,MAAM,IAAI,CAAC;AAAA,EAC5B,MAAM,IAAI,WAAW,GAAG,CAAC;AAAA,EACzB,OAAO,CAAC,GAAG,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC;AAAA;;;AL9DzE,SAAS,WAAW,CAAC,GAA4C;AAAA,EAC/D,OAAO,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,OAAO,MAAM;AAAA;AAIxE,SAAS,cAAc,CAAC,GAAwC;AAAA,EAC9D,OAAO,OAAO,MAAM,YAAa,IAAI,IAAI,IAAK;AAAA;AAsBhD,SAAS,eAAe,CAAC,IAAc,MAAmB,OAAuB;AAAA,EAC/E,MAAM,SAAS,KAAK,QAAQ;AAAA,EAC5B,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,MAAM,QAAQ,kBAAkB,IAAI,OAAO,EAAE,MAAM,OAAO,YAAY,OAAO,CAAC;AAAA,EAC9E,MAAM,QAAQ,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK;AAAA,EAC9C,IAAI;AAAA,IAAO,OAAO,MAAM;AAAA,EACxB,IAAI,MAAM,WAAW;AAAA,IAAG,OAAO,MAAM,GAAI;AAAA,EACzC,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,IAAI,OAAO,KAAK,MAAM;AAAA,MAAO,OAAO;AAAA,IACpC,MAAM,IAAI,MAAM,GAAG,KAAK,4CAA4C,OAAO;AAAA,EAC7E;AAAA,EACA,MAAM,IAAI,MAAM,GAAG,KAAK,6BAA6B,WAAW,MAAM,gCAAgC;AAAA;AAIxG,SAAS,MAAM,CAAC,IAAc,MAAmB,OAAyB;AAAA,EACxE,QAAQ,KAAK;AAAA,SACN;AAAA,SACA;AAAA,SACA,QAAQ;AAAA,MACX,IAAI,UAAU;AAAA,QAAM,OAAO;AAAA,MAC3B,IAAI,OAAO,UAAU;AAAA,QAAU,MAAM,IAAI,MAAM,GAAG,KAAK,uBAAuB;AAAA,MAC9E,OAAO;AAAA,IACT;AAAA,SACK,UAAU;AAAA,MACb,IAAI,UAAU;AAAA,QAAM,OAAO;AAAA,MAC3B,MAAM,IAAI,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AAAA,MAC1D,IAAI,CAAC,OAAO,SAAS,CAAC;AAAA,QAAG,MAAM,IAAI,MAAM,GAAG,KAAK,uBAAuB;AAAA,MACxE,OAAO;AAAA,IACT;AAAA,SACK,YAAY;AAAA,MACf,IAAI,OAAO,UAAU;AAAA,QAAW,OAAO;AAAA,MACvC,IAAI,UAAU,UAAU,UAAU;AAAA,QAAG,OAAO;AAAA,MAC5C,IAAI,UAAU,WAAW,UAAU,KAAK,UAAU;AAAA,QAAM,OAAO;AAAA,MAC/D,MAAM,IAAI,MAAM,GAAG,KAAK,wBAAwB;AAAA,IAClD;AAAA,SACK,UAAU;AAAA,MACb,IAAI,UAAU;AAAA,QAAM,OAAO;AAAA,MAC3B,MAAM,IAAI,OAAO,KAAK;AAAA,MACtB,IAAI,CAAC,KAAK,QAAQ,SAAS,SAAS,CAAC;AAAA,QACnC,MAAM,IAAI,MAAM,GAAG,KAAK,UAAU,6BAA6B;AAAA,MACjE,OAAO;AAAA,IACT;AAAA,SACK,gBAAgB;AAAA,MACnB,MAAM,MAAM,UAAU,OAAO,CAAC,IAAI,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,MACvE,MAAM,OAAO,KAAK,QAAQ,WAAW,CAAC;AAAA,MACtC,WAAW,QAAQ;AAAA,QACjB,IAAI,CAAC,KAAK,SAAS,OAAO,IAAI,CAAC;AAAA,UAC7B,MAAM,IAAI,MAAM,GAAG,KAAK,UAAU,gCAAgC;AAAA,MACtE,OAAO,IAAI,IAAI,MAAM;AAAA,IACvB;AAAA,SACK,YAAY;AAAA,MACf,MAAM,MAAM,UAAU,OAAO,CAAC,IAAI,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,MACvE,OAAO,IAAI,IAAI,CAAC,MAAM,gBAAgB,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC;AAAA,IAC5D;AAAA;AAAA;AAKJ,SAAS,WAAW,CAClB,OACA,MACyC;AAAA,EACzC,MAAM,OAAO,IAAI,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAAA,EAChD,MAAM,SAAS,IAAI,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC;AAAA,EAClE,MAAM,MAA+C,CAAC;AAAA,EACtD,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC/C,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,OAAO,IAAI,IAAI,YAAY,CAAC;AAAA,IAC1D,IAAI,CAAC;AAAA,MAAM,MAAM,IAAI,MAAM,qBAAqB,KAAK;AAAA,IACrD,IAAI,KAAK,EAAE,MAAM,MAAM,CAAC;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,WAAW,CAClB,KACA,OACW;AAAA,EACX,MAAM,MAAM,KAAK,MAAM,IAAI,QAAQ,IAAI;AAAA,EACvC,MAAM,OAAO,IAAI,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAAA,EAChD,MAAM,SAAkC,CAAC;AAAA,EACzC,YAAY,QAAQ,MAAM,OAAO,QAAQ,GAAG,GAAG;AAAA,IAC7C,MAAM,IAAI,KAAK,IAAI,MAAM;AAAA,IACzB,IAAI;AAAA,MAAG,OAAO,EAAE,QAAQ;AAAA,EAC1B;AAAA,EACA,OAAO,EAAE,IAAI,IAAI,IAAI,aAAa,IAAI,aAAa,OAAO;AAAA;AAG5D,SAAS,WAAW,CAClB,OACA,UACA,cACQ;AAAA,EACR,MAAM,OAAO,SAAS,KACpB,CAAC,MAAM,EAAE,KAAK,SAAS,UAAU,OAAO,EAAE,UAAU,YAAY,EAAE,KACpE;AAAA,EACA,OAAO,MAAM,OAAO,OAAO,OAAO,KAAK,KAAK,IAAI,IAAI,YAAY;AAAA;AAGlE,SAAS,WAAW,CAAC,IAAc,OAAwB;AAAA,EACzD,OACE,GACG,MAAM,qEAAqE,EAC3E,IAAI,KAAK,KAAK;AAAA;AAIrB,SAAS,gBAAgB,CAAC,IAAuB;AAAA,EAC/C,OAAO,YAAY,IAAI,MAAM,KAAK,YAAY,IAAI,cAAc;AAAA;AAGlE,SAAS,mBAAmB,CAAC,IAAc,UAAkB,UAAkB,YAA2B;AAAA,EACxG,IAAI;AAAA,IAAY,KAAK,IAAI,WAAW,UAAU,aAAa,QAAQ;AAAA,EAC9D;AAAA,OAAG,MAAM,+CAA+C,EAAE,IAAI,UAAU,QAAQ;AAAA;AAGvF,SAAS,kBAAkB,CAAC,IAAc,YAAmC;AAAA,EAC3E,MAAM,MAAM,GACT,MACC;AAAA;AAAA,gDAGF,EACC,IAAI,UAAU;AAAA,EACjB,OAAO,KAAK,aAAa;AAAA;AAG3B,SAAS,iBAAiB,CAAC,IAAc,YAAwC;AAAA,EAC/E,OAAO,GACJ,MACC;AAAA;AAAA,8DAGF,EACC,IAAI,UAAU;AAAA;AAGnB,SAAS,wBAAwB,CAAC,IAAc,YAA0B;AAAA,EACxE,MAAM,OAAO,kBAAkB,IAAI,UAAU;AAAA,EAC7C,MAAM,OAAO,YAAY,MAAM,MAAM,KAAK,MAAM;AAAA,EAChD,KAAK,QAAQ,CAAC,KAAK,MAAM;AAAA,IACvB,IAAI,IAAI,cAAc,KAAK;AAAA,MAAI,KAAK,IAAI,WAAW,IAAI,IAAI,aAAa,KAAK,EAAG;AAAA,GACjF;AAAA;AAGI,SAAS,uBAAuB,CAAC,IAAc,YAA2B;AAAA,EAC/E,MAAM,aAAa,iBAAiB,EAAE;AAAA,EACtC,MAAM,SAAS,aACX,CAAC,EAAE,aAAa,WAAW,CAAC,IAC3B,GACE,MACC;AAAA,iFAEF,EACC,IAAI;AAAA,EAEX,WAAW,KAAK,QAAQ;AAAA,IACtB,MAAM,UAAU,GACb,MACC;AAAA;AAAA,kCAGF,EACC,IAAI,EAAE,WAAW;AAAA,IACpB,IAAI,CAAC,QAAQ;AAAA,MAAQ;AAAA,IAErB,MAAM,QAAQ,mBAAmB,IAAI,EAAE,WAAW;AAAA,IAClD,MAAM,OAAO,YAAY,OAAO,MAAM,QAAQ,MAAM;AAAA,IACpD,QAAQ,QAAQ,CAAC,KAAK,MAAM,oBAAoB,IAAI,IAAI,IAAI,KAAK,IAAK,UAAU,CAAC;AAAA,EACnF;AAAA;AAGK,SAAS,YAAY,CAC1B,IACA,YACA,MACW;AAAA,EACX,MAAM,QAAQ,YAAY,IAAI,UAAU;AAAA,EACxC,IAAI,CAAC;AAAA,IAAO,MAAM,IAAI,MAAM,qBAAqB,YAAY;AAAA,EAC7D,MAAM,QAAQ,eAAe,IAAI,UAAU;AAAA,EAC3C,MAAM,WAAW,YAAY,OAAO,IAAI;AAAA,EACxC,MAAM,KAAK,YAAY,OAAO,UAAU,QAAQ,MAAM,MAAM,KAAK,CAAC;AAAA,EAClE,MAAM,WAAW,WAAW,mBAAmB,IAAI,UAAU,GAAG,IAAI;AAAA,EAEpE,MAAM,QAAQ,KAAK,IAAI,WAAW,IAAI,eAAe,UAAU;AAAA,EAC/D,KAAK,IAAI,WAAW,IAAI,eAAe,MAAM,GAAG;AAAA,EAChD,KAAK,IAAI,WAAW,IAAI,aAAa,QAAQ;AAAA,EAC7C,aAAa,MAAM,WAAW;AAAA,IAC5B,KAAK,IAAI,WAAW,IAAI,KAAK,IAAI,OAAO,IAAI,MAAM,KAAK,CAAC;AAAA,EAC1D,OAAO,UAAU,IAAI,EAAE;AAAA;AAGlB,SAAS,SAAS,CAAC,IAAc,IAA8B;AAAA,EACpE,MAAM,MAAM,GACT,MAAM,0EAA0E,EAChF,IAAI,EAAE;AAAA,EACT,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,OAAO,YAAY,KAAK,eAAe,IAAI,IAAI,WAAW,CAAC;AAAA;AAI7D,SAAS,UAAU,CAAC,QAAwB;AAAA,EAC1C,OAAO,OAAO,QAAQ,MAAM,IAAI;AAAA;AAG3B,SAAS,WAAW,CACzB,IACA,YACA,OAA4E,CAAC,GAChE;AAAA,EACb,MAAM,QAAQ,eAAe,IAAI,UAAU;AAAA,EAI3C,MAAM,WACJ,KAAK,UAAU,OAAO,KAAK,KAAK,MAAM,EAAE,SACpC,YAAY,OAAO,KAAK,MAAM,EAAE,IAAI,GAAG,MAAM,aAAa;AAAA,IACxD;AAAA,IACA,OAAO,OAAO,IAAI,MAAM,KAAK;AAAA,EAC/B,EAAE,IACF,CAAC;AAAA,EACP,MAAM,aAAa,SAAS,OAAO,CAAC,MAAM,YAAY,EAAE,KAAK,CAAC;AAAA,EAC9D,MAAM,YAAY,SAAS,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC;AAAA,EAG9D,IAAI;AAAA,EACJ,IAAI,WAAW;AAAA,EACf,IAAI,KAAK,MAAM;AAAA,IACb,IAAI,MAAM,KAAK;AAAA,IACf,IAAI,IAAI,WAAW,GAAG,GAAG;AAAA,MACvB,WAAW;AAAA,MACX,MAAM,IAAI,MAAM,CAAC;AAAA,IACnB;AAAA,IACA,IAAI,QAAQ,aAAa,QAAQ,eAAe;AAAA,MAC9C,MAAM,IAAI,MAAM,KACd,CAAC,OAAM,GAAE,KAAK,YAAY,MAAM,IAAI,YAAY,KAAK,GAAE,OAAO,GAChE;AAAA,MACA,IAAI,CAAC;AAAA,QAAG,MAAM,IAAI,MAAM,uBAAuB,KAAK;AAAA,MACpD,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EAGA,WAAW,KAAK;AAAA,IAAY,eAAe,IAAI,YAAY,EAAE,IAAI;AAAA,EACjE,IAAI;AAAA,IAAU,eAAe,IAAI,YAAY,QAAQ;AAAA,EAErD,MAAM,QAAQ,CAAC,mBAAmB,eAAe;AAAA,EACjD,MAAM,OAAmB,CAAC,UAAU;AAAA,EACpC,WAAW,KAAK,YAAY;AAAA,IAC1B,MAAM,KAAK,aAAa,WAAW,EAAE,KAAK,EAAE,QAAQ;AAAA,IACpD,KAAK,KAAK,eAAe,EAAE,KAAkC,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,cAAc,KAAK,QAAQ;AAAA,EACjC,MAAM,YAAY,WACd,aAAa,WAAW,SAAS,EAAE,OACnC;AAAA,EACJ,IAAI,MACF,mDAAmD,MAAM,KAAK,OAAO,QACpE,cACG,8CACA,YAAY,aAAa,WAAW,SAAS;AAAA,EAGnD,MAAM,YAAY,KAAK,SAAS,QAAQ,UAAU,WAAW;AAAA,EAC7D,IAAI,WAAW;AAAA,IACb,OAAO;AAAA,IACP,KAAK,KAAK,KAAK,KAAM;AAAA,EACvB;AAAA,EAEA,IAAI,OACF,GAAG,MAAM,GAAG,EAAE,IAAI,GAAG,IAAI,EACzB,IAAI,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC;AAAA,EAElC,IAAI,UAAU,QAAQ;AAAA,IACpB,OAAO,KAAK,OAAO,CAAC,MAClB,UAAU,MACR,CAAC,MAAM,KAAK,UAAU,EAAE,OAAO,EAAE,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU,EAAE,KAAK,CACjF,CACF;AAAA,IACA,IAAI,KAAK,SAAS;AAAA,MAAM,OAAO,KAAK,MAAM,GAAG,KAAK,KAAK;AAAA,EACzD;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,UAAU,CACxB,IACA,IACA,UACA,OACW;AAAA,EACX,IAAI,UAAU,YAAY,UAAU;AAAA,IAClC,MAAM,IAAI,MAAM,0BAA0B,OAAO;AAAA,EAEnD,MAAM,MAAM,GACT,MACC,oEACF,EACC,IAAI,EAAE;AAAA,EACT,IAAI,CAAC;AAAA,IAAK,MAAM,IAAI,MAAM,mBAAmB,IAAI;AAAA,EACjD,MAAM,SAAS,GACZ,MACC,oEACF,EACC,IAAI,QAAQ;AAAA,EACf,IAAI,CAAC;AAAA,IAAQ,MAAM,IAAI,MAAM,mBAAmB,UAAU;AAAA,EAC1D,IAAI,IAAI,gBAAgB,OAAO;AAAA,IAC7B,MAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD,IAAI,OAAO;AAAA,IAAU,OAAO,UAAU,IAAI,EAAE;AAAA,EAE5C,wBAAwB,IAAI,IAAI,WAAW;AAAA,EAE3C,IAAI,OAAO,kBAAkB,IAAI,IAAI,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,EAC3E,IAAI,KAAK,KAAK,UAAU,CAAC,MAAM,EAAE,OAAO,QAAQ;AAAA,EAChD,IAAI,KAAK;AAAA,IAAG,MAAM,IAAI,MAAM,0BAA0B,UAAU;AAAA,EAEhE,IAAI,OAAO,UAAU,WAAY,KAAK,KAAK,IAAI,aAAa,OAAQ,KAAK,IAAK;AAAA,EAC9E,IAAI,QAAQ,UAAU,WAAW,KAAK,IAAK,YAAa,KAAK,KAAK,IAAI,aAAa;AAAA,EACnF,IAAI,SAAS,QAAQ,UAAU,QAAQ,QAAQ,OAAO;AAAA,IACpD,yBAAyB,IAAI,IAAI,WAAW;AAAA,IAC5C,OAAO,kBAAkB,IAAI,IAAI,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,IACvE,KAAK,KAAK,UAAU,CAAC,MAAM,EAAE,OAAO,QAAQ;AAAA,IAC5C,OAAO,UAAU,WAAY,KAAK,KAAK,IAAI,aAAa,OAAQ,KAAK,IAAK;AAAA,IAC1E,QAAQ,UAAU,WAAW,KAAK,IAAK,YAAa,KAAK,KAAK,IAAI,aAAa;AAAA,EACjF;AAAA,EACA,KAAK,IAAI,WAAW,IAAI,aAAa,WAAW,MAAM,KAAK,CAAC;AAAA,EAC5D,OAAO,UAAU,IAAI,EAAE;AAAA;AAGlB,SAAS,YAAY,CAC1B,IACA,IACA,MACW;AAAA,EACX,MAAM,MAAM,GACT,MAAM,oEAAoE,EAC1E,IAAI,EAAE;AAAA,EACT,IAAI,CAAC;AAAA,IAAK,MAAM,IAAI,MAAM,mBAAmB,IAAI;AAAA,EACjD,MAAM,WAAW,YAAY,eAAe,IAAI,IAAI,WAAW,GAAG,IAAI;AAAA,EACtE,aAAa,MAAM,WAAW;AAAA,IAC5B,KAAK,IAAI,WAAW,IAAI,KAAK,IAAI,OAAO,IAAI,MAAM,KAAK,CAAC;AAAA,EAC1D,OAAO,UAAU,IAAI,EAAE;AAAA;AAGlB,SAAS,YAAY,CAAC,IAAc,IAAqB;AAAA,EAC9D,MAAM,MAAM,GACT,MAAM,uDAAuD,EAC7D,IAAI,EAAE;AAAA,EACT,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,KAAK,IAAI,WAAW,IAAI,aAAa,CAAC;AAAA,EACtC,OAAO;AAAA;;;AMtYT;AACA;AAyBA,SAAS,UAAU,CAAC,IAAc,OAA2B;AAAA,EAC3D,OAAO,GACJ,MACC,mHACF,EACC,IAAI,KAAK;AAAA;AAGd,SAAS,WAAW,CAAC,MAAsB;AAAA,EACzC,OAAO,MAAM,OAAO,KAAK,MAAM;AAAA,GAAM,CAAC,EAAE,MAAM,EAAE;AAAA;AAKlD,SAAS,SAAS,CAChB,IACA,OACA,QACM;AAAA,EACN,MAAM,KAAK,YAAY,OAAO,IAAI;AAAA,EAClC,KAAK,IAAI,cAAc,IAAI,UAAU,KAAK;AAAA,EAC1C,KAAK,IAAI,cAAc,IAAI,aAAa,OAAO,SAAS;AAAA,EACxD,IAAI,OAAO;AAAA,IAAY,KAAK,IAAI,cAAc,IAAI,eAAe,OAAO,UAAU;AAAA,EAClF,KAAK,IAAI,cAAc,IAAI,QAAQ,OAAO,IAAI;AAAA;AAGhD,SAAS,YAAY,CACnB,IACA,OACA,QACA,OACA,QACM;AAAA,EACN,MAAM,OAAO,YAAY,OAAO,QAAQ,OAAO,MAAM;AAAA,EACrD,OAAO,QAAQ,CAAC,GAAG,MACjB,UAAU,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,KAAK,IAAK,YAAY,EAAE,WAAW,CAAC,CACtF;AAAA;AAIF,SAAS,YAAY,CAAC,IAAc,OAAqB;AAAA,EACvD,IAAI,GAAG,MAAM,wDAAwD,EAAE,IAAI,KAAK;AAAA,IAC9E;AAAA,EACF,MAAM,MAAM,GAAG,MAAM,yCAAyC,EAAE,IAAI,KAAK;AAAA,EAGzE,MAAM,SAAS,eAAe,KAAK,QAAQ,EAAE;AAAA,EAC7C,IAAI,OAAO;AAAA,IAAQ,aAAa,IAAI,OAAO,QAAQ,MAAM,IAAI;AAAA;AAI/D,SAAS,aAAa,CAAC,IAAc,OAAe,MAAoB;AAAA,EACtE,MAAM,MAAM,WAAW,IAAI,KAAK;AAAA,EAChC,MAAM,OAAO,eAAe,IAAI;AAAA,EAChC,MAAM,OAAO,UACX,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,GACrB,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CACxB;AAAA,EAEA,WAAW,MAAM,KAAK;AAAA,IAAS,KAAK,IAAI,cAAc,IAAI,IAAK,IAAI,aAAa,CAAC;AAAA,EAEjF,QAAQ,UAAU;AAAA,EAClB,IAAI,IAAI;AAAA,EACR,OAAO,IAAI,MAAM,QAAQ;AAAA,IACvB,MAAM,KAAK,MAAM;AAAA,IACjB,IAAI,UAAU,IAAI;AAAA,MAEhB,MAAM,OAAO,IAAI,GAAG;AAAA,MACpB,MAAM,OAAO,KAAK,GAAI;AAAA,MACtB,KAAK,KAAK,eAAe,OAAO;AAAA,QAAM,KAAK,IAAI,cAAc,KAAK,IAAI,eAAe,IAAI;AAAA,MACzF;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,IAAI;AAAA,IACR,OAAO,IAAI,MAAM,UAAU,YAAY,MAAM;AAAA,MAAK;AAAA,IAClD,MAAM,OAAO,IAAI,IAAI,IAAK,MAAM,IAAI,GAAwB,MAAO,YAAY;AAAA,IAC/E,MAAM,QAAQ,IAAI,MAAM,SAAS,IAAK,MAAM,GAAwB,MAAO,YAAY;AAAA,IACvF,aAAa,IAAI,OAAO,KAAK,MAAM,GAAG,CAAC,GAAG,MAAM,KAAK;AAAA,IACrD,IAAI;AAAA,EACN;AAAA;AAIK,SAAS,eAAe,CAAC,IAAc,IAAoB;AAAA,EAChE,MAAM,MAAM,GACT,MACC;AAAA;AAAA,iGAGF,EACC,IAAI,IAAI,EAAE;AAAA,EACb,OAAO,IAAI,KAAK;AAAA;AAKX,SAAS,cAAc,CAC5B,IACA,MACa;AAAA,EACb,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK;AAAA,EAClC,MAAM,QAAQ,KAAK,IAAI,aAAa,IAAI,SAAS,KAAK,KAAK;AAAA,EAC3D,KAAK,IAAI,aAAa,IAAI,eAAe,MAAM,GAAG;AAAA,EAClD,IAAI,KAAK,gBAAgB;AAAA,IAAW,KAAK,IAAI,aAAa,IAAI,eAAe,KAAK,WAAW;AAAA,EAC7F,IAAI,KAAK,cAAc;AAAA,IAAW,KAAK,IAAI,aAAa,IAAI,aAAa,KAAK,SAAS;AAAA,EACvF,gBAAgB,IAAI,IAAI,KAAK,aAAa,IAAI;AAAA,EAC9C,IAAI,KAAK,SAAS,WAAW;AAAA,IAC3B,MAAM,SAAS,eAAe,KAAK,IAAI;AAAA,IACvC,IAAI,OAAO;AAAA,MAAQ,aAAa,IAAI,IAAI,QAAQ,MAAM,IAAI;AAAA,EAC5D;AAAA,EACA,OAAO,YAAY,IAAI,EAAE;AAAA;AAGpB,SAAS,WAAW,CAAC,IAAc,IAAgC;AAAA,EACxE,OAAO,GACJ,MACC,sHACF,EACC,IAAI,EAAE;AAAA;AAKX,IAAM,WAAW;AAEV,SAAS,aAAa,CAC3B,IACA,OAAqD,CAAC,GACnC;AAAA,EACnB,MAAM,OACJ;AAAA,EACF,IAAI,KAAK,cAAc;AAAA,IACrB,OAAO,GACJ,MAAM,GAAG,0BAA0B,UAAU,EAC7C,IAAI,KAAK,SAAS;AAAA,EACvB,IAAI,KAAK;AAAA,IACP,OAAO,GACJ,MAAM,GAAG,4BAA4B,UAAU,EAC/C,IAAI,KAAK,WAAW;AAAA,EACzB,OAAO,GAAG,MAAM,GAAG,QAAQ,UAAU,EAAE,IAAI;AAAA;AAW7C,SAAS,YAAY,CAAC,UAA6D;AAAA,EACjF,OAAO,aAAa,OAChB,EAAE,QAAQ,qBAAqB,MAAM,CAAC,EAAE,IACxC,EAAE,QAAQ,iBAAiB,MAAM,CAAC,QAAQ,EAAE;AAAA;AAGlD,SAAS,iBAAgB,CAAC,IAAuB;AAAA,EAC/C,OAAO,aAAY,IAAI,MAAM,KAAK,aAAY,IAAI,cAAc;AAAA;AAGlE,SAAS,YAAW,CAAC,IAAc,OAAwB;AAAA,EACzD,OACE,GACG,MAAM,qEAAqE,EAC3E,IAAI,KAAK,KAAK;AAAA;AAKrB,SAAS,mBAAmB,CAC1B,IACA,UACA,WACe;AAAA,EACf,MAAM,IAAI,aAAa,QAAQ;AAAA,EAC/B,MAAM,UAAU,YAAY,iBAAiB;AAAA,EAC7C,MAAM,MAAM,GACT,MACC,yCAAyC,EAAE,SAAS;AAAA;AAAA,gDAGtD,EACC,IAAI,GAAG,EAAE,MAAM,GAAI,YAAY,CAAC,SAAS,IAAI,CAAC,CAAE;AAAA,EACnD,OAAO,KAAK,aAAa;AAAA;AAG3B,SAAS,eAAe,CAAC,IAAc,UAAuC;AAAA,EAC5E,MAAM,IAAI,aAAa,QAAQ;AAAA,EAC/B,OAAO,GACJ,MAAM,6CAA6C,EAAE,4BAA4B,UAAU,EAC3F,IAAI,GAAG,EAAE,IAAI;AAAA;AAIlB,SAAS,iBAAiB,CAAC,IAAc,UAA+B;AAAA,EACtE,MAAM,OAAO,gBAAgB,IAAI,QAAQ;AAAA,EACzC,MAAM,OAAO,YAAY,MAAM,MAAM,KAAK,MAAM;AAAA,EAChD,KAAK,QAAQ,CAAC,KAAK,MAAM;AAAA,IACvB,IAAI,IAAI,cAAc,KAAK;AAAA,MAAI,KAAK,IAAI,aAAa,IAAI,IAAI,aAAa,KAAK,EAAG;AAAA,GACnF;AAAA;AAIH,SAAS,gBAAgB,CAAC,IAAc,UAA+B;AAAA,EACrE,MAAM,aAAa,kBAAiB,EAAE;AAAA,EACtC,MAAM,IAAI,aAAa,QAAQ;AAAA,EAC/B,MAAM,UAAU,GACb,MACC,kCAAkC,EAAE;AAAA,gCAEtC,EACC,IAAI,GAAG,EAAE,IAAI;AAAA,EAChB,IAAI,CAAC,QAAQ;AAAA,IAAQ;AAAA,EACrB,MAAM,OAAO,YAAY,oBAAoB,IAAI,QAAQ,GAAG,MAAM,QAAQ,MAAM;AAAA,EAChF,QAAQ,QAAQ,CAAC,KAAK,MAAM;AAAA,IAC1B,IAAI;AAAA,MAAY,KAAK,IAAI,aAAa,IAAI,IAAI,aAAa,KAAK,EAAG;AAAA,IAC9D;AAAA,SAAG,MAAM,iDAAiD,EAAE,IAAI,KAAK,IAAK,IAAI,EAAE;AAAA,GACtF;AAAA;AAII,SAAS,yBAAyB,CAAC,IAAoB;AAAA,EAC5D,MAAM,UAAU,GACb,MAAM,oFAAoF,EAC1F,IAAI;AAAA,EACP,WAAW,KAAK;AAAA,IAAS,iBAAiB,IAAI,EAAE,SAAS;AAAA;AAQ3D,SAAS,eAAe,CACtB,IACA,IACA,UACA,QACM;AAAA,EAGN,IAAI,MAAiC;AAAA,EACrC,OAAO,KAAK;AAAA,IACV,IAAI,QAAQ;AAAA,MAAI,MAAM,IAAI,MAAM,+CAA+C,KAAK;AAAA,IACpF,MAAM,YAAY,IAAI,GAAG,GAAG,aAAa;AAAA,EAC3C;AAAA,EAEA,MAAM,UAAU,YAAY,IAAI,EAAE;AAAA,EAClC,IAAI,YAAY,QAAQ,aAAa,UAAU;AAAA,IAC7C,KAAK,IAAI,aAAa,IAAI,aAAa,QAAQ;AAAA,EAEjD,IAAI;AAAA,EACJ,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,WAAW,oBAAoB,IAAI,UAAU,EAAE,GAAG,IAAI;AAAA,EAC9D,EAAO;AAAA,IACL,iBAAiB,IAAI,QAAQ;AAAA,IAC7B,MAAM,YAAY,MAAsC;AAAA,MACtD,MAAM,OAAO,gBAAgB,IAAI,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,MACpE,MAAM,KAAK,KAAK,UAAU,CAAC,MAAM,EAAE,OAAO,OAAO,QAAQ;AAAA,MACzD,IAAI,KAAK;AAAA,QAAG,MAAM,IAAI,MAAM,4BAA4B,OAAO,UAAU;AAAA,MACzE,OAAO,OAAO,UAAU,WACpB,CAAC,KAAK,KAAK,IAAI,aAAa,MAAM,KAAK,IAAK,SAAS,IACrD,CAAC,KAAK,IAAK,WAAW,KAAK,KAAK,IAAI,aAAa,IAAI;AAAA;AAAA,IAE3D,KAAK,MAAM,SAAS,UAAU;AAAA,IAC9B,IAAI,SAAS,QAAQ,UAAU,QAAQ,QAAQ,OAAO;AAAA,MACpD,kBAAkB,IAAI,QAAQ;AAAA,MAC9B,CAAC,MAAM,KAAK,IAAI,UAAU;AAAA,IAC5B;AAAA,IACA,MAAM,WAAW,MAAM,KAAK;AAAA;AAAA,EAE9B,KAAK,IAAI,aAAa,IAAI,aAAa,GAAG;AAAA;AAQrC,SAAS,YAAY,CAC1B,IACA,IACA,UACA,OACa;AAAA,EACb,MAAM,MAAM,YAAY,IAAI,EAAE;AAAA,EAC9B,IAAI,CAAC;AAAA,IAAK,MAAM,IAAI,MAAM,qBAAqB,IAAI;AAAA,EACnD,IAAI,OAAO;AAAA,IAAU,OAAO;AAAA,EAC5B,MAAM,SAAS,YAAY,IAAI,QAAQ;AAAA,EACvC,IAAI,CAAC;AAAA,IAAQ,MAAM,IAAI,MAAM,4BAA4B,UAAU;AAAA,EAEnE,IAAI,UAAU;AAAA,IAAQ,gBAAgB,IAAI,IAAI,QAAQ;AAAA,EACjD;AAAA,oBAAgB,IAAI,IAAI,OAAO,WAAW,EAAE,UAAU,MAAM,CAAC;AAAA,EAClE,OAAO,YAAY,IAAI,EAAE;AAAA;AAGpB,SAAS,cAAc,CAC5B,IACA,IACA,QACa;AAAA,EACb,IAAI,CAAC,YAAY,IAAI,EAAE;AAAA,IAAG,MAAM,IAAI,MAAM,qBAAqB,IAAI;AAAA,EACnE,IAAI,OAAO,UAAU;AAAA,IAAW,KAAK,IAAI,aAAa,IAAI,SAAS,OAAO,KAAK;AAAA,EAC/E,IAAI,OAAO,gBAAgB;AAAA,IAAW,KAAK,IAAI,aAAa,IAAI,eAAe,OAAO,WAAW;AAAA,EACjG,IAAI,OAAO,cAAc,WAAW;AAAA,IAKlC,MAAM,OAAO,OAAO,aAAa;AAAA,IACjC,KAAK,YAAY,IAAI,EAAE,EAAG,aAAa,UAAU;AAAA,MAAM,gBAAgB,IAAI,IAAI,IAAI;AAAA,EACrF;AAAA,EACA,IAAI,OAAO,SAAS,WAAW;AAAA,IAC7B,aAAa,IAAI,EAAE;AAAA,IACnB,cAAc,IAAI,IAAI,OAAO,IAAI;AAAA,EACnC;AAAA,EACA,OAAO,YAAY,IAAI,EAAE;AAAA;AAgBpB,SAAS,YAAY,CAC1B,IACA,IACA,MACe;AAAA,EACf,IAAI,CAAC,YAAY,IAAI,EAAE;AAAA,IAAG,MAAM,IAAI,MAAM,qBAAqB,IAAI;AAAA,EACnE,IAAI,KAAK,YAAY,aAAa,gBAAgB,IAAI,EAAE,MAAM,KAAK;AAAA,IACjE,MAAM,IAAI,MAAM,iCAAiC,KAAK,wBAAwB;AAAA,EAChF,IAAI,KAAK,QAAQ;AAAA,IAAI,MAAM,IAAI,MAAM,yBAAyB;AAAA,EAE9D,aAAa,IAAI,EAAE;AAAA,EACnB,MAAM,SAAS,WAAW,IAAI,EAAE;AAAA,EAChC,MAAM,OAAO,mBAAmB,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,EAAE,YAAY,EAAE,CAAC;AAAA,EAChG,MAAM,QAAQ,iBAAiB,MAAM,KAAK,GAAG;AAAA,EAC7C,IAAI,UAAU;AAAA,IAAG,MAAM,IAAI,MAAM,sCAAsC;AAAA,EACvE,IAAI,QAAQ,KAAK,CAAC,KAAK;AAAA,IACrB,MAAM,IAAI,MACR,GAAG,uEACL;AAAA,EAGF,IAAI,CAAC,KAAK,IAAI,SAAS;AAAA;AAAA,CAAM,GAAG;AAAA,IAC9B,MAAM,WAAW,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,SAAS,KAAK,GAAG,CAAC;AAAA,IAC/D,MAAM,OAAO,SAAS,IAAI,CAAC,MACzB,KAAK,aAAa,EAAE,KAAK,WAAW,KAAK,KAAK,KAAK,GAAG,IAAI,EAAE,KAAK,QAAQ,KAAK,KAAK,KAAK,GAAG,CAC7F;AAAA,IACA,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,KAAK,CAAC,EAAE,SAAS;AAAA;AAAA,CAAM,CAAC,GAAG;AAAA,MAC1D,MAAM,UAAU,KAAK,aAAa,WAAW,SAAS,MAAM,GAAG,CAAC;AAAA,MAChE,QAAQ,QAAQ,CAAC,GAAG,MAAM,KAAK,IAAI,cAAc,EAAE,IAAI,QAAQ,KAAK,EAAG,CAAC;AAAA,MACxE,OAAO,EAAE,IAAI,SAAS,MAAM,UAAU,KAAK,aAAa,QAAQ,GAAG,SAAS,gBAAgB,IAAI,EAAE,EAAE;AAAA,IACtG;AAAA,EACF;AAAA,EAGA,MAAM,UAAU,KAAK,aACjB,KAAK,WAAW,KAAK,KAAK,KAAK,GAAG,IAClC,KAAK,QAAQ,KAAK,KAAK,KAAK,GAAG;AAAA,EACnC,cAAc,IAAI,IAAI,OAAO;AAAA,EAC7B,OAAO,EAAE,IAAI,SAAS,YAAY,MAAM,UAAU,KAAK,aAAa,QAAQ,GAAG,SAAS,gBAAgB,IAAI,EAAE,EAAE;AAAA;AAG3G,SAAS,cAAc,CAAC,IAAc,IAAY,MAA6B;AAAA,EACpF,IAAI,CAAC,YAAY,IAAI,EAAE;AAAA,IAAG,MAAM,IAAI,MAAM,qBAAqB,IAAI;AAAA,EACnE,aAAa,IAAI,EAAE;AAAA,EACnB,MAAM,OAAO,eAAe,IAAI;AAAA,EAChC,IAAI,KAAK,QAAQ;AAAA,IACf,MAAM,SAAS,WAAW,IAAI,EAAE;AAAA,IAChC,MAAM,OAAO,OAAO,SAAS,OAAO,OAAO,SAAS,GAAI,YAAY;AAAA,IACpE,aAAa,IAAI,IAAI,MAAM,MAAM,IAAI;AAAA,EACvC;AAAA,EACA,OAAO,EAAE,IAAI,SAAS,KAAK,SAAS,GAAG,UAAU,KAAK,QAAQ,SAAS,gBAAgB,IAAI,EAAE,EAAE;AAAA;AAG1F,SAAS,eAAe,CAAC,IAAc,IAAY,MAA6B;AAAA,EACrF,IAAI,CAAC,YAAY,IAAI,EAAE;AAAA,IAAG,MAAM,IAAI,MAAM,qBAAqB,IAAI;AAAA,EACnE,aAAa,IAAI,EAAE;AAAA,EACnB,MAAM,OAAO,eAAe,IAAI;AAAA,EAChC,IAAI,KAAK,QAAQ;AAAA,IACf,MAAM,SAAS,WAAW,IAAI,EAAE;AAAA,IAChC,MAAM,QAAQ,OAAO,SAAS,OAAO,GAAI,YAAY;AAAA,IACrD,aAAa,IAAI,IAAI,MAAM,MAAM,KAAK;AAAA,EACxC;AAAA,EACA,OAAO,EAAE,IAAI,SAAS,KAAK,SAAS,GAAG,UAAU,KAAK,QAAQ,SAAS,gBAAgB,IAAI,EAAE,EAAE;AAAA;AAG1F,SAAS,cAAc,CAAC,IAAc,IAAqB;AAAA,EAChE,IAAI,CAAC,YAAY,IAAI,EAAE;AAAA,IAAG,OAAO;AAAA,EACjC,KAAK,IAAI,aAAa,IAAI,aAAa,CAAC;AAAA,EAGxC,WAAW,KAAK,aAAa,IAAI,cAAc,UAAU,EAAE;AAAA,IACzD,KAAK,IAAI,cAAc,GAAG,aAAa,CAAC;AAAA,EAC1C,WAAW,KAAK,aAAa,IAAI,aAAa,aAAa,EAAE;AAAA,IAC3D,KAAK,IAAI,aAAa,GAAG,aAAa,IAAI;AAAA,EAC5C,OAAO;AAAA;AAIT,SAAS,YAAY,CAAC,IAAc,OAAe,KAAa,UAA4B;AAAA,EAC1F,OACE,GACG,MAAM,kBAAkB,eAAe,2BAA2B,EAClE,IAAI,QAAQ,EACf,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA;AAGnB,SAAS,gBAAgB,CAAC,UAAkB,QAAwB;AAAA,EAClE,IAAI,WAAW;AAAA,IAAI,OAAO;AAAA,EAC1B,IAAI,IAAI;AAAA,EACR,IAAI,IAAI,SAAS,QAAQ,MAAM;AAAA,EAC/B,OAAO,MAAM,IAAI;AAAA,IACf;AAAA,IACA,IAAI,SAAS,QAAQ,QAAQ,IAAI,OAAO,MAAM;AAAA,EAChD;AAAA,EACA,OAAO;AAAA;;;AR9bF,SAAS,UAAU,GAAS;AAAA,EACjC,UAAU,YAAY,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC5C,UAAU,SAAS,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA;AAGpC,SAAS,SAAS,CAAC,IAAoB;AAAA,EAC5C,GAAG,KAAK,WAAW;AAAA,EACnB,IAAI;AAAA,IACF,GAAG,KAAK,UAAU;AAAA,IAClB,MAAM;AAAA;AAKH,SAAS,YAAY,CAAC,IAAuB;AAAA,EAClD,MAAM,MAAM,GACT,MAAM,6DAA6D,EACnE,IAAI;AAAA,EACP,OAAO,OAAO;AAAA;AAGhB,SAAS,SAAS,CAAC,IAAc,OAAe,QAAyB;AAAA,EACvE,MAAM,OAAO,GAAG,MAAM,qBAAqB,QAAQ,EAAE,IAAI;AAAA,EACzD,OAAO,KAAK,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA;AAG3C,SAAS,YAAW,CAAC,IAAc,OAAwB;AAAA,EACzD,OACE,GACG,MAAM,qEAAqE,EAC3E,IAAI,KAAK,KAAK;AAAA;AASd,SAAS,cAAc,CAAC,IAAoB;AAAA,EACjD,IAAI,CAAC,UAAU,IAAI,WAAW,MAAM;AAAA,IAClC,GAAG,KAAK,gEAAgE;AAAA,EAC1E,IAAI,CAAC,UAAU,IAAI,WAAW,WAAW;AAAA,IACvC,GAAG,KAAK,+CAA+C;AAAA,EAEzD,IAAI,CAAC,aAAY,IAAI,eAAe;AAAA,IAAG;AAAA,EAEvC,MAAM,KAAK,GAAG,YAAY,MAAM;AAAA,IAE9B,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMP;AAAA,IACD,GAAG,KAAK,0BAA0B;AAAA,IAClC,wBAAwB,EAAE;AAAA,GAC3B;AAAA,EACD,GAAG;AAAA,EAEH,wBAAwB,EAAE;AAAA;AAQrB,SAAS,YAAY,CAAC,IAAoB;AAAA,EAC/C,MAAM,MAA0B;AAAA,IAC9B,CAAC,SAAS,MAAM;AAAA,IAChB,CAAC,SAAS,MAAM;AAAA,IAChB,CAAC,WAAW,MAAM;AAAA,IAClB,CAAC,WAAW,4BAA4B;AAAA,IACxC,CAAC,gBAAgB,SAAS;AAAA,IAC1B,CAAC,eAAe,MAAM;AAAA,IACtB,CAAC,cAAc,MAAM;AAAA,EACvB;AAAA,EACA,YAAY,KAAK,SAAS,KAAK;AAAA,IAC7B,IAAI,CAAC,UAAU,IAAI,SAAS,GAAG;AAAA,MAAG,GAAG,KAAK,gCAAgC,OAAO,MAAM;AAAA,EACzF;AAAA;AAQK,SAAS,gBAAgB,CAAC,IAAoB;AAAA,EACnD,IAAI,CAAC,UAAU,IAAI,cAAc,aAAa;AAAA,IAC5C,GAAG,KAAK,0EAA0E;AAAA;AAS/E,SAAS,gBAAgB,CAAC,IAAoB;AAAA,EACnD,IAAI,CAAC,UAAU,IAAI,aAAa,WAAW;AAAA,IACzC,GAAG,KAAK,iDAAiD;AAAA,EAC3D,0BAA0B,EAAE;AAAA;AAIvB,SAAS,WAAW,GAAa;AAAA,EACtC,WAAW;AAAA,EACX,MAAM,KAAK,IAAI,SAAS,OAAO,GAAG,EAAE,QAAQ,KAAK,CAAC;AAAA,EAClD,GAAG,KAAK,4BAA4B;AAAA,EACpC,UAAU,EAAE;AAAA,EACZ,eAAe,EAAE;AAAA,EACjB,aAAa,EAAE;AAAA,EACf,iBAAiB,EAAE;AAAA,EACnB,iBAAiB,EAAE;AAAA,EACnB,OAAO;AAAA;;;ADzHT;AAGA;AAGA;;;AUFA,IAAM,MAAM;AAOL,SAAS,kBAAkB,CAAC,IAAkC;AAAA,EACnE,MAAM,MAAM,GAAG,MAAM,sCAAsC,EAAE,IAAI,GAAG;AAAA,EAGpE,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,MAAM,QAAQ,YAAY,IAAI,IAAI,KAAK;AAAA,EACvC,IAAI,CAAC,OAAO;AAAA,IACV,qBAAqB,EAAE;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,kBAAkB,CAAC,IAAc,IAAkB;AAAA,EACjE,GAAG,MACD,mGACF,EAAE,IAAI,KAAK,EAAE;AAAA;AAGR,SAAS,oBAAoB,CAAC,IAAoB;AAAA,EACvD,GAAG,MAAM,gCAAgC,EAAE,IAAI,GAAG;AAAA;;AC/BpD;AAUA,IAAM,aAAa;AAInB,IAAM,uBAAuB;AAE7B,SAAS,QAAQ,CAAC,IAAc,KAA4B;AAAA,EAC1D,OACG,GAAG,MAAM,sCAAsC,EAAE,IAAI,GAAG,GACrD,SAAS;AAAA;AAIjB,SAAS,SAAS,CAAC,IAAc,KAAa,OAAqB;AAAA,EACjE,GAAG,MACD,mGACF,EAAE,IAAI,KAAK,KAAK;AAAA;AAelB,SAAS,eAAe,CAAC,IAAc,IAAkB;AAAA,EACvD,GAAG,MAAM,2DAA2D,EAAE,IAAI,EAAE;AAAA,EAC5E,MAAM,IAAI,GACP,MAAM,mFAAmF,EACzF,IAAI,EAAE;AAAA,EACT,IAAI;AAAA,IACF,GAAG,MACD,6FACF,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,IAAI,EAAE,QAAQ,EAAE;AAAA;AAW1D,SAAS,cAAc,CAAC,IAAc,UAAkB,MAAyC;AAAA,EAC/F,OAAO,GACJ,MACC;AAAA;AAAA;AAAA,eAGS,2CAA2C;AAAA,qBAEtD,EACC,IAAI,GAAG,IAAI;AAAA;AAGhB,SAAS,eAAe,CAAC,IAAc,GAAqB;AAAA,EAC1D,GAAG,MACD,2FACF,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;AAAA;AAG/C,SAAS,aAAa,CAAC,IAAc,IAAkB;AAAA,EACrD,GAAG,MAAM,yDAAyD,EAAE,IAAI,EAAE;AAAA,EAC1E,MAAM,IAAI,eAAe,IAAI,YAAY,EAAE,EAAE;AAAA,EAC7C,IAAI;AAAA,IAAG,gBAAgB,IAAI,CAAC;AAAA;AAK9B,SAAS,sBAAsB,CAAC,IAAc,YAA0B;AAAA,EACtE,GAAG,MAAM,kEAAkE,EAAE,IAAI,UAAU;AAAA,EAC3F,WAAW,KAAK,eAAe,IAAI,qBAAqB,UAAU;AAAA,IAAG,gBAAgB,IAAI,CAAC;AAAA;AAQ5F,SAAS,WAAW,CAAC,IAAoB;AAAA,EACvC,GAAG,MAAM,wBAAwB,EAAE,IAAI;AAAA,EACvC,WAAW,KAAK,GACb,MAAM,wEAAwE,EAC9E,IAAI;AAAA,IACL,GAAG,MACD,6FACF,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,IAAI,EAAE,QAAQ,EAAE;AAAA,EACxD,WAAW,KAAK,eAAe,IAAI,OAAO;AAAA,IAAG,gBAAgB,IAAI,CAAC;AAAA,EAClE,MAAM,MAAO,GAAG,MAAM,0CAA0C,EAAE,IAAI,EAA2B,KAAK;AAAA,EACtG,UAAU,IAAI,cAAc,OAAO,GAAG,CAAC;AAAA,EACvC,UAAU,IAAI,wBAAwB,oBAAoB;AAAA;AAM5D,SAAS,iBAAiB,CAAC,IAAoB;AAAA,EAC7C,MAAM,SAAS,OAAO,SAAS,IAAI,YAAY,KAAK,GAAG;AAAA,EACvD,QAAQ,SAAS,QAAQ,SAAS,gBAAgB,IAAI,MAAM;AAAA,EAC5D,IAAI,QAAQ,WAAW;AAAA,IAAG;AAAA,EAE1B,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,YAAY,IAAI;AAAA,EACtB,MAAM,QAAQ,IAAI;AAAA,EAElB,WAAW,KAAK,SAAS;AAAA,IACvB,QAAQ,EAAE;AAAA,WACH;AAAA,QACH,OAAO,IAAI,EAAE,MAAM;AAAA,QACnB;AAAA,WACG,cAAc;AAAA,QACjB,MAAM,MAAM,GACT,MAAM,4CAA4C,EAClD,IAAI,EAAE,MAAM;AAAA,QACf,IAAI,KAAK;AAAA,UAAQ,OAAO,IAAI,IAAI,MAAM;AAAA,QACtC;AAAA,MACF;AAAA,WACK;AAAA,QACH,UAAU,IAAI,EAAE,MAAM;AAAA,QACtB;AAAA,WACG;AAAA,QAEH,IAAI,EAAE,QAAQ,UAAU,EAAE,QAAQ,eAAe,EAAE,QAAQ,eAAe;AAAA,UACxE,MAAM,IAAI,GACP,MAAM,iDAAiD,EACvD,IAAI,EAAE,MAAM;AAAA,UACf,IAAI,GAAG;AAAA,YAAa,MAAM,IAAI,EAAE,WAAW;AAAA,QAC7C;AAAA,QACA;AAAA;AAAA,EAGN;AAAA,EAEA,WAAW,MAAM;AAAA,IAAQ,gBAAgB,IAAI,EAAE;AAAA,EAC/C,WAAW,QAAQ;AAAA,IAAO,uBAAuB,IAAI,IAAI;AAAA,EACzD,WAAW,MAAM,WAAW;AAAA,IAC1B,MAAM,IAAI,GACP,MAAM,8CAA8C,EACpD,IAAI,EAAE;AAAA,IACT,IAAI,GAAG,eAAe,MAAM,IAAI,EAAE,WAAW;AAAA,MAAG;AAAA,IAChD,cAAc,IAAI,EAAE;AAAA,EACtB;AAAA,EACA,UAAU,IAAI,cAAc,OAAO,IAAI,CAAC;AAAA;AAM1C,SAAS,WAAW,CAAC,IAAuB;AAAA,EAC1C,IAAI,CAAC,aAAa,EAAE;AAAA,IAAG,OAAO;AAAA,EAC9B,MAAM,UAAU,SAAS,IAAI,sBAAsB;AAAA,EACnD,MAAM,MAAM,SAAS,IAAI,YAAY;AAAA,EACrC,GAAG,YAAY,MAAM;AAAA,IACnB,IAAI,YAAY,wBAAwB,QAAQ;AAAA,MAAM,YAAY,EAAE;AAAA,IAC/D;AAAA,wBAAkB,EAAE;AAAA,GAC1B,EAAE;AAAA,EACH,OAAO;AAAA;AAIF,SAAS,kBAAkB,CAAC,IAAuB;AAAA,EACxD,IAAI,CAAC,aAAa,EAAE;AAAA,IAAG,OAAO;AAAA,EAC9B,GAAG,YAAY,MAAM,YAAY,EAAE,CAAC,EAAE;AAAA,EACtC,OAAO;AAAA;AAGT,SAAS,SAAS,CAAC,IAAc,OAAe,OAA4B;AAAA,EAC1E,MAAM,QAAQ,MACX,MAAM,KAAK,EACX,OAAO,OAAO,EACd,IAAI,CAAC,MAAM,IAAI,EAAE,QAAQ,MAAM,IAAI,IAAI,EACvC,KAAK,GAAG;AAAA,EACX,IAAI,CAAC;AAAA,IAAO,OAAO,CAAC;AAAA,EACpB,MAAM,OAAO,GACV,MACC,gKACF,EACC,IAAI,OAAO,KAAK;AAAA,EAOnB,OAAO,KAAK,IAAI,CAAC,OAAO;AAAA,IACtB,MAAM,EAAE;AAAA,IACR,IAAI,EAAE;AAAA,IACN,aAAa,EAAE;AAAA,IACf,OAAO,EAAE,SAAS;AAAA,IAClB,SAAS,EAAE;AAAA,EACb,EAAE;AAAA;AAGJ,SAAS,WAAW,CAAC,MAAc,GAAmB;AAAA,EACpD,MAAM,IAAI,KAAK,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC;AAAA,EACpD,IAAI,IAAI;AAAA,IAAG,OAAO,KAAK,MAAM,GAAG,EAAE;AAAA,EAClC,MAAM,QAAQ,KAAK,IAAI,GAAG,IAAI,EAAE;AAAA,EAChC,OAAO,GAAG,QAAQ,IAAI,WAAK,KAAK,KAAK,MAAM,OAAO,IAAI,EAAE,SAAS,EAAE;AAAA;AAIrE,SAAS,UAAU,CAAC,IAAc,OAAe,OAA4B;AAAA,EAC3E,MAAM,OAAO,IAAI,MAAM,QAAQ,WAAW,MAAM;AAAA,EAChD,MAAM,MAAmB,CAAC;AAAA,EAC1B,MAAM,OAAO,GACV,MACC,0IACF,EACC,IAAI,MAAM,MAAM,KAAK;AAAA,EAMxB,WAAW,KAAK;AAAA,IACd,IAAI,KAAK;AAAA,MACP,MAAM;AAAA,MACN,IAAI,EAAE;AAAA,MACN,aAAa,EAAE;AAAA,MACf,OAAO,EAAE,SAAS;AAAA,MAClB,SAAS,YAAY,EAAE,QAAQ,EAAE,SAAS,IAAI,KAAK;AAAA,IACrD,CAAC;AAAA,EAEH,IAAI,IAAI,SAAS,OAAO;AAAA,IACtB,MAAM,OAAO,GACV,MACC;AAAA;AAAA;AAAA,+CAGuC;AAAA,8DAEzC,EACC,IAAI,MAAM,QAAQ,IAAI,MAAM;AAAA,IAK/B,WAAW,KAAK;AAAA,MACd,IAAI,KAAK;AAAA,QACP,MAAM;AAAA,QACN,IAAI,EAAE;AAAA,QACN,aAAa,EAAE;AAAA,QACf,SAAS,YAAY,EAAE,QAAQ,IAAI,KAAK;AAAA,MAC1C,CAAC;AAAA,EACL;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,MAAM,CACpB,IACA,OACA,OAA2B,CAAC,GACf;AAAA,EACb,MAAM,QAAQ,KAAK,SAAS;AAAA,EAC5B,IAAI,YAAY,EAAE,GAAG;AAAA,IACnB,IAAI;AAAA,MACF,MAAM,OAAO,UAAU,IAAI,OAAO,KAAK;AAAA,MACvC,IAAI,KAAK;AAAA,QAAQ,OAAO;AAAA,MACxB,MAAM;AAAA,EAGV;AAAA,EACA,OAAO,WAAW,IAAI,OAAO,KAAK;AAAA;;;AXzQpC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AYjBA,IAAI;AAEG,IAAM,wBAAsB,OAAO,OAAO;AAAA,EAC7C,QAAQ;AACZ,CAAC;AAC+B,SAAS,YAAY,CAAC,MAAM,aAAa,QAAQ;AAAA,EAC7E,SAAS,IAAI,CAAC,MAAM,KAAK;AAAA,IACrB,IAAI,CAAC,KAAK,MAAM;AAAA,MACZ,OAAO,eAAe,MAAM,QAAQ;AAAA,QAChC,OAAO;AAAA,UACH;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ,IAAI;AAAA,QAChB;AAAA,QACA,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AAAA,IACA,IAAI,KAAK,KAAK,OAAO,IAAI,IAAI,GAAG;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,KAAK,KAAK,OAAO,IAAI,IAAI;AAAA,IACzB,YAAY,MAAM,GAAG;AAAA,IAErB,MAAM,QAAQ,EAAE;AAAA,IAChB,MAAM,OAAO,OAAO,KAAK,KAAK;AAAA,IAC9B,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,MAClC,MAAM,IAAI,KAAK;AAAA,MACf,IAAI,EAAE,KAAK,OAAO;AAAA,QACd,KAAK,KAAK,MAAM,GAAG,KAAK,IAAI;AAAA,MAChC;AAAA,IACJ;AAAA;AAAA,EAGJ,MAAM,SAAS,QAAQ,UAAU;AAAA;AAAA,EACjC,MAAM,mBAAmB,OAAO;AAAA,EAChC;AAAA,EACA,OAAO,eAAe,YAAY,QAAQ,EAAE,OAAO,KAAK,CAAC;AAAA,EACzD,SAAS,CAAC,CAAC,KAAK;AAAA,IACZ,IAAI;AAAA,IACJ,MAAM,OAAO,QAAQ,SAAS,IAAI,aAAe;AAAA,IACjD,KAAK,MAAM,GAAG;AAAA,KACb,MAAK,KAAK,MAAM,aAAa,IAAG,WAAW,CAAC;AAAA,IAC7C,WAAW,MAAM,KAAK,KAAK,UAAU;AAAA,MACjC,GAAG;AAAA,IACP;AAAA,IACA,OAAO;AAAA;AAAA,EAEX,OAAO,eAAe,GAAG,QAAQ,EAAE,OAAO,KAAK,CAAC;AAAA,EAChD,OAAO,eAAe,GAAG,OAAO,aAAa;AAAA,IACzC,OAAO,CAAC,SAAS;AAAA,MACb,IAAI,QAAQ,UAAU,gBAAgB,OAAO;AAAA,QACzC,OAAO;AAAA,MACX,OAAO,MAAM,MAAM,QAAQ,IAAI,IAAI;AAAA;AAAA,EAE3C,CAAC;AAAA,EACD,OAAO,eAAe,GAAG,QAAQ,EAAE,OAAO,KAAK,CAAC;AAAA,EAChD,OAAO;AAAA;AAGJ,IAAM,SAAS,OAAO,WAAW;AAAA;AACjC,MAAM,uBAAuB,MAAM;AAAA,EACtC,WAAW,GAAG;AAAA,IACV,MAAM,0EAA0E;AAAA;AAExF;AAAA;AACO,MAAM,wBAAwB,MAAM;AAAA,EACvC,WAAW,CAAC,MAAM;AAAA,IACd,MAAM,uDAAuD,MAAM;AAAA,IACnE,KAAK,OAAO;AAAA;AAEpB;AAAA,CACC,KAAK,YAAY,uBAAuB,GAAG,qBAAqB,CAAC;AAC3D,IAAM,eAAe,WAAW;AAChC,SAAS,MAAM,CAAC,WAAW;AAAA,EAC9B,IAAI;AAAA,IACA,OAAO,OAAO,cAAc,SAAS;AAAA,EACzC,OAAO;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1EJ,SAAS,WAAW,CAAC,KAAK;AAAA,EAC7B,OAAO;AAAA;AAEJ,SAAS,cAAc,CAAC,KAAK;AAAA,EAChC,OAAO;AAAA;AAEJ,SAAS,QAAQ,CAAC,MAAM;AACxB,SAAS,WAAW,CAAC,IAAI;AAAA,EAC5B,MAAM,IAAI,MAAM,sCAAsC;AAAA;AAEnD,SAAS,MAAM,CAAC,GAAG;AACnB,SAAS,aAAa,CAAC,SAAS;AAAA,EACnC,MAAM,gBAAgB,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,OAAO,MAAM,QAAQ;AAAA,EAChF,MAAM,SAAS,OAAO,QAAQ,OAAO,EAChC,OAAO,EAAE,GAAG,OAAO,cAAc,QAAQ,CAAC,CAAC,MAAM,EAAE,EACnD,IAAI,EAAE,GAAG,OAAO,CAAC;AAAA,EACtB,OAAO;AAAA;AAEJ,SAAS,UAAU,CAAC,OAAO,YAAY,KAAK;AAAA,EAC/C,OAAO,MAAM,IAAI,CAAC,QAAQ,mBAAmB,GAAG,CAAC,EAAE,KAAK,SAAS;AAAA;AAE9D,SAAS,qBAAqB,CAAC,GAAG,OAAO;AAAA,EAC5C,IAAI,OAAO,UAAU;AAAA,IACjB,OAAO,MAAM,SAAS;AAAA,EAC1B,OAAO;AAAA;AAEJ,SAAS,MAAM,CAAC,QAAQ;AAAA,EAC3B,MAAM,MAAM;AAAA,EACZ,OAAO;AAAA,QACC,KAAK,GAAG;AAAA,MACR,IAAI,CAAC,KAAK;AAAA,QACN,MAAM,QAAQ,OAAO;AAAA,QACrB,OAAO,eAAe,MAAM,SAAS,EAAE,MAAM,CAAC;AAAA,QAC9C,OAAO;AAAA,MACX;AAAA,MACA,MAAM,IAAI,MAAM,0BAA0B;AAAA;AAAA,EAElD;AAAA;AAEG,SAAS,OAAO,CAAC,OAAO;AAAA,EAC3B,OAAO,UAAU,QAAQ,UAAU;AAAA;AAEhC,SAAS,UAAU,CAAC,QAAQ;AAAA,EAC/B,MAAM,QAAQ,OAAO,WAAW,GAAG,IAAI,IAAI;AAAA,EAC3C,MAAM,MAAM,OAAO,SAAS,GAAG,IAAI,OAAO,SAAS,IAAI,OAAO;AAAA,EAC9D,OAAO,OAAO,MAAM,OAAO,GAAG;AAAA;AAE3B,SAAS,kBAAkB,CAAC,KAAK,MAAM;AAAA,EAC1C,MAAM,QAAQ,MAAM;AAAA,EACpB,MAAM,eAAe,KAAK,MAAM,KAAK;AAAA,EAErC,MAAM,YAAY,OAAO,UAAU,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,EAC9D,IAAI,KAAK,IAAI,QAAQ,YAAY,IAAI;AAAA,IACjC,OAAO;AAAA,EACX,OAAO,QAAQ;AAAA;AAEnB,IAAM,6BAA4B,OAAO,YAAY;AAC9C,SAAS,UAAU,CAAC,QAAQ,KAAK,QAAQ;AAAA,EAC5C,IAAI,QAAQ;AAAA,EACZ,OAAO,eAAe,QAAQ,KAAK;AAAA,IAC/B,GAAG,GAAG;AAAA,MACF,IAAI,UAAU,YAAY;AAAA,QAEtB;AAAA,MACJ;AAAA,MACA,IAAI,UAAU,WAAW;AAAA,QACrB,QAAQ;AAAA,QACR,QAAQ,OAAO;AAAA,MACnB;AAAA,MACA,OAAO;AAAA;AAAA,IAEX,GAAG,CAAC,GAAG;AAAA,MACH,OAAO,eAAe,QAAQ,KAAK;AAAA,QAC/B,OAAO;AAAA,MAEX,CAAC;AAAA;AAAA,IAGL,cAAc;AAAA,EAClB,CAAC;AAAA;AAEE,SAAS,WAAW,CAAC,KAAK;AAAA,EAC7B,OAAO,OAAO,OAAO,OAAO,eAAe,GAAG,GAAG,OAAO,0BAA0B,GAAG,CAAC;AAAA;AAEnF,SAAS,UAAU,CAAC,QAAQ,MAAM,OAAO;AAAA,EAC5C,OAAO,eAAe,QAAQ,MAAM;AAAA,IAChC;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AAAA;AAEE,SAAS,SAAS,IAAI,MAAM;AAAA,EAC/B,MAAM,oBAAoB,CAAC;AAAA,EAC3B,WAAW,OAAO,MAAM;AAAA,IACpB,MAAM,cAAc,OAAO,0BAA0B,GAAG;AAAA,IACxD,OAAO,OAAO,mBAAmB,WAAW;AAAA,EAChD;AAAA,EACA,OAAO,OAAO,iBAAiB,CAAC,GAAG,iBAAiB;AAAA;AAEjD,SAAS,QAAQ,CAAC,QAAQ;AAAA,EAC7B,OAAO,UAAU,OAAO,KAAK,GAAG;AAAA;AAE7B,SAAS,gBAAgB,CAAC,KAAK,MAAM;AAAA,EACxC,IAAI,CAAC;AAAA,IACD,OAAO;AAAA,EACX,OAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,MAAM,MAAM,GAAG;AAAA;AAE7C,SAAS,gBAAgB,CAAC,aAAa;AAAA,EAC1C,MAAM,OAAO,OAAO,KAAK,WAAW;AAAA,EACpC,MAAM,WAAW,KAAK,IAAI,CAAC,QAAQ,YAAY,IAAI;AAAA,EACnD,OAAO,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,YAAY;AAAA,IAC3C,MAAM,cAAc,CAAC;AAAA,IACrB,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,MAClC,YAAY,KAAK,MAAM,QAAQ;AAAA,IACnC;AAAA,IACA,OAAO;AAAA,GACV;AAAA;AAEE,SAAS,YAAY,CAAC,SAAS,IAAI;AAAA,EACtC,MAAM,QAAQ;AAAA,EACd,IAAI,MAAM;AAAA,EACV,SAAS,IAAI,EAAG,IAAI,QAAQ,KAAK;AAAA,IAC7B,OAAO,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,MAAM,MAAM;AAAA,EACxD;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,GAAG,CAAC,KAAK;AAAA,EACrB,OAAO,KAAK,UAAU,GAAG;AAAA;AAEtB,SAAS,QAAO,CAAC,OAAO;AAAA,EAC3B,OAAO,MACF,YAAY,EACZ,KAAK,EACL,QAAQ,aAAa,EAAE,EACvB,QAAQ,YAAY,GAAG,EACvB,QAAQ,YAAY,EAAE;AAAA;AAExB,IAAM,oBAAqB,uBAAuB,QAAQ,MAAM,oBAAoB,IAAI,UAAU;AAClG,SAAS,QAAQ,CAAC,MAAM;AAAA,EAC3B,OAAO,OAAO,SAAS,YAAY,SAAS,QAAQ,CAAC,MAAM,QAAQ,IAAI;AAAA;AAEpE,IAAM,6BAA4B,OAAO,MAAM;AAAA,EAGlD,IAAI,aAAa,SAAS;AAAA,IACtB,OAAO;AAAA,EACX;AAAA,EAEA,IAAI,OAAO,cAAc,eAAe,WAAW,WAAW,SAAS,YAAY,GAAG;AAAA,IAClF,OAAO;AAAA,EACX;AAAA,EACA,IAAI;AAAA,IACA,MAAM,IAAI;AAAA,IACV,IAAI,EAAE,EAAE;AAAA,IACR,OAAO;AAAA,IAEX,OAAO,GAAG;AAAA,IACN,OAAO;AAAA;AAAA,CAEd;AACM,SAAS,aAAa,CAAC,GAAG;AAAA,EAC7B,IAAI,SAAS,CAAC,MAAM;AAAA,IAChB,OAAO;AAAA,EAEX,MAAM,OAAO,EAAE;AAAA,EACf,IAAI,SAAS;AAAA,IACT,OAAO;AAAA,EACX,IAAI,OAAO,SAAS;AAAA,IAChB,OAAO;AAAA,EAEX,MAAM,OAAO,KAAK;AAAA,EAClB,IAAI,SAAS,IAAI,MAAM;AAAA,IACnB,OAAO;AAAA,EAEX,IAAI,OAAO,UAAU,eAAe,KAAK,MAAM,eAAe,MAAM,OAAO;AAAA,IACvE,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,YAAY,CAAC,GAAG;AAAA,EAC5B,IAAI,cAAc,CAAC;AAAA,IACf,OAAO,KAAK,EAAE;AAAA,EAClB,IAAI,MAAM,QAAQ,CAAC;AAAA,IACf,OAAO,CAAC,GAAG,CAAC;AAAA,EAChB,IAAI,aAAa;AAAA,IACb,OAAO,IAAI,IAAI,CAAC;AAAA,EACpB,IAAI,aAAa;AAAA,IACb,OAAO,IAAI,IAAI,CAAC;AAAA,EACpB,OAAO;AAAA;AAEJ,SAAS,OAAO,CAAC,MAAM;AAAA,EAC1B,IAAI,WAAW;AAAA,EACf,WAAW,OAAO,MAAM;AAAA,IACpB,IAAI,OAAO,UAAU,eAAe,KAAK,MAAM,GAAG,GAAG;AAAA,MACjD;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAEJ,IAAM,gBAAgB,CAAC,SAAS;AAAA,EACnC,MAAM,IAAI,OAAO;AAAA,EACjB,QAAQ;AAAA,SACC;AAAA,MACD,OAAO;AAAA,SACN;AAAA,MACD,OAAO;AAAA,SACN;AAAA,MACD,OAAO,OAAO,MAAM,IAAI,IAAI,QAAQ;AAAA,SACnC;AAAA,MACD,OAAO;AAAA,SACN;AAAA,MACD,OAAO;AAAA,SACN;AAAA,MACD,OAAO;AAAA,SACN;AAAA,MACD,OAAO;AAAA,SACN;AAAA,MACD,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,QACrB,OAAO;AAAA,MACX;AAAA,MACA,IAAI,SAAS,MAAM;AAAA,QACf,OAAO;AAAA,MACX;AAAA,MACA,IAAI,KAAK,QAAQ,OAAO,KAAK,SAAS,cAAc,KAAK,SAAS,OAAO,KAAK,UAAU,YAAY;AAAA,QAChG,OAAO;AAAA,MACX;AAAA,MACA,IAAI,OAAO,QAAQ,eAAe,gBAAgB,KAAK;AAAA,QACnD,OAAO;AAAA,MACX;AAAA,MACA,IAAI,OAAO,QAAQ,eAAe,gBAAgB,KAAK;AAAA,QACnD,OAAO;AAAA,MACX;AAAA,MACA,IAAI,OAAO,SAAS,eAAe,gBAAgB,MAAM;AAAA,QACrD,OAAO;AAAA,MACX;AAAA,MAEA,IAAI,OAAO,SAAS,eAAe,gBAAgB,MAAM;AAAA,QACrD,OAAO;AAAA,MACX;AAAA,MACA,OAAO;AAAA;AAAA,MAEP,MAAM,IAAI,MAAM,sBAAsB,GAAG;AAAA;AAAA;AAG9C,IAAM,mCAAkC,IAAI,IAAI,CAAC,UAAU,UAAU,QAAQ,CAAC;AAC9E,IAAM,iCAAgC,IAAI,IAAI;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AACM,SAAS,WAAW,CAAC,KAAK;AAAA,EAC7B,OAAO,IAAI,QAAQ,uBAAuB,MAAM;AAAA;AAG7C,SAAS,KAAK,CAAC,MAAM,KAAK,QAAQ;AAAA,EACrC,MAAM,KAAK,IAAI,KAAK,KAAK,OAAO,OAAO,KAAK,KAAK,GAAG;AAAA,EACpD,IAAI,CAAC,OAAO,QAAQ;AAAA,IAChB,GAAG,KAAK,SAAS;AAAA,EACrB,OAAO;AAAA;AAEJ,SAAS,eAAe,CAAC,SAAS;AAAA,EACrC,MAAM,SAAS;AAAA,EACf,IAAI,CAAC;AAAA,IACD,OAAO,CAAC;AAAA,EACZ,IAAI,OAAO,WAAW;AAAA,IAClB,OAAO,EAAE,OAAO,MAAM,OAAO;AAAA,EACjC,IAAI,QAAQ,YAAY,WAAW;AAAA,IAC/B,IAAI,QAAQ,UAAU;AAAA,MAClB,MAAM,IAAI,MAAM,kDAAkD;AAAA,IACtE,OAAO,QAAQ,OAAO;AAAA,EAC1B;AAAA,EACA,OAAO,OAAO;AAAA,EACd,IAAI,OAAO,OAAO,UAAU;AAAA,IACxB,OAAO,KAAK,QAAQ,OAAO,MAAM,OAAO,MAAM;AAAA,EAClD,OAAO;AAAA;AAEJ,SAAS,sBAAsB,CAAC,QAAQ;AAAA,EAC3C,IAAI;AAAA,EACJ,OAAO,IAAI,MAAM,CAAC,GAAG;AAAA,IACjB,GAAG,CAAC,GAAG,MAAM,UAAU;AAAA,MACnB,WAAW,SAAS,OAAO;AAAA,MAC3B,OAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA;AAAA,IAE7C,GAAG,CAAC,GAAG,MAAM,OAAO,UAAU;AAAA,MAC1B,WAAW,SAAS,OAAO;AAAA,MAC3B,OAAO,QAAQ,IAAI,QAAQ,MAAM,OAAO,QAAQ;AAAA;AAAA,IAEpD,GAAG,CAAC,GAAG,MAAM;AAAA,MACT,WAAW,SAAS,OAAO;AAAA,MAC3B,OAAO,QAAQ,IAAI,QAAQ,IAAI;AAAA;AAAA,IAEnC,cAAc,CAAC,GAAG,MAAM;AAAA,MACpB,WAAW,SAAS,OAAO;AAAA,MAC3B,OAAO,QAAQ,eAAe,QAAQ,IAAI;AAAA;AAAA,IAE9C,OAAO,CAAC,GAAG;AAAA,MACP,WAAW,SAAS,OAAO;AAAA,MAC3B,OAAO,QAAQ,QAAQ,MAAM;AAAA;AAAA,IAEjC,wBAAwB,CAAC,GAAG,MAAM;AAAA,MAC9B,WAAW,SAAS,OAAO;AAAA,MAC3B,OAAO,QAAQ,yBAAyB,QAAQ,IAAI;AAAA;AAAA,IAExD,cAAc,CAAC,GAAG,MAAM,YAAY;AAAA,MAChC,WAAW,SAAS,OAAO;AAAA,MAC3B,OAAO,QAAQ,eAAe,QAAQ,MAAM,UAAU;AAAA;AAAA,EAE9D,CAAC;AAAA;AAEE,SAAS,kBAAkB,CAAC,OAAO;AAAA,EACtC,IAAI,OAAO,UAAU;AAAA,IACjB,OAAO,MAAM,SAAS,IAAI;AAAA,EAC9B,IAAI,OAAO,UAAU;AAAA,IACjB,OAAO,IAAI;AAAA,EACf,OAAO,GAAG;AAAA;AAEP,SAAS,YAAY,CAAC,OAAO;AAAA,EAChC,OAAO,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,MAAM;AAAA,IACpC,OAAO,MAAM,GAAG,KAAK,UAAU,cAAc,MAAM,GAAG,KAAK,WAAW;AAAA,GACzE;AAAA;AAEE,IAAM,uBAAuB;AAAA,EAChC,SAAS,CAAC,OAAO,kBAAkB,OAAO,gBAAgB;AAAA,EAC1D,OAAO,CAAC,aAAa,UAAU;AAAA,EAC/B,QAAQ,CAAC,GAAG,UAAU;AAAA,EACtB,SAAS,CAAC,0CAAwB,uCAAqB;AAAA,EACvD,SAAS,CAAC,CAAC,OAAO,WAAW,OAAO,SAAS;AACjD;AACO,IAAM,uBAAuB;AAAA,EAChC,OAAO,iBAAgB,OAAO,sBAAsB,mBAAkB,OAAO,qBAAqB,CAAC;AAAA,EACnG,QAAQ,iBAAgB,OAAO,CAAC,mBAAkB,OAAO,sBAAsB,CAAC;AACpF;AACO,SAAS,IAAI,CAAC,QAAQ,MAAM;AAAA,EAC/B,MAAM,UAAU,OAAO,KAAK;AAAA,EAC5B,MAAM,SAAS,QAAQ;AAAA,EACvB,MAAM,YAAY,UAAU,OAAO,SAAS;AAAA,EAC5C,IAAI,WAAW;AAAA,IACX,MAAM,IAAI,MAAM,iEAAiE;AAAA,EACrF;AAAA,EACA,MAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,QAC/B,KAAK,GAAG;AAAA,MACR,MAAM,WAAW,CAAC;AAAA,MAClB,WAAW,OAAO,MAAM;AAAA,QACpB,IAAI,EAAE,OAAO,QAAQ,QAAQ;AAAA,UACzB,MAAM,IAAI,MAAM,sBAAsB,MAAM;AAAA,QAChD;AAAA,QACA,IAAI,CAAC,KAAK;AAAA,UACN;AAAA,QACJ,SAAS,OAAO,QAAQ,MAAM;AAAA,MAClC;AAAA,MACA,WAAW,MAAM,SAAS,QAAQ;AAAA,MAClC,OAAO;AAAA;AAAA,IAEX,QAAQ,CAAC;AAAA,EACb,CAAC;AAAA,EACD,OAAO,MAAM,QAAQ,GAAG;AAAA;AAErB,SAAS,IAAI,CAAC,QAAQ,MAAM;AAAA,EAC/B,MAAM,UAAU,OAAO,KAAK;AAAA,EAC5B,MAAM,SAAS,QAAQ;AAAA,EACvB,MAAM,YAAY,UAAU,OAAO,SAAS;AAAA,EAC5C,IAAI,WAAW;AAAA,IACX,MAAM,IAAI,MAAM,iEAAiE;AAAA,EACrF;AAAA,EACA,MAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,QAC/B,KAAK,GAAG;AAAA,MACR,MAAM,WAAW,KAAK,OAAO,KAAK,IAAI,MAAM;AAAA,MAC5C,WAAW,OAAO,MAAM;AAAA,QACpB,IAAI,EAAE,OAAO,QAAQ,QAAQ;AAAA,UACzB,MAAM,IAAI,MAAM,sBAAsB,MAAM;AAAA,QAChD;AAAA,QACA,IAAI,CAAC,KAAK;AAAA,UACN;AAAA,QACJ,OAAO,SAAS;AAAA,MACpB;AAAA,MACA,WAAW,MAAM,SAAS,QAAQ;AAAA,MAClC,OAAO;AAAA;AAAA,IAEX,QAAQ,CAAC;AAAA,EACb,CAAC;AAAA,EACD,OAAO,MAAM,QAAQ,GAAG;AAAA;AAErB,SAAS,MAAM,CAAC,QAAQ,OAAO;AAAA,EAClC,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,IACvB,MAAM,IAAI,MAAM,kDAAkD;AAAA,EACtE;AAAA,EACA,MAAM,SAAS,OAAO,KAAK,IAAI;AAAA,EAC/B,MAAM,YAAY,UAAU,OAAO,SAAS;AAAA,EAC5C,IAAI,WAAW;AAAA,IAGX,MAAM,gBAAgB,OAAO,KAAK,IAAI;AAAA,IACtC,WAAW,OAAO,OAAO;AAAA,MACrB,IAAI,OAAO,yBAAyB,eAAe,GAAG,MAAM,WAAW;AAAA,QACnE,MAAM,IAAI,MAAM,8FAA8F;AAAA,MAClH;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,MAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,QAC/B,KAAK,GAAG;AAAA,MACR,MAAM,SAAS,KAAK,OAAO,KAAK,IAAI,UAAU,MAAM;AAAA,MACpD,WAAW,MAAM,SAAS,MAAM;AAAA,MAChC,OAAO;AAAA;AAAA,EAEf,CAAC;AAAA,EACD,OAAO,MAAM,QAAQ,GAAG;AAAA;AAErB,SAAS,UAAU,CAAC,QAAQ,OAAO;AAAA,EACtC,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,IACvB,MAAM,IAAI,MAAM,sDAAsD;AAAA,EAC1E;AAAA,EACA,MAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,QAC/B,KAAK,GAAG;AAAA,MACR,MAAM,SAAS,KAAK,OAAO,KAAK,IAAI,UAAU,MAAM;AAAA,MACpD,WAAW,MAAM,SAAS,MAAM;AAAA,MAChC,OAAO;AAAA;AAAA,EAEf,CAAC;AAAA,EACD,OAAO,MAAM,QAAQ,GAAG;AAAA;AAErB,SAAS,KAAK,CAAC,GAAG,GAAG;AAAA,EACxB,IAAI,EAAE,KAAK,IAAI,QAAQ,QAAQ;AAAA,IAC3B,MAAM,IAAI,MAAM,8FAA8F;AAAA,EAClH;AAAA,EACA,MAAM,MAAM,UAAU,EAAE,KAAK,KAAK;AAAA,QAC1B,KAAK,GAAG;AAAA,MACR,MAAM,SAAS,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,IAAI,MAAM;AAAA,MAC1D,WAAW,MAAM,SAAS,MAAM;AAAA,MAChC,OAAO;AAAA;AAAA,QAEP,QAAQ,GAAG;AAAA,MACX,OAAO,EAAE,KAAK,IAAI;AAAA;AAAA,IAEtB,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC;AAAA,EAClC,CAAC;AAAA,EACD,OAAO,MAAM,GAAG,GAAG;AAAA;AAEhB,SAAS,OAAO,CAAC,OAAO,QAAQ,MAAM;AAAA,EACzC,MAAM,UAAU,OAAO,KAAK;AAAA,EAC5B,MAAM,SAAS,QAAQ;AAAA,EACvB,MAAM,YAAY,UAAU,OAAO,SAAS;AAAA,EAC5C,IAAI,WAAW;AAAA,IACX,MAAM,IAAI,MAAM,oEAAoE;AAAA,EACxF;AAAA,EACA,MAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,QAC/B,KAAK,GAAG;AAAA,MACR,MAAM,WAAW,OAAO,KAAK,IAAI;AAAA,MACjC,MAAM,QAAQ,KAAK,SAAS;AAAA,MAC5B,IAAI,MAAM;AAAA,QACN,WAAW,OAAO,MAAM;AAAA,UACpB,IAAI,EAAE,OAAO,WAAW;AAAA,YACpB,MAAM,IAAI,MAAM,sBAAsB,MAAM;AAAA,UAChD;AAAA,UACA,IAAI,CAAC,KAAK;AAAA,YACN;AAAA,UAEJ,MAAM,OAAO,QACP,IAAI,MAAM;AAAA,YACR,MAAM;AAAA,YACN,WAAW,SAAS;AAAA,UACxB,CAAC,IACC,SAAS;AAAA,QACnB;AAAA,MACJ,EACK;AAAA,QACD,WAAW,OAAO,UAAU;AAAA,UAExB,MAAM,OAAO,QACP,IAAI,MAAM;AAAA,YACR,MAAM;AAAA,YACN,WAAW,SAAS;AAAA,UACxB,CAAC,IACC,SAAS;AAAA,QACnB;AAAA;AAAA,MAEJ,WAAW,MAAM,SAAS,KAAK;AAAA,MAC/B,OAAO;AAAA;AAAA,IAEX,QAAQ,CAAC;AAAA,EACb,CAAC;AAAA,EACD,OAAO,MAAM,QAAQ,GAAG;AAAA;AAErB,SAAS,QAAQ,CAAC,OAAO,QAAQ,MAAM;AAAA,EAC1C,MAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,QAC/B,KAAK,GAAG;AAAA,MACR,MAAM,WAAW,OAAO,KAAK,IAAI;AAAA,MACjC,MAAM,QAAQ,KAAK,SAAS;AAAA,MAC5B,IAAI,MAAM;AAAA,QACN,WAAW,OAAO,MAAM;AAAA,UACpB,IAAI,EAAE,OAAO,QAAQ;AAAA,YACjB,MAAM,IAAI,MAAM,sBAAsB,MAAM;AAAA,UAChD;AAAA,UACA,IAAI,CAAC,KAAK;AAAA,YACN;AAAA,UAEJ,MAAM,OAAO,IAAI,MAAM;AAAA,YACnB,MAAM;AAAA,YACN,WAAW,SAAS;AAAA,UACxB,CAAC;AAAA,QACL;AAAA,MACJ,EACK;AAAA,QACD,WAAW,OAAO,UAAU;AAAA,UAExB,MAAM,OAAO,IAAI,MAAM;AAAA,YACnB,MAAM;AAAA,YACN,WAAW,SAAS;AAAA,UACxB,CAAC;AAAA,QACL;AAAA;AAAA,MAEJ,WAAW,MAAM,SAAS,KAAK;AAAA,MAC/B,OAAO;AAAA;AAAA,EAEf,CAAC;AAAA,EACD,OAAO,MAAM,QAAQ,GAAG;AAAA;AAGrB,SAAS,OAAO,CAAC,GAAG,aAAa,GAAG;AAAA,EACvC,IAAI,EAAE,YAAY;AAAA,IACd,OAAO;AAAA,EACX,SAAS,IAAI,WAAY,IAAI,EAAE,OAAO,QAAQ,KAAK;AAAA,IAC/C,IAAI,EAAE,OAAO,IAAI,aAAa,MAAM;AAAA,MAChC,OAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAIJ,SAAS,iBAAiB,CAAC,GAAG,aAAa,GAAG;AAAA,EACjD,IAAI,EAAE,YAAY;AAAA,IACd,OAAO;AAAA,EACX,SAAS,IAAI,WAAY,IAAI,EAAE,OAAO,QAAQ,KAAK;AAAA,IAC/C,IAAI,EAAE,OAAO,IAAI,aAAa,OAAO;AAAA,MACjC,OAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,YAAY,CAAC,MAAM,QAAQ;AAAA,EACvC,OAAO,OAAO,IAAI,CAAC,QAAQ;AAAA,IACvB,IAAI;AAAA,KACH,MAAK,KAAK,SAAS,IAAG,OAAO,CAAC;AAAA,IAC/B,IAAI,KAAK,QAAQ,IAAI;AAAA,IACrB,OAAO;AAAA,GACV;AAAA;AAEE,SAAS,aAAa,CAAC,SAAS;AAAA,EACnC,OAAO,OAAO,YAAY,WAAW,UAAU,SAAS;AAAA;AAErD,SAAS,aAAa,CAAC,KAAK,KAAK,SAAQ;AAAA,EAC5C,MAAM,UAAU,IAAI,UACd,IAAI,UACH,cAAc,IAAI,MAAM,KAAK,KAAK,QAAQ,GAAG,CAAC,KAC7C,cAAc,KAAK,QAAQ,GAAG,CAAC,KAC/B,cAAc,QAAO,cAAc,GAAG,CAAC,KACvC,cAAc,QAAO,cAAc,GAAG,CAAC,KACvC;AAAA,EACR,QAAQ,MAAM,OAAO,UAAU,WAAW,OAAO,WAAW,SAAS;AAAA,EACrE,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EAC3B,KAAK,UAAU;AAAA,EACf,IAAI,KAAK,aAAa;AAAA,IAClB,KAAK,QAAQ;AAAA,EACjB;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,gBAAgB,CAAC,OAAO;AAAA,EACpC,IAAI,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACX,IAAI,iBAAiB;AAAA,IACjB,OAAO;AAAA,EAEX,IAAI,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACX,OAAO;AAAA;AAEJ,SAAS,mBAAmB,CAAC,OAAO;AAAA,EACvC,IAAI,MAAM,QAAQ,KAAK;AAAA,IACnB,OAAO;AAAA,EACX,IAAI,OAAO,UAAU;AAAA,IACjB,OAAO;AAAA,EACX,OAAO;AAAA;AAEJ,SAAS,UAAU,CAAC,MAAM;AAAA,EAC7B,MAAM,IAAI,OAAO;AAAA,EACjB,QAAQ;AAAA,SACC,UAAU;AAAA,MACX,OAAO,OAAO,MAAM,IAAI,IAAI,QAAQ;AAAA,IACxC;AAAA,SACK,UAAU;AAAA,MACX,IAAI,SAAS,MAAM;AAAA,QACf,OAAO;AAAA,MACX;AAAA,MACA,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,QACrB,OAAO;AAAA,MACX;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,IAAI,OAAO,OAAO,eAAe,GAAG,MAAM,OAAO,aAAa,iBAAiB,OAAO,IAAI,aAAa;AAAA,QACnG,OAAO,IAAI,YAAY;AAAA,MAC3B;AAAA,IACJ;AAAA;AAAA,EAEJ,OAAO;AAAA;AAEJ,SAAS,KAAK,IAAI,MAAM;AAAA,EAC3B,OAAO,KAAK,OAAO,QAAQ;AAAA,EAC3B,IAAI,OAAO,QAAQ,UAAU;AAAA,IACzB,OAAO;AAAA,MACH,SAAS;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO,KAAK,IAAI;AAAA;AAEb,SAAS,SAAS,CAAC,KAAK;AAAA,EAC3B,OAAO,OAAO,QAAQ,GAAG,EACpB,OAAO,EAAE,GAAG,OAAO;AAAA,IAEpB,OAAO,OAAO,MAAM,OAAO,SAAS,GAAG,EAAE,CAAC;AAAA,GAC7C,EACI,IAAI,CAAC,OAAO,GAAG,EAAE;AAAA;AAGnB,SAAS,kBAAkB,CAAC,QAAQ;AAAA,EACvC,MAAM,eAAe,KAAK,MAAM;AAAA,EAChC,MAAM,QAAQ,IAAI,WAAW,aAAa,MAAM;AAAA,EAChD,SAAS,IAAI,EAAG,IAAI,aAAa,QAAQ,KAAK;AAAA,IAC1C,MAAM,KAAK,aAAa,WAAW,CAAC;AAAA,EACxC;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,kBAAkB,CAAC,OAAO;AAAA,EACtC,IAAI,eAAe;AAAA,EACnB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACnC,gBAAgB,OAAO,aAAa,MAAM,EAAE;AAAA,EAChD;AAAA,EACA,OAAO,KAAK,YAAY;AAAA;AAErB,SAAS,qBAAqB,CAAC,WAAW;AAAA,EAC7C,MAAM,SAAS,UAAU,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AAAA,EAC7D,MAAM,UAAU,IAAI,QAAQ,IAAK,OAAO,SAAS,KAAM,CAAC;AAAA,EACxD,OAAO,mBAAmB,SAAS,OAAO;AAAA;AAEvC,SAAS,qBAAqB,CAAC,OAAO;AAAA,EACzC,OAAO,mBAAmB,KAAK,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,MAAM,EAAE;AAAA;AAEtF,SAAS,eAAe,CAAC,KAAK;AAAA,EACjC,MAAM,WAAW,IAAI,QAAQ,OAAO,EAAE;AAAA,EACtC,IAAI,SAAS,SAAS,MAAM,GAAG;AAAA,IAC3B,MAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AAAA,EACA,MAAM,QAAQ,IAAI,WAAW,SAAS,SAAS,CAAC;AAAA,EAChD,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AAAA,IACzC,MAAM,IAAI,KAAK,OAAO,SAAS,SAAS,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;AAAA,EAC/D;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,eAAe,CAAC,OAAO;AAAA,EACnC,OAAO,MAAM,KAAK,KAAK,EAClB,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAC1C,KAAK,EAAE;AAAA;AAAA;AAGT,MAAM,MAAM;AAAA,EACf,WAAW,IAAI,OAAO;AAC1B;;;AC/pBA,IAAM,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC/B,KAAK,OAAO;AAAA,EACZ,OAAO,eAAe,MAAM,QAAQ;AAAA,IAChC,OAAO,KAAK;AAAA,IACZ,YAAY;AAAA,EAChB,CAAC;AAAA,EACD,OAAO,eAAe,MAAM,UAAU;AAAA,IAClC,OAAO;AAAA,IACP,YAAY;AAAA,EAChB,CAAC;AAAA,EACD,KAAK,UAAU,KAAK,UAAU,KAAU,uBAAuB,CAAC;AAAA,EAChE,OAAO,eAAe,MAAM,YAAY;AAAA,IACpC,OAAO,MAAM,KAAK;AAAA,IAClB,YAAY;AAAA,EAChB,CAAC;AAAA;AAEE,IAAM,YAAY,aAAa,aAAa,WAAW;AACvD,IAAM,gBAAgB,aAAa,aAAa,aAAa,EAAE,QAAQ,MAAM,CAAC;AAC9E,SAAS,YAAY,CAAC,OAAO,SAAS,CAAC,WAAU,OAAM,SAAS;AAAA,EACnE,MAAM,cAAc,CAAC;AAAA,EACrB,MAAM,aAAa,CAAC;AAAA,EACpB,WAAW,OAAO,MAAM,QAAQ;AAAA,IAC5B,IAAI,IAAI,KAAK,SAAS,GAAG;AAAA,MACrB,YAAY,IAAI,KAAK,MAAM,YAAY,IAAI,KAAK,OAAO,CAAC;AAAA,MACxD,YAAY,IAAI,KAAK,IAAI,KAAK,OAAO,GAAG,CAAC;AAAA,IAC7C,EACK;AAAA,MACD,WAAW,KAAK,OAAO,GAAG,CAAC;AAAA;AAAA,EAEnC;AAAA,EACA,OAAO,EAAE,YAAY,YAAY;AAAA;AAE9B,SAAS,WAAW,CAAC,OAAO,SAAS,CAAC,WAAU,OAAM,SAAS;AAAA,EAClE,MAAM,cAAc,EAAE,SAAS,CAAC,EAAE;AAAA,EAClC,MAAM,eAAe,CAAC,QAAO,OAAO,CAAC,MAAM;AAAA,IACvC,WAAW,UAAS,OAAM,QAAQ;AAAA,MAC9B,IAAI,OAAM,SAAS,mBAAmB,OAAM,OAAO,QAAQ;AAAA,QACvD,OAAM,OAAO,IAAI,CAAC,WAAW,aAAa,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,OAAM,IAAI,CAAC,CAAC;AAAA,MACnF,EACK,SAAI,OAAM,SAAS,eAAe;AAAA,QACnC,aAAa,EAAE,QAAQ,OAAM,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,OAAM,IAAI,CAAC;AAAA,MACnE,EACK,SAAI,OAAM,SAAS,mBAAmB;AAAA,QACvC,aAAa,EAAE,QAAQ,OAAM,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,OAAM,IAAI,CAAC;AAAA,MACnE,EACK;AAAA,QACD,MAAM,WAAW,CAAC,GAAG,MAAM,GAAG,OAAM,IAAI;AAAA,QACxC,IAAI,SAAS,WAAW,GAAG;AAAA,UACvB,YAAY,QAAQ,KAAK,OAAO,MAAK,CAAC;AAAA,QAC1C,EACK;AAAA,UACD,IAAI,OAAO;AAAA,UACX,IAAI,IAAI;AAAA,UACR,OAAO,IAAI,SAAS,QAAQ;AAAA,YACxB,MAAM,KAAK,SAAS;AAAA,YACpB,MAAM,WAAW,MAAM,SAAS,SAAS;AAAA,YACzC,IAAI,CAAC,UAAU;AAAA,cACX,KAAK,MAAM,KAAK,OAAO,EAAE,SAAS,CAAC,EAAE;AAAA,YACzC,EACK;AAAA,cACD,KAAK,MAAM,KAAK,OAAO,EAAE,SAAS,CAAC,EAAE;AAAA,cACrC,KAAK,IAAI,QAAQ,KAAK,OAAO,MAAK,CAAC;AAAA;AAAA,YAEvC,OAAO,KAAK;AAAA,YACZ;AAAA,UACJ;AAAA;AAAA;AAAA,IAGZ;AAAA;AAAA,EAEJ,aAAa,KAAK;AAAA,EAClB,OAAO;AAAA;AAEJ,SAAS,YAAY,CAAC,OAAO,SAAS,CAAC,WAAU,OAAM,SAAS;AAAA,EACnE,MAAM,SAAS,EAAE,QAAQ,CAAC,EAAE;AAAA,EAC5B,MAAM,eAAe,CAAC,QAAO,OAAO,CAAC,MAAM;AAAA,IACvC,IAAI,KAAI;AAAA,IACR,WAAW,UAAS,OAAM,QAAQ;AAAA,MAC9B,IAAI,OAAM,SAAS,mBAAmB,OAAM,OAAO,QAAQ;AAAA,QAEvD,OAAM,OAAO,IAAI,CAAC,WAAW,aAAa,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,OAAM,IAAI,CAAC,CAAC;AAAA,MACnF,EACK,SAAI,OAAM,SAAS,eAAe;AAAA,QACnC,aAAa,EAAE,QAAQ,OAAM,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,OAAM,IAAI,CAAC;AAAA,MACnE,EACK,SAAI,OAAM,SAAS,mBAAmB;AAAA,QACvC,aAAa,EAAE,QAAQ,OAAM,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,OAAM,IAAI,CAAC;AAAA,MACnE,EACK;AAAA,QACD,MAAM,WAAW,CAAC,GAAG,MAAM,GAAG,OAAM,IAAI;AAAA,QACxC,IAAI,SAAS,WAAW,GAAG;AAAA,UACvB,OAAO,OAAO,KAAK,OAAO,MAAK,CAAC;AAAA,UAChC;AAAA,QACJ;AAAA,QACA,IAAI,OAAO;AAAA,QACX,IAAI,IAAI;AAAA,QACR,OAAO,IAAI,SAAS,QAAQ;AAAA,UACxB,MAAM,KAAK,SAAS;AAAA,UACpB,MAAM,WAAW,MAAM,SAAS,SAAS;AAAA,UACzC,IAAI,OAAO,OAAO,UAAU;AAAA,YACxB,KAAK,eAAe,KAAK,aAAa,CAAC;AAAA,aACtC,MAAK,KAAK,YAAY,QAAQ,IAAG,MAAM,EAAE,QAAQ,CAAC,EAAE;AAAA,YACrD,OAAO,KAAK,WAAW;AAAA,UAC3B,EACK;AAAA,YACD,KAAK,UAAU,KAAK,QAAQ,CAAC;AAAA,aAC5B,KAAK,KAAK,OAAO,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE;AAAA,YAChD,OAAO,KAAK,MAAM;AAAA;AAAA,UAEtB,IAAI,UAAU;AAAA,YACV,KAAK,OAAO,KAAK,OAAO,MAAK,CAAC;AAAA,UAClC;AAAA,UACA;AAAA,QACJ;AAAA;AAAA,IAER;AAAA;AAAA,EAEJ,aAAa,KAAK;AAAA,EAClB,OAAO;AAAA;AAkCJ,SAAS,SAAS,CAAC,OAAO;AAAA,EAC7B,MAAM,OAAO,CAAC;AAAA,EACd,MAAM,OAAO,MAAM,IAAI,CAAC,QAAS,OAAO,QAAQ,WAAW,IAAI,MAAM,GAAI;AAAA,EACzE,WAAW,OAAO,MAAM;AAAA,IACpB,IAAI,OAAO,QAAQ;AAAA,MACf,KAAK,KAAK,IAAI,MAAM;AAAA,IACnB,SAAI,OAAO,QAAQ;AAAA,MACpB,KAAK,KAAK,IAAI,KAAK,UAAU,OAAO,GAAG,CAAC,IAAI;AAAA,IAC3C,SAAI,SAAS,KAAK,GAAG;AAAA,MACtB,KAAK,KAAK,IAAI,KAAK,UAAU,GAAG,IAAI;AAAA,IACnC;AAAA,MACD,IAAI,KAAK;AAAA,QACL,KAAK,KAAK,GAAG;AAAA,MACjB,KAAK,KAAK,GAAG;AAAA;AAAA,EAErB;AAAA,EACA,OAAO,KAAK,KAAK,EAAE;AAAA;AAEhB,SAAS,aAAa,CAAC,OAAO;AAAA,EACjC,MAAM,QAAQ,CAAC;AAAA,EAEf,MAAM,SAAS,CAAC,GAAG,MAAM,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM;AAAA,EAE7F,WAAW,UAAS,QAAQ;AAAA,IACxB,MAAM,KAAK,UAAI,OAAM,SAAS;AAAA,IAC9B,IAAI,OAAM,MAAM;AAAA,MACZ,MAAM,KAAK,eAAS,UAAU,OAAM,IAAI,GAAG;AAAA,EACnD;AAAA,EAEA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;;;ACpLnB,IAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,OAAO,MAAM,YAAY;AAAA,EAC9D,MAAM,MAAM,OAAO,KAAK,MAAM,OAAO,MAAM,IAAI,EAAE,OAAO,MAAM;AAAA,EAC9D,MAAM,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,EACzD,IAAI,kBAAkB,SAAS;AAAA,IAC3B,MAAM,IAAS;AAAA,EACnB;AAAA,EACA,IAAI,OAAO,OAAO,QAAQ;AAAA,IACtB,MAAM,IAAI,KAAK,SAAS,OAAO,MAAM,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,IACvG,kBAAkB,GAAG,SAAS,MAAM;AAAA,IACzC,MAAM;AAAA,EACV;AAAA,EACA,OAAO,OAAO;AAAA;AAEX,IAAM,wBAAuB,OAAc,aAAa;AACxD,IAAM,cAAc,CAAC,SAAS,OAAO,QAAQ,OAAO,MAAM,WAAW;AAAA,EACxE,MAAM,MAAM,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK;AAAA,EAC5D,IAAI,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,EACvD,IAAI,kBAAkB;AAAA,IAClB,SAAS,MAAM;AAAA,EACnB,IAAI,OAAO,OAAO,QAAQ;AAAA,IACtB,MAAM,IAAI,KAAK,QAAQ,OAAO,MAAM,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,IACtG,kBAAkB,GAAG,QAAQ,MAAM;AAAA,IACxC,MAAM;AAAA,EACV;AAAA,EACA,OAAO,OAAO;AAAA;AAEX,IAAM,6BAA4B,YAAmB,aAAa;AAClE,IAAM,aAAa,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAAA,EACzD,MAAM,MAAM,OAAO,KAAK,MAAM,OAAO,MAAM,IAAI,EAAE,OAAO,MAAM;AAAA,EAC9D,MAAM,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,EACzD,IAAI,kBAAkB,SAAS;AAAA,IAC3B,MAAM,IAAS;AAAA,EACnB;AAAA,EACA,OAAO,OAAO,OAAO,SACf;AAAA,IACE,SAAS;AAAA,IACT,OAAO,KAAK,QAAe,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EACjH,IACE,EAAE,SAAS,MAAM,MAAM,OAAO,MAAM;AAAA;AAEvC,IAAM,4BAA2B,WAAkB,aAAa;AAChE,IAAM,kBAAkB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AAAA,EACpE,MAAM,MAAM,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK;AAAA,EAC5D,IAAI,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,EACvD,IAAI,kBAAkB;AAAA,IAClB,SAAS,MAAM;AAAA,EACnB,OAAO,OAAO,OAAO,SACf;AAAA,IACE,SAAS;AAAA,IACT,OAAO,IAAI,KAAK,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EAC3F,IACE,EAAE,SAAS,MAAM,MAAM,OAAO,MAAM;AAAA;AAEvC,IAAM,iCAAgC,gBAAuB,aAAa;AAC1E,IAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAAA,EACtD,MAAM,MAAM,OAAO,KAAK,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAAA,EAChF,OAAO,OAAO,IAAI,EAAE,QAAQ,OAAO,GAAG;AAAA;AAEnC,IAAM,yBAAwB,QAAe,aAAa;AAC1D,IAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAAA,EACtD,OAAO,OAAO,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA;AAEpC,IAAM,yBAAwB,QAAe,aAAa;AAC1D,IAAM,eAAe,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AAAA,EACjE,MAAM,MAAM,OAAO,KAAK,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAAA,EAChF,OAAO,YAAY,IAAI,EAAE,QAAQ,OAAO,GAAG;AAAA;AAExC,IAAM,8BAA6B,aAAoB,aAAa;AACpE,IAAM,eAAe,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AAAA,EACjE,OAAO,YAAY,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA;AAEzC,IAAM,8BAA6B,aAAoB,aAAa;AACpE,IAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAAA,EAC1D,MAAM,MAAM,OAAO,KAAK,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAAA,EAChF,OAAO,WAAW,IAAI,EAAE,QAAQ,OAAO,GAAG;AAAA;AAEvC,IAAM,6BAA4B,YAAmB,aAAa;AAClE,IAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAAA,EAC1D,OAAO,WAAW,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA;AAExC,IAAM,6BAA4B,YAAmB,aAAa;AAClE,IAAM,mBAAmB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AAAA,EACrE,MAAM,MAAM,OAAO,KAAK,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAAA,EAChF,OAAO,gBAAgB,IAAI,EAAE,QAAQ,OAAO,GAAG;AAAA;AAE5C,IAAM,kCAAiC,iBAAwB,aAAa;AAC5E,IAAM,mBAAmB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AAAA,EACrE,OAAO,gBAAgB,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA;AAE7C,IAAM,kCAAiC,iBAAwB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtF5E,IAAM,OAAO;AACb,IAAM,QAAQ;AACd,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,QAAQ;AACd,IAAM,SAAS;AAEf,IAAM,WAAW;AAEjB,IAAM,mBAAmB;AAEzB,IAAM,OAAO;AAIb,IAAM,OAAO,CAAC,YAAY;AAAA,EAC7B,IAAI,CAAC;AAAA,IACD,OAAO;AAAA,EACX,OAAO,IAAI,OAAO,mCAAmC,gEAAgE;AAAA;AAElH,IAAM,wBAAsB,KAAK,CAAC;AAClC,IAAM,wBAAsB,KAAK,CAAC;AAClC,IAAM,wBAAsB,KAAK,CAAC;AAElC,IAAM,QAAQ;AAEd,IAAM,aAAa;AAEnB,IAAM,eAAe;AAErB,IAAM,eAAe;AACrB,IAAM,WAAW;AACjB,IAAM,eAAe;AAE5B,IAAM,SAAS;AACR,SAAS,KAAK,GAAG;AAAA,EACpB,OAAO,IAAI,OAAO,QAAQ,GAAG;AAAA;AAE1B,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,MAAM,CAAC,cAAc;AAAA,EAC9B,MAAM,eAAoB,YAAY,aAAa,GAAG;AAAA,EACtD,OAAO,IAAI,OAAO,kBAAkB,+CAA+C,8BAA8B;AAAA;AAE9G,IAAM,SAAS;AACf,IAAM,SAAS;AAEf,IAAM,SAAS;AACf,IAAM,YAAY;AAGlB,IAAM,WAAW;AACjB,IAAM,SAAS;AACf,IAAM,eAAe;AAGrB,IAAM,OAAO;AAEpB,IAAM,aAAa;AACZ,IAAM,uBAAqB,IAAI,OAAO,IAAI,aAAa;AAC9D,SAAS,UAAU,CAAC,MAAM;AAAA,EACtB,MAAM,OAAO;AAAA,EACb,MAAM,QAAQ,OAAO,KAAK,cAAc,WAClC,KAAK,cAAc,KACf,GAAG,SACH,KAAK,cAAc,IACf,GAAG,kBACH,GAAG,uBAAuB,KAAK,eACvC,GAAG;AAAA,EACT,OAAO;AAAA;AAEJ,SAAS,IAAI,CAAC,MAAM;AAAA,EACvB,OAAO,IAAI,OAAO,IAAI,WAAW,IAAI,IAAI;AAAA;AAGtC,SAAS,QAAQ,CAAC,MAAM;AAAA,EAC3B,MAAM,QAAO,WAAW,EAAE,WAAW,KAAK,UAAU,CAAC;AAAA,EACrD,MAAM,OAAO,CAAC,GAAG;AAAA,EACjB,IAAI,KAAK;AAAA,IACL,KAAK,KAAK,EAAE;AAAA,EAEhB,IAAI,KAAK;AAAA,IACL,KAAK,KAAK,mCAAmC;AAAA,EACjD,MAAM,YAAY,GAAG,WAAU,KAAK,KAAK,GAAG;AAAA,EAC5C,OAAO,IAAI,OAAO,IAAI,iBAAiB,aAAa;AAAA;AAEjD,IAAM,SAAS,CAAC,WAAW;AAAA,EAC9B,MAAM,QAAQ,SAAS,YAAY,QAAQ,WAAW,KAAK,QAAQ,WAAW,QAAQ;AAAA,EACtF,OAAO,IAAI,OAAO,IAAI,QAAQ;AAAA;AAE3B,IAAM,SAAS;AACf,IAAM,UAAU;AAChB,IAAM,SAAS;AACf,IAAM,UAAU;AACvB,IAAM,QAAQ;AAEd,IAAM,aAAa;AAGZ,IAAM,YAAY;AAElB,IAAM,YAAY;AAElB,IAAM,MAAM;AAGnB,SAAS,WAAW,CAAC,YAAY,SAAS;AAAA,EACtC,OAAO,IAAI,OAAO,kBAAkB,cAAc,UAAU;AAAA;AAGhE,SAAS,cAAc,CAAC,QAAQ;AAAA,EAC5B,OAAO,IAAI,OAAO,kBAAkB,UAAU;AAAA;AAG3C,IAAM,UAAU;AAChB,IAAM,6BAA2B,YAAY,IAAI,IAAI;AACrD,IAAM,gCAA8B,eAAe,EAAE;AAErD,IAAM,WAAW;AACjB,IAAM,8BAA4B,YAAY,IAAI,GAAG;AACrD,IAAM,iCAA+B,eAAe,EAAE;AAEtD,IAAM,aAAa;AACnB,IAAM,gCAA8B,YAAY,IAAI,GAAG;AACvD,IAAM,mCAAiC,eAAe,EAAE;AAExD,IAAM,aAAa;AACnB,IAAM,gCAA8B,YAAY,IAAI,EAAE;AACtD,IAAM,mCAAiC,eAAe,EAAE;AAExD,IAAM,aAAa;AACnB,IAAM,gCAA8B,YAAY,IAAI,IAAI;AACxD,IAAM,mCAAiC,eAAe,EAAE;;;ACtIxD,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,IAAI;AAAA,EACJ,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EAC3B,KAAK,KAAK,MAAM;AAAA,GACf,MAAK,KAAK,MAAM,aAAa,IAAG,WAAW,CAAC;AAAA,CAChD;AACD,IAAM,mBAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACZ;AACO,IAAM,oCAAuC,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AAAA,EACjG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,MAAM,SAAS,iBAAiB,OAAO,IAAI;AAAA,EAC3C,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,MAAM,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,qBAAqB,OAAO;AAAA,IAC5E,IAAI,IAAI,QAAQ,MAAM;AAAA,MAClB,IAAI,IAAI;AAAA,QACJ,IAAI,UAAU,IAAI;AAAA,MAElB;AAAA,YAAI,mBAAmB,IAAI;AAAA,IACnC;AAAA,GACH;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,IAAI,YAAY,QAAQ,SAAS,IAAI,QAAQ,QAAQ,QAAQ,IAAI,OAAO;AAAA,MACxE;AAAA,IACJ;AAAA,IACA,QAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,OAAO,IAAI,UAAU,WAAW,IAAI,MAAM,QAAQ,IAAI,IAAI;AAAA,MACnE,OAAO,QAAQ;AAAA,MACf,WAAW,IAAI;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,uCAA0C,aAAa,wBAAwB,CAAC,MAAM,QAAQ;AAAA,EACvG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,MAAM,SAAS,iBAAiB,OAAO,IAAI;AAAA,EAC3C,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,MAAM,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,qBAAqB,OAAO;AAAA,IAC5E,IAAI,IAAI,QAAQ,MAAM;AAAA,MAClB,IAAI,IAAI;AAAA,QACJ,IAAI,UAAU,IAAI;AAAA,MAElB;AAAA,YAAI,mBAAmB,IAAI;AAAA,IACnC;AAAA,GACH;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,IAAI,YAAY,QAAQ,SAAS,IAAI,QAAQ,QAAQ,QAAQ,IAAI,OAAO;AAAA,MACxE;AAAA,IACJ;AAAA,IACA,QAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,OAAO,IAAI,UAAU,WAAW,IAAI,MAAM,QAAQ,IAAI,IAAI;AAAA,MACnE,OAAO,QAAQ;AAAA,MACf,WAAW,IAAI;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,sCACM,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AAAA,EAClE,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,IAAI;AAAA,KACH,MAAK,MAAK,KAAK,KAAK,eAAe,IAAG,aAAa,IAAI;AAAA,GAC3D;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,OAAO,QAAQ,UAAU,OAAO,IAAI;AAAA,MACpC,MAAM,IAAI,MAAM,oDAAoD;AAAA,IACxE,MAAM,aAAa,OAAO,QAAQ,UAAU,WACtC,QAAQ,QAAQ,IAAI,UAAU,OAAO,CAAC,IACjC,mBAAmB,QAAQ,OAAO,IAAI,KAAK,MAAM;AAAA,IAC5D,IAAI;AAAA,MACA;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ,OAAO,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,wCAA2C,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AAAA,EACzG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,IAAI,SAAS,IAAI,UAAU;AAAA,EAC3B,MAAM,QAAQ,IAAI,QAAQ,SAAS,KAAK;AAAA,EACxC,MAAM,SAAS,QAAQ,QAAQ;AAAA,EAC/B,OAAO,SAAS,WAAgB,qBAAqB,IAAI;AAAA,EACzD,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,IAAI,SAAS,IAAI;AAAA,IACjB,IAAI,UAAU;AAAA,IACd,IAAI,UAAU;AAAA,IACd,IAAI;AAAA,MACA,IAAI,UAAkB;AAAA,GAC7B;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,OAAO;AAAA,MACP,IAAI,CAAC,OAAO,UAAU,KAAK,GAAG;AAAA,QAU1B,QAAQ,OAAO,KAAK;AAAA,UAChB,UAAU;AAAA,UACV,QAAQ,IAAI;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,QACD;AAAA,MASJ;AAAA,MACA,IAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAAA,QAC9B,IAAI,QAAQ,GAAG;AAAA,UAEX,QAAQ,OAAO,KAAK;AAAA,YAChB;AAAA,YACA,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,YAChB,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL,EACK;AAAA,UAED,QAAQ,OAAO,KAAK;AAAA,YAChB;AAAA,YACA,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,YAChB,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA;AAAA,QAEL;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,IAAI,QAAQ,SAAS;AAAA,MACjB,QAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,IACA,IAAI,QAAQ,SAAS;AAAA,MACjB,QAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA,CAEP;AACM,IAAM,wCAA2C,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AAAA,EACzG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,OAAO,SAAS,WAAgB,qBAAqB,IAAI;AAAA,EACzD,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,IAAI,SAAS,IAAI;AAAA,IACjB,IAAI,UAAU;AAAA,IACd,IAAI,UAAU;AAAA,GACjB;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,QAAQ,SAAS;AAAA,MACjB,QAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,IACA,IAAI,QAAQ,SAAS;AAAA,MACjB,QAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAAA,CAEP;AACM,IAAM,mCAAsC,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAAA,EAC/F,IAAI;AAAA,EACJ,UAAU,KAAK,MAAM,GAAG;AAAA,GACvB,MAAK,KAAK,KAAK,KAAK,SAAS,IAAG,OAAO,CAAC,YAAY;AAAA,IACjD,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA;AAAA,EAE9C,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,OAAQ,MAAK,KAAK,IAAI,WAAW,OAAO;AAAA,IAC9C,IAAI,IAAI,UAAU;AAAA,MACd,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,GACnC;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,QAAQ,IAAI;AAAA,MACZ;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,MACnC,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,mCAAsC,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAAA,EAC/F,IAAI;AAAA,EACJ,UAAU,KAAK,MAAM,GAAG;AAAA,GACvB,MAAK,KAAK,KAAK,KAAK,SAAS,IAAG,OAAO,CAAC,YAAY;AAAA,IACjD,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA;AAAA,EAE9C,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,OAAQ,MAAK,KAAK,IAAI,WAAW,OAAO;AAAA,IAC9C,IAAI,IAAI,UAAU;AAAA,MACd,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,GACnC;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,QAAQ,IAAI;AAAA,MACZ;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,MACnC,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,sCAAyC,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AAAA,EACrG,IAAI;AAAA,EACJ,UAAU,KAAK,MAAM,GAAG;AAAA,GACvB,MAAK,KAAK,KAAK,KAAK,SAAS,IAAG,OAAO,CAAC,YAAY;AAAA,IACjD,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA;AAAA,EAE9C,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,IAAI,UAAU,IAAI;AAAA,IAClB,IAAI,UAAU,IAAI;AAAA,IAClB,IAAI,OAAO,IAAI;AAAA,GAClB;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,SAAS,IAAI;AAAA,MACb;AAAA,IACJ,MAAM,SAAS,OAAO,IAAI;AAAA,IAC1B,QAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,SAC/B,SAAS,EAAE,MAAM,WAAW,SAAS,IAAI,KAAK,IAAI,EAAE,MAAM,aAAa,SAAS,IAAI,KAAK;AAAA,MAC7F,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,qCAAwC,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AAAA,EACnG,IAAI;AAAA,EACJ,UAAU,KAAK,MAAM,GAAG;AAAA,GACvB,MAAK,KAAK,KAAK,KAAK,SAAS,IAAG,OAAO,CAAC,YAAY;AAAA,IACjD,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA;AAAA,EAEhD,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,OAAQ,MAAK,KAAK,IAAI,WAAW,OAAO;AAAA,IAC9C,IAAI,IAAI,UAAU;AAAA,MACd,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,GACnC;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,SAAS,MAAM;AAAA,IACrB,IAAI,UAAU,IAAI;AAAA,MACd;AAAA,IACJ,MAAM,SAAc,oBAAoB,KAAK;AAAA,IAC7C,QAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,qCAAwC,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AAAA,EACnG,IAAI;AAAA,EACJ,UAAU,KAAK,MAAM,GAAG;AAAA,GACvB,MAAK,KAAK,KAAK,KAAK,SAAS,IAAG,OAAO,CAAC,YAAY;AAAA,IACjD,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA;AAAA,EAEhD,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,OAAQ,MAAK,KAAK,IAAI,WAAW,OAAO;AAAA,IAC9C,IAAI,IAAI,UAAU;AAAA,MACd,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,GACnC;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,SAAS,MAAM;AAAA,IACrB,IAAI,UAAU,IAAI;AAAA,MACd;AAAA,IACJ,MAAM,SAAc,oBAAoB,KAAK;AAAA,IAC7C,QAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,wCAA2C,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AAAA,EACzG,IAAI;AAAA,EACJ,UAAU,KAAK,MAAM,GAAG;AAAA,GACvB,MAAK,KAAK,KAAK,KAAK,SAAS,IAAG,OAAO,CAAC,YAAY;AAAA,IACjD,MAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA;AAAA,EAEhD,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,IAAI,UAAU,IAAI;AAAA,IAClB,IAAI,UAAU,IAAI;AAAA,IAClB,IAAI,SAAS,IAAI;AAAA,GACpB;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,SAAS,MAAM;AAAA,IACrB,IAAI,WAAW,IAAI;AAAA,MACf;AAAA,IACJ,MAAM,SAAc,oBAAoB,KAAK;AAAA,IAC7C,MAAM,SAAS,SAAS,IAAI;AAAA,IAC5B,QAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,SACI,SAAS,EAAE,MAAM,WAAW,SAAS,IAAI,OAAO,IAAI,EAAE,MAAM,aAAa,SAAS,IAAI,OAAO;AAAA,MACjG,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,wCAA2C,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AAAA,EACzG,IAAI,KAAI;AAAA,EACR,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,IAAI,SAAS,IAAI;AAAA,IACjB,IAAI,IAAI,SAAS;AAAA,MACb,IAAI,aAAa,IAAI,WAAW,IAAI;AAAA,MACpC,IAAI,SAAS,IAAI,IAAI,OAAO;AAAA,IAChC;AAAA,GACH;AAAA,EACD,IAAI,IAAI;AAAA,KACH,MAAK,KAAK,MAAM,UAAU,IAAG,QAAQ,CAAC,YAAY;AAAA,MAC/C,IAAI,QAAQ,YAAY;AAAA,MACxB,IAAI,IAAI,QAAQ,KAAK,QAAQ,KAAK;AAAA,QAC9B;AAAA,MACJ,QAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ,IAAI;AAAA,QACZ,OAAO,QAAQ;AAAA,WACX,IAAI,UAAU,EAAE,SAAS,IAAI,QAAQ,SAAS,EAAE,IAAI,CAAC;AAAA,QACzD;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA;AAAA,EAGL;AAAA,KAAC,KAAK,KAAK,MAAM,UAAU,GAAG,QAAQ,MAAM;AAAA,CACnD;AACM,IAAM,iCAAoC,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAAA,EAC3F,sBAAsB,KAAK,MAAM,GAAG;AAAA,EACpC,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,QAAQ,YAAY;AAAA,IACxB,IAAI,IAAI,QAAQ,KAAK,QAAQ,KAAK;AAAA,MAC9B;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf,SAAS,IAAI,QAAQ,SAAS;AAAA,MAC9B;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,qCAAwC,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AAAA,EACnG,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,sBAAsB,KAAK,MAAM,GAAG;AAAA,CACvC;AACM,IAAM,qCAAwC,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AAAA,EACnG,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,sBAAsB,KAAK,MAAM,GAAG;AAAA,CACvC;AACM,IAAM,oCAAuC,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AAAA,EACjG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,MAAM,eAAoB,YAAY,IAAI,QAAQ;AAAA,EAClD,MAAM,UAAU,IAAI,OAAO,OAAO,IAAI,aAAa,WAAW,MAAM,IAAI,YAAY,iBAAiB,YAAY;AAAA,EACjH,IAAI,UAAU;AAAA,EACd,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,IAAI,aAAa,IAAI,WAAW,IAAI;AAAA,IACpC,IAAI,SAAS,IAAI,OAAO;AAAA,GAC3B;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,QAAQ,MAAM,SAAS,IAAI,UAAU,IAAI,QAAQ;AAAA,MACjD;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,IAAI;AAAA,MACd,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,sCAAyC,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AAAA,EACrG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,MAAM,UAAU,IAAI,OAAO,IAAS,YAAY,IAAI,MAAM,KAAK;AAAA,EAC/D,IAAI,YAAY,IAAI,UAAU;AAAA,EAC9B,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,IAAI,aAAa,IAAI,WAAW,IAAI;AAAA,IACpC,IAAI,SAAS,IAAI,OAAO;AAAA,GAC3B;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,QAAQ,MAAM,WAAW,IAAI,MAAM;AAAA,MACnC;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,oCAAuC,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AAAA,EACjG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,MAAM,UAAU,IAAI,OAAO,KAAU,YAAY,IAAI,MAAM,IAAI;AAAA,EAC/D,IAAI,YAAY,IAAI,UAAU;AAAA,EAC9B,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAM,MAAM,MAAK,KAAK;AAAA,IACtB,IAAI,aAAa,IAAI,WAAW,IAAI;AAAA,IACpC,IAAI,SAAS,IAAI,OAAO;AAAA,GAC3B;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,QAAQ,MAAM,SAAS,IAAI,MAAM;AAAA,MACjC;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AAID,SAAS,yBAAyB,CAAC,QAAQ,SAAS,UAAU;AAAA,EAC1D,IAAI,OAAO,OAAO,QAAQ;AAAA,IACtB,QAAQ,OAAO,KAAK,GAAQ,aAAa,UAAU,OAAO,MAAM,CAAC;AAAA,EACrE;AAAA;AAEG,IAAM,oCAAuC,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AAAA,EACjG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,SAAS,IAAI,OAAO,KAAK,IAAI;AAAA,MAC/B,OAAO,QAAQ,MAAM,IAAI;AAAA,MACzB,QAAQ,CAAC;AAAA,IACb,GAAG,CAAC,CAAC;AAAA,IACL,IAAI,kBAAkB,SAAS;AAAA,MAC3B,OAAO,OAAO,KAAK,CAAC,YAAW,0BAA0B,SAAQ,SAAS,IAAI,QAAQ,CAAC;AAAA,IAC3F;AAAA,IACA,0BAA0B,QAAQ,SAAS,IAAI,QAAQ;AAAA,IACvD;AAAA;AAAA,CAEP;AACM,IAAM,oCAAuC,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AAAA,EACjG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,MAAM,UAAU,IAAI,IAAI,IAAI,IAAI;AAAA,EAChC,KAAK,KAAK,SAAS,KAAK,CAAC,UAAS;AAAA,IAC9B,MAAK,KAAK,IAAI,OAAO,IAAI;AAAA,GAC5B;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,QAAQ,IAAI,QAAQ,MAAM,IAAI;AAAA,MAC9B;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ,MAAM;AAAA,MACrB;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,qCAAwC,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AAAA,EACnG,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,QAAQ,QAAQ,IAAI,GAAG,QAAQ,KAAK;AAAA;AAAA,CAE3C;;;AC9jBM,MAAM,IAAI;AAAA,EACb,WAAW,CAAC,OAAO,CAAC,GAAG;AAAA,IACnB,KAAK,UAAU,CAAC;AAAA,IAChB,KAAK,SAAS;AAAA,IACd,IAAI;AAAA,MACA,KAAK,OAAO;AAAA;AAAA,EAEpB,QAAQ,CAAC,IAAI;AAAA,IACT,KAAK,UAAU;AAAA,IACf,GAAG,IAAI;AAAA,IACP,KAAK,UAAU;AAAA;AAAA,EAEnB,KAAK,CAAC,KAAK;AAAA,IACP,IAAI,OAAO,QAAQ,YAAY;AAAA,MAC3B,IAAI,MAAM,EAAE,WAAW,OAAO,CAAC;AAAA,MAC/B,IAAI,MAAM,EAAE,WAAW,QAAQ,CAAC;AAAA,MAChC;AAAA,IACJ;AAAA,IACA,MAAM,UAAU;AAAA,IAChB,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI,EAAE,OAAO,CAAC,MAAM,CAAC;AAAA,IACjD,MAAM,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAAA,IAC/E,MAAM,WAAW,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC;AAAA,IAChG,WAAW,QAAQ,UAAU;AAAA,MACzB,KAAK,QAAQ,KAAK,IAAI;AAAA,IAC1B;AAAA;AAAA,EAEJ,OAAO,GAAG;AAAA,IACN,MAAM,IAAI;AAAA,IACV,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,UAAU,MAAM,WAAW,CAAC,EAAE;AAAA,IACpC,MAAM,QAAQ,CAAC,GAAG,QAAQ,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC;AAAA,IAE9C,OAAO,IAAI,EAAE,GAAG,MAAM,MAAM,KAAK;AAAA,CAAI,CAAC;AAAA;AAE9C;;;AClCO,IAAM,UAAU;AAAA,EACnB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACX;;;ACGO,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,IAAI;AAAA,EACJ,SAAS,OAAO,CAAC;AAAA,EACjB,KAAK,KAAK,MAAM;AAAA,EAChB,KAAK,KAAK,MAAM,KAAK,KAAK,OAAO,CAAC;AAAA,EAClC,KAAK,KAAK,UAAU;AAAA,EACpB,MAAM,SAAS,CAAC,GAAI,KAAK,KAAK,IAAI,UAAU,CAAC,CAAE;AAAA,EAE/C,IAAI,KAAK,KAAK,OAAO,IAAI,WAAW,GAAG;AAAA,IACnC,OAAO,QAAQ,IAAI;AAAA,EACvB;AAAA,EACA,WAAW,MAAM,QAAQ;AAAA,IACrB,WAAW,MAAM,GAAG,KAAK,UAAU;AAAA,MAC/B,GAAG,IAAI;AAAA,IACX;AAAA,EACJ;AAAA,EACA,IAAI,OAAO,WAAW,GAAG;AAAA,KAGpB,MAAK,KAAK,MAAM,aAAa,IAAG,WAAW,CAAC;AAAA,IAC7C,KAAK,KAAK,UAAU,KAAK,MAAM;AAAA,MAC3B,KAAK,KAAK,MAAM,KAAK,KAAK;AAAA,KAC7B;AAAA,EACL,EACK;AAAA,IACD,MAAM,YAAY,CAAC,SAAS,SAAQ,QAAQ;AAAA,MACxC,IAAI,YAAiB,QAAQ,OAAO;AAAA,MACpC,IAAI;AAAA,MACJ,WAAW,MAAM,SAAQ;AAAA,QACrB,IAAI,GAAG,KAAK,IAAI,MAAM;AAAA,UAClB,IAAS,kBAAkB,OAAO;AAAA,YAC9B;AAAA,UACJ,MAAM,YAAY,GAAG,KAAK,IAAI,KAAK,OAAO;AAAA,UAC1C,IAAI,CAAC;AAAA,YACD;AAAA,QACR,EACK,SAAI,WAAW;AAAA,UAChB;AAAA,QACJ;AAAA,QACA,MAAM,UAAU,QAAQ,OAAO;AAAA,QAC/B,MAAM,IAAI,GAAG,KAAK,MAAM,OAAO;AAAA,QAC/B,IAAI,aAAa,WAAW,KAAK,UAAU,OAAO;AAAA,UAC9C,MAAM,IAAS;AAAA,QACnB;AAAA,QACA,IAAI,eAAe,aAAa,SAAS;AAAA,UACrC,eAAe,eAAe,QAAQ,QAAQ,GAAG,KAAK,YAAY;AAAA,YAC9D,MAAM;AAAA,YACN,MAAM,UAAU,QAAQ,OAAO;AAAA,YAC/B,IAAI,YAAY;AAAA,cACZ;AAAA,YACJ,IAAI,CAAC;AAAA,cACD,YAAiB,QAAQ,SAAS,OAAO;AAAA,WAChD;AAAA,QACL,EACK;AAAA,UACD,MAAM,UAAU,QAAQ,OAAO;AAAA,UAC/B,IAAI,YAAY;AAAA,YACZ;AAAA,UACJ,IAAI,CAAC;AAAA,YACD,YAAiB,QAAQ,SAAS,OAAO;AAAA;AAAA,MAErD;AAAA,MACA,IAAI,aAAa;AAAA,QACb,OAAO,YAAY,KAAK,MAAM;AAAA,UAC1B,OAAO;AAAA,SACV;AAAA,MACL;AAAA,MACA,OAAO;AAAA;AAAA,IAEX,MAAM,qBAAqB,CAAC,QAAQ,SAAS,QAAQ;AAAA,MAEjD,IAAS,QAAQ,MAAM,GAAG;AAAA,QACtB,OAAO,UAAU;AAAA,QACjB,OAAO;AAAA,MACX;AAAA,MAEA,MAAM,cAAc,UAAU,SAAS,QAAQ,GAAG;AAAA,MAClD,IAAI,uBAAuB,SAAS;AAAA,QAChC,IAAI,IAAI,UAAU;AAAA,UACd,MAAM,IAAS;AAAA,QACnB,OAAO,YAAY,KAAK,CAAC,iBAAgB,KAAK,KAAK,MAAM,cAAa,GAAG,CAAC;AAAA,MAC9E;AAAA,MACA,OAAO,KAAK,KAAK,MAAM,aAAa,GAAG;AAAA;AAAA,IAE3C,KAAK,KAAK,MAAM,CAAC,SAAS,QAAQ;AAAA,MAC9B,IAAI,IAAI,YAAY;AAAA,QAChB,OAAO,KAAK,KAAK,MAAM,SAAS,GAAG;AAAA,MACvC;AAAA,MACA,IAAI,IAAI,cAAc,YAAY;AAAA,QAG9B,MAAM,SAAS,KAAK,KAAK,MAAM,EAAE,OAAO,QAAQ,OAAO,QAAQ,CAAC,EAAE,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC;AAAA,QACjG,IAAI,kBAAkB,SAAS;AAAA,UAC3B,OAAO,OAAO,KAAK,CAAC,YAAW;AAAA,YAC3B,OAAO,mBAAmB,SAAQ,SAAS,GAAG;AAAA,WACjD;AAAA,QACL;AAAA,QACA,OAAO,mBAAmB,QAAQ,SAAS,GAAG;AAAA,MAClD;AAAA,MAEA,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,GAAG;AAAA,MAC3C,IAAI,kBAAkB,SAAS;AAAA,QAC3B,IAAI,IAAI,UAAU;AAAA,UACd,MAAM,IAAS;AAAA,QACnB,OAAO,OAAO,KAAK,CAAC,YAAW,UAAU,SAAQ,QAAQ,GAAG,CAAC;AAAA,MACjE;AAAA,MACA,OAAO,UAAU,QAAQ,QAAQ,GAAG;AAAA;AAAA;AAAA,EAIvC,WAAW,MAAM,aAAa,OAAO;AAAA,IACtC,UAAU,CAAC,UAAU;AAAA,MACjB,IAAI;AAAA,QACA,MAAM,IAAI,UAAU,MAAM,KAAK;AAAA,QAC/B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,OAAO,OAAO;AAAA,QAErE,OAAO,GAAG;AAAA,QACN,OAAO,eAAe,MAAM,KAAK,EAAE,KAAK,CAAC,MAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,OAAO,OAAO,CAAE;AAAA;AAAA;AAAA,IAGpH,QAAQ;AAAA,IACR,SAAS;AAAA,EACb,EAAE;AAAA,CACL;AAEM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,UAAU,CAAC,GAAI,MAAM,KAAK,KAAK,YAAY,CAAC,CAAE,EAAE,IAAI,KAAa,OAAO,KAAK,KAAK,GAAG;AAAA,EAC/F,KAAK,KAAK,QAAQ,CAAC,SAAS,MAAM;AAAA,IAC9B,IAAI,IAAI;AAAA,MACJ,IAAI;AAAA,QACA,QAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,QAExC,OAAO,IAAG;AAAA,IACd,IAAI,OAAO,QAAQ,UAAU;AAAA,MACzB,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,mCAAsC,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAAA,EAExF,sBAAsB,KAAK,MAAM,GAAG;AAAA,EAC3C,WAAW,KAAK,MAAM,GAAG;AAAA,CAC5B;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,IAAI,IAAI,SAAS;AAAA,IACb,MAAM,aAAa;AAAA,MACf,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACR;AAAA,IACA,MAAM,IAAI,WAAW,IAAI;AAAA,IACzB,IAAI,MAAM;AAAA,MACN,MAAM,IAAI,MAAM,0BAA0B,IAAI,UAAU;AAAA,IAC5D,IAAI,YAAY,IAAI,UAAkB,KAAK,CAAC;AAAA,EAChD,EAEI;AAAA,QAAI,YAAY,IAAI,UAAkB,KAAK;AAAA,EAC/C,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI;AAAA,MAEA,MAAM,UAAU,QAAQ,MAAM,KAAK;AAAA,MAGnC,IAAI,CAAC,IAAI,aAAa,IAAI,UAAU,WAAmB,aAAa,QAAQ;AAAA,QACxE,IAAI,CAAC,gBAAgB,KAAK,OAAO,GAAG;AAAA,UAChC,QAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,UACD;AAAA,QACJ;AAAA,MACJ;AAAA,MAEA,MAAM,MAAM,IAAI,IAAI,OAAO;AAAA,MAC3B,IAAI,IAAI,UAAU;AAAA,QACd,IAAI,SAAS,YAAY;AAAA,QACzB,IAAI,CAAC,IAAI,SAAS,KAAK,IAAI,QAAQ,GAAG;AAAA,UAClC,QAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,SAAS,IAAI,SAAS;AAAA,YACtB,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,MACA,IAAI,IAAI,UAAU;AAAA,QACd,IAAI,SAAS,YAAY;AAAA,QACzB,IAAI,CAAC,IAAI,SAAS,KAAK,IAAI,SAAS,SAAS,GAAG,IAAI,IAAI,SAAS,MAAM,GAAG,EAAE,IAAI,IAAI,QAAQ,GAAG;AAAA,UAC3F,QAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,SAAS,IAAI,SAAS;AAAA,YACtB,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,MAEA,IAAI,IAAI,WAAW;AAAA,QAEf,QAAQ,QAAQ,IAAI;AAAA,MACxB,EACK;AAAA,QAED,QAAQ,QAAQ;AAAA;AAAA,MAEpB;AAAA,MAEJ,OAAO,GAAG;AAAA,MACN,QAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA;AAAA;AAAA,CAGZ;AACM,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,IAAI,YAAY,IAAI,UAAkB,MAAM;AAAA,EAC5C,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AAMM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,kCAAqC,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAAA,EAC7F,IAAI,YAAY,IAAI,UAAkB,SAAS,GAAG;AAAA,EAClD,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EACrF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EACrF,IAAI,YAAY,IAAI,UAAkB,KAAK,GAAG;AAAA,EAC9C,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,kCAAqC,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAAA,EAC7F,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,IAAI,SAAS;AAAA,CAC1B;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,IAAI,SAAS;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI;AAAA,MAEA,IAAI,IAAI,WAAW,QAAQ,QAAQ;AAAA,MAGvC,MAAM;AAAA,MACF,QAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA;AAAA;AAAA,CAGZ;AACM,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,IAAI,YAAY,IAAI,UAAkB,IAAI,IAAI,SAAS;AAAA,EACvD,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,IAAI,SAAS;AAAA,CAC1B;AACM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AACM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ,MAAM,MAAM,GAAG;AAAA,IACrC,IAAI;AAAA,MACA,IAAI,MAAM,WAAW;AAAA,QACjB,MAAM,IAAI;AAAA,MACd,OAAO,SAAS,UAAU;AAAA,MAC1B,IAAI,CAAC;AAAA,QACD,MAAM,IAAI;AAAA,MACd,MAAM,YAAY,OAAO,MAAM;AAAA,MAC/B,IAAI,GAAG,gBAAgB;AAAA,QACnB,MAAM,IAAI;AAAA,MACd,IAAI,YAAY,KAAK,YAAY;AAAA,QAC7B,MAAM,IAAI;AAAA,MAEd,IAAI,IAAI,WAAW,UAAU;AAAA,MAEjC,MAAM;AAAA,MACF,QAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA;AAAA;AAAA,CAGZ;AAEM,SAAS,aAAa,CAAC,MAAM;AAAA,EAChC,IAAI,SAAS;AAAA,IACT,OAAO;AAAA,EAEX,IAAI,KAAK,KAAK,IAAI;AAAA,IACd,OAAO;AAAA,EACX,IAAI,KAAK,SAAS,MAAM;AAAA,IACpB,OAAO;AAAA,EACX,IAAI;AAAA,IAEA,KAAK,IAAI;AAAA,IACT,OAAO;AAAA,IAEX,MAAM;AAAA,IACF,OAAO;AAAA;AAAA;AAGR,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,IAAI,kBAAkB;AAAA,EAChC,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,cAAc,QAAQ,KAAK;AAAA,MAC3B;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AAEM,SAAS,gBAAgB,CAAC,MAAM;AAAA,EACnC,IAAI,CAAS,UAAU,KAAK,IAAI;AAAA,IAC5B,OAAO;AAAA,EACX,MAAM,UAAS,KAAK,QAAQ,SAAS,CAAC,MAAO,MAAM,MAAM,MAAM,GAAI;AAAA,EACnE,MAAM,SAAS,QAAO,OAAO,KAAK,KAAK,QAAO,SAAS,CAAC,IAAI,GAAG,GAAG;AAAA,EAClE,OAAO,cAAc,MAAM;AAAA;AAExB,IAAM,gCAAmC,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AAAA,EACzF,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,IAAI,kBAAkB;AAAA,EAChC,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,iBAAiB,QAAQ,KAAK;AAAA,MAC9B;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,IAAI,YAAY,IAAI,UAAkB;AAAA,EACtC,iBAAiB,KAAK,MAAM,GAAG;AAAA,CAClC;AAEM,SAAS,UAAU,CAAC,OAAO,YAAY,MAAM;AAAA,EAChD,IAAI;AAAA,IACA,MAAM,cAAc,MAAM,MAAM,GAAG;AAAA,IACnC,IAAI,YAAY,WAAW;AAAA,MACvB,OAAO;AAAA,IACX,OAAO,UAAU;AAAA,IACjB,IAAI,CAAC;AAAA,MACD,OAAO;AAAA,IAEX,MAAM,eAAe,KAAK,MAAM,KAAK,MAAM,CAAC;AAAA,IAC5C,IAAI,SAAS,gBAAgB,cAAc,QAAQ;AAAA,MAC/C,OAAO;AAAA,IACX,IAAI,CAAC,aAAa;AAAA,MACd,OAAO;AAAA,IACX,IAAI,cAAc,EAAE,SAAS,iBAAiB,aAAa,QAAQ;AAAA,MAC/D,OAAO;AAAA,IACX,OAAO;AAAA,IAEX,MAAM;AAAA,IACF,OAAO;AAAA;AAAA;AAGR,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,WAAW,QAAQ,OAAO,IAAI,GAAG;AAAA,MACjC;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,yCAA4C,aAAa,0BAA0B,CAAC,MAAM,QAAQ;AAAA,EAC3G,iBAAiB,KAAK,MAAM,GAAG;AAAA,EAC/B,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,IAAI,GAAG,QAAQ,KAAK;AAAA,MACpB;AAAA,IACJ,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA;AAAA,CAER;AACM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,UAAU,KAAK,KAAK,IAAI,WAAmB;AAAA,EACrD,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,IAAI,IAAI;AAAA,MACJ,IAAI;AAAA,QACA,QAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,QAExC,OAAO,GAAG;AAAA,IACd,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,KAAK,OAAO,SAAS,KAAK,GAAG;AAAA,MAC7E,OAAO;AAAA,IACX;AAAA,IACA,MAAM,WAAW,OAAO,UAAU,WAC5B,OAAO,MAAM,KAAK,IACd,QACA,CAAC,OAAO,SAAS,KAAK,IAClB,aACA,YACR;AAAA,IACN,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,SACI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,IACnC,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,mCAAsC,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAAA,EACxF,sBAAsB,KAAK,MAAM,GAAG;AAAA,EAC3C,WAAW,KAAK,MAAM,GAAG;AAAA,CAC5B;AACM,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EACrF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,UAAkB;AAAA,EAC5B,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,IAAI,IAAI;AAAA,MACJ,IAAI;AAAA,QACA,QAAQ,QAAQ,QAAQ,QAAQ,KAAK;AAAA,QAEzC,OAAO,GAAG;AAAA,IACd,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,UAAkB;AAAA,EAC5B,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,IAAI,IAAI;AAAA,MACJ,IAAI;AAAA,QACA,QAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,QAExC,OAAO,GAAG;AAAA,IACd,IAAI,OAAO,QAAQ,UAAU;AAAA,MACzB,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,mCAAsC,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAAA,EACxF,sBAAsB,KAAK,MAAM,GAAG;AAAA,EAC3C,WAAW,KAAK,MAAM,GAAG;AAAA,CAC5B;AACM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,gCAAmC,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AAAA,EACzF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,UAAkB;AAAA,EAC5B,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;AAAA,EACtC,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,UAAkB;AAAA,EAC5B,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC;AAAA,EACjC,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,UAAU;AAAA,MACV,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,CAClC;AACM,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EACrF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,CAClC;AACM,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,IAAI,IAAI,QAAQ;AAAA,MACZ,IAAI;AAAA,QACA,QAAQ,QAAQ,IAAI,KAAK,QAAQ,KAAK;AAAA,QAE1C,OAAO,MAAM;AAAA,IACjB;AAAA,IACA,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,SAAS,iBAAiB;AAAA,IAChC,MAAM,cAAc,UAAU,CAAC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAAA,IAC3D,IAAI;AAAA,MACA,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,SACI,SAAS,EAAE,UAAU,eAAe,IAAI,CAAC;AAAA,MAC7C;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACD,SAAS,iBAAiB,CAAC,QAAQ,OAAO,OAAO;AAAA,EAC7C,IAAI,OAAO,OAAO,QAAQ;AAAA,IACtB,MAAM,OAAO,KAAK,GAAQ,aAAa,OAAO,OAAO,MAAM,CAAC;AAAA,EAChE;AAAA,EACA,MAAM,MAAM,SAAS,OAAO;AAAA;AAEzB,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,MACvB,QAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,QAAQ,QAAQ,MAAM,MAAM,MAAM;AAAA,IAClC,MAAM,QAAQ,CAAC;AAAA,IACf,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,MACnC,MAAM,OAAO,MAAM;AAAA,MACnB,MAAM,SAAS,IAAI,QAAQ,KAAK,IAAI;AAAA,QAChC,OAAO;AAAA,QACP,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AAAA,MACN,IAAI,kBAAkB,SAAS;AAAA,QAC3B,MAAM,KAAK,OAAO,KAAK,CAAC,YAAW,kBAAkB,SAAQ,SAAS,CAAC,CAAC,CAAC;AAAA,MAC7E,EACK;AAAA,QACD,kBAAkB,QAAQ,SAAS,CAAC;AAAA;AAAA,IAE5C;AAAA,IACA,IAAI,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAAA,IAChD;AAAA,IACA,OAAO;AAAA;AAAA,CAEd;AACD,SAAS,oBAAoB,CAAC,QAAQ,OAAO,KAAK,OAAO,cAAc,eAAe;AAAA,EAClF,MAAM,YAAY,OAAO;AAAA,EACzB,IAAI,OAAO,OAAO,QAAQ;AAAA,IAEtB,IAAI,gBAAgB,iBAAiB,CAAC,WAAW;AAAA,MAC7C;AAAA,IACJ;AAAA,IACA,MAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,EAC9D;AAAA,EACA,IAAI,CAAC,aAAa,CAAC,cAAc;AAAA,IAC7B,IAAI,CAAC,OAAO,OAAO,QAAQ;AAAA,MACvB,MAAM,OAAO,KAAK;AAAA,QACd,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO;AAAA,QACP,MAAM,CAAC,GAAG;AAAA,MACd,CAAC;AAAA,IACL;AAAA,IACA;AAAA,EACJ;AAAA,EACA,IAAI,OAAO,UAAU,WAAW;AAAA,IAC5B,IAAI,WAAW;AAAA,MACX,MAAM,MAAM,OAAO;AAAA,IACvB;AAAA,EACJ,EACK;AAAA,IACD,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAGlC,SAAS,YAAY,CAAC,KAAK;AAAA,EACvB,MAAM,OAAO,OAAO,KAAK,IAAI,KAAK;AAAA,EAClC,WAAW,KAAK,MAAM;AAAA,IAClB,IAAI,CAAC,IAAI,QAAQ,IAAI,MAAM,QAAQ,IAAI,UAAU,GAAG;AAAA,MAChD,MAAM,IAAI,MAAM,2BAA2B,2BAA2B;AAAA,IAC1E;AAAA,EACJ;AAAA,EACA,MAAM,QAAa,aAAa,IAAI,KAAK;AAAA,EACzC,OAAO;AAAA,OACA;AAAA,IACH;AAAA,IACA,QAAQ,IAAI,IAAI,IAAI;AAAA,IACpB,SAAS,KAAK;AAAA,IACd,cAAc,IAAI,IAAI,KAAK;AAAA,EAC/B;AAAA;AAEJ,SAAS,cAAc,CAAC,OAAO,OAAO,SAAS,KAAK,KAAK,MAAM;AAAA,EAC3D,MAAM,eAAe,CAAC;AAAA,EACtB,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,YAAY,IAAI,SAAS;AAAA,EAC/B,MAAM,IAAI,UAAU,IAAI;AAAA,EACxB,MAAM,eAAe,UAAU,UAAU;AAAA,EACzC,MAAM,gBAAgB,UAAU,WAAW;AAAA,EAC3C,WAAW,OAAO,OAAO;AAAA,IAGrB,IAAI,QAAQ;AAAA,MACR;AAAA,IACJ,IAAI,OAAO,IAAI,GAAG;AAAA,MACd;AAAA,IACJ,IAAI,MAAM,SAAS;AAAA,MACf,aAAa,KAAK,GAAG;AAAA,MACrB;AAAA,IACJ;AAAA,IACA,MAAM,IAAI,UAAU,IAAI,EAAE,OAAO,MAAM,MAAM,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,IAC9D,IAAI,aAAa,SAAS;AAAA,MACtB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAM,qBAAqB,IAAG,SAAS,KAAK,OAAO,cAAc,aAAa,CAAC,CAAC;AAAA,IACvG,EACK;AAAA,MACD,qBAAqB,GAAG,SAAS,KAAK,OAAO,cAAc,aAAa;AAAA;AAAA,EAEhF;AAAA,EACA,IAAI,aAAa,QAAQ;AAAA,IACrB,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IACP,OAAO;AAAA,EACX,OAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM;AAAA,IACjC,OAAO;AAAA,GACV;AAAA;AAEE,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAEnF,SAAS,KAAK,MAAM,GAAG;AAAA,EAEvB,MAAM,OAAO,OAAO,yBAAyB,KAAK,OAAO;AAAA,EACzD,IAAI,CAAC,MAAM,KAAK;AAAA,IACZ,MAAM,KAAK,IAAI;AAAA,IACf,OAAO,eAAe,KAAK,SAAS;AAAA,MAChC,KAAK,MAAM;AAAA,QACP,MAAM,QAAQ,KAAK,GAAG;AAAA,QACtB,OAAO,eAAe,KAAK,SAAS;AAAA,UAChC,OAAO;AAAA,QACX,CAAC;AAAA,QACD,OAAO;AAAA;AAAA,IAEf,CAAC;AAAA,EACL;AAAA,EACA,MAAM,cAAmB,OAAO,MAAM,aAAa,GAAG,CAAC;AAAA,EAClD,WAAW,KAAK,MAAM,cAAc,MAAM;AAAA,IAC3C,MAAM,QAAQ,IAAI;AAAA,IAClB,MAAM,aAAa,CAAC;AAAA,IACpB,WAAW,OAAO,OAAO;AAAA,MACrB,MAAM,QAAQ,MAAM,KAAK;AAAA,MACzB,IAAI,MAAM,QAAQ;AAAA,QACd,WAAW,SAAS,WAAW,OAAO,IAAI;AAAA,QAC1C,WAAW,KAAK,MAAM;AAAA,UAClB,WAAW,KAAK,IAAI,CAAC;AAAA,MAC7B;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,GACV;AAAA,EACD,MAAM,YAAgB;AAAA,EACtB,MAAM,WAAW,IAAI;AAAA,EACrB,IAAI;AAAA,EACJ,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,UAAU,QAAQ,YAAY;AAAA,IAC9B,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,CAAC,UAAS,KAAK,GAAG;AAAA,MAClB,QAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,QAAQ,QAAQ,CAAC;AAAA,IACjB,MAAM,QAAQ,CAAC;AAAA,IACf,MAAM,QAAQ,MAAM;AAAA,IACpB,WAAW,OAAO,MAAM,MAAM;AAAA,MAC1B,MAAM,KAAK,MAAM;AAAA,MACjB,MAAM,eAAe,GAAG,KAAK,UAAU;AAAA,MACvC,MAAM,gBAAgB,GAAG,KAAK,WAAW;AAAA,MACzC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,OAAO,MAAM,MAAM,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,MAC5D,IAAI,aAAa,SAAS;AAAA,QACtB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAM,qBAAqB,IAAG,SAAS,KAAK,OAAO,cAAc,aAAa,CAAC,CAAC;AAAA,MACvG,EACK;AAAA,QACD,qBAAqB,GAAG,SAAS,KAAK,OAAO,cAAc,aAAa;AAAA;AAAA,IAEhF;AAAA,IACA,IAAI,CAAC,UAAU;AAAA,MACX,OAAO,MAAM,SAAS,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO,IAAI;AAAA,IACnE;AAAA,IACA,OAAO,eAAe,OAAO,OAAO,SAAS,KAAK,YAAY,OAAO,IAAI;AAAA;AAAA,CAEhF;AACM,IAAM,gCAAmC,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AAAA,EAEzF,WAAW,KAAK,MAAM,GAAG;AAAA,EACzB,MAAM,aAAa,KAAK,KAAK;AAAA,EAC7B,MAAM,cAAmB,OAAO,MAAM,aAAa,GAAG,CAAC;AAAA,EACvD,MAAM,mBAAmB,CAAC,UAAU;AAAA,IAChC,MAAM,MAAM,IAAI,IAAI,CAAC,SAAS,WAAW,KAAK,CAAC;AAAA,IAC/C,MAAM,aAAa,YAAY;AAAA,IAC/B,MAAM,WAAW,CAAC,QAAQ;AAAA,MACtB,MAAM,IAAS,IAAI,GAAG;AAAA,MACtB,OAAO,SAAS,8BAA8B;AAAA;AAAA,IAElD,IAAI,MAAM,8BAA8B;AAAA,IACxC,MAAM,MAAM,OAAO,OAAO,IAAI;AAAA,IAC9B,IAAI,UAAU;AAAA,IACd,WAAW,OAAO,WAAW,MAAM;AAAA,MAC/B,IAAI,OAAO,OAAO;AAAA,IACtB;AAAA,IAEA,IAAI,MAAM,uBAAuB;AAAA,IACjC,WAAW,OAAO,WAAW,MAAM;AAAA,MAC/B,MAAM,KAAK,IAAI;AAAA,MACf,MAAM,IAAS,IAAI,GAAG;AAAA,MACtB,MAAM,SAAS,MAAM;AAAA,MACrB,MAAM,eAAe,QAAQ,MAAM,UAAU;AAAA,MAC7C,MAAM,gBAAgB,QAAQ,MAAM,WAAW;AAAA,MAC/C,IAAI,MAAM,SAAS,QAAQ,SAAS,GAAG,IAAI;AAAA,MAC3C,IAAI,gBAAgB,eAAe;AAAA,QAE/B,IAAI,MAAM;AAAA,cACZ;AAAA,gBACE;AAAA,qDACqC;AAAA;AAAA,kCAEnB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,cAK1C;AAAA,gBACE;AAAA,wBACQ;AAAA;AAAA;AAAA,sBAGF,QAAQ;AAAA;AAAA;AAAA,OAGvB;AAAA,MACK,EACK,SAAI,CAAC,cAAc;AAAA,QACpB,IAAI,MAAM;AAAA,gBACV,gBAAgB;AAAA,cAClB;AAAA,mDACqC;AAAA;AAAA,gCAEnB,sBAAsB;AAAA;AAAA;AAAA,eAGvC,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKZ;AAAA;AAAA;AAAA;AAAA,cAIP;AAAA,gBACE;AAAA,wBACQ;AAAA;AAAA,wBAEA,QAAQ;AAAA;AAAA;AAAA;AAAA,OAIzB;AAAA,MACK,EACK;AAAA,QACD,IAAI,MAAM;AAAA,cACZ;AAAA,mDACqC;AAAA;AAAA,gCAEnB,sBAAsB;AAAA;AAAA;AAAA;AAAA,cAIxC;AAAA,gBACE;AAAA,wBACQ;AAAA;AAAA;AAAA,sBAGF,QAAQ;AAAA;AAAA;AAAA,OAGvB;AAAA;AAAA,IAEC;AAAA,IACA,IAAI,MAAM,4BAA4B;AAAA,IACtC,IAAI,MAAM,iBAAiB;AAAA,IAC3B,MAAM,KAAK,IAAI,QAAQ;AAAA,IACvB,OAAO,CAAC,SAAS,QAAQ,GAAG,OAAO,SAAS,GAAG;AAAA;AAAA,EAEnD,IAAI;AAAA,EACJ,MAAM,YAAgB;AAAA,EACtB,MAAM,MAAM,CAAM,aAAa;AAAA,EAC/B,MAAM,cAAkB;AAAA,EACxB,MAAM,cAAc,OAAO,YAAW;AAAA,EACtC,MAAM,WAAW,IAAI;AAAA,EACrB,IAAI;AAAA,EACJ,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,UAAU,QAAQ,YAAY;AAAA,IAC9B,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,CAAC,UAAS,KAAK,GAAG;AAAA,MAClB,QAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,IAAI,OAAO,eAAe,KAAK,UAAU,SAAS,IAAI,YAAY,MAAM;AAAA,MAEpE,IAAI,CAAC;AAAA,QACD,WAAW,iBAAiB,IAAI,KAAK;AAAA,MACzC,UAAU,SAAS,SAAS,GAAG;AAAA,MAC/B,IAAI,CAAC;AAAA,QACD,OAAO;AAAA,MACX,OAAO,eAAe,CAAC,GAAG,OAAO,SAAS,KAAK,OAAO,IAAI;AAAA,IAC9D;AAAA,IACA,OAAO,WAAW,SAAS,GAAG;AAAA;AAAA,CAErC;AACD,SAAS,kBAAkB,CAAC,SAAS,OAAO,MAAM,KAAK;AAAA,EACnD,WAAW,UAAU,SAAS;AAAA,IAC1B,IAAI,OAAO,OAAO,WAAW,GAAG;AAAA,MAC5B,MAAM,QAAQ,OAAO;AAAA,MACrB,OAAO;AAAA,IACX;AAAA,EACJ;AAAA,EACA,MAAM,aAAa,QAAQ,OAAO,CAAC,MAAM,CAAM,QAAQ,CAAC,CAAC;AAAA,EACzD,IAAI,WAAW,WAAW,GAAG;AAAA,IACzB,MAAM,QAAQ,WAAW,GAAG;AAAA,IAC5B,OAAO,WAAW;AAAA,EACtB;AAAA,EACA,MAAM,OAAO,KAAK;AAAA,IACd,MAAM;AAAA,IACN,OAAO,MAAM;AAAA,IACb;AAAA,IACA,QAAQ,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EAC3G,CAAC;AAAA,EACD,OAAO;AAAA;AAEJ,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,SAAS,KAAK,MAAM,GAAG;AAAA,EAClB,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,UAAU,UAAU,IAAI,aAAa,SAAS;AAAA,EAClH,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,WAAW,UAAU,IAAI,aAAa,SAAS;AAAA,EACpH,WAAW,KAAK,MAAM,UAAU,MAAM;AAAA,IACvC,IAAI,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM,GAAG;AAAA,MACzC,OAAO,IAAI,IAAI,IAAI,QAAQ,QAAQ,CAAC,WAAW,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC;AAAA,IAClF;AAAA,IACA;AAAA,GACH;AAAA,EACI,WAAW,KAAK,MAAM,WAAW,MAAM;AAAA,IACxC,IAAI,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,OAAO,GAAG;AAAA,MAC1C,MAAM,WAAW,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO;AAAA,MACtD,OAAO,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,MAAW,WAAW,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;AAAA,IACvF;AAAA,IACA;AAAA,GACH;AAAA,EACD,MAAM,QAAQ,IAAI,QAAQ,WAAW,IAAI,IAAI,QAAQ,GAAG,KAAK,MAAM;AAAA,EACnE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,OAAO;AAAA,MACP,OAAO,MAAM,SAAS,GAAG;AAAA,IAC7B;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,MAAM,UAAU,CAAC;AAAA,IACjB,WAAW,UAAU,IAAI,SAAS;AAAA,MAC9B,MAAM,SAAS,OAAO,KAAK,IAAI;AAAA,QAC3B,OAAO,QAAQ;AAAA,QACf,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AAAA,MACN,IAAI,kBAAkB,SAAS;AAAA,QAC3B,QAAQ,KAAK,MAAM;AAAA,QACnB,QAAQ;AAAA,MACZ,EACK;AAAA,QACD,IAAI,OAAO,OAAO,WAAW;AAAA,UACzB,OAAO;AAAA,QACX,QAAQ,KAAK,MAAM;AAAA;AAAA,IAE3B;AAAA,IACA,IAAI,CAAC;AAAA,MACD,OAAO,mBAAmB,SAAS,SAAS,MAAM,GAAG;AAAA,IACzD,OAAO,QAAQ,IAAI,OAAO,EAAE,KAAK,CAAC,aAAY;AAAA,MAC1C,OAAO,mBAAmB,UAAS,SAAS,MAAM,GAAG;AAAA,KACxD;AAAA;AAAA,CAER;AACD,SAAS,2BAA2B,CAAC,SAAS,OAAO,MAAM,KAAK;AAAA,EAC5D,MAAM,YAAY,QAAQ,OAAO,CAAC,MAAM,EAAE,OAAO,WAAW,CAAC;AAAA,EAC7D,IAAI,UAAU,WAAW,GAAG;AAAA,IACxB,MAAM,QAAQ,UAAU,GAAG;AAAA,IAC3B,OAAO;AAAA,EACX;AAAA,EACA,IAAI,UAAU,WAAW,GAAG;AAAA,IAExB,MAAM,OAAO,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,MACb;AAAA,MACA,QAAQ,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,IAC3G,CAAC;AAAA,EACL,EACK;AAAA,IAED,MAAM,OAAO,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,MACb;AAAA,MACA,QAAQ,CAAC;AAAA,MACT,WAAW;AAAA,IACf,CAAC;AAAA;AAAA,EAEL,OAAO;AAAA;AAEJ,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,IAAI,YAAY;AAAA,EAChB,MAAM,QAAQ,IAAI,QAAQ,WAAW,IAAI,IAAI,QAAQ,GAAG,KAAK,MAAM;AAAA,EACnE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,OAAO;AAAA,MACP,OAAO,MAAM,SAAS,GAAG;AAAA,IAC7B;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,MAAM,UAAU,CAAC;AAAA,IACjB,WAAW,UAAU,IAAI,SAAS;AAAA,MAC9B,MAAM,SAAS,OAAO,KAAK,IAAI;AAAA,QAC3B,OAAO,QAAQ;AAAA,QACf,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AAAA,MACN,IAAI,kBAAkB,SAAS;AAAA,QAC3B,QAAQ,KAAK,MAAM;AAAA,QACnB,QAAQ;AAAA,MACZ,EACK;AAAA,QACD,QAAQ,KAAK,MAAM;AAAA;AAAA,IAE3B;AAAA,IACA,IAAI,CAAC;AAAA,MACD,OAAO,4BAA4B,SAAS,SAAS,MAAM,GAAG;AAAA,IAClE,OAAO,QAAQ,IAAI,OAAO,EAAE,KAAK,CAAC,aAAY;AAAA,MAC1C,OAAO,4BAA4B,UAAS,SAAS,MAAM,GAAG;AAAA,KACjE;AAAA;AAAA,CAER;AACM,IAAM,yCAER,aAAa,0BAA0B,CAAC,MAAM,QAAQ;AAAA,EACvD,IAAI,YAAY;AAAA,EAChB,UAAU,KAAK,MAAM,GAAG;AAAA,EACxB,MAAM,SAAS,KAAK,KAAK;AAAA,EACpB,WAAW,KAAK,MAAM,cAAc,MAAM;AAAA,IAC3C,MAAM,aAAa,CAAC;AAAA,IACpB,WAAW,UAAU,IAAI,SAAS;AAAA,MAC9B,MAAM,KAAK,OAAO,KAAK;AAAA,MACvB,IAAI,CAAC,MAAM,OAAO,KAAK,EAAE,EAAE,WAAW;AAAA,QAClC,MAAM,IAAI,MAAM,gDAAgD,IAAI,QAAQ,QAAQ,MAAM,IAAI;AAAA,MAClG,YAAY,GAAG,MAAM,OAAO,QAAQ,EAAE,GAAG;AAAA,QACrC,IAAI,CAAC,WAAW;AAAA,UACZ,WAAW,KAAK,IAAI;AAAA,QACxB,WAAW,OAAO,GAAG;AAAA,UACjB,WAAW,GAAG,IAAI,GAAG;AAAA,QACzB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,GACV;AAAA,EACD,MAAM,OAAY,OAAO,MAAM;AAAA,IAC3B,MAAM,OAAO,IAAI;AAAA,IACjB,MAAM,MAAM,IAAI;AAAA,IAChB,WAAW,KAAK,MAAM;AAAA,MAClB,MAAM,SAAS,EAAE,KAAK,aAAa,IAAI;AAAA,MACvC,IAAI,CAAC,UAAU,OAAO,SAAS;AAAA,QAC3B,MAAM,IAAI,MAAM,gDAAgD,IAAI,QAAQ,QAAQ,CAAC,IAAI;AAAA,MAC7F,WAAW,KAAK,QAAQ;AAAA,QACpB,IAAI,IAAI,IAAI,CAAC,GAAG;AAAA,UACZ,MAAM,IAAI,MAAM,kCAAkC,OAAO,CAAC,IAAI;AAAA,QAClE;AAAA,QACA,IAAI,IAAI,GAAG,CAAC;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,GACV;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,CAAM,SAAS,KAAK,GAAG;AAAA,MACvB,QAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,QACV;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,MAAM,MAAM,KAAK,MAAM,IAAI,QAAQ,IAAI,cAAc;AAAA,IACrD,IAAI,KAAK;AAAA,MACL,OAAO,IAAI,KAAK,IAAI,SAAS,GAAG;AAAA,IACpC;AAAA,IAKA,IAAI,IAAI,iBAAiB,IAAI,cAAc,YAAY;AAAA,MACnD,OAAO,OAAO,SAAS,GAAG;AAAA,IAC9B;AAAA,IAEA,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,CAAC;AAAA,MACT,MAAM;AAAA,MACN,eAAe,IAAI;AAAA,MACnB,SAAS,MAAM,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,MACrC;AAAA,MACA,MAAM,CAAC,IAAI,aAAa;AAAA,MACxB;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,mCAAsC,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAAA,EAC/F,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,IAChE,MAAM,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,IAClE,MAAM,QAAQ,gBAAgB,WAAW,iBAAiB;AAAA,IAC1D,IAAI,OAAO;AAAA,MACP,OAAO,QAAQ,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,OAAM,YAAW;AAAA,QACtD,OAAO,0BAA0B,SAAS,OAAM,MAAK;AAAA,OACxD;AAAA,IACL;AAAA,IACA,OAAO,0BAA0B,SAAS,MAAM,KAAK;AAAA;AAAA,CAE5D;AACD,SAAS,WAAW,CAAC,GAAG,GAAG;AAAA,EAGvB,IAAI,MAAM,GAAG;AAAA,IACT,OAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,EAClC;AAAA,EACA,IAAI,aAAa,QAAQ,aAAa,QAAQ,CAAC,MAAM,CAAC,GAAG;AAAA,IACrD,OAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,EAClC;AAAA,EACA,IAAS,cAAc,CAAC,KAAU,cAAc,CAAC,GAAG;AAAA,IAChD,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,IAC3B,MAAM,aAAa,OAAO,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,MAAM,QAAQ,GAAG,MAAM,EAAE;AAAA,IAC3E,MAAM,SAAS,KAAK,MAAM,EAAE;AAAA,IAC5B,WAAW,OAAO,YAAY;AAAA,MAC1B,MAAM,cAAc,YAAY,EAAE,MAAM,EAAE,IAAI;AAAA,MAC9C,IAAI,CAAC,YAAY,OAAO;AAAA,QACpB,OAAO;AAAA,UACH,OAAO;AAAA,UACP,gBAAgB,CAAC,KAAK,GAAG,YAAY,cAAc;AAAA,QACvD;AAAA,MACJ;AAAA,MACA,OAAO,OAAO,YAAY;AAAA,IAC9B;AAAA,IACA,OAAO,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,EACvC;AAAA,EACA,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;AAAA,IACtC,IAAI,EAAE,WAAW,EAAE,QAAQ;AAAA,MACvB,OAAO,EAAE,OAAO,OAAO,gBAAgB,CAAC,EAAE;AAAA,IAC9C;AAAA,IACA,MAAM,WAAW,CAAC;AAAA,IAClB,SAAS,QAAQ,EAAG,QAAQ,EAAE,QAAQ,SAAS;AAAA,MAC3C,MAAM,QAAQ,EAAE;AAAA,MAChB,MAAM,QAAQ,EAAE;AAAA,MAChB,MAAM,cAAc,YAAY,OAAO,KAAK;AAAA,MAC5C,IAAI,CAAC,YAAY,OAAO;AAAA,QACpB,OAAO;AAAA,UACH,OAAO;AAAA,UACP,gBAAgB,CAAC,OAAO,GAAG,YAAY,cAAc;AAAA,QACzD;AAAA,MACJ;AAAA,MACA,SAAS,KAAK,YAAY,IAAI;AAAA,IAClC;AAAA,IACA,OAAO,EAAE,OAAO,MAAM,MAAM,SAAS;AAAA,EACzC;AAAA,EACA,OAAO,EAAE,OAAO,OAAO,gBAAgB,CAAC,EAAE;AAAA;AAE9C,SAAS,yBAAyB,CAAC,QAAQ,MAAM,OAAO;AAAA,EAEpD,MAAM,YAAY,IAAI;AAAA,EACtB,IAAI;AAAA,EACJ,WAAW,OAAO,KAAK,QAAQ;AAAA,IAC3B,IAAI,IAAI,SAAS,qBAAqB;AAAA,MAClC,eAAe,aAAa;AAAA,MAC5B,WAAW,KAAK,IAAI,MAAM;AAAA,QACtB,IAAI,CAAC,UAAU,IAAI,CAAC;AAAA,UAChB,UAAU,IAAI,GAAG,CAAC,CAAC;AAAA,QACvB,UAAU,IAAI,CAAC,EAAE,IAAI;AAAA,MACzB;AAAA,IACJ,EACK;AAAA,MACD,OAAO,OAAO,KAAK,GAAG;AAAA;AAAA,EAE9B;AAAA,EACA,WAAW,OAAO,MAAM,QAAQ;AAAA,IAC5B,IAAI,IAAI,SAAS,qBAAqB;AAAA,MAClC,WAAW,KAAK,IAAI,MAAM;AAAA,QACtB,IAAI,CAAC,UAAU,IAAI,CAAC;AAAA,UAChB,UAAU,IAAI,GAAG,CAAC,CAAC;AAAA,QACvB,UAAU,IAAI,CAAC,EAAE,IAAI;AAAA,MACzB;AAAA,IACJ,EACK;AAAA,MACD,OAAO,OAAO,KAAK,GAAG;AAAA;AAAA,EAE9B;AAAA,EAEA,MAAM,WAAW,CAAC,GAAG,SAAS,EAAE,OAAO,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;AAAA,EAC5E,IAAI,SAAS,UAAU,YAAY;AAAA,IAC/B,OAAO,OAAO,KAAK,KAAK,YAAY,MAAM,SAAS,CAAC;AAAA,EACxD;AAAA,EACA,IAAS,QAAQ,MAAM;AAAA,IACnB,OAAO;AAAA,EACX,MAAM,SAAS,YAAY,KAAK,OAAO,MAAM,KAAK;AAAA,EAClD,IAAI,CAAC,OAAO,OAAO;AAAA,IACf,MAAM,IAAI,MAAM,0CAA0C,GAAG,KAAK,UAAU,OAAO,cAAc,GAAG;AAAA,EACxG;AAAA,EACA,OAAO,QAAQ,OAAO;AAAA,EACtB,OAAO;AAAA;AAEJ,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,MAAM,QAAQ,IAAI;AAAA,EAClB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,MACvB,QAAQ,OAAO,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,QAAQ,QAAQ,CAAC;AAAA,IACjB,MAAM,QAAQ,CAAC;AAAA,IACf,MAAM,aAAa,iBAAiB,OAAO,OAAO;AAAA,IAClD,MAAM,cAAc,iBAAiB,OAAO,QAAQ;AAAA,IACpD,IAAI,CAAC,IAAI,MAAM;AAAA,MACX,IAAI,MAAM,SAAS,YAAY;AAAA,QAC3B,QAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACZ,CAAC;AAAA,QACD,OAAO;AAAA,MACX;AAAA,MACA,IAAI,MAAM,SAAS,MAAM,QAAQ;AAAA,QAC7B,QAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS,MAAM;AAAA,UACf,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,IAKA,MAAM,cAAc,IAAI,MAAM,MAAM,MAAM;AAAA,IAC1C,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,MACnC,MAAM,IAAI,MAAM,GAAG,KAAK,IAAI,EAAE,OAAO,MAAM,IAAI,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,MAChE,IAAI,aAAa,SAAS;AAAA,QACtB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAAA,UACtB,YAAY,KAAK;AAAA,SACpB,CAAC;AAAA,MACN,EACK;AAAA,QACD,YAAY,KAAK;AAAA;AAAA,IAEzB;AAAA,IACA,IAAI,IAAI,MAAM;AAAA,MACV,IAAI,IAAI,MAAM,SAAS;AAAA,MACvB,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM;AAAA,MACrC,WAAW,MAAM,MAAM;AAAA,QACnB;AAAA,QACA,MAAM,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,QAC/D,IAAI,kBAAkB,SAAS;AAAA,UAC3B,MAAM,KAAK,OAAO,KAAK,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC;AAAA,QACnE,EACK;AAAA,UACD,kBAAkB,QAAQ,SAAS,CAAC;AAAA;AAAA,MAE5C;AAAA,IACJ;AAAA,IACA,IAAI,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,mBAAmB,aAAa,SAAS,OAAO,OAAO,WAAW,CAAC;AAAA,IAC5G;AAAA,IACA,OAAO,mBAAmB,aAAa,SAAS,OAAO,OAAO,WAAW;AAAA;AAAA,CAEhF;AACD,SAAS,gBAAgB,CAAC,OAAO,KAAK;AAAA,EAClC,SAAS,IAAI,MAAM,SAAS,EAAG,KAAK,GAAG,KAAK;AAAA,IACxC,IAAI,MAAM,GAAG,KAAK,SAAS;AAAA,MACvB,OAAO,IAAI;AAAA,EACnB;AAAA,EACA,OAAO;AAAA;AAEX,SAAS,iBAAiB,CAAC,QAAQ,OAAO,OAAO;AAAA,EAC7C,IAAI,OAAO,OAAO,QAAQ;AAAA,IACtB,MAAM,OAAO,KAAK,GAAQ,aAAa,OAAO,OAAO,MAAM,CAAC;AAAA,EAChE;AAAA,EACA,MAAM,MAAM,SAAS,OAAO;AAAA;AAEhC,SAAS,kBAAkB,CAAC,aAAa,OAAO,OAAO,OAAO,aAAa;AAAA,EAIvE,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACnC,MAAM,IAAI,YAAY;AAAA,IACtB,MAAM,YAAY,IAAI,MAAM;AAAA,IAC5B,IAAI,EAAE,OAAO,QAAQ;AAAA,MACjB,IAAI,CAAC,aAAa,KAAK,aAAa;AAAA,QAChC,MAAM,MAAM,SAAS;AAAA,QACrB;AAAA,MACJ;AAAA,MACA,MAAM,OAAO,KAAK,GAAQ,aAAa,GAAG,EAAE,MAAM,CAAC;AAAA,IACvD;AAAA,IACA,MAAM,MAAM,KAAK,EAAE;AAAA,EACvB;AAAA,EAOA,SAAS,IAAI,MAAM,MAAM,SAAS,EAAG,KAAK,MAAM,QAAQ,KAAK;AAAA,IACzD,IAAI,MAAM,GAAG,KAAK,WAAW,cAAc,MAAM,MAAM,OAAO,WAAW;AAAA,MACrE,MAAM,MAAM,SAAS;AAAA,IACzB,EACK;AAAA,MACD;AAAA;AAAA,EAER;AAAA,EACA,OAAO;AAAA;AAEJ,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EACnF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,CAAM,cAAc,KAAK,GAAG;AAAA,MAC5B,QAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,MAAM,QAAQ,CAAC;AAAA,IACf,MAAM,SAAS,IAAI,QAAQ,KAAK;AAAA,IAChC,IAAI,QAAQ;AAAA,MACR,QAAQ,QAAQ,CAAC;AAAA,MACjB,MAAM,aAAa,IAAI;AAAA,MACvB,WAAW,OAAO,QAAQ;AAAA,QACtB,IAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AAAA,UAC/E,WAAW,IAAI,OAAO,QAAQ,WAAW,IAAI,SAAS,IAAI,GAAG;AAAA,UAC7D,MAAM,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,UACtE,IAAI,qBAAqB,SAAS;AAAA,YAC9B,MAAM,IAAI,MAAM,sDAAsD;AAAA,UAC1E;AAAA,UACA,IAAI,UAAU,OAAO,QAAQ;AAAA,YACzB,QAAQ,OAAO,KAAK;AAAA,cAChB,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,cACjF,OAAO;AAAA,cACP,MAAM,CAAC,GAAG;AAAA,cACV;AAAA,YACJ,CAAC;AAAA,YACD;AAAA,UACJ;AAAA,UACA,MAAM,SAAS,UAAU;AAAA,UACzB,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,MAAM,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,UAC5E,IAAI,kBAAkB,SAAS;AAAA,YAC3B,MAAM,KAAK,OAAO,KAAK,CAAC,YAAW;AAAA,cAC/B,IAAI,QAAO,OAAO,QAAQ;AAAA,gBACtB,QAAQ,OAAO,KAAK,GAAQ,aAAa,KAAK,QAAO,MAAM,CAAC;AAAA,cAChE;AAAA,cACA,QAAQ,MAAM,UAAU,QAAO;AAAA,aAClC,CAAC;AAAA,UACN,EACK;AAAA,YACD,IAAI,OAAO,OAAO,QAAQ;AAAA,cACtB,QAAQ,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,YAChE;AAAA,YACA,QAAQ,MAAM,UAAU,OAAO;AAAA;AAAA,QAEvC;AAAA,MACJ;AAAA,MACA,IAAI;AAAA,MACJ,WAAW,OAAO,OAAO;AAAA,QACrB,IAAI,CAAC,WAAW,IAAI,GAAG,GAAG;AAAA,UACtB,eAAe,gBAAgB,CAAC;AAAA,UAChC,aAAa,KAAK,GAAG;AAAA,QACzB;AAAA,MACJ;AAAA,MACA,IAAI,gBAAgB,aAAa,SAAS,GAAG;AAAA,QACzC,QAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,IACJ,EACK;AAAA,MACD,QAAQ,QAAQ,CAAC;AAAA,MAEjB,WAAW,OAAO,QAAQ,QAAQ,KAAK,GAAG;AAAA,QACtC,IAAI,QAAQ;AAAA,UACR;AAAA,QACJ,IAAI,CAAC,OAAO,UAAU,qBAAqB,KAAK,OAAO,GAAG;AAAA,UACtD;AAAA,QACJ,IAAI,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,QACpE,IAAI,qBAAqB,SAAS;AAAA,UAC9B,MAAM,IAAI,MAAM,sDAAsD;AAAA,QAC1E;AAAA,QAGA,MAAM,kBAAkB,OAAO,QAAQ,YAAoB,OAAO,KAAK,GAAG,KAAK,UAAU,OAAO;AAAA,QAChG,IAAI,iBAAiB;AAAA,UACjB,MAAM,cAAc,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,OAAO,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,UAChF,IAAI,uBAAuB,SAAS;AAAA,YAChC,MAAM,IAAI,MAAM,sDAAsD;AAAA,UAC1E;AAAA,UACA,IAAI,YAAY,OAAO,WAAW,GAAG;AAAA,YACjC,YAAY;AAAA,UAChB;AAAA,QACJ;AAAA,QACA,IAAI,UAAU,OAAO,QAAQ;AAAA,UACzB,IAAI,IAAI,SAAS,SAAS;AAAA,YAEtB,QAAQ,MAAM,OAAO,MAAM;AAAA,UAC/B,EACK;AAAA,YAED,QAAQ,OAAO,KAAK;AAAA,cAChB,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,cACjF,OAAO;AAAA,cACP,MAAM,CAAC,GAAG;AAAA,cACV;AAAA,YACJ,CAAC;AAAA;AAAA,UAEL;AAAA,QACJ;AAAA,QACA,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,MAAM,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,QAC5E,IAAI,kBAAkB,SAAS;AAAA,UAC3B,MAAM,KAAK,OAAO,KAAK,CAAC,YAAW;AAAA,YAC/B,IAAI,QAAO,OAAO,QAAQ;AAAA,cACtB,QAAQ,OAAO,KAAK,GAAQ,aAAa,KAAK,QAAO,MAAM,CAAC;AAAA,YAChE;AAAA,YACA,QAAQ,MAAM,UAAU,SAAS,QAAO;AAAA,WAC3C,CAAC;AAAA,QACN,EACK;AAAA,UACD,IAAI,OAAO,OAAO,QAAQ;AAAA,YACtB,QAAQ,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,UAChE;AAAA,UACA,QAAQ,MAAM,UAAU,SAAS,OAAO;AAAA;AAAA,MAEhD;AAAA;AAAA,IAEJ,IAAI,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAAA,IAChD;AAAA,IACA,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,EAAE,iBAAiB,MAAM;AAAA,MACzB,QAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,MAAM,QAAQ,CAAC;AAAA,IACf,QAAQ,QAAQ,IAAI;AAAA,IACpB,YAAY,KAAK,UAAU,OAAO;AAAA,MAC9B,MAAM,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,MACtE,MAAM,cAAc,IAAI,UAAU,KAAK,IAAI,EAAE,OAAc,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,MAC5E,IAAI,qBAAqB,WAAW,uBAAuB,SAAS;AAAA,QAChE,MAAM,KAAK,QAAQ,IAAI,CAAC,WAAW,WAAW,CAAC,EAAE,KAAK,EAAE,YAAW,kBAAiB;AAAA,UAChF,gBAAgB,YAAW,cAAa,SAAS,KAAK,OAAO,MAAM,GAAG;AAAA,SACzE,CAAC;AAAA,MACN,EACK;AAAA,QACD,gBAAgB,WAAW,aAAa,SAAS,KAAK,OAAO,MAAM,GAAG;AAAA;AAAA,IAE9E;AAAA,IACA,IAAI,MAAM;AAAA,MACN,OAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAAA,IAChD,OAAO;AAAA;AAAA,CAEd;AACD,SAAS,eAAe,CAAC,WAAW,aAAa,OAAO,KAAK,OAAO,MAAM,KAAK;AAAA,EAC3E,IAAI,UAAU,OAAO,QAAQ;AAAA,IACzB,IAAS,iBAAiB,IAAI,OAAO,GAAG,GAAG;AAAA,MACvC,MAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,UAAU,MAAM,CAAC;AAAA,IACjE,EACK;AAAA,MACD,MAAM,OAAO,KAAK;AAAA,QACd,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,MACrF,CAAC;AAAA;AAAA,EAET;AAAA,EACA,IAAI,YAAY,OAAO,QAAQ;AAAA,IAC3B,IAAS,iBAAiB,IAAI,OAAO,GAAG,GAAG;AAAA,MACvC,MAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,YAAY,MAAM,CAAC;AAAA,IACnE,EACK;AAAA,MACD,MAAM,OAAO,KAAK;AAAA,QACd,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,YAAY,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,MACvF,CAAC;AAAA;AAAA,EAET;AAAA,EACA,MAAM,MAAM,IAAI,UAAU,OAAO,YAAY,KAAK;AAAA;AAE/C,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,EAAE,iBAAiB,MAAM;AAAA,MACzB,QAAQ,OAAO,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,MAAM,QAAQ,CAAC;AAAA,IACf,QAAQ,QAAQ,IAAI;AAAA,IACpB,WAAW,QAAQ,OAAO;AAAA,MACtB,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,QAAQ,CAAC,EAAE,GAAG,GAAG;AAAA,MACtE,IAAI,kBAAkB,SAAS;AAAA,QAC3B,MAAM,KAAK,OAAO,KAAK,CAAC,YAAW,gBAAgB,SAAQ,OAAO,CAAC,CAAC;AAAA,MACxE,EAEI;AAAA,wBAAgB,QAAQ,OAAO;AAAA,IACvC;AAAA,IACA,IAAI,MAAM;AAAA,MACN,OAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAAA,IAChD,OAAO;AAAA;AAAA,CAEd;AACD,SAAS,eAAe,CAAC,QAAQ,OAAO;AAAA,EACpC,IAAI,OAAO,OAAO,QAAQ;AAAA,IACtB,MAAM,OAAO,KAAK,GAAG,OAAO,MAAM;AAAA,EACtC;AAAA,EACA,MAAM,MAAM,IAAI,OAAO,KAAK;AAAA;AAEzB,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,MAAM,SAAc,cAAc,IAAI,OAAO;AAAA,EAC7C,MAAM,YAAY,IAAI,IAAI,MAAM;AAAA,EAChC,KAAK,KAAK,SAAS;AAAA,EACnB,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,OAC/B,OAAO,CAAC,MAAW,iBAAiB,IAAI,OAAO,CAAC,CAAC,EACjD,IAAI,CAAC,MAAO,OAAO,MAAM,WAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,CAAE,EACvE,KAAK,GAAG,KAAK;AAAA,EAClB,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,UAAU,IAAI,KAAK,GAAG;AAAA,MACtB,OAAO;AAAA,IACX;AAAA,IACA,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EACrF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,IAAI,IAAI,OAAO,WAAW,GAAG;AAAA,IACzB,MAAM,IAAI,MAAM,mDAAmD;AAAA,EACvE;AAAA,EACA,MAAM,SAAS,IAAI,IAAI,IAAI,MAAM;AAAA,EACjC,KAAK,KAAK,SAAS;AAAA,EACnB,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,IAAI,OACnC,IAAI,CAAC,MAAO,OAAO,MAAM,WAAgB,YAAY,CAAC,IAAI,IAAS,YAAY,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,CAAE,EACzG,KAAK,GAAG,KAAK;AAAA,EAClB,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,OAAO,IAAI,KAAK,GAAG;AAAA,MACnB,OAAO;AAAA,IACX;AAAA,IACA,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,MAAM,QAAQ,QAAQ;AAAA,IAEtB,IAAI,iBAAiB;AAAA,MACjB,OAAO;AAAA,IACX,QAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,gCAAmC,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AAAA,EACzF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ;AAAA,EAClB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,IAAI,cAAc,YAAY;AAAA,MAC9B,MAAM,IAAS,gBAAgB,KAAK,YAAY,IAAI;AAAA,IACxD;AAAA,IACA,MAAM,OAAO,IAAI,UAAU,QAAQ,OAAO,OAAO;AAAA,IACjD,IAAI,IAAI,OAAO;AAAA,MACX,MAAM,SAAS,gBAAgB,UAAU,OAAO,QAAQ,QAAQ,IAAI;AAAA,MACpE,OAAO,OAAO,KAAK,CAAC,YAAW;AAAA,QAC3B,QAAQ,QAAQ;AAAA,QAChB,QAAQ,WAAW;AAAA,QACnB,OAAO;AAAA,OACV;AAAA,IACL;AAAA,IACA,IAAI,gBAAgB,SAAS;AAAA,MACzB,MAAM,IAAS;AAAA,IACnB;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB,QAAQ,WAAW;AAAA,IACnB,OAAO;AAAA;AAAA,CAEd;AACD,SAAS,oBAAoB,CAAC,QAAQ,OAAO;AAAA,EACzC,IAAI,UAAU,cAAc,OAAO,OAAO,UAAU,OAAO,WAAW;AAAA,IAClE,OAAO,EAAE,QAAQ,CAAC,GAAG,OAAO,UAAU;AAAA,EAC1C;AAAA,EACA,OAAO;AAAA;AAEJ,IAAM,+BAAkC,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAAA,EACvF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ;AAAA,EAClB,KAAK,KAAK,SAAS;AAAA,EACd,WAAW,KAAK,MAAM,UAAU,MAAM;AAAA,IACvC,OAAO,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,IAAI,UAAU,KAAK,QAAQ,SAAS,CAAC,IAAI;AAAA,GAC3F;AAAA,EACI,WAAW,KAAK,MAAM,WAAW,MAAM;AAAA,IACxC,MAAM,UAAU,IAAI,UAAU,KAAK;AAAA,IACnC,OAAO,UAAU,IAAI,OAAO,KAAU,WAAW,QAAQ,MAAM,MAAM,IAAI;AAAA,GAC5E;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,IAAI,UAAU,KAAK,UAAU,YAAY;AAAA,MACzC,MAAM,QAAQ,QAAQ;AAAA,MACtB,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,MAClD,IAAI,kBAAkB;AAAA,QAClB,OAAO,OAAO,KAAK,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAAA,MAC5D,OAAO,qBAAqB,QAAQ,KAAK;AAAA,IAC7C;AAAA,IACA,IAAI,QAAQ,UAAU,WAAW;AAAA,MAC7B,OAAO;AAAA,IACX;AAAA,IACA,OAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA;AAAA,CAEjD;AACM,IAAM,oCAAuC,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AAAA,EAEjG,aAAa,KAAK,MAAM,GAAG;AAAA,EAEtB,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,EAC/D,WAAW,KAAK,MAAM,WAAW,MAAM,IAAI,UAAU,KAAK,OAAO;AAAA,EAEtE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,OAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA;AAAA,CAEjD;AACM,IAAM,+BAAkC,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAAA,EACvF,SAAS,KAAK,MAAM,GAAG;AAAA,EAClB,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,UAAU,KAAK,KAAK;AAAA,EAC7D,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,EAC/D,WAAW,KAAK,MAAM,WAAW,MAAM;AAAA,IACxC,MAAM,UAAU,IAAI,UAAU,KAAK;AAAA,IACnC,OAAO,UAAU,IAAI,OAAO,KAAU,WAAW,QAAQ,MAAM,UAAU,IAAI;AAAA,GAChF;AAAA,EACI,WAAW,KAAK,MAAM,UAAU,MAAM;AAAA,IACvC,OAAO,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,IAAI;AAAA,GACtF;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAEhC,IAAI,QAAQ,UAAU;AAAA,MAClB,OAAO;AAAA,IACX,OAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA;AAAA,CAEjD;AACM,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EACrF,SAAS,KAAK,MAAM,GAAG;AAAA,EAEvB,KAAK,KAAK,QAAQ;AAAA,EACb,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,EACpE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,IAAI,cAAc,YAAY;AAAA,MAC9B,OAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAAA,IAEA,IAAI,QAAQ,UAAU,WAAW;AAAA,MAC7B,QAAQ,QAAQ,IAAI;AAAA,MAIpB,OAAO;AAAA,IACX;AAAA,IAEA,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAClD,IAAI,kBAAkB,SAAS;AAAA,MAC3B,OAAO,OAAO,KAAK,CAAC,YAAW,oBAAoB,SAAQ,GAAG,CAAC;AAAA,IACnE;AAAA,IACA,OAAO,oBAAoB,QAAQ,GAAG;AAAA;AAAA,CAE7C;AACD,SAAS,mBAAmB,CAAC,SAAS,KAAK;AAAA,EACvC,IAAI,QAAQ,UAAU,WAAW;AAAA,IAC7B,QAAQ,QAAQ,IAAI;AAAA,EACxB;AAAA,EACA,OAAO;AAAA;AAEJ,IAAM,+BAAkC,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAAA,EACvF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ;AAAA,EACb,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,EACpE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,IAAI,cAAc,YAAY;AAAA,MAC9B,OAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAAA,IAEA,IAAI,QAAQ,UAAU,WAAW;AAAA,MAC7B,QAAQ,QAAQ,IAAI;AAAA,IACxB;AAAA,IACA,OAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA;AAAA,CAEjD;AACM,IAAM,kCAAqC,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAAA,EAC7F,SAAS,KAAK,MAAM,GAAG;AAAA,EAClB,WAAW,KAAK,MAAM,UAAU,MAAM;AAAA,IACvC,MAAM,IAAI,IAAI,UAAU,KAAK;AAAA,IAC7B,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,SAAS,CAAC,IAAI;AAAA,GAC/D;AAAA,EACD,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAClD,IAAI,kBAAkB,SAAS;AAAA,MAC3B,OAAO,OAAO,KAAK,CAAC,YAAW,wBAAwB,SAAQ,IAAI,CAAC;AAAA,IACxE;AAAA,IACA,OAAO,wBAAwB,QAAQ,IAAI;AAAA;AAAA,CAElD;AACD,SAAS,uBAAuB,CAAC,SAAS,MAAM;AAAA,EAC5C,IAAI,CAAC,QAAQ,OAAO,UAAU,QAAQ,UAAU,WAAW;AAAA,IACvD,QAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,OAAO;AAAA;AAEJ,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EACrF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,IAAI,cAAc,YAAY;AAAA,MAC9B,MAAM,IAAS,gBAAgB,YAAY;AAAA,IAC/C;AAAA,IACA,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAClD,IAAI,kBAAkB,SAAS;AAAA,MAC3B,OAAO,OAAO,KAAK,CAAC,YAAW;AAAA,QAC3B,QAAQ,QAAQ,QAAO,OAAO,WAAW;AAAA,QACzC,OAAO;AAAA,OACV;AAAA,IACL;AAAA,IACA,QAAQ,QAAQ,OAAO,OAAO,WAAW;AAAA,IACzC,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ;AAAA,EACb,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,EAC/D,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,EACpE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,IAAI,cAAc,YAAY;AAAA,MAC9B,OAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAAA,IAEA,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAClD,IAAI,kBAAkB,SAAS;AAAA,MAC3B,OAAO,OAAO,KAAK,CAAC,YAAW;AAAA,QAC3B,QAAQ,QAAQ,QAAO;AAAA,QACvB,IAAI,QAAO,OAAO,QAAQ;AAAA,UACtB,QAAQ,QAAQ,IAAI,WAAW;AAAA,eACxB;AAAA,YACH,OAAO;AAAA,cACH,QAAQ,QAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,YAClF;AAAA,YACA,OAAO,QAAQ;AAAA,UACnB,CAAC;AAAA,UACD,QAAQ,SAAS,CAAC;AAAA,UAClB,QAAQ,WAAW;AAAA,QACvB;AAAA,QACA,OAAO;AAAA,OACV;AAAA,IACL;AAAA,IACA,QAAQ,QAAQ,OAAO;AAAA,IACvB,IAAI,OAAO,OAAO,QAAQ;AAAA,MACtB,QAAQ,QAAQ,IAAI,WAAW;AAAA,WACxB;AAAA,QACH,OAAO;AAAA,UACH,QAAQ,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,QAClF;AAAA,QACA,OAAO,QAAQ;AAAA,MACnB,CAAC;AAAA,MACD,QAAQ,SAAS,CAAC;AAAA,MAClB,QAAQ,WAAW;AAAA,IACvB;AAAA,IACA,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAC7E,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,IAAI,OAAO,QAAQ,UAAU,YAAY,CAAC,OAAO,MAAM,QAAQ,KAAK,GAAG;AAAA,MACnE,QAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,SAAS,KAAK,MAAM,GAAG;AAAA,EAClB,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,MAAM;AAAA,EACxD,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,GAAG,KAAK,KAAK;AAAA,EACtD,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,IAAI,KAAK,MAAM;AAAA,EACzD,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,GAAG,KAAK,UAAU;AAAA,EACrE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,IAAI,cAAc,YAAY;AAAA,MAC9B,MAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,SAAS,GAAG;AAAA,MAC3C,IAAI,iBAAiB,SAAS;AAAA,QAC1B,OAAO,MAAM,KAAK,CAAC,WAAU,iBAAiB,QAAO,IAAI,IAAI,GAAG,CAAC;AAAA,MACrE;AAAA,MACA,OAAO,iBAAiB,OAAO,IAAI,IAAI,GAAG;AAAA,IAC9C;AAAA,IACA,MAAM,OAAO,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG;AAAA,IACzC,IAAI,gBAAgB,SAAS;AAAA,MACzB,OAAO,KAAK,KAAK,CAAC,UAAS,iBAAiB,OAAM,IAAI,KAAK,GAAG,CAAC;AAAA,IACnE;AAAA,IACA,OAAO,iBAAiB,MAAM,IAAI,KAAK,GAAG;AAAA;AAAA,CAEjD;AACD,SAAS,gBAAgB,CAAC,MAAM,MAAM,KAAK;AAAA,EACvC,IAAI,KAAK,OAAO,QAAQ;AAAA,IAEpB,KAAK,UAAU;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EACA,OAAO,KAAK,KAAK,IAAI,EAAE,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,UAAU,KAAK,SAAS,GAAG,GAAG;AAAA;AAE1F,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EACjF,SAAS,KAAK,MAAM,GAAG;AAAA,EAClB,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,MAAM;AAAA,EACxD,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,GAAG,KAAK,KAAK;AAAA,EACtD,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,IAAI,KAAK,MAAM;AAAA,EACzD,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,GAAG,KAAK,UAAU;AAAA,EACrE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,YAAY,IAAI,aAAa;AAAA,IACnC,IAAI,cAAc,WAAW;AAAA,MACzB,MAAM,OAAO,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG;AAAA,MACzC,IAAI,gBAAgB,SAAS;AAAA,QACzB,OAAO,KAAK,KAAK,CAAC,UAAS,mBAAmB,OAAM,KAAK,GAAG,CAAC;AAAA,MACjE;AAAA,MACA,OAAO,mBAAmB,MAAM,KAAK,GAAG;AAAA,IAC5C,EACK;AAAA,MACD,MAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,SAAS,GAAG;AAAA,MAC3C,IAAI,iBAAiB,SAAS;AAAA,QAC1B,OAAO,MAAM,KAAK,CAAC,WAAU,mBAAmB,QAAO,KAAK,GAAG,CAAC;AAAA,MACpE;AAAA,MACA,OAAO,mBAAmB,OAAO,KAAK,GAAG;AAAA;AAAA;AAAA,CAGpD;AACD,SAAS,kBAAkB,CAAC,QAAQ,KAAK,KAAK;AAAA,EAC1C,IAAI,OAAO,OAAO,QAAQ;AAAA,IAEtB,OAAO,UAAU;AAAA,IACjB,OAAO;AAAA,EACX;AAAA,EACA,MAAM,YAAY,IAAI,aAAa;AAAA,EACnC,IAAI,cAAc,WAAW;AAAA,IACzB,MAAM,cAAc,IAAI,UAAU,OAAO,OAAO,MAAM;AAAA,IACtD,IAAI,uBAAuB,SAAS;AAAA,MAChC,OAAO,YAAY,KAAK,CAAC,UAAU,oBAAoB,QAAQ,OAAO,IAAI,KAAK,GAAG,CAAC;AAAA,IACvF;AAAA,IACA,OAAO,oBAAoB,QAAQ,aAAa,IAAI,KAAK,GAAG;AAAA,EAChE,EACK;AAAA,IACD,MAAM,cAAc,IAAI,iBAAiB,OAAO,OAAO,MAAM;AAAA,IAC7D,IAAI,uBAAuB,SAAS;AAAA,MAChC,OAAO,YAAY,KAAK,CAAC,UAAU,oBAAoB,QAAQ,OAAO,IAAI,IAAI,GAAG,CAAC;AAAA,IACtF;AAAA,IACA,OAAO,oBAAoB,QAAQ,aAAa,IAAI,IAAI,GAAG;AAAA;AAAA;AAGnE,SAAS,mBAAmB,CAAC,MAAM,OAAO,YAAY,KAAK;AAAA,EAEvD,IAAI,KAAK,OAAO,QAAQ;AAAA,IACpB,KAAK,UAAU;AAAA,IACf,OAAO;AAAA,EACX;AAAA,EACA,OAAO,WAAW,KAAK,IAAI,EAAE,OAAO,QAAQ,KAAK,OAAO,GAAG,GAAG;AAAA;AAE3D,IAAM,iCAAoC,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAAA,EAC3F,SAAS,KAAK,MAAM,GAAG;AAAA,CAC1B;AACM,IAAM,+BAAkC,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAAA,EACvF,SAAS,KAAK,MAAM,GAAG;AAAA,EAClB,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,UAAU,KAAK,UAAU;AAAA,EACvE,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,EAC/D,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,WAAW,MAAM,KAAK;AAAA,EAC/D,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,WAAW,MAAM,MAAM;AAAA,EACtE,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,IAAI,IAAI,cAAc,YAAY;AAAA,MAC9B,OAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAAA,IACA,MAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAClD,IAAI,kBAAkB,SAAS;AAAA,MAC3B,OAAO,OAAO,KAAK,oBAAoB;AAAA,IAC3C;AAAA,IACA,OAAO,qBAAqB,MAAM;AAAA;AAAA,CAEzC;AACD,SAAS,oBAAoB,CAAC,SAAS;AAAA,EACnC,QAAQ,QAAQ,OAAO,OAAO,QAAQ,KAAK;AAAA,EAC3C,OAAO;AAAA;AAEJ,IAAM,sCAAyC,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AAAA,EACrG,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,MAAM,aAAa,CAAC;AAAA,EACpB,WAAW,QAAQ,IAAI,OAAO;AAAA,IAC1B,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,MAE3C,IAAI,CAAC,KAAK,KAAK,SAAS;AAAA,QAEpB,MAAM,IAAI,MAAM,oDAAoD,CAAC,GAAG,KAAK,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MACvG;AAAA,MACA,MAAM,SAAS,KAAK,KAAK,mBAAmB,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK,KAAK;AAAA,MAC1F,IAAI,CAAC;AAAA,QACD,MAAM,IAAI,MAAM,kCAAkC,KAAK,KAAK,QAAQ;AAAA,MACxE,MAAM,QAAQ,OAAO,WAAW,GAAG,IAAI,IAAI;AAAA,MAC3C,MAAM,MAAM,OAAO,SAAS,GAAG,IAAI,OAAO,SAAS,IAAI,OAAO;AAAA,MAC9D,WAAW,KAAK,OAAO,MAAM,OAAO,GAAG,CAAC;AAAA,IAC5C,EACK,SAAI,SAAS,QAAa,eAAe,IAAI,OAAO,IAAI,GAAG;AAAA,MAC5D,WAAW,KAAU,YAAY,GAAG,MAAM,CAAC;AAAA,IAC/C,EACK;AAAA,MACD,MAAM,IAAI,MAAM,kCAAkC,MAAM;AAAA;AAAA,EAEhE;AAAA,EACA,KAAK,KAAK,UAAU,IAAI,OAAO,IAAI,WAAW,KAAK,EAAE,IAAI;AAAA,EACzD,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,IAAI,OAAO,QAAQ,UAAU,UAAU;AAAA,MACnC,QAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,KAAK,KAAK,QAAQ,YAAY;AAAA,IAC9B,IAAI,CAAC,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK,GAAG;AAAA,MACxC,QAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,MAAM;AAAA,QACN,QAAQ,IAAI,UAAU;AAAA,QACtB,SAAS,KAAK,KAAK,QAAQ;AAAA,MAC/B,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IACA,OAAO;AAAA;AAAA,CAEd;AACM,IAAM,+BAAkC,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAAA,EACvF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,OAAO;AAAA,EACZ,KAAK,KAAK,MAAM;AAAA,EAChB,KAAK,YAAY,CAAC,SAAS;AAAA,IACvB,IAAI,OAAO,SAAS,YAAY;AAAA,MAC5B,MAAM,IAAI,MAAM,4CAA4C;AAAA,IAChE;AAAA,IACA,OAAO,QAAS,IAAI,MAAM;AAAA,MACtB,MAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,OAAO,IAAI,IAAI;AAAA,MACpE,MAAM,SAAS,QAAQ,MAAM,MAAM,MAAM,UAAU;AAAA,MACnD,IAAI,KAAK,KAAK,QAAQ;AAAA,QAClB,OAAO,MAAM,KAAK,KAAK,QAAQ,MAAM;AAAA,MACzC;AAAA,MACA,OAAO;AAAA;AAAA;AAAA,EAGf,KAAK,iBAAiB,CAAC,SAAS;AAAA,IAC5B,IAAI,OAAO,SAAS,YAAY;AAAA,MAC5B,MAAM,IAAI,MAAM,iDAAiD;AAAA,IACrE;AAAA,IACA,OAAO,cAAe,IAAI,MAAM;AAAA,MAC5B,MAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,WAAW,KAAK,KAAK,OAAO,IAAI,IAAI;AAAA,MAC/E,MAAM,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,UAAU;AAAA,MACzD,IAAI,KAAK,KAAK,QAAQ;AAAA,QAClB,OAAO,MAAM,WAAW,KAAK,KAAK,QAAQ,MAAM;AAAA,MACpD;AAAA,MACA,OAAO;AAAA;AAAA;AAAA,EAGf,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,IAAI,OAAO,QAAQ,UAAU,YAAY;AAAA,MACrC,QAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO,QAAQ;AAAA,QACf;AAAA,MACJ,CAAC;AAAA,MACD,OAAO;AAAA,IACX;AAAA,IAEA,MAAM,mBAAmB,KAAK,KAAK,UAAU,KAAK,KAAK,OAAO,KAAK,IAAI,SAAS;AAAA,IAChF,IAAI,kBAAkB;AAAA,MAClB,QAAQ,QAAQ,KAAK,eAAe,QAAQ,KAAK;AAAA,IACrD,EACK;AAAA,MACD,QAAQ,QAAQ,KAAK,UAAU,QAAQ,KAAK;AAAA;AAAA,IAEhD,OAAO;AAAA;AAAA,EAEX,KAAK,QAAQ,IAAI,SAAS;AAAA,IACtB,MAAM,IAAI,KAAK;AAAA,IACf,IAAI,MAAM,QAAQ,KAAK,EAAE,GAAG;AAAA,MACxB,OAAO,IAAI,EAAE;AAAA,QACT,MAAM;AAAA,QACN,OAAO,IAAI,UAAU;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,KAAK;AAAA,UACZ,MAAM,KAAK;AAAA,QACf,CAAC;AAAA,QACD,QAAQ,KAAK,KAAK;AAAA,MACtB,CAAC;AAAA,IACL;AAAA,IACA,OAAO,IAAI,EAAE;AAAA,MACT,MAAM;AAAA,MACN,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK,KAAK;AAAA,IACtB,CAAC;AAAA;AAAA,EAEL,KAAK,SAAS,CAAC,WAAW;AAAA,IACtB,MAAM,IAAI,KAAK;AAAA,IACf,OAAO,IAAI,EAAE;AAAA,MACT,MAAM;AAAA,MACN,OAAO,KAAK,KAAK;AAAA,MACjB;AAAA,IACJ,CAAC;AAAA;AAAA,EAEL,OAAO;AAAA,CACV;AACM,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EACrF,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,OAAO,QAAQ,QAAQ,QAAQ,KAAK,EAAE,KAAK,CAAC,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC;AAAA;AAAA,CAEtH;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,SAAS,KAAK,MAAM,GAAG;AAAA,EAIlB,WAAW,KAAK,MAAM,aAAa,MAAM;AAAA,IAC1C,MAAM,IAAI;AAAA,IACV,IAAI,CAAC,EAAE;AAAA,MACH,EAAE,eAAe,IAAI,OAAO;AAAA,IAChC,OAAO,EAAE;AAAA,GACZ;AAAA,EACI,WAAW,KAAK,MAAM,WAAW,MAAM,KAAK,KAAK,WAAW,MAAM,OAAO;AAAA,EACzE,WAAW,KAAK,MAAM,cAAc,MAAM,KAAK,KAAK,WAAW,MAAM,UAAU;AAAA,EAC/E,WAAW,KAAK,MAAM,SAAS,MAAM,KAAK,KAAK,WAAW,MAAM,SAAS,SAAS;AAAA,EAClF,WAAW,KAAK,MAAM,UAAU,MAAM,KAAK,KAAK,WAAW,MAAM,UAAU,SAAS;AAAA,EACzF,KAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,KAAK,KAAK;AAAA,IACxB,OAAO,MAAM,KAAK,IAAI,SAAS,GAAG;AAAA;AAAA,CAEzC;AACM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC5E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC/B,SAAS,KAAK,MAAM,GAAG;AAAA,EACvB,KAAK,KAAK,QAAQ,CAAC,SAAS,MAAM;AAAA,IAC9B,OAAO;AAAA;AAAA,EAEX,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,IAAI,IAAI,GAAG,KAAK;AAAA,IACtB,IAAI,aAAa,SAAS;AAAA,MACtB,OAAO,EAAE,KAAK,CAAC,OAAM,mBAAmB,IAAG,SAAS,OAAO,IAAI,CAAC;AAAA,IACpE;AAAA,IACA,mBAAmB,GAAG,SAAS,OAAO,IAAI;AAAA,IAC1C;AAAA;AAAA,CAEP;AACD,SAAS,kBAAkB,CAAC,QAAQ,SAAS,OAAO,MAAM;AAAA,EACtD,IAAI,CAAC,QAAQ;AAAA,IACT,MAAM,OAAO;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,MAAM,CAAC,GAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,CAAE;AAAA,MACpC,UAAU,CAAC,KAAK,KAAK,IAAI;AAAA,IAE7B;AAAA,IACA,IAAI,KAAK,KAAK,IAAI;AAAA,MACd,KAAK,SAAS,KAAK,KAAK,IAAI;AAAA,IAChC,QAAQ,OAAO,KAAU,MAAM,IAAI,CAAC;AAAA,EACxC;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5rEJ,IAAM,QAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,sBAAM,MAAM,wCAAU;AAAA,IACtC,MAAM,EAAE,MAAM,4BAAO,MAAM,wCAAU;AAAA,IACrC,OAAO,EAAE,MAAM,4BAAO,MAAM,wCAAU;AAAA,IACtC,KAAK,EAAE,MAAM,4BAAO,MAAM,wCAAU;AAAA,EACxC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,0KAA4C,OAAM,uFAA2B;AAAA,QACxF;AAAA,QACA,OAAO,+JAAiC,uFAA2B;AAAA,MACvE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,+JAAsC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACnF,OAAO,uPAAwD,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC1F,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,qJAAiC,OAAM,UAAU,0CAAY,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC1H,OAAO,oJAAgC,OAAM,UAAU,0CAAY,OAAO,OAAM,QAAQ,SAAS;AAAA,MACrG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,2HAA2B,OAAM,gDAAkB,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACxG;AAAA,QACA,OAAO,2HAA2B,OAAM,gDAAkB,OAAO,OAAM,QAAQ,SAAS;AAAA,MAC5F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gJAAiC,OAAM;AAAA,QAClD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sJAAkC,OAAO;AAAA,QACpD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qJAAiC,OAAO;AAAA,QACnD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uKAAoC,OAAO;AAAA,QACtD,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,0LAAwC,OAAM;AAAA,WACpD;AAAA,QACD,OAAO,2BAAM,OAAM,KAAK,SAAS,IAAI,iBAAO,8BAAU,OAAM,KAAK,SAAS,IAAI,WAAM,OAAY,WAAW,OAAM,MAAM,SAAI;AAAA,WAC1H;AAAA,QACD,OAAO,2FAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,2FAAoB,OAAM;AAAA;AAAA,QAEjC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,MAAM;AAAA,EACvB;AAAA;;ACvGJ,IAAM,SAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,sBAAW;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAW;AAAA,IACvC,OAAO,EAAE,MAAM,WAAW,MAAM,sBAAW;AAAA,IAC3C,KAAK,EAAE,MAAM,WAAW,MAAM,sBAAW;AAAA,EAC7C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,wEAAsC,OAAM,wBAAwB;AAAA,QAC/E;AAAA,QACA,OAAO,6DAA2B,wBAAwB;AAAA,MAC9D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,6DAAgC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC7E,OAAO,4FAAqD,WAAW,OAAM,QAAQ,GAAG;AAAA,WACvF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,+CAAwB,OAAM,UAAU,qBAAW,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC/G,OAAO,+CAAwB,OAAM,UAAU,qBAAW,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC3F;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,4CAAwB,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC5F,OAAO,4CAAwB,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MAChF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gCAAgB,OAAO;AAAA,QAClC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gCAAgB,OAAO;AAAA,QAClC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gCAAgB,OAAO;AAAA,QAClC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+BAAe,OAAO;AAAA,QACjC,OAAO,oBAAS,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC7D;AAAA,WACK;AAAA,QACD,OAAO,oCAAe,OAAM;AAAA,WAC3B;AAAA,QACD,OAAO,0BAAiB,OAAM,KAAK,SAAS,IAAI,QAAQ,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAC9F;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,OAAM;AAAA,EACvB;AAAA;;ACtGJ,SAAS,mBAAmB,CAAC,OAAO,KAAK,KAAK,MAAM;AAAA,EAChD,MAAM,WAAW,KAAK,IAAI,KAAK;AAAA,EAC/B,MAAM,YAAY,WAAW;AAAA,EAC7B,MAAM,gBAAgB,WAAW;AAAA,EACjC,IAAI,iBAAiB,MAAM,iBAAiB,IAAI;AAAA,IAC5C,OAAO;AAAA,EACX;AAAA,EACA,IAAI,cAAc,GAAG;AAAA,IACjB,OAAO;AAAA,EACX;AAAA,EACA,IAAI,aAAa,KAAK,aAAa,GAAG;AAAA,IAClC,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAEX,IAAM,SAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,sJAAuC,OAAM,8DAAsB;AAAA,QAC9E;AAAA,QACA,OAAO,2IAA4B,8DAAsB;AAAA,MAC7D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,iJAAkC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC/E,OAAO,mMAA4C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC9E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,MAAM,WAAW,OAAO,OAAM,OAAO;AAAA,UACrC,MAAM,OAAO,oBAAoB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,UAC7F,OAAO,yJAAgC,OAAM,UAAU,iGAAsB,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK;AAAA,QAClI;AAAA,QACA,OAAO,yJAAgC,OAAM,UAAU,0HAA2B,MAAM,OAAM,QAAQ,SAAS;AAAA,MACnH;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,MAAM,WAAW,OAAO,OAAM,OAAO;AAAA,UACrC,MAAM,OAAO,oBAAoB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,UAC7F,OAAO,6IAA8B,OAAM,qDAAkB,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK;AAAA,QAClH;AAAA,QACA,OAAO,6IAA8B,OAAM,8EAAuB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACnG;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gNAA0C,OAAO;AAAA,QAC5D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,kOAA6C,OAAO;AAAA,QAC/D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mMAAuC,OAAO;AAAA,QACzD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yPAAgD,OAAO;AAAA,QAClE,OAAO,sEAAc,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAClE;AAAA,WACK;AAAA,QACD,OAAO,yMAAwC,OAAM;AAAA,WACpD;AAAA,QACD,OAAO,4EAAe,OAAM,KAAK,SAAS,IAAI,mCAAU,+BAAgB,WAAW,OAAM,MAAM,IAAI;AAAA,WAClG;AAAA,QACD,OAAO,sGAAqB,OAAM;AAAA,WACjC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,oIAA0B,OAAM;AAAA;AAAA,QAEvC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,OAAM;AAAA,EACvB;AAAA;;ACzJJ,IAAM,SAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAU,MAAM,0DAAa;AAAA,IAC7C,MAAM,EAAE,MAAM,kCAAQ,MAAM,0DAAa;AAAA,IACzC,OAAO,EAAE,MAAM,oDAAW,MAAM,0DAAa;AAAA,IAC7C,KAAK,EAAE,MAAM,oDAAW,MAAM,0DAAa;AAAA,EAC/C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,0IAAqC,OAAM,wDAAqB;AAAA,QAC3E;AAAA,QACA,OAAO,+HAA0B,wDAAqB;AAAA,MAC1D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,+HAA+B,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC5E,OAAO,iLAAyC,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC3E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,gIAA2B,OAAM,UAAU,8GAAyB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAChI,OAAO,gIAA2B,OAAM,UAAU,4FAAsB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,0HAA0B,OAAM,kEAAqB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACzG;AAAA,QACA,OAAO,0HAA0B,OAAM,gDAAkB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC1F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,mLAAsC,OAAO;AAAA,QACxD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yLAAuC,OAAO;AAAA,QACzD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4KAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,kLAAqC,OAAO;AAAA,QACvD,IAAI,cAAc;AAAA,QAClB,IAAI,OAAO,WAAW;AAAA,UAClB,cAAc;AAAA,QAClB,IAAI,OAAO,WAAW;AAAA,UAClB,cAAc;AAAA,QAClB,IAAI,OAAO,WAAW;AAAA,UAClB,cAAc;AAAA,QAClB,IAAI,OAAO,WAAW;AAAA,UAClB,cAAc;AAAA,QAClB,IAAI,OAAO,WAAW;AAAA,UAClB,cAAc;AAAA,QAClB,OAAO,GAAG,eAAe,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACtE;AAAA,WACK;AAAA,QACD,OAAO,uNAA4C,OAAM;AAAA,WACxD;AAAA,QACD,OAAO,qEAAa,OAAM,KAAK,SAAS,IAAI,WAAM,8BAAU,OAAM,KAAK,SAAS,IAAI,uBAAQ,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAClI;AAAA,QACD,OAAO,0FAAmB,OAAM;AAAA,WAC/B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,kHAAuB,OAAM;AAAA;AAAA,QAEpC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,OAAM;AAAA,EACvB;AAAA;;ACrHJ,IAAM,SAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAY,MAAM,WAAW;AAAA,IAC7C,MAAM,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,IACxC,OAAO,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC5C,KAAK,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,EAC9C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,2CAAuC,OAAM,wBAAwB;AAAA,QAChF;AAAA,QACA,OAAO,gCAA4B,wBAAwB;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,gCAAiC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC9E,OAAO,2CAAyC,WAAW,OAAM,QAAQ,KAAK;AAAA,WAC7E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,mBAAe;AAAA,QAC7C,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,8BAA8B,OAAM,UAAU,4BAAwB,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACnI,OAAO,8BAA8B,OAAM,UAAU,kBAAkB,OAAO,OAAM,QAAQ,SAAS;AAAA,MACzG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,mBAAe;AAAA,QAC7C,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,+BAA+B,OAAM,wBAAoB,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC9G;AAAA,QACA,OAAO,+BAA+B,OAAM,cAAc,OAAO,OAAM,QAAQ,SAAS;AAAA,MAC5F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,6CAAsC,OAAO;AAAA,QACxD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uCAAmC,OAAO;AAAA,QACrD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qCAAiC,OAAO;AAAA,QACnD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sDAA+C,OAAO;AAAA,QACjE,OAAO,2BAAuB,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC3E;AAAA,WACK;AAAA,QACD,OAAO,kDAAwC,OAAM;AAAA,WACpD;AAAA,QACD,OAAO,OAAO,OAAM,KAAK,SAAS,IAAI,MAAM,mBAAmB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WACnI;AAAA,QACD,OAAO,sBAAkB,OAAM;AAAA,WAC9B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,wBAAoB,OAAM;AAAA;AAAA,QAEjC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,OAAM;AAAA,EACvB;AAAA;;ACxGJ,IAAM,SAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAQ,MAAM,SAAM;AAAA,IACpC,MAAM,EAAE,MAAM,cAAQ,MAAM,SAAM;AAAA,IAClC,OAAO,EAAE,MAAM,cAAQ,MAAM,SAAM;AAAA,IACnC,KAAK,EAAE,MAAM,cAAQ,MAAM,SAAM;AAAA,EACrC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,sDAAuC,OAAM,2BAAsB;AAAA,QAC9E;AAAA,QACA,OAAO,2CAA4B,2BAAsB;AAAA,MAC7D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,2CAAiC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC9E,OAAO,iEAAkD,WAAW,OAAM,QAAQ,GAAG;AAAA,WACpF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,4CAA2B,OAAM,UAAU,4BAAsB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC7H;AAAA,QACA,OAAO,4CAA2B,OAAM,UAAU,4BAAsB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,2CAA0B,OAAM,UAAU,4BAAsB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC5H;AAAA,QACA,OAAO,2CAA0B,OAAM,UAAU,4BAAsB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACxG;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8DAAqC,OAAO;AAAA,QACvD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0DAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qDAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6DAAyC,OAAO;AAAA,QAC3D,OAAO,yBAAkB,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACtE;AAAA,WACK;AAAA,QACD,OAAO,yDAAoC,OAAM;AAAA,WAChD;AAAA,QACD,OAAO,gCAAsB,WAAW,OAAM,MAAM,IAAI;AAAA,WACvD;AAAA,QACD,OAAO,8BAAkB,OAAM;AAAA,WAC9B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,yBAAqB,OAAM;AAAA;AAAA,QAElC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,OAAM;AAAA,EACvB;AAAA;;AC5GJ,IAAM,SAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,IACtC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,IAC9C,KAAK,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,EAChD;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,yCAAyC,OAAM,iBAAiB;AAAA,QAC3E;AAAA,QACA,OAAO,8BAA8B,iBAAiB;AAAA,MAC1D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,gCAAiC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC9E,OAAO,+CAAgD,WAAW,OAAM,QAAQ,GAAG;AAAA,WAClF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,IAAI;AAAA,UACA,OAAO,wBAAwB,UAAU,WAAW,OAAO,QAAQ,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACzH,OAAO,wBAAwB,UAAU,iBAAiB,OAAO,OAAM,QAAQ,SAAS;AAAA,MAC5F;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,IAAI,QAAQ;AAAA,UACR,OAAO,yBAAyB,UAAU,OAAO,QAAQ,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACvG;AAAA,QACA,OAAO,yBAAyB,gBAAgB,OAAO,OAAM,QAAQ,SAAS;AAAA,MAClF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oCAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,kCAAkC,OAAO;AAAA,QACpD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mCAAmC,OAAO;AAAA,QACrD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4CAAwC,OAAO;AAAA,QAC1D,OAAO,WAAW,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,OAAO,2CAAuC,OAAM;AAAA,WACnD;AAAA,QACD,OAAO,GAAG,OAAM,KAAK,SAAS,IAAI,sBAAkB,sBAAwB,WAAW,OAAM,MAAM,IAAI;AAAA,WACtG;AAAA,QACD,OAAO,sBAAkB,OAAM;AAAA,WAC9B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,sBAAkB,OAAM;AAAA;AAAA,QAE/B,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,OAAM;AAAA,EACvB;AAAA;;AChHJ,IAAM,SAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,IAC5C,MAAM,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,IACxC,OAAO,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC5C,KAAK,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,EAC9C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,6CAAyC,OAAM,sBAAsB;AAAA,QAChF;AAAA,QACA,OAAO,kCAA8B,sBAAsB;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,kCAAmC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAChF,OAAO,0CAA2C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC7E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,8BAA0B,OAAM,UAAU,UAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAChH,OAAO,8BAA0B,OAAM,UAAU,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5F;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,4BAA4B,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAChG;AAAA,QACA,OAAO,4BAA4B,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MACpF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mCAA+B,OAAO;AAAA,QACjD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mCAA+B,OAAO;AAAA,QACjD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+BAA2B,OAAO;AAAA,QAC7C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yCAAqC,OAAO;AAAA,QACvD,OAAO,gBAAY,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAChE;AAAA,WACK;AAAA,QACD,OAAO,8CAA0C,OAAM;AAAA,WACtD;AAAA,QACD,OAAO,GAAG,OAAM,KAAK,SAAS,IAAI,4BAAwB,+BAAiC,WAAW,OAAM,MAAM,IAAI;AAAA,WACrH;AAAA,QACD,OAAO,iCAA0B,OAAM;AAAA,WACtC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,yBAAqB,OAAM;AAAA;AAAA,QAElC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,OAAM;AAAA,EACvB;AAAA;;ACzGJ,IAAM,SAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gEAAa,MAAM,wCAAU;AAAA,IAC7C,MAAM,EAAE,MAAM,SAAS,MAAM,wCAAS;AAAA,IACtC,OAAO,EAAE,MAAM,oDAAW,MAAM,wCAAU;AAAA,IAC1C,KAAK,EAAE,MAAM,oDAAW,MAAM,wCAAU;AAAA,IACxC,KAAK,EAAE,MAAM,4EAAe,MAAM,wCAAU;AAAA,EAChD;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,OAAO,OAAM,aAAa,YAAY,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UACrE,OAAO,yKAA2C,OAAM,wDAAqB;AAAA,QACjF;AAAA,QACA,OAAO,8JAAgC,wDAAqB;AAAA,MAChE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,8JAAqC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAClF,OAAO,oMAA6C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC/E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,+HAA0B,OAAM,UAAU,oEAAkB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACxH,OAAO,+HAA0B,OAAM,UAAU,0EAAmB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACrG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,yHAAyB,OAAM,gDAAkB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACrG;AAAA,QACA,OAAO,yHAAyB,OAAM,sDAAmB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC1F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,oOAA+C,OAAO;AAAA,QACjE;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sPAAkD,OAAO;AAAA,QACpE,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mOAA8C,OAAO;AAAA,QAChE,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uSAA2D,OAAO;AAAA,QAC7E,OAAO,sDAAa,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACjE;AAAA,WACK;AAAA,QACD,OAAO,8QAAsD,OAAM;AAAA,WAClE;AAAA,QACD,OAAO,uCAAQ,OAAM,KAAK,SAAS,IAAI,WAAM,0CAAY,OAAM,KAAK,SAAS,IAAI,iBAAO,aAAa,WAAW,OAAM,MAAM,IAAI;AAAA,WAC/H;AAAA,QACD,OAAO,6GAAuB,OAAM;AAAA,WACnC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,iGAAqB,OAAM;AAAA;AAAA,QAElC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,OAAM;AAAA,EACvB;AAAA;;AC1GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,IAC9C,MAAM,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACvC,OAAO,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACxC,KAAK,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACtC,KAAK,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,EAC5C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EAEA,MAAM,iBAAiB;AAAA,IAEnB,KAAK;AAAA,EAET;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,OAAO,2BAA2B,sBAAsB;AAAA,MAC5D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,2BAAgC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC7E,OAAO,mCAAwC,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC1E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,qBAAqB,OAAM,UAAU,mBAAmB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACpH,OAAO,qBAAqB,OAAM,UAAU,iBAAiB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC9F;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,uBAAuB,OAAM,kBAAkB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACnG;AAAA,QACA,OAAO,uBAAuB,OAAM,gBAAgB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACrF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,oCAAoC,OAAO;AAAA,QACtD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,kCAAkC,OAAO;AAAA,QACpD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,iCAAiC,OAAO;AAAA,QACnD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sCAAsC,OAAO;AAAA,QACxD,OAAO,WAAW,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,OAAO,yCAAyC,OAAM;AAAA,WACrD;AAAA,QACD,OAAO,mBAAmB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAC9F;AAAA,QACD,OAAO,kBAAkB,OAAM;AAAA,WAC9B;AAAA,QACD,IAAI,OAAM,WAAW,MAAM,QAAQ,OAAM,OAAO,KAAK,OAAM,QAAQ,SAAS,GAAG;AAAA,UAC3E,MAAM,OAAO,OAAM,QAAQ,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK;AAAA,UAC1D,OAAO,yCAAyC;AAAA,QACpD;AAAA,QACA,OAAO;AAAA,WACN;AAAA,QACD,OAAO,oBAAoB,OAAM;AAAA;AAAA,QAEjC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC9GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,IAC3C,MAAM,EAAE,MAAM,WAAW,MAAM,OAAO;AAAA,IACtC,OAAO,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,IAC1C,KAAK,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,EAC5C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,6CAAuC,OAAM,4BAAuB;AAAA,QAC/E;AAAA,QACA,OAAO,kCAA4B,4BAAuB;AAAA,MAC9D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,kCAAiC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC9E,OAAO,yCAAwC,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC1E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,iCAA2B,OAAM,UAAU,iBAAiB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACxH,OAAO,iCAA2B,OAAM,UAAU,iBAAiB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACpG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,oCAA8B,OAAM,eAAe,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACvG;AAAA,QACA,OAAO,oCAA8B,OAAM,eAAe,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC3F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,kDAA4C,OAAO;AAAA,QAC9D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+CAAyC,OAAO;AAAA,QAC3D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yCAAyC,OAAO;AAAA,QAC3D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oDAAoD,OAAO;AAAA,QACtE,OAAO,YAAY,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAChE;AAAA,WACK;AAAA,QACD,OAAO,uCAAuC,OAAM;AAAA,WACnD;AAAA,QACD,OAAO,WAAW,OAAM,KAAK,SAAS,IAAI,MAAM,kBAAY,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAChI;AAAA,QACD,OAAO,4BAAsB,OAAM;AAAA,WAClC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,sBAAsB,OAAM;AAAA;AAAA,QAEnC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC1GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,QAAQ;AAAA,IAC5C,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,+CAA2C,OAAM,sBAAsB;AAAA,QAClF;AAAA,QACA,OAAO,oCAAgC,sBAAsB;AAAA,MACjE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,oCAAqC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAClF,OAAO,6CAA2C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC7E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,IAAI;AAAA,UACA,OAAO,qCAAqC,UAAU,mBAAmB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC9H,OAAO,qCAAqC,UAAU,iBAAiB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACxG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,IAAI,QAAQ;AAAA,UACR,OAAO,yCAAqC,kBAAkB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC3G;AAAA,QACA,OAAO,yCAAqC,gBAAgB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC7F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0CAAsC,OAAO;AAAA,QACxD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yCAAqC,OAAO;AAAA,QACvD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qCAAiC,OAAO;AAAA,QACnD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uDAAgD,OAAO;AAAA,QAClE,OAAO,eAAW,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,OAAO,kDAAwC,OAAM;AAAA,WACpD;AAAA,QACD,OAAO,QAAQ,OAAM,KAAK,SAAS,IAAI,MAAM,iBAAiB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAClI;AAAA,QACD,OAAO,wBAAoB,eAAe,OAAM,WAAW,OAAM;AAAA,WAChE;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,wBAAoB,eAAe,OAAM,WAAW,OAAM;AAAA;AAAA,QAEjE,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACjIJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAU,MAAM,0DAAa;AAAA,IAC7C,MAAM,EAAE,MAAM,4BAAO,MAAM,0DAAa;AAAA,IACxC,OAAO,EAAE,MAAM,4BAAO,MAAM,0DAAa;AAAA,IACzC,KAAK,EAAE,MAAM,4BAAO,MAAM,0DAAa;AAAA,EAC3C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,0IAAqC,OAAM,uDAAoB;AAAA,QAC1E;AAAA,QACA,OAAO,+HAA0B,uDAAoB;AAAA,MACzD;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW,GAAG;AAAA,UAC3B,OAAO,+HAA+B,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC5E;AAAA,QACA,OAAO,+JAAsC,WAAW,OAAM,QAAQ,GAAG;AAAA,WACxE,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,sDAAa,OAAM,UAAU,6DAAgB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACzG;AAAA,QACA,OAAO,sDAAa,OAAM,UAAU,6DAAgB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACrF;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,sDAAa,OAAM,mCAAe,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACtF;AAAA,QACA,OAAO,sDAAa,OAAM,mCAAe,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC1E;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,+GAAyB,OAAO;AAAA,QAC3C;AAAA,QACA,IAAI,OAAO,WAAW,aAAa;AAAA,UAC/B,OAAO,+GAAyB,OAAO;AAAA,QAC3C;AAAA,QACA,IAAI,OAAO,WAAW,YAAY;AAAA,UAC9B,OAAO,2HAA2B,OAAO;AAAA,QAC7C;AAAA,QACA,IAAI,OAAO,WAAW,SAAS;AAAA,UAC3B,OAAO,6IAA8B,OAAO;AAAA,QAChD;AAAA,QACA,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,oHAAyB,OAAM;AAAA,WACrC;AAAA,QACD,OAAO,2BAAM,OAAM,KAAK,SAAS,IAAI,uBAAQ,4CAAmB,WAAW,OAAM,MAAM,IAAI;AAAA,WAC1F;AAAA,QACD,OAAO,8EAAiB,OAAM;AAAA,WAC7B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,0FAAmB,OAAM;AAAA;AAAA,QAEhC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC/GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAU,SAAS,cAAc;AAAA,IACjD,MAAM,EAAE,MAAM,SAAS,SAAS,YAAY;AAAA,IAC5C,OAAO,EAAE,MAAM,WAAW,SAAS,SAAS;AAAA,IAC5C,KAAK,EAAE,MAAM,WAAW,SAAS,SAAS;AAAA,IAC1C,QAAQ,EAAE,MAAM,IAAI,SAAS,QAAQ;AAAA,IACrC,QAAQ,EAAE,MAAM,IAAI,SAAS,uBAAuB;AAAA,IACpD,KAAK,EAAE,MAAM,IAAI,SAAS,gBAAgB;AAAA,IAC1C,MAAM,EAAE,MAAM,IAAI,SAAS,6BAAa;AAAA,EAC5C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,8CAA8C,OAAM,iBAAiB;AAAA,QAChF;AAAA,QACA,OAAO,mCAAmC,iBAAiB;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,yCAAuC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACpF,OAAO,0DAA2D,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC7F,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,gBAAgB,OAAO,0BAAsB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,OAAO,KAAK;AAAA,QAC7G;AAAA,QACA,OAAO,qCAAiC,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzE;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,gBAAgB,OAAO,0BAAsB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,OAAO,KAAK;AAAA,QAC7G;AAAA,QACA,OAAO,qCAAiC,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzE;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2CAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4CAAqC,OAAO;AAAA,QACvD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uDAAuC,OAAO;AAAA,QACzD,IAAI,OAAO,WAAW,SAAS;AAAA,UAC3B,OAAO,gFAA6D,OAAO;AAAA,QAC/E;AAAA,QACA,OAAO,gBAAgB,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACpE;AAAA,WACK;AAAA,QACD,OAAO,2CAAuC,OAAM;AAAA,WACnD;AAAA,QACD,OAAO,GAAG,OAAM,KAAK,SAAS,IAAI,0BAA0B,uBAA4B,WAAW,OAAM,MAAM,IAAI;AAAA,WAClH;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO;AAAA;AAAA,QAEP,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC7GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAa,MAAM,QAAQ;AAAA,IAC3C,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,kBAAW,MAAM,QAAQ;AAAA,IACxC,KAAK,EAAE,MAAM,kBAAW,MAAM,QAAQ;AAAA,EAC1C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,IACL,UAAU;AAAA,EACd;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,mCAA+B,OAAM,qBAAqB;AAAA,QACrE;AAAA,QACA,OAAO,wBAAoB,qBAAqB;AAAA,MACpD;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,wBAAyB,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACtE,OAAO,sCAA2C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC7E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,gBAAgB,eAAe,OAAM,WAAW,iBAAiB,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC5I,OAAO,gBAAgB,eAAe,OAAM,WAAW,yBAAqB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC7G;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,gBAAgB,eAAe,OAAM,WAAW,iBAAiB,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACpI,OAAO,gBAAgB,eAAe,OAAM,WAAW,yBAAqB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC7G;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4CAAwC,OAAO;AAAA,QAC1D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8CAA0C,OAAO;AAAA,QAC5D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sCAAkC,OAAO;AAAA,QACpD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uDAAgD,OAAO;AAAA,QAClE,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,iDAA6C,OAAM;AAAA,WACzD;AAAA,QACD,OAAO,SAAK,OAAM,KAAK,SAAS,IAAI,MAAM,kBAAkB,OAAM,KAAK,SAAS,IAAI,MAAM,QAAa,WAAW,OAAM,MAAM,IAAI;AAAA,WACjI;AAAA,QACD,OAAO,wBAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,wBAAwB,OAAM;AAAA;AAAA,QAErC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC1HJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAa,MAAM,QAAQ;AAAA,IAC3C,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,kBAAW,MAAM,QAAQ;AAAA,IACxC,KAAK,EAAE,MAAM,kBAAW,MAAM,QAAQ;AAAA,EAC1C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,2CAAuC,OAAM,qBAAkB;AAAA,QAC1E;AAAA,QACA,OAAO,gCAA4B,qBAAkB;AAAA,MACzD;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,gCAAiC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC9E,OAAO,yDAA8D,WAAW,OAAM,QAAQ,GAAG;AAAA,WAChG,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,WAAK;AAAA,QACnC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,4BAA4B,OAAM,UAAU,mBAAmB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACnH,OAAO,4BAA4B,OAAM,UAAU,oBAAoB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACxG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,WAAK;AAAA,QACnC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,4BAA4B,OAAM,cAAc,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACpG;AAAA,QACA,OAAO,4BAA4B,OAAM,eAAe,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,4CAAwC,OAAO;AAAA,QAC1D;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8CAA0C,OAAO;AAAA,QAC5D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sCAAkC,OAAO;AAAA,QACpD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mDAA+C,OAAO;AAAA,QACjE,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,iDAA6C,OAAM;AAAA,WACzD;AAAA,QACD,OAAO,SAAK,OAAM,KAAK,SAAS,IAAI,MAAM,kBAAkB,OAAM,KAAK,SAAS,IAAI,MAAM,QAAa,WAAW,OAAM,MAAM,IAAI;AAAA,WACjI;AAAA,QACD,OAAO,wBAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,wBAAwB,OAAM;AAAA;AAAA,QAErC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,aAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACxGJ,IAAM,UAAQ,MAAM;AAAA,EAEhB,MAAM,YAAY;AAAA,IACd,QAAQ,EAAE,OAAO,wCAAS,QAAQ,IAAI;AAAA,IACtC,QAAQ,EAAE,OAAO,4BAAO,QAAQ,IAAI;AAAA,IACpC,SAAS,EAAE,OAAO,iEAAc,QAAQ,IAAI;AAAA,IAC5C,QAAQ,EAAE,OAAO,UAAU,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,kCAAQ,QAAQ,IAAI;AAAA,IACnC,OAAO,EAAE,OAAO,4BAAO,QAAQ,IAAI;AAAA,IACnC,QAAQ,EAAE,OAAO,8CAAU,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,gDAAiB,QAAQ,IAAI;AAAA,IAC5C,WAAW,EAAE,OAAO,8EAA2B,QAAQ,IAAI;AAAA,IAC3D,QAAQ,EAAE,OAAO,iDAAkB,QAAQ,IAAI;AAAA,IAC/C,UAAU,EAAE,OAAO,8CAAU,QAAQ,IAAI;AAAA,IACzC,KAAK,EAAE,OAAO,4BAAY,QAAQ,IAAI;AAAA,IACtC,KAAK,EAAE,OAAO,wCAAc,QAAQ,IAAI;AAAA,IACxC,MAAM,EAAE,OAAO,4BAAO,QAAQ,IAAI;AAAA,IAClC,SAAS,EAAE,OAAO,WAAW,QAAQ,IAAI;AAAA,IACzC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,SAAS,EAAE,OAAO,4DAAc,QAAQ,IAAI;AAAA,IAC5C,OAAO,EAAE,OAAO,sBAAM,QAAQ,IAAI;AAAA,EACtC;AAAA,EAEA,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,kCAAQ,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC7D,MAAM,EAAE,MAAM,wCAAS,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC5D,OAAO,EAAE,MAAM,wCAAS,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC7D,KAAK,EAAE,MAAM,wCAAS,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC3D,QAAQ,EAAE,MAAM,IAAI,YAAY,sBAAM,WAAW,2BAAO;AAAA,EAC5D;AAAA,EAEA,MAAM,YAAY,CAAC,MAAO,IAAI,UAAU,KAAK;AAAA,EAC7C,MAAM,YAAY,CAAC,MAAM;AAAA,IACrB,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,IAAI;AAAA,MACA,OAAO,EAAE;AAAA,IAEb,OAAO,KAAK,UAAU,QAAQ;AAAA;AAAA,EAElC,MAAM,eAAe,CAAC,MAAM,SAAG,UAAU,CAAC;AAAA,EAC1C,MAAM,UAAU,CAAC,MAAM;AAAA,IACnB,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,SAAS,GAAG,UAAU;AAAA,IAC5B,OAAO,WAAW,MAAM,kEAAe;AAAA;AAAA,EAE3C,MAAM,YAAY,CAAC,WAAW;AAAA,IAC1B,IAAI,CAAC;AAAA,MACD,OAAO;AAAA,IACX,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO,EAAE,OAAO,sBAAM,QAAQ,IAAI;AAAA,IAClC,OAAO,EAAE,OAAO,uEAAe,QAAQ,IAAI;AAAA,IAC3C,KAAK,EAAE,OAAO,qDAAY,QAAQ,IAAI;AAAA,IACtC,OAAO,EAAE,OAAO,yCAAU,QAAQ,IAAI;AAAA,IACtC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,QAAQ,EAAE,OAAO,UAAU,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,OAAO,EAAE,OAAO,SAAS,QAAQ,IAAI;AAAA,IACrC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,OAAO,EAAE,OAAO,SAAS,QAAQ,IAAI;AAAA,IACrC,UAAU,EAAE,OAAO,+DAAiB,QAAQ,IAAI;AAAA,IAChD,MAAM,EAAE,OAAO,sCAAY,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,0BAAU,QAAQ,IAAI;AAAA,IACrC,UAAU,EAAE,OAAO,6CAAc,QAAQ,IAAI;AAAA,IAC7C,MAAM,EAAE,OAAO,uCAAa,QAAQ,IAAI;AAAA,IACxC,MAAM,EAAE,OAAO,uCAAa,QAAQ,IAAI;AAAA,IACxC,QAAQ,EAAE,OAAO,iCAAY,QAAQ,IAAI;AAAA,IACzC,QAAQ,EAAE,OAAO,iCAAY,QAAQ,IAAI;AAAA,IACzC,QAAQ,EAAE,OAAO,0EAAkB,QAAQ,IAAI;AAAA,IAC/C,WAAW,EAAE,OAAO,wIAA8B,QAAQ,IAAI;AAAA,IAC9D,aAAa,EAAE,OAAO,6CAAc,QAAQ,IAAI;AAAA,IAChD,MAAM,EAAE,OAAO,kCAAa,QAAQ,IAAI;AAAA,IACxC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,WAAW,EAAE,OAAO,sBAAM,QAAQ,IAAI;AAAA,IACtC,UAAU,EAAE,OAAO,sBAAM,QAAQ,IAAI;AAAA,IACrC,WAAW,EAAE,OAAO,sBAAM,QAAQ,IAAI;AAAA,IACtC,aAAa,EAAE,OAAO,sBAAM,QAAQ,IAAI;AAAA,IACxC,WAAW,EAAE,OAAO,sBAAM,QAAQ,IAAI;AAAA,EAC1C;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QAEjB,MAAM,cAAc,OAAM;AAAA,QAC1B,MAAM,WAAW,eAAe,eAAe,OAAO,UAAU,WAAW;AAAA,QAE3E,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB,UAAU,eAAe,SAAS;AAAA,QACnF,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,gIAAqC,OAAM,4CAAmB;AAAA,QACzE;AAAA,QACA,OAAO,qHAA0B,4CAAmB;AAAA,MACxD;AAAA,WACK,iBAAiB;AAAA,QAClB,IAAI,OAAM,OAAO,WAAW,GAAG;AAAA,UAC3B,OAAO,8IAAoC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACjF;AAAA,QAEA,MAAM,cAAc,OAAM,OAAO,IAAI,CAAC,MAAW,mBAAmB,CAAC,CAAC;AAAA,QACtE,IAAI,OAAM,OAAO,WAAW,GAAG;AAAA,UAC3B,OAAO,kLAAqC,YAAY,mBAAS,YAAY;AAAA,QACjF;AAAA,QAEA,MAAM,YAAY,YAAY,YAAY,SAAS;AAAA,QACnD,MAAM,aAAa,YAAY,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI;AAAA,QACrD,OAAO,kLAAqC,2BAAiB;AAAA,MACjE;AAAA,WACK,WAAW;AAAA,QACZ,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,UAAU,aAAa,OAAM,UAAU,OAAO;AAAA,QACpD,IAAI,OAAM,WAAW,UAAU;AAAA,UAE3B,OAAO,GAAG,QAAQ,aAAa,kDAAc,yEAAuB,OAAM,QAAQ,SAAS,KAAK,QAAQ,QAAQ,MAAM,OAAM,YAAY,0CAAY,sDAAc,KAAK;AAAA,QAC3K;AAAA,QACA,IAAI,OAAM,WAAW,UAAU;AAAA,UAE3B,MAAM,aAAa,OAAM,YAAY,mEAAgB,OAAM,YAAY,6BAAS,OAAM;AAAA,UACtF,OAAO,gDAAY,mEAAsB;AAAA,QAC7C;AAAA,QACA,IAAI,OAAM,WAAW,WAAW,OAAM,WAAW,OAAO;AAAA,UAEpD,MAAM,OAAO,OAAM,WAAW,QAAQ,mCAAS;AAAA,UAC/C,MAAM,aAAa,OAAM,YACnB,GAAG,OAAM,WAAW,QAAQ,QAAQ,6CACpC,mCAAS,OAAM,WAAW,QAAQ,QAAQ;AAAA,UAChD,OAAO,gDAAY,WAAW,uCAAc,aAAa,KAAK;AAAA,QAClE;AAAA,QACA,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,KAAK,QAAQ,OAAM,UAAU,OAAO;AAAA,QAC1C,IAAI,QAAQ,MAAM;AAAA,UACd,OAAO,GAAG,OAAO,iCAAiB,WAAW,MAAM,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAChG;AAAA,QACA,OAAO,GAAG,QAAQ,aAAa,kDAAc,WAAW,MAAM,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC/F;AAAA,WACK,aAAa;AAAA,QACd,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,UAAU,aAAa,OAAM,UAAU,OAAO;AAAA,QACpD,IAAI,OAAM,WAAW,UAAU;AAAA,UAE3B,OAAO,GAAG,QAAQ,cAAc,4CAAa,yEAAuB,OAAM,QAAQ,SAAS,KAAK,QAAQ,QAAQ,MAAM,OAAM,YAAY,0CAAY,mCAAU,KAAK;AAAA,QACvK;AAAA,QACA,IAAI,OAAM,WAAW,UAAU;AAAA,UAE3B,MAAM,aAAa,OAAM,YAAY,yEAAiB,OAAM,YAAY,mCAAU,OAAM;AAAA,UACxF,OAAO,0CAAW,mEAAsB;AAAA,QAC5C;AAAA,QACA,IAAI,OAAM,WAAW,WAAW,OAAM,WAAW,OAAO;AAAA,UAEpD,MAAM,OAAO,OAAM,WAAW,QAAQ,mCAAS;AAAA,UAE/C,IAAI,OAAM,YAAY,KAAK,OAAM,WAAW;AAAA,YACxC,MAAM,iBAAiB,OAAM,WAAW,QAAQ,+EAAkB;AAAA,YAClE,OAAO,0CAAW,WAAW,uCAAc;AAAA,UAC/C;AAAA,UACA,MAAM,aAAa,OAAM,YACnB,GAAG,OAAM,WAAW,QAAQ,QAAQ,6CACpC,mCAAS,OAAM,WAAW,QAAQ,QAAQ;AAAA,UAChD,OAAO,0CAAW,WAAW,uCAAc,aAAa,KAAK;AAAA,QACjE;AAAA,QACA,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,KAAK,QAAQ,OAAM,UAAU,OAAO;AAAA,QAC1C,IAAI,QAAQ,MAAM;AAAA,UACd,OAAO,GAAG,OAAO,kCAAkB,WAAW,MAAM,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACjG;AAAA,QACA,OAAO,GAAG,QAAQ,cAAc,4CAAa,WAAW,MAAM,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC/F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QAEf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0HAA0B,OAAO;AAAA,QAC5C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gIAA2B,OAAO;AAAA,QAC7C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6GAAuB,OAAO;AAAA,QACzC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uJAA8B,OAAO;AAAA,QAEhD,MAAM,YAAY,iBAAiB,OAAO;AAAA,QAC1C,MAAM,OAAO,WAAW,SAAS,OAAO;AAAA,QACxC,MAAM,SAAS,WAAW,UAAU;AAAA,QACpC,MAAM,YAAY,WAAW,MAAM,mCAAS;AAAA,QAC5C,OAAO,GAAG,qBAAU;AAAA,MACxB;AAAA,WACK;AAAA,QACD,OAAO,uKAAoC,OAAM;AAAA,WAChD;AAAA,QACD,OAAO,2BAAM,OAAM,KAAK,SAAS,IAAI,iBAAO,2CAAa,OAAM,KAAK,SAAS,IAAI,iBAAO,aAAa,WAAW,OAAM,MAAM,IAAI;AAAA,WAC/H,eAAe;AAAA,QAChB,OAAO;AAAA,MACX;AAAA,WACK;AAAA,QACD,OAAO;AAAA,WACN,mBAAmB;AAAA,QACpB,MAAM,QAAQ,aAAa,OAAM,UAAU,OAAO;AAAA,QAClD,OAAO,kEAAe;AAAA,MAC1B;AAAA;AAAA,QAEI,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACnNJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACzC,MAAM,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACvC,OAAO,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACvC,KAAK,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,EACzC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,+CAAyC,OAAM,4BAA4B;AAAA,QACtF;AAAA,QACA,OAAO,oCAA8B,4BAA4B;AAAA,MACrE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,yCAAwC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACrF,OAAO,8CAA6C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC/E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,IAAI;AAAA,UACA,OAAO,gCAA0B,UAAU,oBAAoB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACpH,OAAO,gCAA0B,UAAU,qBAAqB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACjG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,IAAI,QAAQ;AAAA,UACR,OAAO,8BAAwB,cAAc,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC1F;AAAA,QACA,OAAO,8BAAwB,eAAe,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC/E;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8CAAwC,OAAO;AAAA,QAC1D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6CAAuC,OAAO;AAAA,QACzD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2CAAqC,OAAO;AAAA,QACvD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4CAA4C,OAAO;AAAA,QAC9D,OAAO,cAAc,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAClE;AAAA,WACK;AAAA,QACD,OAAO,kDAA4C,OAAM;AAAA,WACxD;AAAA,QACD,OAAO,cAAc,OAAM,KAAK,SAAS,IAAI,oBAAc,kBAAkB,WAAW,OAAM,MAAM,IAAI;AAAA,WACvG;AAAA,QACD,OAAO,2BAAqB,eAAe,OAAM,WAAW,OAAM;AAAA,WACjE;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,2BAA2B,eAAe,OAAM,WAAW,OAAM;AAAA;AAAA,QAExE,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACvHJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,SAAS;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,IACrC,OAAO,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,IACtC,KAAK,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,EACxC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,+DAA+C,OAAM,kCAA4B;AAAA,QAC5F;AAAA,QACA,OAAO,oDAAoC,kCAA4B;AAAA,MAC3E;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,oDAAyC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACtF,OAAO,8DAAgD,WAAW,OAAM,QAAQ,GAAG;AAAA,WAClF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,gBAAY,OAAM,UAAU,uCAA2B,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACnH,OAAO,uCAA6B,OAAM,UAAU,8BAAqB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC1G;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,wCAA8B,OAAM,iCAA2B,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACnH;AAAA,QACA,OAAO,wCAA8B,OAAM,uBAAoB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAChG;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8BAAuB,OAAO;AAAA,QACzC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8BAAuB,OAAO;AAAA,QACzC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8BAAuB,OAAO;AAAA,QACzC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6BAAsB,OAAO;AAAA,QACxC,OAAO,qBAAc,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAClE;AAAA,WACK;AAAA,QACD,OAAO,8BAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO,mBAAmB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAC9F;AAAA,QACD,OAAO,2BAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,kCAAqB,OAAM;AAAA;AAAA,QAElC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACzGJ,SAAS,iBAAiB,CAAC,OAAO,KAAK,MAAM;AAAA,EACzC,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,MAAM;AAAA;AAEzC,SAAS,mBAAmB,CAAC,MAAM;AAAA,EAC/B,IAAI,CAAC;AAAA,IACD,OAAO;AAAA,EACX,MAAM,SAAS,CAAC,UAAI,UAAK,UAAK,UAAK,UAAK,gBAAM,QAAG;AAAA,EACjD,MAAM,WAAW,KAAK,KAAK,SAAS;AAAA,EACpC,OAAO,QAAQ,OAAO,SAAS,QAAQ,IAAI,WAAK;AAAA;AAEpD,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,8KAA2C,OAAM,+DAAuB;AAAA,QACnF;AAAA,QACA,OAAO,mKAAgC,+DAAuB;AAAA,MAClE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,mKAAqC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAClF,OAAO,yPAAqD,WAAW,OAAM,QAAQ,GAAG;AAAA,WACvF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,MAAM,WAAW,OAAO,OAAM,OAAO;AAAA,UACrC,MAAM,OAAO,kBAAkB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,UAC1E,OAAO,kLAAqC,oBAAoB,OAAM,UAAU,gCAAO,gDAAa,MAAM,OAAM,QAAQ,SAAS,KAAK;AAAA,QAC1I;AAAA,QACA,OAAO,kLAAqC,oBAAoB,OAAM,UAAU,gCAAO,8BAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MAClI;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,MAAM,WAAW,OAAO,OAAM,OAAO;AAAA,UACrC,MAAM,OAAO,kBAAkB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,UAC1E,OAAO,wLAAsC,oBAAoB,OAAM,MAAM,gDAAa,MAAM,OAAM,QAAQ,SAAS,KAAK;AAAA,QAChI;AAAA,QACA,OAAO,wLAAsC,oBAAoB,OAAM,MAAM,8BAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MACxH;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qHAA0B,OAAO;AAAA,QAC5C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,iIAA4B,OAAO;AAAA,QAC9C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6IAA8B,OAAO;AAAA,QAChD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oKAAiC,OAAO;AAAA,QACnD,OAAO,4BAAO,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC3D;AAAA,WACK;AAAA,QACD,OAAO,2KAAmC,OAAM;AAAA,WAC/C;AAAA,QACD,OAAO,8FAAkB,OAAM,KAAK,SAAS,IAAI,uBAAQ,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAC/F;AAAA,QACD,OAAO,iEAAc,oBAAoB,OAAM,MAAM;AAAA,WACpD;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,2DAAa,oBAAoB,OAAM,MAAM;AAAA;AAAA,QAEpD,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AChJJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC7C,MAAM,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,IACvC,OAAO,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,IACxC,KAAK,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,EAC1C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,4CAA4C,OAAM,sBAAsB;AAAA,QACnF;AAAA,QACA,OAAO,iCAAiC,sBAAsB;AAAA,MAClE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,iCAAsC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACnF,OAAO,mDAAwD,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC1F,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,6BAA6B,OAAM,UAAU,oBAAoB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC7H,OAAO,6BAA6B,OAAM,UAAU,mBAAmB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACxG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,6BAA6B,OAAM,mBAAmB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC1G;AAAA,QACA,OAAO,6BAA6B,OAAM,kBAAkB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC7F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6CAA6C,OAAO;AAAA,QAC/D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8CAA8C,OAAO;AAAA,QAChE,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0CAA0C,OAAO;AAAA,QAC5D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yCAAyC,OAAO;AAAA,QAC3D,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,2CAA2C,OAAM;AAAA,WACvD;AAAA,QACD,OAAO,wBAAwB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WACnG;AAAA,QACD,OAAO,wBAAwB,OAAM;AAAA,WACpC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,wBAAwB,OAAM;AAAA;AAAA,QAErC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACvGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,SAAS,MAAM,aAAS;AAAA,IACxC,MAAM,EAAE,MAAM,WAAO,MAAM,aAAU;AAAA,IACrC,OAAO,EAAE,MAAM,SAAS,MAAM,aAAS;AAAA,IACvC,KAAK,EAAE,MAAM,SAAS,MAAM,aAAS;AAAA,EACzC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,sCAA4B,kDAAyC,OAAM;AAAA,QACtF;AAAA,QACA,OAAO,sCAA4B,uCAA8B;AAAA,MACrE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,qCAAmC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAChF,OAAO,iDAA+C,WAAW,OAAM,QAAQ,GAAG;AAAA,WACjF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,8CAAiC,OAAM,UAAU,gBAAgB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC7H,OAAO,8CAAiC,OAAM,UAAU,iBAAc,MAAM,OAAM,QAAQ,SAAS;AAAA,MACvG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,iDAAiC,OAAM,eAAe,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC1G;AAAA,QACA,OAAO,iDAAiC,OAAM,gBAAa,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,oDAAuC,OAAO;AAAA,QACzD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mDAAsC,OAAO;AAAA,QACxD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mDAAyC,OAAO;AAAA,QAC3D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uDAA6C,OAAO;AAAA,QAC/D,OAAO,SAAS,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC7D;AAAA,WACK;AAAA,QACD,OAAO,mDAAyC,OAAM;AAAA,WACrD;AAAA,QACD,OAAO,gBAAS,OAAM,KAAK,SAAS,IAAI,cAAc,gBAAqB,WAAW,OAAM,MAAM,IAAI;AAAA,WACrG;AAAA,QACD,OAAO,sBAAkB,OAAM;AAAA,WAC9B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,oBAAgB,OAAM;AAAA;AAAA,QAE7B,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC1GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,IACpC,OAAO,EAAE,MAAM,YAAY,MAAM,QAAQ;AAAA,IACzC,KAAK,EAAE,MAAM,YAAY,MAAM,QAAQ;AAAA,EAC3C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,uCAAuC,OAAM,sBAAsB;AAAA,QAC9E;AAAA,QACA,OAAO,4BAA4B,sBAAsB;AAAA,MAC7D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,4BAAiC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC9E,OAAO,sCAA2C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC7E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,kBAAkB,OAAM,UAAU,uBAAuB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACrH,OAAO,kBAAkB,OAAM,UAAU,wBAAwB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAClG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,mBAAmB,OAAM,qBAAqB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAClG;AAAA,QACA,OAAO,mBAAmB,OAAM,sBAAsB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACvF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0CAA0C,OAAO;AAAA,QAC5D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2CAA2C,OAAO;AAAA,QAC7D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uCAAuC,OAAO;AAAA,QACzD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qDAAqD,OAAO;AAAA,QACvE,OAAO,qBAAqB,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACzE;AAAA,WACK;AAAA,QACD,OAAO,iDAAiD,OAAM;AAAA,WAC7D;AAAA,QACD,OAAO,QAAQ,OAAM,KAAK,SAAS,IAAI,MAAM,sBAAsB,OAAM,KAAK,SAAS,IAAI,MAAM,QAAa,WAAW,OAAM,MAAM,IAAI;AAAA,WACxI;AAAA,QACD,OAAO,wBAAwB,OAAM;AAAA,WACpC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,wBAAwB,OAAM;AAAA;AAAA,QAErC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACzGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAK,MAAM,qBAAM;AAAA,IACjC,MAAM,EAAE,MAAM,sBAAM,MAAM,qBAAM;AAAA,IAChC,OAAO,EAAE,MAAM,gBAAK,MAAM,qBAAM;AAAA,IAChC,KAAK,EAAE,MAAM,gBAAK,MAAM,qBAAM;AAAA,EAClC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,8CAAoB,OAAM,uEAAqB;AAAA,QAC1D;AAAA,QACA,OAAO,mCAAS,uEAAqB;AAAA,MACzC;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,mCAAc,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC3D,OAAO,mCAAc,WAAW,OAAM,QAAQ,QAAG;AAAA,WAChD,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,mCAAS;AAAA,QACvC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,yCAAU,OAAM,UAAU,iBAAO,OAAM,QAAQ,SAAS,IAAI,OAAO,QAAQ,iBAAO;AAAA,QAC7F,OAAO,yCAAU,OAAM,UAAU,iBAAO,OAAM,QAAQ,SAAS,IAAI;AAAA,MACvE;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,mCAAS;AAAA,QACvC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,yCAAU,OAAM,eAAU,OAAM,QAAQ,SAAS,IAAI,OAAO,OAAO;AAAA,QAC9E,OAAO,yCAAU,OAAM,eAAU,OAAM,QAAQ,SAAS,IAAI;AAAA,MAChE;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0CAAW,OAAO;AAAA,QAC7B,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0CAAW,OAAO;AAAA,QAC7B,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0CAAW,OAAO;AAAA,QAC7B,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,iEAAc,OAAO;AAAA,QAChC,OAAO,qBAAK,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACzD;AAAA,WACK;AAAA,QACD,OAAO,mCAAS,OAAM;AAAA,WACrB;AAAA,QACD,OAAO,+DAAY,OAAM,KAAK,SAAS,IAAI,WAAM,OAAY,WAAW,OAAM,MAAM,QAAG;AAAA,WACtF;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACxGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAU,MAAM,kFAAiB;AAAA,IACjD,MAAM,EAAE,MAAM,kCAAQ,MAAM,kFAAiB;AAAA,IAC7C,OAAO,EAAE,MAAM,oDAAW,MAAM,kFAAiB;AAAA,IACjD,KAAK,EAAE,MAAM,oDAAW,MAAM,kFAAiB;AAAA,EACnD;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,8KAA2C,OAAM,8DAAsB;AAAA,QAClF;AAAA,QACA,OAAO,mKAAgC,8DAAsB;AAAA,MACjE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,mKAAqC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAClF,OAAO,2NAAgD,WAAW,OAAM,QAAQ,GAAG;AAAA,WAClF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,iJAA6B,OAAM,UAAU,wEAAiB,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACjI,OAAO,iJAA6B,OAAM,UAAU,iGAAsB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC3G;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,6JAA+B,OAAM,UAAU,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAClH;AAAA,QACA,OAAO,6JAA+B,OAAM,mCAAe,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,+JAAiC,OAAO;AAAA,QACnD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,iLAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+JAAiC,OAAO;AAAA,QACnD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uOAA6C,OAAO;AAAA,QAC/D,OAAO,oDAAW,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,OAAO,4IAA6B,OAAM;AAAA,WACzC;AAAA,QACD,OAAO,kFAAgB,OAAM,KAAK,SAAS,IAAI,uBAAQ,aAAa,WAAW,OAAM,MAAM,IAAI;AAAA,WAC9F;AAAA,QACD,OAAO,qGAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,uHAAuB,OAAM;AAAA;AAAA,QAEpC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC7GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAU,MAAM,uCAAS;AAAA,IACzC,MAAM,EAAE,MAAM,gBAAK,MAAM,uCAAS;AAAA,IAClC,OAAO,EAAE,MAAM,4BAAO,MAAM,uCAAS;AAAA,IACrC,KAAK,EAAE,MAAM,4BAAO,MAAM,uCAAS;AAAA,EACvC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,wOAAmD,OAAM,iGAA2B;AAAA,QAC/F;AAAA,QACA,OAAO,6NAAwC,iGAA2B;AAAA,MAC9E;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,6NAA6C,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC1F,OAAO,qPAAiD,WAAW,OAAM,QAAQ,GAAG;AAAA,WACnF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,yFAAkB,OAAM,UAAU,oCAAW,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC1G,OAAO,yFAAkB,OAAM,UAAU,oCAAW,OAAO,OAAM,QAAQ,SAAS;AAAA,MACtF;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,+FAAmB,OAAM,UAAU,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACxF;AAAA,QACA,OAAO,+FAAmB,OAAM,UAAU,OAAO,OAAM,QAAQ,SAAS;AAAA,MAC5E;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,sPAA6C,OAAO;AAAA,QAC/D;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oOAA0C,OAAO;AAAA,QAC5D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gMAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,iWAA8D,OAAO;AAAA,QAChF,OAAO,wFAAiB,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACrE;AAAA,WACK;AAAA,QACD,OAAO,iNAAsC,OAAM;AAAA,WAClD;AAAA,QACD,OAAO,0GAAyB,WAAW,OAAM,MAAM,IAAI;AAAA,WAC1D;AAAA,QACD,OAAO,wIAAyB,OAAM;AAAA,WACrC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,4KAA+B,OAAM;AAAA;AAAA,QAE5C,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;;AC1GJ,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO,WAAG;AAAA;;ACFd,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAK,MAAM,UAAU;AAAA,IACrC,MAAM,EAAE,MAAM,sBAAM,MAAM,UAAU;AAAA,IACpC,OAAO,EAAE,MAAM,UAAI,MAAM,UAAU;AAAA,IACnC,KAAK,EAAE,MAAM,UAAI,MAAM,UAAU;AAAA,EACrC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,+EAA4B,OAAM,6CAAoB;AAAA,QACjE;AAAA,QACA,OAAO,oEAAiB,6CAAoB;AAAA,MAChD;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,iDAAkB,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC/D,OAAO,oCAAe,WAAW,OAAM,QAAQ,eAAK;AAAA,WACnD,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,iBAAM;AAAA,QACpC,MAAM,SAAS,QAAQ,iBAAM,0CAAY;AAAA,QACzC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,OAAO,QAAQ,QAAQ;AAAA,QAC7B,IAAI;AAAA,UACA,OAAO,GAAG,OAAM,UAAU,mDAAe,OAAM,QAAQ,SAAS,IAAI,QAAQ,MAAM;AAAA,QACtF,OAAO,GAAG,OAAM,UAAU,mDAAe,OAAM,QAAQ,SAAS,KAAK,MAAM;AAAA,MAC/E;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,iBAAM;AAAA,QACpC,MAAM,SAAS,QAAQ,iBAAM,0CAAY;AAAA,QACzC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,OAAO,QAAQ,QAAQ;AAAA,QAC7B,IAAI,QAAQ;AAAA,UACR,OAAO,GAAG,OAAM,UAAU,yDAAgB,OAAM,QAAQ,SAAS,IAAI,QAAQ,MAAM;AAAA,QACvF;AAAA,QACA,OAAO,GAAG,OAAM,UAAU,yDAAgB,OAAM,QAAQ,SAAS,KAAK,MAAM;AAAA,MAChF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,2CAAY,OAAO;AAAA,QAC9B;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2CAAY,OAAO;AAAA,QAC9B,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2CAAY,OAAO;AAAA,QAC9B,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6DAAe,OAAO;AAAA,QACjC,OAAO,sBAAM,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC1D;AAAA,WACK;AAAA,QACD,OAAO,oCAAU,OAAM;AAAA,WACtB;AAAA,QACD,OAAO,kDAAmB,WAAW,OAAM,MAAM,IAAI;AAAA,WACpD;AAAA,QACD,OAAO,8BAAS,OAAM;AAAA,WACrB;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,8BAAS,OAAM;AAAA;AAAA,QAEtB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC5GJ,IAAM,2BAA2B,CAAC,SAAS;AAAA,EACvC,OAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA;AAEtD,SAAS,qBAAqB,CAAC,SAAQ;AAAA,EACnC,MAAM,MAAM,KAAK,IAAI,OAAM;AAAA,EAC3B,MAAM,OAAO,MAAM;AAAA,EACnB,MAAM,QAAQ,MAAM;AAAA,EACpB,IAAK,SAAS,MAAM,SAAS,MAAO,SAAS;AAAA,IACzC,OAAO;AAAA,EACX,IAAI,SAAS;AAAA,IACT,OAAO;AAAA,EACX,OAAO;AAAA;AAEX,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ,UAAU,WAAW,gBAAgB;AAAA,IAC5D,MAAM,SAAS,QAAQ,WAAW;AAAA,IAClC,IAAI,WAAW;AAAA,MACX,OAAO;AAAA,IACX,OAAO;AAAA,MACH,MAAM,OAAO,KAAK;AAAA,MAClB,MAAM,OAAO,KAAK,gBAAgB,YAAY,cAAc;AAAA,IAChE;AAAA;AAAA,EAEJ,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,gBAAgB,0CAAoC,OAAM;AAAA,QACrE;AAAA,QACA,OAAO,gBAAgB,+BAAyB;AAAA,MACpD;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,qBAAoB,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACjE,OAAO,oCAA8B,WAAW,OAAM,QAAQ,GAAG;AAAA,WAChE,WAAW;AAAA,QACZ,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,MAAM,SAAS,UAAU,OAAM,QAAQ,sBAAsB,OAAO,OAAM,OAAO,CAAC,GAAG,OAAM,aAAa,OAAO,SAAS;AAAA,QACxH,IAAI,QAAQ;AAAA,UACR,OAAO,GAAG,yBAAyB,UAAU,OAAM,UAAU,mBAAQ,KAAK,OAAO,QAAQ,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACxI,MAAM,MAAM,OAAM,YAAY,qBAAqB;AAAA,QACnD,OAAO,GAAG,yBAAyB,UAAU,OAAM,UAAU,mBAAQ,oBAAe,OAAO,OAAM,QAAQ,SAAS,KAAK,QAAQ;AAAA,MACnI;AAAA,WACK,aAAa;AAAA,QACd,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,MAAM,SAAS,UAAU,OAAM,QAAQ,sBAAsB,OAAO,OAAM,OAAO,CAAC,GAAG,OAAM,aAAa,OAAO,QAAQ;AAAA,QACvH,IAAI,QAAQ;AAAA,UACR,OAAO,GAAG,yBAAyB,UAAU,OAAM,UAAU,mBAAQ,KAAK,OAAO,QAAQ,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACxI,MAAM,MAAM,OAAM,YAAY,0BAAoB;AAAA,QAClD,OAAO,GAAG,yBAAyB,UAAU,OAAM,UAAU,mBAAQ,oBAAe,OAAO,OAAM,QAAQ,SAAS,KAAK,QAAQ;AAAA,MACnI;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,uCAA4B,OAAO;AAAA,QAC9C;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mCAA6B,OAAO;AAAA,QAC/C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sCAA2B,OAAO;AAAA,QAC7C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gCAA0B,OAAO;AAAA,QAC5C,OAAO,eAAe,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACnE;AAAA,WACK;AAAA,QACD,OAAO,mCAAwB,OAAM;AAAA,WACpC;AAAA,QACD,OAAO,kBAAY,OAAM,KAAK,SAAS,IAAI,MAAM,YAAY,OAAM,KAAK,SAAS,IAAI,OAAO,SAAc,WAAW,OAAM,MAAM,IAAI;AAAA,WACpI;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO;AAAA,WACN,mBAAmB;AAAA,QACpB,MAAM,SAAS,eAAe,OAAM,WAAW,OAAM;AAAA,QACrD,OAAO,GAAG,yBAAyB,UAAU,OAAM,UAAU,mBAAQ;AAAA,MACzE;AAAA;AAAA,QAEI,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACxMJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,kCAAQ,MAAM,8CAAW;AAAA,IACzC,MAAM,EAAE,MAAM,kCAAQ,MAAM,8CAAW;AAAA,IACvC,OAAO,EAAE,MAAM,wCAAS,MAAM,8CAAW;AAAA,IACzC,KAAK,EAAE,MAAM,wCAAS,MAAM,8CAAW;AAAA,EAC3C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,qIAAqC,OAAM,wDAAqB;AAAA,QAC3E;AAAA,QACA,OAAO,0HAA0B,wDAAqB;AAAA,MAC1D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,2BAAgC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC7E,OAAO,qKAAuC,WAAW,OAAM,QAAQ,GAAG;AAAA,WACzE,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,4IAA6B,OAAM,UAAU,4FAAsB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC/H,OAAO,4IAA6B,OAAM,UAAU,kGAAuB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5G;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,gIAA2B,OAAM,0CAAiB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACtG;AAAA,QACA,OAAO,gIAA2B,OAAM,gDAAkB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC3F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,+LAAwC,OAAO;AAAA,QAC1D;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yLAAuC,OAAO;AAAA,QACzD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4KAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mOAA8C,OAAO;AAAA,QAChE,OAAO,WAAW,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,OAAO,6KAAqC,OAAM;AAAA,WACjD;AAAA,QACD,OAAO,GAAG,OAAM,KAAK,SAAS,IAAI,8HAAyB,wGAA6B,WAAW,OAAM,MAAM,IAAI;AAAA,WAClH;AAAA,QACD,OAAO,8EAAiB,OAAM;AAAA,WAC7B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,sGAAqB,OAAM;AAAA;AAAA,QAElC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC1GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,IAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,YAAY;AAAA,IACxC,OAAO,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,IAC3C,KAAK,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,EAC7C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,EACZ;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,wCAAwC,OAAM,sBAAsB;AAAA,QAC/E;AAAA,QACA,OAAO,6BAA6B,sBAAsB;AAAA,MAC9D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,6BAAkC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC/E,OAAO,mDAAwD,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC1F,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,2BAA2B,OAAM,UAAU,WAAW,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACjI,OAAO,2BAA2B,OAAM,UAAU,kBAAkB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACrG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,2BAA2B,OAAM,UAAU,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC9G;AAAA,QACA,OAAO,2BAA2B,OAAM,iBAAiB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC1F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2CAA2C,OAAO;AAAA,QAC7D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4CAA4C,OAAO;AAAA,QAC9D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,wCAAwC,OAAO;AAAA,QAC1D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,gDAAgD,OAAO;AAAA,QAClE,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,mCAAmC,OAAM;AAAA,WAC/C;AAAA,QACD,OAAO,yBAA8B,WAAW,OAAM,MAAM,IAAI;AAAA,WAC/D;AAAA,QACD,OAAO,yBAAyB,OAAM;AAAA,WACrC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,yBAAyB,OAAM;AAAA;AAAA,QAEtC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACxGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACxC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,EACZ;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,yCAAyC,OAAM,qBAAqB;AAAA,QAC/E;AAAA,QACA,OAAO,8BAA8B,qBAAqB;AAAA,MAC9D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,8BAAmC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAChF,OAAO,2CAAyC,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC3E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,WAAW,OAAM,WAAW,SAAS,SAAS,OAAM,WAAW,WAAW,SAAS;AAAA,QACzF,IAAI;AAAA,UACA,OAAO,MAAM,0BAA0B,OAAM,UAAU,YAAY,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ,eAAe,OAAO;AAAA,QAC9I,OAAO,MAAM,0BAA0B,OAAM,UAAU,YAAY,MAAM,OAAM,QAAQ,SAAS;AAAA,MACpG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,MAAM,YAAY,OAAM,WAAW,SAAS,UAAU,OAAM,WAAW,WAAW,SAAS;AAAA,QAC3F,IAAI,QAAQ;AAAA,UACR,OAAO,MAAM,2BAA2B,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ,OAAO;AAAA,QACpH;AAAA,QACA,OAAO,MAAM,2BAA2B,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,8BAA8B,OAAO;AAAA,QAChD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6BAA6B,OAAO;AAAA,QAC/C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0BAA0B,OAAO;AAAA,QAC5C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,kDAAkD,OAAO;AAAA,QACpE,OAAO,aAAa,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACjE;AAAA,WACK;AAAA,QACD,OAAO,yCAAyC,OAAM;AAAA,WACrD;AAAA,QACD,OAAO,gBAAgB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAC3F;AAAA,QACD,OAAO,oBAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,uBAAuB,OAAM;AAAA;AAAA,QAEpC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC3GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,UAAM;AAAA,IACpC,MAAM,EAAE,MAAM,SAAS,MAAM,UAAM;AAAA,IACnC,OAAO,EAAE,MAAM,aAAa,MAAM,iBAAa;AAAA,IAC/C,KAAK,EAAE,MAAM,aAAa,MAAM,iBAAa;AAAA,EACjD;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,uCAAuC,OAAM,kBAAkB;AAAA,QAC1E;AAAA,QACA,OAAO,4BAA4B,kBAAkB;AAAA,MACzD;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,4BAAiC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC9E,OAAO,iCAAsC,WAAW,OAAM,QAAQ,GAAG;AAAA,WACxE,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,0BAA0B,OAAM,UAAU,uBAAmB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACzH,OAAO,0BAA0B,OAAM,UAAU,uBAAmB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACrG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,0BAA0B,OAAM,sBAAkB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACtG;AAAA,QACA,OAAO,0BAA0B,OAAM,sBAAkB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC1F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qCAAiC,OAAO;AAAA,QACnD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mCAA+B,OAAO;AAAA,QACjD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oCAAgC,OAAO;AAAA,QAClD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6CAAsC,OAAO;AAAA,QACxD,OAAO,WAAW,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,OAAO,+CAAwC,OAAM;AAAA,WACpD;AAAA,QACD,OAAO,GAAG,OAAM,KAAK,SAAS,IAAI,sBAAkB,uBAAyB,WAAW,OAAM,MAAM,IAAI;AAAA,WACvG;AAAA,QACD,OAAO,uBAAmB,OAAM;AAAA,WAC/B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,mBAAmB,OAAM;AAAA;AAAA,QAEhC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACzGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,sBAAW;AAAA,IACzC,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAW;AAAA,IACvC,OAAO,EAAE,MAAM,SAAS,MAAM,sBAAW;AAAA,IACzC,KAAK,EAAE,MAAM,SAAS,MAAM,sBAAW;AAAA,EAC3C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,qCAAiC,OAAM,yBAAoB;AAAA,QACtE;AAAA,QACA,OAAO,0BAAsB,yBAAoB;AAAA,MACrD;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,0BAA2B,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACxE,OAAO,kCAAgC,WAAW,OAAM,QAAQ,GAAG;AAAA,WAClE,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,sBAAe,OAAM,UAAU,YAAY,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACvG,OAAO,sBAAe,OAAM,UAAU,YAAY,MAAM,OAAM,QAAQ,SAAS;AAAA,MACnF;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,yBAAe,OAAM,WAAW,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACpF;AAAA,QACA,OAAO,yBAAe,OAAM,WAAW,MAAM,OAAM,QAAQ,SAAS;AAAA,MACxE;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oBAAgB,OAAO;AAAA,QAClC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oBAAgB,OAAO;AAAA,QAClC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oBAAgB,OAAO;AAAA,QAClC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mBAAe,OAAO;AAAA,QACjC,OAAO,YAAQ,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC5D;AAAA,WACK;AAAA,QACD,OAAO,uBAAc,OAAM;AAAA,WAC1B;AAAA,QACD,OAAO,2BAAqB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAChG;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,WAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC1GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4BAAO,MAAM,2BAAO;AAAA,IACpC,MAAM,EAAE,MAAM,kCAAQ,MAAM,2BAAO;AAAA,IACnC,OAAO,EAAE,MAAM,4BAAO,MAAM,2BAAO;AAAA,IACnC,KAAK,EAAE,MAAM,4BAAO,MAAM,2BAAO;AAAA,EACrC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,gGAA8B,OAAM,mDAAqB;AAAA,QACpE;AAAA,QACA,OAAO,qFAAmB,mDAAqB;AAAA,MACnD;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW,GAAG;AAAA,UAC3B,OAAO,qFAAwB,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACrE;AAAA,QACA,OAAO,qHAA+B,WAAW,OAAM,QAAQ,GAAG;AAAA,WACjE,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,0CAAW,OAAM,UAAU,6DAAgB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACvG;AAAA,QACA,OAAO,0CAAW,OAAM,UAAU,6DAAgB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACnF;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,sDAAa,OAAM,mCAAe,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACtF;AAAA,QACA,OAAO,sDAAa,OAAM,mCAAe,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC1E;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,iFAAoB,OAAO;AAAA,QACtC;AAAA,QACA,IAAI,OAAO,WAAW,aAAa;AAAA,UAC/B,OAAO,iFAAoB,OAAO;AAAA,QACtC;AAAA,QACA,IAAI,OAAO,WAAW,YAAY;AAAA,UAC9B,OAAO,0EAAkB,OAAO;AAAA,QACpC;AAAA,QACA,IAAI,OAAO,WAAW,SAAS;AAAA,UAC3B,OAAO,gFAAmB,OAAO;AAAA,QACrC;AAAA,QACA,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,gFAAmB,OAAM;AAAA,WAC/B;AAAA,QACD,OAAO,4BAAO,OAAM,KAAK,SAAS,IAAI,+CAAY,+BAAgB,WAAW,OAAM,MAAM,IAAI;AAAA,WAC5F;AAAA,QACD,OAAO,kEAAe,OAAM;AAAA,WAC3B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,kEAAe,OAAM;AAAA;AAAA,QAE5B,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC/GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAS,MAAM,YAAO;AAAA,IACtC,MAAM,EAAE,MAAM,aAAS,MAAM,YAAO;AAAA,IACpC,OAAO,EAAE,MAAM,gBAAY,MAAM,YAAO;AAAA,IACxC,KAAK,EAAE,MAAM,gBAAY,MAAM,YAAO;AAAA,EAC1C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,iEAAsD,OAAM,uBAAuB;AAAA,QAC9F;AAAA,QACA,OAAO,sDAA2C,uBAAuB;AAAA,MAC7E;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,sDAAgD,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC7F,OAAO,+DAAyD,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC3F,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,uDAAkC,OAAM,UAAU,6CAAyB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACvI;AAAA,QACA,OAAO,6CAAkC,OAAM,UAAU,gDAA4B,MAAM,OAAM,QAAQ,SAAS;AAAA,MACtH;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,uDAAkC,OAAM,UAAU,6CAAyB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACvI;AAAA,QACA,OAAO,6CAAkC,OAAM,UAAU,gDAA4B,MAAM,OAAM,QAAQ,SAAS;AAAA,MACtH;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2EAAmD,OAAO;AAAA,QACrE,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+EAAkD,OAAO;AAAA,QACpE,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+DAA4C,OAAO;AAAA,QAC9D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yEAAsD,OAAO;AAAA,QACxE,OAAO,4BAAsB,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC1E;AAAA,WACK;AAAA,QACD,OAAO,sEAAiD,OAAM;AAAA,WAC7D;AAAA,QACD,OAAO,uBAAuB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAClG;AAAA,QACD,OAAO,8BAAwB,OAAM;AAAA,WACpC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,0CAA0B,OAAM;AAAA;AAAA,QAEvC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC1GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,MAAM;AAAA,IAC1C,MAAM,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,IACnC,OAAO,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,IACpC,KAAK,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,EACtC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,yCAAqC,OAAM,sBAAsB;AAAA,QAC5E;AAAA,QACA,OAAO,8BAA0B,sBAAsB;AAAA,MAC3D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,iCAAkC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC/E,OAAO,6CAAwC,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC1E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,8BAA8B,OAAM,UAAU,mBAAmB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC7H,OAAO,8BAA8B,OAAM,UAAU,iBAAiB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACvG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,+BAA+B,OAAM,kBAAkB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC3G;AAAA,QACA,OAAO,+BAA+B,OAAM,gBAAgB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC7F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2CAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yCAAqC,OAAO;AAAA,QACvD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oCAAgC,OAAO;AAAA,QAClD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qDAA8C,OAAO;AAAA,QAChE,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,kDAAwC,OAAM;AAAA,WACpD;AAAA,QACD,OAAO,QAAQ,OAAM,KAAK,SAAS,IAAI,MAAM,kBAAkB,OAAM,KAAK,SAAS,IAAI,MAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WACnI;AAAA,QACD,OAAO,wBAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,wBAAoB,OAAM;AAAA;AAAA,QAEjC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACzGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAa,MAAM,oBAAS;AAAA,IAC5C,MAAM,EAAE,MAAM,eAAS,MAAM,oBAAU;AAAA,IACvC,OAAO,EAAE,MAAM,YAAY,MAAM,oBAAS;AAAA,IAC1C,KAAK,EAAE,MAAM,YAAY,MAAM,oBAAS;AAAA,IACxC,KAAK,EAAE,MAAM,gBAAU,MAAM,oBAAU;AAAA,EAC3C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,OAAO,wCAA6B,oBAAoB;AAAA,MAC5D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,wCAAkC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC/E,OAAO,wDAA6C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC/E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,+BAAyB,OAAM,UAAU,cAAc,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAClI,OAAO,+BAAyB,OAAM,UAAU,0BAAqB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACtG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,8BAAwB,OAAM,UAAU,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC3G;AAAA,QACA,OAAO,8BAAwB,OAAM,sBAAiB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACvF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,yDAAsC,OAAO;AAAA,QACxD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oDAAyC,OAAO;AAAA,QAC3D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mDAAmC,OAAO;AAAA,QACrD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oEAAoD,OAAO;AAAA,QACtE,OAAO,mBAAmB,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvE;AAAA,WACK;AAAA,QACD,OAAO,uDAA4C,OAAM;AAAA,WACxD;AAAA,QACD,OAAO,uBAA4B,WAAW,OAAM,MAAM,IAAI;AAAA,WAC7D;AAAA,QACD,OAAO,6BAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,+BAAsB,OAAM;AAAA;AAAA,QAEnC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACpHJ,SAAS,gBAAgB,CAAC,OAAO,KAAK,KAAK,MAAM;AAAA,EAC7C,MAAM,WAAW,KAAK,IAAI,KAAK;AAAA,EAC/B,MAAM,YAAY,WAAW;AAAA,EAC7B,MAAM,gBAAgB,WAAW;AAAA,EACjC,IAAI,iBAAiB,MAAM,iBAAiB,IAAI;AAAA,IAC5C,OAAO;AAAA,EACX;AAAA,EACA,IAAI,cAAc,GAAG;AAAA,IACjB,OAAO;AAAA,EACX;AAAA,EACA,IAAI,aAAa,KAAK,aAAa,GAAG;AAAA,IAClC,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAEX,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,gJAAsC,OAAM,8DAAsB;AAAA,QAC7E;AAAA,QACA,OAAO,qIAA2B,8DAAsB;AAAA,MAC5D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,qIAAgC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC7E,OAAO,6LAA2C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC7E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,MAAM,WAAW,OAAO,OAAM,OAAO;AAAA,UACrC,MAAM,OAAO,iBAAiB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,UAC1F,OAAO,sNAA2C,OAAM,UAAU,oHAA0B,MAAM,OAAM,QAAQ,SAAS,KAAK;AAAA,QAClI;AAAA,QACA,OAAO,sNAA2C,OAAM,UAAU,qFAAoB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACvH;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,MAAM,WAAW,OAAO,OAAM,OAAO;AAAA,UACrC,MAAM,OAAO,iBAAiB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,UAC1F,OAAO,kOAA6C,OAAM,wEAAsB,MAAM,OAAM,QAAQ,SAAS,KAAK;AAAA,QACtH;AAAA,QACA,OAAO,kOAA6C,OAAM,yCAAgB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC3G;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oMAAwC,OAAO;AAAA,QAC1D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4NAA4C,OAAO;AAAA,QAC9D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uLAAqC,OAAO;AAAA,QACvD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qQAAkD,OAAO;AAAA,QACpE,OAAO,oDAAW,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,OAAO,6LAAsC,OAAM;AAAA,WAClD;AAAA,QACD,OAAO,2EAAc,OAAM,KAAK,SAAS,IAAI,iBAAO,0CAAY,OAAM,KAAK,SAAS,IAAI,WAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WACpI;AAAA,QACD,OAAO,oFAAkB,OAAM;AAAA,WAC9B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,4GAAsB,OAAM;AAAA;AAAA,QAEnC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACzJJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACxC,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,gDAA0C,OAAM,qBAAqB;AAAA,QAChF;AAAA,QACA,OAAO,qCAA+B,qBAAqB;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,qCAAoC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACjF,OAAO,uDAAiD,WAAW,OAAM,QAAQ,GAAG;AAAA,WACnF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,sCAAgC,OAAM,UAAU,oBAAoB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAChI,OAAO,sCAAgC,OAAM,UAAU,cAAc,MAAM,OAAM,QAAQ,SAAS;AAAA,MACtG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,sCAAgC,OAAM,gBAAgB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC1G;AAAA,QACA,OAAO,sCAAgC,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MACxF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,0CAAoC,OAAO;AAAA,QACtD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2CAAqC,OAAO;AAAA,QACvD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mCAAmC,OAAO;AAAA,QACrD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yCAAyC,OAAO;AAAA,QAC3D,OAAO,cAAc,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAClE;AAAA,WACK;AAAA,QACD,OAAO,sDAA2C,OAAM;AAAA,WACvD;AAAA,QACD,OAAO,cAAc,OAAM,KAAK,SAAS,IAAI,kBAAY,kBAAkB,WAAW,OAAM,MAAM,IAAI;AAAA,WACrG;AAAA,QACD,OAAO,2BAAqB,OAAM;AAAA,WACjC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,yBAAyB,OAAM;AAAA;AAAA,QAEtC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC1GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,IACzC,MAAM,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,IACtC,OAAO,EAAE,MAAM,UAAU,MAAM,mBAAe;AAAA,IAC9C,KAAK,EAAE,MAAM,UAAU,MAAM,mBAAe;AAAA,EAChD;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,iDAA0C,OAAM,kBAAkB;AAAA,QAC7E;AAAA,QACA,OAAO,sCAA+B,kBAAkB;AAAA,MAC5D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,sCAAoC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACjF,OAAO,wCAAsC,WAAW,OAAM,QAAQ,GAAG;AAAA,WACxE,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,oCAA0B,OAAM,UAAU,sBAAmB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACzH;AAAA,QACA,OAAO,mCAAyB,OAAM,UAAU,sBAAmB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACpG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,oCAA0B,OAAM,UAAU,sBAAmB,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACjH;AAAA,QACA,OAAO,oCAA0B,OAAM,UAAU,sBAAmB,MAAM,OAAM,QAAQ,SAAS;AAAA,MACrG;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,6CAAmC,OAAO;AAAA,QACrD;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,0CAAmC,OAAO;AAAA,QACrD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6CAAmC,OAAO;AAAA,QACrD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mDAAyC,OAAO;AAAA,QAC3D,OAAO,cAAc,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAClE;AAAA,WACK;AAAA,QACD,OAAO,8CAA0C,OAAM;AAAA,WACtD;AAAA,QACD,OAAO,GAAG,OAAM,KAAK,SAAS,IAAI,sBAAkB,sBAAwB,WAAW,OAAM,MAAM,IAAI;AAAA,WACtG;AAAA,QACD,OAAO,oBAAoB,OAAM,UAAU;AAAA,WAC1C;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,uBAAmB,OAAM,UAAU;AAAA;AAAA,QAE1C,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC3GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4EAAe,MAAM,sHAAuB;AAAA,IAC5D,MAAM,EAAE,MAAM,0DAAY,MAAM,sHAAuB;AAAA,IACvD,OAAO,EAAE,MAAM,gEAAa,MAAM,sHAAuB;AAAA,IACzD,KAAK,EAAE,MAAM,gEAAa,MAAM,sHAAuB;AAAA,EAC3D;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,kNAAiD,OAAM,gFAAyB;AAAA,QAC3F;AAAA,QACA,OAAO,uMAAsC,gFAAyB;AAAA,MAC1E;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,uMAA2C,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACxF,OAAO,mNAA6C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC/E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,2LAAoC,OAAM,UAAU,gDAAa,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC7H;AAAA,QACA,OAAO,2LAAoC,OAAM,UAAU,gDAAa,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzG;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,uMAAsC,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC1G;AAAA,QACA,OAAO,uMAAsC,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC9F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6DAAe,OAAO;AAAA,QACjC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6DAAe,OAAO;AAAA,QACjC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6DAAe,OAAO;AAAA,QACjC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4DAAc,OAAO;AAAA,QAChC,OAAO,kCAAQ,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC5D;AAAA,WACK;AAAA,QACD,OAAO,sDAAa,OAAM;AAAA,WACzB;AAAA,QACD,OAAO,uHAAuB,OAAM,KAAK,SAAS,IAAI,uBAAQ,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WACpG;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC3GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,oDAAW,MAAM,iCAAQ;AAAA,IACzC,MAAM,EAAE,MAAM,4BAAO,MAAM,iCAAQ;AAAA,IACnC,OAAO,EAAE,MAAM,wCAAS,MAAM,iCAAQ;AAAA,IACtC,KAAK,EAAE,MAAM,wCAAS,MAAM,iCAAQ;AAAA,EACxC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,+LAA6C,OAAM,mEAAsB;AAAA,QACpF;AAAA,QACA,OAAO,oLAAkC,mEAAsB;AAAA,MACnE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,8HAA8B,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC3E,OAAO,sMAA0C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC5E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,+CAAW;AAAA,QACzC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,2DAAa,OAAM,UAAU,sDAAc,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACxG,OAAO,2DAAa,OAAM,UAAU,sDAAc,OAAO,OAAM,QAAQ,SAAS;AAAA,MACpF;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,2DAAa;AAAA,QAC3C,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,mFAAiB,OAAM,wCAAe,OAAO,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC3F;AAAA,QACA,OAAO,mFAAiB,OAAM,wCAAe,OAAO,OAAM,QAAQ,SAAS;AAAA,MAC/E;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,2OAA4C,OAAO;AAAA,QAC9D;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qOAA2C,OAAO;AAAA,QAC7D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qLAAmC,OAAO;AAAA,QACrD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sPAA6C,OAAO;AAAA,QAC/D,OAAO,qGAAoB,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACxE;AAAA,WACK;AAAA,QACD,OAAO,gPAA4C,OAAM;AAAA,WACxD;AAAA,QACD,OAAO,iHAA2B,WAAW,OAAM,MAAM,IAAI;AAAA,WAC5D;AAAA,QACD,OAAO,oGAAmB,OAAM;AAAA,WAC/B;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,gHAAqB,OAAM;AAAA;AAAA,QAElC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC3GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,cAAQ;AAAA,IAC1C,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAQ;AAAA,IACpC,OAAO,EAAE,MAAM,eAAM,MAAM,cAAS;AAAA,IACpC,KAAK,EAAE,MAAM,eAAM,MAAM,cAAS;AAAA,EACtC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,+CAAsC,OAAM,yBAAoB;AAAA,QAC3E;AAAA,QACA,OAAO,oCAA2B,yBAAoB;AAAA,MAC1D;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,oCAAgC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC7E,OAAO,4EAAsD,WAAW,OAAM,QAAQ,GAAG;AAAA,WACxF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,gCAAsB,OAAM,UAAU,gBAAW,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC7G,OAAO,gCAAsB,OAAM,UAAU,gBAAW,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzF;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,mCAAsB,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC1F,OAAO,mCAAsB,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC9E;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uBAAmB,OAAO;AAAA,QACrC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uBAAmB,OAAO;AAAA,QACrC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uBAAmB,OAAO;AAAA,QACrC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,sBAAkB,OAAO;AAAA,QACpC,OAAO,eAAW,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC/D;AAAA,WACK;AAAA,QACD,OAAO,0BAAiB,OAAM;AAAA,WAC7B;AAAA,QACD,OAAO,0BAAoB,OAAM,KAAK,SAAS,IAAI,QAAQ,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WACjG;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACtGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,oDAAW,MAAM,uCAAS;AAAA,IAC1C,MAAM,EAAE,MAAM,wCAAS,MAAM,uCAAS;AAAA,IACtC,OAAO,EAAE,MAAM,0DAAY,MAAM,uCAAS;AAAA,IAC1C,KAAK,EAAE,MAAM,0DAAY,MAAM,uCAAS;AAAA,EAC5C;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,6MAAiD,OAAM,8DAAsB;AAAA,QACxF;AAAA,QACA,OAAO,kMAAsC,8DAAsB;AAAA,MACvE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,kMAA2C,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACxF,OAAO,mMAA4C,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC9E,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,+JAAiC,OAAM,UAAU,sDAAc,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC1I,OAAO,+JAAiC,OAAM,UAAU,+EAAmB,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5G;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,mJAA+B,OAAM,UAAU,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAClH;AAAA,QACA,OAAO,mJAA+B,OAAM,mCAAe,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5F;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4NAA4C,OAAO;AAAA,QAC9D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oPAAgD,OAAO;AAAA,QAClE,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,mMAAuC,OAAO;AAAA,QACzD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qQAAkD,OAAO;AAAA,QACpE,OAAO,4EAAe,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACnE;AAAA,WACK;AAAA,QACD,OAAO,qNAA0C,OAAM;AAAA,WACtD;AAAA,QACD,OAAO,0GAAoB,OAAM,KAAK,SAAS,IAAI,WAAM,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAC/F;AAAA,QACD,OAAO,4GAAsB,OAAM;AAAA,WAClC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,8HAAyB,OAAM;AAAA;AAAA,QAEtC,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;;ACxGJ,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO,WAAG;AAAA;;ACFd,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4BAAO,MAAM,2BAAO;AAAA,IACpC,MAAM,EAAE,MAAM,kCAAQ,MAAM,2BAAO;AAAA,IACnC,OAAO,EAAE,MAAM,kCAAQ,MAAM,2BAAO;AAAA,IACpC,KAAK,EAAE,MAAM,kCAAQ,MAAM,2BAAO;AAAA,EACtC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,4DAAwB,OAAM,oEAAuB;AAAA,QAChE;AAAA,QACA,OAAO,iDAAa,oEAAuB;AAAA,MAC/C;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,iDAAkB,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC/D,OAAO,gDAAiB,WAAW,OAAM,QAAQ,GAAG;AAAA,WACnD,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,0CAAW,OAAM,UAAU,iDAAc,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QACrG,OAAO,0CAAW,OAAM,UAAU,iDAAc,MAAM,OAAM,QAAQ,SAAS;AAAA,MACjF;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,sDAAa,OAAM,uBAAa,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACpF;AAAA,QACA,OAAO,sDAAa,OAAM,uBAAa,MAAM,OAAM,QAAQ,SAAS;AAAA,MACxE;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,uDAAc,OAAO;AAAA,QAChC;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uDAAc,OAAO;AAAA,QAChC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,uDAAc,OAAO;AAAA,QAChC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qFAAmB,OAAO;AAAA,QACrC,OAAO,sBAAM,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC1D;AAAA,WACK;AAAA,QACD,OAAO,gDAAY,OAAM;AAAA,WACxB;AAAA,QACD,OAAO,oFAAkB,OAAM,KAAK,SAAS,IAAI,WAAM,OAAY,WAAW,OAAM,MAAM,SAAI;AAAA,WAC7F;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC3GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,SAAS,MAAM,sBAAgB;AAAA,IAC/C,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAgB;AAAA,IAC5C,OAAO,EAAE,MAAM,WAAW,MAAM,sBAAgB;AAAA,IAChD,KAAK,EAAE,MAAM,WAAW,MAAM,sBAAgB;AAAA,IAC9C,KAAK,EAAE,MAAM,SAAS,MAAM,sBAAgB;AAAA,EAChD;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,mDAAwC,OAAM,4BAA4B;AAAA,QACrF;AAAA,QACA,OAAO,wCAA6B,4BAA4B;AAAA,MACpE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,wCAAkC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC/E,OAAO,6DAAuD,WAAW,OAAM,QAAQ,GAAG;AAAA,WACzF,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,wBAAwB,OAAM,UAAU,YAAY,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ,OAAO;AAAA,QACvH,OAAO,wBAAwB,OAAM,UAAU,YAAY,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5F;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,yBAAyB,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ,OAAO;AAAA,QAC5G;AAAA,QACA,OAAO,yBAAyB,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MACjF;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8BAAmB,OAAO;AAAA,QACrC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8BAAmB,OAAO;AAAA,QACrC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8BAAmB,OAAO;AAAA,QACrC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,6BAAkB,OAAO;AAAA,QACpC,OAAO,uBAAY,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAChE;AAAA,WACK;AAAA,QACD,OAAO,8BAAmB,OAAM;AAAA,WAC/B;AAAA,QACD,OAAO,sBAAgB,OAAM,KAAK,SAAS,IAAI,QAAQ,OAAY,WAAW,OAAM,MAAM,IAAI;AAAA,WAC7F;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC3GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAQ,MAAM,QAAK;AAAA,IACnC,MAAM,EAAE,MAAM,QAAQ,MAAM,QAAI;AAAA,IAChC,OAAO,EAAE,MAAM,qBAAU,MAAM,QAAK;AAAA,IACpC,KAAK,EAAE,MAAM,qBAAU,MAAM,QAAK;AAAA,EACtC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,iFAA4C,OAAM,2CAAuB;AAAA,QACpF;AAAA,QACA,OAAO,sEAAiC,2CAAuB;AAAA,MACnE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,sEAAsC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QACnF,OAAO,wGAA6D,WAAW,OAAM,QAAQ,GAAG;AAAA,WAC/F,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,uCAAoB,OAAM,UAAU,qBAAa,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC5H,OAAO,uCAAoB,OAAM,UAAU,qBAAa,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzF;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,uCAAoB,OAAM,UAAU,OAAO,QAAQ,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACvG;AAAA,QACA,OAAO,uCAAoB,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5E;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,qFAAyC,OAAO;AAAA,QAC3D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+EAA0C,OAAO;AAAA,QAC5D,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,iEAAoC,OAAO;AAAA,QACtD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+EAAwC,OAAO;AAAA,QAC1D,OAAO,GAAG,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACvD;AAAA,WACK;AAAA,QACD,OAAO,gFAAsC,OAAM;AAAA,WAClD;AAAA,QACD,OAAO,6DAAkC,WAAW,OAAM,MAAM,IAAI;AAAA,WACnE;AAAA,QACD,OAAO,2CAA0B,OAAM;AAAA,WACtC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,mDAA6B,OAAM;AAAA;AAAA,QAE1C,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACzGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAK,MAAM,eAAK;AAAA,IAChC,MAAM,EAAE,MAAM,gBAAK,MAAM,eAAK;AAAA,IAC9B,OAAO,EAAE,MAAM,UAAI,MAAM,eAAK;AAAA,IAC9B,KAAK,EAAE,MAAM,UAAI,MAAM,eAAK;AAAA,EAChC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,yDAAqB,OAAM,0CAAiB;AAAA,QACvD;AAAA,QACA,OAAO,8CAAU,0CAAiB;AAAA,MACtC;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,8CAAe,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC5D,OAAO,sEAAmB,WAAW,OAAM,QAAQ,GAAG;AAAA,WACrD,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,8CAAU,OAAM,UAAU,YAAO,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAC7F,OAAO,8CAAU,OAAM,UAAU,YAAO,MAAM,OAAM,QAAQ,SAAS;AAAA,MACzE;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,8CAAU,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QAC9E;AAAA,QACA,OAAO,8CAAU,OAAM,UAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MAClE;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2DAAa,OAAO;AAAA,QAC/B,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2DAAa,OAAO;AAAA,QAC/B,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,iEAAc,OAAO;AAAA,QAChC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,8FAAkB,OAAO;AAAA,QACpC,OAAO,eAAI,iBAAiB,OAAO,WAAW,OAAM;AAAA,MACxD;AAAA,WACK;AAAA,QACD,OAAO,oDAAW,OAAM;AAAA,WACvB;AAAA,QACD,OAAO,8CAAoB,WAAW,OAAM,MAAM,IAAI;AAAA,WACrD;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,aAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;AC1GJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAK,MAAM,eAAK;AAAA,IAChC,MAAM,EAAE,MAAM,sBAAM,MAAM,eAAK;AAAA,IAC/B,OAAO,EAAE,MAAM,gBAAK,MAAM,eAAK;AAAA,IAC/B,KAAK,EAAE,MAAM,gBAAK,MAAM,eAAK;AAAA,EACjC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,2EAAwB,OAAM,oCAAgB;AAAA,QACzD;AAAA,QACA,OAAO,gEAAa,oCAAgB;AAAA,MACxC;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,gEAAkB,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAC/D,OAAO,8FAAuB,WAAW,OAAM,QAAQ,GAAG;AAAA,WACzD,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,8CAAU,OAAM,UAAU,yBAAU,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ;AAAA,QAChG,OAAO,8CAAU,OAAM,UAAU,yBAAU,MAAM,OAAM,QAAQ,SAAS;AAAA,MAC5E;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI,QAAQ;AAAA,UACR,OAAO,8CAAU,OAAM,uBAAa,MAAM,OAAM,QAAQ,SAAS,KAAK,OAAO;AAAA,QACjF;AAAA,QACA,OAAO,8CAAU,OAAM,uBAAa,MAAM,OAAM,QAAQ,SAAS;AAAA,MACrE;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW,eAAe;AAAA,UACjC,OAAO,2DAAa,OAAO;AAAA,QAC/B;AAAA,QACA,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,2DAAa,OAAO;AAAA,QAC/B,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,iEAAc,OAAO;AAAA,QAChC,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4EAAe,OAAO;AAAA,QACjC,OAAO,sBAAM,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC1D;AAAA,WACK;AAAA,QACD,OAAO,0DAAY,OAAM;AAAA,WACxB;AAAA,QACD,OAAO,6CAAS,OAAM,KAAK,SAAS,IAAI,WAAM,WAAW,WAAW,OAAM,MAAM,QAAG;AAAA,WAClF;AAAA,QACD,OAAO,GAAG,OAAM;AAAA,WACf;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,GAAG,OAAM;AAAA;AAAA,QAEhB,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,aAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACxGJ,IAAM,UAAQ,MAAM;AAAA,EAChB,MAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAM,MAAM,QAAK;AAAA,IACjC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAI;AAAA,IACjC,OAAO,EAAE,MAAM,QAAQ,MAAM,QAAI;AAAA,IACjC,KAAK,EAAE,MAAM,QAAQ,MAAM,QAAI;AAAA,EACnC;AAAA,EACA,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,OAAO,QAAQ,WAAW;AAAA;AAAA,EAE9B,MAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAAA,EACA,MAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACA,OAAO,CAAC,WAAU;AAAA,IACd,QAAQ,OAAM;AAAA,WACL,gBAAgB;AAAA,QACjB,MAAM,WAAW,eAAe,OAAM,aAAa,OAAM;AAAA,QACzD,MAAM,eAAoB,WAAW,OAAM,KAAK;AAAA,QAChD,MAAM,WAAW,eAAe,iBAAiB;AAAA,QACjD,IAAI,SAAS,KAAK,OAAM,QAAQ,GAAG;AAAA,UAC/B,OAAO,2EAAyC,OAAM,uCAAuB;AAAA,QACjF;AAAA,QACA,OAAO,gEAA8B,uCAAuB;AAAA,MAChE;AAAA,WACK;AAAA,QACD,IAAI,OAAM,OAAO,WAAW;AAAA,UACxB,OAAO,gEAAmC,mBAAmB,OAAM,OAAO,EAAE;AAAA,QAChF,OAAO,wEAAoC,WAAW,OAAM,QAAQ,GAAG;AAAA,WACtE,WAAW;AAAA,QACZ,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,kEAA8B,OAAM,UAAU,SAAS,OAAO,QAAQ,MAAM,OAAM,WAAW,OAAO;AAAA,QAC/G,OAAO,4DAA2B,MAAM,OAAM;AAAA,MAClD;AAAA,WACK,aAAa;AAAA,QACd,MAAM,MAAM,OAAM,YAAY,OAAO;AAAA,QACrC,MAAM,SAAS,UAAU,OAAM,MAAM;AAAA,QACrC,IAAI;AAAA,UACA,OAAO,sDAA4B,OAAM,UAAU,OAAO,QAAQ,MAAM,OAAM,WAAW,OAAO;AAAA,QACpG,OAAO,gDAAyB,MAAM,OAAM;AAAA,MAChD;AAAA,WACK,kBAAkB;AAAA,QACnB,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,4HAAqC,OAAO;AAAA,QACvD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,yGAAmC,OAAO;AAAA,QACrD,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,oFAA2B,OAAO;AAAA,QAC7C,IAAI,OAAO,WAAW;AAAA,UAClB,OAAO,+GAAoC,OAAO;AAAA,QACtD,OAAO,uBAAS,iBAAiB,OAAO,WAAW,OAAM;AAAA,MAC7D;AAAA,WACK;AAAA,QACD,OAAO,8GAAyC,OAAM;AAAA,WACrD;AAAA,QACD,OAAO,4CAAqB,WAAW,OAAM,MAAM,IAAI;AAAA,WACtD;AAAA,QACD,OAAO,mDAAoB,OAAM;AAAA,WAChC;AAAA,QACD,OAAO;AAAA,WACN;AAAA,QACD,OAAO,qCAAiB,OAAM;AAAA;AAAA,QAE9B,OAAO;AAAA;AAAA;AAAA;AAIvB,SAAO,UAAiB,GAAG;AAAA,EACvB,OAAO;AAAA,IACH,aAAa,QAAM;AAAA,EACvB;AAAA;;ACzGJ,IAAI;AACG,IAAM,UAAU,OAAO,WAAW;AAClC,IAAM,SAAS,OAAO,UAAU;AAAA;AAChC,MAAM,aAAa;AAAA,EACtB,WAAW,GAAG;AAAA,IACV,KAAK,OAAO,IAAI;AAAA,IAChB,KAAK,SAAS,IAAI;AAAA;AAAA,EAEtB,GAAG,CAAC,WAAW,OAAO;AAAA,IAClB,MAAM,OAAO,MAAM;AAAA,IACnB,KAAK,KAAK,IAAI,QAAQ,IAAI;AAAA,IAC1B,IAAI,QAAQ,OAAO,SAAS,YAAY,QAAQ,MAAM;AAAA,MAClD,KAAK,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,IACnC;AAAA,IACA,OAAO;AAAA;AAAA,EAEX,KAAK,GAAG;AAAA,IACJ,KAAK,OAAO,IAAI;AAAA,IAChB,KAAK,SAAS,IAAI;AAAA,IAClB,OAAO;AAAA;AAAA,EAEX,MAAM,CAAC,QAAQ;AAAA,IACX,MAAM,OAAO,KAAK,KAAK,IAAI,MAAM;AAAA,IACjC,IAAI,QAAQ,OAAO,SAAS,YAAY,QAAQ,MAAM;AAAA,MAClD,KAAK,OAAO,OAAO,KAAK,EAAE;AAAA,IAC9B;AAAA,IACA,KAAK,KAAK,OAAO,MAAM;AAAA,IACvB,OAAO;AAAA;AAAA,EAEX,GAAG,CAAC,QAAQ;AAAA,IAGR,MAAM,IAAI,OAAO,KAAK;AAAA,IACtB,IAAI,GAAG;AAAA,MACH,MAAM,KAAK,KAAM,KAAK,IAAI,CAAC,KAAK,CAAC,EAAG;AAAA,MACpC,OAAO,GAAG;AAAA,MACV,MAAM,IAAI,KAAK,OAAO,KAAK,KAAK,IAAI,MAAM,EAAE;AAAA,MAC5C,OAAO,OAAO,KAAK,CAAC,EAAE,SAAS,IAAI;AAAA,IACvC;AAAA,IACA,OAAO,KAAK,KAAK,IAAI,MAAM;AAAA;AAAA,EAE/B,GAAG,CAAC,QAAQ;AAAA,IACR,OAAO,KAAK,KAAK,IAAI,MAAM;AAAA;AAEnC;AAEO,SAAS,QAAQ,GAAG;AAAA,EACvB,OAAO,IAAI;AAAA;AAAA,CAEd,MAAK,YAAY,yBAAyB,IAAG,uBAAuB,SAAS;AACvE,IAAM,iBAAiB,WAAW;;AC7ClC,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,cAAc,CAAC,QAAO,QAAQ;AAAA,EAC1C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,QAAO,QAAQ;AAAA,EAClC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,OACD,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,OACD,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,OACD,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO,QAAQ;AAAA,EAChC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAM,CAAC,QAAO,QAAQ;AAAA,EAClC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAQE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,QAAO,QAAQ;AAAA,EAClC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO,QAAQ;AAAA,EAChC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,QAAO,QAAQ;AAAA,EAClC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO,QAAQ;AAAA,EAChC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,UAAU,CAAC,QAAO,QAAQ;AAAA,EACtC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO,QAAQ;AAAA,EAChC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,gBAAgB;AAAA,EACzB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,aAAa;AACjB;AAEO,SAAS,YAAY,CAAC,QAAO,QAAQ;AAAA,EACxC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,OACH,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,QAAQ;AAAA,EACpC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,QAAQ;AAAA,EACpC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,OACH,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,YAAY,CAAC,QAAO,QAAQ;AAAA,EACxC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,OACD,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,cAAc,CAAC,QAAO,QAAQ;AAAA,EAC1C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,CAAC;AAAA,OACD,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO,QAAQ;AAAA,EAChC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,QAAQ;AAAA,EACpC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,QAAQ;AAAA,EACpC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,QAAO,QAAQ;AAAA,EAClC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,QAAQ;AAAA,EACpC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,eAAe,CAAC,QAAO,QAAQ;AAAA,EAC3C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,cAAc,CAAC,QAAO,QAAQ;AAAA,EAC1C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,QAAO,QAAQ;AAAA,EAClC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,WAAU,CAAC,QAAO,QAAQ;AAAA,EACtC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,MAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO;AAAA,EACxB,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,EACV,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO;AAAA,EAC5B,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,EACV,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,QAAO,QAAQ;AAAA,EAClC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,YAAY,CAAC,QAAO,QAAQ;AAAA,EACxC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO,QAAQ;AAAA,EAChC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,GAAG,CAAC,OAAO,QAAQ;AAAA,EAC/B,OAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,OAAO,QAAQ;AAAA,EAChC,OAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AAAA;AAME,SAAS,GAAG,CAAC,OAAO,QAAQ;AAAA,EAC/B,OAAO,IAAW,qBAAqB;AAAA,IACnC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,OAAO,QAAQ;AAAA,EAChC,OAAO,IAAW,qBAAqB;AAAA,IACnC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AAAA;AAME,SAAS,SAAS,CAAC,QAAQ;AAAA,EAC9B,OAAO,IAAI,GAAG,MAAM;AAAA;AAIjB,SAAS,SAAS,CAAC,QAAQ;AAAA,EAC9B,OAAO,IAAI,GAAG,MAAM;AAAA;AAIjB,SAAS,YAAY,CAAC,QAAQ;AAAA,EACjC,OAAO,KAAK,GAAG,MAAM;AAAA;AAIlB,SAAS,YAAY,CAAC,QAAQ;AAAA,EACjC,OAAO,KAAK,GAAG,MAAM;AAAA;AAGlB,SAAS,WAAW,CAAC,OAAO,QAAQ;AAAA,EACvC,OAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,SAAS,QAAQ;AAAA,EACtC,OAAO,IAAW,iBAAiB;AAAA,IAC/B,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,SAAS,QAAQ;AAAA,EACtC,OAAO,IAAW,iBAAiB;AAAA,IAC/B,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,MAAM,QAAQ;AAAA,EAChC,OAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,UAAU,CAAC,SAAS,QAAQ;AAAA,EACxC,MAAM,KAAK,IAAW,mBAAmB;AAAA,IACrC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA,EACD,OAAO;AAAA;AAGJ,SAAS,UAAU,CAAC,SAAS,QAAQ;AAAA,EACxC,OAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAQ,QAAQ;AAAA,EACpC,OAAO,IAAW,sBAAsB;AAAA,IACpC,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,SAAS,QAAQ;AAAA,EACpC,OAAO,IAAW,eAAe;AAAA,IAC7B,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,UAAU,CAAC,QAAQ;AAAA,EAC/B,OAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,UAAU,CAAC,QAAQ;AAAA,EAC/B,OAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,SAAS,CAAC,UAAU,QAAQ;AAAA,EACxC,OAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,WAAW,CAAC,QAAQ,QAAQ;AAAA,EACxC,OAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,SAAS,CAAC,QAAQ,QAAQ;AAAA,EACtC,OAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,QAAQ;AAAA,OACA,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,SAAS,CAAC,UAAU,QAAQ,QAAQ;AAAA,EAChD,OAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP;AAAA,IACA;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,OAAO,QAAQ;AAAA,EACjC,OAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,UAAU,CAAC,IAAI;AAAA,EAC3B,OAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP;AAAA,EACJ,CAAC;AAAA;AAIE,SAAS,UAAU,CAAC,MAAM;AAAA,EAC7B,OAAO,WAAW,CAAC,UAAU,MAAM,UAAU,IAAI,CAAC;AAAA;AAI/C,SAAS,KAAK,GAAG;AAAA,EACpB,OAAO,WAAW,CAAC,UAAU,MAAM,KAAK,CAAC;AAAA;AAItC,SAAS,YAAY,GAAG;AAAA,EAC3B,OAAO,WAAW,CAAC,UAAU,MAAM,YAAY,CAAC;AAAA;AAI7C,SAAS,YAAY,GAAG;AAAA,EAC3B,OAAO,WAAW,CAAC,UAAU,MAAM,YAAY,CAAC;AAAA;AAI7C,SAAS,QAAQ,GAAG;AAAA,EACvB,OAAO,WAAW,CAAC,UAAe,SAAQ,KAAK,CAAC;AAAA;AAG7C,SAAS,MAAM,CAAC,QAAO,SAAS,QAAQ;AAAA,EAC3C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,OAIQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,QAAO,SAAS,QAAQ;AAAA,EAC3C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,SAAS,IAAI,CAAC,QAAO,SAAS,QAAQ;AAAA,EACzC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,OACH,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,mBAAmB,CAAC,QAAO,eAAe,SAAS,QAAQ;AAAA,EACvE,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,aAAa,CAAC,QAAO,MAAM,OAAO;AAAA,EAC9C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACJ,CAAC;AAAA;AAQE,SAAS,MAAM,CAAC,QAAO,OAAO,eAAe,SAAS;AAAA,EACzD,MAAM,UAAU,yBAAiC;AAAA,EACjD,MAAM,SAAS,UAAU,UAAU;AAAA,EACnC,MAAM,OAAO,UAAU,gBAAgB;AAAA,EACvC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,SAAS,WAAW,QAAQ;AAAA,EACvD,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO,SAAS,WAAW,QAAQ;AAAA,EACpD,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,IAAI,CAAC,QAAO,WAAW,QAAQ;AAAA,EAC3C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ,QAAQ;AAAA,EACzC,MAAM,UAAU,MAAM,QAAQ,MAAM,IAAI,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AAAA,EAYxF,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAUE,SAAS,WAAW,CAAC,QAAO,SAAS,QAAQ;AAAA,EAChD,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,OAAO,QAAQ;AAAA,EAC3C,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,OACrC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,OACE,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,UAAU,CAAC,QAAO,IAAI;AAAA,EAClC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,WAAW;AAAA,EACf,CAAC;AAAA;AAGE,SAAS,SAAS,CAAC,QAAO,WAAW;AAAA,EACxC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,SAAS,CAAC,QAAO,WAAW;AAAA,EACxC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,WAAW,cAAc;AAAA,EACrD,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,QACI,YAAY,GAAG;AAAA,MACf,OAAO,OAAO,iBAAiB,aAAa,aAAa,IAAS,aAAa,YAAY;AAAA;AAAA,EAEnG,CAAC;AAAA;AAGE,SAAS,YAAY,CAAC,QAAO,WAAW,QAAQ;AAAA,EACnD,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,WAAW;AAAA,EACvC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,MAAM,CAAC,QAAO,WAAW,YAAY;AAAA,EACjD,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,YAAa,OAAO,eAAe,aAAa,aAAa,MAAM;AAAA,EACvE,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,KAAK,KAAK;AAAA,EACnC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,SAAS,CAAC,QAAO,WAAW;AAAA,EACxC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,gBAAgB,CAAC,QAAO,OAAO,QAAQ;AAAA,EACnD,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,OACQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,KAAK,CAAC,QAAO,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,QAAQ,CAAC,QAAO,WAAW;AAAA,EACvC,OAAO,IAAI,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,OAAO,CAAC,QAAO,IAAI,SAAS;AAAA,EACxC,MAAM,OAAY,gBAAgB,OAAO;AAAA,EACzC,KAAK,UAAU,KAAK,QAAQ;AAAA,EAC5B,MAAM,SAAS,IAAI,OAAM;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,OACG;AAAA,EACP,CAAC;AAAA,EACD,OAAO;AAAA;AAIJ,SAAS,OAAO,CAAC,QAAO,IAAI,SAAS;AAAA,EACxC,MAAM,SAAS,IAAI,OAAM;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,OACQ,gBAAgB,OAAO;AAAA,EACnC,CAAC;AAAA,EACD,OAAO;AAAA;AAGJ,SAAS,YAAY,CAAC,IAAI,QAAQ;AAAA,EACrC,MAAM,KAAK,OAAO,CAAC,YAAY;AAAA,IAC3B,QAAQ,WAAW,CAAC,WAAU;AAAA,MAC1B,IAAI,OAAO,WAAU,UAAU;AAAA,QAC3B,QAAQ,OAAO,KAAU,MAAM,QAAO,QAAQ,OAAO,GAAG,KAAK,GAAG,CAAC;AAAA,MACrE,EACK;AAAA,QAED,MAAM,SAAS;AAAA,QACf,IAAI,OAAO;AAAA,UACP,OAAO,WAAW;AAAA,QACtB,OAAO,SAAS,OAAO,OAAO;AAAA,QAC9B,OAAO,UAAU,OAAO,QAAQ,QAAQ;AAAA,QACxC,OAAO,SAAS,OAAO,OAAO;AAAA,QAC9B,OAAO,aAAa,OAAO,WAAW,CAAC,GAAG,KAAK,IAAI;AAAA,QACnD,QAAQ,OAAO,KAAU,MAAM,MAAM,CAAC;AAAA;AAAA;AAAA,IAG9C,OAAO,GAAG,QAAQ,OAAO,OAAO;AAAA,KACjC,MAAM;AAAA,EACT,OAAO;AAAA;AAGJ,SAAS,MAAM,CAAC,IAAI,QAAQ;AAAA,EAC/B,MAAM,KAAK,IAAW,UAAU;AAAA,IAC5B,OAAO;AAAA,OACC,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA,EACD,GAAG,KAAK,QAAQ;AAAA,EAChB,OAAO;AAAA;AAGJ,SAAS,QAAQ,CAAC,aAAa;AAAA,EAClC,MAAM,KAAK,IAAW,UAAU,EAAE,OAAO,WAAW,CAAC;AAAA,EACrD,GAAG,KAAK,WAAW;AAAA,IACf,CAAC,SAAS;AAAA,MACN,MAAM,WAAsB,eAAe,IAAI,IAAI,KAAK,CAAC;AAAA,MAC9C,eAAe,IAAI,MAAM,KAAK,UAAU,YAAY,CAAC;AAAA;AAAA,EAExE;AAAA,EACA,GAAG,KAAK,QAAQ,MAAM;AAAA,EACtB,OAAO;AAAA;AAGJ,SAAS,IAAI,CAAC,UAAU;AAAA,EAC3B,MAAM,KAAK,IAAW,UAAU,EAAE,OAAO,OAAO,CAAC;AAAA,EACjD,GAAG,KAAK,WAAW;AAAA,IACf,CAAC,SAAS;AAAA,MACN,MAAM,WAAsB,eAAe,IAAI,IAAI,KAAK,CAAC;AAAA,MAC9C,eAAe,IAAI,MAAM,KAAK,aAAa,SAAS,CAAC;AAAA;AAAA,EAExE;AAAA,EACA,GAAG,KAAK,QAAQ,MAAM;AAAA,EACtB,OAAO;AAAA;AAGJ,SAAS,WAAW,CAAC,SAAS,SAAS;AAAA,EAC1C,MAAM,SAAc,gBAAgB,OAAO;AAAA,EAC3C,IAAI,cAAc,OAAO,UAAU,CAAC,QAAQ,KAAK,OAAO,MAAM,KAAK,SAAS;AAAA,EAC5E,IAAI,aAAa,OAAO,SAAS,CAAC,SAAS,KAAK,MAAM,OAAO,KAAK,UAAU;AAAA,EAC5E,IAAI,OAAO,SAAS,aAAa;AAAA,IAC7B,cAAc,YAAY,IAAI,CAAC,MAAO,OAAO,MAAM,WAAW,EAAE,YAAY,IAAI,CAAE;AAAA,IAClF,aAAa,WAAW,IAAI,CAAC,MAAO,OAAO,MAAM,WAAW,EAAE,YAAY,IAAI,CAAE;AAAA,EACpF;AAAA,EACA,MAAM,YAAY,IAAI,IAAI,WAAW;AAAA,EACrC,MAAM,WAAW,IAAI,IAAI,UAAU;AAAA,EACnC,MAAM,SAAS,QAAQ,SAAiB;AAAA,EACxC,MAAM,WAAW,QAAQ,WAAmB;AAAA,EAC5C,MAAM,UAAU,QAAQ,UAAkB;AAAA,EAC1C,MAAM,eAAe,IAAI,QAAQ,EAAE,MAAM,UAAU,OAAO,OAAO,MAAM,CAAC;AAAA,EACxE,MAAM,gBAAgB,IAAI,SAAS,EAAE,MAAM,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EAC3E,MAAM,QAAQ,IAAI,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,WAAY,CAAC,OAAO,YAAY;AAAA,MAC5B,IAAI,OAAO;AAAA,MACX,IAAI,OAAO,SAAS;AAAA,QAChB,OAAO,KAAK,YAAY;AAAA,MAC5B,IAAI,UAAU,IAAI,IAAI,GAAG;AAAA,QACrB,OAAO;AAAA,MACX,EACK,SAAI,SAAS,IAAI,IAAI,GAAG;AAAA,QACzB,OAAO;AAAA,MACX,EACK;AAAA,QACD,QAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,UAAU;AAAA,UACV,QAAQ,CAAC,GAAG,WAAW,GAAG,QAAQ;AAAA,UAClC,OAAO,QAAQ;AAAA,UACf,MAAM;AAAA,UACN,UAAU;AAAA,QACd,CAAC;AAAA,QACD,OAAO,CAAC;AAAA;AAAA;AAAA,IAGhB,kBAAmB,CAAC,OAAO,aAAa;AAAA,MACpC,IAAI,UAAU,MAAM;AAAA,QAChB,OAAO,YAAY,MAAM;AAAA,MAC7B,EACK;AAAA,QACD,OAAO,WAAW,MAAM;AAAA;AAAA;AAAA,IAGhC,OAAO,OAAO;AAAA,EAClB,CAAC;AAAA,EACD,OAAO;AAAA;AAGJ,SAAS,aAAa,CAAC,QAAO,QAAQ,WAAW,UAAU,CAAC,GAAG;AAAA,EAClE,MAAM,SAAc,gBAAgB,OAAO;AAAA,EAC3C,MAAM,MAAM;AAAA,OACA,gBAAgB,OAAO;AAAA,IAC/B,OAAO;AAAA,IACP,MAAM;AAAA,IACN;AAAA,IACA,IAAI,OAAO,cAAc,aAAa,YAAY,CAAC,QAAQ,UAAU,KAAK,GAAG;AAAA,OAC1E;AAAA,EACP;AAAA,EACA,IAAI,qBAAqB,QAAQ;AAAA,IAC7B,IAAI,UAAU;AAAA,EAClB;AAAA,EACA,MAAM,OAAO,IAAI,OAAM,GAAG;AAAA,EAC1B,OAAO;AAAA;;ACpjCJ,SAAS,iBAAiB,CAAC,QAAQ;AAAA,EAEtC,IAAI,SAAS,QAAQ,UAAU;AAAA,EAC/B,IAAI,WAAW;AAAA,IACX,SAAS;AAAA,EACb,IAAI,WAAW;AAAA,IACX,SAAS;AAAA,EACb,OAAO;AAAA,IACH,YAAY,OAAO,cAAc,CAAC;AAAA,IAClC,kBAAkB,QAAQ,YAAY;AAAA,IACtC;AAAA,IACA,iBAAiB,QAAQ,mBAAmB;AAAA,IAC5C,UAAU,QAAQ,aAAa,MAAM;AAAA,IACrC,IAAI,QAAQ,MAAM;AAAA,IAClB,SAAS;AAAA,IACT,MAAM,IAAI;AAAA,IACV,QAAQ,QAAQ,UAAU;AAAA,IAC1B,QAAQ,QAAQ,UAAU;AAAA,IAC1B,UAAU,QAAQ,YAAY;AAAA,EAClC;AAAA;AAEG,SAAS,QAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG;AAAA,EACzE,IAAI;AAAA,EACJ,MAAM,MAAM,OAAO,KAAK;AAAA,EAExB,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,IAAI,MAAM;AAAA,IACN,KAAK;AAAA,IAEL,MAAM,UAAU,QAAQ,WAAW,SAAS,MAAM;AAAA,IAClD,IAAI,SAAS;AAAA,MACT,KAAK,QAAQ,QAAQ;AAAA,IACzB;AAAA,IACA,OAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,GAAG,OAAO,WAAW,MAAM,QAAQ,KAAK;AAAA,EAC5E,IAAI,KAAK,IAAI,QAAQ,MAAM;AAAA,EAE3B,MAAM,iBAAiB,OAAO,KAAK,eAAe;AAAA,EAClD,IAAI,gBAAgB;AAAA,IAChB,OAAO,SAAS;AAAA,EACpB,EACK;AAAA,IACD,MAAM,SAAS;AAAA,SACR;AAAA,MACH,YAAY,CAAC,GAAG,QAAQ,YAAY,MAAM;AAAA,MAC1C,MAAM,QAAQ;AAAA,IAClB;AAAA,IACA,IAAI,OAAO,KAAK,mBAAmB;AAAA,MAC/B,OAAO,KAAK,kBAAkB,KAAK,OAAO,QAAQ,MAAM;AAAA,IAC5D,EACK;AAAA,MACD,MAAM,QAAQ,OAAO;AAAA,MACrB,MAAM,YAAY,IAAI,WAAW,IAAI;AAAA,MACrC,IAAI,CAAC,WAAW;AAAA,QACZ,MAAM,IAAI,MAAM,uDAAuD,IAAI,MAAM;AAAA,MACrF;AAAA,MACA,UAAU,QAAQ,KAAK,OAAO,MAAM;AAAA;AAAA,IAExC,MAAM,SAAS,OAAO,KAAK;AAAA,IAC3B,IAAI,QAAQ;AAAA,MAER,IAAI,CAAC,OAAO;AAAA,QACR,OAAO,MAAM;AAAA,MACjB,SAAQ,QAAQ,KAAK,MAAM;AAAA,MAC3B,IAAI,KAAK,IAAI,MAAM,EAAE,WAAW;AAAA,IACpC;AAAA;AAAA,EAGJ,MAAM,QAAO,IAAI,iBAAiB,IAAI,MAAM;AAAA,EAC5C,IAAI;AAAA,IACA,OAAO,OAAO,OAAO,QAAQ,KAAI;AAAA,EACrC,IAAI,IAAI,OAAO,WAAW,eAAe,MAAM,GAAG;AAAA,IAE9C,OAAO,OAAO,OAAO;AAAA,IACrB,OAAO,OAAO,OAAO;AAAA,EACzB;AAAA,EAEA,IAAI,IAAI,OAAO,WAAW,eAAe,OAAO;AAAA,KAC3C,MAAK,OAAO,QAAQ,YAAY,IAAG,UAAU,OAAO,OAAO;AAAA,EAChE,OAAO,OAAO,OAAO;AAAA,EAErB,MAAM,UAAU,IAAI,KAAK,IAAI,MAAM;AAAA,EACnC,OAAO,QAAQ;AAAA;AAEZ,SAAS,WAAW,CAAC,KAAK,QAE/B;AAAA,EAEE,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,IAAI,CAAC;AAAA,IACD,MAAM,IAAI,MAAM,2CAA2C;AAAA,EAE/D,MAAM,aAAa,IAAI;AAAA,EACvB,WAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AAAA,IACpC,MAAM,KAAK,IAAI,iBAAiB,IAAI,MAAM,EAAE,GAAG;AAAA,IAC/C,IAAI,IAAI;AAAA,MACJ,MAAM,WAAW,WAAW,IAAI,EAAE;AAAA,MAClC,IAAI,YAAY,aAAa,MAAM,IAAI;AAAA,QACnC,MAAM,IAAI,MAAM,wBAAwB,qHAAqH;AAAA,MACjK;AAAA,MACA,WAAW,IAAI,IAAI,MAAM,EAAE;AAAA,IAC/B;AAAA,EACJ;AAAA,EAGA,MAAM,UAAU,CAAC,UAAU;AAAA,IAKvB,MAAM,cAAc,IAAI,WAAW,kBAAkB,UAAU;AAAA,IAC/D,IAAI,IAAI,UAAU;AAAA,MACd,MAAM,aAAa,IAAI,SAAS,SAAS,IAAI,MAAM,EAAE,GAAG;AAAA,MAExD,MAAM,eAAe,IAAI,SAAS,QAAQ,CAAC,QAAO;AAAA,MAClD,IAAI,YAAY;AAAA,QACZ,OAAO,EAAE,KAAK,aAAa,UAAU,EAAE;AAAA,MAC3C;AAAA,MAEA,MAAM,KAAK,MAAM,GAAG,SAAS,MAAM,GAAG,OAAO,MAAM,SAAS,IAAI;AAAA,MAChE,MAAM,GAAG,QAAQ;AAAA,MACjB,OAAO,EAAE,OAAO,IAAI,KAAK,GAAG,aAAa,UAAU,MAAM,eAAe,KAAK;AAAA,IACjF;AAAA,IACA,IAAI,MAAM,OAAO,MAAM;AAAA,MACnB,OAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAAA,IAEA,MAAM,YAAY;AAAA,IAClB,MAAM,eAAe,GAAG,aAAa;AAAA,IACrC,MAAM,QAAQ,MAAM,GAAG,OAAO,MAAM,WAAW,IAAI;AAAA,IACnD,OAAO,EAAE,OAAO,KAAK,eAAe,MAAM;AAAA;AAAA,EAI9C,MAAM,eAAe,CAAC,UAAU;AAAA,IAE5B,IAAI,MAAM,GAAG,OAAO,MAAM;AAAA,MACtB;AAAA,IACJ;AAAA,IACA,MAAM,OAAO,MAAM;AAAA,IACnB,QAAQ,KAAK,UAAU,QAAQ,KAAK;AAAA,IACpC,KAAK,MAAM,KAAK,KAAK,OAAO;AAAA,IAG5B,IAAI;AAAA,MACA,KAAK,QAAQ;AAAA,IAEjB,MAAM,UAAS,KAAK;AAAA,IACpB,WAAW,OAAO,SAAQ;AAAA,MACtB,OAAO,QAAO;AAAA,IAClB;AAAA,IACA,QAAO,OAAO;AAAA;AAAA,EAIlB,IAAI,IAAI,WAAW,SAAS;AAAA,IACxB,WAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AAAA,MACpC,MAAM,OAAO,MAAM;AAAA,MACnB,IAAI,KAAK,OAAO;AAAA,QACZ,MAAM,IAAI,MAAM,qBACZ,KAAK,KAAK,OAAO,KAAK,GAAG,aACzB,kFAAkF;AAAA,MAC1F;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,WAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AAAA,IACpC,MAAM,OAAO,MAAM;AAAA,IAEnB,IAAI,WAAW,MAAM,IAAI;AAAA,MACrB,aAAa,KAAK;AAAA,MAClB;AAAA,IACJ;AAAA,IAEA,IAAI,IAAI,UAAU;AAAA,MACd,MAAM,MAAM,IAAI,SAAS,SAAS,IAAI,MAAM,EAAE,GAAG;AAAA,MACjD,IAAI,WAAW,MAAM,MAAM,KAAK;AAAA,QAC5B,aAAa,KAAK;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IAEA,MAAM,KAAK,IAAI,iBAAiB,IAAI,MAAM,EAAE,GAAG;AAAA,IAC/C,IAAI,IAAI;AAAA,MACJ,aAAa,KAAK;AAAA,MAClB;AAAA,IACJ;AAAA,IAEA,IAAI,KAAK,OAAO;AAAA,MAEZ,aAAa,KAAK;AAAA,MAClB;AAAA,IACJ;AAAA,IAEA,IAAI,KAAK,QAAQ,GAAG;AAAA,MAChB,IAAI,IAAI,WAAW,OAAO;AAAA,QACtB,aAAa,KAAK;AAAA,QAElB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAEG,SAAS,QAAQ,CAAC,KAAK,QAAQ;AAAA,EAClC,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,IAAI,CAAC;AAAA,IACD,MAAM,IAAI,MAAM,2CAA2C;AAAA,EAE/D,MAAM,aAAa,CAAC,cAAc;AAAA,IAC9B,MAAM,OAAO,IAAI,KAAK,IAAI,SAAS;AAAA,IAEnC,IAAI,KAAK,QAAQ;AAAA,MACb;AAAA,IACJ,MAAM,UAAS,KAAK,OAAO,KAAK;AAAA,IAChC,MAAM,UAAU,KAAK,QAAO;AAAA,IAC5B,MAAM,MAAM,KAAK;AAAA,IACjB,KAAK,MAAM;AAAA,IACX,IAAI,KAAK;AAAA,MACL,WAAW,GAAG;AAAA,MACd,MAAM,UAAU,IAAI,KAAK,IAAI,GAAG;AAAA,MAChC,MAAM,YAAY,QAAQ;AAAA,MAE1B,IAAI,UAAU,SAAS,IAAI,WAAW,cAAc,IAAI,WAAW,cAAc,IAAI,WAAW,gBAAgB;AAAA,QAE5G,QAAO,QAAQ,QAAO,SAAS,CAAC;AAAA,QAChC,QAAO,MAAM,KAAK,SAAS;AAAA,MAC/B,EACK;AAAA,QACD,OAAO,OAAO,SAAQ,SAAS;AAAA;AAAA,MAGnC,OAAO,OAAO,SAAQ,OAAO;AAAA,MAC7B,MAAM,cAAc,UAAU,KAAK,WAAW;AAAA,MAE9C,IAAI,aAAa;AAAA,QACb,WAAW,OAAO,SAAQ;AAAA,UACtB,IAAI,QAAQ,UAAU,QAAQ;AAAA,YAC1B;AAAA,UACJ,IAAI,EAAE,OAAO,UAAU;AAAA,YACnB,OAAO,QAAO;AAAA,UAClB;AAAA,QACJ;AAAA,MACJ;AAAA,MAEA,IAAI,UAAU,QAAQ,QAAQ,KAAK;AAAA,QAC/B,WAAW,OAAO,SAAQ;AAAA,UACtB,IAAI,QAAQ,UAAU,QAAQ;AAAA,YAC1B;AAAA,UACJ,IAAI,OAAO,QAAQ,OAAO,KAAK,UAAU,QAAO,IAAI,MAAM,KAAK,UAAU,QAAQ,IAAI,IAAI,GAAG;AAAA,YACxF,OAAO,QAAO;AAAA,UAClB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAIA,MAAM,SAAS,UAAU,KAAK;AAAA,IAC9B,IAAI,UAAU,WAAW,KAAK;AAAA,MAE1B,WAAW,MAAM;AAAA,MACjB,MAAM,aAAa,IAAI,KAAK,IAAI,MAAM;AAAA,MACtC,IAAI,YAAY,OAAO,MAAM;AAAA,QACzB,QAAO,OAAO,WAAW,OAAO;AAAA,QAEhC,IAAI,WAAW,KAAK;AAAA,UAChB,WAAW,OAAO,SAAQ;AAAA,YACtB,IAAI,QAAQ,UAAU,QAAQ;AAAA,cAC1B;AAAA,YACJ,IAAI,OAAO,WAAW,OAAO,KAAK,UAAU,QAAO,IAAI,MAAM,KAAK,UAAU,WAAW,IAAI,IAAI,GAAG;AAAA,cAC9F,OAAO,QAAO;AAAA,YAClB;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,IAEA,IAAI,SAAS;AAAA,MACT;AAAA,MACA,YAAY;AAAA,MACZ,MAAM,KAAK,QAAQ,CAAC;AAAA,IACxB,CAAC;AAAA;AAAA,EAEL,WAAW,SAAS,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,EAAE,QAAQ,GAAG;AAAA,IACnD,WAAW,MAAM,EAAE;AAAA,EACvB;AAAA,EACA,MAAM,SAAS,CAAC;AAAA,EAChB,IAAI,IAAI,WAAW,iBAAiB;AAAA,IAChC,OAAO,UAAU;AAAA,EACrB,EACK,SAAI,IAAI,WAAW,YAAY;AAAA,IAChC,OAAO,UAAU;AAAA,EACrB,EACK,SAAI,IAAI,WAAW,YAAY;AAAA,IAChC,OAAO,UAAU;AAAA,EACrB,EACK,SAAI,IAAI,WAAW,eAAe,CAEvC;AAAA,EAIA,IAAI,IAAI,UAAU,KAAK;AAAA,IACnB,MAAM,KAAK,IAAI,SAAS,SAAS,IAAI,MAAM,GAAG;AAAA,IAC9C,IAAI,CAAC;AAAA,MACD,MAAM,IAAI,MAAM,oCAAoC;AAAA,IACxD,OAAO,MAAM,IAAI,SAAS,IAAI,EAAE;AAAA,EACpC;AAAA,EACA,OAAO,OAAO,QAAQ,KAAK,OAAO,KAAK,MAAM;AAAA,EAK7C,MAAM,aAAa,IAAI,iBAAiB,IAAI,MAAM,GAAG;AAAA,EACrD,IAAI,eAAe,aAAa,OAAO,OAAO;AAAA,IAC1C,OAAO,OAAO;AAAA,EAElB,MAAM,OAAO,IAAI,UAAU,QAAQ,CAAC;AAAA,EACpC,WAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AAAA,IACpC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,KAAK,OAAO,KAAK,OAAO;AAAA,MACxB,IAAI,KAAK,IAAI,OAAO,KAAK;AAAA,QACrB,OAAO,KAAK,IAAI;AAAA,MACpB,KAAK,KAAK,SAAS,KAAK;AAAA,IAC5B;AAAA,EACJ;AAAA,EAEA,IAAI,IAAI,UAAU,CAClB,EACK;AAAA,IACD,IAAI,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AAAA,MAC9B,IAAI,IAAI,WAAW,iBAAiB;AAAA,QAChC,OAAO,QAAQ;AAAA,MACnB,EACK;AAAA,QACD,OAAO,cAAc;AAAA;AAAA,IAE7B;AAAA;AAAA,EAEJ,IAAI;AAAA,IAIA,MAAM,YAAY,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AAAA,IACnD,OAAO,eAAe,WAAW,aAAa;AAAA,MAC1C,OAAO;AAAA,WACA,OAAO;AAAA,QACV,YAAY;AAAA,UACR,OAAO,+BAA+B,QAAQ,SAAS,IAAI,UAAU;AAAA,UACrE,QAAQ,+BAA+B,QAAQ,UAAU,IAAI,UAAU;AAAA,QAC3E;AAAA,MACJ;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,IACd,CAAC;AAAA,IACD,OAAO;AAAA,IAEX,OAAO,MAAM;AAAA,IACT,MAAM,IAAI,MAAM,kCAAkC;AAAA;AAAA;AAG1D,SAAS,cAAc,CAAC,SAAS,MAAM;AAAA,EACnC,MAAM,MAAM,QAAQ,EAAE,MAAM,IAAI,IAAM;AAAA,EACtC,IAAI,IAAI,KAAK,IAAI,OAAO;AAAA,IACpB,OAAO;AAAA,EACX,IAAI,KAAK,IAAI,OAAO;AAAA,EACpB,MAAM,MAAM,QAAQ,KAAK;AAAA,EACzB,IAAI,IAAI,SAAS;AAAA,IACb,OAAO;AAAA,EACX,IAAI,IAAI,SAAS;AAAA,IACb,OAAO,eAAe,IAAI,SAAS,GAAG;AAAA,EAC1C,IAAI,IAAI,SAAS;AAAA,IACb,OAAO,eAAe,IAAI,WAAW,GAAG;AAAA,EAC5C,IAAI,IAAI,SAAS;AAAA,IACb,OAAO,eAAe,IAAI,OAAO,GAAG,GAAG;AAAA,EAC3C,IAAI,IAAI,SAAS,aACb,IAAI,SAAS,cACb,IAAI,SAAS,iBACb,IAAI,SAAS,cACb,IAAI,SAAS,cACb,IAAI,SAAS,aACb,IAAI,SAAS,YAAY;AAAA,IACzB,OAAO,eAAe,IAAI,WAAW,GAAG;AAAA,EAC5C;AAAA,EACA,IAAI,IAAI,SAAS,gBAAgB;AAAA,IAC7B,OAAO,eAAe,IAAI,MAAM,GAAG,KAAK,eAAe,IAAI,OAAO,GAAG;AAAA,EACzE;AAAA,EACA,IAAI,IAAI,SAAS,YAAY,IAAI,SAAS,OAAO;AAAA,IAC7C,OAAO,eAAe,IAAI,SAAS,GAAG,KAAK,eAAe,IAAI,WAAW,GAAG;AAAA,EAChF;AAAA,EACA,IAAI,IAAI,SAAS,QAAQ;AAAA,IACrB,IAAI,QAAQ,KAAK,OAAO,IAAI,WAAW;AAAA,MACnC,OAAO;AAAA,IACX,OAAO,eAAe,IAAI,IAAI,GAAG,KAAK,eAAe,IAAI,KAAK,GAAG;AAAA,EACrE;AAAA,EACA,IAAI,IAAI,SAAS,UAAU;AAAA,IACvB,WAAW,OAAO,IAAI,OAAO;AAAA,MACzB,IAAI,eAAe,IAAI,MAAM,MAAM,GAAG;AAAA,QAClC,OAAO;AAAA,IACf;AAAA,IACA,OAAO;AAAA,EACX;AAAA,EACA,IAAI,IAAI,SAAS,SAAS;AAAA,IACtB,WAAW,UAAU,IAAI,SAAS;AAAA,MAC9B,IAAI,eAAe,QAAQ,GAAG;AAAA,QAC1B,OAAO;AAAA,IACf;AAAA,IACA,OAAO;AAAA,EACX;AAAA,EACA,IAAI,IAAI,SAAS,SAAS;AAAA,IACtB,WAAW,QAAQ,IAAI,OAAO;AAAA,MAC1B,IAAI,eAAe,MAAM,GAAG;AAAA,QACxB,OAAO;AAAA,IACf;AAAA,IACA,IAAI,IAAI,QAAQ,eAAe,IAAI,MAAM,GAAG;AAAA,MACxC,OAAO;AAAA,IACX,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAMJ,IAAM,2BAA2B,CAAC,QAAQ,aAAa,CAAC,MAAM,CAAC,WAAW;AAAA,EAC7E,MAAM,MAAM,kBAAkB,KAAK,QAAQ,WAAW,CAAC;AAAA,EACvD,SAAQ,QAAQ,GAAG;AAAA,EACnB,YAAY,KAAK,MAAM;AAAA,EACvB,OAAO,SAAS,KAAK,MAAM;AAAA;AAExB,IAAM,iCAAiC,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW;AAAA,EACvF,QAAQ,gBAAgB,WAAW,UAAU,CAAC;AAAA,EAC9C,MAAM,MAAM,kBAAkB,KAAM,kBAAkB,CAAC,GAAI,QAAQ,IAAI,WAAW,CAAC;AAAA,EACnF,SAAQ,QAAQ,GAAG;AAAA,EACnB,YAAY,KAAK,MAAM;AAAA,EACvB,OAAO,SAAS,KAAK,MAAM;AAAA;;AC5b/B,IAAM,YAAY;AAAA,EACd,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU;AAAA,EACV,aAAa;AAAA,EACb,OAAO;AACX;AAEO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,YAAY;AAAA,EAC5D,MAAM,OAAO;AAAA,EACb,KAAK,OAAO;AAAA,EACZ,QAAQ,SAAS,SAAS,QAAQ,UAAU,oBAAoB,OAAO,KAClE;AAAA,EACL,IAAI,OAAO,YAAY;AAAA,IACnB,KAAK,YAAY;AAAA,EACrB,IAAI,OAAO,YAAY;AAAA,IACnB,KAAK,YAAY;AAAA,EAErB,IAAI,QAAQ;AAAA,IACR,KAAK,SAAS,UAAU,WAAW;AAAA,IACnC,IAAI,KAAK,WAAW;AAAA,MAChB,OAAO,KAAK;AAAA,IAGhB,IAAI,WAAW,QAAQ;AAAA,MACnB,OAAO,KAAK;AAAA,IAChB;AAAA,EACJ;AAAA,EACA,IAAI;AAAA,IACA,KAAK,kBAAkB;AAAA,EAC3B,IAAI,YAAY,SAAS,OAAO,GAAG;AAAA,IAC/B,MAAM,UAAU,CAAC,GAAG,QAAQ;AAAA,IAC5B,IAAI,QAAQ,WAAW;AAAA,MACnB,KAAK,UAAU,QAAQ,GAAG;AAAA,IACzB,SAAI,QAAQ,SAAS,GAAG;AAAA,MACzB,KAAK,QAAQ;AAAA,QACT,GAAG,QAAQ,IAAI,CAAC,WAAW;AAAA,aACnB,IAAI,WAAW,cAAc,IAAI,WAAW,cAAc,IAAI,WAAW,gBACvE,EAAE,MAAM,SAAS,IACjB,CAAC;AAAA,UACP,SAAS,MAAM;AAAA,QACnB,EAAE;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA;AAEG,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,YAAY;AAAA,EAC5D,MAAM,OAAO;AAAA,EACb,QAAQ,SAAS,SAAS,QAAQ,YAAY,kBAAkB,qBAAqB,OAAO,KAAK;AAAA,EACjG,IAAI,OAAO,WAAW,YAAY,OAAO,SAAS,KAAK;AAAA,IACnD,KAAK,OAAO;AAAA,EAEZ;AAAA,SAAK,OAAO;AAAA,EAEhB,MAAM,QAAQ,OAAO,qBAAqB,YAAY,qBAAqB,WAAW,OAAO;AAAA,EAC7F,MAAM,QAAQ,OAAO,qBAAqB,YAAY,qBAAqB,WAAW,OAAO;AAAA,EAC7F,MAAM,SAAS,IAAI,WAAW,cAAc,IAAI,WAAW;AAAA,EAC3D,IAAI,OAAO;AAAA,IACP,IAAI,QAAQ;AAAA,MACR,KAAK,UAAU;AAAA,MACf,KAAK,mBAAmB;AAAA,IAC5B,EACK;AAAA,MACD,KAAK,mBAAmB;AAAA;AAAA,EAEhC,EACK,SAAI,OAAO,YAAY,UAAU;AAAA,IAClC,KAAK,UAAU;AAAA,EACnB;AAAA,EACA,IAAI,OAAO;AAAA,IACP,IAAI,QAAQ;AAAA,MACR,KAAK,UAAU;AAAA,MACf,KAAK,mBAAmB;AAAA,IAC5B,EACK;AAAA,MACD,KAAK,mBAAmB;AAAA;AAAA,EAEhC,EACK,SAAI,OAAO,YAAY,UAAU;AAAA,IAClC,KAAK,UAAU;AAAA,EACnB;AAAA,EACA,IAAI,OAAO,eAAe;AAAA,IACtB,KAAK,aAAa;AAAA;AAEnB,IAAM,mBAAmB,CAAC,SAAS,MAAM,MAAM,YAAY;AAAA,EAC9D,KAAK,OAAO;AAAA;AAET,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC7D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,6CAA6C;AAAA,EACjE;AAAA;AAEG,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC7D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,8CAA8C;AAAA,EAClE;AAAA;AAEG,IAAM,gBAAgB,CAAC,SAAS,KAAK,MAAM,YAAY;AAAA,EAC1D,IAAI,IAAI,WAAW,eAAe;AAAA,IAC9B,KAAK,OAAO;AAAA,IACZ,KAAK,WAAW;AAAA,IAChB,KAAK,OAAO,CAAC,IAAI;AAAA,EACrB,EACK;AAAA,IACD,KAAK,OAAO;AAAA;AAAA;AAGb,IAAM,qBAAqB,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAChE,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,gDAAgD;AAAA,EACpE;AAAA;AAEG,IAAM,gBAAgB,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC3D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,2CAA2C;AAAA,EAC/D;AAAA;AAEG,IAAM,iBAAiB,CAAC,SAAS,MAAM,MAAM,YAAY;AAAA,EAC5D,KAAK,MAAM,CAAC;AAAA;AAET,IAAM,eAAe,CAAC,SAAS,MAAM,OAAO,YAAY;AAGxD,IAAM,mBAAmB,CAAC,SAAS,MAAM,OAAO,YAAY;AAG5D,IAAM,gBAAgB,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC3D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,2CAA2C;AAAA,EAC/D;AAAA;AAEG,IAAM,gBAAgB,CAAC,QAAQ,MAAM,MAAM,YAAY;AAAA,EAC1D,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,MAAM,SAAS,cAAc,IAAI,OAAO;AAAA,EAExC,IAAI,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AAAA,IACzC,KAAK,OAAO;AAAA,EAChB,IAAI,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AAAA,IACzC,KAAK,OAAO;AAAA,EAChB,KAAK,OAAO;AAAA;AAET,IAAM,mBAAmB,CAAC,QAAQ,KAAK,MAAM,YAAY;AAAA,EAC5D,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,MAAM,OAAO,CAAC;AAAA,EACd,WAAW,OAAO,IAAI,QAAQ;AAAA,IAC1B,IAAI,QAAQ,WAAW;AAAA,MACnB,IAAI,IAAI,oBAAoB,SAAS;AAAA,QACjC,MAAM,IAAI,MAAM,0DAA0D;AAAA,MAC9E;AAAA,IAIJ,EACK,SAAI,OAAO,QAAQ,UAAU;AAAA,MAC9B,IAAI,IAAI,oBAAoB,SAAS;AAAA,QACjC,MAAM,IAAI,MAAM,sDAAsD;AAAA,MAC1E,EACK;AAAA,QACD,KAAK,KAAK,OAAO,GAAG,CAAC;AAAA;AAAA,IAE7B,EACK;AAAA,MACD,KAAK,KAAK,GAAG;AAAA;AAAA,EAErB;AAAA,EACA,IAAI,KAAK,WAAW,GAAG,CAEvB,EACK,SAAI,KAAK,WAAW,GAAG;AAAA,IACxB,MAAM,MAAM,KAAK;AAAA,IACjB,KAAK,OAAO,QAAQ,OAAO,SAAS,OAAO;AAAA,IAC3C,IAAI,IAAI,WAAW,cAAc,IAAI,WAAW,eAAe;AAAA,MAC3D,KAAK,OAAO,CAAC,GAAG;AAAA,IACpB,EACK;AAAA,MACD,KAAK,QAAQ;AAAA;AAAA,EAErB,EACK;AAAA,IACD,IAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AAAA,MACvC,KAAK,OAAO;AAAA,IAChB,IAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AAAA,MACvC,KAAK,OAAO;AAAA,IAChB,IAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,SAAS;AAAA,MACxC,KAAK,OAAO;AAAA,IAChB,IAAI,KAAK,MAAM,CAAC,MAAM,MAAM,IAAI;AAAA,MAC5B,KAAK,OAAO;AAAA,IAChB,KAAK,OAAO;AAAA;AAAA;AAGb,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC1D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AAAA;AAEG,IAAM,2BAA2B,CAAC,QAAQ,MAAM,MAAM,YAAY;AAAA,EACrE,MAAM,QAAQ;AAAA,EACd,MAAM,UAAU,OAAO,KAAK;AAAA,EAC5B,IAAI,CAAC;AAAA,IACD,MAAM,IAAI,MAAM,uCAAuC;AAAA,EAC3D,MAAM,OAAO;AAAA,EACb,MAAM,UAAU,QAAQ;AAAA;AAErB,IAAM,gBAAgB,CAAC,QAAQ,MAAM,MAAM,YAAY;AAAA,EAC1D,MAAM,QAAQ;AAAA,EACd,MAAM,OAAO;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,iBAAiB;AAAA,EACrB;AAAA,EACA,QAAQ,SAAS,SAAS,SAAS,OAAO,KAAK;AAAA,EAC/C,IAAI,YAAY;AAAA,IACZ,KAAK,YAAY;AAAA,EACrB,IAAI,YAAY;AAAA,IACZ,KAAK,YAAY;AAAA,EACrB,IAAI,MAAM;AAAA,IACN,IAAI,KAAK,WAAW,GAAG;AAAA,MACnB,KAAK,mBAAmB,KAAK;AAAA,MAC7B,OAAO,OAAO,OAAO,IAAI;AAAA,IAC7B,EACK;AAAA,MACD,OAAO,OAAO,OAAO,IAAI;AAAA,MACzB,MAAM,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE;AAAA;AAAA,EAE/D,EACK;AAAA,IACD,OAAO,OAAO,OAAO,IAAI;AAAA;AAAA;AAG1B,IAAM,mBAAmB,CAAC,SAAS,MAAM,MAAM,YAAY;AAAA,EAC9D,KAAK,OAAO;AAAA;AAET,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC7D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,mDAAmD;AAAA,EACvE;AAAA;AAEG,IAAM,oBAAoB,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC/D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,qDAAqD;AAAA,EACzE;AAAA;AAEG,IAAM,qBAAqB,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAChE,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,iDAAiD;AAAA,EACrE;AAAA;AAEG,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC1D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AAAA;AAEG,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAAA,EAC1D,IAAI,IAAI,oBAAoB,SAAS;AAAA,IACjC,MAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AAAA;AAGG,IAAM,iBAAiB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EAC1D,MAAM,OAAO;AAAA,EACb,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,QAAQ,SAAS,YAAY,OAAO,KAAK;AAAA,EACzC,IAAI,OAAO,YAAY;AAAA,IACnB,KAAK,WAAW;AAAA,EACpB,IAAI,OAAO,YAAY;AAAA,IACnB,KAAK,WAAW;AAAA,EACpB,KAAK,OAAO;AAAA,EACZ,KAAK,QAAQ,SAAQ,IAAI,SAAS,KAAK;AAAA,OAChC;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,OAAO;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EAC3D,MAAM,OAAO;AAAA,EACb,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,KAAK,OAAO;AAAA,EACZ,KAAK,aAAa,CAAC;AAAA,EACnB,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,OAAO,OAAO;AAAA,IACrB,KAAK,WAAW,OAAO,SAAQ,MAAM,MAAM,KAAK;AAAA,SACzC;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,cAAc,GAAG;AAAA,IAC5C,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,UAAU,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AAAA,EAC1C,MAAM,eAAe,IAAI,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,QAAQ;AAAA,IACtD,MAAM,IAAI,IAAI,MAAM,KAAK;AAAA,IACzB,IAAI,IAAI,OAAO,SAAS;AAAA,MACpB,OAAO,EAAE,UAAU;AAAA,IACvB,EACK;AAAA,MACD,OAAO,EAAE,WAAW;AAAA;AAAA,GAE3B,CAAC;AAAA,EACF,IAAI,aAAa,OAAO,GAAG;AAAA,IACvB,KAAK,WAAW,MAAM,KAAK,YAAY;AAAA,EAC3C;AAAA,EAEA,IAAI,IAAI,UAAU,KAAK,IAAI,SAAS,SAAS;AAAA,IAEzC,KAAK,uBAAuB;AAAA,EAChC,EACK,SAAI,CAAC,IAAI,UAAU;AAAA,IAEpB,IAAI,IAAI,OAAO;AAAA,MACX,KAAK,uBAAuB;AAAA,EACpC,EACK,SAAI,IAAI,UAAU;AAAA,IACnB,KAAK,uBAAuB,SAAQ,IAAI,UAAU,KAAK;AAAA,SAChD;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,sBAAsB;AAAA,IACjD,CAAC;AAAA,EACL;AAAA;AAEG,IAAM,iBAAiB,CAAC,QAAQ,KAAK,MAAM,WAAW;AAAA,EACzD,MAAM,MAAM,OAAO,KAAK;AAAA,EAGxB,MAAM,cAAc,IAAI,cAAc;AAAA,EACtC,MAAM,UAAU,IAAI,QAAQ,IAAI,CAAC,GAAG,MAAM,SAAQ,GAAG,KAAK;AAAA,OACnD;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,cAAc,UAAU,SAAS,CAAC;AAAA,EAC7D,CAAC,CAAC;AAAA,EACF,IAAI,aAAa;AAAA,IACb,KAAK,QAAQ;AAAA,EACjB,EACK;AAAA,IACD,KAAK,QAAQ;AAAA;AAAA;AAGd,IAAM,wBAAwB,CAAC,QAAQ,KAAK,MAAM,WAAW;AAAA,EAChE,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,MAAM,IAAI,SAAQ,IAAI,MAAM,KAAK;AAAA,OAC1B;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,SAAS,CAAC;AAAA,EACrC,CAAC;AAAA,EACD,MAAM,IAAI,SAAQ,IAAI,OAAO,KAAK;AAAA,OAC3B;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,SAAS,CAAC;AAAA,EACrC,CAAC;AAAA,EACD,MAAM,uBAAuB,CAAC,SAAQ,WAAW,QAAO,OAAO,KAAK,GAAG,EAAE,WAAW;AAAA,EACpF,MAAM,QAAQ;AAAA,IACV,GAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAAA,IAC1C,GAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC9C;AAAA,EACA,KAAK,QAAQ;AAAA;AAEV,IAAM,iBAAiB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EAC1D,MAAM,OAAO;AAAA,EACb,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,KAAK,OAAO;AAAA,EACZ,MAAM,aAAa,IAAI,WAAW,kBAAkB,gBAAgB;AAAA,EACpE,MAAM,WAAW,IAAI,WAAW,kBAAkB,UAAU,IAAI,WAAW,gBAAgB,UAAU;AAAA,EACrG,MAAM,cAAc,IAAI,MAAM,IAAI,CAAC,GAAG,MAAM,SAAQ,GAAG,KAAK;AAAA,OACrD;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,YAAY,CAAC;AAAA,EACxC,CAAC,CAAC;AAAA,EACF,MAAM,OAAO,IAAI,OACX,SAAQ,IAAI,MAAM,KAAK;AAAA,OAClB;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,UAAU,GAAI,IAAI,WAAW,gBAAgB,CAAC,IAAI,MAAM,MAAM,IAAI,CAAC,CAAE;AAAA,EAChG,CAAC,IACC;AAAA,EACN,IAAI,IAAI,WAAW,iBAAiB;AAAA,IAChC,KAAK,cAAc;AAAA,IACnB,IAAI,MAAM;AAAA,MACN,KAAK,QAAQ;AAAA,IACjB;AAAA,EACJ,EACK,SAAI,IAAI,WAAW,eAAe;AAAA,IACnC,KAAK,QAAQ;AAAA,MACT,OAAO;AAAA,IACX;AAAA,IACA,IAAI,MAAM;AAAA,MACN,KAAK,MAAM,MAAM,KAAK,IAAI;AAAA,IAC9B;AAAA,IACA,KAAK,WAAW,YAAY;AAAA,IAC5B,IAAI,CAAC,MAAM;AAAA,MACP,KAAK,WAAW,YAAY;AAAA,IAChC;AAAA,EACJ,EACK;AAAA,IACD,KAAK,QAAQ;AAAA,IACb,IAAI,MAAM;AAAA,MACN,KAAK,kBAAkB;AAAA,IAC3B;AAAA;AAAA,EAGJ,QAAQ,SAAS,YAAY,OAAO,KAAK;AAAA,EACzC,IAAI,OAAO,YAAY;AAAA,IACnB,KAAK,WAAW;AAAA,EACpB,IAAI,OAAO,YAAY;AAAA,IACnB,KAAK,WAAW;AAAA;AAEjB,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EAC3D,MAAM,OAAO;AAAA,EACb,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,KAAK,OAAO;AAAA,EAIZ,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,SAAS,QAAQ,KAAK;AAAA,EAC5B,MAAM,WAAW,QAAQ;AAAA,EACzB,IAAI,IAAI,SAAS,WAAW,YAAY,SAAS,OAAO,GAAG;AAAA,IAEvD,MAAM,cAAc,SAAQ,IAAI,WAAW,KAAK;AAAA,SACzC;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,qBAAqB,GAAG;AAAA,IACnD,CAAC;AAAA,IACD,KAAK,oBAAoB,CAAC;AAAA,IAC1B,WAAW,WAAW,UAAU;AAAA,MAC5B,KAAK,kBAAkB,QAAQ,UAAU;AAAA,IAC7C;AAAA,EACJ,EACK;AAAA,IAED,IAAI,IAAI,WAAW,cAAc,IAAI,WAAW,iBAAiB;AAAA,MAC7D,KAAK,gBAAgB,SAAQ,IAAI,SAAS,KAAK;AAAA,WACxC;AAAA,QACH,MAAM,CAAC,GAAG,OAAO,MAAM,eAAe;AAAA,MAC1C,CAAC;AAAA,IACL;AAAA,IACA,KAAK,uBAAuB,SAAQ,IAAI,WAAW,KAAK;AAAA,SACjD;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,sBAAsB;AAAA,IACjD,CAAC;AAAA;AAAA,EAGL,MAAM,YAAY,QAAQ,KAAK;AAAA,EAC/B,IAAI,WAAW;AAAA,IACX,MAAM,iBAAiB,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,OAAO,MAAM,YAAY,OAAO,MAAM,QAAQ;AAAA,IAClG,IAAI,eAAe,SAAS,GAAG;AAAA,MAC3B,KAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA;AAEG,IAAM,oBAAoB,CAAC,QAAQ,KAAK,MAAM,WAAW;AAAA,EAC5D,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,MAAM,QAAQ,SAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,EAChD,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,IAAI,IAAI,WAAW,eAAe;AAAA,IAC9B,KAAK,MAAM,IAAI;AAAA,IACf,KAAK,WAAW;AAAA,EACpB,EACK;AAAA,IACD,KAAK,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;AAAA;AAAA;AAGtC,IAAM,uBAAuB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EAChE,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,SAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,EAClC,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM,IAAI;AAAA;AAEZ,IAAM,mBAAmB,CAAC,QAAQ,KAAK,MAAM,WAAW;AAAA,EAC3D,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,SAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,EAClC,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM,IAAI;AAAA,EACf,KAAK,UAAU,KAAK,MAAM,KAAK,UAAU,IAAI,YAAY,CAAC;AAAA;AAEvD,IAAM,oBAAoB,CAAC,QAAQ,KAAK,MAAM,WAAW;AAAA,EAC5D,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,SAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,EAClC,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM,IAAI;AAAA,EACf,IAAI,IAAI,OAAO;AAAA,IACX,KAAK,YAAY,KAAK,MAAM,KAAK,UAAU,IAAI,YAAY,CAAC;AAAA;AAE7D,IAAM,iBAAiB,CAAC,QAAQ,KAAK,MAAM,WAAW;AAAA,EACzD,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,SAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,EAClC,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM,IAAI;AAAA,EACf,IAAI;AAAA,EACJ,IAAI;AAAA,IACA,aAAa,IAAI,WAAW,SAAS;AAAA,IAEzC,MAAM;AAAA,IACF,MAAM,IAAI,MAAM,uDAAuD;AAAA;AAAA,EAE3E,KAAK,UAAU;AAAA;AAEZ,IAAM,gBAAgB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EACzD,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,MAAM,gBAAgB,IAAI,GAAG,KAAK,OAAO,IAAI,eAAe;AAAA,EAC5D,MAAM,YAAY,IAAI,OAAO,UAAW,gBAAgB,IAAI,MAAM,IAAI,KAAM,IAAI;AAAA,EAChF,SAAQ,WAAW,KAAK,MAAM;AAAA,EAC9B,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM;AAAA;AAER,IAAM,oBAAoB,CAAC,QAAQ,KAAK,MAAM,WAAW;AAAA,EAC5D,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,SAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,EAClC,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM,IAAI;AAAA,EACf,KAAK,WAAW;AAAA;AAEb,IAAM,mBAAmB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EAC5D,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,SAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,EAClC,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM,IAAI;AAAA;AAEZ,IAAM,oBAAoB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EAC7D,MAAM,MAAM,OAAO,KAAK;AAAA,EACxB,SAAQ,IAAI,WAAW,KAAK,MAAM;AAAA,EAClC,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM,IAAI;AAAA;AAEZ,IAAM,gBAAgB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAAA,EACzD,MAAM,YAAY,OAAO,KAAK;AAAA,EAC9B,SAAQ,WAAW,KAAK,MAAM;AAAA,EAC9B,MAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAAA,EAChC,KAAK,MAAM;AAAA;AAGR,IAAM,gBAAgB;AAAA,EACzB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,WAAW;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc;AAAA,EACd,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAa;AAAA,EACb,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACV;AACO,SAAS,YAAY,CAAC,OAAO,QAAQ;AAAA,EACxC,IAAI,YAAY,OAAO;AAAA,IAEnB,MAAM,YAAW;AAAA,IACjB,MAAM,OAAM,kBAAkB,KAAK,QAAQ,YAAY,cAAc,CAAC;AAAA,IACtE,MAAM,OAAO,CAAC;AAAA,IAEd,WAAW,SAAS,UAAS,OAAO,QAAQ,GAAG;AAAA,MAC3C,OAAO,GAAG,UAAU;AAAA,MACpB,SAAQ,QAAQ,IAAG;AAAA,IACvB;AAAA,IACA,MAAM,UAAU,CAAC;AAAA,IACjB,MAAM,WAAW;AAAA,MACb;AAAA,MACA,KAAK,QAAQ;AAAA,MACb;AAAA,IACJ;AAAA,IAEA,KAAI,WAAW;AAAA,IAEf,WAAW,SAAS,UAAS,OAAO,QAAQ,GAAG;AAAA,MAC3C,OAAO,KAAK,UAAU;AAAA,MACtB,YAAY,MAAK,MAAM;AAAA,MACvB,QAAQ,OAAO,SAAS,MAAK,MAAM;AAAA,IACvC;AAAA,IACA,IAAI,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AAAA,MAC9B,MAAM,cAAc,KAAI,WAAW,kBAAkB,UAAU;AAAA,MAC/D,QAAQ,WAAW;AAAA,SACd,cAAc;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,OAAO,EAAE,QAAQ;AAAA,EACrB;AAAA,EAEA,MAAM,MAAM,kBAAkB,KAAK,QAAQ,YAAY,cAAc,CAAC;AAAA,EACtE,SAAQ,OAAO,GAAG;AAAA,EAClB,YAAY,KAAK,KAAK;AAAA,EACtB,OAAO,SAAS,KAAK,KAAK;AAAA;;ACpkBvB,MAAM,oBAAoB;AAAA,MAEzB,gBAAgB,GAAG;AAAA,IACnB,OAAO,KAAK,IAAI;AAAA;AAAA,MAGhB,MAAM,GAAG;AAAA,IACT,OAAO,KAAK,IAAI;AAAA;AAAA,MAGhB,eAAe,GAAG;AAAA,IAClB,OAAO,KAAK,IAAI;AAAA;AAAA,MAGhB,QAAQ,GAAG;AAAA,IACX,OAAO,KAAK,IAAI;AAAA;AAAA,MAGhB,EAAE,GAAG;AAAA,IACL,OAAO,KAAK,IAAI;AAAA;AAAA,MAGhB,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,IAAI;AAAA;AAAA,MAEhB,OAAO,CAAC,OAAO;AAAA,IACf,KAAK,IAAI,UAAU;AAAA;AAAA,MAGnB,IAAI,GAAG;AAAA,IACP,OAAO,KAAK,IAAI;AAAA;AAAA,EAEpB,WAAW,CAAC,QAAQ;AAAA,IAEhB,IAAI,mBAAmB,QAAQ,UAAU;AAAA,IACzC,IAAI,qBAAqB;AAAA,MACrB,mBAAmB;AAAA,IACvB,IAAI,qBAAqB;AAAA,MACrB,mBAAmB;AAAA,IACvB,KAAK,MAAM,kBAAkB;AAAA,MACzB,YAAY;AAAA,MACZ,QAAQ;AAAA,SACJ,QAAQ,YAAY,EAAE,UAAU,OAAO,SAAS;AAAA,SAChD,QAAQ,mBAAmB,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,SACrE,QAAQ,YAAY,EAAE,UAAU,OAAO,SAAS;AAAA,SAChD,QAAQ,MAAM,EAAE,IAAI,OAAO,GAAG;AAAA,IACtC,CAAC;AAAA;AAAA,EAML,OAAO,CAAC,QAAQ,UAAU,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG;AAAA,IACpD,OAAO,SAAQ,QAAQ,KAAK,KAAK,OAAO;AAAA;AAAA,EAM5C,IAAI,CAAC,QAAQ,SAAS;AAAA,IAElB,IAAI,SAAS;AAAA,MACT,IAAI,QAAQ;AAAA,QACR,KAAK,IAAI,SAAS,QAAQ;AAAA,MAC9B,IAAI,QAAQ;AAAA,QACR,KAAK,IAAI,SAAS,QAAQ;AAAA,MAC9B,IAAI,QAAQ;AAAA,QACR,KAAK,IAAI,WAAW,QAAQ;AAAA,IACpC;AAAA,IACA,YAAY,KAAK,KAAK,MAAM;AAAA,IAC5B,MAAM,SAAS,SAAS,KAAK,KAAK,MAAM;AAAA,IAExC,QAAQ,aAAa,MAAM,gBAAgB;AAAA,IAC3C,OAAO;AAAA;AAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5FO,IAAM,iCAAoC,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAAA,EACtF,gBAAgB,KAAK,MAAM,GAAG;AAAA,EAC3B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACzC;AACM,SAAS,SAAQ,CAAC,QAAQ;AAAA,EAC7B,OAAY,aAAa,gBAAgB,MAAM;AAAA;AAE5C,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,YAAY,KAAK,MAAM,GAAG;AAAA,EACvB,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACzC;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,SAAS,YAAY,MAAM;AAAA;AAEpC,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,YAAY,KAAK,MAAM,GAAG;AAAA,EACvB,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACzC;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,SAAS,YAAY,MAAM;AAAA;AAEpC,IAAM,iCAAoC,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAAA,EACtF,gBAAgB,KAAK,MAAM,GAAG;AAAA,EAC3B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACzC;AACM,SAAS,SAAQ,CAAC,QAAQ;AAAA,EAC7B,OAAY,aAAa,gBAAgB,MAAM;AAAA;;;ACzBnD,IAAM,eAAc,CAAC,MAAM,WAAW;AAAA,EAClC,UAAU,KAAK,MAAM,MAAM;AAAA,EAC3B,KAAK,OAAO;AAAA,EACZ,OAAO,iBAAiB,MAAM;AAAA,IAC1B,QAAQ;AAAA,MACJ,OAAO,CAAC,WAAgB,YAAY,MAAM,MAAM;AAAA,IAEpD;AAAA,IACA,SAAS;AAAA,MACL,OAAO,CAAC,WAAgB,aAAa,MAAM,MAAM;AAAA,IAErD;AAAA,IACA,UAAU;AAAA,MACN,OAAO,CAAC,WAAU;AAAA,QACd,KAAK,OAAO,KAAK,MAAK;AAAA,QACtB,KAAK,UAAU,KAAK,UAAU,KAAK,QAAa,uBAAuB,CAAC;AAAA;AAAA,IAGhF;AAAA,IACA,WAAW;AAAA,MACP,OAAO,CAAC,YAAW;AAAA,QACf,KAAK,OAAO,KAAK,GAAG,OAAM;AAAA,QAC1B,KAAK,UAAU,KAAK,UAAU,KAAK,QAAa,uBAAuB,CAAC;AAAA;AAAA,IAGhF;AAAA,IACA,SAAS;AAAA,MACL,GAAG,GAAG;AAAA,QACF,OAAO,KAAK,OAAO,WAAW;AAAA;AAAA,IAGtC;AAAA,EACJ,CAAC;AAAA;AAOE,IAAM,2BAA8B,aAAa,YAAY,YAAW;AACxE,IAAM,+BAAkC,aAAa,YAAY,cAAa;AAAA,EACjF,QAAQ;AACZ,CAAC;;;AC3CM,IAAM,yBAA6B,OAAO,YAAY;AACtD,IAAM,8BAAkC,YAAY,YAAY;AAChE,IAAM,6BAAiC,WAAW,YAAY;AAC9D,IAAM,kCAAsC,gBAAgB,YAAY;AAExE,IAAM,0BAA8B,QAAQ,YAAY;AACxD,IAAM,0BAA8B,QAAQ,YAAY;AACxD,IAAM,+BAAmC,aAAa,YAAY;AAClE,IAAM,+BAAmC,aAAa,YAAY;AAClE,IAAM,8BAAkC,YAAY,YAAY;AAChE,IAAM,8BAAkC,YAAY,YAAY;AAChE,IAAM,mCAAuC,iBAAiB,YAAY;AAC1E,IAAM,mCAAuC,iBAAiB,YAAY;;;ACIjF,IAAM,mCAAmC,IAAI;AAC7C,SAAS,mBAAmB,CAAC,MAAM,OAAO,SAAS;AAAA,EAC/C,MAAM,QAAQ,OAAO,eAAe,IAAI;AAAA,EACxC,IAAI,YAAY,iBAAiB,IAAI,KAAK;AAAA,EAC1C,IAAI,CAAC,WAAW;AAAA,IACZ,YAAY,IAAI;AAAA,IAChB,iBAAiB,IAAI,OAAO,SAAS;AAAA,EACzC;AAAA,EACA,IAAI,UAAU,IAAI,KAAK;AAAA,IACnB;AAAA,EACJ,UAAU,IAAI,KAAK;AAAA,EACnB,WAAW,OAAO,SAAS;AAAA,IACvB,MAAM,KAAK,QAAQ;AAAA,IACnB,OAAO,eAAe,OAAO,KAAK;AAAA,MAC9B,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,GAAG,GAAG;AAAA,QACF,MAAM,QAAQ,GAAG,KAAK,IAAI;AAAA,QAC1B,OAAO,eAAe,MAAM,KAAK;AAAA,UAC7B,cAAc;AAAA,UACd,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,OAAO;AAAA,QACX,CAAC;AAAA,QACD,OAAO;AAAA;AAAA,MAEX,GAAG,CAAC,GAAG;AAAA,QACH,OAAO,eAAe,MAAM,KAAK;AAAA,UAC7B,cAAc;AAAA,UACd,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,OAAO;AAAA,QACX,CAAC;AAAA;AAAA,IAET,CAAC;AAAA,EACL;AAAA;AAEG,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EACxE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,OAAO,OAAO,KAAK,cAAc;AAAA,IAC7B,YAAY;AAAA,MACR,OAAO,+BAA+B,MAAM,OAAO;AAAA,MACnD,QAAQ,+BAA+B,MAAM,QAAQ;AAAA,IACzD;AAAA,EACJ,CAAC;AAAA,EACD,KAAK,eAAe,yBAAyB,MAAM,CAAC,CAAC;AAAA,EACrD,KAAK,MAAM;AAAA,EACX,KAAK,OAAO,IAAI;AAAA,EAChB,OAAO,eAAe,MAAM,QAAQ,EAAE,OAAO,IAAI,CAAC;AAAA,EAMlD,KAAK,QAAQ,CAAC,MAAM,WAAiB,OAAM,MAAM,MAAM,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC;AAAA,EACrF,KAAK,YAAY,CAAC,MAAM,WAAiB,WAAU,MAAM,MAAM,MAAM;AAAA,EACrE,KAAK,aAAa,OAAO,MAAM,WAAiB,YAAW,MAAM,MAAM,QAAQ,EAAE,QAAQ,KAAK,WAAW,CAAC;AAAA,EAC1G,KAAK,iBAAiB,OAAO,MAAM,WAAiB,gBAAe,MAAM,MAAM,MAAM;AAAA,EACrF,KAAK,MAAM,KAAK;AAAA,EAChB,KAAK,SAAS,CAAC,MAAM,WAAiB,QAAO,MAAM,MAAM,MAAM;AAAA,EAC/D,KAAK,SAAS,CAAC,MAAM,WAAiB,QAAO,MAAM,MAAM,MAAM;AAAA,EAC/D,KAAK,cAAc,OAAO,MAAM,WAAiB,aAAY,MAAM,MAAM,MAAM;AAAA,EAC/E,KAAK,cAAc,OAAO,MAAM,WAAiB,aAAY,MAAM,MAAM,MAAM;AAAA,EAC/E,KAAK,aAAa,CAAC,MAAM,WAAiB,YAAW,MAAM,MAAM,MAAM;AAAA,EACvE,KAAK,aAAa,CAAC,MAAM,WAAiB,YAAW,MAAM,MAAM,MAAM;AAAA,EACvE,KAAK,kBAAkB,OAAO,MAAM,WAAiB,iBAAgB,MAAM,MAAM,MAAM;AAAA,EACvF,KAAK,kBAAkB,OAAO,MAAM,WAAiB,iBAAgB,MAAM,MAAM,MAAM;AAAA,EAOvF,oBAAoB,MAAM,WAAW;AAAA,IACjC,KAAK,IAAI,MAAM;AAAA,MACX,MAAM,OAAM,KAAK;AAAA,MACjB,OAAO,KAAK,MAAM,aAAK,UAAU,MAAK;AAAA,QAClC,QAAQ;AAAA,UACJ,GAAI,KAAI,UAAU,CAAC;AAAA,UACnB,GAAG,KAAK,IAAI,CAAC,OAAO,OAAO,OAAO,aAAa,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;AAAA,QACvH;AAAA,MACJ,CAAC,GAAG,EAAE,QAAQ,KAAK,CAAC;AAAA;AAAA,IAExB,IAAI,IAAI,MAAM;AAAA,MACV,OAAO,KAAK,MAAM,GAAG,IAAI;AAAA;AAAA,IAE7B,KAAK,CAAC,MAAK,QAAQ;AAAA,MACf,OAAY,MAAM,MAAM,MAAK,MAAM;AAAA;AAAA,IAEvC,KAAK,GAAG;AAAA,MACJ,OAAO;AAAA;AAAA,IAEX,QAAQ,CAAC,KAAK,OAAM;AAAA,MAChB,IAAI,IAAI,MAAM,KAAI;AAAA,MAClB,OAAO;AAAA;AAAA,IAEX,MAAM,CAAC,OAAO,QAAQ;AAAA,MAClB,OAAO,KAAK,MAAM,OAAO,OAAO,MAAM,CAAC;AAAA;AAAA,IAE3C,WAAW,CAAC,YAAY,QAAQ;AAAA,MAC5B,OAAO,KAAK,MAAM,YAAY,YAAY,MAAM,CAAC;AAAA;AAAA,IAErD,SAAS,CAAC,IAAI;AAAA,MACV,OAAO,KAAK,MAAa,WAAU,EAAE,CAAC;AAAA;AAAA,IAE1C,QAAQ,GAAG;AAAA,MACP,OAAO,SAAS,IAAI;AAAA;AAAA,IAExB,aAAa,GAAG;AAAA,MACZ,OAAO,cAAc,IAAI;AAAA;AAAA,IAE7B,QAAQ,GAAG;AAAA,MACP,OAAO,SAAS,IAAI;AAAA;AAAA,IAExB,OAAO,GAAG;AAAA,MACN,OAAO,SAAS,SAAS,IAAI,CAAC;AAAA;AAAA,IAElC,WAAW,CAAC,QAAQ;AAAA,MAChB,OAAO,YAAY,MAAM,MAAM;AAAA;AAAA,IAEnC,KAAK,GAAG;AAAA,MACJ,OAAO,MAAM,IAAI;AAAA;AAAA,IAErB,EAAE,CAAC,KAAK;AAAA,MACJ,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC;AAAA;AAAA,IAE5B,GAAG,CAAC,KAAK;AAAA,MACL,OAAO,aAAa,MAAM,GAAG;AAAA;AAAA,IAEjC,SAAS,CAAC,IAAI;AAAA,MACV,OAAO,KAAK,MAAM,UAAU,EAAE,CAAC;AAAA;AAAA,IAEnC,OAAO,CAAC,GAAG;AAAA,MACP,OAAO,UAAS,MAAM,CAAC;AAAA;AAAA,IAE3B,QAAQ,CAAC,GAAG;AAAA,MACR,OAAO,SAAS,MAAM,CAAC;AAAA;AAAA,IAE3B,KAAK,CAAC,QAAQ;AAAA,MACV,OAAO,QAAO,MAAM,MAAM;AAAA;AAAA,IAE9B,IAAI,CAAC,QAAQ;AAAA,MACT,OAAO,KAAK,MAAM,MAAM;AAAA;AAAA,IAE5B,QAAQ,GAAG;AAAA,MACP,OAAO,SAAS,IAAI;AAAA;AAAA,IAExB,QAAQ,CAAC,aAAa;AAAA,MAClB,MAAM,KAAK,KAAK,MAAM;AAAA,MACjB,eAAe,IAAI,IAAI,EAAE,YAAY,CAAC;AAAA,MAC3C,OAAO;AAAA;AAAA,IAEX,IAAI,IAAI,MAAM;AAAA,MAKV,IAAI,KAAK,WAAW;AAAA,QAChB,OAAY,eAAe,IAAI,IAAI;AAAA,MACvC,MAAM,KAAK,KAAK,MAAM;AAAA,MACjB,eAAe,IAAI,IAAI,KAAK,EAAE;AAAA,MACnC,OAAO;AAAA;AAAA,IAEX,UAAU,GAAG;AAAA,MACT,OAAO,KAAK,UAAU,SAAS,EAAE;AAAA;AAAA,IAErC,UAAU,GAAG;AAAA,MACT,OAAO,KAAK,UAAU,IAAI,EAAE;AAAA;AAAA,IAEhC,KAAK,CAAC,IAAI;AAAA,MACN,OAAO,GAAG,IAAI;AAAA;AAAA,EAEtB,CAAC;AAAA,EACD,OAAO,eAAe,MAAM,eAAe;AAAA,IACvC,GAAG,GAAG;AAAA,MACF,OAAY,eAAe,IAAI,IAAI,GAAG;AAAA;AAAA,IAE1C,cAAc;AAAA,EAClB,CAAC;AAAA,EACD,OAAO;AAAA,CACV;AAEM,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,gBAAgB,MAAM,KAAK,MAAM,MAAM;AAAA,EACvG,MAAM,MAAM,KAAK,KAAK;AAAA,EACtB,KAAK,SAAS,IAAI,UAAU;AAAA,EAC5B,KAAK,YAAY,IAAI,WAAW;AAAA,EAChC,KAAK,YAAY,IAAI,WAAW;AAAA,EAChC,oBAAoB,MAAM,cAAc;AAAA,IACpC,KAAK,IAAI,MAAM;AAAA,MACX,OAAO,KAAK,MAAa,OAAM,GAAG,IAAI,CAAC;AAAA;AAAA,IAE3C,QAAQ,IAAI,MAAM;AAAA,MACd,OAAO,KAAK,MAAa,UAAS,GAAG,IAAI,CAAC;AAAA;AAAA,IAE9C,UAAU,IAAI,MAAM;AAAA,MAChB,OAAO,KAAK,MAAa,YAAW,GAAG,IAAI,CAAC;AAAA;AAAA,IAEhD,QAAQ,IAAI,MAAM;AAAA,MACd,OAAO,KAAK,MAAa,UAAS,GAAG,IAAI,CAAC;AAAA;AAAA,IAE9C,GAAG,IAAI,MAAM;AAAA,MACT,OAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA;AAAA,IAE/C,GAAG,IAAI,MAAM;AAAA,MACT,OAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA;AAAA,IAE/C,MAAM,IAAI,MAAM;AAAA,MACZ,OAAO,KAAK,MAAa,QAAO,GAAG,IAAI,CAAC;AAAA;AAAA,IAE5C,QAAQ,IAAI,MAAM;AAAA,MACd,OAAO,KAAK,MAAa,WAAU,GAAG,GAAG,IAAI,CAAC;AAAA;AAAA,IAElD,SAAS,CAAC,QAAQ;AAAA,MACd,OAAO,KAAK,MAAa,WAAU,MAAM,CAAC;AAAA;AAAA,IAE9C,SAAS,CAAC,QAAQ;AAAA,MACd,OAAO,KAAK,MAAa,WAAU,MAAM,CAAC;AAAA;AAAA,IAE9C,IAAI,GAAG;AAAA,MACH,OAAO,KAAK,MAAa,MAAK,CAAC;AAAA;AAAA,IAEnC,SAAS,IAAI,MAAM;AAAA,MACf,OAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA;AAAA,IAE/C,WAAW,GAAG;AAAA,MACV,OAAO,KAAK,MAAa,aAAY,CAAC;AAAA;AAAA,IAE1C,WAAW,GAAG;AAAA,MACV,OAAO,KAAK,MAAa,aAAY,CAAC;AAAA;AAAA,IAE1C,OAAO,GAAG;AAAA,MACN,OAAO,KAAK,MAAa,SAAQ,CAAC;AAAA;AAAA,EAE1C,CAAC;AAAA,CACJ;AACM,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,WAAW,KAAK,MAAM,GAAG;AAAA,EACzB,KAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AAAA,EACjE,KAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAAA,EAC3D,KAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAAA,EAC3D,KAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,QAAO,UAAU,MAAM,CAAC;AAAA,EACjE,KAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAAA,EAC9D,KAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAAA,EAC9D,KAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAAA,EAClE,KAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAAA,EAClE,KAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAAA,EAClE,KAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AAAA,EACpE,KAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAAA,EAC9D,KAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAAA,EAC9D,KAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AAAA,EACjE,KAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAAA,EAC9D,KAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AAAA,EACpE,KAAK,YAAY,CAAC,WAAW,KAAK,MAAW,WAAW,cAAc,MAAM,CAAC;AAAA,EAC7E,KAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAAA,EAC3D,KAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AAAA,EACjE,KAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAAA,EAC9D,KAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAAA,EAC9D,KAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AAAA,EACpE,KAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AAAA,EACpE,KAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAAA,EAE9D,KAAK,WAAW,CAAC,WAAW,KAAK,MAAU,UAAS,MAAM,CAAC;AAAA,EAC3D,KAAK,OAAO,CAAC,WAAW,KAAK,MAAU,MAAK,MAAM,CAAC;AAAA,EACnD,KAAK,OAAO,CAAC,WAAW,KAAK,MAAU,MAAK,MAAM,CAAC;AAAA,EACnD,KAAK,WAAW,CAAC,WAAW,KAAK,MAAU,UAAS,MAAM,CAAC;AAAA,CAC9D;AACM,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,WAAW,MAAM;AAAA;AAElC,IAAM,kCAAqC,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAAA,EACxF,iBAAiB,KAAK,MAAM,GAAG;AAAA,EACpC,WAAW,KAAK,MAAM,GAAG;AAAA,CAC5B;AACM,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAE1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,MAAK,CAAC,QAAQ;AAAA,EAC1B,OAAY,OAAO,UAAU,MAAM;AAAA;AAEhC,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAExE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAExE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,SAAS,MAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,SAAS,MAAM;AAAA;AAGhC,SAAS,MAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,SAAS,MAAM;AAAA;AAGhC,SAAS,MAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,SAAS,MAAM;AAAA;AAEhC,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EAEtE,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,GAAG,CAAC,QAAQ;AAAA,EACxB,OAAY,KAAK,QAAQ,MAAM;AAAA;AAE5B,SAAS,OAAO,CAAC,QAAQ;AAAA,EAC5B,OAAY,KAAK,QAAQ;AAAA,IACrB,UAAe,gBAAQ;AAAA,IACvB,UAAe,gBAAQ;AAAA,OACpB,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAE1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,MAAK,CAAC,QAAQ;AAAA,EAC1B,OAAY,QAAO,UAAU,MAAM;AAAA;AAEhC,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAE5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,WAAW,MAAM;AAAA;AAOlC,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAExE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AAQM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAE1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,MAAK,CAAC,QAAQ;AAAA,EAC1B,OAAY,OAAO,UAAU,MAAM;AAAA;AAEhC,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAExE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EAEtE,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,IAAG,CAAC,QAAQ;AAAA,EACxB,OAAY,KAAK,QAAQ,MAAM;AAAA;AAE5B,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAE1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,MAAK,CAAC,QAAQ;AAAA,EAC1B,OAAY,OAAO,UAAU,MAAM;AAAA;AAEhC,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAExE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EAEtE,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,IAAG,CAAC,QAAQ;AAAA,EACxB,OAAY,KAAK,QAAQ,MAAM;AAAA;AAE5B,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAExE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,WAAW,MAAM;AAAA;AAElC,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,WAAW,MAAM;AAAA;AAElC,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAE5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,WAAW,MAAM;AAAA;AAElC,IAAM,+BAAkC,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAAA,EAElF,cAAc,KAAK,MAAM,GAAG;AAAA,EACjC,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,UAAS,CAAC,QAAQ;AAAA,EAC9B,OAAY,WAAW,cAAc,MAAM;AAAA;AAExC,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EAExE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EAEtE,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,GAAG,CAAC,QAAQ;AAAA,EACxB,OAAY,KAAK,QAAQ,MAAM;AAAA;AAE5B,IAAM,wCAA2C,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AAAA,EAEpG,uBAAuB,KAAK,MAAM,GAAG;AAAA,EAC1C,gBAAgB,KAAK,MAAM,GAAG;AAAA,CACjC;AACM,SAAS,YAAY,CAAC,QAAQ,WAAW,UAAU,CAAC,GAAG;AAAA,EAC1D,OAAY,cAAc,uBAAuB,QAAQ,WAAW,OAAO;AAAA;AAExE,SAAS,SAAQ,CAAC,SAAS;AAAA,EAC9B,OAAY,cAAc,uBAAuB,YAAiB,gBAAQ,UAAU,OAAO;AAAA;AAExF,SAAS,IAAG,CAAC,SAAS;AAAA,EACzB,OAAY,cAAc,uBAAuB,OAAY,gBAAQ,KAAK,OAAO;AAAA;AAE9E,SAAS,IAAI,CAAC,KAAK,QAAQ;AAAA,EAC9B,MAAM,MAAM,QAAQ,OAAO;AAAA,EAC3B,MAAM,SAAS,GAAG,OAAO;AAAA,EACzB,MAAM,QAAa,gBAAQ;AAAA,EAC3B,IAAI,CAAC;AAAA,IACD,MAAM,IAAI,MAAM,6BAA6B,QAAQ;AAAA,EACzD,OAAY,cAAc,uBAAuB,QAAQ,OAAO,MAAM;AAAA;AAEnE,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,gBAAgB,MAAM,KAAK,MAAM,MAAM;AAAA,EACvG,oBAAoB,MAAM,aAAa;AAAA,IACnC,EAAE,CAAC,OAAO,QAAQ;AAAA,MACd,OAAO,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAAA;AAAA,IAE9C,GAAG,CAAC,OAAO,QAAQ;AAAA,MACf,OAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA;AAAA,IAE/C,GAAG,CAAC,OAAO,QAAQ;AAAA,MACf,OAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA;AAAA,IAE/C,EAAE,CAAC,OAAO,QAAQ;AAAA,MACd,OAAO,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAAA;AAAA,IAE9C,GAAG,CAAC,OAAO,QAAQ;AAAA,MACf,OAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA;AAAA,IAE/C,GAAG,CAAC,OAAO,QAAQ;AAAA,MACf,OAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA;AAAA,IAE/C,GAAG,CAAC,QAAQ;AAAA,MACR,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC;AAAA;AAAA,IAEjC,IAAI,CAAC,QAAQ;AAAA,MACT,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC;AAAA;AAAA,IAEjC,QAAQ,CAAC,QAAQ;AAAA,MACb,OAAO,KAAK,MAAa,IAAG,GAAG,MAAM,CAAC;AAAA;AAAA,IAE1C,WAAW,CAAC,QAAQ;AAAA,MAChB,OAAO,KAAK,MAAa,KAAI,GAAG,MAAM,CAAC;AAAA;AAAA,IAE3C,QAAQ,CAAC,QAAQ;AAAA,MACb,OAAO,KAAK,MAAa,IAAG,GAAG,MAAM,CAAC;AAAA;AAAA,IAE1C,WAAW,CAAC,QAAQ;AAAA,MAChB,OAAO,KAAK,MAAa,KAAI,GAAG,MAAM,CAAC;AAAA;AAAA,IAE3C,UAAU,CAAC,OAAO,QAAQ;AAAA,MACtB,OAAO,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAAA;AAAA,IAEtD,IAAI,CAAC,OAAO,QAAQ;AAAA,MAChB,OAAO,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAAA;AAAA,IAEtD,MAAM,GAAG;AAAA,MACL,OAAO;AAAA;AAAA,EAEf,CAAC;AAAA,EACD,MAAM,MAAM,KAAK,KAAK;AAAA,EACtB,KAAK,WACD,KAAK,IAAI,IAAI,WAAW,OAAO,mBAAmB,IAAI,oBAAoB,OAAO,iBAAiB,KAAK;AAAA,EAC3G,KAAK,WACD,KAAK,IAAI,IAAI,WAAW,OAAO,mBAAmB,IAAI,oBAAoB,OAAO,iBAAiB,KAAK;AAAA,EAC3G,KAAK,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,KAAK,OAAO,cAAc,IAAI,cAAc,GAAG;AAAA,EAC7F,KAAK,WAAW;AAAA,EAChB,KAAK,SAAS,IAAI,UAAU;AAAA,CAC/B;AACM,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,WAAW,MAAM;AAAA;AAElC,IAAM,kCAAqC,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAAA,EACxF,iBAAiB,KAAK,MAAM,GAAG;AAAA,EACpC,UAAU,KAAK,MAAM,GAAG;AAAA,CAC3B;AACM,SAAS,GAAG,CAAC,QAAQ;AAAA,EACxB,OAAY,KAAK,iBAAiB,MAAM;AAAA;AAErC,SAAS,OAAO,CAAC,QAAQ;AAAA,EAC5B,OAAY,SAAS,iBAAiB,MAAM;AAAA;AAEzC,SAAS,OAAO,CAAC,QAAQ;AAAA,EAC5B,OAAY,SAAS,iBAAiB,MAAM;AAAA;AAEzC,SAAS,KAAK,CAAC,QAAQ;AAAA,EAC1B,OAAY,OAAO,iBAAiB,MAAM;AAAA;AAEvC,SAAS,MAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,iBAAiB,MAAM;AAAA;AAExC,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,YAAY,KAAK,MAAM,GAAG;AAAA,EAC/B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,iBAAiB,MAAM,KAAK,MAAM,MAAM;AAAA,CAC3G;AACM,SAAS,QAAO,CAAC,QAAQ;AAAA,EAC5B,OAAY,SAAS,YAAY,MAAM;AAAA;AAEpC,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,gBAAgB,MAAM,KAAK,MAAM,MAAM;AAAA,EACvG,KAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,EAClE,KAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,EAClE,KAAK,KAAK,CAAC,OAAO,WAAW,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAAA,EAChE,KAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,EAClE,KAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,EAClE,KAAK,KAAK,CAAC,OAAO,WAAW,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAAA,EAChE,KAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,EAClE,KAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,EAClE,KAAK,WAAW,CAAC,WAAW,KAAK,MAAa,IAAG,OAAO,CAAC,GAAG,MAAM,CAAC;AAAA,EACnE,KAAK,WAAW,CAAC,WAAW,KAAK,MAAa,IAAG,OAAO,CAAC,GAAG,MAAM,CAAC;AAAA,EACnE,KAAK,cAAc,CAAC,WAAW,KAAK,MAAa,KAAI,OAAO,CAAC,GAAG,MAAM,CAAC;AAAA,EACvE,KAAK,cAAc,CAAC,WAAW,KAAK,MAAa,KAAI,OAAO,CAAC,GAAG,MAAM,CAAC;AAAA,EACvE,KAAK,aAAa,CAAC,OAAO,WAAW,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAAA,EAChF,MAAM,MAAM,KAAK,KAAK;AAAA,EACtB,KAAK,WAAW,IAAI,WAAW;AAAA,EAC/B,KAAK,WAAW,IAAI,WAAW;AAAA,EAC/B,KAAK,SAAS,IAAI,UAAU;AAAA,CAC/B;AACM,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,WAAW,MAAM;AAAA;AAElC,IAAM,kCAAqC,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAAA,EACxF,iBAAiB,KAAK,MAAM,GAAG;AAAA,EACpC,UAAU,KAAK,MAAM,GAAG;AAAA,CAC3B;AAEM,SAAS,KAAK,CAAC,QAAQ;AAAA,EAC1B,OAAY,OAAO,iBAAiB,MAAM;AAAA;AAGvC,SAAS,MAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,iBAAiB,MAAM;AAAA;AAExC,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,gBAAgB,MAAM,KAAK,MAAM,MAAM;AAAA,CAC1G;AACM,SAAS,MAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,QAAQ,WAAW,MAAM;AAAA;AAElC,IAAM,+BAAkC,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAAA,EAClF,cAAc,KAAK,MAAM,GAAG;AAAA,EACjC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,mBAAmB,MAAM,KAAK,MAAM,MAAM;AAAA,CAC7G;AACD,SAAS,WAAU,CAAC,QAAQ;AAAA,EACxB,OAAY,YAAW,cAAc,MAAM;AAAA;AAGxC,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EACxE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,cAAc,MAAM,KAAK,MAAM,MAAM;AAAA,CACxG;AACD,SAAS,MAAK,CAAC,QAAQ;AAAA,EACnB,OAAY,OAAM,SAAS,MAAM;AAAA;AAG9B,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EACtE,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,aAAa,MAAM,KAAK,MAAM,MAAM;AAAA,CACvG;AACM,SAAS,GAAG,GAAG;AAAA,EAClB,OAAY,KAAK,MAAM;AAAA;AAEpB,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,YAAY,KAAK,MAAM,GAAG;AAAA,EAC/B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,iBAAiB,MAAM,KAAK,MAAM,MAAM;AAAA,CAC3G;AACM,SAAS,OAAO,GAAG;AAAA,EACtB,OAAY,SAAS,UAAU;AAAA;AAE5B,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,eAAe,MAAM,KAAK,MAAM,MAAM;AAAA,CACzG;AACM,SAAS,KAAK,CAAC,QAAQ;AAAA,EAC1B,OAAY,OAAO,UAAU,MAAM;AAAA;AAEhC,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EACxE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,cAAc,MAAM,KAAK,MAAM,MAAM;AAAA,CACxG;AACD,SAAS,MAAK,CAAC,QAAQ;AAAA,EACnB,OAAY,MAAM,SAAS,MAAM;AAAA;AAG9B,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EACxE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,cAAc,MAAM,KAAK,MAAM,MAAM;AAAA,EACrG,KAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,EAClE,KAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,EAClE,MAAM,IAAI,KAAK,KAAK;AAAA,EACpB,KAAK,UAAU,EAAE,UAAU,IAAI,KAAK,EAAE,OAAO,IAAI;AAAA,EACjD,KAAK,UAAU,EAAE,UAAU,IAAI,KAAK,EAAE,OAAO,IAAI;AAAA,CACpD;AACM,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,eAAe,MAAM,KAAK,MAAM,MAAM;AAAA,EACtG,KAAK,UAAU,IAAI;AAAA,EACnB,oBAAoB,MAAM,YAAY;AAAA,IAClC,GAAG,CAAC,GAAG,QAAQ;AAAA,MACX,OAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA;AAAA,IAEjD,QAAQ,CAAC,QAAQ;AAAA,MACb,OAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA;AAAA,IAEjD,GAAG,CAAC,GAAG,QAAQ;AAAA,MACX,OAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA;AAAA,IAEjD,MAAM,CAAC,GAAG,QAAQ;AAAA,MACd,OAAO,KAAK,MAAa,QAAO,GAAG,MAAM,CAAC;AAAA;AAAA,IAE9C,MAAM,GAAG;AAAA,MACL,OAAO,KAAK;AAAA;AAAA,EAEpB,CAAC;AAAA,CACJ;AACM,SAAS,KAAK,CAAC,SAAS,QAAQ;AAAA,EACnC,OAAY,OAAO,UAAU,SAAS,MAAM;AAAA;AAGzC,SAAS,KAAK,CAAC,QAAQ;AAAA,EAC1B,MAAM,QAAQ,OAAO,KAAK,IAAI;AAAA,EAC9B,OAAO,OAAM,OAAO,KAAK,KAAK,CAAC;AAAA;AAE5B,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,cAAc,KAAK,MAAM,GAAG;AAAA,EACjC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,gBAAgB,MAAM,KAAK,MAAM,MAAM;AAAA,EACvG,aAAK,WAAW,MAAM,SAAS,MAAM;AAAA,IACjC,OAAO,IAAI;AAAA,GACd;AAAA,EACD,oBAAoB,MAAM,aAAa;AAAA,IACnC,KAAK,GAAG;AAAA,MACJ,OAAO,OAAM,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC;AAAA;AAAA,IAEjD,QAAQ,CAAC,UAAU;AAAA,MACf,OAAO,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,SAAmB,CAAC;AAAA;AAAA,IAE9D,WAAW,GAAG;AAAA,MACV,OAAO,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,UAAU,QAAQ,EAAE,CAAC;AAAA;AAAA,IAE/D,KAAK,GAAG;AAAA,MACJ,OAAO,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,UAAU,QAAQ,EAAE,CAAC;AAAA;AAAA,IAE/D,MAAM,GAAG;AAAA,MACL,OAAO,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,UAAU,MAAM,EAAE,CAAC;AAAA;AAAA,IAE7D,KAAK,GAAG;AAAA,MACJ,OAAO,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,UAAU,UAAU,CAAC;AAAA;AAAA,IAE/D,MAAM,CAAC,UAAU;AAAA,MACb,OAAO,aAAK,OAAO,MAAM,QAAQ;AAAA;AAAA,IAErC,UAAU,CAAC,UAAU;AAAA,MACjB,OAAO,aAAK,WAAW,MAAM,QAAQ;AAAA;AAAA,IAEzC,KAAK,CAAC,OAAO;AAAA,MACT,OAAO,aAAK,MAAM,MAAM,KAAK;AAAA;AAAA,IAEjC,IAAI,CAAC,MAAM;AAAA,MACP,OAAO,aAAK,KAAK,MAAM,IAAI;AAAA;AAAA,IAE/B,IAAI,CAAC,MAAM;AAAA,MACP,OAAO,aAAK,KAAK,MAAM,IAAI;AAAA;AAAA,IAE/B,OAAO,IAAI,MAAM;AAAA,MACb,OAAO,aAAK,QAAQ,aAAa,MAAM,KAAK,EAAE;AAAA;AAAA,IAElD,QAAQ,IAAI,MAAM;AAAA,MACd,OAAO,aAAK,SAAS,gBAAgB,MAAM,KAAK,EAAE;AAAA;AAAA,EAE1D,CAAC;AAAA,CACJ;AACM,SAAS,MAAM,CAAC,OAAO,QAAQ;AAAA,EAClC,MAAM,MAAM;AAAA,IACR,MAAM;AAAA,IACN,OAAO,SAAS,CAAC;AAAA,OACd,aAAK,gBAAgB,MAAM;AAAA,EAClC;AAAA,EACA,OAAO,IAAI,UAAU,GAAG;AAAA;AAGrB,SAAS,YAAY,CAAC,OAAO,QAAQ;AAAA,EACxC,OAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA,UAAU,MAAM;AAAA,OACb,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,WAAW,CAAC,OAAO,QAAQ;AAAA,EACvC,OAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA,UAAU,QAAQ;AAAA,OACf,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,eAAe,MAAM,KAAK,MAAM,MAAM;AAAA,EACtG,KAAK,UAAU,IAAI;AAAA,CACtB;AACM,SAAS,KAAK,CAAC,SAAS,QAAQ;AAAA,EACnC,OAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EAC3E,SAAS,KAAK,MAAM,GAAG;AAAA,EAClB,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,eAAe,MAAM,KAAK,MAAM,MAAM;AAAA,EACtG,KAAK,UAAU,IAAI;AAAA,CACtB;AAIM,SAAS,GAAG,CAAC,SAAS,QAAQ;AAAA,EACjC,OAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,OACR,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,wCAA2C,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AAAA,EACzG,SAAS,KAAK,MAAM,GAAG;AAAA,EAClB,uBAAuB,KAAK,MAAM,GAAG;AAAA,CAC7C;AACM,SAAS,kBAAkB,CAAC,eAAe,SAAS,QAAQ;AAAA,EAE/D,OAAO,IAAI,sBAAsB;AAAA,IAC7B,MAAM;AAAA,IACN;AAAA,IACA;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,kCAAqC,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAAA,EACxF,iBAAiB,KAAK,MAAM,GAAG;AAAA,EACpC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,sBAAsB,MAAM,KAAK,MAAM,MAAM;AAAA,CAChH;AACM,SAAS,YAAY,CAAC,MAAM,OAAO;AAAA,EACtC,OAAO,IAAI,gBAAgB;AAAA,IACvB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACJ,CAAC;AAAA;AAEE,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,eAAe,MAAM,KAAK,MAAM,MAAM;AAAA,EACtG,KAAK,OAAO,CAAC,SAAS,KAAK,MAAM;AAAA,OAC1B,KAAK,KAAK;AAAA,IACb;AAAA,EACJ,CAAC;AAAA,CACJ;AACM,SAAS,KAAK,CAAC,OAAO,eAAe,SAAS;AAAA,EACjD,MAAM,UAAU,yBAA8B;AAAA,EAC9C,MAAM,SAAS,UAAU,UAAU;AAAA,EACnC,MAAM,OAAO,UAAU,gBAAgB;AAAA,EACvC,OAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,gBAAgB,MAAM,KAAK,MAAM,MAAM;AAAA,EACvG,KAAK,UAAU,IAAI;AAAA,EACnB,KAAK,YAAY,IAAI;AAAA,CACxB;AACM,SAAS,MAAM,CAAC,SAAS,WAAW,QAAQ;AAAA,EAE/C,IAAI,CAAC,aAAa,CAAC,UAAU,MAAM;AAAA,IAC/B,OAAO,IAAI,UAAU;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,QAAO;AAAA,MAChB,WAAW;AAAA,SACR,aAAK,gBAAgB,SAAS;AAAA,IACrC,CAAC;AAAA,EACL;AAAA,EACA,OAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAGE,SAAS,aAAa,CAAC,SAAS,WAAW,QAAQ;AAAA,EACtD,MAAM,IAAS,MAAM,OAAO;AAAA,EAC5B,EAAE,KAAK,SAAS;AAAA,EAChB,OAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,SAAS,WAAW,CAAC,SAAS,WAAW,QAAQ;AAAA,EACpD,OAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,MAAM;AAAA,OACH,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EACtE,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,aAAa,MAAM,KAAK,MAAM,MAAM;AAAA,EACpG,KAAK,UAAU,IAAI;AAAA,EACnB,KAAK,YAAY,IAAI;AAAA,EACrB,KAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AAAA,EACzD,KAAK,WAAW,CAAC,WAAW,KAAK,MAAW,SAAS,GAAG,MAAM,CAAC;AAAA,EAC/D,KAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AAAA,EACzD,KAAK,OAAO,IAAI,SAAS,KAAK,MAAW,MAAM,GAAG,IAAI,CAAC;AAAA,CAC1D;AACM,SAAS,GAAG,CAAC,SAAS,WAAW,QAAQ;AAAA,EAC5C,OAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EACtE,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,aAAa,MAAM,KAAK,MAAM,MAAM;AAAA,EACpG,KAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AAAA,EACzD,KAAK,WAAW,CAAC,WAAW,KAAK,MAAW,SAAS,GAAG,MAAM,CAAC;AAAA,EAC/D,KAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AAAA,EACzD,KAAK,OAAO,IAAI,SAAS,KAAK,MAAW,MAAM,GAAG,IAAI,CAAC;AAAA,CAC1D;AACM,SAAS,GAAG,CAAC,WAAW,QAAQ;AAAA,EACnC,OAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EACxE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,cAAc,MAAM,KAAK,MAAM,MAAM;AAAA,EACrG,KAAK,OAAO,IAAI;AAAA,EAChB,KAAK,UAAU,OAAO,OAAO,IAAI,OAAO;AAAA,EACxC,MAAM,OAAO,IAAI,IAAI,OAAO,KAAK,IAAI,OAAO,CAAC;AAAA,EAC7C,KAAK,UAAU,CAAC,QAAQ,WAAW;AAAA,IAC/B,MAAM,aAAa,CAAC;AAAA,IACpB,WAAW,SAAS,QAAQ;AAAA,MACxB,IAAI,KAAK,IAAI,KAAK,GAAG;AAAA,QACjB,WAAW,SAAS,IAAI,QAAQ;AAAA,MACpC,EAEI;AAAA,cAAM,IAAI,MAAM,OAAO,yBAAyB;AAAA,IACxD;AAAA,IACA,OAAO,IAAI,QAAQ;AAAA,SACZ;AAAA,MACH,QAAQ,CAAC;AAAA,SACN,aAAK,gBAAgB,MAAM;AAAA,MAC9B,SAAS;AAAA,IACb,CAAC;AAAA;AAAA,EAEL,KAAK,UAAU,CAAC,QAAQ,WAAW;AAAA,IAC/B,MAAM,aAAa,KAAK,IAAI,QAAQ;AAAA,IACpC,WAAW,SAAS,QAAQ;AAAA,MACxB,IAAI,KAAK,IAAI,KAAK,GAAG;AAAA,QACjB,OAAO,WAAW;AAAA,MACtB,EAEI;AAAA,cAAM,IAAI,MAAM,OAAO,yBAAyB;AAAA,IACxD;AAAA,IACA,OAAO,IAAI,QAAQ;AAAA,SACZ;AAAA,MACH,QAAQ,CAAC;AAAA,SACN,aAAK,gBAAgB,MAAM;AAAA,MAC9B,SAAS;AAAA,IACb,CAAC;AAAA;AAAA,CAER;AACD,SAAS,MAAK,CAAC,QAAQ,QAAQ;AAAA,EAC3B,MAAM,UAAU,MAAM,QAAQ,MAAM,IAAI,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AAAA,EACxF,OAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAUE,SAAS,UAAU,CAAC,SAAS,QAAQ;AAAA,EACxC,OAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,YAAY,KAAK,MAAM,GAAG;AAAA,EAC/B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,iBAAiB,MAAM,KAAK,MAAM,MAAM;AAAA,EACxG,KAAK,SAAS,IAAI,IAAI,IAAI,MAAM;AAAA,EAChC,OAAO,eAAe,MAAM,SAAS;AAAA,IACjC,GAAG,GAAG;AAAA,MACF,IAAI,IAAI,OAAO,SAAS,GAAG;AAAA,QACvB,MAAM,IAAI,MAAM,4EAA4E;AAAA,MAChG;AAAA,MACA,OAAO,IAAI,OAAO;AAAA;AAAA,EAE1B,CAAC;AAAA,CACJ;AACM,SAAS,OAAO,CAAC,OAAO,QAAQ;AAAA,EACnC,OAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,OAC1C,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EACxE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,cAAc,MAAM,KAAK,MAAM,MAAM;AAAA,EACrG,KAAK,MAAM,CAAC,MAAM,WAAW,KAAK,MAAW,SAAS,MAAM,MAAM,CAAC;AAAA,EACnE,KAAK,MAAM,CAAC,MAAM,WAAW,KAAK,MAAW,SAAS,MAAM,MAAM,CAAC;AAAA,EACnE,KAAK,OAAO,CAAC,OAAO,WAAW,KAAK,MAAW,MAAM,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;AAAA,CACvG;AACM,SAAS,IAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,MAAM,SAAS,MAAM;AAAA;AAE9B,IAAM,+BAAkC,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAAA,EAClF,cAAc,KAAK,MAAM,GAAG;AAAA,EACjC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,mBAAmB,MAAM,KAAK,MAAM,MAAM;AAAA,EAC1G,KAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AAAA,IACjC,IAAI,KAAK,cAAc,YAAY;AAAA,MAC/B,MAAM,IAAS,gBAAgB,KAAK,YAAY,IAAI;AAAA,IACxD;AAAA,IACA,QAAQ,WAAW,CAAC,WAAU;AAAA,MAC1B,IAAI,OAAO,WAAU,UAAU;AAAA,QAC3B,QAAQ,OAAO,KAAK,aAAK,MAAM,QAAO,QAAQ,OAAO,GAAG,CAAC;AAAA,MAC7D,EACK;AAAA,QAED,MAAM,SAAS;AAAA,QACf,IAAI,OAAO;AAAA,UACP,OAAO,WAAW;AAAA,QACtB,OAAO,SAAS,OAAO,OAAO;AAAA,QAC9B,OAAO,UAAU,OAAO,QAAQ,QAAQ;AAAA,QACxC,OAAO,SAAS,OAAO,OAAO;AAAA,QAE9B,QAAQ,OAAO,KAAK,aAAK,MAAM,MAAM,CAAC;AAAA;AAAA;AAAA,IAG9C,MAAM,SAAS,IAAI,UAAU,QAAQ,OAAO,OAAO;AAAA,IACnD,IAAI,kBAAkB,SAAS;AAAA,MAC3B,OAAO,OAAO,KAAK,CAAC,YAAW;AAAA,QAC3B,QAAQ,QAAQ;AAAA,QAChB,QAAQ,WAAW;AAAA,QACnB,OAAO;AAAA,OACV;AAAA,IACL;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB,QAAQ,WAAW;AAAA,IACnB,OAAO;AAAA;AAAA,CAEd;AACM,SAAS,SAAS,CAAC,IAAI;AAAA,EAC1B,OAAO,IAAI,aAAa;AAAA,IACpB,MAAM;AAAA,IACN,WAAW;AAAA,EACf,CAAC;AAAA;AAEE,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EAChF,aAAa,KAAK,MAAM,GAAG;AAAA,EAChC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,kBAAkB,MAAM,KAAK,MAAM,MAAM;AAAA,EACzG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,CACrC;AACM,SAAS,QAAQ,CAAC,WAAW;AAAA,EAChC,OAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAEE,IAAM,mCAAsC,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAAA,EAC1F,kBAAkB,KAAK,MAAM,GAAG;AAAA,EACrC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,kBAAkB,MAAM,KAAK,MAAM,MAAM;AAAA,EACzG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,CACrC;AACM,SAAS,aAAa,CAAC,WAAW;AAAA,EACrC,OAAO,IAAI,iBAAiB;AAAA,IACxB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAEE,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EAChF,aAAa,KAAK,MAAM,GAAG;AAAA,EAChC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,kBAAkB,MAAM,KAAK,MAAM,MAAM;AAAA,EACzG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,CACrC;AACM,SAAS,QAAQ,CAAC,WAAW;AAAA,EAChC,OAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAGE,SAAS,QAAO,CAAC,WAAW;AAAA,EAC/B,OAAO,SAAS,SAAS,SAAS,CAAC;AAAA;AAEhC,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,YAAY,KAAK,MAAM,GAAG;AAAA,EAC/B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,iBAAiB,MAAM,KAAK,MAAM,MAAM;AAAA,EACxG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,EAClC,KAAK,gBAAgB,KAAK;AAAA,CAC7B;AACM,SAAS,SAAQ,CAAC,WAAW,cAAc;AAAA,EAC9C,OAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,QACI,YAAY,GAAG;AAAA,MACf,OAAO,OAAO,iBAAiB,aAAa,aAAa,IAAI,aAAK,aAAa,YAAY;AAAA;AAAA,EAEnG,CAAC;AAAA;AAEE,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EAChF,aAAa,KAAK,MAAM,GAAG;AAAA,EAChC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,kBAAkB,MAAM,KAAK,MAAM,MAAM;AAAA,EACzG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,CACrC;AACM,SAAS,QAAQ,CAAC,WAAW,cAAc;AAAA,EAC9C,OAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,QACI,YAAY,GAAG;AAAA,MACf,OAAO,OAAO,iBAAiB,aAAa,aAAa,IAAI,aAAK,aAAa,YAAY;AAAA;AAAA,EAEnG,CAAC;AAAA;AAEE,IAAM,iCAAoC,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAAA,EACtF,gBAAgB,KAAK,MAAM,GAAG;AAAA,EACnC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,qBAAqB,MAAM,KAAK,MAAM,MAAM;AAAA,EAC5G,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,CACrC;AACM,SAAS,WAAW,CAAC,WAAW,QAAQ;AAAA,EAC3C,OAAO,IAAI,eAAe;AAAA,IACtB,MAAM;AAAA,IACN;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,YAAY,KAAK,MAAM,GAAG;AAAA,EAC/B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,iBAAiB,MAAM,KAAK,MAAM,MAAM;AAAA,EACxG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,CACrC;AACM,SAAS,OAAO,CAAC,WAAW;AAAA,EAC/B,OAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAEE,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC1E,UAAU,KAAK,MAAM,GAAG;AAAA,EAC7B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,eAAe,MAAM,KAAK,MAAM,MAAM;AAAA,EACtG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,EAClC,KAAK,cAAc,KAAK;AAAA,CAC3B;AACD,SAAS,OAAM,CAAC,WAAW,YAAY;AAAA,EACnC,OAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,IACA,YAAa,OAAO,eAAe,aAAa,aAAa,MAAM;AAAA,EACvE,CAAC;AAAA;AAGE,IAAM,yBAA4B,aAAa,UAAU,CAAC,MAAM,QAAQ;AAAA,EACtE,QAAQ,KAAK,MAAM,GAAG;AAAA,EAC3B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,aAAa,MAAM,KAAK,MAAM,MAAM;AAAA,CACvG;AACM,SAAS,GAAG,CAAC,QAAQ;AAAA,EACxB,OAAY,KAAK,QAAQ,MAAM;AAAA;AAE5B,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EACxE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,cAAc,MAAM,KAAK,MAAM,MAAM;AAAA,EACrG,KAAK,KAAK,IAAI;AAAA,EACd,KAAK,MAAM,IAAI;AAAA,CAClB;AACM,SAAS,IAAI,CAAC,KAAK,KAAK;AAAA,EAC3B,OAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,EAEJ,CAAC;AAAA;AAEE,IAAM,2BAA8B,aAAa,YAAY,CAAC,MAAM,QAAQ;AAAA,EAC/E,QAAQ,KAAK,MAAM,GAAG;AAAA,EACjB,UAAU,KAAK,MAAM,GAAG;AAAA,CAChC;AACM,SAAS,KAAK,CAAC,KAAK,KAAK,QAAQ;AAAA,EACpC,OAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,IACA,WAAW,OAAO;AAAA,IAClB,kBAAkB,OAAO;AAAA,EAC7B,CAAC;AAAA;AAEE,SAAS,WAAW,CAAC,QAAO;AAAA,EAC/B,MAAM,MAAM,OAAM,KAAK;AAAA,EACvB,OAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,IAAI,IAAI;AAAA,IACR,KAAK,IAAI;AAAA,IACT,WAAW,IAAI;AAAA,IACf,kBAAkB,IAAI;AAAA,EAC1B,CAAC;AAAA;AAEE,IAAM,gCAAmC,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AAAA,EACzF,QAAQ,KAAK,MAAM,GAAG;AAAA,EACjB,eAAe,KAAK,MAAM,GAAG;AAAA,CACrC;AACM,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EAChF,aAAa,KAAK,MAAM,GAAG;AAAA,EAChC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,kBAAkB,MAAM,KAAK,MAAM,MAAM;AAAA,EACzG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,CACrC;AACM,SAAS,QAAQ,CAAC,WAAW;AAAA,EAChC,OAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAEE,IAAM,qCAAwC,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AAAA,EAC9F,oBAAoB,KAAK,MAAM,GAAG;AAAA,EACvC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,yBAAyB,MAAM,KAAK,MAAM,MAAM;AAAA,CACnH;AACM,SAAS,eAAe,CAAC,OAAO,QAAQ;AAAA,EAC3C,OAAO,IAAI,mBAAmB;AAAA,IAC1B,MAAM;AAAA,IACN;AAAA,OACG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA;AAEE,IAAM,0BAA6B,aAAa,WAAW,CAAC,MAAM,QAAQ;AAAA,EACxE,SAAS,KAAK,MAAM,GAAG;AAAA,EAC5B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,cAAc,MAAM,KAAK,MAAM,MAAM;AAAA,EACrG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI,OAAO;AAAA,CAC5C;AACM,SAAS,IAAI,CAAC,QAAQ;AAAA,EACzB,OAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAEE,IAAM,6BAAgC,aAAa,cAAc,CAAC,MAAM,QAAQ;AAAA,EAC9E,YAAY,KAAK,MAAM,GAAG;AAAA,EAC/B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,iBAAiB,MAAM,KAAK,MAAM,MAAM;AAAA,EACxG,KAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAAA,CACrC;AACM,SAAS,OAAO,CAAC,WAAW;AAAA,EAC/B,OAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AAAA;AAEE,IAAM,8BAAiC,aAAa,eAAe,CAAC,MAAM,QAAQ;AAAA,EAChF,aAAa,KAAK,MAAM,GAAG;AAAA,EAChC,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,kBAAkB,MAAM,KAAK,MAAM,MAAM;AAAA,CAC5G;AACM,SAAS,SAAS,CAAC,QAAQ;AAAA,EAC9B,OAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,MAAM,QAAQ,QAAQ,KAAK,IAAI,MAAM,QAAQ,KAAK,IAAK,QAAQ,SAAS,MAAM,QAAQ,CAAC;AAAA,IAC9F,QAAQ,QAAQ,UAAU,QAAQ;AAAA,EACtC,CAAC;AAAA;AAGE,IAAM,4BAA+B,aAAa,aAAa,CAAC,MAAM,QAAQ;AAAA,EAC5E,WAAW,KAAK,MAAM,GAAG;AAAA,EAC9B,QAAQ,KAAK,MAAM,GAAG;AAAA,EACtB,KAAK,KAAK,oBAAoB,CAAC,KAAK,MAAM,WAAsB,gBAAgB,MAAM,KAAK,MAAM,MAAM;AAAA,CAC1G;AAEM,SAAS,KAAK,CAAC,IAAI;AAAA,EACtB,MAAM,KAAK,IAAS,UAAU;AAAA,IAC1B,OAAO;AAAA,EAEX,CAAC;AAAA,EACD,GAAG,KAAK,QAAQ;AAAA,EAChB,OAAO;AAAA;AAEJ,SAAS,MAAM,CAAC,IAAI,SAAS;AAAA,EAChC,OAAY,QAAQ,WAAW,OAAO,MAAM,OAAO,OAAO;AAAA;AAEvD,SAAS,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG;AAAA,EACrC,OAAY,QAAQ,WAAW,IAAI,OAAO;AAAA;AAGvC,SAAS,WAAW,CAAC,IAAI,QAAQ;AAAA,EACpC,OAAY,aAAa,IAAI,MAAM;AAAA;AAGhC,IAAM,YAAgB;AACtB,IAAM,QAAY;AACzB,SAAS,WAAW,CAAC,KAAK,SAAS,CAAC,GAAG;AAAA,EACnC,MAAM,OAAO,IAAI,UAAU;AAAA,IACvB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,IAAI,CAAC,SAAS,gBAAgB;AAAA,IAC9B,OAAO;AAAA,OACJ,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AAAA,EACD,KAAK,KAAK,IAAI,QAAQ;AAAA,EAEtB,KAAK,KAAK,QAAQ,CAAC,YAAY;AAAA,IAC3B,IAAI,EAAE,QAAQ,iBAAiB,MAAM;AAAA,MACjC,QAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU,IAAI;AAAA,QACd,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,MAAM,CAAC,GAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,CAAE;AAAA,MACxC,CAAC;AAAA,IACL;AAAA;AAAA,EAEJ,OAAO;AAAA;AAIJ,IAAM,aAAa,IAAI,SAAc,YAAY;AAAA,EACpD,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACZ,GAAG,GAAG,IAAI;AACH,SAAS,IAAI,CAAC,QAAQ;AAAA,EACzB,MAAM,aAAa,KAAK,MAAM;AAAA,IAC1B,OAAO,MAAM,CAAC,QAAO,MAAM,GAAG,QAAO,GAAG,SAAQ,GAAG,OAAM,GAAG,MAAM,UAAU,GAAG,OAAO,QAAO,GAAG,UAAU,CAAC,CAAC;AAAA,GAC/G;AAAA,EACD,OAAO;AAAA;AAGJ,SAAS,UAAU,CAAC,IAAI,QAAQ;AAAA,EACnC,OAAO,IAAI,cAAc;AAAA,IACrB,MAAM;AAAA,IACN,IAAI,UAAU,EAAE;AAAA,IAChB,KAAK;AAAA,EACT,CAAC;AAAA;;AC92CE,IAAM,eAAe;AAAA,EACxB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,QAAQ;AACZ;AAGO,SAAS,WAAW,CAAC,MAAK;AAAA,EACxB,OAAO;AAAA,IACR,aAAa;AAAA,EACjB,CAAC;AAAA;AAGE,SAAS,WAAW,GAAG;AAAA,EAC1B,OAAY,OAAO,EAAE;AAAA;AAGlB,IAAI;AAAA,CACV,QAAS,CAAC,wBAAuB,IAC/B,0BAA0B,wBAAwB,CAAC,EAAE;;ACzBxD,IAAM,IAAI;AAAA,KACH;AAAA,KACA;AAAA,EACH,KAAK;AACT;AAEA,IAAM,kCAAgC,IAAI,IAAI;AAAA,EAE1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AACJ,CAAC;AACD,SAAS,aAAa,CAAC,QAAQ,eAAe;AAAA,EAC1C,MAAM,UAAU,OAAO;AAAA,EACvB,IAAI,YAAY,gDAAgD;AAAA,IAC5D,OAAO;AAAA,EACX;AAAA,EACA,IAAI,YAAY,2CAA2C;AAAA,IACvD,OAAO;AAAA,EACX;AAAA,EACA,IAAI,YAAY,2CAA2C;AAAA,IACvD,OAAO;AAAA,EACX;AAAA,EAEA,OAAO,iBAAiB;AAAA;AAE5B,SAAS,WAAU,CAAC,KAAK,KAAK;AAAA,EAC1B,IAAI,CAAC,IAAI,WAAW,GAAG,GAAG;AAAA,IACtB,MAAM,IAAI,MAAM,qEAAqE;AAAA,EACzF;AAAA,EACA,MAAM,OAAO,IAAI,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAEnD,IAAI,KAAK,WAAW,GAAG;AAAA,IACnB,OAAO,IAAI;AAAA,EACf;AAAA,EACA,MAAM,UAAU,IAAI,YAAY,kBAAkB,UAAU;AAAA,EAC5D,IAAI,KAAK,OAAO,SAAS;AAAA,IACrB,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;AAAA,MACxB,MAAM,IAAI,MAAM,wBAAwB,KAAK;AAAA,IACjD;AAAA,IACA,OAAO,IAAI,KAAK;AAAA,EACpB;AAAA,EACA,MAAM,IAAI,MAAM,wBAAwB,KAAK;AAAA;AAEjD,SAAS,iBAAiB,CAAC,QAAQ,KAAK;AAAA,EAEpC,IAAI,OAAO,QAAQ,WAAW;AAAA,IAE1B,IAAI,OAAO,OAAO,QAAQ,YAAY,OAAO,KAAK,OAAO,GAAG,EAAE,WAAW,GAAG;AAAA,MACxE,OAAO,EAAE,MAAM;AAAA,IACnB;AAAA,IACA,MAAM,IAAI,MAAM,4DAA4D;AAAA,EAChF;AAAA,EACA,IAAI,OAAO,qBAAqB,WAAW;AAAA,IACvC,MAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AAAA,EACA,IAAI,OAAO,0BAA0B,WAAW;AAAA,IAC5C,MAAM,IAAI,MAAM,wCAAwC;AAAA,EAC5D;AAAA,EACA,IAAI,OAAO,OAAO,aAAa,OAAO,SAAS,aAAa,OAAO,SAAS,WAAW;AAAA,IACnF,MAAM,IAAI,MAAM,sDAAsD;AAAA,EAC1E;AAAA,EACA,IAAI,OAAO,qBAAqB,aAAa,OAAO,sBAAsB,WAAW;AAAA,IACjF,MAAM,IAAI,MAAM,0DAA0D;AAAA,EAC9E;AAAA,EAEA,IAAI,OAAO,MAAM;AAAA,IACb,MAAM,UAAU,OAAO;AAAA,IACvB,IAAI,IAAI,KAAK,IAAI,OAAO,GAAG;AAAA,MACvB,OAAO,IAAI,KAAK,IAAI,OAAO;AAAA,IAC/B;AAAA,IACA,IAAI,IAAI,WAAW,IAAI,OAAO,GAAG;AAAA,MAE7B,OAAO,EAAE,KAAK,MAAM;AAAA,QAChB,IAAI,CAAC,IAAI,KAAK,IAAI,OAAO,GAAG;AAAA,UACxB,MAAM,IAAI,MAAM,oCAAoC,SAAS;AAAA,QACjE;AAAA,QACA,OAAO,IAAI,KAAK,IAAI,OAAO;AAAA,OAC9B;AAAA,IACL;AAAA,IACA,IAAI,WAAW,IAAI,OAAO;AAAA,IAC1B,MAAM,WAAW,YAAW,SAAS,GAAG;AAAA,IACxC,MAAM,aAAY,cAAc,UAAU,GAAG;AAAA,IAC7C,IAAI,KAAK,IAAI,SAAS,UAAS;AAAA,IAC/B,IAAI,WAAW,OAAO,OAAO;AAAA,IAC7B,OAAO;AAAA,EACX;AAAA,EAEA,IAAI,OAAO,SAAS,WAAW;AAAA,IAC3B,MAAM,aAAa,OAAO;AAAA,IAE1B,IAAI,IAAI,YAAY,iBAChB,OAAO,aAAa,QACpB,WAAW,WAAW,KACtB,WAAW,OAAO,MAAM;AAAA,MACxB,OAAO,EAAE,KAAK;AAAA,IAClB;AAAA,IACA,IAAI,WAAW,WAAW,GAAG;AAAA,MACzB,OAAO,EAAE,MAAM;AAAA,IACnB;AAAA,IACA,IAAI,WAAW,WAAW,GAAG;AAAA,MACzB,OAAO,EAAE,QAAQ,WAAW,EAAE;AAAA,IAClC;AAAA,IAEA,IAAI,WAAW,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,GAAG;AAAA,MAChD,OAAO,EAAE,KAAK,UAAU;AAAA,IAC5B;AAAA,IAEA,MAAM,iBAAiB,WAAW,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAAA,IACzD,IAAI,eAAe,SAAS,GAAG;AAAA,MAC3B,OAAO,eAAe;AAAA,IAC1B;AAAA,IACA,OAAO,EAAE,MAAM,CAAC,eAAe,IAAI,eAAe,IAAI,GAAG,eAAe,MAAM,CAAC,CAAC,CAAC;AAAA,EACrF;AAAA,EAEA,IAAI,OAAO,UAAU,WAAW;AAAA,IAC5B,OAAO,EAAE,QAAQ,OAAO,KAAK;AAAA,EACjC;AAAA,EAEA,MAAM,OAAO,OAAO;AAAA,EACpB,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,IAErB,MAAM,cAAc,KAAK,IAAI,CAAC,MAAM;AAAA,MAChC,MAAM,aAAa,KAAK,QAAQ,MAAM,EAAE;AAAA,MACxC,OAAO,kBAAkB,YAAY,GAAG;AAAA,KAC3C;AAAA,IACD,IAAI,YAAY,WAAW,GAAG;AAAA,MAC1B,OAAO,EAAE,MAAM;AAAA,IACnB;AAAA,IACA,IAAI,YAAY,WAAW,GAAG;AAAA,MAC1B,OAAO,YAAY;AAAA,IACvB;AAAA,IACA,OAAO,EAAE,MAAM,WAAW;AAAA,EAC9B;AAAA,EACA,IAAI,CAAC,MAAM;AAAA,IAEP,OAAO,EAAE,IAAI;AAAA,EACjB;AAAA,EACA,IAAI;AAAA,EACJ,QAAQ;AAAA,SACC,UAAU;AAAA,MACX,IAAI,eAAe,EAAE,OAAO;AAAA,MAE5B,IAAI,OAAO,QAAQ;AAAA,QACf,MAAM,SAAS,OAAO;AAAA,QAEtB,IAAI,WAAW,SAAS;AAAA,UACpB,eAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,EACK,SAAI,WAAW,SAAS,WAAW,iBAAiB;AAAA,UACrD,eAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,EACK,SAAI,WAAW,UAAU,WAAW,QAAQ;AAAA,UAC7C,eAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,EACK,SAAI,WAAW,aAAa;AAAA,UAC7B,eAAe,aAAa,MAAM,EAAE,IAAI,SAAS,CAAC;AAAA,QACtD,EACK,SAAI,WAAW,QAAQ;AAAA,UACxB,eAAe,aAAa,MAAM,EAAE,IAAI,KAAK,CAAC;AAAA,QAClD,EACK,SAAI,WAAW,QAAQ;AAAA,UACxB,eAAe,aAAa,MAAM,EAAE,IAAI,KAAK,CAAC;AAAA,QAClD,EACK,SAAI,WAAW,YAAY;AAAA,UAC5B,eAAe,aAAa,MAAM,EAAE,IAAI,SAAS,CAAC;AAAA,QACtD,EACK,SAAI,WAAW,QAAQ;AAAA,UACxB,eAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,EACK,SAAI,WAAW,QAAQ;AAAA,UACxB,eAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,EACK,SAAI,WAAW,OAAO;AAAA,UACvB,eAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,EACK,SAAI,WAAW,QAAQ;AAAA,UACxB,eAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,EACK,SAAI,WAAW,WAAW;AAAA,UAC3B,eAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,EACK,SAAI,WAAW,UAAU;AAAA,UAC1B,eAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,EACK,SAAI,WAAW,aAAa;AAAA,UAC7B,eAAe,aAAa,MAAM,EAAE,UAAU,CAAC;AAAA,QACnD,EACK,SAAI,WAAW,QAAQ;AAAA,UACxB,eAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,EACK,SAAI,WAAW,OAAO;AAAA,UACvB,eAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,EACK,SAAI,WAAW,SAAS;AAAA,UACzB,eAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,EACK,SAAI,WAAW,UAAU;AAAA,UAC1B,eAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,EACK,SAAI,WAAW,QAAQ;AAAA,UACxB,eAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,EACK,SAAI,WAAW,SAAS;AAAA,UACzB,eAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,EACK,SAAI,WAAW,QAAQ;AAAA,UACxB,eAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,EACK,SAAI,WAAW,OAAO;AAAA,UACvB,eAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,EACK,SAAI,WAAW,SAAS;AAAA,UACzB,eAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C;AAAA,MAGJ;AAAA,MAEA,IAAI,OAAO,OAAO,cAAc,UAAU;AAAA,QACtC,eAAe,aAAa,IAAI,OAAO,SAAS;AAAA,MACpD;AAAA,MACA,IAAI,OAAO,OAAO,cAAc,UAAU;AAAA,QACtC,eAAe,aAAa,IAAI,OAAO,SAAS;AAAA,MACpD;AAAA,MACA,IAAI,OAAO,SAAS;AAAA,QAEhB,eAAe,aAAa,MAAM,IAAI,OAAO,OAAO,OAAO,CAAC;AAAA,MAChE;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,IACJ;AAAA,SACK;AAAA,SACA,WAAW;AAAA,MACZ,IAAI,eAAe,SAAS,YAAY,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,OAAO;AAAA,MAEpE,IAAI,OAAO,OAAO,YAAY,UAAU;AAAA,QACpC,eAAe,aAAa,IAAI,OAAO,OAAO;AAAA,MAClD;AAAA,MACA,IAAI,OAAO,OAAO,YAAY,UAAU;AAAA,QACpC,eAAe,aAAa,IAAI,OAAO,OAAO;AAAA,MAClD;AAAA,MACA,IAAI,OAAO,OAAO,qBAAqB,UAAU;AAAA,QAC7C,eAAe,aAAa,GAAG,OAAO,gBAAgB;AAAA,MAC1D,EACK,SAAI,OAAO,qBAAqB,QAAQ,OAAO,OAAO,YAAY,UAAU;AAAA,QAC7E,eAAe,aAAa,GAAG,OAAO,OAAO;AAAA,MACjD;AAAA,MACA,IAAI,OAAO,OAAO,qBAAqB,UAAU;AAAA,QAC7C,eAAe,aAAa,GAAG,OAAO,gBAAgB;AAAA,MAC1D,EACK,SAAI,OAAO,qBAAqB,QAAQ,OAAO,OAAO,YAAY,UAAU;AAAA,QAC7E,eAAe,aAAa,GAAG,OAAO,OAAO;AAAA,MACjD;AAAA,MACA,IAAI,OAAO,OAAO,eAAe,UAAU;AAAA,QACvC,eAAe,aAAa,WAAW,OAAO,UAAU;AAAA,MAC5D;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,IACJ;AAAA,SACK,WAAW;AAAA,MACZ,YAAY,EAAE,QAAQ;AAAA,MACtB;AAAA,IACJ;AAAA,SACK,QAAQ;AAAA,MACT,YAAY,EAAE,KAAK;AAAA,MACnB;AAAA,IACJ;AAAA,SACK,UAAU;AAAA,MACX,MAAM,QAAQ,CAAC;AAAA,MACf,MAAM,aAAa,OAAO,cAAc,CAAC;AAAA,MACzC,MAAM,cAAc,IAAI,IAAI,OAAO,YAAY,CAAC,CAAC;AAAA,MAEjD,YAAY,KAAK,eAAe,OAAO,QAAQ,UAAU,GAAG;AAAA,QACxD,MAAM,gBAAgB,cAAc,YAAY,GAAG;AAAA,QAEnD,MAAM,OAAO,YAAY,IAAI,GAAG,IAAI,gBAAgB,cAAc,SAAS;AAAA,MAC/E;AAAA,MAEA,IAAI,OAAO,eAAe;AAAA,QACtB,MAAM,YAAY,cAAc,OAAO,eAAe,GAAG;AAAA,QACzD,MAAM,cAAc,OAAO,wBAAwB,OAAO,OAAO,yBAAyB,WACpF,cAAc,OAAO,sBAAsB,GAAG,IAC9C,EAAE,IAAI;AAAA,QAEZ,IAAI,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AAAA,UACjC,YAAY,EAAE,OAAO,WAAW,WAAW;AAAA,UAC3C;AAAA,QACJ;AAAA,QAEA,MAAM,gBAAe,EAAE,OAAO,KAAK,EAAE,YAAY;AAAA,QACjD,MAAM,eAAe,EAAE,YAAY,WAAW,WAAW;AAAA,QACzD,YAAY,EAAE,aAAa,eAAc,YAAY;AAAA,QACrD;AAAA,MACJ;AAAA,MAEA,IAAI,OAAO,mBAAmB;AAAA,QAG1B,MAAM,eAAe,OAAO;AAAA,QAC5B,MAAM,cAAc,OAAO,KAAK,YAAY;AAAA,QAC5C,MAAM,eAAe,CAAC;AAAA,QACtB,WAAW,WAAW,aAAa;AAAA,UAC/B,MAAM,eAAe,cAAc,aAAa,UAAU,GAAG;AAAA,UAC7D,MAAM,YAAY,EAAE,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,CAAC;AAAA,UACtD,aAAa,KAAK,EAAE,YAAY,WAAW,YAAY,CAAC;AAAA,QAC5D;AAAA,QAEA,MAAM,qBAAqB,CAAC;AAAA,QAC5B,IAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAAA,UAE/B,mBAAmB,KAAK,EAAE,OAAO,KAAK,EAAE,YAAY,CAAC;AAAA,QACzD;AAAA,QACA,mBAAmB,KAAK,GAAG,YAAY;AAAA,QACvC,IAAI,mBAAmB,WAAW,GAAG;AAAA,UACjC,YAAY,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAAA,QACzC,EACK,SAAI,mBAAmB,WAAW,GAAG;AAAA,UACtC,YAAY,mBAAmB;AAAA,QACnC,EACK;AAAA,UAED,IAAI,SAAS,EAAE,aAAa,mBAAmB,IAAI,mBAAmB,EAAE;AAAA,UACxE,SAAS,IAAI,EAAG,IAAI,mBAAmB,QAAQ,KAAK;AAAA,YAChD,SAAS,EAAE,aAAa,QAAQ,mBAAmB,EAAE;AAAA,UACzD;AAAA,UACA,YAAY;AAAA;AAAA,QAEhB;AAAA,MACJ;AAAA,MAIA,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,MACnC,IAAI,OAAO,yBAAyB,OAAO;AAAA,QAEvC,YAAY,aAAa,OAAO;AAAA,MACpC,EACK,SAAI,OAAO,OAAO,yBAAyB,UAAU;AAAA,QAEtD,YAAY,aAAa,SAAS,cAAc,OAAO,sBAAsB,GAAG,CAAC;AAAA,MACrF,EACK;AAAA,QAED,YAAY,aAAa,YAAY;AAAA;AAAA,MAEzC;AAAA,IACJ;AAAA,SACK,SAAS;AAAA,MAIV,MAAM,cAAc,OAAO;AAAA,MAC3B,MAAM,QAAQ,OAAO;AAAA,MACrB,IAAI,eAAe,MAAM,QAAQ,WAAW,GAAG;AAAA,QAE3C,MAAM,aAAa,YAAY,IAAI,CAAC,SAAS,cAAc,MAAM,GAAG,CAAC;AAAA,QACrE,MAAM,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IACjE,cAAc,OAAO,GAAG,IACxB;AAAA,QACN,IAAI,MAAM;AAAA,UACN,YAAY,EAAE,MAAM,UAAU,EAAE,KAAK,IAAI;AAAA,QAC7C,EACK;AAAA,UACD,YAAY,EAAE,MAAM,UAAU;AAAA;AAAA,QAGlC,IAAI,OAAO,OAAO,aAAa,UAAU;AAAA,UACrC,YAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AAAA,QACA,IAAI,OAAO,OAAO,aAAa,UAAU;AAAA,UACrC,YAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AAAA,MACJ,EACK,SAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QAE3B,MAAM,aAAa,MAAM,IAAI,CAAC,SAAS,cAAc,MAAM,GAAG,CAAC;AAAA,QAC/D,MAAM,OAAO,OAAO,mBAAmB,OAAO,OAAO,oBAAoB,WACnE,cAAc,OAAO,iBAAiB,GAAG,IACzC;AAAA,QACN,IAAI,MAAM;AAAA,UACN,YAAY,EAAE,MAAM,UAAU,EAAE,KAAK,IAAI;AAAA,QAC7C,EACK;AAAA,UACD,YAAY,EAAE,MAAM,UAAU;AAAA;AAAA,QAGlC,IAAI,OAAO,OAAO,aAAa,UAAU;AAAA,UACrC,YAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AAAA,QACA,IAAI,OAAO,OAAO,aAAa,UAAU;AAAA,UACrC,YAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AAAA,MACJ,EACK,SAAI,UAAU,WAAW;AAAA,QAE1B,MAAM,UAAU,cAAc,OAAO,GAAG;AAAA,QACxC,IAAI,cAAc,EAAE,MAAM,OAAO;AAAA,QAEjC,IAAI,OAAO,OAAO,aAAa,UAAU;AAAA,UACrC,cAAc,YAAY,IAAI,OAAO,QAAQ;AAAA,QACjD;AAAA,QACA,IAAI,OAAO,OAAO,aAAa,UAAU;AAAA,UACrC,cAAc,YAAY,IAAI,OAAO,QAAQ;AAAA,QACjD;AAAA,QACA,YAAY;AAAA,MAChB,EACK;AAAA,QAED,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC;AAAA;AAAA,MAE/B;AAAA,IACJ;AAAA;AAAA,MAEI,MAAM,IAAI,MAAM,qBAAqB,MAAM;AAAA;AAAA,EAEnD,OAAO;AAAA;AAEX,SAAS,aAAa,CAAC,QAAQ,KAAK;AAAA,EAChC,IAAI,OAAO,WAAW,WAAW;AAAA,IAC7B,OAAO,SAAS,EAAE,IAAI,IAAI,EAAE,MAAM;AAAA,EACtC;AAAA,EAEA,IAAI,aAAa,kBAAkB,QAAQ,GAAG;AAAA,EAC9C,MAAM,kBAAkB,OAAO,QAAQ,OAAO,SAAS,aAAa,OAAO,UAAU;AAAA,EAGrF,IAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAAA,IAC7C,MAAM,UAAU,OAAO,MAAM,IAAI,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAAA,IAC7D,MAAM,aAAa,EAAE,MAAM,OAAO;AAAA,IAClC,aAAa,kBAAkB,EAAE,aAAa,YAAY,UAAU,IAAI;AAAA,EAC5E;AAAA,EAEA,IAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAAA,IAC7C,MAAM,UAAU,OAAO,MAAM,IAAI,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAAA,IAC7D,MAAM,aAAa,EAAE,IAAI,OAAO;AAAA,IAChC,aAAa,kBAAkB,EAAE,aAAa,YAAY,UAAU,IAAI;AAAA,EAC5E;AAAA,EAEA,IAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAAA,IAC7C,IAAI,OAAO,MAAM,WAAW,GAAG;AAAA,MAC3B,aAAa,kBAAkB,aAAa,EAAE,IAAI;AAAA,IACtD,EACK;AAAA,MACD,IAAI,SAAS,kBAAkB,aAAa,cAAc,OAAO,MAAM,IAAI,GAAG;AAAA,MAC9E,MAAM,WAAW,kBAAkB,IAAI;AAAA,MACvC,SAAS,IAAI,SAAU,IAAI,OAAO,MAAM,QAAQ,KAAK;AAAA,QACjD,SAAS,EAAE,aAAa,QAAQ,cAAc,OAAO,MAAM,IAAI,GAAG,CAAC;AAAA,MACvE;AAAA,MACA,aAAa;AAAA;AAAA,EAErB;AAAA,EAEA,IAAI,OAAO,aAAa,QAAQ,IAAI,YAAY,eAAe;AAAA,IAC3D,aAAa,EAAE,SAAS,UAAU;AAAA,EACtC;AAAA,EAEA,IAAI,OAAO,aAAa,MAAM;AAAA,IAC1B,aAAa,EAAE,SAAS,UAAU;AAAA,EACtC;AAAA,EAIA,IAAI,OAAO,YAAY,WAAW;AAAA,IAC9B,aAAa,WAAW,QAAQ,OAAO,OAAO;AAAA,EAClD;AAAA,EAIA,MAAM,YAAY,CAAC;AAAA,EACnB,MAAM,mBAAmB,CAAC,OAAO,MAAM,YAAY,WAAW,eAAe,eAAe,gBAAgB;AAAA,EAC5G,WAAW,OAAO,kBAAkB;AAAA,IAChC,IAAI,OAAO,QAAQ;AAAA,MACf,UAAU,OAAO,OAAO;AAAA,IAC5B;AAAA,EACJ;AAAA,EACA,MAAM,sBAAsB,CAAC,mBAAmB,oBAAoB,eAAe;AAAA,EACnF,WAAW,OAAO,qBAAqB;AAAA,IACnC,IAAI,OAAO,QAAQ;AAAA,MACf,UAAU,OAAO,OAAO;AAAA,IAC5B;AAAA,EACJ;AAAA,EACA,WAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AAAA,IACnC,IAAI,CAAC,gBAAgB,IAAI,GAAG,GAAG;AAAA,MAC3B,UAAU,OAAO,OAAO;AAAA,IAC5B;AAAA,EACJ;AAAA,EACA,IAAI,OAAO,KAAK,SAAS,EAAE,SAAS,GAAG;AAAA,IACnC,IAAI,SAAS,IAAI,YAAY,SAAS;AAAA,EAC1C;AAAA,EAIA,IAAI,OAAO,aAAa;AAAA,IACpB,aAAa,WAAW,SAAS,OAAO,WAAW;AAAA,EACvD;AAAA,EACA,OAAO;AAAA;AAIJ,SAAS,cAAc,CAAC,QAAQ,QAAQ;AAAA,EAE3C,IAAI,OAAO,WAAW,WAAW;AAAA,IAC7B,OAAO,SAAS,EAAE,IAAI,IAAI,EAAE,MAAM;AAAA,EACtC;AAAA,EAKA,IAAI;AAAA,EACJ,IAAI;AAAA,IACA,aAAa,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AAAA,IAElD,MAAM;AAAA,IACF,MAAM,IAAI,MAAM,gGAAgG;AAAA;AAAA,EAEpH,MAAM,WAAU,cAAc,YAAY,QAAQ,aAAa;AAAA,EAC/D,MAAM,OAAQ,WAAW,SAAS,WAAW,eAAe,CAAC;AAAA,EAC7D,MAAM,MAAM;AAAA,IACR;AAAA,IACA;AAAA,IACA,MAAM,IAAI;AAAA,IACV,YAAY,IAAI;AAAA,IAChB,YAAY;AAAA,IACZ,UAAU,QAAQ,YAAY;AAAA,EAClC;AAAA,EACA,OAAO,cAAc,YAAY,GAAG;AAAA;;;;;;;;;;ACnlBjC,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,eAAuB,WAAW,MAAM;AAAA;AAEjD,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,eAAuB,WAAW,MAAM;AAAA;AAEjD,SAAS,QAAO,CAAC,QAAQ;AAAA,EAC5B,OAAY,gBAAwB,YAAY,MAAM;AAAA;AAEnD,SAAS,OAAM,CAAC,QAAQ;AAAA,EAC3B,OAAY,eAAuB,WAAW,MAAM;AAAA;AAEjD,SAAS,KAAI,CAAC,QAAQ;AAAA,EACzB,OAAY,aAAqB,SAAS,MAAM;AAAA;;;ACNpD,OAAO,WAAG,CAAC;;ACFJ,IAAM,eAAe,iBAAE,OAAO;AAAA,EACnC,KAAK,iBAAE,OAAO,EAAE,SAAS,gCAAgC;AAAA,EACzD,SAAS,iBAAE,OAAO,EAAE,SAAS,sCAAsC;AAAA,EACnE,SAAS,iBAAE,OAAO,EAAE,SAAS,oDAAoD;AAAA,EACjF,QAAQ,iBAAE,OAAO,EAAE,SAAS,mCAAmC;AAAA,EAC/D,KAAK,iBAAE,OAAO,EAAE,SAAS,8BAA8B;AAAA,EACvD,OAAO,iBAAE,OAAO,EAAE,SAAS,EAAE,SAAS,mCAAmC;AAC3E,CAAC;AAEM,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EACxC,SAAS,iBAAE,OAAO,EAAE,SAAS,0BAA0B;AAAA,EACvD,OAAO,iBAAE,OAAO,EAAE,SAAS,sCAAsC;AAAA,EACjE,SAAS,iBAAE,MAAM,YAAY,EAAE,SAAS,0BAA0B;AACpE,CAAC;AAEM,IAAM,qBAAqB,iBAAE,OAAO;AAAA,EACzC,SAAS,iBAAE,OAAO,EAAE,SAAS,kBAAkB;AAAA,EAC/C,SAAS,iBAAE,MAAM,YAAY,EAAE,SAAS,8BAA8B;AAAA,EACtE,QAAQ,iBAAE,OAAO,EAAE,SAAS,2CAA2C;AACzE,CAAC;AAEM,IAAM,uBAAuB,iBAAE,OAAO;AAAA,EAC3C,IAAI,iBAAE,QAAQ;AAAA,EACd,MAAM,iBAAE,OAAO,EAAE,SAAS,kBAAkB;AAC9C,CAAC;AAKM,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EACxC,MAAM,iBAAE,OAAO,EAAE,SAAS,6CAA6C;AAAA,EACvE,SAAS,iBAAE,OAAO,EAAE,SAAS,0BAA0B;AAAA,EACvD,OAAO,iBAAE,OAAO,EAAE,SAAS,4CAA4C;AAAA,EACvE,UAAU,iBAAE,OAAO,EAAE,SAAS,EAAE,SAAS,iDAAiD;AAC5F,CAAC;AAEM,IAAM,qBAAqB,iBAAE,OAAO;AAAA,EACzC,SAAS,iBAAE,OAAO,EAAE,SAAS,uBAAuB;AAAA,EACpD,OAAO,iBAAE,OAAO,EAAE,SAAS,2CAA2C;AACxE,CAAC;AAWM,IAAM,YAAY;AAClB,IAAM,cAAc;AAGpB,IAAM,aAAa;AAGnB,IAAM,YAAY;;AC/DzB;AACA;AASA,SAAS,OAAO,CAAC,IAAc,MAA0B;AAAA,EACvD,MAAM,MAAM,GACT,MAAM,iEAAiE,EACvE,IAAI,IAAG;AAAA,EACV,OAAO,OAAO,EAAE,aAAa,GAAG,aAAa,GAAG,OAAO,KAAK;AAAA;AAG9D,SAAS,OAAO,CAAC,IAAc,MAAa,GAAuD;AAAA,EACjG,GAAG,MACD,0KACF,EAAE,IAAI,MAAK,EAAE,aAAa,EAAE,WAAW;AAAA;AAczC,eAAsB,YAAY,CAChC,IACA,MACA,OACqB;AAAA,EACrB,MAAM,OAAO,UAAU,EAAE;AAAA,EACzB,MAAM,OAAO,QAAQ,IAAI,IAAG;AAAA,EAC5B,MAAM,SAAS,SAAS,KAAK,SAAS;AAAA,EACtC,MAAM,SAAS,gBAAgB,IAAI,KAAK,WAAW;AAAA,EAEnD,MAAM,UAAkC,EAAE,gBAAgB,mBAAmB;AAAA,EAC7E,IAAI;AAAA,IAAQ,QAAQ,gBAAgB,UAAU;AAAA,EAC9C,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,WAAW,IAAG,GAAG;AAAA,IAC/C,QAAQ;AAAA,IACR;AAAA,IACA,MAAM,KAAK,UAAU,EAAE,SAAS,MAAM,OAAO,KAAK,aAAa,SAAS,OAAO,QAAQ,CAAC;AAAA,EAC1F,CAAC;AAAA,EACD,IAAI,CAAC,IAAI;AAAA,IAAI,MAAM,IAAI,MAAM,gBAAgB,IAAI,UAAU,MAAM,IAAI,KAAK,GAAG;AAAA,EAE7E,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,EAC7B,MAAM,SAAS,KAAK,SAAS,UAAU;AAAA,EACvC,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC;AAAA,EAC7B,QAAQ,IAAI,MAAK,EAAE,aAAa,KAAK,QAAQ,aAAa,OAAO,OAAO,CAAC;AAAA,EAEzE,OAAO,EAAE,QAAQ,OAAO,QAAQ,QAAQ,OAAO;AAAA;;AC1DjD;;;ACUA;AAEA,IAAM,UAAU;AAChB,IAAM,QAAQ;AACd,IAAM,SAAS;AACf,IAAM,aAAa;AAaZ,SAAS,aAAa,CAAC,GAAuB,YAA4B;AAAA,EAC/E,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,MAAM,IAAI,0BAA0B,KAAK,EAAE,KAAK,CAAC;AAAA,EACjD,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,MAAM,IAAI,OAAO,EAAE,EAAE;AAAA,EACrB,QAAQ,EAAE;AAAA,SACH;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO,IAAI;AAAA,SACR;AAAA,MACH,OAAO,IAAI;AAAA,SACR;AAAA,MACH,OAAO,IAAI;AAAA;AAAA,MAEX,OAAO,IAAI;AAAA;AAAA;AAIjB,IAAM,MAAM;AAEL,IAAM,iBAAiB,cAAc,QAAQ,IAAI,mBAAmB,KAAK,GAAG;AAE5E,IAAM,mBAAmB,cAAc,QAAQ,IAAI,qBAAqB,IAAI,GAAG;AAEtF,SAAS,OAAO,CAAC,IAAc,KAA4B;AAAA,EACzD,MAAM,MAAM,GAAG,MAAM,sCAAsC,EAAE,IAAI,GAAG;AAAA,EAGpE,OAAO,MAAM,IAAI,QAAQ;AAAA;AAG3B,SAAS,OAAO,CAAC,IAAc,KAAa,OAAqB;AAAA,EAC/D,GAAG,MACD,mGACF,EAAE,IAAI,KAAK,KAAK;AAAA;AAIX,SAAS,SAAS,CAAC,IAAiC;AAAA,EACzD,MAAM,QAAQ,QAAQ,IAAI,OAAO;AAAA,EACjC,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,MAAM,OAAO,QAAQ,IAAI,MAAM;AAAA,EAC/B,OAAO;AAAA,IACL;AAAA,IACA,KAAK,OAAO,QAAQ,IAAI,KAAK,KAAK,CAAC;AAAA,IACnC,MAAM,QAAQ,KAAK,SAAS,IAAI,OAAO;AAAA,IACvC,SAAS,OAAO,QAAQ,IAAI,UAAU,KAAK,CAAC;AAAA,EAC9C;AAAA;AAIK,SAAS,MAAM,CAAC,IAAc,OAAe,SAA6B;AAAA,EAC/E,MAAM,MAAM,KAAK,IAAI;AAAA,EACrB,MAAM,MAAM,QAAQ,IAAI,OAAO;AAAA,EAC/B,MAAM,OAAmB;AAAA,IACvB,OAAO,aAAa,EAAE;AAAA,IACtB,KAAK,MAAM;AAAA,IACX,MAAM;AAAA,IACN,SAAS,MAAM,MAAM,UAAU;AAAA,EACjC;AAAA,EACA,QAAQ,IAAI,SAAS,KAAK,KAAK;AAAA,EAC/B,QAAQ,IAAI,OAAO,OAAO,KAAK,GAAG,CAAC;AAAA,EACnC,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAAA,EACnC,QAAQ,IAAI,YAAY,OAAO,KAAK,OAAO,CAAC;AAAA,EAC5C,OAAO;AAAA;AAIF,SAAS,YAAY,CAAC,IAAc,OAAe,SAA6B;AAAA,EACrF,MAAM,IAAI,UAAU,EAAE;AAAA,EACtB,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,EAAE;AAAA,IAAK,OAAO,OAAO,IAAI,OAAO,OAAO;AAAA,EAC9D,OAAO;AAAA;;;AC7FT,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,kBAAkB;AACxB,IAAM,cAAc;AAUb,IAAM,iBAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,gBAAgB,cAAc,QAAQ,IAAI,uBAAuB,KAAM;AAAA,EACvE,UAAU;AACZ;AAEA,SAAS,QAAO,CAAC,IAAc,KAA4B;AAAA,EACzD,MAAM,MAAM,GAAG,MAAM,sCAAsC,EAAE,IAAI,GAAG;AAAA,EAGpE,OAAO,MAAM,IAAI,QAAQ;AAAA;AAUpB,SAAS,eAAe,CAAC,IAA4B;AAAA,EAC1D,MAAM,OAAO,SAAQ,IAAI,MAAM;AAAA,EAC/B,MAAM,OAAO,SAAQ,IAAI,MAAM;AAAA,EAC/B,MAAM,WAAW,SAAQ,IAAI,eAAe;AAAA,EAC5C,MAAM,OAAO,SAAQ,IAAI,WAAW;AAAA,EACpC,OAAO;AAAA,IACL,MAAM,QAAQ,eAAe;AAAA,IAC7B,MAAM,QAAQ,OAAO,OAAO,IAAI,IAAI,eAAe;AAAA,IACnD,gBAAgB,YAAY,OAAO,OAAO,QAAQ,IAAI,eAAe;AAAA,IACrE,UAAU,QAAQ,OAAO,SAAS,MAAM,eAAe;AAAA,EACzD;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDF;;;ACoCA,IAAM,iBAAiB,iBAAE,OAAO;AAAA,EAC9B,IAAI,iBAAE,OAAO;AAAA,EACb,MAAM,iBAAE,OAAO;AAAA,EACf,MAAM,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,aAAa,iBAAE,OAAO;AACxB,CAAC;AACD,IAAM,iBAAiB,iBAAE,OAAO;AAAA,EAC9B,IAAI,iBAAE,OAAO;AAAA,EACb,aAAa,iBAAE,OAAO;AAAA,EACtB,MAAM,iBAAE,OAAO;AAAA,EACf,MAAM,iBAAE,OAAO;AAAA,EACf,QAAQ,iBAAE,IAAI,EAAE,SAAS;AAAA,EACzB,UAAU,iBAAE,OAAO;AACrB,CAAC;AACD,IAAM,eAAe,iBAAE,OAAO;AAAA,EAC5B,IAAI,iBAAE,OAAO;AAAA,EACb,aAAa,iBAAE,OAAO;AAAA,EACtB,QAAQ,iBACL,OAAO,iBAAE,OAAO,GAAG,iBAAE,IAAI,CAAC,EAC1B,SACC,0HACF;AACJ,CAAC;AACD,IAAM,gBAAgB,iBAAE,OAAO;AAAA,EAC7B,QAAQ,iBAAE,OAAO;AAAA,EACjB,OAAO,iBAAE,KAAK,CAAC,UAAU,OAAO,CAAC;AACnC,CAAC;AACD,IAAM,wBAAwB,iBAAE,OAAO;AAAA,EACrC,IAAI,iBAAE,OAAO;AAAA,EACb,OAAO,iBAAE,OAAO;AAAA,EAChB,aAAa,iBAAE,OAAO,EAAE,SAAS;AAAA,EACjC,WAAW,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,aAAa,iBAAE,OAAO;AAAA,EACtB,WAAW,iBAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AACD,IAAM,kBAAkB,iBAAE,OAAO;AAAA,EAC/B,QAAQ,iBAAE,OAAO;AAAA,EACjB,OAAO,iBAAE,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC;AAC3C,CAAC;AACD,IAAM,iBAAiB,sBAAsB,OAAO,EAAE,MAAM,iBAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACnF,IAAM,kBAAkB,iBAAE,OAAO;AAAA,EAC/B,MAAM,iBAAE,OAAO;AAAA,EACf,IAAI,iBAAE,OAAO;AAAA,EACb,aAAa,iBAAE,OAAO,EAAE,SAAS;AAAA,EACjC,OAAO,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,SAAS,iBAAE,OAAO;AACpB,CAAC;AACD,IAAM,WAAW,iBAAE,OAAO,EAAE,IAAI,iBAAE,QAAQ,EAAE,CAAC;AAE7C,IAAM,oBAAoB,iBAAE,OAAO,EAAE,MAAM,iBAAE,OAAO,GAAG,MAAM,iBAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACpF,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EACjC,MAAM,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAM,iBAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AACvC,CAAC;AACD,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EACjC,IAAI,iBAAE,OAAO;AAAA,EACb,MAAM,iBAAE,OAAO;AAAA,EACf,MAAM,iBAAE,OAAO;AAAA,EACf,QAAQ,iBAAE,IAAI,EAAE,SAAS;AAC3B,CAAC;AACD,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EACjC,MAAM,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAM,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,QAAQ,iBAAE,IAAI,EAAE,SAAS;AAAA,EACzB,UAAU,iBAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AACD,IAAM,cAAc,iBAAE,OAAO,EAAE,OAAO,iBAAE,OAAO,EAAE,CAAC;AAClD,IAAM,kBAAkB,iBACrB,OAAO,iBAAE,OAAO,GAAG,iBAAE,IAAI,CAAC,EAC1B,SAAS,6DAA6D;AACzE,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EACjC,OAAO,iBAAE,OAAO;AAAA,EAChB,MAAM,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,aAAa,iBAAE,OAAO,EAAE,SAAS;AAAA,EACjC,WAAW,iBAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AACD,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EACjC,OAAO,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,MAAM,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,WAAW,iBAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC5C,CAAC;AAID,SAAS,IAAI,CAAC,KAAc,KAAqB;AAAA,EAC/C,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG;AAAA,EAC/C,IAAI,CAAC;AAAA,IAAG,MAAM,IAAI,MAAM,wBAAwB,KAAK;AAAA,EACrD,OAAO;AAAA;AAGT,SAAS,GAAG,CAAC,KAAc,KAAiC;AAAA,EAC1D,OAAO,IAAI,IAAI,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG,KAAK;AAAA;AAInD,SAAS,MAAM,CACb,IACkB;AAAA,EAClB,OAAO,OAAO,KAAK,QAAQ;AAAA,IACzB,IAAI;AAAA,MACF,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG;AAAA,MAC7B,IAAI,eAAe;AAAA,QAAU,OAAO;AAAA,MACpC,OAAO,SAAS,KAAK,OAAO,IAAI;AAAA,MAChC,OAAO,GAAG;AAAA,MACV,OAAO,SAAS,KAAK,EAAE,OAAQ,EAAY,QAAQ,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA;AAAA;AAAA;AAO3E,IAAM,gBAAgB,iBAAE,OAAO,EAAE,SAAS,iBAAE,OAAO,EAAE,CAAC;AAE/C,IAAM,cAAuB;AAAA,EAClC;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,MAAM,SAAS,KAAK,EAAE,SAAS,gBAAI,QAAQ,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,cAAc;AAAA,IAChC,SAAS,OAAO,CAAC,QAAQ,SAAS,cAAc,EAAE,CAAC;AAAA,EACrD;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,eAAe,IAAI,IAAI;AAAA,KAC/B;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,eAAe,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,KAChD;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,CAAC,OAAO,UAAU,EAAE,IAAI,eAAe,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,EAAE;AAAA,EAChF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,cAAc;AAAA,IAChC,SAAS,OAAO,CAAC,OAAO,SAAS,eAAe,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC;AAAA,EACtE;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAM7B,OAAO,YAAY,IAAI,KAAK,IAAI,EAAE,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,QAAQ,KAAK,OAAO,CAAC;AAAA,KAC1F;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAM7B,OAAO,eAAe,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,KAChD;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,iBAAiB,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK;AAAA,KACxD;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,CAAC,OAAO,UAAU,EAAE,IAAI,eAAe,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,EAAE;AAAA,EAChF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,YAAY;AAAA,IAC9B,SAAS,OAAO,CAAC,OAAO,SAAS;AAAA,MAC/B,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,MAC9B,OAAO,YAAY,IAAI,KAAK,KAAK,IAAI,GAAG;AAAA,QACtC,MAAM,IAAI,KAAK,MAAM;AAAA,QACrB,OAAO,QAAQ,OAAO,KAAK,IAAI;AAAA,MACjC,CAAC;AAAA,KACF;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,SAAU,MAAM,IAAI,KAAK;AAAA,MAC/B,OAAO,aAAa,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM;AAAA,KAChD;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,CAAC,OAAO,SAAS;AAAA,MAC/B,MAAM,MAAM,UAAU,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,MACzC,OAAO,OAAO,IAAI,SAAS,aAAa,EAAE,QAAQ,IAAI,CAAC;AAAA,KACxD;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,SAAU,MAAM,IAAI,KAAK;AAAA,MAC/B,OAAO,aAAa,IAAI,KAAK,KAAK,IAAI,GAAG,MAAM;AAAA,KAChD;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,WAAW,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,KAAK,KAAK;AAAA,KAC/D;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,CAAC,OAAO,UAAU,EAAE,IAAI,aAAa,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,EAAE;AAAA,EAC9E;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,qBAAqB;AAAA,IACvC,SAAS,OAAO,CAAC,OAAO,SACtB,cAAc,IAAI,EAAE,aAAa,IAAI,KAAK,IAAI,GAAG,WAAW,IAAI,KAAK,QAAQ,EAAE,CAAC,CAClF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAM7B,OAAO,eAAe,IAAI,IAAI;AAAA,KAC/B;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,CAAC,OAAO,SAAS;AAAA,MAC/B,MAAM,OAAM,YAAY,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,MAC3C,OAAO,QAAO,IAAI,SAAS,aAAa,EAAE,QAAQ,IAAI,CAAC;AAAA,KACxD;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,eAAe,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI;AAAA,KAChD;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,aAAa,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,KAAK,KAAK;AAAA,KACjE;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,OAAO,CAAC,OAAO,UAAU,EAAE,IAAI,eAAe,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,EAAE;AAAA,EAChF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,eAAe;AAAA,IACjC,SAAS,OAAO,CAAC,OAAO,SAAS;AAAA,MAC/B,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,MAC9B,OAAO,OAAO,IAAI,KAAK,KAAK,GAAG,GAAG,EAAE,OAAO,QAAQ,OAAO,KAAK,IAAI,UAAU,CAAC;AAAA,KAC/E;AAAA,EACH;AACF;;;ACnYA;AAgBA,IAAM,aAAa,iBAAE,OAAO;AAAA,EAC1B,IAAI,iBAAE,OAAO;AAAA,EACb,MAAM,iBAAE,OAAO;AAAA,EACf,OAAO,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,aAAa,iBAAE,OAAO;AACxB,CAAC;AACD,IAAM,sBAAsB,WAAW,OAAO,EAAE,YAAY,iBAAE,OAAO,EAAE,CAAC;AACxE,IAAM,iBAAiB,iBAAE,OAAO;AAAA,EAC9B,IAAI,iBAAE,OAAO;AAAA,EACb,SAAS,iBAAE,OAAO;AAAA,EAClB,MAAM,iBAAE,OAAO;AAAA,EACf,cAAc,iBAAE,OAAO;AAAA,EACvB,UAAU,iBAAE,OAAO;AACrB,CAAC;AAID,IAAM,iBAAiB,iBAAE,OAAO,EAAE,MAAM,iBAAE,OAAO,GAAG,OAAO,iBAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAClF,IAAM,iBAAiB,iBAAE,OAAO,EAAE,MAAM,iBAAE,OAAO,EAAE,SAAS,GAAG,OAAO,iBAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAE7F,SAAS,KAAI,CAAC,KAAc,KAAqB;AAAA,EAC/C,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG;AAAA,EAC/C,IAAI,CAAC;AAAA,IAAG,MAAM,IAAI,MAAM,wBAAwB,KAAK;AAAA,EACrD,OAAO;AAAA;AAGT,SAAS,OAAM,CAAC,IAAgE;AAAA,EAC9E,OAAO,OAAO,KAAK,QAAQ;AAAA,IACzB,IAAI;AAAA,MACF,OAAO,SAAS,KAAM,MAAM,GAAG,KAAK,GAAG,KAAM,IAAI;AAAA,MACjD,OAAO,GAAG;AAAA,MACV,OAAO,SAAS,KAAK,EAAE,OAAQ,EAAY,QAAQ,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA;AAAA;AAAA;AAKpE,IAAM,cAAuB;AAAA,EAClC;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,mBAAmB;AAAA,IACrC,SAAS,QAAO,CAAC,QAAQ,SACvB,UAAU,EAAE,EAAE,IAAI,CAAC,OAAO,KAAK,GAAG,YAAY,UAAU,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAC7E;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,cAAc;AAAA,IAChC,SAAS,QAAO,CAAC,OAAO,SAAS,UAAU,IAAI,YAAY,IAAI,MAAK,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;AAAA,EACvF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAO,eAAe,MAAM,MAAM,IAAI,KAAK,CAAC;AAAA,MAClD,OAAO,WAAW,IAAI,IAAI;AAAA,KAC3B;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAO,eAAe,MAAM,MAAM,IAAI,KAAK,CAAC;AAAA,MAClD,OAAO,WAAW,IAAI,MAAK,KAAK,IAAI,GAAG,IAAI;AAAA,KAC5C;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,OAAO,EAAE,IAAI,iBAAE,QAAQ,EAAE,CAAC;AAAA,IACtC,SAAS,QAAO,CAAC,OAAO,UAAU,EAAE,IAAI,WAAW,IAAI,MAAK,KAAK,IAAI,CAAC,EAAE,EAAE;AAAA,EAC5E;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAO,YAAY,IAAI,MAAK,KAAK,MAAM,CAAC;AAAA,MAE9C,MAAM,KAAK,IAAI,QAAQ,IAAI,cAAc;AAAA,MACzC,MAAM,QAAO,MAAM,QAAQ,IAAI,KAAK,IAAI,MAAK,KAAK,MAAM,GAAG;AAAA,QACzD,MAAM,MAAM,IAAI,YAAY;AAAA,QAC5B,aAAa,MAAM,OAAO,6BAA6B,KAAK;AAAA,MAC9D,CAAC;AAAA,MACD,QAAQ,SAAS,aAAa,YAAY;AAAA,MAC1C,OAAO;AAAA,KACR;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,OAAO,EAAE,IAAI,iBAAE,QAAQ,EAAE,CAAC;AAAA,IACtC,SAAS,QAAO,CAAC,OAAO,UAAU;AAAA,MAChC,IAAI,WAAW,IAAI,YAAY,IAAI,MAAK,KAAK,MAAM,CAAC,EAAE,IAAI,MAAK,KAAK,MAAM,CAAC;AAAA,IAC7E,EAAE;AAAA,EACJ;AACF;;;ACjHA;;;ACQO,SAAS,SAAS,CAAC,IAAyB;AAAA,EACjD,OAAO,GACJ,MACC,qIACF,EACC,IAAI;AAAA;AAmBF,SAAS,OAAO,CAAC,IAAc,OAA2B;AAAA,EAC/D,GAAG,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAOF,EAAE,IAAI,MAAM,KAAK,MAAM,SAAS,MAAM,MAAM,SAAS,MAAM,MAAM,WAAW,IAAI;AAAA;AAS3E,SAAS,UAAU,CAAC,IAAc,MAAsB;AAAA,EAC7D,MAAM,KAAK,GAAG,YAAY,MAAM;AAAA,IAC9B,MAAM,UAAU,GAAG,MAAM,iCAAiC,EAAE,IAAI,IAAG,EAAE,UAAU;AAAA,IAC/E,GAAG,MAAM,4CAA4C,EAAE,IAAI,IAAG;AAAA,IAC9D,OAAO;AAAA,GACR;AAAA,EACD,OAAO,GAAG;AAAA;AAGL,SAAS,cAAc,CAAC,IAAc,MAAa,SAA2B;AAAA,EACnF,OACE,GAAG,MAAM,4CAA4C,EAAE,IAAI,UAAU,IAAI,GAAG,IAAG,EAAE,UAAU;AAAA;AAIxF,SAAS,YAAY,CAAC,IAAc,MAAa,OAAwB;AAAA,EAC9E,OAAO,GAAG,MAAM,0CAA0C,EAAE,IAAI,OAAO,IAAG,EAAE,UAAU;AAAA;AAGjF,SAAS,gBAAgB,CAC9B,IACA,MACA,QACA,SACM;AAAA,EACN,GAAG,MACD,kFACF,EAAE,IAAI,KAAK,IAAI,GAAG,QAAQ,WAAS,MAAM,IAAG;AAAA;AAY9C,eAAsB,QAAQ,CAAC,IAAc,MAAuC;AAAA,EAClF,IAAI;AAAA,IACF,MAAM,SAAqB,MAAM,aAAa,IAAI,IAAG;AAAA,IACrD,iBAAiB,IAAI,MAAK,MAAM,IAAI;AAAA,IACpC,OAAO,EAAE,WAAK,IAAI,MAAM,QAAQ,OAAO,QAAQ,QAAQ,OAAO,OAAO;AAAA,IACrE,OAAO,GAAG;AAAA,IACV,MAAM,UAAS,EAAY;AAAA,IAC3B,iBAAiB,IAAI,MAAK,SAAS,OAAK;AAAA,IACxC,OAAO,EAAE,WAAK,IAAI,OAAO,eAAM;AAAA;AAAA;AAKnC,eAAsB,YAAY,CAAC,IAA0C;AAAA,EAC3E,MAAM,QAAQ,UAAU,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO;AAAA,EACnD,MAAM,MAAyB,CAAC;AAAA,EAChC,WAAW,KAAK;AAAA,IAAO,IAAI,KAAK,MAAM,SAAS,IAAI,EAAE,GAAG,CAAC;AAAA,EACzD,OAAO;AAAA;;;ADpGF,IAAM,sBAAsB,cAAc,QAAQ,IAAI,kBAAkB,KAAK,KAAM;AAQnF,SAAS,mBAAmB,CAAC,IAAc,QAAgB,qBAAkC;AAAA,EAClG,MAAM,MAAM,KAAK,IAAI;AAAA,EAErB,GAAG,MAAM,qDAAqD,EAAE,IAAI,GAAG;AAAA,EACvE,MAAM,OAAO,aAAa,EAAE;AAAA,EAC5B,MAAM,MAAM,MAAM;AAAA,EAClB,GAAG,MACD,6EACF,EAAE,IAAI,MAAM,KAAK,GAAG;AAAA,EACpB,OAAO,EAAE,MAAM,IAAI;AAAA;AAQd,SAAS,iBAAiB,CAAC,IAAc,MAAuB;AAAA,EACrE,OACE,GACG,MAAM,4EAA4E,EAClF,IAAI,MAAM,KAAK,IAAI,CAAC,EAAE,UAAU;AAAA;AAKhC,SAAS,SAAS,CAAC,IAAc,SAAwB,QAA+B;AAAA,EAC7F,MAAM,QAAQ,aAAa,EAAE;AAAA,EAC7B,GAAG,MACD,oFACF,EAAE,IAAI,OAAO,SAAS,QAAQ,KAAK,IAAI,CAAC;AAAA,EACxC,OAAO;AAAA;AAIF,SAAS,eAAe,CAAC,IAAc,OAAwB;AAAA,EACpE,OAAO,GAAG,MAAM,2CAA2C,EAAE,IAAI,KAAK,KAAK;AAAA;AAWtE,SAAS,UAAU,CAAC,IAA0B;AAAA,EACnD,OAAO,GACJ,MAAM,uFAAuF,EAC7F,IAAI;AAAA;AAQF,SAAS,WAAW,CAAC,IAAc,eAA+B;AAAA,EACvE,OAAO,GACJ,MAAM,gEAAgE,EACtE,IAAI,eAAe,aAAa,EAAE;AAAA;AAOhC,SAAS,iBAAiB,CAAC,IAAc,MAAc,MAAiC;AAAA,EAC7F,IAAI,CAAC,kBAAkB,IAAI,KAAK,IAAI,GAAG;AAAA,IACrC,MAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AAAA,EAEA,IAAI,KAAK,UAAU;AAAA,IACjB,QAAQ,IAAI,EAAE,KAAK,KAAK,UAAU,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,CAAC;AAAA,EAC9E;AAAA,EAEA,MAAM,QAAQ,UAAU,IAAI,KAAK,YAAY,MAAM,KAAK,OAAO;AAAA,EAC/D,OAAO,EAAE,SAAS,MAAM,MAAM;AAAA;AAahC,eAAsB,cAAc,CAClC,IACA,MACA,WACA,MACA,SACsB;AAAA,EAEtB,MAAM,WAAW,UAAU,IAAI,WAAW,IAAI;AAAA,EAC9C,MAAM,UAAuB,EAAE,MAAM,SAAS,MAAM,OAAO,UAAU,UAAU,QAAQ;AAAA,EAEvF,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,WAAW,SAAS,GAAG;AAAA,IACrD,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU,OAAO;AAAA,EAC9B,CAAC;AAAA,EACD,IAAI,CAAC,IAAI;AAAA,IAAI,MAAM,IAAI,MAAM,mBAAmB,IAAI,UAAU,MAAM,IAAI,KAAK,GAAG;AAAA,EAEhF,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,EAE7B,QAAQ,IAAI,EAAE,KAAK,WAAW,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,CAAC;AAAA,EACxE,OAAO,EAAE,SAAS,KAAK,SAAS,KAAK,UAAU;AAAA;;;AE5GjD,IAAM,aAAa,iBAAE,OAAO;AAAA,EAC1B,KAAK,iBAAE,OAAO;AAAA,EACd,aAAa,iBAAE,OAAO;AAAA,EACtB,aAAa,iBAAE,OAAO;AAAA,EACtB,OAAO,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,OAAO,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,SAAS,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,SAAS,iBAAE,OAAO;AAAA,EAClB,cAAc,iBAAE,OAAO,EAAE,SAAS;AAAA,EAClC,aAAa,iBAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAY,iBAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AACD,IAAM,oBAAoB,iBAAE,OAAO,EAAE,MAAM,iBAAE,OAAO,GAAG,KAAK,iBAAE,OAAO,EAAE,CAAC;AACxE,IAAM,aAAa,iBAAE,OAAO;AAAA,EAC1B,KAAK,iBAAE,OAAO;AAAA,EACd,MAAM,iBAAE,OAAO;AAAA,EACf,UAAU,iBAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AACD,IAAM,aAAa,iBAAE,OAAO,EAAE,SAAS,iBAAE,OAAO,GAAG,KAAK,iBAAE,OAAO,EAAE,CAAC;AACpE,IAAM,gBAAgB,iBAAE,OAAO;AAAA,EAC7B,SAAS,iBAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,OAAO,iBAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AACD,IAAM,cAAc,iBAAE,OAAO;AAAA,EAC3B,KAAK,iBAAE,OAAO;AAAA,EACd,IAAI,iBAAE,QAAQ;AAAA,EACd,QAAQ,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,QAAQ,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,OAAO,iBAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AACD,IAAM,cAAc,iBAAE,OAAO;AAAA,EAC3B,OAAO,iBAAE,OAAO;AAAA,EAChB,UAAU,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,SAAS,iBAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,YAAY,iBAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AACD,IAAM,YAAY,iBAAE,OAAO,EAAE,SAAS,iBAAE,OAAO,EAAE,CAAC;AAClD,IAAM,YAAW,iBAAE,OAAO,EAAE,IAAI,iBAAE,QAAQ,EAAE,CAAC;AAI7C,SAAS,KAAI,CAAC,KAAc,KAAqB;AAAA,EAC/C,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG;AAAA,EAC/C,IAAI,CAAC;AAAA,IAAG,MAAM,IAAI,MAAM,wBAAwB,KAAK;AAAA,EACrD,OAAO;AAAA;AAGT,SAAS,OAAM,CACb,IACkB;AAAA,EAClB,OAAO,OAAO,KAAK,QAAQ;AAAA,IACzB,IAAI;AAAA,MACF,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG;AAAA,MAC7B,IAAI,eAAe;AAAA,QAAU,OAAO;AAAA,MACpC,OAAO,SAAS,KAAK,OAAO,IAAI;AAAA,MAChC,OAAO,GAAG;AAAA,MACV,OAAO,SAAS,KAAK,EAAE,OAAQ,EAAY,QAAQ,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA;AAAA;AAAA;AAOpE,IAAM,cAAuB;AAAA,EAClC;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,OAAO,OAAO,IAAI,WAAW;AAAA,MAC3C,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,kBAAkB,IAAI,MAAM,IAAI;AAAA,KACxC;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,CAAC,QAAQ,SAAS,oBAAoB,EAAE,CAAC;AAAA,EAC3D;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,OAAO,OAAO,IAAI,WAAW;AAAA,MAC3C,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,eAAe,IAAI,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,QAAQ;AAAA,KACnE;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,UAAU;AAAA,IAC5B,SAAS,QAAO,CAAC,QAAQ,SAAS,UAAU,EAAE,CAAC;AAAA,EACjD;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,OAAO,OAAO,SAAS;AAAA,MACrC,MAAM,OAAM,MAAK,KAAK,KAAK;AAAA,MAC3B,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,IAAI,KAAK,WAAW;AAAA,QAAM,eAAe,IAAI,MAAK,KAAK,OAAO;AAAA,MAC9D,IAAI,KAAK,SAAS;AAAA,QAAM,aAAa,IAAI,MAAK,KAAK,KAAK;AAAA,MACxD,OAAO,EAAE,IAAI,KAAK;AAAA,KACnB;AAAA,EACH;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,CAAC,OAAO,UAAU,EAAE,IAAI,WAAW,IAAI,MAAK,KAAK,KAAK,CAAC,EAAE,EAAE;AAAA,EAC7E;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,CAAC,OAAO,SAAS,SAAS,IAAI,MAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EACjE;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU,iBAAE,MAAM,WAAW;AAAA,IAC7B,SAAS,QAAO,CAAC,QAAQ,SAAS,WAAW,EAAE,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,QAAO,CAAC,OAAO,UAAU,EAAE,SAAS,YAAY,IAAI,MAAK,KAAK,OAAO,CAAC,EAAE,EAAE;AAAA,EACrF;AACF;;;AL1IA,IAAM,aAAsB;AAAA,EAC1B;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,SACJ,QAAO,CAAC,OAAO,IAAI,QAAQ;AAAA,MAC/B,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,MAC7B,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC;AAAA,MAC7B,MAAM,QAAQ,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,MACjD,OAAO,SAAS,KAAK,EAAE,SAAS,MAAM,SAAS,MAAM,SAAS,QAAQ,MAAM,OAAO,CAAC;AAAA;AAAA,EAExF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO,CAAC,QAAQ,QAAQ;AAAA,MACtB,OAAO,SAAS,KAAK,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA;AAAA,EAE3C;AACF;AAKO,IAAM,SAAkB,CAAC,GAAG,YAAY,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW;;;AMvDtF,SAAS,YAAY,CAAC,UAAiB;AAAA,EAC5C,MAAM,QAAiD,CAAC;AAAA,EAExD,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,KAA8B;AAAA,MAClC,SAAS,MAAM;AAAA,MACf,WAAW;AAAA,QACT,OAAO;AAAA,UACL,aAAa;AAAA,UACb,SAAS,EAAE,oBAAoB,EAAE,QAAQ,iBAAE,aAAa,MAAM,QAAQ,EAAE,EAAE;AAAA,QAC5E;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,MAAM,SAAS;AAAA,MACjB,GAAG,cAAc;AAAA,QACf,UAAU;AAAA,QACV,SAAS,EAAE,oBAAoB,EAAE,QAAQ,iBAAE,aAAa,MAAM,OAAO,EAAE,EAAE;AAAA,MAC3E;AAAA,IACF;AAAA,KACC,MAAM,MAAM,UAAU,CAAC,GAAG,MAAM,OAAO,YAAY,KAAK;AAAA,EAC3D;AAAA,EAEA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM,EAAE,OAAO,oBAAoB,kBAAQ;AAAA,IAC3C;AAAA,EACF;AAAA;;;ACPF,IAAM,SAAS;AAEf,SAAS,WAAW,CAAC,KAA6B;AAAA,EAChD,MAAM,SAAS,IAAI,QAAQ,IAAI,QAAQ;AAAA,EACvC,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,WAAW,QAAQ,OAAO,MAAM,GAAG,GAAG;AAAA,IACpC,OAAO,MAAM,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG;AAAA,IACvC,IAAI,MAAM;AAAA,MAAQ,OAAO,mBAAmB,EAAE,KAAK,GAAG,CAAC;AAAA,EACzD;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,YAAY,CAAC,KAAc,MAAyB;AAAA,EAClE,MAAM,OAAO,IAAI,QAAQ,IAAI,eAAe;AAAA,EAC5C,IAAI,MAAM,WAAW,SAAS;AAAA,IAAG,OAAO,KAAK,MAAM,CAAC;AAAA,EACpD,OAAO,YAAY,GAAG,KAAK,KAAI,aAAa,IAAI,OAAO;AAAA;AAIlD,SAAS,UAAU,CAAC,KAA0B;AAAA,EACnD,OAAO,CAAC,IAAI,UAAU,IAAI,eAAe,QAAQ,IAAI,MAAM;AAAA;AAItD,SAAS,WAAW,CAAC,KAAwD;AAAA,EAClF,IAAI,IAAI;AAAA,IAAO,OAAO;AAAA,EACtB,IAAI,IAAI,eAAe;AAAA,IAAM,OAAO,EAAE,OAAO,IAAI,aAAa,KAAK,SAAS;AAAA,EAC5E,IAAI,IAAI,IAAI;AAAA,IACV,MAAM,IAAI,aAAa,IAAI,IAAI,IAAI,OAAO,IAAI,OAAO;AAAA,IACrD,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,IAAI;AAAA,EACtC;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,aAAa,CAAC,KAAc,MAAU,KAA0B;AAAA,EAC9E,MAAM,MAAM,YAAY,GAAG;AAAA,EAC3B,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,OAAO,aAAa,KAAK,IAAG,MAAM,IAAI;AAAA;AAQjC,SAAS,gBAAgB,CAAC,KAAc,MAAU,KAAiB,IAAuB;AAAA,EAC/F,IAAI,CAAC,WAAW,GAAG;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,YAAY,aAAa,KAAK,IAAG;AAAA,EACvC,IAAI,CAAC;AAAA,IAAW,OAAO;AAAA,EACvB,MAAM,MAAM,YAAY,GAAG;AAAA,EAC3B,IAAI,OAAO,cAAc,IAAI;AAAA,IAAO,OAAO;AAAA,EAC3C,OAAO,gBAAgB,IAAI,SAAS;AAAA;AAO/B,SAAS,UAAU,CACxB,KACA,MACA,KACuC;AAAA,EACvC,IAAI,IAAI,SAAS,IAAI,eAAe,QAAQ,CAAC,IAAI;AAAA,IAAI,OAAO;AAAA,EAC5D,MAAM,IAAI,aAAa,IAAI,IAAI,IAAI,OAAO,IAAI,OAAO;AAAA,EACrD,MAAM,YAAY,aAAa,KAAK,IAAG;AAAA,EACvC,IAAI,CAAC;AAAA,IAAW,OAAO;AAAA,EACvB,IAAI,cAAc,EAAE;AAAA,IAAO,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,IAAI;AAAA,EAC/D,IAAI,EAAE,QAAQ,cAAc,EAAE,QAAQ,KAAK,IAAI,IAAI,EAAE,SAAS;AAAA,IAC5D,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,IAAI;AAAA,EACtC;AAAA,EACA,OAAO;AAAA;AAIF,SAAS,SAAS,CAAC,KAAuB;AAAA,EAC/C,OAAO,IAAI,WAAW,UAAU,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,SAAS,WAAW;AAAA;AAGvF,IAAM,eAAe,EAAE,gBAAgB,2BAA2B;AAG3D,SAAS,UAAU,GAAW;AAAA,EACnC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAwBgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAkBZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBb,IAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAoBQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBd,SAAS,UAAU,CAAC,MAAsB;AAAA,EAC/C,MAAM,IAAI,KAAK,YAAY,EAAE,QAAQ,QAAQ;AAAA,EAC7C,IAAI,KAAK;AAAA,IAAG,OAAO,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA,EACjE,OAAO,OAAO;AAAA;AAIhB,eAAsB,QAAQ,CAAC,KAAe,KAAoC;AAAA,EAChF,IAAI,CAAC,WAAW,GAAG;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,KAAK,IAAI,QAAQ,IAAI,cAAc,KAAK;AAAA,EAC9C,IAAI,CAAC,GAAG,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EACtC,MAAM,OAAO,WAAW,MAAM,IAAI,KAAK,CAAC;AAAA,EACxC,MAAM,UAAU,IAAI,QAAQ,IAAI,OAAO;AAAA,EACvC,OAAO,IAAI,SAAS,MAAM,EAAE,QAAQ,IAAI,QAAQ,QAAQ,CAAC;AAAA;AAGpD,SAAS,YAAY,GAAa;AAAA,EACvC,OAAO,SAAS,KAAK,EAAE,OAAO,eAAe,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA;;;AVnL1D,MAAM,uBAAuB,MAAM;AAAA,EAE7B;AAAA,EACA;AAAA,EAFX,WAAW,CACA,MACA,MACT;AAAA,IACA,MACE,QAAQ,qEACN,mDACJ;AAAA,IANS;AAAA,IACA;AAAA,IAMT,KAAK,OAAO;AAAA;AAEhB;AAiBA,SAAS,UAAU,CAAC,SAAyB;AAAA,EAC3C,OAAO;AAAA;AAAA;AAAA,6CAGoC;AAAA;AAAA;AAAA;AAMtC,SAAS,WAAW,CAAC,OAAsB,CAAC,GAAkB;AAAA,EACnE,MAAM,KAAK,YAAY;AAAA,EACvB,MAAM,OAAO,UAAU,EAAE;AAAA,EACzB,MAAM,MAAgB,EAAE,IAAI,KAAK;AAAA,EAGjC,MAAM,MAAM,gBAAgB,EAAE;AAAA,EAC9B,MAAM,OAAO,KAAK,QAAQ,IAAI;AAAA,EAC9B,MAAM,OAAO,KAAK,QAAQ,IAAI;AAAA,EAC9B,MAAM,iBAAiB,KAAK,kBAAkB,IAAI;AAAA,EAClD,MAAM,WAAW,KAAK,YAAY,IAAI;AAAA,EAItC,MAAM,OAAmB,KAAK,QAC1B,EAAE,OAAO,MAAM,aAAa,MAAM,IAAI,MAAM,OAAO,GAAG,SAAS,EAAE,IACjE,KAAK,QACH,EAAE,OAAO,OAAO,aAAa,KAAK,OAAO,IAAI,MAAM,OAAO,GAAG,SAAS,EAAE,IACxE;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EAEN,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,IAAI,MAAM;AAAA,MACnB;AAAA,MACA,UAAU;AAAA,WACJ,MAAK,CAAC,KAAK;AAAA,QACf,MAAM,OAAM,IAAI,IAAI,IAAI,GAAG;AAAA,QAO3B,IAAI,KAAI,aAAa,WAAW;AAAA,UAC9B,IAAI,CAAC,iBAAiB,KAAK,MAAK,MAAM,EAAE;AAAA,YAAG,OAAO,aAAa;AAAA,QACjE,EAAO;AAAA,UACL,MAAM,SACJ,KAAI,aAAa,eACjB,KAAI,aAAa,cACjB,KAAI,aAAa;AAAA,UAKnB,IAAI,CAAC,UAAU,CAAC,cAAc,KAAK,MAAK,IAAI,GAAG;AAAA,YAC7C,OAAO,UAAU,GAAG,IAChB,IAAI,SAAS,WAAW,GAAG,EAAE,SAAS,aAAa,CAAC,IACpD,aAAa;AAAA,UACnB;AAAA;AAAA,QAKF,IAAI,KAAI,aAAa,YAAY;AAAA,UAC/B,MAAM,IAAI,WAAW,KAAK,MAAK,IAAI;AAAA,UACnC,OAAO,IAAI,SAAS,KAAK,CAAC,IAAI,aAAa;AAAA,QAC7C;AAAA,QAGA,IAAI,IAAI,WAAW,SAAS,KAAI,aAAa,cAAc;AAAA,UACzD,OAAO,SAAS,KAAK,aAAa,gBAAI,OAAO,CAAC;AAAA,QAChD;AAAA,QACA,IAAI,IAAI,WAAW,SAAS,KAAI,aAAa,SAAS;AAAA,UACpD,OAAO,SAAS,IAAI,SAAS,WAAW,YAAY,GAAG,EAAE,SAAS,aAAa,CAAC,GAAG,IAAI;AAAA,QACzF;AAAA,QAIA,IAAI,IAAI,WAAW,UAAU,KAAI,aAAa,OAAO,KAAI,aAAa,cAAc;AAAA,UAClF,QAAQ,4BAAe;AAAA,UACvB,MAAM,MAAM,MAAM,YAAW,GAAG;AAAA,UAChC,IAAI;AAAA,YAAK,OAAO,SAAS,KAAK,IAAI;AAAA,QACpC;AAAA,QAIA,IAAI,IAAI,WAAW,SAAS,KAAI,SAAS,WAAW,SAAS,GAAG;AAAA,UAC9D,QAAQ,0BAAc;AAAA,UACtB,MAAM,MAAM,MAAM,WAAU,KAAK,GAAG;AAAA,UACpC,IAAI;AAAA,YAAK,OAAO,SAAS,KAAK,IAAI;AAAA,QACpC;AAAA,QAGA,MAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,EAAE,WAAW,IAAI,UAAU,EAAE,SAAS,KAAI,QAAQ;AAAA,QACnF,IAAI;AAAA,UAAO,OAAO,MAAM,QAAQ,KAAK,GAAG;AAAA,QAExC,OAAO,IAAI,SAAS,aAAa,EAAE,QAAQ,IAAI,CAAC;AAAA;AAAA,IAElD,CAAC;AAAA,IACD,OAAO,GAAG;AAAA,IAIV,MAAM,OAAQ,GAAgC;AAAA,IAC9C,IAAI,SAAS,cAAc;AAAA,MACzB,MAAM,IAAI,eAAe,MAAM,IAAI;AAAA,IACrC;AAAA,IACA,IAAI,SAAS,UAAU;AAAA,MACrB,MAAM,IAAI,MACR,6BAA6B,QAAQ,uFACvC;AAAA,IACF;AAAA,IACA,MAAM;AAAA;AAAA,EAKR,IAAI,QAA+C;AAAA,EACnD,IAAI,YAAY,iBAAiB,GAAG;AAAA,IAClC,QAAQ,YAAY,MAAM;AAAA,MAKnB,aAAa,EAAE,EAAE,MAAM,CAAC,MAAM,QAAQ,MAAM,uCAAiC,CAAC,CAAC;AAAA,OACnF,cAAc;AAAA,IACjB,MAAM,QAAQ;AAAA,EAChB;AAAA,EAEA,MAAM,SAAS,YAAY,IAAI;AAAA,EAC/B,MAAM,WAAsC,KAAK,QAC7C,aACA,KAAK,QACH,WACA;AAAA,EACN,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,MAAM,OAAO,QAAQ;AAAA,IACrB;AAAA,IACA,OAAO,QAAQ,SAAS;AAAA,IACxB,KAAK,QAAQ,OAAO;AAAA,IACpB;AAAA,IACA,UAAU,QAAQ,YAAY,iBAAiB,CAAC;AAAA,IAChD;AAAA,IACA,IAAI,GAAG;AAAA,MACL,IAAI;AAAA,QAAO,cAAc,KAAK;AAAA,MAC9B,OAAO,KAAK;AAAA;AAAA,EAEhB;AAAA;",
|
|
116
|
-
"debugId": "
|
|
120
|
+
"mappings": "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",
|
|
121
|
+
"debugId": "7F98FB2AC8CA296264756E2164756E21",
|
|
117
122
|
"names": []
|
|
118
123
|
}
|