@vibeorm/runtime 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter-kit/index.d.ts +2 -2
- package/dist/adapter-kit/index.d.ts.map +1 -1
- package/dist/adapter-kit/index.js +92 -16
- package/dist/adapter-kit/index.js.map +5 -5
- package/dist/adapter-kit/savepoint-gate.d.ts +61 -0
- package/dist/adapter-kit/savepoint-gate.d.ts.map +1 -1
- package/dist/adapter-kit/session.d.ts +9 -0
- package/dist/adapter-kit/session.d.ts.map +1 -1
- package/dist/adapter-kit/sqlite-session.d.ts.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/index.js +73 -43
- package/dist/index.js.map +4 -4
- package/dist/strict-args.d.ts +10 -0
- package/dist/strict-args.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"import { restrictedSqlArgs, restrictConflictPredicates } from \"./sql-access.ts\";\nimport { protectWriteScope } from \"./write-scope.ts\";\n/**\n * Tenant scoping — `$scoped` (framework handoff: one scoped handle per request).\n *\n * A CALLER-CONFIGURED row-scoping layer: the base client plus a total\n * per-model tenancy map plus a scope value produce a NEW handle whose every\n * query is structurally confined to that tenant. Complements `@@policy`\n * (schema-declared, fail-closed) — the two do NOT combine: `$scoped` refuses\n * on a client whose schema declares any `@@policy`.\n *\n * Implemented as PURE args rewriting over the built delegates (the views.ts /\n * policy.ts pattern — ZERO query-builder edits; every emitted statement is a\n * shape the catalogs already pin). The rewrite relies on three verified\n * builder properties:\n * 1. findUnique/connect wheres compile their FULL where object — extra\n * fields and `AND` groups become filters (query-builder findUnique,\n * nested-writes resolveTargetKey), so injecting the tenant predicate\n * into a unique where IS the verified lookup, inside whatever\n * transaction the write already runs.\n * 2. A guard field beyond the conflict target forces upsert onto the\n * transactional find-then-write fallback (PG-2), whose probe honors the\n * full where — so an injected upsert can never fire ON CONFLICT against\n * another tenant's row.\n * 3. Cursors compile from caller-supplied values only (no row lookup), so\n * cursor pagination needs no rewrite to stay leak-free.\n *\n * Deny-by-default: every argument node that touches a scoped model either\n * gets the predicate injected where semantics allow, or the call REFUSES with\n * a typed `ScopedQueryError { model, path, reason }` before any SQL runs.\n * Raw SQL is absent from the scoped surface; the deliberate escape is the\n * BASE client, which this layer never mutates.\n */\n\nimport { ScopedQueryError, VibeError } from \"@vibeorm/schema\";\nimport type { RelationIR, ScopedRefusalReason } from \"@vibeorm/schema\";\nimport { getModelMeta } from \"./model-meta.ts\";\nimport type { FieldMeta, ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\nimport { resolveRelationLink } from \"./relation-plan.ts\";\nimport type { BatchResult, ClientRow, DynamicClient, ModelDelegate } from \"./client.ts\";\nimport { attachDefineView } from \"./views.ts\";\nimport { inheritReadOnly } from \"./read-only.ts\";\n\n// ─── Public types ─────────────────────────────────────────────────\n\n/** Scope values a tenant column can carry (matches String / Int / BigInt columns). */\nexport type ScopeValue = string | number | bigint;\n\n/**\n * What happens when a scoped model appears as a CHILD inside another model's\n * nested write: `\"verify\"` (default) rewrites reference verbs into\n * tenant-verified lookups; `\"refuse\"` rejects every reference verb (nested\n * `create` stays allowed under both — it is forced into the tenant).\n */\nexport type ScopedNestedMode = \"verify\" | \"refuse\";\n\n/** One model's classification in the tenancy map. */\nexport type ScopedModelEntry =\n | \"none\"\n | { readonly column: string; readonly nested?: ScopedNestedMode }\n | { readonly through: string; readonly nested?: ScopedNestedMode };\n\n/** The per-model tenancy map — must classify EVERY model (totality). */\nexport type ScopedModelsMap = Readonly<Record<string, ScopedModelEntry>>;\n\n/** The `$scoped` argument. */\nexport type ScopedClientConfig = {\n readonly scope: ScopeValue | null;\n readonly models: ScopedModelsMap;\n};\n\n// ─── Resolution ───────────────────────────────────────────────────\n\ntype ResolvedEntry =\n | { readonly kind: \"none\" }\n | { readonly kind: \"column\"; readonly field: FieldMeta; readonly nested: ScopedNestedMode }\n | {\n readonly kind: \"through\";\n readonly relation: RelationIR;\n readonly targetModel: string;\n readonly nested: ScopedNestedMode;\n };\n\ntype ResolvedScopedModels = ReadonlyMap<string, ResolvedEntry>;\n\nfunction refusal(params: {\n model: string;\n path: string;\n reason: ScopedRefusalReason;\n message: string;\n}): ScopedQueryError {\n return new ScopedQueryError(params);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n !(value instanceof Date) &&\n !(value instanceof Uint8Array)\n );\n}\n\nconst SCOPEABLE_COLUMN_TYPES: readonly string[] = [\"String\", \"Int\", \"BigInt\"];\n\n/** Cache: models-map object identity × runtime meta → resolved classification. */\nconst resolvedCache = new WeakMap<ScopedModelsMap, WeakMap<RuntimeMeta, ResolvedScopedModels>>();\n\nfunction nestedModeOf(params: { entry: Record<string, unknown>; model: string }): ScopedNestedMode {\n const raw = params.entry.nested;\n if (raw === undefined) return \"verify\";\n if (raw === \"verify\" || raw === \"refuse\") return raw;\n throw refusal({\n model: params.model,\n path: \"models\",\n reason: \"invalid_entry\",\n message: `$scoped: models.${params.model}.nested must be \"verify\" or \"refuse\", got ${String(raw)}`,\n });\n}\n\n/**\n * Validate the models map against the runtime meta: totality, known\n * columns/relations, scopeable column types, acyclic through-chains ending on\n * a { column } model. Cached by (map, meta) object identity — the framework\n * holds one map constant and calls `$scoped` per request.\n */\nexport function resolveScopedModels(params: {\n meta: RuntimeMeta;\n models: ScopedModelsMap;\n}): ResolvedScopedModels {\n const { meta, models } = params;\n const byMap = resolvedCache.get(models) ?? new WeakMap<RuntimeMeta, ResolvedScopedModels>();\n const cached = byMap.get(meta);\n if (cached !== undefined) return cached;\n\n // Unknown keys refuse first — a typo must never silently unscope a model.\n for (const key of Object.keys(models)) {\n if (!meta.modelByName.has(key)) {\n throw refusal({\n model: key,\n path: \"models\",\n reason: \"unknown_model\",\n message: `$scoped: models map names unknown model \"${key}\"`,\n });\n }\n }\n\n const resolved = new Map<string, ResolvedEntry>();\n const missing: string[] = [];\n for (const model of meta.models) {\n const entry = models[model.name] ?? models[model.clientName];\n if (entry === undefined) {\n missing.push(model.name);\n continue;\n }\n if (entry === \"none\") {\n resolved.set(model.name, { kind: \"none\" });\n continue;\n }\n if (!isPlainObject(entry)) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"invalid_entry\",\n message: `$scoped: models.${model.name} must be \"none\", { column } or { through }`,\n });\n }\n const keys = Object.keys(entry).filter((key) => entry[key as keyof typeof entry] !== undefined);\n const extras = keys.filter((key) => key !== \"column\" && key !== \"through\" && key !== \"nested\");\n if (extras.length > 0 || (\"column\" in entry) === (\"through\" in entry)) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"invalid_entry\",\n message: `$scoped: models.${model.name} must carry exactly one of column/through (plus optional nested)${\n extras.length > 0 ? ` — unknown propert${extras.length === 1 ? \"y\" : \"ies\"}: ${extras.join(\", \")}` : \"\"\n }`,\n });\n }\n const nested = nestedModeOf({ entry, model: model.name });\n if (\"column\" in entry) {\n const field = model.fieldByName.get(String(entry.column));\n if (field === undefined) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"unknown_column\",\n message: `$scoped: models.${model.name}.column names unknown field \"${String(entry.column)}\"`,\n });\n }\n if (field.isList || field.scalarType === null || !SCOPEABLE_COLUMN_TYPES.includes(field.scalarType)) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"column_not_scopeable\",\n message: `$scoped: models.${model.name}.column \"${field.name}\" must be a non-list String, Int or BigInt field`,\n });\n }\n resolved.set(model.name, { kind: \"column\", field, nested });\n continue;\n }\n const relation = model.relationByName.get(String(entry.through));\n if (relation === undefined || relation.isList) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"unknown_relation\",\n message: `$scoped: models.${model.name}.through must name a to-one relation — \"${String(entry.through)}\" ${\n relation === undefined ? \"does not exist\" : \"is a list relation\"\n }`,\n });\n }\n // Resolvability check now (fails loudly at construction, not mid-write).\n resolveRelationLink({ meta, model, relation });\n resolved.set(model.name, { kind: \"through\", relation, targetModel: relation.targetModel, nested });\n }\n\n if (missing.length > 0) {\n throw refusal({\n model: missing[0] as string,\n path: \"models\",\n reason: \"unclassified_model\",\n message: `$scoped: the models map must classify EVERY model — missing: ${missing.join(\", \")} (use \"none\" for global models)`,\n });\n }\n\n // Through-chains must terminate on a { column } model without cycling.\n for (const [name, entry] of resolved) {\n if (entry.kind !== \"through\") continue;\n const seen = new Set<string>([name]);\n let current: ResolvedEntry = entry;\n while (current.kind === \"through\") {\n const nextName: string = current.targetModel;\n if (seen.has(nextName)) {\n throw refusal({\n model: name,\n path: \"models\",\n reason: \"through_chain_invalid\",\n message: `$scoped: models.${name} through-chain cycles (${[...seen, nextName].join(\" → \")})`,\n });\n }\n seen.add(nextName);\n const next = resolved.get(nextName);\n if (next === undefined || next.kind === \"none\") {\n throw refusal({\n model: name,\n path: \"models\",\n reason: \"through_chain_invalid\",\n message: `$scoped: models.${name} through-chain must end on a { column } model — \"${nextName}\" is ${\n next === undefined ? \"unclassified\" : '\"none\"'\n }`,\n });\n }\n current = next;\n }\n }\n\n byMap.set(meta, resolved);\n resolvedCache.set(models, byMap);\n return resolved;\n}\n\n/** Assert the scope value's runtime type matches every scoped column's declared type. */\nfunction assertScopeType(params: {\n meta: RuntimeMeta;\n resolved: ResolvedScopedModels;\n scope: ScopeValue;\n}): void {\n const { resolved, scope } = params;\n for (const [name, entry] of resolved) {\n if (entry.kind !== \"column\") continue;\n const scalar = entry.field.scalarType;\n const ok =\n scalar === \"String\"\n ? typeof scope === \"string\"\n : scalar === \"Int\"\n ? typeof scope === \"number\"\n : typeof scope === \"bigint\" || typeof scope === \"number\"; // BigInt columns take both\n if (!ok) {\n throw refusal({\n model: name,\n path: \"scope\",\n reason: \"scope_type_mismatch\",\n message: `$scoped: scope value (${typeof scope}) does not match ${name}.${entry.field.name} (${scalar})`,\n });\n }\n }\n}\n\n// ─── Rewrite context ──────────────────────────────────────────────\n\ntype ScopeContext = {\n wrapDelegate?: (params: { model: string; delegate: ModelDelegate }) => ModelDelegate;\n readonly meta: RuntimeMeta;\n readonly resolved: ResolvedScopedModels;\n readonly scope: ScopeValue | null;\n /** Per-model tenant predicate as a where object; `null` for \"none\" models. */\n readonly preds: ReadonlyMap<string, ClientRow | null>;\n};\n\nfunction buildPreds(params: {\n meta: RuntimeMeta;\n resolved: ResolvedScopedModels;\n scope: ScopeValue;\n}): ReadonlyMap<string, ClientRow | null> {\n const { resolved, scope } = params;\n const preds = new Map<string, ClientRow | null>();\n const predOf = (name: string): ClientRow | null => {\n const known = preds.get(name);\n if (known !== undefined) return known;\n const entry = resolved.get(name) as ResolvedEntry;\n const value: ClientRow | null =\n entry.kind === \"none\"\n ? null\n : entry.kind === \"column\"\n ? { [entry.field.name]: scope }\n : { [entry.relation.name]: predOf(entry.targetModel) as ClientRow };\n preds.set(name, value);\n return value;\n };\n for (const name of resolved.keys()) predOf(name);\n return preds;\n}\n\nfunction entryOf(ctx: ScopeContext, model: ModelMeta): ResolvedEntry {\n return ctx.resolved.get(model.name) as ResolvedEntry;\n}\n\n/** The tenant predicate for a SCOPED model — refuses on a null scope (fail closed). */\nfunction requirePred(params: { ctx: ScopeContext; model: ModelMeta; path: string }): ClientRow {\n const { ctx, model, path } = params;\n if (ctx.scope === null) {\n throw refusal({\n model: model.name,\n path,\n reason: \"null_scope\",\n message: `$scoped: scope is null — calls touching scoped model ${model.name} refuse until a scope is bound`,\n });\n }\n return ctx.preds.get(model.name) as ClientRow;\n}\n\n/** AND-merge a (possibly absent) where with the tenant predicate. */\nfunction mergeWhere(params: { where: unknown; pred: ClientRow }): ClientRow {\n const { where, pred } = params;\n if (where === undefined) return pred;\n return { AND: [where as ClientRow, pred] };\n}\n\n/**\n * Inject the predicate into a UNIQUE where without disturbing its top-level\n * unique members (assertUniqueWhere reads them there): the predicate joins an\n * `AND` group, which the builder compiles as an extra filter.\n */\nfunction injectUniqueWhere(params: { where: unknown; pred: ClientRow }): ClientRow {\n const { where, pred } = params;\n if (!isPlainObject(where)) return { AND: [pred] };\n const existing = where.AND === undefined ? [] : Array.isArray(where.AND) ? where.AND : [where.AND];\n return { ...where, AND: [...existing, pred] };\n}\n\n/** Flatten compound-key sugar ({ a_b: {…} }) into a plain filter object. */\nfunction flattenUniqueWhere(params: { model: ModelMeta; where: ClientRow }): ClientRow {\n const { model, where } = params;\n if (model.compoundUniques.size === 0) return where;\n const out: ClientRow = {};\n for (const [key, value] of Object.entries(where)) {\n if (isPlainObject(value) && model.compoundUniques.has(key)) Object.assign(out, value);\n else out[key] = value;\n }\n return out;\n}\n\n/**\n * Is `relation` (on `model`, targeting a through-scoped model) the INVERSE of\n * that target's tenancy edge? Then every child reachable through it derives\n * its tenancy from THIS parent row — implicit-target verbs and unfiltered\n * counts are safe on exactly these edges. Pairing follows the one shared\n * rule: same model pair, symmetric relation name, self-pair excluded.\n */\nfunction isTenancyInverse(params: { ctx: ScopeContext; model: ModelMeta; relation: RelationIR }): boolean {\n const { ctx, model, relation } = params;\n const targetEntry = ctx.resolved.get(relation.targetModel);\n if (targetEntry === undefined || targetEntry.kind !== \"through\") return false;\n const through = targetEntry.relation;\n return (\n through.targetModel === model.name &&\n (through.relationName ?? null) === (relation.relationName ?? null) &&\n !(relation.model === relation.targetModel && through.name === relation.name)\n );\n}\n\n// ─── WHERE walking ────────────────────────────────────────────────\n\n/**\n * Rewrite a filter where: recurse boolean groups, and inject the tenant\n * predicate into every relation filter that targets a scoped model so other\n * tenants' rows are as-if-nonexistent on every operator:\n * some p → some (p ∧ t) none p → none (p ∧ t)\n * every p → none (t ∧ ¬p) is p → is (p ∧ t)\n * isNot p → isNot (p ∧ t) is null → isNot t isNot null → is t\n * Scalar filters pass through; unknown shapes are left for the builder's own\n * loud refusal (never silently unscoped — the predicate needs no injection\n * where no scoped model is referenced).\n */\nfunction walkWhere(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n where: ClientRow;\n path: string;\n}): ClientRow {\n const { ctx, model, where, path } = params;\n const out: ClientRow = {};\n const extra: ClientRow[] = [];\n\n const walkGroup = (value: unknown, key: string): unknown => {\n const walkItem = (item: unknown): unknown =>\n isPlainObject(item) ? walkWhere({ ctx, model, where: item, path: `${path}.${key}` }) : item;\n return Array.isArray(value) ? value.map(walkItem) : walkItem(value);\n };\n\n for (const [key, value] of Object.entries(where)) {\n if (value === undefined) continue;\n if (key === \"AND\" || key === \"OR\" || key === \"NOT\") {\n out[key] = walkGroup(value, key);\n continue;\n }\n const relation = model.relationByName.get(key);\n if (relation === undefined) {\n out[key] = value;\n continue;\n }\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n const scoped = targetEntry.kind !== \"none\";\n const childPath = `${path}.${key}`;\n const pred = (): ClientRow => requirePred({ ctx, model: target, path: childPath });\n const walkChild = (child: unknown, op: string): unknown =>\n isPlainObject(child) ? walkWhere({ ctx, model: target, where: child, path: `${childPath}.${op}` }) : child;\n\n /** Collect single-op filter parts; colliding keys spill into a where-level AND. */\n const parts: ClientRow[] = [];\n\n if (relation.isList) {\n if (!isPlainObject(value)) {\n out[key] = value; // builder refuses the shape\n continue;\n }\n for (const [op, operand] of Object.entries(value)) {\n if (operand === undefined) continue;\n if (op === \"some\" || op === \"none\") {\n const walked = walkChild(operand, op);\n parts.push({ [op]: scoped ? { AND: [walked, pred()] } : walked });\n } else if (op === \"every\") {\n const walked = walkChild(operand, op);\n parts.push(scoped ? { none: { AND: [pred(), { NOT: [walked] }] } } : { every: walked });\n } else {\n parts.push({ [op]: operand }); // unknown operator — builder refuses\n }\n }\n } else {\n const arms: Array<{ arm: \"is\" | \"isNot\"; operand: unknown }> = [];\n if (value === null) {\n arms.push({ arm: \"is\", operand: null });\n } else if (isPlainObject(value) && (\"is\" in value || \"isNot\" in value)) {\n let mixed = false;\n for (const [op, operand] of Object.entries(value)) {\n if (operand === undefined) continue;\n if (op === \"is\" || op === \"isNot\") arms.push({ arm: op, operand });\n else mixed = true;\n }\n if (mixed) {\n out[key] = value; // builder refuses mixing is/isNot with other keys\n continue;\n }\n } else if (isPlainObject(value)) {\n arms.push({ arm: \"is\", operand: value });\n } else {\n out[key] = value; // builder refuses the shape\n continue;\n }\n for (const { arm, operand } of arms) {\n if (operand === null) {\n // Null checks flip onto the predicate: \"no VISIBLE parent\" / \"a VISIBLE parent exists\".\n parts.push(scoped ? (arm === \"is\" ? { isNot: pred() } : { is: pred() }) : { [arm]: null });\n } else {\n const walked = walkChild(operand, arm);\n parts.push({ [arm]: scoped ? { AND: [walked, pred()] } : walked });\n }\n }\n }\n\n if (parts.length === 0) {\n out[key] = value;\n continue;\n }\n const combined: ClientRow = {};\n for (const part of parts) {\n const opKey = Object.keys(part)[0] as string;\n if (opKey in combined) extra.push({ [key]: part });\n else combined[opKey] = part[opKey];\n }\n out[key] = combined;\n }\n\n if (extra.length > 0) {\n const existing = out.AND === undefined ? [] : Array.isArray(out.AND) ? out.AND : [out.AND];\n out.AND = [...existing, ...extra];\n }\n return out;\n}\n\n// ─── ORDER BY walking ─────────────────────────────────────────────\n\n/**\n * Refuse orderBy terms that reach INTO a scoped model through a relation —\n * a correlated order subquery would leak a foreign row's values into row\n * ordering. The one safe edge is a through-scoped model ordering by its OWN\n * tenancy parent (a visible row's through-parent is in-tenant by definition).\n */\nfunction walkOrderTerm(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n term: ClientRow;\n path: string;\n}): void {\n const { ctx, model, term, path } = params;\n const entry = entryOf(ctx, model);\n for (const [key, spec] of Object.entries(term)) {\n if (spec === undefined) continue;\n const relation = model.relationByName.get(key);\n if (relation === undefined) continue;\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n const tenancyEdge = entry.kind === \"through\" && entry.relation.name === key;\n if (targetEntry.kind !== \"none\" && !tenancyEdge) {\n throw refusal({\n model: target.name,\n path: `${path}.${key}`,\n reason: \"relation_orderby_on_scoped\",\n message: `$scoped: orderBy through ${model.name}.${key} reaches scoped model ${target.name} — ordering by a foreign row's values would leak; order by own columns instead`,\n });\n }\n if (isPlainObject(spec)) {\n walkOrderTerm({ ctx, model: target, term: spec, path: `${path}.${key}` });\n }\n }\n}\n\nfunction walkOrderBy(params: { ctx: ScopeContext; model: ModelMeta; orderBy: unknown; path: string }): void {\n const { ctx, model, orderBy, path } = params;\n const terms = Array.isArray(orderBy) ? orderBy : [orderBy];\n for (const term of terms) {\n if (isPlainObject(term)) walkOrderTerm({ ctx, model, term, path });\n }\n}\n\n// ─── Selection (include/select/_count) walking ────────────────────\n\nfunction walkCountSpec(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n spec: unknown;\n path: string;\n}): unknown {\n const { ctx, model, spec, path } = params;\n const guard = (relation: RelationIR): void => {\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n if (targetEntry.kind === \"none\") return;\n if (isTenancyInverse({ ctx, model, relation })) return; // children ARE this row's tenants\n throw refusal({\n model: target.name,\n path: `${path}.${relation.name}`,\n reason: \"count_on_scoped_relation\",\n message: `$scoped: _count of ${model.name}.${relation.name} would count ${target.name} rows across tenants (relation counts take no filter) — select the relation with a where instead`,\n });\n };\n if (spec === true) {\n for (const relation of model.relations) {\n if (relation.isList) guard(relation);\n }\n return spec;\n }\n if (!isPlainObject(spec) || !isPlainObject(spec.select)) return spec; // builder validates shape\n const select = { ...spec.select };\n for (const [name, flag] of Object.entries(select)) {\n if (flag === undefined || flag === false) continue;\n const relation = model.relationByName.get(name);\n if (relation === undefined) continue;\n guard(relation);\n if (isPlainObject(flag) && isPlainObject(flag.where)) {\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n select[name] = { ...flag, where: walkWhere({ ctx, model: target, where: flag.where, path: `${path}.${name}.where` }) };\n }\n }\n return { ...spec, select };\n}\n\n/**\n * Rewrite include/select so every scoped CHILD model loads with the tenant\n * predicate AND-ed into its relation args, at any depth.\n */\nfunction walkSelection(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n args: ClientRow;\n path: string;\n}): void {\n const { ctx, model, args, path } = params;\n for (const blockKey of [\"include\", \"select\"] as const) {\n const block = args[blockKey];\n if (!isPlainObject(block)) continue;\n const next: ClientRow = { ...block };\n for (const [name, spec] of Object.entries(block)) {\n if (spec === undefined || spec === false) continue;\n const blockPath = `${path}.${blockKey}`;\n if (name === \"_count\") {\n next[name] = walkCountSpec({ ctx, model, spec, path: `${blockPath}._count` });\n continue;\n }\n const relation = model.relationByName.get(name);\n if (relation === undefined) continue;\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n const scoped = targetEntry.kind !== \"none\";\n const childPath = `${blockPath}.${name}`;\n if (spec === true && !scoped) continue;\n const child: ClientRow = spec === true ? {} : isPlainObject(spec) ? { ...spec } : (spec as ClientRow);\n if (!isPlainObject(child)) continue; // builder refuses the shape\n const walkedWhere = isPlainObject(child.where)\n ? walkWhere({ ctx, model: target, where: child.where, path: `${childPath}.where` })\n : child.where;\n if (scoped) {\n child.where = mergeWhere({ where: walkedWhere, pred: requirePred({ ctx, model: target, path: childPath }) });\n } else if (walkedWhere !== undefined) {\n child.where = walkedWhere;\n }\n if (child.orderBy !== undefined) {\n walkOrderBy({ ctx, model: target, orderBy: child.orderBy, path: `${childPath}.orderBy` });\n }\n walkSelection({ ctx, model: target, args: child, path: childPath });\n next[name] = child;\n }\n args[blockKey] = next;\n }\n}\n\n// ─── Write-data walking ───────────────────────────────────────────\n\nconst REFERENCE_VERBS: readonly string[] = [\n \"connect\",\n \"connectOrCreate\",\n \"set\",\n \"disconnect\",\n \"update\",\n \"updateMany\",\n \"upsert\",\n \"delete\",\n \"deleteMany\",\n];\n\nfunction nestedModeFor(entry: ResolvedEntry): ScopedNestedMode {\n return entry.kind === \"none\" ? \"verify\" : entry.nested;\n}\n\n/** Mark own and inverse protected foreign keys for checks at final resolution. */\nfunction protectScopedData(params: { ctx: ScopeContext; model: ModelMeta; data: ClientRow; path: string }): ClientRow {\n const { ctx, model, path } = params;\n let out = params.data;\n const protect = (data: ClientRow, target: ModelMeta, field: string): ClientRow => {\n requirePred({ ctx, model: target, path });\n return protectWriteScope({ data, field, value: ctx.scope, error: refusal({\n model: target.name, path, reason: \"explicit_scope_mismatch\",\n message: `$scoped: relation resolution cannot change ${target.name}.${field} away from the bound scope`,\n }) });\n };\n const entry = entryOf(ctx, model);\n if (entry.kind === \"column\" && model.relations.some((relation) => relation.fields?.includes(entry.field.name) && out[relation.name] !== undefined)) {\n out = protect(out, model, entry.field.name);\n }\n for (const [name, verbs] of Object.entries(out)) {\n const relation = model.relationByName.get(name);\n if (relation === undefined || !isPlainObject(verbs)) continue;\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n if (targetEntry.kind !== \"column\") continue;\n const link = resolveRelationLink({ meta: ctx.meta, model, relation });\n if (\n (link.kind === \"toManyFk\" || link.kind === \"toOneInverse\") &&\n link.childKeys.some((member) => member.name === targetEntry.field.name)\n ) {\n out[name] = protect(verbs, target, targetEntry.field.name);\n }\n }\n return out;\n}\n\n/** items normalizer that PRESERVES the original single-vs-array shape. */\nfunction mapItems(value: unknown, fn: (item: unknown) => unknown): unknown {\n return Array.isArray(value) ? value.map(fn) : fn(value);\n}\n\n/**\n * Rewrite create data: force the tenant column, guard the through edge, and\n * recurse into nested relation verbs — connects become tenant-verified\n * lookups (the injected predicate rides the existing resolution query, inside\n * the write's own transaction), creates are forced recursively.\n *\n * `viaTenancyEdge`: this data creates a child whose tenancy DERIVES from the\n * parent being written (nested create under the through-inverse relation) —\n * the through-parent requirement is satisfied structurally there.\n */\nfunction walkCreateData(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n data: unknown;\n path: string;\n viaTenancyEdge?: boolean;\n}): unknown {\n const { ctx, model, data, path } = params;\n if (!isPlainObject(data)) return data; // builder refuses the shape\n const entry = entryOf(ctx, model);\n const out: ClientRow = { ...data };\n\n if (entry.kind === \"column\") {\n requirePred({ ctx, model, path }); // null-scope fails closed before any force\n const given = out[entry.field.name];\n if (given !== undefined && given !== ctx.scope) {\n throw refusal({\n model: model.name,\n path: `${path}.${entry.field.name}`,\n reason: \"explicit_scope_mismatch\",\n message: `$scoped: create on ${model.name} sets ${entry.field.name} to ${given === null ? \"null\" : \"a different tenant\"} — the scoped handle owns that column`,\n });\n }\n out[entry.field.name] = ctx.scope;\n }\n\n if (entry.kind === \"through\" && params.viaTenancyEdge !== true) {\n requirePred({ ctx, model, path });\n const link = resolveRelationLink({ meta: ctx.meta, model, relation: entry.relation });\n // A COMPOSITE tenancy foreign key is bypassed by writing ANY of its\n // members directly, not just the first one.\n const writtenFk = link.parentKeys.find((member) => out[member.name] !== undefined);\n if (link.kind === \"toOneOwner\" && writtenFk !== undefined) {\n throw refusal({\n model: model.name,\n path: `${path}.${writtenFk.name}`,\n reason: \"through_fk_write\",\n message: `$scoped: writing ${model.name}.${writtenFk.name} directly would bypass tenant verification — use ${entry.relation.name}: { connect: … } instead`,\n });\n }\n if (out[entry.relation.name] === undefined) {\n throw refusal({\n model: model.name,\n path,\n reason: \"through_fk_write\",\n message: `$scoped: create on ${model.name} must bind its tenancy parent — provide ${entry.relation.name}: { connect | create | connectOrCreate: … }`,\n });\n }\n }\n\n for (const [key, value] of Object.entries(out)) {\n const relation = model.relationByName.get(key);\n if (relation === undefined || !isPlainObject(value)) continue;\n out[key] = walkNestedVerbs({ ctx, model, relation, verbs: value, path: `${path}.${key}`, phase: \"create\" });\n }\n return protectScopedData({ ctx, model, data: out, path });\n}\n\n/** Rewrite update data: tenant-column writes verified, nested verbs classified. */\nfunction walkUpdateData(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n data: unknown;\n path: string;\n}): unknown {\n const { ctx, model, data, path } = params;\n if (!isPlainObject(data)) return data;\n const entry = entryOf(ctx, model);\n const out: ClientRow = { ...data };\n\n if (entry.kind === \"column\") {\n const given = out[entry.field.name];\n if (given !== undefined) {\n const setValue = isPlainObject(given) && Object.keys(given).length === 1 ? given.set : given;\n if (setValue !== ctx.scope) {\n throw refusal({\n model: model.name,\n path: `${path}.${entry.field.name}`,\n reason: \"explicit_scope_mismatch\",\n message: `$scoped: update on ${model.name} writes ${entry.field.name} — a scoped handle cannot move rows between tenants`,\n });\n }\n }\n }\n\n if (entry.kind === \"through\") {\n const link = resolveRelationLink({ meta: ctx.meta, model, relation: entry.relation });\n // A COMPOSITE tenancy foreign key is bypassed by writing ANY of its\n // members directly, not just the first one.\n const writtenFk = link.parentKeys.find((member) => out[member.name] !== undefined);\n if (link.kind === \"toOneOwner\" && writtenFk !== undefined) {\n throw refusal({\n model: model.name,\n path: `${path}.${writtenFk.name}`,\n reason: \"through_fk_write\",\n message: `$scoped: writing ${model.name}.${writtenFk.name} directly would bypass tenant verification — use ${entry.relation.name}: { connect: … } instead`,\n });\n }\n }\n\n for (const [key, value] of Object.entries(out)) {\n const relation = model.relationByName.get(key);\n if (relation === undefined || !isPlainObject(value)) continue;\n out[key] = walkNestedVerbs({ ctx, model, relation, verbs: value, path: `${path}.${key}`, phase: \"update\" });\n }\n return protectScopedData({ ctx, model, data: out, path });\n}\n\n/**\n * Classify + rewrite ONE relation's nested-write verbs.\n *\n * Explicit-where verbs (connect, connectOrCreate, set/disconnect/delete/\n * update/upsert items, updateMany/deleteMany filters) get the predicate\n * injected — the existing resolution/filter queries then ARE the verification.\n * Implicit-target verbs (to-one update/delete/upsert/disconnect without a\n * where; non-M2M set's clearing phase) write rows this layer cannot filter,\n * so they are allowed ONLY on tenancy edges (where the target's tenant is the\n * row being written, by definition) and refused everywhere else. M2M `set`\n * refuses: its clearing phase would silently unlink foreign children.\n *\n * Unscoped (\"none\") targets skip injection and guards but their payloads and\n * wheres are STILL walked — a relation filter buried in a nested where can\n * reach a scoped model from anywhere.\n */\nfunction walkNestedVerbs(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n relation: RelationIR;\n verbs: Record<string, unknown>;\n path: string;\n phase: \"create\" | \"update\";\n}): ClientRow {\n const { ctx, model, relation, verbs, path, phase } = params;\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n const scoped = targetEntry.kind !== \"none\";\n const modelEntry = entryOf(ctx, model);\n /** Parent→child tenancy edge (children derive tenancy from this row)… */\n const pairedDown = scoped && isTenancyInverse({ ctx, model, relation });\n /** …or child→parent tenancy edge (this relation IS the model's own through edge). */\n const tenancyEdge = modelEntry.kind === \"through\" && modelEntry.relation.name === relation.name;\n const implicitSafe = pairedDown || tenancyEdge;\n const mode = nestedModeFor(targetEntry);\n const out: ClientRow = { ...verbs };\n\n const pred = (verbPath: string): ClientRow => requirePred({ ctx, model: target, path: verbPath });\n const refuse = (verb: string, why: string): never => {\n throw refusal({\n model: target.name,\n path: `${path}.${verb}`,\n reason: \"nested_refused\",\n message: `$scoped: nested \"${verb}\" on ${model.name}.${relation.name} (${target.name}) ${why}`,\n });\n };\n /** Walk a where object against the target model (relation filters inside get injected). */\n const walkTargetWhere = (where: unknown, verbPath: string): unknown =>\n isPlainObject(where) ? walkWhere({ ctx, model: target, where, path: verbPath }) : where;\n /** Unique-where treatment: walk, then AND the predicate in when the target is scoped. */\n const uniqueWhere = (where: unknown, verbPath: string): unknown => {\n const walked = walkTargetWhere(where, verbPath);\n return scoped ? injectUniqueWhere({ where: walked, pred: pred(verbPath) }) : walked;\n };\n /** Filter-where treatment for updateMany/deleteMany operands. */\n const filterWhere = (where: unknown, verbPath: string): unknown => {\n const walked = walkTargetWhere(where, verbPath);\n return scoped ? mergeWhere({ where: walked ?? {}, pred: pred(verbPath) }) : walked;\n };\n const walkChildCreate = (item: unknown, verbPath: string): unknown =>\n walkCreateData({ ctx, model: target, data: item, path: verbPath, viaTenancyEdge: pairedDown });\n const walkChildUpdate = (item: unknown, verbPath: string): unknown =>\n walkUpdateData({ ctx, model: target, data: item, path: verbPath });\n const link = (): ReturnType<typeof resolveRelationLink> =>\n resolveRelationLink({ meta: ctx.meta, model, relation });\n\n for (const [verb, operand] of Object.entries(verbs)) {\n if (operand === undefined) continue;\n const verbPath = `${path}.${verb}`;\n\n if (verb === \"create\") {\n out[verb] = mapItems(operand, (item) => walkChildCreate(item, verbPath));\n continue;\n }\n\n if (scoped && mode === \"refuse\" && REFERENCE_VERBS.includes(verb)) {\n refuse(verb, `is disabled — ${target.name} is configured nested: \"refuse\"; go through the base client or its own delegate`);\n }\n\n switch (verb) {\n case \"connect\":\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item) ? uniqueWhere(item, verbPath) : item,\n );\n break;\n case \"connectOrCreate\":\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item)\n ? { ...item, where: uniqueWhere(item.where, verbPath), create: walkChildCreate(item.create, verbPath) }\n : item,\n );\n break;\n case \"set\": {\n if (phase === \"create\") break; // not a create-phase verb; builder refuses\n if (scoped) {\n const kind = link().kind;\n if (kind === \"manyToMany\") refuse(verb, \"clears the whole join set — unlinking other tenants' rows cannot be verified; disconnect explicit rows instead\");\n if (!implicitSafe) refuse(verb, \"first detaches EVERY current child, which cannot be tenant-filtered on this edge; disconnect explicit rows instead\");\n }\n out[verb] = mapItems(operand ?? [], (item) =>\n isPlainObject(item) ? uniqueWhere(item, verbPath) : item,\n );\n break;\n }\n case \"disconnect\": {\n if (!relation.isList) {\n if (scoped) {\n const kind = link().kind;\n if (kind === \"toOneOwner\") {\n if (tenancyEdge) {\n refuse(verb, \"would orphan the row out of its tenant (through-parent set to null) — delete it or connect a replacement\");\n }\n // Writes only this row's own FK — safe.\n } else if (!implicitSafe) {\n refuse(verb, \"targets whatever row currently points here — not tenant-verifiable on this edge\");\n }\n }\n break;\n }\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item) ? uniqueWhere(item, verbPath) : item,\n );\n break;\n }\n case \"delete\": {\n if (!relation.isList) {\n if (scoped && !implicitSafe) {\n refuse(verb, \"targets whatever row is currently connected — not tenant-verifiable on this edge\");\n }\n break;\n }\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item) ? uniqueWhere(item, verbPath) : item,\n );\n break;\n }\n case \"update\": {\n if (!relation.isList) {\n if (scoped && !implicitSafe) {\n refuse(verb, \"targets whatever row is currently connected — not tenant-verifiable on this edge; update it through its own delegate\");\n }\n out[verb] = isPlainObject(operand)\n ? \"data\" in operand && isPlainObject(operand.data)\n ? { ...operand, data: walkChildUpdate(operand.data, verbPath) }\n : walkChildUpdate(operand, verbPath)\n : operand;\n break;\n }\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item)\n ? { ...item, where: uniqueWhere(item.where, verbPath), data: walkChildUpdate(item.data, verbPath) }\n : item,\n );\n break;\n }\n case \"updateMany\":\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item)\n ? { ...item, where: filterWhere(item.where, verbPath), data: walkChildUpdate(item.data, verbPath) }\n : item,\n );\n break;\n case \"deleteMany\":\n out[verb] = mapItems(operand, (item) => filterWhere(item, verbPath));\n break;\n case \"upsert\": {\n if (!relation.isList) {\n if (scoped && !implicitSafe) {\n refuse(verb, \"updates whatever row is currently connected — not tenant-verifiable on this edge\");\n }\n out[verb] = isPlainObject(operand)\n ? {\n ...operand,\n create: walkChildCreate(operand.create, verbPath),\n update: walkChildUpdate(operand.update, verbPath),\n }\n : operand;\n break;\n }\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item)\n ? {\n ...item,\n where: uniqueWhere(item.where, verbPath),\n create: walkChildCreate(item.create, verbPath),\n update: walkChildUpdate(item.update, verbPath),\n }\n : item,\n );\n break;\n }\n default:\n break; // unknown verbs: nested-writes refuses loudly\n }\n }\n return out;\n}\n\n// ─── The pure per-call rewriter ───────────────────────────────────\n\n/** A rewritten call: which base-delegate method to run, with which args. */\nexport type RewrittenScopedCall = {\n readonly model: string;\n readonly method: string;\n readonly args: ClientRow | undefined;\n};\n\n/** A validated, scope-bound rewriter — the pure core a binding's tests drive. */\nexport type ScopeRewriter = {\n readonly rewrite: (call: { model: string; method: string; args?: ClientRow }) => RewrittenScopedCall;\n};\n\n/**\n * Validate a models map + scope against the runtime meta and return the pure\n * per-call rewriter (`ScopedQueryError` on refusals). This is `$scoped`'s\n * engine without the client plumbing — conformance rewrite-vectors run here.\n */\nexport function createScopeRewriter(params: {\n meta: RuntimeMeta;\n models: ScopedModelsMap;\n scope: ScopeValue | null;\n}): ScopeRewriter {\n const { meta, models, scope } = params;\n const resolved = resolveScopedModels({ meta, models });\n if (scope !== null) assertScopeType({ meta, resolved, scope });\n const preds =\n scope === null ? new Map<string, ClientRow | null>() : buildPreds({ meta, resolved, scope });\n return {\n rewrite: (call) =>\n rewriteScopedCall({\n meta,\n resolved,\n scope,\n preds,\n model: call.model,\n method: call.method,\n args: call.args,\n }),\n };\n}\n\nconst FIND_LIKE: readonly string[] = [\"findMany\", \"findFirst\", \"findFirstOrThrow\", \"count\", \"aggregate\", \"groupBy\"];\n\n/**\n * Rewrite ONE delegate call for a scoped handle — pure: same inputs, same\n * output; refusals throw `ScopedQueryError` before any SQL could run. This is\n * the function the conformance rewrite-vectors pin.\n */\nexport function rewriteScopedCall(params: {\n meta: RuntimeMeta;\n resolved: ResolvedScopedModels;\n scope: ScopeValue | null;\n preds: ReadonlyMap<string, ClientRow | null>;\n model: string;\n method: string;\n args: ClientRow | undefined;\n}): RewrittenScopedCall {\n const { meta, resolved, scope, preds, method } = params;\n const ctx: ScopeContext = { meta, resolved, scope, preds };\n const model = getModelMeta({ meta, model: params.model });\n const entry = entryOf(ctx, model);\n const scoped = entry.kind !== \"none\";\n const root = `${model.clientName}.${method}`;\n const args: ClientRow = restrictedSqlArgs({ value: params.args ?? {}, path: \"$scoped\" });\n restrictConflictPredicates({ meta, model, args, path: \"$scoped\" });\n const ownPred = (): ClientRow => requirePred({ ctx, model, path: root });\n\n const walkOwnWhere = (where: unknown, path: string): unknown =>\n isPlainObject(where) ? walkWhere({ ctx, model, where, path }) : where;\n\n if (FIND_LIKE.includes(method)) {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (scoped) args.where = mergeWhere({ where: walked, pred: ownPred() });\n else if (walked !== undefined) args.where = walked;\n if (args.orderBy !== undefined) walkOrderBy({ ctx, model, orderBy: args.orderBy, path: `${root}.orderBy` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n switch (method) {\n case \"findUnique\":\n case \"findUniqueOrThrow\": {\n walkSelection({ ctx, model, args, path: root });\n if (!scoped) {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (walked !== undefined) args.where = walked;\n return { model: model.name, method, args };\n }\n // Contract: rewritten to findFirst over the flattened key + predicate —\n // a foreign row is indistinguishable from a missing one.\n const flat = isPlainObject(args.where)\n ? flattenUniqueWhere({ model, where: args.where })\n : (args.where as ClientRow);\n const walked = isPlainObject(flat) ? walkWhere({ ctx, model, where: flat, path: `${root}.where` }) : flat;\n args.where = mergeWhere({ where: walked, pred: ownPred() });\n return {\n model: model.name,\n method: method === \"findUnique\" ? \"findFirst\" : \"findFirstOrThrow\",\n args,\n };\n }\n\n case \"create\": {\n args.data = walkCreateData({ ctx, model, data: args.data ?? {}, path: `${root}.data` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"createMany\":\n case \"createManyAndReturn\": {\n const rows = args.data;\n args.data = Array.isArray(rows)\n ? rows.map((row) => walkCreateData({ ctx, model, data: row, path: `${root}.data` }))\n : walkCreateData({ ctx, model, data: rows ?? {}, path: `${root}.data` });\n if (method === \"createManyAndReturn\") walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"update\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n args.where = scoped ? injectUniqueWhere({ where: walked, pred: ownPred() }) : (walked as ClientRow);\n args.data = walkUpdateData({ ctx, model, data: args.data ?? {}, path: `${root}.data` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"updateMany\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (scoped) args.where = mergeWhere({ where: walked, pred: ownPred() });\n else if (walked !== undefined) args.where = walked;\n args.data = walkUpdateData({ ctx, model, data: args.data ?? {}, path: `${root}.data` });\n return { model: model.name, method, args };\n }\n\n case \"updateManyAndReturn\": {\n // updateMany's tenant MERGE (a filter, not a unique selector) plus update's\n // projection walk — this method returns rows, so the selection must be\n // masked exactly as `update`'s is.\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (scoped) args.where = mergeWhere({ where: walked, pred: ownPred() });\n else if (walked !== undefined) args.where = walked;\n args.data = walkUpdateData({ ctx, model, data: args.data ?? {}, path: `${root}.data` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"upsert\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n // The injected predicate is a guard field beyond the conflict target —\n // the client's find-then-write fallback probes with the FULL where, so\n // the update arm can only ever address an in-tenant row.\n args.where = scoped ? injectUniqueWhere({ where: walked, pred: ownPred() }) : (walked as ClientRow);\n args.create = walkCreateData({ ctx, model, data: args.create ?? {}, path: `${root}.create` });\n args.update = walkUpdateData({ ctx, model, data: args.update ?? {}, path: `${root}.update` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"delete\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n args.where = scoped ? injectUniqueWhere({ where: walked, pred: ownPred() }) : (walked as ClientRow);\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"deleteMany\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (scoped) args.where = mergeWhere({ where: walked, pred: ownPred() });\n else if (walked !== undefined) args.where = walked;\n return { model: model.name, method, args };\n }\n\n default:\n return { model: model.name, method, args: params.args };\n }\n}\n\n// ─── Scoped delegates + client assembly ───────────────────────────\n\ntype AnyFn = (...args: unknown[]) => unknown;\n\nfunction scopedDelegate(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n base: ModelDelegate & Record<string, unknown>;\n}): ModelDelegate {\n const { ctx, model, base } = params;\n\n const run = <T>(method: string, args: ClientRow | undefined): Promise<T> => {\n let rewritten: RewrittenScopedCall;\n try {\n rewritten = rewriteScopedCall({\n meta: ctx.meta,\n resolved: ctx.resolved,\n scope: ctx.scope,\n preds: ctx.preds,\n model: model.name,\n method,\n args,\n });\n } catch (error) {\n // Reject (not throw): delegate methods promise a Promise, and a lazy\n // QueryPromise from the base delegate stays claimable by $transaction([...]).\n return Promise.reject(error);\n }\n const target = base[rewritten.method] as (a?: ClientRow) => Promise<T>;\n return target(rewritten.args);\n };\n\n return {\n findMany: (args?: ClientRow) => run(\"findMany\", args),\n findFirst: (args?: ClientRow) => run(\"findFirst\", args),\n findFirstOrThrow: (args?: ClientRow) => run(\"findFirstOrThrow\", args),\n findUnique: (args: ClientRow) => run(\"findUnique\", args),\n findUniqueOrThrow: (args: ClientRow) => run(\"findUniqueOrThrow\", args),\n create: (args: ClientRow) => run(\"create\", args),\n createMany: (args: ClientRow) => run<BatchResult>(\"createMany\", args),\n createManyAndReturn: (args: ClientRow) => run(\"createManyAndReturn\", args),\n update: (args: ClientRow) => run(\"update\", args),\n updateMany: (args: ClientRow) => run<BatchResult>(\"updateMany\", args),\n updateManyAndReturn: (args: ClientRow) => run(\"updateManyAndReturn\", args),\n upsert: (args: ClientRow) => run(\"upsert\", args),\n // EPIC 10: deliberately NOT routed. A `conflictTarget` that omits the scope\n // column would let one tenant's feed overwrite another tenant's row, so this\n // refuses loudly instead of passing through unscoped. Routing it needs a\n // per-row scope merge PLUS a conflict-target check that the scope column is\n // part of the target — see notes-epic10.md hand-off 4.\n upsertMany: (): Promise<never> => {\n throw forbidden({ method: \"upsertMany\" });\n },\n delete: (args: ClientRow) => run(\"delete\", args),\n deleteMany: (args?: ClientRow) => run<BatchResult>(\"deleteMany\", args),\n count: (args?: ClientRow) => run(\"count\", args),\n aggregate: (args: ClientRow) => run(\"aggregate\", args),\n groupBy: (args: ClientRow) => run(\"groupBy\", args),\n } as ModelDelegate;\n}\n\n/**\n * Wrap extension surfaces (search/vector/… mounted per model): functions\n * taking `{ where }` get the tenant predicate AND-ed in and the where walked;\n * nested namespaces recurse.\n */\nfunction scopeExtensionProps(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n base: Record<string, unknown>;\n delegate: ModelDelegate;\n}): Record<string, unknown> {\n const { ctx, model, base, delegate } = params;\n const entry = entryOf(ctx, model);\n const out: Record<string, unknown> = {};\n for (const [key, prop] of Object.entries(base)) {\n if (key in delegate) continue;\n if (typeof prop === \"function\") {\n out[key] = (args?: ClientRow): unknown => {\n try {\n const path = `${model.clientName}.${key}`;\n const walked = isPlainObject(args?.where)\n ? walkWhere({ ctx, model, where: args.where, path: `${path}.where` })\n : args?.where;\n const where =\n entry.kind === \"none\"\n ? walked\n : mergeWhere({ where: walked, pred: requirePred({ ctx, model, path }) });\n return (prop as AnyFn)({ ...(args ?? {}), ...(where === undefined ? {} : { where }) });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n } else if (isPlainObject(prop)) {\n out[key] = scopeExtensionProps({\n ctx,\n model,\n base: prop as Record<string, unknown>,\n delegate: {} as ModelDelegate,\n });\n }\n }\n return out;\n}\n\nfunction forbidden(params: { method: string }): ScopedQueryError {\n return refusal({\n model: \"*\",\n path: params.method,\n reason: \"raw_forbidden\",\n message: `$scoped: ${params.method} is not available on a scoped handle — raw SQL cannot be tenant-verified; run it on the BASE client (the deliberate unscoped escape)`,\n });\n}\n\nconst RAW_METHODS: readonly string[] = [\"$querySql\", \"$executeSql\", \"$queryRaw\", \"$executeRaw\", \"$queryRawUnsafe\", \"$executeRawUnsafe\"];\n\n/** Build the scoped view over one underlying client (base or transaction). */\nfunction buildScopedOver(params: { ctx: ScopeContext; client: DynamicClient }): DynamicClient {\n const { ctx, client } = params;\n const scoped = Object.create(client) as DynamicClient & Record<string, unknown>;\n const scopedModels: Record<string, ModelDelegate> = { ...client.$models };\n\n for (const model of ctx.meta.models) {\n const base = client.$models[model.name] as ModelDelegate & Record<string, unknown>;\n const delegate = scopedDelegate({ ctx, model, base });\n const unwrapped = { ...delegate, ...scopeExtensionProps({ ctx, model, base, delegate }) };\n const full = ctx.wrapDelegate?.({ model: model.name, delegate: unwrapped }) ?? unwrapped;\n scopedModels[model.name] = full as ModelDelegate;\n scopedModels[model.clientName] = full as ModelDelegate;\n Object.defineProperty(scoped, model.clientName, { value: full, enumerable: true });\n }\n Object.defineProperty(scoped, \"$models\", { value: scopedModels, enumerable: true });\n attachDefineView({ client: scoped, meta: ctx.meta, models: scopedModels });\n // Without its own $readOnly this handle would inherit the BASE client's\n // through the prototype chain and hand back an UNSCOPED read-only client.\n inheritReadOnly({ from: client, to: scoped });\n\n Object.defineProperty(scoped, \"$transaction\", {\n value: (arg: unknown, options?: unknown) =>\n typeof arg === \"function\"\n ? client.$transaction(\n (tx) => (arg as (t: DynamicClient) => Promise<unknown>)(buildScopedOver({ ctx, client: tx })),\n options as never,\n )\n : // Array form: the operations came from SCOPED delegates, so their\n // args are already rewritten — the underlying client claims and\n // runs them in one transaction exactly like unscoped operations.\n client.$transaction(arg as never, options as never),\n enumerable: true,\n });\n\n for (const method of RAW_METHODS) {\n Object.defineProperty(scoped, method, {\n value: (): Promise<never> => Promise.reject(forbidden({ method })),\n enumerable: true,\n });\n }\n Object.defineProperty(scoped, \"$scoped\", {\n value: (): never => {\n throw refusal({\n model: \"*\",\n path: \"$scoped\",\n reason: \"rescope_forbidden\",\n message: \"$scoped: this handle is already scoped — build a differently-scoped handle from the BASE client\",\n });\n },\n enumerable: true,\n });\n\n return scoped;\n}\n\n/**\n * Attach `$scoped` to a built client. Validation happens per call:\n * `@@policy` schemas refuse (the two scoping layers do not combine), the\n * models map is resolved against the schema (cached by object identity), and\n * the scope value is type-checked against every scoped column.\n */\nexport function attachScoped(params: { client: DynamicClient; meta: RuntimeMeta; wrapDelegate?: (params: { model: string; delegate: ModelDelegate }) => ModelDelegate; }): void {\n const { client, meta } = params;\n Object.defineProperty(client, \"$scoped\", {\n value: (config: ScopedClientConfig): DynamicClient => {\n if (!isPlainObject(config) || !isPlainObject(config.models)) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: \"$scoped takes { scope: string | number | bigint | null, models: { <Model>: … } }\",\n });\n }\n const policied = meta.models.filter((model) => model.policy !== undefined);\n if (policied.length > 0) {\n throw refusal({\n model: policied[0]?.name as string,\n path: \"$scoped\",\n reason: \"policy_conflict\",\n message: `$scoped: the schema declares @@policy on ${policied\n .map((model) => model.name)\n .join(\", \")} — use $withPolicy for policied schemas; the two scoping layers do not combine`,\n });\n }\n const scope = config.scope;\n if (scope !== null && typeof scope !== \"string\" && typeof scope !== \"number\" && typeof scope !== \"bigint\") {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `$scoped: scope must be a string, number, bigint or null — got ${typeof scope}`,\n });\n }\n const resolved = resolveScopedModels({ meta, models: config.models });\n if (scope !== null) assertScopeType({ meta, resolved, scope });\n const preds =\n scope === null\n ? new Map<string, ClientRow | null>()\n : buildPreds({ meta, resolved, scope });\n const ctx: ScopeContext = { meta, resolved, scope, preds, ...(params.wrapDelegate === undefined ? {} : { wrapDelegate: params.wrapDelegate }) };\n return buildScopedOver({ ctx, client });\n },\n enumerable: true,\n });\n}\n",
|
|
37
37
|
"/**\n * Native-RLS readiness — verify the ACTUAL runtime privileges and the ACTUAL\n * policy state of the live database (plan contracts 9, 11, 12, 16).\n *\n * What this module refuses to do is as important as what it does:\n * - it never trusts a migration record, a policy NAME or a policy COMMENT\n * (lane 3S proved a rewritten comment can make a comment check green while\n * the policy itself is tampered);\n * - it compares policy expressions as PostgreSQL's OWN deparse of a probe\n * policy created on a same-named TEMP clone under an empty `search_path`\n * — never as normalized text. Only desired deparse is cached by the client;\n * live expressions and privileges are read again every transaction;\n * - a database that will not let it verify reports `\"unavailable\"`, which is\n * NOT ready. There is no path from \"could not check\" to \"ready\".\n *\n * Cost and blast radius: no DDL on any live table (only `pg_temp` clones, so\n * the live table sees an AccessShareLock, never AccessExclusiveLock), no role\n * switch, no context binding, no schema or role provisioning of any kind, and\n * `search_path` saved and restored inside the probe's own savepoint. Nothing\n * about live readiness is cached. Reconnect invalidates desired deparse too.\n * Within one backend generation, desired deparse may be stale after privileged\n * dependency changes that leave identical expression text; this is not an\n * instantaneous-revocation guarantee. Standalone doctor checks never cache.\n */\n\nimport { VibeError, assertValidSchemaIR, unsupportedCapability } from \"@vibeorm/schema\";\nimport type { ModelIR, Provider, SchemaIR } from \"@vibeorm/schema\";\nimport { NATIVE_RLS, getSqlDialect, renderRlsPolicy, renderRlsRole, NATIVE_RLS_PROBE_POLICY, renderRlsReadinessQuery, renderRlsProbeTable } from \"@vibeorm/sql\";\nimport type { SqlDialect } from \"@vibeorm/sql\";\nimport type { DatabaseAdapter } from \"./adapter.ts\";\n\n// ─── Public shape ─────────────────────────────────────────────────\n\n/** Stable identifier of one readiness check; callers branch on this, never on text. */\nexport type NativeRlsCheckName =\n | \"runtime-role-identity\"\n | \"runtime-role-privileges\"\n | \"elevated-role-membership\"\n | \"schema-control\"\n | \"table-ownership\"\n | \"table-truncate-privilege\"\n | \"row-level-security-enabled\"\n | \"row-level-security-forced\"\n | \"managed-policy-present\"\n | \"managed-policy-shape\"\n | \"unexpected-policy\"\n | \"managed-policy-expression\"\n | \"unsafe-objects\";\n\n/**\n * `\"unavailable\"` means the database would not let this check run (no TEMP\n * privilege, an unreadable catalog flag). It blocks readiness exactly like\n * `\"fail\"` — the two differ only in what a human should do about them.\n * `\"warn\"` is a reported limitation that does not block: the PGlite session\n * role, and the presence of unsafe objects (contract 16 reports them).\n */\nexport type NativeRlsCheckStatus = \"pass\" | \"warn\" | \"fail\" | \"unavailable\";\n\n/** One verified fact about the live database. */\nexport type NativeRlsCheck = {\n readonly name: NativeRlsCheckName;\n readonly status: NativeRlsCheckStatus;\n readonly detail: string;\n /** Offending tables, roles or objects — never a context or identity VALUE. */\n readonly subjects: readonly string[];\n};\n\n/** An object that can execute with an authority other than the caller's. */\nexport type NativeRlsUnsafeObject = {\n readonly kind: \"view\" | \"materializedView\" | \"securityDefinerRoutine\" | \"trigger\";\n /** `public.order_report`, `public.escalate`, `public.orders.audit_orders`. */\n readonly name: string;\n readonly owner: string;\n readonly detail: string;\n};\n\n/** The full readiness verdict. Built fresh on every call — never cached. */\nexport type NativeRlsReport = {\n /** True only when every check is `\"pass\"` or `\"warn\"`. */\n readonly ready: boolean;\n readonly currentRole: string;\n readonly sessionRole: string;\n readonly provider: Provider;\n readonly serverVersionNum: number | null;\n /** Physical tables of every model carrying a rule other than `\"unprotected\"`. */\n readonly tables: readonly string[];\n readonly checks: readonly NativeRlsCheck[];\n /** The `\"fail\"` / `\"unavailable\"` subset — what makes `ready` false. */\n readonly problems: readonly NativeRlsCheck[];\n readonly unsafeObjects: readonly NativeRlsUnsafeObject[];\n};\n\n// Compatibility exports; all statement text belongs to the SQL dialect layer.\nexport { RLS_READINESS_SQL, NATIVE_RLS_PROBE_POLICY } from \"@vibeorm/sql\";\n\n// ─── Row readers (strict: a fact is read, never coerced) ──────────\n\ntype CatalogRow = Record<string, unknown>;\n\nfunction textOf(params: { row: CatalogRow; key: string }): string {\n const value = params.row[params.key];\n return typeof value === \"string\" ? value : \"\";\n}\n\nfunction nullableTextOf(params: { row: CatalogRow; key: string }): string | null {\n const value = params.row[params.key];\n return typeof value === \"string\" ? value : null;\n}\n\n/**\n * A database boolean is accepted ONLY as `true`/`false`. Anything else leaves\n * the fact unknown (`undefined`), which makes its check `\"unavailable\"` — a\n * permissive `String(value) === \"t\"` would turn an unreadable security flag\n * into a silent pass, which is the whole class of bug this feature must not\n * have.\n */\nfunction flagOf(params: { row: CatalogRow; key: string }): boolean | undefined {\n const value = params.row[params.key];\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction intOf(params: { row: CatalogRow; key: string }): number | null {\n const value = params.row[params.key];\n if (typeof value === \"number\" && Number.isInteger(value)) return value;\n if (typeof value !== \"string\" || !/^\\d+$/.test(value)) return null;\n return Number.parseInt(value, 10);\n}\n\nfunction unreadableCatalog(params: { key: string; detail: string }): VibeError {\n return new VibeError({\n code: \"VIBE_ADAPTER\",\n message:\n `native RLS readiness could not read the \"${params.key}\" result of the folded catalog read: ${params.detail}. ` +\n \"The inspection is refused rather than treated as an empty result set.\",\n meta: { result: params.key },\n });\n}\n\n/**\n * One result set of the folded catalog read. The statement returns each set as\n * a JSON TEXT array, so the values inside carry JSON's own types: a boolean is\n * a boolean here, never the string \"false\" (which is truthy) — the property\n * {@link flagOf} depends on.\n *\n * `null` is `json_agg` over zero rows: a real, readable answer. Anything this\n * function cannot read is REFUSED with a typed error rather than returned as\n * an empty array — \"no elevated roles exist\" and \"the elevated-role result was\n * unreadable\" must never look the same to a security check.\n */\nfunction catalogRowsOf(params: { row: CatalogRow; key: string }): CatalogRow[] {\n const value = params.row[params.key];\n if (value === null || value === undefined) return [];\n let parsed: unknown = value;\n if (typeof value === \"string\") {\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n throw unreadableCatalog({ key: params.key, detail: describeFailure({ error }) });\n }\n }\n if (!Array.isArray(parsed)) {\n throw unreadableCatalog({ key: params.key, detail: `expected a JSON array, got ${typeof parsed}` });\n }\n return parsed.map((entry: unknown): CatalogRow => {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n throw unreadableCatalog({ key: params.key, detail: `expected JSON objects, got ${entry === null ? \"null\" : typeof entry}` });\n }\n return entry as CatalogRow;\n });\n}\n\n// ─── Internal catalog shapes ──────────────────────────────────────\n\ntype IdentityFacts = {\n readonly currentRole: string;\n readonly sessionRole: string;\n readonly superuser: boolean | undefined;\n readonly bypassRls: boolean | undefined;\n readonly createDb: boolean | undefined;\n readonly createRole: boolean | undefined;\n readonly serverVersionNum: number | null;\n};\n\ntype TableFacts = {\n readonly table: string;\n readonly rlsEnabled: boolean | undefined;\n readonly rlsForced: boolean | undefined;\n readonly owner: string;\n readonly ownerAccess: boolean | undefined;\n readonly truncate: boolean | undefined;\n};\n\ntype PolicyFacts = {\n readonly table: string;\n readonly name: string;\n readonly permissive: boolean | undefined;\n readonly command: string;\n readonly toPublic: boolean | undefined;\n readonly hasUsing: boolean | undefined;\n readonly hasWithCheck: boolean | undefined;\n};\n\ntype ExpressionFacts = {\n readonly table: string;\n readonly probe: boolean | undefined;\n readonly using: string | null;\n readonly withCheck: string | null;\n};\n\ntype SchemaControlFacts = {\n readonly schema: string;\n readonly database: string;\n readonly ownerAccess: boolean | undefined;\n readonly create: boolean | undefined;\n readonly databaseOwnerAccess: boolean | undefined;\n};\n\n/** One protected model, with the physical table its policy lives on. */\ntype ProtectedTable = { readonly model: string; readonly table: string };\n\ntype ProbeOutcome =\n | { readonly available: true; readonly expressions: readonly ExpressionFacts[] }\n | { readonly available: false; readonly reason: string };\n\n/** Bounded per-client cache: evicting a backend only costs a fresh probe. */\nconst EXPRESSION_CACHE_LIMITS: { readonly connections: number } = Object.freeze({ connections: 64 });\nconst expressionCaches: WeakMap<object, { readonly schema: SchemaIR; readonly connections: Map<string, readonly ExpressionFacts[]> }> = new WeakMap();\n\n// ─── Findings ─────────────────────────────────────────────────────\n\ntype Finding = { readonly subject: string; readonly severity: \"fail\" | \"unavailable\" | \"warn\" };\n\nfunction buildCheck(params: {\n name: NativeRlsCheckName;\n detail: string;\n findings: readonly Finding[];\n}): NativeRlsCheck {\n const { name, detail, findings } = params;\n const status: NativeRlsCheckStatus = findings.some((finding) => finding.severity === \"fail\")\n ? \"fail\"\n : findings.some((finding) => finding.severity === \"unavailable\")\n ? \"unavailable\"\n : findings.some((finding) => finding.severity === \"warn\")\n ? \"warn\"\n : \"pass\";\n return { name, status, detail, subjects: [...new Set(findings.map((finding) => finding.subject))] };\n}\n\n/** An unknown flag is unavailable; a known flag that deviates is a failure. */\nfunction flagFinding(params: {\n subject: string;\n flag: boolean | undefined;\n expected: boolean;\n}): Finding | undefined {\n const { subject, flag, expected } = params;\n if (flag === undefined) return { subject, severity: \"unavailable\" };\n return flag === expected ? undefined : { subject, severity: \"fail\" };\n}\n\nfunction present(findings: readonly (Finding | undefined)[]): Finding[] {\n return findings.filter((finding): finding is Finding => finding !== undefined);\n}\n\n// ─── Schema helpers ───────────────────────────────────────────────\n\nfunction physicalTable(params: { model: ModelIR }): string {\n return params.model.dbName ?? params.model.name;\n}\n\nfunction protectedTablesOf(params: { schema: SchemaIR }): ProtectedTable[] {\n return params.schema.models\n .filter((model) => model.rls !== undefined && model.rls !== \"unprotected\")\n .map((model) => ({ model: model.name, table: physicalTable({ model }) }));\n}\n\nfunction unprotectedTablesOf(params: { schema: SchemaIR }): string[] {\n return params.schema.models\n .filter((model) => model.rls === \"unprotected\")\n .map((model) => physicalTable({ model }));\n}\n\n/**\n * Both entry points refuse the same two impossibilities before touching the\n * database: a dialect without native RLS, and a schema that never declared it.\n */\nfunction requireNativeRls(params: { adapter: DatabaseAdapter; schema: SchemaIR }): SqlDialect {\n const dialect = getSqlDialect({ dialect: params.adapter.dialect });\n if (!dialect.capabilities.nativeRowLevelSecurity) {\n throw unsupportedCapability({ dialect: dialect.name, feature: \"nativeRowLevelSecurity\" });\n }\n if (params.schema.rls === undefined) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: \"Native row-level security readiness requires a schema that declares native RLS\",\n });\n }\n assertValidSchemaIR({ schema: params.schema });\n return dialect;\n}\n\nfunction describeFailure(params: { error: unknown }): string {\n const { error } = params;\n return error instanceof Error ? error.message : String(error);\n}\n\n// ─── The expression probe ─────────────────────────────────────────\n\n/**\n * Compare-by-deparse, the lock-free half of lane 3S's answer 2: clone each\n * protected table's column set into a TEMP table of the SAME NAME (the deparse\n * prints outer column references as `\"<relname>\".\"<col>\"` and casts against the\n * real column types, so both must match), put the DESIRED policy on the clone,\n * and let the server print both expressions in one read.\n *\n * It runs in its OWN savepoint for three reasons: a refusal cannot poison the\n * caller's transaction; the empty `search_path` cannot leak into the caller's\n * statements; and if anything fails, the rollback removes the clones — which\n * MATTERS, because a surviving `pg_temp.\"User\"` would shadow the live table\n * for every unqualified statement the ORM issues afterwards.\n */\nasync function probeExpressions(params: {\n adapter: DatabaseAdapter;\n dialect: SqlDialect;\n schema: SchemaIR;\n tables: readonly ProtectedTable[];\n desired?: readonly ExpressionFacts[];\n}): Promise<ProbeOutcome> {\n const { adapter, dialect, schema, tables } = params;\n if (tables.length === 0) return { available: true, expressions: [] };\n\n return adapter\n .transaction(async (tx): Promise<ProbeOutcome> => {\n const current = await tx.execute(renderRlsReadinessQuery({ dialect, query: \"readSearchPath\" }));\n const searchPath = current[0] === undefined ? \"\" : textOf({ row: current[0], key: \"searchPath\" });\n await tx.execute(renderRlsReadinessQuery({ dialect, query: \"setSearchPath\", searchPath: \"\" }));\n\n for (const entry of params.desired === undefined ? tables : []) {\n await tx.executeUnsafe(renderRlsProbeTable({ dialect, table: entry.table, action: \"create\" }));\n await tx.executeUnsafe(\n renderRlsPolicy({\n dialect,\n schema,\n model: entry.model,\n policyName: NATIVE_RLS_PROBE_POLICY,\n targetSchema: \"pg_temp\",\n }),\n );\n }\n\n const rows = await tx.execute(renderRlsReadinessQuery({ dialect, query: \"expressions\" }));\n\n for (const entry of params.desired === undefined ? tables : []) {\n await tx.executeUnsafe(renderRlsProbeTable({ dialect, table: entry.table, action: \"drop\" }));\n }\n await tx.execute(renderRlsReadinessQuery({ dialect, query: \"setSearchPath\", searchPath }));\n\n return {\n available: true,\n expressions: [...rows.filter((row) => params.desired === undefined || row.probe === false).map((row) => ({\n table: textOf({ row, key: \"table\" }),\n probe: flagOf({ row, key: \"probe\" }),\n using: nullableTextOf({ row, key: \"using\" }),\n withCheck: nullableTextOf({ row, key: \"withCheck\" }),\n })), ...(params.desired ?? [])],\n };\n })\n .catch((error: unknown): ProbeOutcome => ({ available: false, reason: describeFailure({ error }) }));\n}\n\n// ─── Checks ───────────────────────────────────────────────────────\n\nfunction identityChecks(params: {\n identity: IdentityFacts;\n provider: Provider;\n runtimeRole: string | undefined;\n}): NativeRlsCheck[] {\n const { identity, provider, runtimeRole } = params;\n const embedded = provider === \"pglite\";\n\n const identityFindings: Finding[] = [];\n if (runtimeRole !== undefined && identity.currentRole !== runtimeRole) {\n identityFindings.push({ subject: identity.currentRole, severity: \"fail\" });\n }\n if (identity.sessionRole !== identity.currentRole) {\n // On a server the login role IS the runtime role, so a switched session is\n // a deployment mistake. PGlite has only its privileged embedded session,\n // so the transaction-local switch is expected — and is host-process\n // discipline, never a boundary against that process.\n identityFindings.push({ subject: identity.sessionRole, severity: embedded ? \"warn\" : \"fail\" });\n }\n\n return [\n buildCheck({\n name: \"runtime-role-identity\",\n detail: embedded\n ? \"PGlite binds the runtime role transaction-locally; its session role stays privileged, which is a limitation of the embedded engine, not a boundary\"\n : \"the connection must log in AS the runtime role, never switch into it\",\n findings: identityFindings,\n }),\n buildCheck({\n name: \"runtime-role-privileges\",\n detail: \"the runtime role must not be a superuser and must not hold BYPASSRLS, CREATEDB or CREATEROLE\",\n findings: present([\n flagFinding({ subject: \"superuser\", flag: identity.superuser, expected: false }),\n flagFinding({ subject: \"bypassrls\", flag: identity.bypassRls, expected: false }),\n flagFinding({ subject: \"createdb\", flag: identity.createDb, expected: false }),\n flagFinding({ subject: \"createrole\", flag: identity.createRole, expected: false }),\n ]),\n }),\n ];\n}\n\nfunction schemaControlCheck(params: { control: SchemaControlFacts | undefined }): NativeRlsCheck {\n const { control } = params;\n if (control === undefined) {\n return buildCheck({\n name: \"schema-control\",\n detail: \"the schema holding the protected tables could not be read\",\n findings: [{ subject: NATIVE_RLS.tableSchema, severity: \"unavailable\" }],\n });\n }\n const findings = present([\n flagFinding({ subject: control.schema, flag: control.ownerAccess, expected: false }),\n flagFinding({ subject: control.database, flag: control.databaseOwnerAccess, expected: false }),\n ]);\n // CREATE on the schema is NOT a policy bypass — it cannot disable RLS, which\n // needs table ownership — but it lets the runtime add objects to a protected\n // schema, and it is the default for PUBLIC on PostgreSQL 14 and earlier.\n // Reported, deliberately not a refusal.\n if (control.create === undefined) findings.push({ subject: control.schema, severity: \"unavailable\" });\n else if (control.create) findings.push({ subject: `CREATE on ${control.schema}`, severity: \"warn\" });\n\n return buildCheck({\n name: \"schema-control\",\n detail:\n \"the runtime role must not own (or be able to SET ROLE into the owner of) the protected schema or the database — a schema owner can DROP SCHEMA ... CASCADE\",\n findings,\n });\n}\n\nfunction tableChecks(params: {\n tables: readonly TableFacts[];\n protectedTables: readonly ProtectedTable[];\n}): NativeRlsCheck[] {\n const { protectedTables } = params;\n const byName = new Map(params.tables.map((row) => [row.table, row]));\n\n const ownership: Finding[] = [];\n const truncate: Finding[] = [];\n const enabled: Finding[] = [];\n const forced: Finding[] = [];\n\n for (const entry of protectedTables) {\n const row = byName.get(entry.table);\n if (row === undefined) {\n // A protected table the runtime cannot see at all: its RLS state is not\n // \"fine\", it is unknown. Enabled/forced FAIL (a table that is not there\n // is certainly not protecting anything); ownership and TRUNCATE are\n // reported unavailable rather than passing on a table nobody could read.\n enabled.push({ subject: entry.table, severity: \"fail\" });\n forced.push({ subject: entry.table, severity: \"fail\" });\n ownership.push({ subject: entry.table, severity: \"unavailable\" });\n truncate.push({ subject: entry.table, severity: \"unavailable\" });\n continue;\n }\n const own = flagFinding({ subject: entry.table, flag: row.ownerAccess, expected: false });\n if (own !== undefined) ownership.push(own);\n const trunc = flagFinding({ subject: entry.table, flag: row.truncate, expected: false });\n if (trunc !== undefined) truncate.push(trunc);\n const on = flagFinding({ subject: entry.table, flag: row.rlsEnabled, expected: true });\n if (on !== undefined) enabled.push(on);\n const force = flagFinding({ subject: entry.table, flag: row.rlsForced, expected: true });\n if (force !== undefined) forced.push(force);\n }\n\n return [\n buildCheck({\n name: \"table-ownership\",\n detail:\n \"the runtime role must not own a protected table, nor be a member of (or able to SET ROLE into) its owner — an owner can ALTER TABLE ... DISABLE ROW LEVEL SECURITY\",\n findings: ownership,\n }),\n buildCheck({\n name: \"table-truncate-privilege\",\n detail: \"no role the runtime can reach may hold TRUNCATE on a protected table — TRUNCATE is not filtered by a policy\",\n findings: truncate,\n }),\n buildCheck({\n name: \"row-level-security-enabled\",\n detail: \"every protected table must exist and have ROW LEVEL SECURITY enabled\",\n findings: enabled,\n }),\n buildCheck({\n name: \"row-level-security-forced\",\n detail: \"every protected table must FORCE ROW LEVEL SECURITY, so its owner is not exempt from its own policy\",\n findings: forced,\n }),\n ];\n}\n\nfunction policyChecks(params: {\n policies: readonly PolicyFacts[];\n protectedTables: readonly ProtectedTable[];\n unprotected: readonly string[];\n}): NativeRlsCheck[] {\n const { policies, protectedTables, unprotected } = params;\n const protectedNames = new Set(protectedTables.map((entry) => entry.table));\n\n const missing: Finding[] = [];\n const shape: Finding[] = [];\n const unexpected: Finding[] = [];\n\n for (const entry of protectedTables) {\n const managed = policies.filter((policy) => policy.table === entry.table && policy.name === NATIVE_RLS.policyName);\n if (managed.length === 0) {\n missing.push({ subject: entry.table, severity: \"fail\" });\n continue;\n }\n for (const policy of managed) {\n shape.push(\n ...present([\n flagFinding({ subject: entry.table, flag: policy.permissive, expected: true }),\n flagFinding({ subject: entry.table, flag: policy.toPublic, expected: true }),\n flagFinding({ subject: entry.table, flag: policy.hasUsing, expected: true }),\n flagFinding({ subject: entry.table, flag: policy.hasWithCheck, expected: true }),\n ]),\n );\n // polcmd '*' is FOR ALL. Anything narrower leaves the other commands\n // unfiltered by this policy.\n if (policy.command !== \"*\") shape.push({ subject: entry.table, severity: \"fail\" });\n }\n }\n\n for (const policy of policies) {\n // PostgreSQL ORs permissive policies, so ANY unknown policy on a managed\n // table can widen access; and our own managed name on a table the schema\n // declares unprotected means the deployment disagrees with the schema.\n if (protectedNames.has(policy.table) && policy.name !== NATIVE_RLS.policyName) {\n unexpected.push({ subject: policy.table, severity: \"fail\" });\n }\n if (!protectedNames.has(policy.table) && policy.name === NATIVE_RLS.policyName && unprotected.includes(policy.table)) {\n unexpected.push({ subject: policy.table, severity: \"fail\" });\n }\n }\n\n return [\n buildCheck({\n name: \"managed-policy-present\",\n detail: `every protected table must carry the managed policy \"${NATIVE_RLS.policyName}\"`,\n findings: missing,\n }),\n buildCheck({\n name: \"managed-policy-shape\",\n detail: \"the managed policy must be PERMISSIVE, FOR ALL, TO PUBLIC, and carry BOTH a USING and a WITH CHECK clause\",\n findings: shape,\n }),\n buildCheck({\n name: \"unexpected-policy\",\n detail: \"managed tables are managed exclusively: no unknown policy on a protected table, and no managed policy on an unprotected one\",\n findings: unexpected,\n }),\n ];\n}\n\nfunction expressionCheck(params: {\n probe: ProbeOutcome;\n protectedTables: readonly ProtectedTable[];\n}): NativeRlsCheck {\n const { probe, protectedTables } = params;\n const detail =\n \"the live policy expression must equal the desired one, both deparsed by this server under an empty search_path\";\n\n if (!probe.available) {\n return buildCheck({\n name: \"managed-policy-expression\",\n detail: `${detail} — the probe could not run (${probe.reason})`,\n findings: protectedTables.map((entry) => ({ subject: entry.table, severity: \"unavailable\" as const })),\n });\n }\n\n const findings: Finding[] = [];\n for (const entry of protectedTables) {\n const live = probe.expressions.find((row) => row.table === entry.table && row.probe === false);\n const desired = probe.expressions.find((row) => row.table === entry.table && row.probe === true);\n if (desired === undefined) {\n // The probe policy was created but its deparse did not come back: the\n // comparison did not happen, so it did not pass.\n findings.push({ subject: entry.table, severity: \"unavailable\" });\n continue;\n }\n if (live === undefined) {\n findings.push({ subject: entry.table, severity: \"fail\" });\n continue;\n }\n // A NULL clause on either side means there is nothing to compare — the\n // managed policy always carries both, so this is never a pass.\n if (live.using === null || live.withCheck === null || desired.using === null || desired.withCheck === null) {\n findings.push({ subject: entry.table, severity: \"fail\" });\n continue;\n }\n if (live.using !== desired.using || live.withCheck !== desired.withCheck) {\n findings.push({ subject: entry.table, severity: \"fail\" });\n }\n }\n\n return buildCheck({ name: \"managed-policy-expression\", detail, findings });\n}\n\nfunction unsafeObjectsOf(params: {\n views: readonly CatalogRow[];\n routines: readonly CatalogRow[];\n triggers: readonly CatalogRow[];\n protectedTables: readonly ProtectedTable[];\n}): { readonly objects: NativeRlsUnsafeObject[]; readonly findings: Finding[] } {\n const objects: NativeRlsUnsafeObject[] = [];\n const findings: Finding[] = [];\n const protectedNames = new Set(params.protectedTables.map((entry) => entry.table));\n\n for (const row of params.views) {\n const name = `${textOf({ row, key: \"schema\" })}.${textOf({ row, key: \"name\" })}`;\n const owner = textOf({ row, key: \"owner\" });\n const materialized = flagOf({ row, key: \"materialized\" });\n const invoker = flagOf({ row, key: \"securityInvoker\" });\n if (materialized === undefined || invoker === undefined) {\n findings.push({ subject: name, severity: \"unavailable\" });\n continue;\n }\n if (materialized) {\n objects.push({\n kind: \"materializedView\",\n name,\n owner,\n detail: \"a materialized view holds rows collected with its owner's authority\",\n });\n continue;\n }\n if (!invoker) {\n objects.push({ kind: \"view\", name, owner, detail: \"the view runs with its owner's authority (no security_invoker)\" });\n }\n }\n\n for (const row of params.routines) {\n const name = `${textOf({ row, key: \"schema\" })}.${textOf({ row, key: \"name\" })}`;\n objects.push({\n kind: \"securityDefinerRoutine\",\n name,\n owner: textOf({ row, key: \"owner\" }),\n detail: \"a SECURITY DEFINER routine the runtime role may execute runs with its owner's authority\",\n });\n }\n\n for (const row of params.triggers) {\n const table = textOf({ row, key: \"table\" });\n const name = `${NATIVE_RLS.tableSchema}.${table}.${textOf({ row, key: \"name\" })}`;\n const definer = flagOf({ row, key: \"securityDefiner\" });\n if (definer === undefined) {\n findings.push({ subject: name, severity: \"unavailable\" });\n continue;\n }\n if (!definer) continue;\n objects.push({\n kind: \"trigger\",\n name,\n owner: textOf({ row, key: \"owner\" }),\n detail: protectedNames.has(table)\n ? \"a SECURITY DEFINER trigger on a protected table runs with its owner's authority\"\n : \"a SECURITY DEFINER trigger runs with its owner's authority\",\n });\n }\n\n for (const object of objects) findings.push({ subject: object.name, severity: \"warn\" });\n return { objects, findings };\n}\n\n// ─── Entry points ─────────────────────────────────────────────────\n\n/**\n * Verify readiness inside a transaction that is ALREADY bound — the role is\n * bound (PGlite) or logged in (server), the context settings are set, and the\n * caller's own statements will run in this same transaction.\n *\n * Binds nothing itself: no role switch, no context setting, and the\n * `search_path` it needs is emptied and restored inside its own savepoint, so\n * the caller's statements are unaffected. Safe to call twice in one\n * transaction — the temp clones are dropped before it returns.\n *\n * @param runtimeRole Compared against `current_user` when supplied. NEVER used\n * to switch role: that binding belongs to the caller.\n */\nexport async function inspectNativeRlsTransaction(params: {\n adapter: DatabaseAdapter;\n schema: SchemaIR;\n runtimeRole?: string;\n /** Client identity scopes desired-expression reuse; omit for a fresh doctor probe.\n * Live facts are never cached. Reuse requires a readable backend pid/start time. */\n cacheKey?: object;\n}): Promise<NativeRlsReport> {\n const { adapter, schema } = params;\n const dialect = requireNativeRls({ adapter, schema });\n const protectedTables = protectedTablesOf({ schema });\n const unprotected = unprotectedTablesOf({ schema });\n\n // ONE statement, eight result sets. Every subquery body is the single-read\n // SQL verbatim, so the same facts are read from the same live catalog under\n // the same role — and, as a bonus, under ONE snapshot instead of eight.\n const catalogRows = await adapter.execute(renderRlsReadinessQuery({ dialect, query: \"catalog\" }));\n const catalog: CatalogRow = catalogRows[0] ?? {};\n const identityRow: CatalogRow = catalogRowsOf({ row: catalog, key: \"identity\" })[0] ?? {};\n const identity: IdentityFacts = {\n currentRole: textOf({ row: identityRow, key: \"currentUser\" }),\n sessionRole: textOf({ row: identityRow, key: \"sessionUser\" }),\n superuser: flagOf({ row: identityRow, key: \"super\" }),\n bypassRls: flagOf({ row: identityRow, key: \"bypassRls\" }),\n createDb: flagOf({ row: identityRow, key: \"createDb\" }),\n createRole: flagOf({ row: identityRow, key: \"createRole\" }),\n serverVersionNum: intOf({ row: identityRow, key: \"serverVersionNum\" }),\n };\n\n const elevatedRows = catalogRowsOf({ row: catalog, key: \"elevatedRoles\" });\n const controlRows = catalogRowsOf({ row: catalog, key: \"schemaControl\" });\n const tableRows = catalogRowsOf({ row: catalog, key: \"tables\" });\n const policyRows = catalogRowsOf({ row: catalog, key: \"policies\" });\n const viewRows = catalogRowsOf({ row: catalog, key: \"views\" });\n const routineRows = catalogRowsOf({ row: catalog, key: \"routines\" });\n const triggerRows = catalogRowsOf({ row: catalog, key: \"triggers\" });\n\n const controlRow = controlRows[0];\n const control: SchemaControlFacts | undefined =\n controlRow === undefined\n ? undefined\n : {\n schema: textOf({ row: controlRow, key: \"schema\" }),\n database: textOf({ row: controlRow, key: \"database\" }),\n ownerAccess: flagOf({ row: controlRow, key: \"ownerAccess\" }),\n create: flagOf({ row: controlRow, key: \"create\" }),\n databaseOwnerAccess: flagOf({ row: controlRow, key: \"databaseOwnerAccess\" }),\n };\n\n const tables: TableFacts[] = tableRows.map((row) => ({\n table: textOf({ row, key: \"table\" }),\n rlsEnabled: flagOf({ row, key: \"rlsEnabled\" }),\n rlsForced: flagOf({ row, key: \"rlsForced\" }),\n owner: textOf({ row, key: \"owner\" }),\n ownerAccess: flagOf({ row, key: \"ownerAccess\" }),\n truncate: flagOf({ row, key: \"truncate\" }),\n }));\n\n const policies: PolicyFacts[] = policyRows.map((row) => ({\n table: textOf({ row, key: \"table\" }),\n name: textOf({ row, key: \"name\" }),\n permissive: flagOf({ row, key: \"permissive\" }),\n command: textOf({ row, key: \"command\" }),\n toPublic: flagOf({ row, key: \"toPublic\" }),\n hasUsing: flagOf({ row, key: \"hasUsing\" }),\n hasWithCheck: flagOf({ row, key: \"hasWithCheck\" }),\n }));\n\n const backendPid = textOf({ row: identityRow, key: \"backendPid\" });\n // PGlite is single-user PostgreSQL: pg_stat_activity has no backend row.\n // Its engine startup time changes when the adapter creates a new instance.\n const backendStart = textOf({ row: identityRow, key: adapter.provider === \"pglite\" ? \"instanceStart\" : \"backendStart\" });\n const generation = JSON.stringify([backendPid, backendStart, identity.currentRole, identity.sessionRole, identity.serverVersionNum]);\n let connections: Map<string, readonly ExpressionFacts[]> | undefined;\n if (params.cacheKey !== undefined && backendPid !== \"\" && backendStart !== \"\") {\n let cache = expressionCaches.get(params.cacheKey);\n if (cache === undefined || cache.schema !== schema) {\n cache = { schema, connections: new Map() };\n expressionCaches.set(params.cacheKey, cache);\n }\n connections = cache.connections;\n }\n const desired = connections?.get(generation);\n const tempPrivilege = flagOf({ row: identityRow, key: \"tempPrivilege\" });\n const probe: ProbeOutcome = desired !== undefined && tempPrivilege !== true\n ? { available: false, reason: \"TEMP privilege is absent or unavailable\" }\n : await probeExpressions({ adapter, dialect, schema, tables: protectedTables, ...(desired === undefined ? {} : { desired }) });\n const unsafe = unsafeObjectsOf({\n views: viewRows,\n routines: routineRows,\n triggers: triggerRows,\n protectedTables,\n });\n\n const checks: NativeRlsCheck[] = [\n ...identityChecks({ identity, provider: adapter.provider, runtimeRole: params.runtimeRole }),\n buildCheck({\n name: \"elevated-role-membership\",\n detail:\n \"the runtime role must not be a member of any role carrying SUPERUSER, BYPASSRLS, CREATEROLE or CREATEDB, nor of a predefined pg_* role\",\n findings: elevatedRows.map((row) => ({ subject: textOf({ row, key: \"role\" }), severity: \"fail\" as const })),\n }),\n schemaControlCheck({ control }),\n ...tableChecks({ tables, protectedTables }),\n ...policyChecks({ policies, protectedTables, unprotected }),\n expressionCheck({ probe, protectedTables }),\n buildCheck({\n name: \"unsafe-objects\",\n detail:\n \"views, routines and triggers that execute with another owner's authority are reported, not analysed — RLS does not constrain them\",\n findings: unsafe.findings,\n }),\n ];\n\n const problems = checks.filter((check) => check.status === \"fail\" || check.status === \"unavailable\");\n if (connections !== undefined) {\n if (problems.length === 0 && probe.available) {\n if (!connections.has(generation) && connections.size >= EXPRESSION_CACHE_LIMITS.connections) {\n connections.delete(connections.keys().next().value!);\n }\n connections.set(generation, probe.expressions.filter((row) => row.probe === true));\n } else connections.delete(generation);\n }\n return {\n ready: problems.length === 0,\n currentRole: identity.currentRole,\n sessionRole: identity.sessionRole,\n provider: adapter.provider,\n serverVersionNum: identity.serverVersionNum,\n tables: protectedTables.map((entry) => entry.table),\n checks,\n problems,\n unsafeObjects: unsafe.objects,\n };\n}\n\n/**\n * Verify readiness on an adapter that is not already inside a bound\n * transaction — `vibeorm doctor`, or a one-off connection check. Opens one\n * transaction and, on PGlite only, binds the configured runtime role as its\n * first statement. A server connection is never switched: its login role IS\n * the runtime role, and a supplied `runtimeRole` is only compared with it.\n */\nexport async function inspectNativeRls(params: {\n adapter: DatabaseAdapter;\n schema: SchemaIR;\n runtimeRole?: string;\n}): Promise<NativeRlsReport> {\n const { adapter, schema } = params;\n requireNativeRls({ adapter, schema });\n\n const embeddedRole: string | undefined =\n adapter.provider === \"pglite\" ? requireEmbeddedRole({ role: params.runtimeRole }) : undefined;\n\n return adapter.transaction(async (tx) => {\n if (embeddedRole !== undefined) {\n await tx.executeUnsafe(renderRlsRole({ dialect: getSqlDialect({ dialect: adapter.dialect }), role: embeddedRole }));\n }\n return inspectNativeRlsTransaction({\n adapter: tx,\n schema,\n ...(params.runtimeRole === undefined ? {} : { runtimeRole: params.runtimeRole }),\n });\n });\n}\n\n/** PGlite's default session is privileged, so a role to bind is mandatory there. */\nfunction requireEmbeddedRole(params: { role: string | undefined }): string {\n const { role } = params;\n if (typeof role !== \"string\" || role.length === 0 || role.includes(\"\\0\")) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message:\n \"PGlite native row-level security requires a pre-existing restricted runtime role (nativeRls.runtimeRole) — its default embedded session is privileged and bypasses every policy\",\n meta: { provider: \"pglite\" },\n });\n }\n return role;\n}\n\n/**\n * Refuse to proceed on a database that is not ready. `meta.checks` names every\n * check that failed or could not be run — callers branch on those stable\n * names, never on this message.\n */\nexport function assertNativeRlsReady(params: { report: NativeRlsReport }): void {\n const { report } = params;\n if (report.ready) return;\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `Native row-level security is not ready on this database: ${report.problems\n .map((problem) => `${problem.name} (${problem.status})`)\n .join(\", \")}`,\n meta: {\n checks: report.problems.map((problem) => problem.name),\n currentRole: report.currentRole,\n provider: report.provider,\n },\n });\n}\n\n/** One line per check plus one per unsafe object — `vibeorm doctor`'s output. */\nexport function formatNativeRlsReport(params: { report: NativeRlsReport }): string[] {\n const { report } = params;\n const lines: string[] = [\n `Native RLS: ${report.ready ? \"ready\" : \"NOT READY\"}${report.unsafeObjects.length === 0 ? \"\" : `, ${report.unsafeObjects.length} unsafe object(s) reported — RLS does not constrain them`} as ${report.currentRole} (session ${report.sessionRole}, ${report.provider}), ${report.tables.length} protected table(s)`,\n ];\n for (const check of report.checks) {\n const subjects = check.subjects.length === 0 ? \"\" : ` [${check.subjects.join(\", \")}]`;\n lines.push(` ${check.name}: ${check.status}${subjects} — ${check.detail}`);\n }\n for (const object of report.unsafeObjects) {\n lines.push(` unsafe ${object.kind}: ${object.name} owned by ${object.owner} — ${object.detail}`);\n }\n return lines;\n}\n",
|
|
38
38
|
"import { createHash } from \"node:crypto\";\nimport { VibeError, assertValidSchemaIR, providerToDialect } from \"@vibeorm/schema\";\nimport type { DatabaseModuleArtifact, DatabaseModuleManifest, DatabaseModuleOptions, SchemaIR } from \"@vibeorm/schema\";\nimport type { DatabaseAdapter } from \"./adapter.ts\";\nimport { createClient } from \"./client.ts\";\nimport type { DynamicClient, ReadOnlyClient } from \"./client.ts\";\nimport { bindModuleContext } from \"./module-context.ts\";\n\n/** The untyped runtime behind the package's directly generated declarations. */\nexport type DatabaseModule = DatabaseModuleArtifact & {\n readonly bind: {\n (params: { db: DynamicClient }): DynamicClient;\n (params: { db: ReadOnlyClient }): ReadOnlyClient;\n (params: { db: object }): DynamicClient | ReadOnlyClient;\n };\n readonly create: (params: { adapter: DatabaseAdapter }) => DynamicClient;\n};\n\nfunction canonicalValue(params: { value: unknown }): unknown {\n const { value } = params;\n if (Array.isArray(value)) return value.map((entry) => canonicalValue({ value: entry }));\n if (value === null || typeof value !== \"object\") return value;\n return Object.fromEntries(Object.entries(value).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0).map(([key, entry]) => [key, canonicalValue({ value: entry })]));\n}\n\nfunction freezeData(params: { value: unknown }): void {\n if (params.value === null || typeof params.value !== \"object\" || Object.isFrozen(params.value)) return;\n for (const value of Object.values(params.value)) freezeData({ value });\n Object.freeze(params.value);\n}\n\n/** Snapshot and validate a package artifact. Construction performs no database work. */\nexport function defineDatabaseModule(params: DatabaseModuleOptions & {\n schema: SchemaIR;\n /** Generated artifacts pin these fields; runtime refuses incompatible or modified output. */\n manifest?: DatabaseModuleManifest;\n}): DatabaseModule {\n for (const key of [\"id\", \"contract\", \"revision\"] as const) {\n if (typeof params[key] !== \"string\" || params[key].trim().length === 0 || params[key].includes(\"\\0\")) throw new VibeError({ code: \"VIBE_CONFIG\", message: `Database module ${key} must be a non-empty identifier`, meta: { reason: \"module_manifest\", key } });\n }\n assertValidSchemaIR({ schema: params.schema });\n if (params.schema.rls !== undefined || params.schema.extensions.length > 0 || params.schema.models.some((model) => model.policy !== undefined)) throw new VibeError({\n code: \"VIBE_UNSUPPORTED_CAPABILITY\", message: `Module ${params.id} cannot declare extensions, policy or native RLS in this module protocol`, meta: { reason: \"module_schema_feature\", moduleId: params.id },\n });\n const serialized = JSON.stringify(canonicalValue({ value: params.schema }));\n const schema = JSON.parse(serialized) as SchemaIR;\n freezeData({ value: schema });\n const manifest: DatabaseModuleManifest = Object.freeze({\n id: params.id, contract: params.contract, revision: params.revision, protocol: 1,\n dialect: providerToDialect({ provider: schema.datasource.provider }),\n schemaChecksum: createHash(\"sha256\").update(serialized).digest(\"hex\"),\n });\n if (params.manifest !== undefined && Object.keys(manifest).some((key) => params.manifest![key as keyof DatabaseModuleManifest] !== manifest[key as keyof DatabaseModuleManifest])) throw new VibeError({\n code: \"VIBE_STALE_CLIENT\", message: `Module ${params.id} has incompatible or modified generated metadata; regenerate with a compatible runtime`, meta: { reason: \"module_artifact\", moduleId: params.id, revision: params.revision, protocol: params.manifest.protocol },\n });\n const artifact = Object.freeze({ schema, manifest });\n const bind = (({ db }: { db: object }): DynamicClient | ReadOnlyClient => bindModuleContext({ db, artifact })) as DatabaseModule[\"bind\"];\n return Object.freeze({ ...artifact, bind, create: ({ adapter }: { adapter: DatabaseAdapter }): DynamicClient => bind({ db: createClient({ schema, adapter }) }) });\n}\n",
|
|
39
|
-
"import { registerModuleBinder } from \"./module-context.ts\";\nimport type { DatabaseModuleManifest } from \"@vibeorm/schema\";\nimport { compileSql } from \"@vibeorm/sql\";\nimport type { SqlFragment, ResultDecoder } from \"@vibeorm/sql\";\nimport { containsSqlFragment, restrictedSqlArgs, registerRestrictedSqlSchema } from \"./sql-access.ts\";\nimport { readOnlyRefusal } from \"./read-only.ts\";\nimport { registerPolicyOperations } from \"./policy-operation.ts\";\n/**\n * The dynamic client: model delegates over a `DatabaseAdapter`, built from the\n * Schema IR at runtime.\n *\n * This is the engine the generated client wraps in P2 proper. It is deliberately\n * untyped-per-model — the generator emits a `.d.ts` that declares each delegate\n * with precise argument and result types, and casts to it. Nothing about the\n * shape of a query lives here: `query-builder.ts` builds statements,\n * `@vibeorm/sql` renders them, `codecs.ts` moves values across the wire,\n * `relation-loader.ts` attaches included relations, `nested-writes.ts`\n * orchestrates relation verbs inside create/update data.\n *\n * Execution split:\n * - row-returning statements use `adapter.execute` (the cached hot path),\n * - count-returning mutations (createMany/updateMany/deleteMany) use\n * `adapter.executeUnsafe`, the only place the frozen adapter contract\n * surfaces `affectedRows`.\n */\n\nimport { RlsContextError, VibeError, assertValidSchemaIR, unsupportedCapability } from \"@vibeorm/schema\";\nimport type { Dialect, SchemaIR } from \"@vibeorm/schema\";\nimport { ADVISORY_LOCK_RESULT_COLUMN, ParamCollector, getSqlDialect, renderRlsContext, renderRlsPolicy, renderRlsRole, renderStatement } from \"@vibeorm/sql\";\nimport type { RowLock, SelectStatement, SqlDialect, SqlStatement } from \"@vibeorm/sql\";\nimport { compileAdvisoryLock } from \"./advisory-lock.ts\";\nimport type { AdvisoryLockMethod, AdvisoryLockOptions } from \"./advisory-lock.ts\";\nimport type { DatabaseAdapter, QueryResult, TransactionOptions } from \"./adapter.ts\";\nimport { decodeAggregateValue, decodeValue, materializeRows } from \"./codecs.ts\";\nimport { StatementRenderCache, renderStatementCached } from \"./render-cache.ts\";\nimport { buildRuntimeMeta, getModelMeta } from \"./model-meta.ts\";\nimport type { FieldMeta, ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\nimport { COUNT_ALIAS, buildQuery, resolveResultShape, upsertUsesNativeStatement } from \"./query-builder.ts\";\nimport type { AggregateSpec, QueryMethod, QueryPlan, RelationStrategy, ResortKey } from \"./query-builder.ts\";\nimport { attachLateralRelations, attachRelations, resolveRelationConcurrency } from \"./relation-loader.ts\";\nimport type { RelationExecutor } from \"./relation-loader.ts\";\nimport { createWithNested, hasNestedWrites, updateWithNested } from \"./nested-writes.ts\";\nimport type { StatementRunner, WriteContext } from \"./nested-writes.ts\";\nimport type { RelationSelection } from \"./relation-plan.ts\";\nimport { applyComputedFields, assertComputedManifest } from \"./computed.ts\";\nimport type { ClientComputedOptions } from \"./computed.ts\";\nimport {\n assertExtensionManifest,\n buildConnectHooks,\n buildExtensionOperatorMap,\n} from \"./extensions.ts\";\nimport type {\n ClientExtensionMount,\n ClientExtensionsOptions,\n ConnectHook,\n ExtensionMountContext,\n} from \"./extensions.ts\";\nimport { compileWhere } from \"./query-builder.ts\";\nimport { attachDefineView } from \"./views.ts\";\nimport type { DefineViewFn } from \"./views.ts\";\nimport { checkStrictArguments } from \"./strict-args.ts\";\nimport { applyWriteValidators } from \"./validators.ts\";\nimport type { WriteValidators } from \"./validators.ts\";\nimport { attachPolicy } from \"./policy.ts\";\nimport type { PolicyContextValue } from \"./policy.ts\";\nimport { attachScoped } from \"./scoped.ts\";\nimport type { ScopedClientConfig } from \"./scoped.ts\";\nimport { attachReadOnly } from \"./read-only.ts\";\nimport type { LazyOperationBridge } from \"./read-only.ts\";\nimport { bindRlsContext } from \"./rls-context.ts\";\nimport type { BoundRlsContext } from \"./rls-context.ts\";\nimport { assertNativeRlsReady, inspectNativeRlsTransaction } from \"./rls-readiness.ts\";\nimport { affectedRowsAreRowCounts } from \"./bulk-upsert.ts\";\nimport type { UpsertManyResult } from \"./bulk-upsert.ts\";\nimport { createTelemetryRecorder } from \"./telemetry/recorder.ts\";\nimport type { TelemetryOperationScope, TelemetryRecorder } from \"./telemetry/recorder.ts\";\nimport { instrumentStatement } from \"./telemetry/statement.ts\";\nimport type { StatementReport } from \"./telemetry/statement.ts\";\nimport {\n STATEMENT_DIAGNOSTICS_DEFAULTS,\n createStatementDiagnostics,\n resolveStatementDiagnostics,\n} from \"./diagnostics/statement-diagnostics.ts\";\nimport type { StatementDiagnosticsHook, StatementDiagnosticsOptions } from \"./diagnostics/statement-diagnostics.ts\";\nimport type { TelemetryOperationKind, TelemetryOptions, TelemetryStatementKind } from \"./telemetry/types.ts\";\n\n// ─── Public types ─────────────────────────────────────────────────\n\n/** One executed statement, reported to `ClientOptions.onQuery`. */\nexport type QueryEvent = {\n /** Model name, or `null` for raw queries. */\n readonly model: string | null;\n /** ORM method, or `\"$queryRaw\"` / `\"$executeRaw\"`. */\n readonly method: string;\n readonly text: string;\n readonly values: readonly unknown[];\n readonly durationMs: number;\n};\n\nexport type ClientOptions = {\n /** Trusted infrastructure configuration. PGlite requires a pre-existing restricted role;\n * embedded role binding is not a security boundary against the host process.\n * Desired policy deparse is probed once per backend generation (bounded cache);\n * live expressions/privileges are still checked every transaction. Privileged\n * dependency changes retaining identical deparse need a fresh client/doctor check. */\n readonly nativeRls?: { readonly runtimeRole?: string };\n /** Called after every statement — logging, tracing, test assertions. */\n readonly onQuery?: (event: QueryEvent) => void;\n /**\n * Default relation-loading strategy: `\"query\"` (batched WHERE-IN, portable,\n * the default) or `\"join\"` (LATERAL + JSON aggregation, postgres/pglite\n * only). A per-query `relationStrategy` argument overrides it.\n */\n readonly relationStrategy?: RelationStrategy;\n /**\n * Relation loading for the `\"query\"` strategy. `concurrency` (default 1) is\n * how many of ONE query's relation statements may be in flight at once:\n * sibling relations of a level, `_count` entries and a relation's key chunks.\n *\n * It is a LATENCY option, worth setting against a remote database with wide\n * include trees — 4 siblings at 5 ms of network each cost 20 ms serially and\n * 5 ms concurrently. It is ignored inside `$transaction` (those statements\n * share one connection and must stay ordered), and it buys nothing on an\n * embedded adapter or when the JavaScript thread is already the ceiling.\n * Above 1 the connection pool must be able to lend that many connections.\n */\n readonly relationLoading?: { readonly concurrency?: number };\n /**\n * Append the primary key to ORDER BY when a find has no explicit orderBy\n * (default false) — deterministic row order at the cost of a sort. v1 parity.\n */\n readonly defaultOrderByPk?: boolean;\n /**\n * Append the primary key as a tie-breaker to `distinct` ordering (default\n * TRUE) — without it, WHICH row represents each distinct key is unspecified.\n * v1 parity.\n */\n readonly distinctOrderByPk?: boolean;\n /**\n * Opt-in write-boundary validators (Standard Schema, per model × field):\n * `{ User: { settings: zodSchema } }`. Run on every write path (nested\n * creates included) before encoding; failure throws VIBE_VALIDATION with\n * the validator's issues in `meta`. Reads are never taxed.\n */\n readonly validate?: WriteValidators;\n /**\n * Opt-in operation tracing. One event per public ORM call, with the\n * statements it ran; parameter values are redacted and raw SQL text is not\n * captured unless separately asked for. The exporter is the host's — a throw\n * from it can never change a database outcome, and `$disconnect()` flushes it\n * but never shuts it down.\n */\n readonly telemetry?: TelemetryOptions;\n /**\n * Statement diagnostics: a slow-statement log with an automatic `EXPLAIN`.\n * Every statement slower than `slowerThanMs` (default 0 = all) is handed to\n * `sink` (default: one `console.warn` line) with its duration; with\n * `explain: \"estimate\"` or `\"analyze\"` a plan summary is attached on\n * PostgreSQL/PGlite for read statements that ran outside a transaction —\n * `\"analyze\"` EXECUTES the statement again, inside a read-only transaction\n * on its own pooled connection, after the caller's promise has settled.\n * `VIBEORM_DIAGNOSTICS=<explain>[:<slowerThanMs>]` (e.g. `analyze:5`)\n * switches it on for a run; the explicit option wins field by field. Local\n * runs only — never production.\n */\n readonly diagnostics?: StatementDiagnosticsOptions;\n /**\n * Strict argument handling (EPIC 2), **on by default**: an explicit\n * `undefined` anywhere in ORM argument syntax is refused BEFORE a statement\n * is built, instead of silently dropping the property (which widens a filter\n * or loses a write). `SKIP` (`@vibeorm/runtime`) omits a property\n * deliberately.\n *\n * Set `false` to opt OUT and restore legacy/Prisma semantics, where an\n * explicit `undefined` member simply vanishes. Only an explicit `false` does\n * that: an options object that does not mention this stays strict.\n */\n readonly strictArguments?: boolean;\n};\n\n/** Rows are plain objects keyed by field name; the generated client narrows them. */\nexport type ClientRow = Record<string, unknown>;\n\n/** Result of the count-returning batch methods. */\nexport type BatchResult = { readonly count: number };\n\n/**\n * A model's methods. Arguments and results are intentionally broad here — the\n * generated `.d.ts` replaces this surface with precise per-model types, and\n * keeping the runtime free of inference is what holds the type-cost budget\n * (constitution rule 2).\n */\nexport type ModelDelegate = {\n readonly findMany: (args?: ClientRow) => Promise<ClientRow[]>;\n readonly findFirst: (args?: ClientRow) => Promise<ClientRow | null>;\n readonly findFirstOrThrow: (args?: ClientRow) => Promise<ClientRow>;\n readonly findUnique: (args: ClientRow) => Promise<ClientRow | null>;\n readonly findUniqueOrThrow: (args: ClientRow) => Promise<ClientRow>;\n readonly create: (args: ClientRow) => Promise<ClientRow | null>;\n readonly createMany: (args: ClientRow) => Promise<BatchResult>;\n readonly createManyAndReturn: (args: ClientRow) => Promise<ClientRow[]>;\n readonly update: (args: ClientRow) => Promise<ClientRow>;\n readonly updateMany: (args: ClientRow) => Promise<BatchResult>;\n /**\n * Bulk update that returns the rows it changed (dialects with RETURNING).\n *\n * OPTIONAL on purpose: the base client always provides it, but the rewriting\n * handles (`$scoped`, `$withPolicy`) build explicit delegate literals and do\n * not implement it yet, and a required member would make the type claim a\n * method those handles do not have. See notes-epic2.md `## Hand-off`.\n */\n readonly updateManyAndReturn: (args: ClientRow) => Promise<ClientRow[]>;\n readonly upsertMany: (args: ClientRow) => Promise<UpsertManyResult>;\n readonly upsert: (args: ClientRow) => Promise<ClientRow>;\n readonly delete: (args: ClientRow) => Promise<ClientRow>;\n readonly deleteMany: (args?: ClientRow) => Promise<BatchResult>;\n /** Plain form returns a number; `{ select: { _all, field } }` returns per-key counts. */\n readonly count: (args?: ClientRow) => Promise<number | Record<string, number>>;\n readonly aggregate: (args: ClientRow) => Promise<ClientRow>;\n readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;\n};\n\n/**\n * The read half of a model's methods — the shape a `$readOnly` handle exposes,\n * and the shape `$defineView` needs (a view reads and never writes).\n *\n * Written out rather than derived from `ModelDelegate` with `Omit`: the\n * generated `.d.ts` mirrors this member list per model, and a pre-resolved\n * object type costs the consumer's tsserver nothing (constitution rule 2).\n */\nexport type ReadOnlyModelDelegate = {\n readonly findMany: (args?: ClientRow) => Promise<ClientRow[]>;\n readonly findFirst: (args?: ClientRow) => Promise<ClientRow | null>;\n readonly findFirstOrThrow: (args?: ClientRow) => Promise<ClientRow>;\n readonly findUnique: (args: ClientRow) => Promise<ClientRow | null>;\n readonly findUniqueOrThrow: (args: ClientRow) => Promise<ClientRow>;\n readonly count: (args?: ClientRow) => Promise<number | Record<string, number>>;\n readonly aggregate: (args: ClientRow) => Promise<ClientRow>;\n readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;\n};\n\n/**\n * A read-only client handle (`$readOnly`). CLOSED under every handle it can\n * produce: transactions, views, scoped and policy handles built from it are\n * read-only too, so no route recovers a writable client.\n *\n * Raw SQL, connection lifecycle and advisory locks are absent by design, and\n * so is anything the access table in `read-only.ts` does not classify.\n */\nexport type ReadOnlyClient = {\n readonly $models: Readonly<Record<string, ReadOnlyModelDelegate>>;\n readonly $on: (event: \"query\", listener: (event: QueryEvent) => void) => () => void;\n /** One transaction of reads. The callback's handle is read-only; the array form takes read operations only. */\n readonly $transaction: {\n <T>(fn: (tx: ReadOnlyClient) => Promise<T>, options?: TransactionOptions): Promise<T>;\n <T extends readonly unknown[]>(\n operations: readonly [...T],\n options?: TransactionOptions,\n ): Promise<{ -readonly [K in keyof T]: Awaited<T[K]> }>;\n };\n readonly $defineView?: DefineViewFn;\n readonly $scoped?: (config: ScopedClientConfig) => ReadOnlyClient;\n readonly $withPolicy?: (context: Readonly<Record<string, PolicyContextValue>>) => ReadOnlyClient;\n readonly $bypassPolicy?: () => ReadOnlyClient;\n /** Idempotent: restricting an already-restricted handle returns the same handle. */\n readonly $readOnly: () => ReadOnlyClient;\n};\n\n/**\n * The client. Delegates are also attached as own properties under their\n * camelCase names (`client.user.findMany()`); the type surfaces them through\n * `$models` because a plain index signature would erase the `$`-methods.\n * Model names can never collide with those: every reserved client name is\n * `$`-prefixed (see `RESERVED_CLIENT_NAMES` in @vibeorm/schema).\n */\nexport type DynamicClient = {\n /** Copy and freeze the required native-RLS identity without acquiring a connection. */\n readonly $withContext?: (context: Readonly<Record<string, unknown>>) => DynamicClient;\n /** Delegates keyed by BOTH camelCase client name and model name. */\n readonly $models: Readonly<Record<string, ModelDelegate>>;\n /**\n * Subscribe to client events (`\"query\"` fires after every statement, with\n * the same payload as `ClientOptions.onQuery` — both fire). Returns an\n * unsubscribe function. Transaction clients share the parent's listeners.\n */\n readonly $on: (event: \"query\", listener: (event: QueryEvent) => void) => () => void;\n /**\n * Run work in ONE transaction. Callback form: `fn` receives a transaction\n * client; everything it runs rides the same BEGIN/COMMIT and a throw rolls\n * back. Array form (Prisma parity): UN-AWAITED delegate calls — delegate\n * methods return LAZY query promises that only dispatch on await — run\n * SEQUENTIALLY inside one transaction, results returned positionally.\n */\n readonly $transaction: {\n <T>(fn: (tx: DynamicClient) => Promise<T>, options?: TransactionOptions): Promise<T>;\n <T extends readonly unknown[]>(\n operations: readonly [...T],\n options?: TransactionOptions,\n ): Promise<{ -readonly [K in keyof T]: Awaited<T[K]> }>;\n };\n /** Tagged template — interpolations become bound parameters, never text. */\n readonly $querySql: <T>(params: { query: SqlFragment; decoder: ResultDecoder<T> }) => Promise<T[]>;\n readonly $executeSql: (params: { query: SqlFragment }) => Promise<number>;\n readonly $queryRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<ClientRow[]>;\n /** Tagged template returning the affected-row count. */\n readonly $executeRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<number>;\n readonly $queryRawUnsafe: (text: string, ...values: unknown[]) => Promise<ClientRow[]>;\n readonly $executeRawUnsafe: (text: string, ...values: unknown[]) => Promise<number>;\n /**\n * Take a transaction-scoped advisory lock on an application-defined key,\n * BLOCKING until it is held. Released by commit and by rollback — there is no\n * unlock call, so nothing can leak onto a pooled connection.\n *\n * Only inside `$transaction` (outside one the lock would be released before\n * the next statement), and only on PostgreSQL/PGlite; every other dialect\n * refuses with `VIBE_UNSUPPORTED_CAPABILITY`.\n */\n readonly $advisoryLock: (options: AdvisoryLockOptions) => Promise<void>;\n /**\n * Take the same lock WITHOUT waiting: `true` when it was acquired, `false`\n * when someone else holds it. The transaction stays usable either way — a\n * refusal here is a verdict, not an error.\n */\n readonly $tryAdvisoryLock: (options: AdvisoryLockOptions) => Promise<boolean>;\n readonly $connect: () => Promise<void>;\n readonly $disconnect: () => Promise<void>;\n /**\n * Field-masking views (v1 `defineView` parity, board #11) — a read-only\n * scoped client restricted to the definition's models and fields. Attached\n * by `attachDefineView` after construction (hence optional in the type);\n * it is always present on a built client, transaction clients included.\n */\n readonly $defineView?: DefineViewFn;\n /**\n * Row scoping (@@policy): bind a per-request context — the returned client\n * AND-s the policy predicate into every query on policied models and forces\n * it into creates. Attached only when the schema declares @@policy.\n */\n readonly $withPolicy?: (context: Readonly<Record<string, PolicyContextValue>>) => DynamicClient;\n /** Deliberate, greppable full-access escape from policy scoping. */\n readonly $bypassPolicy?: () => DynamicClient;\n /**\n * Tenant scoping (framework handoff): base client + total per-model tenancy\n * map + scope value → a NEW handle whose every call is confined to that\n * tenant (raw SQL refused). Always attached; refuses on @@policy schemas.\n */\n readonly $scoped?: (config: ScopedClientConfig) => DynamicClient;\n /**\n * A read-only handle over this one, built from the runtime's ALLOWLIST of\n * read methods (`read-only.ts`). Attached after construction (hence optional\n * in the type); absent only on the unbound native-RLS root, which cannot\n * query until `$withContext` binds an identity.\n */\n readonly $readOnly?: () => ReadOnlyClient;\n};\n\n// ─── Errors ───────────────────────────────────────────────────────\n\nfunction notFound(params: { model: string; method: QueryMethod | string }): VibeError {\n const { model, method } = params;\n return new VibeError({\n code: \"VIBE_NOT_FOUND\",\n message: `no ${model} record matched the where clause of ${method}()`,\n meta: { model, method },\n });\n}\n\n/**\n * `$connect` / `$disconnect` on a transaction client. The connection belongs to\n * the transaction for its whole lifetime: reconnecting mid-transaction is\n * meaningless and disconnecting would tear down an open transaction's own\n * connection. The generated transaction type omits both; this refusal is the\n * authority, because a type cannot stop a JavaScript caller.\n */\nfunction transactionLifecycleRefusal(params: { method: string }): VibeError {\n const { method } = params;\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${method}() is not available on a transaction client — the connection is owned by the open transaction; call it on the client that started the transaction`,\n meta: { method, inTransaction: true },\n });\n}\n\nfunction viewIsReadOnly(params: { model: string; method: string }): VibeError {\n const { model, method } = params;\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${model} is a view — ${method}() is not available on views (they are read-only); write to the underlying table instead`,\n meta: { model, method },\n });\n}\n\n// ─── Parameter binding ────────────────────────────────────────\n\n/**\n * ORM-path binding: after the codec table has encoded every parameter, the only\n * bare JS arrays left in `rendered.values` are scalar-list params — `inArray`\n * filters and list-column writes (`Json.encode` stringifies, Bytes are\n * `Uint8Array`). Their wire form is the ADAPTER's business (`= ANY($n)` needs a\n * PG array literal on bun:sql, a tagged passthrough on pg/pglite), so each one\n * is handed to `adapter.formatArrayParam` here. Reviewed as fix F1 — the raw\n * paths (`$queryRaw*`) deliberately do NOT bind: drivers take raw arrays there\n * (LEARNINGS: ORM-path vs raw-path array params differ).\n */\nfunction bindValues(params: { adapter: DatabaseAdapter; values: unknown[] }): unknown[] {\n const { adapter, values } = params;\n return values.map((value) => (Array.isArray(value) ? adapter.formatArrayParam(value) : value));\n}\n\n// ─── Row shaping ──────────────────────────────────────────────────\n\n/**\n * Narrow a row to the fields the caller selected (scalars, relation names,\n * `_count`). Mutations RETURNING the primary key and relation loading fetching\n * stitch keys both hand back more than was asked for.\n */\nfunction project(params: { row: ClientRow; fields: readonly string[] | null }): ClientRow {\n const { row, fields } = params;\n if (fields === null) return row;\n const out: ClientRow = {};\n for (const field of fields) out[field] = row[field];\n return out;\n}\n\n/**\n * The N1 re-sort comparator (`QueryPlan.resortBy`): the user's orderBy over\n * DECODED rows, with `nulls` and Decimal ranking resolved at build time to\n * mirror what the SQL order would have produced (B4: Decimal ranks\n * numerically — the SQL side ordered a number).\n */\nfunction resortComparator(keys: readonly ResortKey[]): (a: ClientRow, b: ClientRow) => number {\n const rank = (value: unknown): number | bigint | string => {\n if (typeof value === \"boolean\") return value ? 1 : 0;\n if (value instanceof Date) return value.getTime();\n return value as number | bigint | string;\n };\n return (a, b) => {\n for (const key of keys) {\n const left = a[key.field];\n const right = b[key.field];\n const leftNull = left === null || left === undefined;\n const rightNull = right === null || right === undefined;\n if (leftNull || rightNull) {\n if (leftNull && rightNull) continue;\n return leftNull === (key.nulls === \"first\") ? -1 : 1;\n }\n const rankLeft = key.decimal ? Number(left) : rank(left);\n const rankRight = key.decimal ? Number(right) : rank(right);\n if (rankLeft < rankRight) return key.direction === \"asc\" ? -1 : 1;\n if (rankLeft > rankRight) return key.direction === \"asc\" ? 1 : -1;\n }\n return 0;\n };\n}\n\n/**\n * Client-side leg of the find pipeline, in plan order: the negative-take\n * re-reverse, then the N1 distinct re-sort (the user's orderBy restored over\n * the deduplicated rows — every dialect: DISTINCT ON and the ROW_NUMBER\n * emulation both present rows grouped by the distinct key). The two never\n * combine — distinct refuses a negative take at build time.\n */\nfunction shapeRows(params: { plan: QueryPlan; rows: ClientRow[] }): ClientRow[] {\n const { plan, rows } = params;\n let out = rows;\n if (plan.reverseRows) out = [...out].reverse();\n if (plan.resortBy !== null && plan.resortBy.length > 0) {\n out = [...out].sort(resortComparator(plan.resortBy));\n }\n return out;\n}\n\n// ─── Aggregate result assembly ──────────────────────────────\n\nfunction fieldOf(params: { model: ModelMeta; name: string | null }): FieldMeta | null {\n const { model, name } = params;\n if (name === null) return null;\n return model.fieldByName.get(name) ?? null;\n}\n\n/** `{ _count: 3 | {…}, _avg: {…}, … }` from one aggregate row, by construction. */\nfunction assembleAggregates(params: {\n engine: Engine;\n model: ModelMeta;\n spec: AggregateSpec;\n row: ClientRow;\n into: ClientRow;\n}): ClientRow {\n const { engine, model, spec, row, into } = params;\n for (const selection of spec.selections) {\n const value = decodeAggregateValue({\n dialect: engine.dialect.name,\n key: selection.key,\n field: fieldOf({ model, name: selection.field }),\n value: row[selection.alias],\n });\n if (selection.key === \"_count\" && spec.countShorthand) {\n into._count = value;\n continue;\n }\n const bucket = (into[selection.key] as Record<string, unknown> | undefined) ?? {};\n bucket[selection.field ?? \"_all\"] = value;\n into[selection.key] = bucket;\n }\n return into;\n}\n\n// ─── Engine ───────────────────────────────────────────────────────\n\nconst moduleMetadata: WeakMap<SchemaIR, RuntimeMeta> = new WeakMap();\n\ntype TransactionLifetime = { active: boolean; readonly parent?: TransactionLifetime };\n\ntype Engine = {\n readonly rootIdentity: object;\n readonly moduleManifests: Map<string, DatabaseModuleManifest>;\n readonly borrowedModule?: boolean;\n readonly readOnlySql?: boolean;\n readonly rlsSchema?: SchemaIR;\n readonly context?: BoundRlsContext;\n readonly lifetime?: TransactionLifetime;\n readonly meta: RuntimeMeta;\n readonly adapter: DatabaseAdapter;\n readonly dialect: SqlDialect;\n readonly options: ClientOptions;\n /** True on engines bound to an open transaction — gates `lock` (FOR UPDATE). */\n readonly inTransaction?: boolean;\n /** `$on(\"query\")` subscribers — one shared set across transaction clients. */\n readonly listeners: Set<(event: QueryEvent) => void>;\n /** Compiled-query cache (§9) — shape-keyed SQL texts, shared across transaction clients. */\n readonly renderCache: StatementRenderCache;\n /** Baked extension surface mounts (D9) — re-attached on every client build. */\n readonly extensionMounts?: readonly ClientExtensionMount[];\n /** Extension onConnect hooks — run by `$connect()`. */\n readonly connectHooks?: readonly ConnectHook[];\n /** Telemetry recorder (§EPIC 1) — one per client, shared across transaction engines. */\n readonly telemetry?: TelemetryRecorder;\n /** The operation this engine is executing inside; statements attach to it. */\n readonly operation?: TelemetryOperationScope;\n /** Statement diagnostics hook — one per client, bound to the POOL adapter, shared across transaction engines. */\n readonly diagnostics?: StatementDiagnosticsHook;\n};\n\nfunction engineStateError(params: { engine: Engine; requireContext?: boolean }): RlsContextError | undefined {\n const { engine } = params;\n for (let frame = engine.lifetime; frame !== undefined; frame = frame.parent) {\n if (!frame.active) return new RlsContextError({ reason: \"expired\" });\n }\n if (params.requireContext !== false && engine.rlsSchema !== undefined && engine.context === undefined) {\n return new RlsContextError({ reason: \"missing\" });\n }\n return undefined;\n}\n\nfunction assertEngineActive(params: { engine: Engine; requireContext?: boolean }): void {\n const error = engineStateError(params);\n if (error !== undefined) throw error;\n}\n\n/** Own the complete operation, including relation loads and refetches, on one connection. */\nasync function engineTransaction<T>(params: {\n engine: Engine;\n run: (target: Engine) => Promise<T>;\n options?: TransactionOptions;\n requireContext?: boolean;\n}): Promise<T> {\n const { engine, run, options } = params;\n assertEngineActive({ engine, requireContext: params.requireContext });\n if (options?.deadline !== undefined) {\n const support = engine.adapter.budgets?.transactionDeadline;\n const requested = options.deadline.enforcement ?? \"between-statements\";\n if (support === undefined || support === \"unsupported\" ||\n (requested === \"cancel-running-statements\" && support !== \"cancel-running-statements\")) {\n throw new VibeError({\n code: \"VIBE_UNSUPPORTED_CAPABILITY\",\n message: \"the adapter does not declare support for the requested transaction deadline\",\n meta: { provider: engine.adapter.provider, feature: \"transactionDeadline\", requested, supported: support ?? \"undeclared\" },\n });\n }\n }\n return engine.adapter.transaction(async (adapter) => {\n const lifetime: TransactionLifetime = { active: true, ...(engine.lifetime === undefined ? {} : { parent: engine.lifetime }) };\n const target: Engine = { ...engine, adapter, inTransaction: true, lifetime };\n const execute = async (): Promise<T> => {\n if (engine.rlsSchema !== undefined && engine.inTransaction !== true) {\n if (adapter.provider === \"pglite\") {\n await adapter.executeUnsafe(renderRlsRole({ dialect: engine.dialect, role: engine.options.nativeRls!.runtimeRole! }));\n }\n if (engine.context !== undefined && Object.keys(engine.rlsSchema.rls!.context).length > 0) {\n await adapter.executeUnsafe(renderRlsContext({ dialect: engine.dialect, context: engine.rlsSchema.rls!.context, values: engine.context.settings }));\n }\n const readiness = await inspectNativeRlsTransaction({ adapter, schema: engine.rlsSchema, runtimeRole: engine.options.nativeRls?.runtimeRole, cacheKey: engine.rootIdentity });\n assertNativeRlsReady({ report: readiness });\n }\n return run(target);\n };\n return execute().finally(() => { lifetime.active = false; });\n }, options);\n}\n\nasync function executeOperation<T>(params: { engine: Engine; run: (target: Engine) => Promise<T> }): Promise<T> {\n const { engine, run } = params;\n assertEngineActive({ engine });\n if (engine.rlsSchema !== undefined && engine.inTransaction !== true) return engineTransaction({ engine, run });\n return run(engine);\n}\n\n/**\n * The legacy `onQuery` + `$on(\"query\")` sink, or `undefined` when nobody is\n * listening. Semantics are unchanged: it fires only after the adapter succeeds,\n * before row materialization, with the same payload, and a listener that throws\n * still propagates into the caller. Resolved once per statement, immediately\n * before it runs.\n */\nfunction legacySink(params: { engine: Engine }): ((report: StatementReport) => void) | undefined {\n const { engine } = params;\n const onQuery = engine.options.onQuery;\n if (onQuery === undefined && engine.listeners.size === 0) return undefined;\n return (statement: StatementReport): void => {\n const event: QueryEvent = statement;\n onQuery?.(event);\n for (const listener of engine.listeners) listener(event);\n };\n}\n\n/**\n * Rows an operation is KNOWN to have produced. Anything the shape cannot answer\n * (an aggregate number, a scalar) returns undefined — never a fabricated zero.\n */\nfunction knownRowCount(value: unknown): number | undefined {\n if (Array.isArray(value)) return value.length;\n if (value === null) return 0;\n if (typeof value !== \"object\") return undefined;\n const count = (value as { count?: unknown }).count;\n return typeof count === \"number\" ? count : 1;\n}\n\n/** Begin an operation on the engine's recorder, parented to whatever it runs inside. */\nfunction beginOperation(params: {\n engine: Engine;\n kind: TelemetryOperationKind;\n model: string | null;\n method: string;\n}): TelemetryOperationScope | undefined {\n const { engine, kind, model, method } = params;\n const recorder = engine.telemetry;\n if (recorder === undefined) return undefined;\n return recorder.begin({\n kind,\n model,\n method,\n dialect: engine.dialect.name,\n provider: engine.adapter.provider,\n ...(engine.operation === undefined ? {} : { parentOperationId: engine.operation.id }),\n });\n}\n\n/**\n * ONE instrumented adapter call: the legacy `onQuery` report on success (same\n * payload, same moment as before) plus the telemetry statement record, which\n * also covers the failures the legacy path has never seen.\n */\nfunction runStatement<T>(params: {\n engine: Engine;\n kind: TelemetryStatementKind;\n model: string | null;\n method: string;\n text: string;\n values: readonly unknown[];\n renderMs?: number;\n rowCount?: (value: T) => number | undefined;\n run: () => Promise<T>;\n}): Promise<T> {\n const { engine } = params;\n return instrumentStatement<T>({\n scope: engine.operation,\n legacy: legacySink({ engine }),\n diagnose: engine.diagnostics?.observe,\n kind: params.kind,\n model: params.model,\n method: params.method,\n text: params.text,\n values: params.values,\n inTransaction: engine.inTransaction === true,\n ...(params.renderMs === undefined ? {} : { renderMs: params.renderMs }),\n ...(params.rowCount === undefined ? {} : { rowCount: params.rowCount }),\n run: params.run,\n });\n}\n\n/** Clock read only when detailed timings were asked for. */\nfunction renderClock(params: { engine: Engine }): number | undefined {\n return params.engine.telemetry?.config.detailedTimings === true ? performance.now() : undefined;\n}\n\n/** Settle a scope from a promise's outcome, exactly once. */\nfunction settleWith(params: { scope: TelemetryOperationScope; running: Promise<unknown> }): void {\n const { scope, running } = params;\n running.then(\n (value: unknown) => {\n const rowCount = knownRowCount(value);\n scope.settle({ outcome: \"success\", ...(rowCount === undefined ? {} : { rowCount }) });\n },\n (error: unknown) => {\n scope.settle({ outcome: \"failure\", error });\n },\n );\n}\n\n// ─── Lazy query promises (array $transaction) ─────────────────\n\n/** A claimed array-$transaction operation (see QueryPromise.claim). */\ntype ClaimedOperation = {\n readonly start: (target: Engine) => Promise<unknown>;\n readonly abort: (reason: unknown) => void;\n};\n\n/**\n * The promise every delegate method returns — dispatch is DEFERRED to the end\n * of the creation tick (a microtask): awaiting sooner starts it sooner, and\n * `$transaction([...])` claims still-deferred operations SYNCHRONOUSLY and\n * runs them sequentially against the transaction's own engine inside one\n * BEGIN/COMMIT. At every ordinary call site this is observably an eager\n * promise (v1's delegates were fully eager); the deferral only exists for the\n * array form, so operations must reach `$transaction` in the tick they were\n * created — later, they have already dispatched and the claim fails LOUDLY\n * (silently adopting an in-flight promise would fake atomicity, v1's flaw).\n *\n * A NATIVE Promise subclass, not a bare thenable: test matchers\n * (`expect().rejects`) and user code check `instanceof Promise`, and Bun's\n * matchers await the native state without ever calling `.then` — which is\n * also why dispatch cannot wait for a `.then` that may never come. Species is\n * pinned to the base Promise so `.then` chains produce plain promises.\n */\ntype QueryPromiseFactory = <T>(params: {\n engine: Engine;\n run: (target: Engine) => Promise<T>;\n model?: string | null;\n method?: string;\n kind?: TelemetryOperationKind;\n}) => QueryPromise<T>;\n\n// Initialized by the class's static block: these entry points stay module-private,\n// rather than becoming reachable through a returned promise's constructor.\nlet createQueryPromise: QueryPromiseFactory;\nlet queryPromiseMethod: (params: { value: QueryPromise<unknown> }) => string;\nlet queryPromiseOwnerError: (params: { value: QueryPromise<unknown>; engine: Engine }) => RlsContextError | undefined;\nlet refuseQueryPromise: (params: { value: QueryPromise<unknown>; reason: unknown }) => void;\nlet claimQueryPromise: (params: { value: QueryPromise<unknown> }) => ClaimedOperation;\nlet restrictQueryPromise: (params: { value: QueryPromise<unknown> }) => void;\nconst queryPromises = new WeakSet<object>();\n\nfunction isQueryPromise(value: unknown): value is QueryPromise<unknown> {\n return typeof value === \"object\" && value !== null && queryPromises.has(value);\n}\n\nclass QueryPromise<T> extends Promise<T> {\n static override get [Symbol.species](): PromiseConstructor {\n return Promise;\n }\n\n #target!: Engine;\n /**\n * The delegate method this operation runs. Read by the read-only facade's\n * array-`$transaction` gate, which must classify a member BEFORE the batch\n * dispatches (a write promise from the writable client cannot ride a\n * read-only handle's transaction).\n */\n #operationMethod!: string;\n #dispatch!: (target: Engine) => Promise<T>;\n #settle!: { resolve: (value: T | PromiseLike<T>) => void; reject: (reason: unknown) => void };\n #started = false;\n /** This call's telemetry operation, opened at CREATION so the host's parent context is captured in the caller's frame. */\n #scope: TelemetryOperationScope | undefined;\n\n static {\n createQueryPromise = QueryPromise.#create;\n queryPromiseMethod = ({ value }) => value.#operationMethod;\n queryPromiseOwnerError = ({ value, engine }) => value.#ownerError({ engine });\n refuseQueryPromise = ({ value, reason }) => value.#refuse({ reason });\n claimQueryPromise = ({ value }) => value.#claim();\n restrictQueryPromise = ({ value }) => { value.#target = { ...value.#target, readOnlySql: true }; };\n }\n\n /** Build a deferred operation; the constructor itself stays the native one. */\n static #create<T>(params: {\n engine: Engine;\n run: (target: Engine) => Promise<T>;\n model?: string | null;\n method?: string;\n kind?: TelemetryOperationKind;\n }): QueryPromise<T> {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason: unknown) => void;\n const instance = new QueryPromise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n queryPromises.add(instance);\n instance.#target = params.engine;\n instance.#operationMethod = params.method ?? \"unknown\";\n instance.#dispatch = params.run;\n instance.#settle = { resolve, reject };\n instance.#scope = beginOperation({\n engine: params.engine,\n kind: params.kind ?? \"model\",\n model: params.model ?? null,\n method: params.method ?? \"unknown\",\n });\n // Auto-dispatch when the creation tick's synchronous run completes —\n // unless an array $transaction claimed the operation first.\n queueMicrotask(() => {\n instance.#start();\n });\n return instance;\n }\n\n #start(): void {\n if (this.#started) return;\n this.#started = true;\n const scope = this.#scope;\n scope?.dispatch();\n const target = scope === undefined ? this.#target : { ...this.#target, operation: scope };\n const running = target.rlsSchema === undefined && target.lifetime === undefined\n ? this.#dispatch(target)\n : executeOperation({ engine: target, run: this.#dispatch });\n if (scope !== undefined) settleWith({ scope, running });\n running.then(this.#settle.resolve, this.#settle.reject);\n }\n\n override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n // `catch` and `finally` route through `then` per spec — awaiting starts\n // the dispatch immediately instead of at the microtask.\n this.#start();\n return super.then(onfulfilled, onrejected);\n }\n\n /**\n * The array-$transaction entry: claim the operation SYNCHRONOUSLY (before\n * the auto-dispatch microtask can fire), receiving a starter that runs it\n * against the transaction's engine and an aborter that settles it when the\n * transaction dies before its turn — a stray await on it must reject, never\n * hang.\n */\n /** Check source identity BEFORE any array member is claimed or retargeted. */\n #ownerError(params: { engine: Engine }): RlsContextError | undefined {\n const { engine } = params;\n const state = engineStateError({ engine: this.#target });\n if (state !== undefined) return state;\n if (\n this.#target.rootIdentity !== engine.rootIdentity ||\n this.#target.lifetime !== engine.lifetime ||\n !sameRecord(this.#target.context?.settings ?? {}, engine.context?.settings ?? {})\n ) return new RlsContextError({ reason: \"conflicting\" });\n return undefined;\n }\n\n /** A refused batch must not auto-dispatch its still-deferred members later. */\n #refuse(params: { reason: unknown }): void {\n if (this.#started) return;\n this.#started = true;\n // Refused before dispatch (F06 included): a terminal outcome is still owed,\n // and it must NOT claim a duration it never spent.\n this.#scope?.settle({ outcome: \"failure\", stage: \"refused\", error: params.reason });\n this.#settle.reject(params.reason);\n super.then(undefined, () => {});\n }\n\n #claim(): ClaimedOperation {\n if (this.#started) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n \"$transaction([...]) needs operations that have not dispatched — pass delegate calls in the same tick they are created (this one was awaited or created earlier and already executed outside the transaction)\",\n });\n }\n this.#started = true;\n const scope = this.#scope;\n return {\n start: (target: Engine): Promise<unknown> => {\n // Retarget connection/lifetime, not the operation's private schema or validators.\n target = { ...target, meta: this.#target.meta, renderCache: this.#target.renderCache, options: this.#target.options };\n if (this.#target.readOnlySql === true) target = { ...target, readOnlySql: true };\n // The operation attaches to the TRANSACTION that executes it, not to the\n // context it was created in.\n if (scope !== undefined && target.operation !== undefined) {\n scope.reparent({ parentOperationId: target.operation.id });\n }\n scope?.dispatch();\n const running = executeOperation({\n engine: scope === undefined ? target : { ...target, operation: scope },\n run: this.#dispatch,\n });\n if (scope !== undefined) settleWith({ scope, running });\n // Settle this promise too (a caller may hold and await it), and mark\n // its rejection handled — the array runner propagates failures.\n running.then(this.#settle.resolve, this.#settle.reject);\n super.then(undefined, () => {});\n return running as Promise<unknown>;\n },\n abort: (reason: unknown): void => {\n // Idempotent: an already-started operation settled on its own outcome.\n scope?.settle({ outcome: \"failure\", stage: \"refused\", error: reason });\n this.#settle.reject(reason);\n super.then(undefined, () => {});\n },\n };\n }\n}\n\n/**\n * How the read-only facade inspects and refuses un-dispatched delegate\n * promises. Handed to `attachReadOnly` rather than imported by it, so the\n * access module never takes a value dependency on this one.\n */\nconst LAZY_OPERATIONS: LazyOperationBridge = {\n restrictSql: ({ value }): void => {\n if (isQueryPromise(value)) restrictQueryPromise({ value });\n },\n methodOf: (params: { value: unknown }): string | undefined =>\n isQueryPromise(params.value) ? queryPromiseMethod({ value: params.value }) : undefined,\n refuse: (params: { value: unknown; reason: unknown }): void => {\n if (isQueryPromise(params.value)) refuseQueryPromise({ value: params.value, reason: params.reason });\n },\n};\n\n/** Render + execute a row-returning statement, decoding through the codec table. */\nasync function runRows(params: { engine: Engine; plan: QueryPlan }): Promise<ClientRow[]> {\n const { engine, plan } = params;\n const renderStarted = renderClock({ engine });\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: plan.statement,\n cache: engine.renderCache,\n });\n const rows = await runStatement<ClientRow[]>({\n engine,\n kind: \"rows\",\n model: plan.model.name,\n method: plan.method,\n text: rendered.text,\n values: rendered.values,\n ...(renderStarted === undefined ? {} : { renderMs: performance.now() - renderStarted }),\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n }),\n });\n return materializeRows({ dialect: engine.dialect.name, model: plan.model, rows, wire: engine.adapter.wire });\n}\n\n/**\n * Run a statement for its affected-row count on the PARAMETER-BOUND path.\n *\n * F01: `executeUnsafe` is the raw path, and an adapter may implement it with\n * client-side text escaping (mysql2's `pool.query` does). Escaping done in the\n * client cannot know the server's `sql_mode`, so under `NO_BACKSLASH_ESCAPES` a\n * generated statement carrying a hostile string predicate matched — and\n * deleted — rows it must not. Generated statements therefore prefer\n * `executeAffected` (bound, same protocol as `execute`) and fall back to\n * `executeUnsafe` only for an adapter that does not implement it, all of which\n * bind their raw path already.\n */\nasync function runBoundAffected(params: {\n adapter: DatabaseAdapter;\n text: string;\n values: unknown[];\n}): Promise<QueryResult> {\n const { adapter, text, values } = params;\n const bound = adapter.executeAffected;\n if (bound !== undefined) return await bound.call(adapter, { text, values });\n return await adapter.executeUnsafe({ text, values });\n}\n\n/** Execute a statement for its affected-row count (`executeUnsafe` exposes it). */\nasync function runAffected(params: { engine: Engine; plan: QueryPlan }): Promise<number> {\n const { engine, plan } = params;\n // M4/M7: a multi-statement batch (sqlite createMany groups, parameter-budget\n // chunks) runs atomically — exactly like the single statement it replaces.\n if (plan.batch !== undefined && plan.batch.length > 1) {\n const batch = plan.batch;\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n let total = 0;\n for (const statement of batch) {\n total += await runAffected({ engine: txEngine, plan: { ...plan, statement, batch: undefined } });\n }\n return total;\n });\n }\n const renderStarted = renderClock({ engine });\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: plan.statement,\n cache: engine.renderCache,\n });\n const result = await runStatement<QueryResult>({\n engine,\n kind: \"affected\",\n model: plan.model.name,\n method: plan.method,\n text: rendered.text,\n values: rendered.values,\n ...(renderStarted === undefined ? {} : { renderMs: performance.now() - renderStarted }),\n rowCount: (value: QueryResult): number => value.affectedRows,\n run: (): Promise<QueryResult> =>\n runBoundAffected({\n adapter: engine.adapter,\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n }),\n });\n return result.affectedRows;\n}\n\n/** The methods whose statement can carry a row lock (`compileLock` runs there). */\nconst LOCKABLE_METHODS: readonly QueryMethod[] = Object.freeze([\"findMany\", \"findFirst\", \"findUnique\"]);\n\nfunction plan(params: {\n engine: Engine;\n model: string;\n method: QueryMethod;\n args: ClientRow | undefined;\n}): QueryPlan {\n const { engine, model, method } = params;\n const args = engine.readOnlySql === true\n ? restrictedSqlArgs({ value: params.args, path: \"$readOnly\", refusal: () => readOnlyRefusal({ path: `${model}.${method}`, reason: \"raw\" }) })\n : params.args;\n if (args !== undefined && args[\"lock\"] !== undefined) {\n // `lock` is a row lock held to COMMIT — outside a transaction the lock\n // releases at statement end, a silent no-op. The engine knows which client\n // it is (the builder cannot), so the refusal lives here.\n if (engine.inTransaction !== true) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `lock on ${model}.${method}() requires a transaction — call it on the client $transaction hands its callback (outside one, the lock would release at statement end)`,\n meta: { model, method },\n });\n }\n // A lock on a method that cannot carry one would otherwise be DROPPED in\n // silence: only the three finds reach compileLock. Postgres itself refuses\n // a locking read with aggregates or GROUP BY (SQLSTATE 0A000), so there is\n // no shape to route them to either.\n if (!LOCKABLE_METHODS.includes(method)) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n `lock on ${model}.${method}() is not supported — only ${LOCKABLE_METHODS.join(\", \")} take a lock. ` +\n `Lock the rows with a find inside the transaction, then write them`,\n meta: { model, method },\n });\n }\n }\n return buildQuery({\n meta: engine.meta,\n dialect: engine.dialect,\n model,\n method,\n args,\n ...(engine.options.relationStrategy === undefined\n ? {}\n : { defaultRelationStrategy: engine.options.relationStrategy }),\n clientOptions: {\n ...(engine.options.defaultOrderByPk === undefined\n ? {}\n : { defaultOrderByPk: engine.options.defaultOrderByPk }),\n ...(engine.options.distinctOrderByPk === undefined\n ? {}\n : { distinctOrderByPk: engine.options.distinctOrderByPk }),\n },\n });\n}\n\n/**\n * The lock the internal read-before-write overlays take: the plain exclusive\n * lock, blocking. They are not a public lock request and never vary.\n */\nconst OVERLAY_ROW_LOCK: RowLock = Object.freeze({ strength: \"update\", wait: \"wait\" });\n\n/**\n * Read a try-lock's verdict out of its single-column row.\n *\n * Deliberately NOT a truthiness coercion: a driver that reports booleans as\n * `\"t\"` or `1` must not silently become `false`, because \"you do not hold this\n * lock\" is the one answer a caller acts on. An unrecognized shape is our bug,\n * so it throws rather than guesses.\n */\nfunction readAcquiredVerdict(params: { method: string; result: QueryResult }): boolean {\n const value = params.result.rows[0]?.[ADVISORY_LOCK_RESULT_COLUMN];\n if (value === true || value === 1 || value === \"t\" || value === \"true\" || value === \"1\") return true;\n if (value === false || value === 0 || value === \"f\" || value === \"false\" || value === \"0\") return false;\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `internal: ${params.method}() expected a boolean \"${ADVISORY_LOCK_RESULT_COLUMN}\" column, got ${String(value)}`,\n meta: { method: params.method, value: String(value) },\n });\n}\n\n/** Re-select the row a mutation touched, on dialects without RETURNING. */\nasync function refetch(params: {\n engine: Engine;\n source: QueryPlan;\n where: Readonly<Record<string, unknown>>;\n /** `SELECT … FOR UPDATE` (where the dialect has a lock clause) — the\n * read-before-write overlays lock the row they are about to write. */\n lock?: boolean;\n}): Promise<ClientRow | null> {\n const { engine, source, where } = params;\n const selectArg = source.selectArg;\n const followUp = plan({\n engine,\n model: source.model.name,\n method: \"findUnique\",\n args: selectArg === null ? { where } : { where, select: selectArg },\n });\n const locked: QueryPlan =\n params.lock === true\n ? { ...followUp, statement: { ...(followUp.statement as SelectStatement), rowLock: OVERLAY_ROW_LOCK } }\n : followUp;\n const rows = await runRows({ engine, plan: locked });\n return rows[0] ?? null;\n}\n\n/** Shallow record equality — \"is the overlaid refetch key the same key?\". */\nfunction sameRecord(\n a: Readonly<Record<string, unknown>>,\n b: Readonly<Record<string, unknown>>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n const left = a[key];\n const right = b[key];\n if (left === right) continue;\n if (left instanceof Date && right instanceof Date && left.getTime() === right.getTime()) continue;\n return false;\n }\n return true;\n}\n\n/**\n * The WHERE that identifies a freshly inserted row on a dialect without\n * RETURNING: the app-generated key when there is one, else the driver's\n * last-insert-id — which is why the DB-assigned-key path runs inside ONE\n * transaction (see `runSingleMutation`): `LAST_INSERT_ID()` is\n * connection-scoped, and only the transaction contract guarantees the INSERT\n * and the read-back share a connection.\n */\nasync function insertedKeyWhere(params: {\n engine: Engine;\n source: QueryPlan;\n insertId?: number | string;\n}): Promise<Record<string, unknown>> {\n const { engine, source } = params;\n if (source.refetchWhere !== null) return { ...source.refetchWhere };\n\n const keyField = source.model.primaryKey[0];\n const lastInsertIdSql = engine.dialect.lastInsertIdSql;\n if (lastInsertIdSql === null || source.model.primaryKey.length !== 1 || keyField === undefined) {\n throw unsupportedCapability({\n dialect: engine.dialect.name,\n feature: `${source.method} on ${source.model.name} without RETURNING`,\n hint: \"this model's key is assigned by the database and cannot be read back on this dialect\",\n });\n }\n const insertId = params.insertId;\n // Only use an exact integer identity. Zero is a value, not an absent field;\n // adapters may omit a driver's zero sentinel when it means \"no identity\".\n if ((typeof insertId === \"number\" && Number.isSafeInteger(insertId)) ||\n (typeof insertId === \"string\" && /^-?\\d+$/.test(insertId))) {\n return { [keyField.name]: decodeValue({ dialect: engine.dialect.name, field: keyField, value: insertId }) };\n }\n const result = await runStatement<QueryResult>({\n engine,\n kind: \"rows\",\n model: source.model.name,\n method: source.method,\n text: lastInsertIdSql,\n values: [],\n rowCount: (value: QueryResult): number => value.rows.length,\n run: (): Promise<QueryResult> => engine.adapter.executeUnsafe({ text: lastInsertIdSql }),\n });\n const id = result.rows[0]?.id;\n if (id === undefined || id === null) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `could not read back the generated key for ${source.model.name}`,\n meta: { model: source.model.name },\n });\n }\n return { [keyField.name]: id };\n}\n\n/**\n * Run a single-row mutation. On dialects with RETURNING the statement carries\n * its own result; otherwise the row is read back with a second statement — for\n * `delete` that read happens BEFORE the write, since afterwards the row is gone.\n *\n * Returns the FULL row (RETURNING includes the primary key and stitch keys);\n * the delegate narrows down to the caller's selection after relation loading.\n */\nasync function runSingleMutation(params: {\n engine: Engine;\n source: QueryPlan;\n readBeforeWrite: boolean;\n /**\n * `create({ onConflict })`: zero written rows is the SKIPPED verdict —\n * return null instead of not-found (RETURNING presence / affected count is\n * the truth of who won the conflict).\n */\n allowZeroRows?: boolean;\n}): Promise<ClientRow | null> {\n const { engine, source, readBeforeWrite } = params;\n\n // Mirrors the renderer's applyReturning verdict WITHOUT rendering — the\n // native path would otherwise render twice per mutation.\n const statement = source.statement;\n // `in` narrowing, not a select-vs-mutation dichotomy: the RLS statement\n // variants carry no RETURNING either, and neither does a select.\n const requested = \"returning\" in statement ? statement.returning : undefined;\n if (requested !== undefined && requested.length > 0 && engine.dialect.capabilities.returning) {\n const rows = await runRows({ engine, plan: source });\n const row = rows[0];\n if (row === undefined) {\n if (params.allowZeroRows === true) return null;\n throw notFound({ model: source.model.name, method: source.method });\n }\n return row;\n }\n\n // RETURNING omitted (mysql): read the row around the write.\n const rendered = renderStatementCached({ dialect: engine.dialect, statement, cache: engine.renderCache });\n // `executeUnsafe` — the only adapter entry point that surfaces the\n // affected-row count, which the overlays below must check (M1/M2): a write\n // that matched nothing is a not-found, never \"re-select and hope\".\n const executeWrite = async (target: Engine): Promise<QueryResult> => {\n const result = await runStatement<QueryResult>({\n engine: target,\n kind: \"affected\",\n model: source.model.name,\n method: source.method,\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: QueryResult): number => value.affectedRows,\n run: (): Promise<QueryResult> =>\n runBoundAffected({\n adapter: target.adapter,\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n }),\n });\n return result;\n };\n\n if (readBeforeWrite) {\n // delete: the read must happen BEFORE the write — and both must observe\n // ONE row: the read locks it (FOR UPDATE) inside a transaction, and a\n // DELETE that then matches nothing is a concurrent-delete not-found, not\n // a success reporting the pre-read row (M1).\n const where = source.refetchWhere;\n if (where === null) throw notFound({ model: source.model.name, method: source.method });\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const before = await refetch({ engine: txEngine, source, where, lock: true });\n if (before === null) throw notFound({ model: source.model.name, method: source.method });\n const { affectedRows: affected } = await executeWrite(txEngine);\n if (affected === 0) throw notFound({ model: source.model.name, method: source.method });\n return before;\n });\n }\n\n if (source.refetchWhere !== null) {\n const knownWhere = source.refetchWhere;\n\n if (source.method === \"upsert\") {\n // Which arm ran is only knowable from the read-back. The write and every\n // read ride ONE transaction (the only same-connection guarantee the\n // frozen adapter interface gives). In order:\n // 1. the overlaid unique where — the UPDATE arm's row answers it, and\n // so does the INSERT arm's unless the update arm rewrites the key;\n // 2. the un-overlaid where — the INSERT arm's row always answers it\n // (the B1 gate guarantees create binds the conflict target);\n // 3. LAST_INSERT_ID() — only meaningful when the ODKU statement\n // carries the `id = LAST_INSERT_ID(id)` trick (B2): the update arm\n // then names the row it addressed even when that row was matched\n // through a DIFFERENT unique key than the where names.\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n await executeWrite(txEngine);\n const byWhere = await refetch({ engine: txEngine, source, where: knownWhere });\n if (byWhere !== null) return byWhere;\n const baseWhere = source.refetchWhereBase;\n if (baseWhere !== null && !sameRecord(baseWhere, knownWhere)) {\n const byBase = await refetch({ engine: txEngine, source, where: baseWhere });\n if (byBase !== null) return byBase;\n }\n const insertStatement = source.statement;\n const hasIdTrick =\n insertStatement.kind === \"insert\" &&\n insertStatement.onConflict !== undefined &&\n !(\"doNothing\" in insertStatement.onConflict) &&\n insertStatement.onConflict.lastInsertIdColumn !== undefined;\n if (!hasIdTrick) throw notFound({ model: source.model.name, method: source.method });\n const where = await insertedKeyWhere({ engine: txEngine, source: { ...source, refetchWhere: null } });\n const after = await refetch({ engine: txEngine, source, where });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n }\n\n if (source.method === \"update\") {\n // M2: the write and its read-back observe one row inside a transaction,\n // and a write that MATCHED no row (mysql reports matched — mysql2 sets\n // CLIENT_FOUND_ROWS) is a not-found: re-selecting by the overlaid unique\n // where could otherwise resolve a wrong, unrelated row.\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const { affectedRows: affected } = await executeWrite(txEngine);\n if (affected === 0) throw notFound({ model: source.model.name, method: source.method });\n const after = await refetch({ engine: txEngine, source, where: knownWhere });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n }\n\n // create with an app-generated key: the key is known before the write.\n const { affectedRows: affected } = await executeWrite(engine);\n if (affected === 0 && params.allowZeroRows === true) return null;\n const after = await refetch({ engine, source, where: knownWhere });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n }\n\n // DB-assigned key: INSERT + LAST_INSERT_ID() + re-select must observe ONE\n // connection — the transaction contract is the only guarantee the frozen\n // adapter interface gives us (review work order #7/F5, runtime half).\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const { affectedRows: affected, insertId } = await executeWrite(txEngine);\n if (affected === 0 && params.allowZeroRows === true) return null;\n const where = await insertedKeyWhere({ engine: txEngine, source, insertId });\n const after = await refetch({ engine: txEngine, source, where });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n}\n\n/** Narrow a mutation result the caller KNOWS cannot be null (no allowZeroRows). */\nfunction requireRow(params: { row: ClientRow | null; model: string; method: string }): ClientRow {\n if (params.row === null) throw notFound({ model: params.model, method: params.method });\n return params.row;\n}\n\n/**\n * The transactional find-then-write upsert — Prisma's own fallback, used\n * whenever the create data does not bind the conflict-target columns with the\n * where's values (`upsertUsesNativeStatement`, SQL review B1): a native\n * INSERT … ON CONFLICT could never fire on the addressed row there, and on\n * postgres/sqlite would silently insert a duplicate-in-spirit row while\n * mysql's ODKU could update an unrelated one.\n *\n * Probe by the unique where (locked, where the dialect has row locks), then\n * run the UPDATE arm on a hit and the CREATE arm on a miss. Both arm plans\n * build BEFORE the transaction — validation stays earliest-moment, exactly as\n * the native statement validates both arms up front. Races stay LOUD: a\n * concurrent insert after a probe miss surfaces the unique violation, a\n * concurrent delete after a probe hit surfaces not-found.\n */\nasync function runUpsertFallback(params: {\n engine: Engine;\n model: ModelMeta;\n args: ClientRow;\n}): Promise<ClientRow> {\n const { engine, model, args } = params;\n const passthrough: ClientRow = {};\n if (args.select !== undefined) passthrough.select = args.select;\n if (args.omit !== undefined) passthrough.omit = args.omit;\n if (args.include !== undefined) passthrough.include = args.include;\n\n const probeSource = plan({ engine, model: model.name, method: \"findUnique\", args: { where: args.where } });\n const probePlan: QueryPlan = {\n ...probeSource,\n statement: { ...(probeSource.statement as SelectStatement), rowLock: OVERLAY_ROW_LOCK },\n };\n const createSource = plan({\n engine,\n model: model.name,\n method: \"create\",\n args: { ...passthrough, data: args.create },\n });\n const updateSource = plan({\n engine,\n model: model.name,\n method: \"update\",\n args: { ...passthrough, where: args.where, data: args.update },\n });\n\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const existing = (await runRows({ engine: txEngine, plan: probePlan }))[0];\n const source = existing === undefined ? createSource : updateSource;\n return requireRow({\n row: await runSingleMutation({ engine: txEngine, source, readBeforeWrite: false }),\n model: model.name,\n method: \"upsert\",\n });\n });\n}\n\n// ─── Relation attachment + result shaping ─────────────────\n\nfunction relationExecutor(params: { engine: Engine }): RelationExecutor {\n const { engine } = params;\n return async ({ statement, model, method }) => {\n if (engine.readOnlySql === true && containsSqlFragment(statement)) throw readOnlyRefusal({ path: `${model}.${method}`, reason: \"raw\" });\n const rendered = renderStatementCached({ dialect: engine.dialect, statement, cache: engine.renderCache });\n return await runStatement<ClientRow[]>({\n engine,\n kind: \"rows\",\n model,\n method,\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n }),\n });\n };\n}\n\ntype ResultShape = {\n readonly relations: RelationSelection | null;\n readonly resultFields: readonly string[] | null;\n readonly relationStrategy: RelationStrategy;\n /** Computed fields to attach before projection, or `null` (see QueryPlan.computed). */\n readonly computed: readonly string[] | null;\n};\n\n/**\n * Relation statements this engine may have in flight at once.\n *\n * Forced to 1 inside a transaction whatever the option says: a transaction owns\n * ONE connection, and its statements are ordered by definition. The option is\n * validated at client construction, so this only reads it.\n */\nfunction relationConcurrency(params: { engine: Engine }): number {\n const { engine } = params;\n if (engine.inTransaction === true) return 1;\n return engine.options.relationLoading?.concurrency ?? 1;\n}\n\n/** Attach relations (per the shape's strategy), then narrow to the caller's selection. */\nasync function finalizeRows(params: {\n engine: Engine;\n model: ModelMeta;\n shape: ResultShape;\n rows: ClientRow[];\n}): Promise<ClientRow[]> {\n const { engine, model, shape, rows } = params;\n if (shape.relations !== null && rows.length > 0) {\n const execute = relationExecutor({ engine });\n const concurrency = relationConcurrency({ engine });\n if (shape.relationStrategy === \"join\") {\n await attachLateralRelations({\n dialect: engine.dialect,\n meta: engine.meta,\n model,\n rows,\n selection: shape.relations,\n execute,\n wire: engine.adapter.wire,\n concurrency,\n });\n } else {\n await attachRelations({\n dialect: engine.dialect,\n meta: engine.meta,\n model,\n rows,\n selection: shape.relations,\n execute,\n wire: engine.adapter.wire,\n concurrency,\n });\n }\n }\n // Computed fields attach BEFORE projection: their `needs` are still on the\n // row here, and are narrowed away next unless selected themselves.\n if (shape.computed !== null && rows.length > 0) {\n applyComputedFields({ model, rows, names: shape.computed });\n }\n if (shape.resultFields === null) return rows;\n return rows.map((row) => project({ row, fields: shape.resultFields }));\n}\n\nasync function finalizeRow(params: {\n engine: Engine;\n model: ModelMeta;\n shape: ResultShape;\n row: ClientRow;\n}): Promise<ClientRow> {\n const { engine, model, shape, row } = params;\n const rows = await finalizeRows({ engine, model, shape, rows: [row] });\n return rows[0] as ClientRow;\n}\n\n// ─── Nested-write plumbing ────────────────────────────────────────\n\nfunction makeRunner(params: { engine: Engine }): StatementRunner {\n const { engine } = params;\n return {\n single: async ({ model, method, args }) =>\n requireRow({\n row: await runSingleMutation({\n engine,\n source: plan({ engine, model, method, args }),\n readBeforeWrite: method === \"delete\",\n }),\n model,\n method,\n }),\n rows: async ({ model, method, args }) => await runRows({ engine, plan: plan({ engine, model, method, args }) }),\n affected: async ({ model, method, args }) =>\n await runAffected({ engine, plan: plan({ engine, model, method, args }) }),\n statement: async ({ statement, model, method }) => {\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: statement as SqlStatement,\n cache: engine.renderCache,\n });\n return await runStatement<ClientRow[]>({\n engine,\n kind: \"rows\",\n model,\n method,\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n }),\n });\n },\n };\n}\n\nfunction makeWriteContext(params: { engine: Engine }): WriteContext {\n const { engine } = params;\n return {\n meta: engine.meta,\n dialect: engine.dialect,\n run: makeRunner({ engine }),\n transactional: <T>(fn: (run: StatementRunner) => Promise<T>): Promise<T> =>\n engine.adapter.transaction((txAdapter) => fn(makeRunner({ engine: { ...engine, adapter: txAdapter, inTransaction: true } }))),\n };\n}\n\n// ─── Delegates ────────────────────────────────────────────────────\n\n/**\n * A view's delegate: reads pass through, every write verb is refused before a\n * statement is built. Views are read-only by construction, and leaving the\n * write verbs live is not dialect-honest — a simple projection view is\n * auto-updatable on postgres (the INSERT silently lands in the base table)\n * while sqlite/mysql raise a raw driver error. Applied once per delegate at\n * construction, so the hot path is untouched.\n */\nfunction readOnlyDelegate(params: { delegate: ModelDelegate; model: string }): ModelDelegate {\n const { delegate, model } = params;\n const refuse =\n (method: string) =>\n async (): Promise<never> => {\n throw viewIsReadOnly({ model, method });\n };\n return {\n ...delegate,\n create: refuse(\"create\"),\n createMany: refuse(\"createMany\"),\n createManyAndReturn: refuse(\"createManyAndReturn\"),\n update: refuse(\"update\"),\n updateMany: refuse(\"updateMany\"),\n updateManyAndReturn: refuse(\"updateManyAndReturn\"),\n upsert: refuse(\"upsert\"),\n upsertMany: refuse(\"upsertMany\"),\n delete: refuse(\"delete\"),\n deleteMany: refuse(\"deleteMany\"),\n };\n}\n\n/**\n * #7 (v1/Prisma parity): an update `data` object whose every key is undefined\n * is an effectively-empty write — the batch short-circuits to `{ count: 0 }`\n * BEFORE `@updatedAt` injection, so a no-op updateMany never bumps timestamps.\n */\nfunction isEffectivelyEmptyData(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) return false;\n if (Array.isArray(value) || value instanceof Date || value instanceof Uint8Array) return false;\n return Object.values(value).every((entry) => entry === undefined);\n}\n\nfunction createDelegate(params: { engine: Engine; model: string }): ModelDelegate {\n const { engine, model } = params;\n\n const shapeOf = (built: QueryPlan): ResultShape => ({\n relations: built.relations,\n resultFields: built.resultFields,\n relationStrategy: built.relationStrategy,\n computed: built.computed,\n });\n\n // ─── Implementations ───\n // Each takes the engine it runs against as a parameter: the delegate wraps\n // them in LAZY query promises bound to this client's engine, and the array\n // form of $transaction re-runs the same closure against the transaction's\n // engine instead (see QueryPromise).\n\n const findMany = async (target: Engine, args?: ClientRow): Promise<ClientRow[]> => {\n const built = plan({ engine: target, model, method: \"findMany\", args });\n const rows = shapeRows({ plan: built, rows: await runRows({ engine: target, plan: built }) });\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const findFirst = async (target: Engine, args?: ClientRow): Promise<ClientRow | null> => {\n const built = plan({ engine: target, model, method: \"findFirst\", args });\n const rows = shapeRows({ plan: built, rows: await runRows({ engine: target, plan: built }) });\n const row = rows[0];\n if (row === undefined) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const findUnique = async (target: Engine, args: ClientRow): Promise<ClientRow | null> => {\n const built = plan({ engine: target, model, method: \"findUnique\", args });\n const rows = await runRows({ engine: target, plan: built });\n const row = rows[0];\n if (row === undefined) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const create = async (target: Engine, args: ClientRow): Promise<ClientRow | null> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n // `onConflict` → insert-or-skip: zero written rows returns null (the\n // truthful \"another writer won\" verdict), never not-found.\n const skipping = args.onConflict !== undefined;\n if (hasNestedWrites({ model: modelMeta, data: args.data })) {\n if (skipping) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `onConflict cannot combine with nested writes on ${modelMeta.name}.create() — insert the parent row alone, then connect relations`,\n meta: { model: modelMeta.name },\n });\n }\n const shape = resolveResultShape({ meta: target.meta, model: modelMeta, method: \"create\", args });\n const row = await createWithNested({\n ctx: makeWriteContext({ engine: target }),\n model: modelMeta,\n data: args.data as Record<string, unknown>,\n });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"create\", args });\n const row = await runSingleMutation({\n engine: target,\n source: built,\n readBeforeWrite: false,\n ...(skipping ? { allowZeroRows: true } : {}),\n });\n if (row === null) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const update = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n if (hasNestedWrites({ model: modelMeta, data: args.data })) {\n const shape = resolveResultShape({ meta: target.meta, model: modelMeta, method: \"update\", args });\n const row = await updateWithNested({\n ctx: makeWriteContext({ engine: target }),\n model: modelMeta,\n where: args.where as Record<string, unknown>,\n data: args.data as Record<string, unknown>,\n });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"update\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: false }),\n model: built.model.name,\n method: \"update\",\n });\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const createMany = async (target: Engine, args: ClientRow): Promise<BatchResult> => {\n // #7 (v1/Prisma parity): an empty batch is a normal outcome of\n // `data: rows.filter(…)` — `{ count: 0 }`, NO statement.\n if (Array.isArray(args.data) && args.data.length === 0) return { count: 0 };\n const built = plan({ engine: target, model, method: \"createMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n /**\n * EPIC 10: bounded bulk upsert. `count` is the rows submitted after\n * duplicate-key validation — every one was inserted or updated, because there\n * is no skip arm and the chunks run atomically. The driver's own number rides\n * along ONLY where it is a row count (never on mysql, whose ON DUPLICATE KEY\n * counts an insert as 1, a changed update as 2 and an unchanged update as 0).\n */\n const upsertMany = async (target: Engine, args: ClientRow): Promise<UpsertManyResult> => {\n // #7 parity with createMany: an empty feed is a normal outcome, no statement.\n if (Array.isArray(args.data) && args.data.length === 0) return { count: 0, affectedRows: 0 };\n const built = plan({ engine: target, model, method: \"upsertMany\", args });\n const affected = await runAffected({ engine: target, plan: built });\n return {\n count: built.upsertRowCount ?? 0,\n affectedRows: affectedRowsAreRowCounts({ dialect: target.dialect }) ? affected : null,\n };\n };\n\n const createManyAndReturn = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n // #7: empty batch → no rows, no statement.\n if (Array.isArray(args.data) && args.data.length === 0) return [];\n const built = plan({ engine: target, model, method: \"createManyAndReturn\", args });\n // M4/M7: multi-statement batches run atomically; returned rows come in\n // statement order (heterogeneous rows regroup — no input-order promise,\n // matching Prisma's own non-guarantee here).\n const rows =\n built.batch !== undefined && built.batch.length > 1\n ? await target.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...target, adapter: txAdapter };\n const collected: ClientRow[] = [];\n for (const statement of built.batch as readonly SqlStatement[]) {\n collected.push(\n ...(await runRows({ engine: txEngine, plan: { ...built, statement, batch: undefined } })),\n );\n }\n return collected;\n })\n : await runRows({ engine: target, plan: built });\n // #8: the one multi-row returning write loads relations like its siblings\n // (finalizeRows narrows to the caller's selection afterwards, exactly as\n // the bare projection did before).\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const updateMany = async (target: Engine, args: ClientRow): Promise<BatchResult> => {\n // #7 (v1 parity, old/v1 client.ts:957): short-circuit BEFORE @updatedAt\n // injection — auto-managed fields must not turn a no-op into a real UPDATE.\n if (isEffectivelyEmptyData(args.data)) return { count: 0 };\n const built = plan({ engine: target, model, method: \"updateMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n /**\n * EPIC 2: the bulk update that reports WHICH rows changed. One statement —\n * `UPDATE … RETURNING` — so the returned rows are the rows this write\n * changed, not whatever a follow-up SELECT would find. Dialects without\n * RETURNING refuse at build time (mysql); relations are refused by\n * `ALLOWED_ARGS`, so the shape only ever carries scalars.\n */\n const updateManyAndReturn = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n // Parity with updateMany (#7): a data object with no defined keys writes\n // nothing — and therefore returns nothing — BEFORE @updatedAt injection.\n if (isEffectivelyEmptyData(args.data)) return [];\n const built = plan({ engine: target, model, method: \"updateManyAndReturn\", args });\n const rows = await runRows({ engine: target, plan: built });\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const upsert = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n if (\n hasNestedWrites({ model: modelMeta, data: args.create }) ||\n hasNestedWrites({ model: modelMeta, data: args.update })\n ) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `nested writes are not supported inside upsert arms on ${modelMeta.name} — use create()/update() with nested data`,\n meta: { model: modelMeta.name },\n });\n }\n if (!upsertUsesNativeStatement({ model: modelMeta, args: args as Record<string, unknown> })) {\n if (args.onConflict !== undefined) {\n // An explicit conflict target only exists in the native single\n // statement; the find-then-write fallback has no ON CONFLICT clause\n // to attach it to — refuse instead of silently ignoring it.\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `onConflict on ${modelMeta.name}.upsert() needs the native single-statement path — this shape (a guard field beyond the conflict target, or create data not binding the where's key) runs the find-then-write fallback, which cannot honor an explicit conflict target`,\n meta: { model: modelMeta.name },\n });\n }\n // B1: the create row does not bind the conflict target with the\n // where's values — the native statement's conflict clause could never\n // fire on the addressed row. Run the find-then-write flow instead.\n const shape = resolveResultShape({\n meta: target.meta,\n model: modelMeta,\n method: \"upsert\",\n args: args as Record<string, unknown>,\n });\n const row = await runUpsertFallback({ engine: target, model: modelMeta, args });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"upsert\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: false }),\n model: built.model.name,\n method: \"upsert\",\n });\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const deleteOne = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const built = plan({ engine: target, model, method: \"delete\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: true }),\n model: built.model.name,\n method: \"delete\",\n });\n // #25: relations load like update's — from the returned (or pre-read) row,\n // AFTER the delete: children a cascade removed come back empty.\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const deleteMany = async (target: Engine, args?: ClientRow): Promise<BatchResult> => {\n const built = plan({ engine: target, model, method: \"deleteMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n const count = async (target: Engine, args?: ClientRow): Promise<number | Record<string, number>> => {\n const built = plan({ engine: target, model, method: \"count\", args });\n const rendered = renderStatementCached({\n dialect: target.dialect,\n statement: built.statement,\n cache: target.renderCache,\n });\n const rows = await runStatement<ClientRow[]>({\n engine: target,\n kind: \"rows\",\n model,\n method: \"count\",\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n target.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n }),\n });\n // count-with-select: aliases ARE the result keys ({ _all, field, … }).\n if (built.aggregateSpec !== null) {\n const row = rows[0] ?? {};\n const out: Record<string, number> = {};\n for (const selection of built.aggregateSpec.selections) {\n out[selection.alias] = Number(row[selection.alias] ?? 0);\n }\n return out;\n }\n // postgres returns COUNT(*) as a bigint string; Number() normalizes it.\n const raw = rows[0]?.[built.countAlias ?? COUNT_ALIAS];\n return raw === undefined || raw === null ? 0 : Number(raw);\n };\n\n const aggregate = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const built = plan({ engine: target, model, method: \"aggregate\", args });\n const rows = await runRows({ engine: target, plan: built });\n // A non-grouped aggregate always yields exactly one row — even over an\n // empty table (COUNT → 0, the others → SQL NULL → null).\n return assembleAggregates({\n engine: target,\n model: built.model,\n spec: built.aggregateSpec as AggregateSpec,\n row: rows[0] ?? {},\n into: {},\n });\n };\n\n const groupBy = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n const built = plan({ engine: target, model, method: \"groupBy\", args });\n const rows = await runRows({ engine: target, plan: built });\n const by = built.groupByFields as readonly string[];\n const spec = built.aggregateSpec as AggregateSpec;\n return rows.map((row) => {\n const out: ClientRow = {};\n for (const name of by) out[name] = row[name];\n return assembleAggregates({ engine: target, model: built.model, spec, row, into: out });\n });\n };\n\n // ─── Lazy wrappers ───\n\n // `method` names the operation for telemetry; it is the delegate key, so a\n // sibling call is never confused with another one.\n const lazy = <T>(method: string, run: (target: Engine) => Promise<T>): Promise<T> =>\n createQueryPromise<T>({ engine, run, model, method });\n\n const delegate: ModelDelegate = {\n findMany: (args?: ClientRow): Promise<ClientRow[]> => lazy(\"findMany\", (target) => findMany(target, args)),\n findFirst: (args?: ClientRow): Promise<ClientRow | null> => lazy(\"findFirst\", (target) => findFirst(target, args)),\n findUnique: (args: ClientRow): Promise<ClientRow | null> => lazy(\"findUnique\", (target) => findUnique(target, args)),\n\n findFirstOrThrow: (args?: ClientRow): Promise<ClientRow> =>\n lazy(\"findFirstOrThrow\", async (target) => {\n const row = await findFirst(target, args);\n if (row === null) throw notFound({ model, method: \"findFirstOrThrow\" });\n return row;\n }),\n\n findUniqueOrThrow: (args: ClientRow): Promise<ClientRow> =>\n lazy(\"findUniqueOrThrow\", async (target) => {\n const row = await findUnique(target, args);\n if (row === null) throw notFound({ model, method: \"findUniqueOrThrow\" });\n return row;\n }),\n\n create: (args: ClientRow): Promise<ClientRow | null> => lazy(\"create\", (target) => create(target, args)),\n createMany: (args: ClientRow): Promise<BatchResult> => lazy(\"createMany\", (target) => createMany(target, args)),\n createManyAndReturn: (args: ClientRow): Promise<ClientRow[]> =>\n lazy(\"createManyAndReturn\", (target) => createManyAndReturn(target, args)),\n update: (args: ClientRow): Promise<ClientRow> => lazy(\"update\", (target) => update(target, args)),\n updateMany: (args: ClientRow): Promise<BatchResult> => lazy(\"updateMany\", (target) => updateMany(target, args)),\n updateManyAndReturn: (args: ClientRow): Promise<ClientRow[]> =>\n lazy(\"updateManyAndReturn\", (target) => updateManyAndReturn(target, args)),\n upsert: (args: ClientRow): Promise<ClientRow> => lazy(\"upsert\", (target) => upsert(target, args)),\n upsertMany: (args: ClientRow): Promise<UpsertManyResult> =>\n lazy(\"upsertMany\", (target) => upsertMany(target, args)),\n delete: (args: ClientRow): Promise<ClientRow> => lazy(\"delete\", (target) => deleteOne(target, args)),\n deleteMany: (args?: ClientRow): Promise<BatchResult> => lazy(\"deleteMany\", (target) => deleteMany(target, args)),\n count: (args?: ClientRow): Promise<number | Record<string, number>> =>\n lazy(\"count\", (target) => count(target, args)),\n aggregate: (args: ClientRow): Promise<ClientRow> => lazy(\"aggregate\", (target) => aggregate(target, args)),\n groupBy: (args: ClientRow): Promise<ClientRow[]> => lazy(\"groupBy\", (target) => groupBy(target, args)),\n };\n\n const meta = getModelMeta({ meta: engine.meta, model });\n return meta.isView ? readOnlyDelegate({ delegate, model: meta.name }) : delegate;\n}\n\n// ─── Write validation wrapper ────────────────────────────────────\n\nconst WRITE_METHODS = [\n \"create\",\n \"createMany\",\n \"createManyAndReturn\",\n \"update\",\n \"updateMany\",\n \"updateManyAndReturn\",\n \"upsert\",\n \"upsertMany\",\n] as const;\n\n/** Wrap a delegate's write methods through the Standard-Schema validators. */\nfunction withWriteValidation(params: {\n engine: Engine;\n delegate: ModelDelegate;\n model: string;\n validators: WriteValidators;\n}): ModelDelegate {\n const { engine, delegate, model, validators } = params;\n const meta = getModelMeta({ meta: engine.meta, model });\n const wrapped: Record<string, unknown> = { ...delegate };\n for (const method of WRITE_METHODS) {\n const original = delegate[method] as (args: ClientRow) => Promise<unknown>;\n wrapped[method] = (args: ClientRow): Promise<unknown> =>\n original(applyWriteValidators({ meta: engine.meta, model: meta, method, args, validators }) as ClientRow);\n }\n return wrapped as ModelDelegate;\n}\n\n// ─── Strict argument checking (opt-in) ──────────────────────\n\n/**\n * Wrap every delegate method in the strict-argument check (EPIC 2), installed\n * OUTSIDE the write-validation wrapper so it sees exactly what the caller\n * passed — before any wrapper rewrites, merges or drops a member.\n *\n * Refusals REJECT rather than throw synchronously: delegate methods promise a\n * Promise (`scoped.ts` does the same), and a refused root operation dispatches\n * no statement at all.\n */\nfunction withStrictArguments(params: { engine: Engine; delegate: ModelDelegate; model: string }): ModelDelegate {\n const { engine, delegate, model } = params;\n const meta = getModelMeta({ meta: engine.meta, model });\n const wrapped: Record<string, unknown> = { ...delegate };\n for (const [method, value] of Object.entries(wrapped)) {\n if (typeof value !== \"function\") continue;\n const original = value as (args?: ClientRow) => Promise<unknown>;\n wrapped[method] = (args?: ClientRow): Promise<unknown> => {\n let checked: ClientRow | undefined;\n try {\n checked = checkStrictArguments({ meta: engine.meta, model: meta, method, args });\n } catch (error) {\n return Promise.reject(error);\n }\n return original(checked);\n };\n }\n return wrapped as ModelDelegate;\n}\n\n// ─── Raw SQL ──────────────────────────────────────────────────────\n\n/**\n * Interleave a tagged template's literals with placeholders. Interpolated\n * values are ALWAYS bound as parameters — a template can never inject text.\n */\nfunction buildRawStatement(params: {\n dialect: SqlDialect;\n strings: TemplateStringsArray;\n values: readonly unknown[];\n}): { text: string; values: unknown[] } {\n const { dialect, strings, values } = params;\n const collector = new ParamCollector(dialect);\n let text = strings[0] ?? \"\";\n for (let index = 0; index < values.length; index++) {\n text += collector.add(values[index]) + (strings[index + 1] ?? \"\");\n }\n return { text, values: collector.values };\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\nfunction buildClient(params: { engine: Engine }): DynamicClient {\n const { engine } = params;\n\n const models: Record<string, ModelDelegate> = {};\n for (const model of engine.meta.models) {\n let delegate = createDelegate({ engine, model: model.name });\n const validators = engine.options?.validate;\n // Wrap whenever ANY model configures validators (F09): a root with none of\n // its own can still carry a nested write into a model that has them.\n if (validators !== undefined && Object.keys(validators).length > 0) {\n delegate = withWriteValidation({ engine, delegate, model: model.name, validators });\n }\n // Outermost wrapper: the strict check must see the caller's own arguments.\n // ON unless explicitly opted out — `undefined` (no options at all, or an\n // options object that never mentions it) is the strict default.\n if (engine.options?.strictArguments !== false) {\n delegate = withStrictArguments({ engine, delegate, model: model.name });\n }\n models[model.name] = delegate;\n models[model.clientName] = delegate;\n }\n\n const runRaw = async (\n method: string,\n statement: { text: string; values: unknown[] },\n decodeRows?: (rows: ClientRow[]) => void,\n ): Promise<{ rows: ClientRow[]; affectedRows: number }> => {\n const scope = beginOperation({ engine, kind: \"raw\", model: null, method });\n scope?.dispatch();\n const running = executeOperation({\n engine: scope === undefined ? engine : { ...engine, operation: scope },\n run: async (target) => {\n // Prefer an explicitly bound RAW route, preserving raw-session affinity\n // and array serialization. Older adapters keep their existing bound\n // affected-row fallback; executeUnsafe may legally use text escaping.\n const result = await runStatement<QueryResult>({\n engine: target,\n kind: \"raw\",\n model: null,\n method,\n text: statement.text,\n values: statement.values,\n rowCount: (value: QueryResult): number =>\n method.startsWith(\"$query\") ? value.rows.length : value.affectedRows,\n run: (): Promise<QueryResult> =>\n statement.values.length > 0\n ? target.adapter.executeRawBound !== undefined\n ? target.adapter.executeRawBound(statement)\n : runBoundAffected({ adapter: target.adapter, text: statement.text, values: statement.values })\n : target.adapter.executeUnsafe(statement),\n });\n decodeRows?.(result.rows);\n return result;\n },\n });\n if (scope === undefined) return await running;\n running.then(\n (value: QueryResult) => {\n scope.settle({\n outcome: \"success\",\n rowCount: method.startsWith(\"$query\") ? value.rows.length : value.affectedRows,\n });\n },\n (error: unknown) => {\n scope.settle({ outcome: \"failure\", error });\n },\n );\n return await running;\n };\n\n /**\n * Advisory locks ride the ordinary statement path: same telemetry, same\n * transaction deadline, same driver-error mapping. The refusals (unsupported\n * dialect, outside a transaction, malformed key) all happen BEFORE the\n * operation scope opens, so a refused call dispatches nothing.\n */\n const runAdvisoryLock = async (params: {\n method: AdvisoryLockMethod;\n options: AdvisoryLockOptions;\n }): Promise<boolean> => {\n const { method, options } = params;\n assertEngineActive({ engine });\n const statement = compileAdvisoryLock({\n dialect: engine.dialect,\n method,\n inTransaction: engine.inTransaction === true,\n options,\n });\n // Rendered directly: one statement per lock, and the shape cache mirrors\n // only the row-query grammar.\n const rendered = renderStatement({ dialect: engine.dialect, statement });\n const scope = beginOperation({ engine, kind: \"raw\", model: null, method });\n scope?.dispatch();\n const target = scope === undefined ? engine : { ...engine, operation: scope };\n const running = runStatement<QueryResult>({\n engine: target,\n kind: \"raw\",\n model: null,\n method,\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: QueryResult): number => value.rows.length,\n run: (): Promise<QueryResult> =>\n runBoundAffected({\n adapter: target.adapter,\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n }),\n });\n if (scope !== undefined) settleWith({ scope, running });\n const result = await running;\n // The blocking form returns void and has already succeeded by returning;\n // the try form's single boolean column IS the verdict.\n if (statement.wait === \"wait\") return true;\n return readAcquiredVerdict({ method, result });\n };\n\n /**\n * The array form: claim every operation SYNCHRONOUSLY (before their\n * auto-dispatch microtask fires), then run them sequentially against ONE\n * transaction engine — statement order is array order, a throw rolls the\n * whole batch back and settles the not-yet-run operations with the same\n * failure, results return positionally. Only un-dispatched QueryPromises\n * may join: anything else is already in flight on the non-transactional\n * adapter and wrapping it would fake atomicity.\n */\n const runOperations = (operations: readonly unknown[], options?: TransactionOptions): Promise<unknown[]> => {\n const scope = beginOperation({ engine, kind: \"transaction\", model: null, method: \"$transaction\" });\n const claimed: ClaimedOperation[] = [];\n let claimError: unknown = null;\n // Preflight ALL identities synchronously, before claiming even the first entry.\n let identityError = engineStateError({ engine });\n for (const operation of operations) {\n if (identityError === undefined && isQueryPromise(operation)) identityError = queryPromiseOwnerError({ value: operation, engine });\n }\n if (identityError !== undefined) {\n for (const operation of operations) {\n if (isQueryPromise(operation)) refuseQueryPromise({ value: operation, reason: identityError });\n }\n scope?.settle({ outcome: \"failure\", stage: \"refused\", error: identityError });\n return Promise.reject(identityError);\n }\n for (const operation of operations) {\n if (!(isQueryPromise(operation))) {\n claimError = new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n \"$transaction([...]) takes query promises from model delegate calls — a foreign promise is already running and cannot join the transaction\",\n });\n break;\n }\n try {\n claimed.push(claimQueryPromise({ value: operation }));\n } catch (error) {\n claimError = error;\n break;\n }\n }\n if (claimError !== null) {\n for (const entry of claimed) entry.abort(claimError);\n for (const operation of operations) {\n if (isQueryPromise(operation)) refuseQueryPromise({ value: operation, reason: claimError });\n }\n // F06: a refused batch dispatches NOTHING. Telemetry must not resurrect it\n // — one honest terminal outcome, no statements, no duration.\n scope?.settle({ outcome: \"failure\", stage: \"refused\", error: claimError });\n return Promise.reject(claimError);\n }\n scope?.dispatch();\n const batch = engineTransaction({ engine: scope === undefined ? engine : { ...engine, operation: scope }, options, run: async (txEngine) => {\n const results: unknown[] = [];\n let index = 0;\n try {\n for (; index < claimed.length; index++) {\n results.push(await (claimed[index] as ClaimedOperation).start(txEngine));\n }\n } catch (error) {\n for (let rest = index + 1; rest < claimed.length; rest++) {\n (claimed[rest] as ClaimedOperation).abort(error);\n }\n throw error;\n }\n return results;\n } }).catch((error: unknown) => {\n for (const entry of claimed) entry.abort(error);\n throw error;\n });\n if (scope !== undefined) settleWith({ scope, running: batch });\n return batch;\n };\n\n /** The callback form: one transaction operation, with every call inside it as a child. */\n const runCallbackTransaction = <T>(\n fn: (tx: DynamicClient) => Promise<T>,\n options?: TransactionOptions,\n ): Promise<T> => {\n const scope = beginOperation({ engine, kind: \"transaction\", model: null, method: \"$transaction\" });\n if (scope === undefined) {\n return engineTransaction({ engine, run: (target) => fn(buildClient({ engine: target })), options });\n }\n scope.dispatch();\n const running = engineTransaction({\n engine: { ...engine, operation: scope },\n run: (target) => fn(buildClient({ engine: { ...target, operation: scope } })),\n options,\n });\n // Commit/rollback failure is the TRANSACTION's outcome; a statement that\n // succeeded inside it never claimed the commit.\n settleWith({ scope, running });\n return running;\n };\n\n const client: DynamicClient = {\n $models: models,\n\n $on: (event: \"query\", listener: (event: QueryEvent) => void): (() => void) => {\n if (event !== \"query\") {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `unknown client event \"${String(event)}\" — supported: \"query\"`,\n meta: { event },\n });\n }\n engine.listeners.add(listener);\n return () => {\n engine.listeners.delete(listener);\n };\n },\n\n $transaction: (<T>(\n fnOrOperations: ((tx: DynamicClient) => Promise<T>) | readonly unknown[],\n options?: TransactionOptions,\n ): Promise<T | unknown[]> =>\n Array.isArray(fnOrOperations)\n ? runOperations(fnOrOperations, options)\n : runCallbackTransaction(fnOrOperations as (tx: DynamicClient) => Promise<T>, options)) as DynamicClient[\"$transaction\"],\n\n $querySql: async <T>({ query, decoder }: { query: SqlFragment; decoder: ResultDecoder<T> }): Promise<T[]> => {\n assertEngineActive({ engine });\n if (decoder === null || typeof decoder !== \"object\" || typeof decoder.decode !== \"function\") throw new VibeError({ code: \"VIBE_VALIDATION\", message: \"$querySql requires an explicit result decoder\" });\n const statement = compileSql({ dialect: engine.dialect, query });\n let output: T[] = [];\n await runRaw(\"$querySql\", statement, (rows) => {\n output = rows.map((value) => decoder.decode({ value, dialect: engine.dialect.name, ...(engine.adapter.wire === undefined ? {} : { wire: engine.adapter.wire }) }));\n });\n return output;\n },\n $executeSql: async ({ query }: { query: SqlFragment }): Promise<number> => {\n assertEngineActive({ engine });\n return (await runRaw(\"$executeSql\", compileSql({ dialect: engine.dialect, query }))).affectedRows;\n },\n\n // Raw results are NOT decoded: without a model there is no field→column\n // mapping and no codec to apply. Values arrive as the driver produced them.\n $queryRaw: async (strings: TemplateStringsArray, ...values: unknown[]): Promise<ClientRow[]> =>\n (await runRaw(\"$queryRaw\", buildRawStatement({ dialect: engine.dialect, strings, values }))).rows,\n\n $executeRaw: async (strings: TemplateStringsArray, ...values: unknown[]): Promise<number> =>\n (await runRaw(\"$executeRaw\", buildRawStatement({ dialect: engine.dialect, strings, values }))).affectedRows,\n\n $queryRawUnsafe: async (text: string, ...values: unknown[]): Promise<ClientRow[]> =>\n (await runRaw(\"$queryRawUnsafe\", { text, values })).rows,\n\n $executeRawUnsafe: async (text: string, ...values: unknown[]): Promise<number> =>\n (await runRaw(\"$executeRawUnsafe\", { text, values })).affectedRows,\n\n $advisoryLock: async (options: AdvisoryLockOptions): Promise<void> => {\n await runAdvisoryLock({ method: \"$advisoryLock\", options });\n },\n\n $tryAdvisoryLock: (options: AdvisoryLockOptions): Promise<boolean> =>\n runAdvisoryLock({ method: \"$tryAdvisoryLock\", options }),\n\n $connect: async (): Promise<void> => {\n assertEngineActive({ engine, requireContext: false });\n if (engine.borrowedModule === true) throw new VibeError({ code: \"VIBE_VALIDATION\", message: \"A package module borrows its adapter; the application owns connection lifecycle\", meta: { reason: \"module_borrowed_lifecycle\", method: \"$connect\" } });\n if (engine.inTransaction === true) throw transactionLifecycleRefusal({ method: \"$connect\" });\n if (engine.rlsSchema !== undefined) {\n await engine.adapter.connect();\n await engineTransaction({ engine, requireContext: false, run: async (target) => {\n for (const hook of engine.connectHooks ?? []) {\n await hook({ execute: (query) => target.adapter.execute({ text: query.text, values: [...(query.values ?? [])] }) });\n }\n } });\n return;\n }\n await engine.adapter.connect();\n for (const hook of engine.connectHooks ?? []) {\n await hook({\n execute: (execParams) =>\n engine.adapter.execute({ text: execParams.text, values: [...(execParams.values ?? [])] }),\n });\n }\n },\n $disconnect: async (): Promise<void> => {\n assertEngineActive({ engine, requireContext: false });\n if (engine.borrowedModule === true) throw new VibeError({ code: \"VIBE_VALIDATION\", message: \"A package module borrows its adapter; the application owns connection lifecycle\", meta: { reason: \"module_borrowed_lifecycle\", method: \"$disconnect\" } });\n if (engine.inTransaction === true) throw transactionLifecycleRefusal({ method: \"$disconnect\" });\n // Outstanding EXPLAINs run on the pool, so they settle (bounded) BEFORE\n // the pool closes — never an unawaited statement, never a hang.\n await engine.diagnostics?.flush();\n await engine.adapter.disconnect();\n // Flush what we buffered — and NOTHING else. The provider behind a shared\n // exporter belongs to the host; disconnecting a database client must never\n // shut it down.\n await engine.telemetry?.flush();\n },\n };\n\n // Ergonomic access (`client.user.findMany()`). The generated client declares\n // these properties with precise types; here they are attached at runtime only.\n for (const model of engine.meta.models) {\n Object.defineProperty(client, model.clientName, {\n value: models[model.clientName],\n enumerable: true,\n });\n }\n\n attachExtensionMounts({ engine, client, models });\n attachDefineView({ client, meta: engine.meta, models });\n // Tenant scoping ($scoped) reads client.$models lazily at CALL time, so it\n // sees the final delegates too; on @@policy schemas it refuses outright,\n // which keeps the two scoping layers from ever composing silently.\n const wrapDelegate = engine.options?.strictArguments !== false\n ? (params: { model: string; delegate: ModelDelegate }): ModelDelegate => withStrictArguments({ engine, ...params })\n : undefined;\n if (engine.rlsSchema === undefined) attachScoped({ client, meta: engine.meta, ...(wrapDelegate === undefined ? {} : { wrapDelegate }) });\n // Policy scoping LAST: it must see the final delegates (extension mounts\n // included) so scoped extension surfaces inherit the rewrite; fail-closed\n // guards then land on the finished base client. No-op without @@policy.\n if (engine.rlsSchema === undefined) {\n registerPolicyOperations({ client, factory: (run) => createQueryPromise({\n engine,\n model: null,\n method: \"$policyOperation\",\n kind: \"transaction\",\n run: (target) => engineTransaction({ engine: target, run: (transactionEngine) => run(buildClient({ engine: transactionEngine })) }),\n }) });\n attachPolicy({ client, meta: engine.meta, ...(wrapDelegate === undefined ? {} : { wrapDelegate }) });\n attachReadOnly({\n client,\n meta: engine.meta,\n ...(engine.extensionMounts === undefined ? {} : { mounts: engine.extensionMounts }),\n operations: LAZY_OPERATIONS,\n });\n }\n else {\n const refuseLegacy = (): never => {\n throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Native row-level security cannot be combined with application policy or tenant scoping\" });\n };\n Object.defineProperties(client, {\n $withContext: { enumerable: true, value: (context: Readonly<Record<string, unknown>>): DynamicClient => {\n assertEngineActive({ engine, requireContext: false });\n if (engine.inTransaction) throw new RlsContextError({ reason: \"conflicting\" });\n return buildClient({ engine: { ...engine, context: bindRlsContext({ schema: engine.rlsSchema!, dialect: engine.dialect, context }) } });\n } },\n $scoped: { value: refuseLegacy },\n $withPolicy: { value: refuseLegacy },\n $bypassPolicy: { value: refuseLegacy },\n });\n // Not on the UNBOUND root: it cannot reach a row at all until an identity\n // is bound, and its generated type has no query surface to restrict.\n if (engine.context !== undefined) {\n attachReadOnly({\n client,\n meta: engine.meta,\n ...(engine.extensionMounts === undefined ? {} : { mounts: engine.extensionMounts }),\n operations: LAZY_OPERATIONS,\n });\n }\n for (const delegate of Object.values(models)) Object.freeze(delegate);\n Object.freeze(models);\n Object.freeze(client);\n }\n\n registerModuleBinder({ client, bind: ({ schema, manifest }) => {\n assertEngineActive({ engine, requireContext: false });\n if (engine.rlsSchema !== undefined || engine.meta.models.some((model) => model.policy !== undefined)) throw new VibeError({ code: \"VIBE_CONFIG\", message: `Module ${manifest.id} cannot attach models to a policy or native-RLS context`, meta: { reason: \"module_restricted_context\", moduleId: manifest.id } });\n if (manifest.dialect !== engine.dialect.name) throw new VibeError({ code: \"VIBE_UNSUPPORTED_CAPABILITY\", message: `Module ${manifest.id} requires ${manifest.dialect}, received ${engine.dialect.name}`, meta: { reason: \"module_dialect\", moduleId: manifest.id } });\n const previous = engine.moduleManifests.get(manifest.id);\n if (previous !== undefined && (previous.schemaChecksum !== manifest.schemaChecksum || previous.revision !== manifest.revision || previous.contract !== manifest.contract)) throw new VibeError({ code: \"VIBE_CONFIG\", message: `Module ${manifest.id} was already bound with a different manifest; use compatible package artifacts`, meta: { reason: \"module_manifest_conflict\", moduleId: manifest.id, revision: manifest.revision } });\n let meta = moduleMetadata.get(schema);\n if (meta === undefined) {\n meta = buildRuntimeMeta({ schema });\n registerRestrictedSqlSchema({ meta, schema });\n moduleMetadata.set(schema, meta);\n }\n engine.moduleManifests.set(manifest.id, manifest);\n const { validate: _validate, ...options } = engine.options;\n return buildClient({ engine: { ...engine, meta, options, borrowedModule: true, extensionMounts: [], connectHooks: [], renderCache: new StatementRenderCache() } });\n } });\n return client;\n}\n\n// ─── Extension mounts (D9 — baked surfaces) ────────────────────\n\nfunction makeMountContext(params: {\n engine: Engine;\n extension: string;\n model: ModelMeta | null;\n}): ExtensionMountContext {\n const { engine, extension, model } = params;\n return {\n extension,\n dialect: engine.dialect,\n provider: engine.adapter.provider,\n meta: engine.meta,\n model,\n executeRows: async ({ text, values, method }) => {\n const scope = beginOperation({\n engine,\n kind: \"extension\",\n model: model?.name ?? null,\n method: method ?? extension,\n });\n scope?.dispatch();\n const running = executeOperation({\n engine: scope === undefined ? engine : { ...engine, operation: scope },\n run: async (target) => {\n const rows = await runStatement<ClientRow[]>({\n engine: target,\n kind: \"extension\",\n model: model?.name ?? null,\n method: method ?? extension,\n text,\n values,\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n target.adapter.execute({\n text,\n values: bindValues({ adapter: target.adapter, values: [...values] }),\n }),\n });\n return model === null\n ? rows\n : materializeRows({ dialect: target.dialect.name, model, rows, wire: target.adapter.wire });\n },\n });\n if (scope !== undefined) settleWith({ scope, running });\n return await running;\n },\n compileWhere: ({ where, model: modelName, qualify }) => {\n const target =\n modelName === undefined\n ? model\n : getModelMeta({ meta: engine.meta, model: modelName });\n if (target === null) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `extension \"${extension}\" compiled a where with no model in scope`,\n meta: { extension },\n });\n }\n return compileWhere({\n dialect: engine.dialect,\n meta: engine.meta,\n model: target,\n where,\n ...(qualify === undefined ? {} : { qualify }),\n });\n },\n };\n}\n\n/** Recreate a mount on the operation engine, so all of a method's statements share its identity. */\nfunction createMountSurface(params: { engine: Engine; mount: ClientExtensionMount; model: ModelMeta | null }): unknown {\n const { engine, mount, model } = params;\n const original = mount.create(makeMountContext({ engine, extension: mount.extension, model }));\n if (engine.rlsSchema === undefined) return original;\n const wrap = (value: unknown, path: readonly PropertyKey[]): unknown => {\n if (typeof value === \"function\") {\n return (...args: unknown[]): Promise<unknown> => createQueryPromise({ engine, run: async (target) => {\n let current = mount.create(makeMountContext({ engine: target, extension: mount.extension, model }));\n let receiver: unknown = undefined;\n for (const key of path) {\n receiver = current;\n if (current === null || (typeof current !== \"object\" && typeof current !== \"function\")) throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Extension mount changed its method shape\" });\n current = Reflect.get(current, key);\n }\n if (typeof current !== \"function\") throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Extension mount changed its method shape\" });\n return Reflect.apply(current, receiver, args);\n } });\n }\n if (value === null || typeof value !== \"object\") return value;\n if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {\n throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Native RLS extension mounts must expose plain objects and methods\" });\n }\n const result: Record<PropertyKey, unknown> = {};\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key)!;\n if (!(\"value\" in descriptor)) throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Native RLS extension mount accessors are unsupported\" });\n Object.defineProperty(result, key, { value: wrap(descriptor.value, [...path, key]), enumerable: descriptor.enumerable });\n }\n return Object.freeze(result);\n };\n return wrap(original, []);\n}\n\n/**\n * Attach the baked extension surfaces. Runs on EVERY client build — the\n * `$transaction` path rebuilds the client over the tx adapter, so mounted\n * surfaces execute on the transaction connection like core delegates do.\n */\nfunction attachExtensionMounts(params: {\n engine: Engine;\n client: DynamicClient;\n models: Record<string, ModelDelegate>;\n}): void {\n const { engine, client, models } = params;\n const mounts = engine.extensionMounts;\n if (mounts === undefined) return;\n\n for (const mount of mounts) {\n if (mount.scope === \"model\") {\n const model = getModelMeta({ meta: engine.meta, model: mount.model ?? \"\" });\n const delegate = models[model.name];\n if (delegate === undefined || mount.property in delegate) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `extension \"${mount.extension}\" cannot mount \"${mount.property}\" on ${model.name} — the name is taken`,\n meta: { extension: mount.extension, model: model.name, property: mount.property },\n });\n }\n const value = createMountSurface({ engine, mount, model });\n // configurable: a LATER layer (attachPolicy's fail-closed guards) must be\n // able to redefine this property on the same delegate object. The client's\n // own `client.<model>` property is non-configurable and holds this exact\n // object, so guarding can only happen in place (F05).\n Object.defineProperty(delegate, mount.property, { value, enumerable: true, configurable: true });\n continue;\n }\n\n if (!mount.property.startsWith(\"$\") || mount.property in client) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `extension \"${mount.extension}\" cannot mount client property \"${mount.property}\" — root mounts are $-prefixed and must not collide`,\n meta: { extension: mount.extension, property: mount.property },\n });\n }\n const value = createMountSurface({ engine, mount, model: null });\n Object.defineProperty(client, mount.property, { value, enumerable: true });\n }\n}\n\n/**\n * Build a client for a schema over an adapter.\n *\n * The adapter chooses the dialect: the same IR runs on postgres, sqlite or\n * mysql, and every dialect difference is resolved by `@vibeorm/sql` and the\n * codec table rather than by branching here.\n *\n * @example\n * const db = createClient({ schema, adapter });\n * const users = await db.$models.user.findMany({ where: { active: true } });\n */\nexport function createClient(params: {\n schema: SchemaIR;\n adapter: DatabaseAdapter;\n options?: ClientOptions;\n /** Extension wiring — baked mounts + manifest from the generated client, live instances from the caller. */\n extensions?: ClientExtensionsOptions;\n /** Computed-field wiring — baked manifest from the generated client, live specs from the caller. */\n computed?: ClientComputedOptions;\n}): DynamicClient {\n const { schema, adapter, options, extensions, computed } = params;\n const dialectName: Dialect = adapter.dialect;\n // Built once per client and shared with every transaction engine; invalid\n // telemetry configuration fails here, not at the first query.\n const telemetry =\n options?.telemetry === undefined ? undefined : createTelemetryRecorder({ options: options.telemetry });\n // Refused here rather than at the first include: a bad concurrency is a\n // configuration mistake, and this is the earliest point it is knowable.\n resolveRelationConcurrency({ concurrency: options?.relationLoading?.concurrency });\n // Same for diagnostics: the env switch and the option are validated once,\n // here; with neither present no hook exists and runStatement pays nothing.\n const diagnosticsConfig = resolveStatementDiagnostics({\n options: options?.diagnostics,\n env: process.env[STATEMENT_DIAGNOSTICS_DEFAULTS.envVariable],\n });\n const diagnostics =\n diagnosticsConfig === undefined\n ? undefined\n : createStatementDiagnostics({ config: diagnosticsConfig, adapter, dialect: getSqlDialect({ dialect: dialectName }) });\n if (\n diagnosticsConfig !== undefined &&\n diagnosticsConfig.explain === \"analyze\" &&\n diagnosticsConfig.slowerThanMs < STATEMENT_DIAGNOSTICS_DEFAULTS.analyzeWarnBelowMs\n ) {\n console.warn(\n `[vibeorm] diagnostics: explain \"analyze\" with slowerThanMs ${diagnosticsConfig.slowerThanMs} re-executes every read statement under EXPLAIN ANALYZE — set a threshold, and never use this against production`,\n );\n }\n if (schema.rls !== undefined) {\n const dialect = getSqlDialect({ dialect: dialectName });\n if (!dialect.capabilities.nativeRowLevelSecurity) throw unsupportedCapability({ dialect: dialectName, feature: \"nativeRowLevelSecurity\" });\n assertValidSchemaIR({ schema });\n for (const model of schema.models) {\n if (model.rls !== \"unprotected\") renderRlsPolicy({ dialect, schema, model: model.name });\n }\n const role = options?.nativeRls?.runtimeRole;\n if (adapter.provider === \"pglite\") {\n if (typeof role !== \"string\" || role.length === 0 || role.includes(\"\\0\")) throw new VibeError({ code: \"VIBE_CONFIG\", message: \"PGlite native row-level security requires a pre-existing restricted runtimeRole; embedded binding is not a boundary against the host process\" });\n } else if (role !== undefined) {\n throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Server native row-level security must use the runtime login role, not a runtimeRole switch\" });\n }\n }\n\n // Staleness gate (extensions.md §3.2): a baked manifest must match the live\n // extension list BEFORE any query runs.\n if (extensions?.manifest !== undefined) {\n assertExtensionManifest({ manifest: extensions.manifest, instances: extensions.instances });\n }\n // Same gate for computed fields: the generated .d.ts promised these types.\n if (computed?.manifest !== undefined) {\n assertComputedManifest({ manifest: computed.manifest, specs: computed.specs });\n }\n // A client generated WITHOUT computed fields spreads a stray `computed`\n // option into ClientOptions — refuse it instead of silently ignoring it.\n if (\n computed === undefined &&\n options !== undefined &&\n (options as Record<string, unknown>)[\"computed\"] !== undefined\n ) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message:\n \"this client was generated without computed fields — declare them in vibeorm.config.ts and re-run vibeorm generate\",\n meta: {},\n });\n }\n\n const instances = extensions?.instances ?? [];\n const operatorMap =\n instances.length === 0\n ? null\n : buildExtensionOperatorMap({ instances, dialect: dialectName, provider: adapter.provider });\n const connectHooks =\n instances.length === 0\n ? []\n : buildConnectHooks({ instances, dialect: dialectName, provider: adapter.provider });\n\n const baseMeta = buildRuntimeMeta({\n schema,\n ...(computed?.specs === undefined ? {} : { computed: computed.specs }),\n });\n const meta: RuntimeMeta =\n operatorMap === null ? baseMeta : { ...baseMeta, extensionOperators: operatorMap };\n registerRestrictedSqlSchema({ meta, schema });\n\n return buildClient({\n engine: {\n rootIdentity: Object.freeze({}),\n moduleManifests: new Map(),\n ...(schema.rls === undefined ? {} : { rlsSchema: schema }),\n meta,\n adapter,\n dialect: getSqlDialect({ dialect: dialectName }),\n options: schema.rls === undefined ? options ?? {} : Object.freeze({ ...options, nativeRls: Object.freeze({ ...options?.nativeRls }) }),\n listeners: new Set(),\n renderCache: new StatementRenderCache(),\n ...(telemetry === undefined ? {} : { telemetry }),\n ...(diagnostics === undefined ? {} : { diagnostics }),\n ...(extensions?.mounts === undefined ? {} : { extensionMounts: extensions.mounts }),\n ...(connectHooks.length === 0 ? {} : { connectHooks }),\n },\n });\n}\n",
|
|
39
|
+
"import { registerModuleBinder } from \"./module-context.ts\";\nimport type { DatabaseModuleManifest } from \"@vibeorm/schema\";\nimport { compileSql } from \"@vibeorm/sql\";\nimport type { SqlFragment, ResultDecoder } from \"@vibeorm/sql\";\nimport { containsSqlFragment, restrictedSqlArgs, registerRestrictedSqlSchema } from \"./sql-access.ts\";\nimport { readOnlyRefusal } from \"./read-only.ts\";\nimport { registerPolicyOperations } from \"./policy-operation.ts\";\n/**\n * The dynamic client: model delegates over a `DatabaseAdapter`, built from the\n * Schema IR at runtime.\n *\n * This is the engine the generated client wraps in P2 proper. It is deliberately\n * untyped-per-model — the generator emits a `.d.ts` that declares each delegate\n * with precise argument and result types, and casts to it. Nothing about the\n * shape of a query lives here: `query-builder.ts` builds statements,\n * `@vibeorm/sql` renders them, `codecs.ts` moves values across the wire,\n * `relation-loader.ts` attaches included relations, `nested-writes.ts`\n * orchestrates relation verbs inside create/update data.\n *\n * Execution split:\n * - row-returning statements use `adapter.execute` (the cached hot path),\n * - count-returning mutations (createMany/updateMany/deleteMany) use\n * `adapter.executeUnsafe`, the only place the frozen adapter contract\n * surfaces `affectedRows`.\n */\n\nimport { RlsContextError, VibeError, assertValidSchemaIR, unsupportedCapability } from \"@vibeorm/schema\";\nimport type { Dialect, SchemaIR } from \"@vibeorm/schema\";\nimport { ADVISORY_LOCK_RESULT_COLUMN, ParamCollector, getSqlDialect, renderRlsContext, renderRlsPolicy, renderRlsRole, renderStatement } from \"@vibeorm/sql\";\nimport type { RowLock, SelectStatement, SqlDialect, SqlStatement } from \"@vibeorm/sql\";\nimport { compileAdvisoryLock } from \"./advisory-lock.ts\";\nimport type { AdvisoryLockMethod, AdvisoryLockOptions } from \"./advisory-lock.ts\";\nimport type { DatabaseAdapter, QueryResult, TransactionOptions } from \"./adapter.ts\";\nimport { decodeAggregateValue, decodeValue, materializeRows } from \"./codecs.ts\";\nimport { StatementRenderCache, renderStatementCached } from \"./render-cache.ts\";\nimport { buildRuntimeMeta, getModelMeta } from \"./model-meta.ts\";\nimport type { FieldMeta, ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\nimport { COUNT_ALIAS, buildQuery, resolveResultShape, upsertUsesNativeStatement } from \"./query-builder.ts\";\nimport type { AggregateSpec, QueryMethod, QueryPlan, RelationStrategy, ResortKey } from \"./query-builder.ts\";\nimport { attachLateralRelations, attachRelations, resolveRelationConcurrency } from \"./relation-loader.ts\";\nimport type { RelationExecutor } from \"./relation-loader.ts\";\nimport { createWithNested, hasNestedWrites, updateWithNested } from \"./nested-writes.ts\";\nimport type { StatementRunner, WriteContext } from \"./nested-writes.ts\";\nimport type { RelationSelection } from \"./relation-plan.ts\";\nimport { applyComputedFields, assertComputedManifest } from \"./computed.ts\";\nimport type { ClientComputedOptions } from \"./computed.ts\";\nimport {\n assertExtensionManifest,\n buildConnectHooks,\n buildExtensionOperatorMap,\n} from \"./extensions.ts\";\nimport type {\n ClientExtensionMount,\n ClientExtensionsOptions,\n ConnectHook,\n ExtensionMountContext,\n} from \"./extensions.ts\";\nimport { compileWhere } from \"./query-builder.ts\";\nimport { attachDefineView } from \"./views.ts\";\nimport type { DefineViewFn } from \"./views.ts\";\nimport { checkStrictArguments } from \"./strict-args.ts\";\nimport { applyWriteValidators } from \"./validators.ts\";\nimport type { WriteValidators } from \"./validators.ts\";\nimport { attachPolicy } from \"./policy.ts\";\nimport type { PolicyContextValue } from \"./policy.ts\";\nimport { attachScoped } from \"./scoped.ts\";\nimport type { ScopedClientConfig } from \"./scoped.ts\";\nimport { attachReadOnly } from \"./read-only.ts\";\nimport type { LazyOperationBridge } from \"./read-only.ts\";\nimport { bindRlsContext } from \"./rls-context.ts\";\nimport type { BoundRlsContext } from \"./rls-context.ts\";\nimport { assertNativeRlsReady, inspectNativeRlsTransaction } from \"./rls-readiness.ts\";\nimport { affectedRowsAreRowCounts } from \"./bulk-upsert.ts\";\nimport type { UpsertManyResult } from \"./bulk-upsert.ts\";\nimport { createTelemetryRecorder } from \"./telemetry/recorder.ts\";\nimport type { TelemetryOperationScope, TelemetryRecorder } from \"./telemetry/recorder.ts\";\nimport { instrumentStatement } from \"./telemetry/statement.ts\";\nimport type { StatementReport } from \"./telemetry/statement.ts\";\nimport {\n STATEMENT_DIAGNOSTICS_DEFAULTS,\n createStatementDiagnostics,\n resolveStatementDiagnostics,\n} from \"./diagnostics/statement-diagnostics.ts\";\nimport type { StatementDiagnosticsHook, StatementDiagnosticsOptions } from \"./diagnostics/statement-diagnostics.ts\";\nimport type { TelemetryOperationKind, TelemetryOptions, TelemetryStatementKind } from \"./telemetry/types.ts\";\n\n// ─── Public types ─────────────────────────────────────────────────\n\n/** One executed statement, reported to `ClientOptions.onQuery`. */\nexport type QueryEvent = {\n /** Model name, or `null` for raw queries. */\n readonly model: string | null;\n /** ORM method, or `\"$queryRaw\"` / `\"$executeRaw\"`. */\n readonly method: string;\n readonly text: string;\n readonly values: readonly unknown[];\n readonly durationMs: number;\n};\n\nexport type ClientOptions = {\n /** Trusted infrastructure configuration. PGlite requires a pre-existing restricted role;\n * embedded role binding is not a security boundary against the host process.\n * Desired policy deparse is probed once per backend generation (bounded cache);\n * live expressions/privileges are still checked every transaction. Privileged\n * dependency changes retaining identical deparse need a fresh client/doctor check. */\n readonly nativeRls?: { readonly runtimeRole?: string };\n /** Called after every statement — logging, tracing, test assertions. */\n readonly onQuery?: (event: QueryEvent) => void;\n /**\n * Default relation-loading strategy: `\"query\"` (batched WHERE-IN, portable,\n * the default) or `\"join\"` (LATERAL + JSON aggregation, postgres/pglite\n * only). A per-query `relationStrategy` argument overrides it.\n */\n readonly relationStrategy?: RelationStrategy;\n /**\n * Relation loading for the `\"query\"` strategy. `concurrency` (default 1) is\n * how many of ONE query's relation statements may be in flight at once:\n * sibling relations of a level, `_count` entries and a relation's key chunks.\n *\n * It is a LATENCY option, worth setting against a remote database with wide\n * include trees — 4 siblings at 5 ms of network each cost 20 ms serially and\n * 5 ms concurrently. It is ignored inside `$transaction` (those statements\n * share one connection and must stay ordered), and it buys nothing on an\n * embedded adapter or when the JavaScript thread is already the ceiling.\n * Above 1 the connection pool must be able to lend that many connections.\n */\n readonly relationLoading?: { readonly concurrency?: number };\n /**\n * Append the primary key to ORDER BY when a find has no explicit orderBy\n * (default false) — deterministic row order at the cost of a sort. v1 parity.\n */\n readonly defaultOrderByPk?: boolean;\n /**\n * Append the primary key as a tie-breaker to `distinct` ordering (default\n * TRUE) — without it, WHICH row represents each distinct key is unspecified.\n * v1 parity.\n */\n readonly distinctOrderByPk?: boolean;\n /**\n * Opt-in write-boundary validators (Standard Schema, per model × field):\n * `{ User: { settings: zodSchema } }`. Run on every write path (nested\n * creates included) before encoding; failure throws VIBE_VALIDATION with\n * the validator's issues in `meta`. Reads are never taxed.\n */\n readonly validate?: WriteValidators;\n /**\n * Opt-in operation tracing. One event per public ORM call, with the\n * statements it ran; parameter values are redacted and raw SQL text is not\n * captured unless separately asked for. The exporter is the host's — a throw\n * from it can never change a database outcome, and `$disconnect()` flushes it\n * but never shuts it down.\n */\n readonly telemetry?: TelemetryOptions;\n /**\n * Statement diagnostics: a slow-statement log with an automatic `EXPLAIN`.\n * Every statement slower than `slowerThanMs` (default 0 = all) is handed to\n * `sink` (default: one `console.warn` line) with its duration; with\n * `explain: \"estimate\"` or `\"analyze\"` a plan summary is attached on\n * PostgreSQL/PGlite for read statements that ran outside a transaction —\n * `\"analyze\"` EXECUTES the statement again, inside a read-only transaction\n * on its own pooled connection, after the caller's promise has settled.\n * `VIBEORM_DIAGNOSTICS=<explain>[:<slowerThanMs>]` (e.g. `analyze:5`)\n * switches it on for a run; the explicit option wins field by field. Local\n * runs only — never production.\n */\n readonly diagnostics?: StatementDiagnosticsOptions;\n /**\n * Strict argument handling (EPIC 2), **on by default**: an explicit\n * `undefined` anywhere in ORM argument syntax is refused BEFORE a statement\n * is built, instead of silently dropping the property (which widens a filter\n * or loses a write). `SKIP` (`@vibeorm/runtime`) omits a property\n * deliberately.\n *\n * Set `false` to opt OUT and restore legacy/Prisma semantics, where an\n * explicit `undefined` member simply vanishes. Only an explicit `false` does\n * that: an options object that does not mention this stays strict.\n */\n readonly strictArguments?: boolean;\n};\n\n/** Rows are plain objects keyed by field name; the generated client narrows them. */\nexport type ClientRow = Record<string, unknown>;\n\n/** Result of the count-returning batch methods. */\nexport type BatchResult = { readonly count: number };\n\n/**\n * A model's methods. Arguments and results are intentionally broad here — the\n * generated `.d.ts` replaces this surface with precise per-model types, and\n * keeping the runtime free of inference is what holds the type-cost budget\n * (constitution rule 2).\n */\nexport type ModelDelegate = {\n readonly findMany: (args?: ClientRow) => Promise<ClientRow[]>;\n readonly findFirst: (args?: ClientRow) => Promise<ClientRow | null>;\n readonly findFirstOrThrow: (args?: ClientRow) => Promise<ClientRow>;\n readonly findUnique: (args: ClientRow) => Promise<ClientRow | null>;\n readonly findUniqueOrThrow: (args: ClientRow) => Promise<ClientRow>;\n readonly create: (args: ClientRow) => Promise<ClientRow | null>;\n readonly createMany: (args: ClientRow) => Promise<BatchResult>;\n readonly createManyAndReturn: (args: ClientRow) => Promise<ClientRow[]>;\n readonly update: (args: ClientRow) => Promise<ClientRow>;\n readonly updateMany: (args: ClientRow) => Promise<BatchResult>;\n /**\n * Bulk update that returns the rows it changed (dialects with RETURNING).\n *\n * OPTIONAL on purpose: the base client always provides it, but the rewriting\n * handles (`$scoped`, `$withPolicy`) build explicit delegate literals and do\n * not implement it yet, and a required member would make the type claim a\n * method those handles do not have. See notes-epic2.md `## Hand-off`.\n */\n readonly updateManyAndReturn: (args: ClientRow) => Promise<ClientRow[]>;\n readonly upsertMany: (args: ClientRow) => Promise<UpsertManyResult>;\n readonly upsert: (args: ClientRow) => Promise<ClientRow>;\n readonly delete: (args: ClientRow) => Promise<ClientRow>;\n readonly deleteMany: (args?: ClientRow) => Promise<BatchResult>;\n /** Plain form returns a number; `{ select: { _all, field } }` returns per-key counts. */\n readonly count: (args?: ClientRow) => Promise<number | Record<string, number>>;\n readonly aggregate: (args: ClientRow) => Promise<ClientRow>;\n readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;\n};\n\n/**\n * The read half of a model's methods — the shape a `$readOnly` handle exposes,\n * and the shape `$defineView` needs (a view reads and never writes).\n *\n * Written out rather than derived from `ModelDelegate` with `Omit`: the\n * generated `.d.ts` mirrors this member list per model, and a pre-resolved\n * object type costs the consumer's tsserver nothing (constitution rule 2).\n */\nexport type ReadOnlyModelDelegate = {\n readonly findMany: (args?: ClientRow) => Promise<ClientRow[]>;\n readonly findFirst: (args?: ClientRow) => Promise<ClientRow | null>;\n readonly findFirstOrThrow: (args?: ClientRow) => Promise<ClientRow>;\n readonly findUnique: (args: ClientRow) => Promise<ClientRow | null>;\n readonly findUniqueOrThrow: (args: ClientRow) => Promise<ClientRow>;\n readonly count: (args?: ClientRow) => Promise<number | Record<string, number>>;\n readonly aggregate: (args: ClientRow) => Promise<ClientRow>;\n readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;\n};\n\n/**\n * A read-only client handle (`$readOnly`). CLOSED under every handle it can\n * produce: transactions, views, scoped and policy handles built from it are\n * read-only too, so no route recovers a writable client.\n *\n * Raw SQL, connection lifecycle and advisory locks are absent by design, and\n * so is anything the access table in `read-only.ts` does not classify.\n */\nexport type ReadOnlyClient = {\n readonly $models: Readonly<Record<string, ReadOnlyModelDelegate>>;\n readonly $on: (event: \"query\", listener: (event: QueryEvent) => void) => () => void;\n /** One transaction of reads. The callback's handle is read-only; the array form takes read operations only. */\n readonly $transaction: {\n <T>(fn: (tx: ReadOnlyClient) => Promise<T>, options?: TransactionOptions): Promise<T>;\n <T extends readonly unknown[]>(\n operations: readonly [...T],\n options?: TransactionOptions,\n ): Promise<{ -readonly [K in keyof T]: Awaited<T[K]> }>;\n };\n readonly $defineView?: DefineViewFn;\n readonly $scoped?: (config: ScopedClientConfig) => ReadOnlyClient;\n readonly $withPolicy?: (context: Readonly<Record<string, PolicyContextValue>>) => ReadOnlyClient;\n readonly $bypassPolicy?: () => ReadOnlyClient;\n /** Idempotent: restricting an already-restricted handle returns the same handle. */\n readonly $readOnly: () => ReadOnlyClient;\n};\n\n/**\n * The client. Delegates are also attached as own properties under their\n * camelCase names (`client.user.findMany()`); the type surfaces them through\n * `$models` because a plain index signature would erase the `$`-methods.\n * Model names can never collide with those: every reserved client name is\n * `$`-prefixed (see `RESERVED_CLIENT_NAMES` in @vibeorm/schema).\n */\nexport type DynamicClient = {\n /** Copy and freeze the required native-RLS identity without acquiring a connection. */\n readonly $withContext?: (context: Readonly<Record<string, unknown>>) => DynamicClient;\n /** Delegates keyed by BOTH camelCase client name and model name. */\n readonly $models: Readonly<Record<string, ModelDelegate>>;\n /**\n * Subscribe to client events (`\"query\"` fires after every statement, with\n * the same payload as `ClientOptions.onQuery` — both fire). Returns an\n * unsubscribe function. Transaction clients share the parent's listeners.\n */\n readonly $on: (event: \"query\", listener: (event: QueryEvent) => void) => () => void;\n /**\n * Run work in ONE transaction. Callback form: `fn` receives a transaction\n * client; everything it runs rides the same BEGIN/COMMIT and a throw rolls\n * back. Array form (Prisma parity): UN-AWAITED delegate calls — delegate\n * methods return LAZY query promises that only dispatch on await — run\n * SEQUENTIALLY inside one transaction, results returned positionally.\n */\n readonly $transaction: {\n <T>(fn: (tx: DynamicClient) => Promise<T>, options?: TransactionOptions): Promise<T>;\n <T extends readonly unknown[]>(\n operations: readonly [...T],\n options?: TransactionOptions,\n ): Promise<{ -readonly [K in keyof T]: Awaited<T[K]> }>;\n };\n /** Tagged template — interpolations become bound parameters, never text. */\n readonly $querySql: <T>(params: { query: SqlFragment; decoder: ResultDecoder<T> }) => Promise<T[]>;\n readonly $executeSql: (params: { query: SqlFragment }) => Promise<number>;\n readonly $queryRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<ClientRow[]>;\n /** Tagged template returning the affected-row count. */\n readonly $executeRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<number>;\n readonly $queryRawUnsafe: (text: string, ...values: unknown[]) => Promise<ClientRow[]>;\n readonly $executeRawUnsafe: (text: string, ...values: unknown[]) => Promise<number>;\n /**\n * Take a transaction-scoped advisory lock on an application-defined key,\n * BLOCKING until it is held. Released by commit and by rollback — there is no\n * unlock call, so nothing can leak onto a pooled connection.\n *\n * Only inside `$transaction` (outside one the lock would be released before\n * the next statement), and only on PostgreSQL/PGlite; every other dialect\n * refuses with `VIBE_UNSUPPORTED_CAPABILITY`.\n */\n readonly $advisoryLock: (options: AdvisoryLockOptions) => Promise<void>;\n /**\n * Take the same lock WITHOUT waiting: `true` when it was acquired, `false`\n * when someone else holds it. The transaction stays usable either way — a\n * refusal here is a verdict, not an error.\n */\n readonly $tryAdvisoryLock: (options: AdvisoryLockOptions) => Promise<boolean>;\n readonly $connect: () => Promise<void>;\n readonly $disconnect: () => Promise<void>;\n /**\n * Field-masking views (v1 `defineView` parity, board #11) — a read-only\n * scoped client restricted to the definition's models and fields. Attached\n * by `attachDefineView` after construction (hence optional in the type);\n * it is always present on a built client, transaction clients included.\n */\n readonly $defineView?: DefineViewFn;\n /**\n * Row scoping (@@policy): bind a per-request context — the returned client\n * AND-s the policy predicate into every query on policied models and forces\n * it into creates. Attached only when the schema declares @@policy.\n */\n readonly $withPolicy?: (context: Readonly<Record<string, PolicyContextValue>>) => DynamicClient;\n /** Deliberate, greppable full-access escape from policy scoping. */\n readonly $bypassPolicy?: () => DynamicClient;\n /**\n * Tenant scoping (framework handoff): base client + total per-model tenancy\n * map + scope value → a NEW handle whose every call is confined to that\n * tenant (raw SQL refused). Always attached; refuses on @@policy schemas.\n */\n readonly $scoped?: (config: ScopedClientConfig) => DynamicClient;\n /**\n * A read-only handle over this one, built from the runtime's ALLOWLIST of\n * read methods (`read-only.ts`). Attached after construction (hence optional\n * in the type); absent only on the unbound native-RLS root, which cannot\n * query until `$withContext` binds an identity.\n */\n readonly $readOnly?: () => ReadOnlyClient;\n};\n\n// ─── Errors ───────────────────────────────────────────────────────\n\nfunction notFound(params: { model: string; method: QueryMethod | string }): VibeError {\n const { model, method } = params;\n return new VibeError({\n code: \"VIBE_NOT_FOUND\",\n message: `no ${model} record matched the where clause of ${method}()`,\n meta: { model, method },\n });\n}\n\n/**\n * `$connect` / `$disconnect` on a transaction client. The connection belongs to\n * the transaction for its whole lifetime: reconnecting mid-transaction is\n * meaningless and disconnecting would tear down an open transaction's own\n * connection. The generated transaction type omits both; this refusal is the\n * authority, because a type cannot stop a JavaScript caller.\n */\nfunction transactionLifecycleRefusal(params: { method: string }): VibeError {\n const { method } = params;\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${method}() is not available on a transaction client — the connection is owned by the open transaction; call it on the client that started the transaction`,\n meta: { method, inTransaction: true },\n });\n}\n\nfunction viewIsReadOnly(params: { model: string; method: string }): VibeError {\n const { model, method } = params;\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${model} is a view — ${method}() is not available on views (they are read-only); write to the underlying table instead`,\n meta: { model, method },\n });\n}\n\n// ─── Parameter binding ────────────────────────────────────────\n\n/**\n * ORM-path binding: after the codec table has encoded every parameter, the only\n * bare JS arrays left in `rendered.values` are scalar-list params — `inArray`\n * filters and list-column writes (`Json.encode` stringifies, Bytes are\n * `Uint8Array`). Their wire form is the ADAPTER's business (`= ANY($n)` needs a\n * PG array literal on bun:sql, a tagged passthrough on pg/pglite), so each one\n * is handed to `adapter.formatArrayParam` here. Reviewed as fix F1 — the raw\n * paths (`$queryRaw*`) deliberately do NOT bind: drivers take raw arrays there\n * (LEARNINGS: ORM-path vs raw-path array params differ).\n */\nfunction bindValues(params: { adapter: DatabaseAdapter; values: unknown[] }): unknown[] {\n const { adapter, values } = params;\n return values.map((value) => (Array.isArray(value) ? adapter.formatArrayParam(value) : value));\n}\n\n// ─── Row shaping ──────────────────────────────────────────────────\n\n/**\n * Narrow a row to the fields the caller selected (scalars, relation names,\n * `_count`). Mutations RETURNING the primary key and relation loading fetching\n * stitch keys both hand back more than was asked for.\n */\nfunction project(params: { row: ClientRow; fields: readonly string[] | null }): ClientRow {\n const { row, fields } = params;\n if (fields === null) return row;\n const out: ClientRow = {};\n for (const field of fields) out[field] = row[field];\n return out;\n}\n\n/**\n * The N1 re-sort comparator (`QueryPlan.resortBy`): the user's orderBy over\n * DECODED rows, with `nulls` and Decimal ranking resolved at build time to\n * mirror what the SQL order would have produced (B4: Decimal ranks\n * numerically — the SQL side ordered a number).\n */\nfunction resortComparator(keys: readonly ResortKey[]): (a: ClientRow, b: ClientRow) => number {\n const rank = (value: unknown): number | bigint | string => {\n if (typeof value === \"boolean\") return value ? 1 : 0;\n if (value instanceof Date) return value.getTime();\n return value as number | bigint | string;\n };\n return (a, b) => {\n for (const key of keys) {\n const left = a[key.field];\n const right = b[key.field];\n const leftNull = left === null || left === undefined;\n const rightNull = right === null || right === undefined;\n if (leftNull || rightNull) {\n if (leftNull && rightNull) continue;\n return leftNull === (key.nulls === \"first\") ? -1 : 1;\n }\n const rankLeft = key.decimal ? Number(left) : rank(left);\n const rankRight = key.decimal ? Number(right) : rank(right);\n if (rankLeft < rankRight) return key.direction === \"asc\" ? -1 : 1;\n if (rankLeft > rankRight) return key.direction === \"asc\" ? 1 : -1;\n }\n return 0;\n };\n}\n\n/**\n * Client-side leg of the find pipeline, in plan order: the negative-take\n * re-reverse, then the N1 distinct re-sort (the user's orderBy restored over\n * the deduplicated rows — every dialect: DISTINCT ON and the ROW_NUMBER\n * emulation both present rows grouped by the distinct key). The two never\n * combine — distinct refuses a negative take at build time.\n */\nfunction shapeRows(params: { plan: QueryPlan; rows: ClientRow[] }): ClientRow[] {\n const { plan, rows } = params;\n let out = rows;\n if (plan.reverseRows) out = [...out].reverse();\n if (plan.resortBy !== null && plan.resortBy.length > 0) {\n out = [...out].sort(resortComparator(plan.resortBy));\n }\n return out;\n}\n\n// ─── Aggregate result assembly ──────────────────────────────\n\nfunction fieldOf(params: { model: ModelMeta; name: string | null }): FieldMeta | null {\n const { model, name } = params;\n if (name === null) return null;\n return model.fieldByName.get(name) ?? null;\n}\n\n/** `{ _count: 3 | {…}, _avg: {…}, … }` from one aggregate row, by construction. */\nfunction assembleAggregates(params: {\n engine: Engine;\n model: ModelMeta;\n spec: AggregateSpec;\n row: ClientRow;\n into: ClientRow;\n}): ClientRow {\n const { engine, model, spec, row, into } = params;\n for (const selection of spec.selections) {\n const value = decodeAggregateValue({\n dialect: engine.dialect.name,\n key: selection.key,\n field: fieldOf({ model, name: selection.field }),\n value: row[selection.alias],\n });\n if (selection.key === \"_count\" && spec.countShorthand) {\n into._count = value;\n continue;\n }\n const bucket = (into[selection.key] as Record<string, unknown> | undefined) ?? {};\n bucket[selection.field ?? \"_all\"] = value;\n into[selection.key] = bucket;\n }\n return into;\n}\n\n// ─── Engine ───────────────────────────────────────────────────────\n\nconst moduleMetadata: WeakMap<SchemaIR, RuntimeMeta> = new WeakMap();\n\ntype TransactionLifetime = { active: boolean; readonly parent?: TransactionLifetime };\n\ntype Engine = {\n readonly rootIdentity: object;\n readonly moduleManifests: Map<string, DatabaseModuleManifest>;\n readonly borrowedModule?: boolean;\n readonly readOnlySql?: boolean;\n readonly rlsSchema?: SchemaIR;\n readonly context?: BoundRlsContext;\n readonly lifetime?: TransactionLifetime;\n readonly meta: RuntimeMeta;\n readonly adapter: DatabaseAdapter;\n readonly dialect: SqlDialect;\n readonly options: ClientOptions;\n /** True on engines bound to an open transaction — gates `lock` (FOR UPDATE). */\n readonly inTransaction?: boolean;\n /** `$on(\"query\")` subscribers — one shared set across transaction clients. */\n readonly listeners: Set<(event: QueryEvent) => void>;\n /** Compiled-query cache (§9) — shape-keyed SQL texts, shared across transaction clients. */\n readonly renderCache: StatementRenderCache;\n /** Baked extension surface mounts (D9) — re-attached on every client build. */\n readonly extensionMounts?: readonly ClientExtensionMount[];\n /** Extension onConnect hooks — run by `$connect()`. */\n readonly connectHooks?: readonly ConnectHook[];\n /** Telemetry recorder (§EPIC 1) — one per client, shared across transaction engines. */\n readonly telemetry?: TelemetryRecorder;\n /** The operation this engine is executing inside; statements attach to it. */\n readonly operation?: TelemetryOperationScope;\n /** Statement diagnostics hook — one per client, bound to the POOL adapter, shared across transaction engines. */\n readonly diagnostics?: StatementDiagnosticsHook;\n};\n\nfunction engineStateError(params: { engine: Engine; requireContext?: boolean }): RlsContextError | undefined {\n const { engine } = params;\n for (let frame = engine.lifetime; frame !== undefined; frame = frame.parent) {\n if (!frame.active) return new RlsContextError({ reason: \"expired\" });\n }\n if (params.requireContext !== false && engine.rlsSchema !== undefined && engine.context === undefined) {\n return new RlsContextError({ reason: \"missing\" });\n }\n return undefined;\n}\n\nfunction assertEngineActive(params: { engine: Engine; requireContext?: boolean }): void {\n const error = engineStateError(params);\n if (error !== undefined) throw error;\n}\n\n/** Own the complete operation, including relation loads and refetches, on one connection. */\nasync function engineTransaction<T>(params: {\n engine: Engine;\n run: (target: Engine) => Promise<T>;\n options?: TransactionOptions;\n requireContext?: boolean;\n}): Promise<T> {\n const { engine, run, options } = params;\n assertEngineActive({ engine, requireContext: params.requireContext });\n if (options?.deadline !== undefined) {\n const support = engine.adapter.budgets?.transactionDeadline;\n const requested = options.deadline.enforcement ?? \"between-statements\";\n if (support === undefined || support === \"unsupported\" ||\n (requested === \"cancel-running-statements\" && support !== \"cancel-running-statements\")) {\n throw new VibeError({\n code: \"VIBE_UNSUPPORTED_CAPABILITY\",\n message: \"the adapter does not declare support for the requested transaction deadline\",\n meta: { provider: engine.adapter.provider, feature: \"transactionDeadline\", requested, supported: support ?? \"undeclared\" },\n });\n }\n }\n return engine.adapter.transaction(async (adapter) => {\n const lifetime: TransactionLifetime = { active: true, ...(engine.lifetime === undefined ? {} : { parent: engine.lifetime }) };\n const target: Engine = { ...engine, adapter, inTransaction: true, lifetime };\n const execute = async (): Promise<T> => {\n if (engine.rlsSchema !== undefined && engine.inTransaction !== true) {\n if (adapter.provider === \"pglite\") {\n await adapter.executeUnsafe(renderRlsRole({ dialect: engine.dialect, role: engine.options.nativeRls!.runtimeRole! }));\n }\n if (engine.context !== undefined && Object.keys(engine.rlsSchema.rls!.context).length > 0) {\n await adapter.executeUnsafe(renderRlsContext({ dialect: engine.dialect, context: engine.rlsSchema.rls!.context, values: engine.context.settings }));\n }\n const readiness = await inspectNativeRlsTransaction({ adapter, schema: engine.rlsSchema, runtimeRole: engine.options.nativeRls?.runtimeRole, cacheKey: engine.rootIdentity });\n assertNativeRlsReady({ report: readiness });\n }\n return run(target);\n };\n return execute().finally(() => { lifetime.active = false; });\n }, options);\n}\n\nasync function executeOperation<T>(params: { engine: Engine; run: (target: Engine) => Promise<T> }): Promise<T> {\n const { engine, run } = params;\n assertEngineActive({ engine });\n if (engine.rlsSchema !== undefined && engine.inTransaction !== true) return engineTransaction({ engine, run });\n return run(engine);\n}\n\n/**\n * The legacy `onQuery` + `$on(\"query\")` sink, or `undefined` when nobody is\n * listening. Semantics are unchanged: it fires only after the adapter succeeds,\n * before row materialization, with the same payload, and a listener that throws\n * still propagates into the caller. Resolved once per statement, immediately\n * before it runs.\n */\nfunction legacySink(params: { engine: Engine }): ((report: StatementReport) => void) | undefined {\n const { engine } = params;\n const onQuery = engine.options.onQuery;\n if (onQuery === undefined && engine.listeners.size === 0) return undefined;\n return (statement: StatementReport): void => {\n const event: QueryEvent = statement;\n onQuery?.(event);\n for (const listener of engine.listeners) listener(event);\n };\n}\n\n/**\n * Rows an operation is KNOWN to have produced. Anything the shape cannot answer\n * (an aggregate number, a scalar) returns undefined — never a fabricated zero.\n */\nfunction knownRowCount(value: unknown): number | undefined {\n if (Array.isArray(value)) return value.length;\n if (value === null) return 0;\n if (typeof value !== \"object\") return undefined;\n const count = (value as { count?: unknown }).count;\n return typeof count === \"number\" ? count : 1;\n}\n\n/** Begin an operation on the engine's recorder, parented to whatever it runs inside. */\nfunction beginOperation(params: {\n engine: Engine;\n kind: TelemetryOperationKind;\n model: string | null;\n method: string;\n}): TelemetryOperationScope | undefined {\n const { engine, kind, model, method } = params;\n const recorder = engine.telemetry;\n if (recorder === undefined) return undefined;\n return recorder.begin({\n kind,\n model,\n method,\n dialect: engine.dialect.name,\n provider: engine.adapter.provider,\n ...(engine.operation === undefined ? {} : { parentOperationId: engine.operation.id }),\n });\n}\n\n/**\n * ONE instrumented adapter call: the legacy `onQuery` report on success (same\n * payload, same moment as before) plus the telemetry statement record, which\n * also covers the failures the legacy path has never seen.\n */\nfunction runStatement<T>(params: {\n engine: Engine;\n kind: TelemetryStatementKind;\n model: string | null;\n method: string;\n text: string;\n values: readonly unknown[];\n renderMs?: number;\n rowCount?: (value: T) => number | undefined;\n run: () => Promise<T>;\n}): Promise<T> {\n const { engine } = params;\n return instrumentStatement<T>({\n scope: engine.operation,\n legacy: legacySink({ engine }),\n diagnose: engine.diagnostics?.observe,\n kind: params.kind,\n model: params.model,\n method: params.method,\n text: params.text,\n values: params.values,\n inTransaction: engine.inTransaction === true,\n ...(params.renderMs === undefined ? {} : { renderMs: params.renderMs }),\n ...(params.rowCount === undefined ? {} : { rowCount: params.rowCount }),\n run: params.run,\n });\n}\n\n/** Clock read only when detailed timings were asked for. */\nfunction renderClock(params: { engine: Engine }): number | undefined {\n return params.engine.telemetry?.config.detailedTimings === true ? performance.now() : undefined;\n}\n\n/** Settle a scope from a promise's outcome, exactly once. */\nfunction settleWith(params: { scope: TelemetryOperationScope; running: Promise<unknown> }): void {\n const { scope, running } = params;\n running.then(\n (value: unknown) => {\n const rowCount = knownRowCount(value);\n scope.settle({ outcome: \"success\", ...(rowCount === undefined ? {} : { rowCount }) });\n },\n (error: unknown) => {\n scope.settle({ outcome: \"failure\", error });\n },\n );\n}\n\n// ─── Lazy query promises (array $transaction) ─────────────────\n\n/** A claimed array-$transaction operation (see QueryPromise.claim). */\ntype ClaimedOperation = {\n readonly start: (target: Engine) => Promise<unknown>;\n readonly abort: (reason: unknown) => void;\n};\n\n/**\n * The promise every delegate method returns — dispatch is DEFERRED to the end\n * of the creation tick (a microtask): awaiting sooner starts it sooner, and\n * `$transaction([...])` claims still-deferred operations SYNCHRONOUSLY and\n * runs them sequentially against the transaction's own engine inside one\n * BEGIN/COMMIT. At every ordinary call site this is observably an eager\n * promise (v1's delegates were fully eager); the deferral only exists for the\n * array form, so operations must reach `$transaction` in the tick they were\n * created — later, they have already dispatched and the claim fails LOUDLY\n * (silently adopting an in-flight promise would fake atomicity, v1's flaw).\n *\n * A NATIVE Promise subclass, not a bare thenable: test matchers\n * (`expect().rejects`) and user code check `instanceof Promise`, and Bun's\n * matchers await the native state without ever calling `.then` — which is\n * also why dispatch cannot wait for a `.then` that may never come. Species is\n * pinned to the base Promise so `.then` chains produce plain promises.\n */\ntype QueryPromiseFactory = <T>(params: {\n engine: Engine;\n run: (target: Engine) => Promise<T>;\n model?: string | null;\n method?: string;\n kind?: TelemetryOperationKind;\n}) => QueryPromise<T>;\n\n// Initialized by the class's static block: these entry points stay module-private,\n// rather than becoming reachable through a returned promise's constructor.\nlet createQueryPromise: QueryPromiseFactory;\nlet queryPromiseMethod: (params: { value: QueryPromise<unknown> }) => string;\nlet queryPromiseOwnerError: (params: { value: QueryPromise<unknown>; engine: Engine }) => RlsContextError | undefined;\nlet refuseQueryPromise: (params: { value: QueryPromise<unknown>; reason: unknown }) => void;\nlet claimQueryPromise: (params: { value: QueryPromise<unknown> }) => ClaimedOperation;\nlet restrictQueryPromise: (params: { value: QueryPromise<unknown> }) => void;\nconst queryPromises = new WeakSet<object>();\n\nfunction isQueryPromise(value: unknown): value is QueryPromise<unknown> {\n return typeof value === \"object\" && value !== null && queryPromises.has(value);\n}\n\nclass QueryPromise<T> extends Promise<T> {\n static override get [Symbol.species](): PromiseConstructor {\n return Promise;\n }\n\n #target!: Engine;\n /**\n * The delegate method this operation runs. Read by the read-only facade's\n * array-`$transaction` gate, which must classify a member BEFORE the batch\n * dispatches (a write promise from the writable client cannot ride a\n * read-only handle's transaction).\n */\n #operationMethod!: string;\n #dispatch!: (target: Engine) => Promise<T>;\n #settle!: { resolve: (value: T | PromiseLike<T>) => void; reject: (reason: unknown) => void };\n #started = false;\n /** This call's telemetry operation, opened at CREATION so the host's parent context is captured in the caller's frame. */\n #scope: TelemetryOperationScope | undefined;\n\n static {\n createQueryPromise = QueryPromise.#create;\n queryPromiseMethod = ({ value }) => value.#operationMethod;\n queryPromiseOwnerError = ({ value, engine }) => value.#ownerError({ engine });\n refuseQueryPromise = ({ value, reason }) => value.#refuse({ reason });\n claimQueryPromise = ({ value }) => value.#claim();\n restrictQueryPromise = ({ value }) => { value.#target = { ...value.#target, readOnlySql: true }; };\n }\n\n /** Build a deferred operation; the constructor itself stays the native one. */\n static #create<T>(params: {\n engine: Engine;\n run: (target: Engine) => Promise<T>;\n model?: string | null;\n method?: string;\n kind?: TelemetryOperationKind;\n }): QueryPromise<T> {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason: unknown) => void;\n const instance = new QueryPromise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n queryPromises.add(instance);\n instance.#target = params.engine;\n instance.#operationMethod = params.method ?? \"unknown\";\n instance.#dispatch = params.run;\n instance.#settle = { resolve, reject };\n instance.#scope = beginOperation({\n engine: params.engine,\n kind: params.kind ?? \"model\",\n model: params.model ?? null,\n method: params.method ?? \"unknown\",\n });\n // Auto-dispatch when the creation tick's synchronous run completes —\n // unless an array $transaction claimed the operation first.\n queueMicrotask(() => {\n instance.#start();\n });\n return instance;\n }\n\n #start(): void {\n if (this.#started) return;\n this.#started = true;\n const scope = this.#scope;\n scope?.dispatch();\n const target = scope === undefined ? this.#target : { ...this.#target, operation: scope };\n const running = target.rlsSchema === undefined && target.lifetime === undefined\n ? this.#dispatch(target)\n : executeOperation({ engine: target, run: this.#dispatch });\n if (scope !== undefined) settleWith({ scope, running });\n running.then(this.#settle.resolve, this.#settle.reject);\n }\n\n override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n // `catch` and `finally` route through `then` per spec — awaiting starts\n // the dispatch immediately instead of at the microtask.\n this.#start();\n return super.then(onfulfilled, onrejected);\n }\n\n /**\n * The array-$transaction entry: claim the operation SYNCHRONOUSLY (before\n * the auto-dispatch microtask can fire), receiving a starter that runs it\n * against the transaction's engine and an aborter that settles it when the\n * transaction dies before its turn — a stray await on it must reject, never\n * hang.\n */\n /** Check source identity BEFORE any array member is claimed or retargeted. */\n #ownerError(params: { engine: Engine }): RlsContextError | undefined {\n const { engine } = params;\n const state = engineStateError({ engine: this.#target });\n if (state !== undefined) return state;\n if (\n this.#target.rootIdentity !== engine.rootIdentity ||\n this.#target.lifetime !== engine.lifetime ||\n !sameRecord(this.#target.context?.settings ?? {}, engine.context?.settings ?? {})\n ) return new RlsContextError({ reason: \"conflicting\" });\n return undefined;\n }\n\n /** A refused batch must not auto-dispatch its still-deferred members later. */\n #refuse(params: { reason: unknown }): void {\n if (this.#started) return;\n this.#started = true;\n // Refused before dispatch (F06 included): a terminal outcome is still owed,\n // and it must NOT claim a duration it never spent.\n this.#scope?.settle({ outcome: \"failure\", stage: \"refused\", error: params.reason });\n this.#settle.reject(params.reason);\n super.then(undefined, () => {});\n }\n\n #claim(): ClaimedOperation {\n if (this.#started) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n \"$transaction([...]) needs operations that have not dispatched — pass delegate calls in the same tick they are created (this one was awaited or created earlier and already executed outside the transaction)\",\n });\n }\n this.#started = true;\n const scope = this.#scope;\n return {\n start: (target: Engine): Promise<unknown> => {\n // Retarget connection/lifetime, not the operation's private schema or validators.\n target = { ...target, meta: this.#target.meta, renderCache: this.#target.renderCache, options: this.#target.options };\n if (this.#target.readOnlySql === true) target = { ...target, readOnlySql: true };\n // The operation attaches to the TRANSACTION that executes it, not to the\n // context it was created in.\n if (scope !== undefined && target.operation !== undefined) {\n scope.reparent({ parentOperationId: target.operation.id });\n }\n scope?.dispatch();\n const running = executeOperation({\n engine: scope === undefined ? target : { ...target, operation: scope },\n run: this.#dispatch,\n });\n if (scope !== undefined) settleWith({ scope, running });\n // Settle this promise too (a caller may hold and await it), and mark\n // its rejection handled — the array runner propagates failures.\n running.then(this.#settle.resolve, this.#settle.reject);\n super.then(undefined, () => {});\n return running as Promise<unknown>;\n },\n abort: (reason: unknown): void => {\n // Idempotent: an already-started operation settled on its own outcome.\n scope?.settle({ outcome: \"failure\", stage: \"refused\", error: reason });\n this.#settle.reject(reason);\n super.then(undefined, () => {});\n },\n };\n }\n}\n\n/**\n * How the read-only facade inspects and refuses un-dispatched delegate\n * promises. Handed to `attachReadOnly` rather than imported by it, so the\n * access module never takes a value dependency on this one.\n */\nconst LAZY_OPERATIONS: LazyOperationBridge = {\n restrictSql: ({ value }): void => {\n if (isQueryPromise(value)) restrictQueryPromise({ value });\n },\n methodOf: (params: { value: unknown }): string | undefined =>\n isQueryPromise(params.value) ? queryPromiseMethod({ value: params.value }) : undefined,\n refuse: (params: { value: unknown; reason: unknown }): void => {\n if (isQueryPromise(params.value)) refuseQueryPromise({ value: params.value, reason: params.reason });\n },\n};\n\n/** Render + execute a row-returning statement, decoding through the codec table. */\nasync function runRows(params: { engine: Engine; plan: QueryPlan }): Promise<ClientRow[]> {\n const { engine, plan } = params;\n const renderStarted = renderClock({ engine });\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: plan.statement,\n cache: engine.renderCache,\n });\n const rows = await runStatement<ClientRow[]>({\n engine,\n kind: \"rows\",\n model: plan.model.name,\n method: plan.method,\n text: rendered.text,\n values: rendered.values,\n ...(renderStarted === undefined ? {} : { renderMs: performance.now() - renderStarted }),\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n }),\n });\n return materializeRows({ dialect: engine.dialect.name, model: plan.model, rows, wire: engine.adapter.wire });\n}\n\n/**\n * Run a statement for its affected-row count on the PARAMETER-BOUND path.\n *\n * F01: `executeUnsafe` is the raw path, and an adapter may implement it with\n * client-side text escaping (mysql2's `pool.query` does). Escaping done in the\n * client cannot know the server's `sql_mode`, so under `NO_BACKSLASH_ESCAPES` a\n * generated statement carrying a hostile string predicate matched — and\n * deleted — rows it must not. Generated statements therefore prefer\n * `executeAffected` (bound, same protocol as `execute`) and fall back to\n * `executeUnsafe` only for an adapter that does not implement it, all of which\n * bind their raw path already.\n */\nasync function runBoundAffected(params: {\n adapter: DatabaseAdapter;\n text: string;\n values: unknown[];\n}): Promise<QueryResult> {\n const { adapter, text, values } = params;\n const bound = adapter.executeAffected;\n if (bound !== undefined) return await bound.call(adapter, { text, values });\n return await adapter.executeUnsafe({ text, values });\n}\n\n/** Execute a statement for its affected-row count (`executeUnsafe` exposes it). */\nasync function runAffected(params: { engine: Engine; plan: QueryPlan }): Promise<number> {\n const { engine, plan } = params;\n // M4/M7: a multi-statement batch (sqlite createMany groups, parameter-budget\n // chunks) runs atomically — exactly like the single statement it replaces.\n if (plan.batch !== undefined && plan.batch.length > 1) {\n const batch = plan.batch;\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n let total = 0;\n for (const statement of batch) {\n total += await runAffected({ engine: txEngine, plan: { ...plan, statement, batch: undefined } });\n }\n return total;\n });\n }\n const renderStarted = renderClock({ engine });\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: plan.statement,\n cache: engine.renderCache,\n });\n const result = await runStatement<QueryResult>({\n engine,\n kind: \"affected\",\n model: plan.model.name,\n method: plan.method,\n text: rendered.text,\n values: rendered.values,\n ...(renderStarted === undefined ? {} : { renderMs: performance.now() - renderStarted }),\n rowCount: (value: QueryResult): number => value.affectedRows,\n run: (): Promise<QueryResult> =>\n runBoundAffected({\n adapter: engine.adapter,\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n }),\n });\n return result.affectedRows;\n}\n\n/** The methods whose statement can carry a row lock (`compileLock` runs there). */\nconst LOCKABLE_METHODS: readonly QueryMethod[] = Object.freeze([\"findMany\", \"findFirst\", \"findUnique\"]);\n\nfunction plan(params: {\n engine: Engine;\n model: string;\n method: QueryMethod;\n args: ClientRow | undefined;\n}): QueryPlan {\n const { engine, model, method } = params;\n const args = engine.readOnlySql === true\n ? restrictedSqlArgs({ value: params.args, path: \"$readOnly\", refusal: () => readOnlyRefusal({ path: `${model}.${method}`, reason: \"raw\" }) })\n : params.args;\n if (args !== undefined && args[\"lock\"] !== undefined) {\n // `lock` is a row lock held to COMMIT — outside a transaction the lock\n // releases at statement end, a silent no-op. The engine knows which client\n // it is (the builder cannot), so the refusal lives here.\n if (engine.inTransaction !== true) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `lock on ${model}.${method}() requires a transaction — call it on the client $transaction hands its callback (outside one, the lock would release at statement end)`,\n meta: { model, method },\n });\n }\n // A lock on a method that cannot carry one would otherwise be DROPPED in\n // silence: only the three finds reach compileLock. Postgres itself refuses\n // a locking read with aggregates or GROUP BY (SQLSTATE 0A000), so there is\n // no shape to route them to either.\n if (!LOCKABLE_METHODS.includes(method)) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n `lock on ${model}.${method}() is not supported — only ${LOCKABLE_METHODS.join(\", \")} take a lock. ` +\n `Lock the rows with a find inside the transaction, then write them`,\n meta: { model, method },\n });\n }\n }\n return buildQuery({\n meta: engine.meta,\n dialect: engine.dialect,\n model,\n method,\n args,\n ...(engine.options.relationStrategy === undefined\n ? {}\n : { defaultRelationStrategy: engine.options.relationStrategy }),\n clientOptions: {\n ...(engine.options.defaultOrderByPk === undefined\n ? {}\n : { defaultOrderByPk: engine.options.defaultOrderByPk }),\n ...(engine.options.distinctOrderByPk === undefined\n ? {}\n : { distinctOrderByPk: engine.options.distinctOrderByPk }),\n },\n });\n}\n\n/**\n * The lock the internal read-before-write overlays take: the plain exclusive\n * lock, blocking. They are not a public lock request and never vary.\n */\nconst OVERLAY_ROW_LOCK: RowLock = Object.freeze({ strength: \"update\", wait: \"wait\" });\n\n/**\n * Read a try-lock's verdict out of its single-column row.\n *\n * Deliberately NOT a truthiness coercion: a driver that reports booleans as\n * `\"t\"` or `1` must not silently become `false`, because \"you do not hold this\n * lock\" is the one answer a caller acts on. An unrecognized shape is our bug,\n * so it throws rather than guesses.\n */\nfunction readAcquiredVerdict(params: { method: string; result: QueryResult }): boolean {\n const value = params.result.rows[0]?.[ADVISORY_LOCK_RESULT_COLUMN];\n if (value === true || value === 1 || value === \"t\" || value === \"true\" || value === \"1\") return true;\n if (value === false || value === 0 || value === \"f\" || value === \"false\" || value === \"0\") return false;\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `internal: ${params.method}() expected a boolean \"${ADVISORY_LOCK_RESULT_COLUMN}\" column, got ${String(value)}`,\n meta: { method: params.method, value: String(value) },\n });\n}\n\n/** Re-select the row a mutation touched, on dialects without RETURNING. */\nasync function refetch(params: {\n engine: Engine;\n source: QueryPlan;\n where: Readonly<Record<string, unknown>>;\n /** `SELECT … FOR UPDATE` (where the dialect has a lock clause) — the\n * read-before-write overlays lock the row they are about to write. */\n lock?: boolean;\n}): Promise<ClientRow | null> {\n const { engine, source, where } = params;\n const selectArg = source.selectArg;\n const followUp = plan({\n engine,\n model: source.model.name,\n method: \"findUnique\",\n args: selectArg === null ? { where } : { where, select: selectArg },\n });\n const locked: QueryPlan =\n params.lock === true\n ? { ...followUp, statement: { ...(followUp.statement as SelectStatement), rowLock: OVERLAY_ROW_LOCK } }\n : followUp;\n const rows = await runRows({ engine, plan: locked });\n return rows[0] ?? null;\n}\n\n/** Shallow record equality — \"is the overlaid refetch key the same key?\". */\nfunction sameRecord(\n a: Readonly<Record<string, unknown>>,\n b: Readonly<Record<string, unknown>>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n const left = a[key];\n const right = b[key];\n if (left === right) continue;\n if (left instanceof Date && right instanceof Date && left.getTime() === right.getTime()) continue;\n return false;\n }\n return true;\n}\n\n/**\n * The WHERE that identifies a freshly inserted row on a dialect without\n * RETURNING: the app-generated key when there is one, else the driver's\n * last-insert-id — which is why the DB-assigned-key path runs inside ONE\n * transaction (see `runSingleMutation`): `LAST_INSERT_ID()` is\n * connection-scoped, and only the transaction contract guarantees the INSERT\n * and the read-back share a connection.\n */\nasync function insertedKeyWhere(params: {\n engine: Engine;\n source: QueryPlan;\n insertId?: number | string;\n}): Promise<Record<string, unknown>> {\n const { engine, source } = params;\n if (source.refetchWhere !== null) return { ...source.refetchWhere };\n\n const keyField = source.model.primaryKey[0];\n const lastInsertIdSql = engine.dialect.lastInsertIdSql;\n if (lastInsertIdSql === null || source.model.primaryKey.length !== 1 || keyField === undefined) {\n throw unsupportedCapability({\n dialect: engine.dialect.name,\n feature: `${source.method} on ${source.model.name} without RETURNING`,\n hint: \"this model's key is assigned by the database and cannot be read back on this dialect\",\n });\n }\n const insertId = params.insertId;\n // Only use an exact integer identity. Zero is a value, not an absent field;\n // adapters may omit a driver's zero sentinel when it means \"no identity\".\n if ((typeof insertId === \"number\" && Number.isSafeInteger(insertId)) ||\n (typeof insertId === \"string\" && /^-?\\d+$/.test(insertId))) {\n return { [keyField.name]: decodeValue({ dialect: engine.dialect.name, field: keyField, value: insertId }) };\n }\n const result = await runStatement<QueryResult>({\n engine,\n kind: \"rows\",\n model: source.model.name,\n method: source.method,\n text: lastInsertIdSql,\n values: [],\n rowCount: (value: QueryResult): number => value.rows.length,\n run: (): Promise<QueryResult> => engine.adapter.executeUnsafe({ text: lastInsertIdSql }),\n });\n const id = result.rows[0]?.id;\n if (id === undefined || id === null) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `could not read back the generated key for ${source.model.name}`,\n meta: { model: source.model.name },\n });\n }\n return { [keyField.name]: id };\n}\n\n/**\n * Run a single-row mutation. On dialects with RETURNING the statement carries\n * its own result; otherwise the row is read back with a second statement — for\n * `delete` that read happens BEFORE the write, since afterwards the row is gone.\n *\n * Returns the FULL row (RETURNING includes the primary key and stitch keys);\n * the delegate narrows down to the caller's selection after relation loading.\n */\nasync function runSingleMutation(params: {\n engine: Engine;\n source: QueryPlan;\n readBeforeWrite: boolean;\n /**\n * `create({ onConflict })`: zero written rows is the SKIPPED verdict —\n * return null instead of not-found (RETURNING presence / affected count is\n * the truth of who won the conflict).\n */\n allowZeroRows?: boolean;\n}): Promise<ClientRow | null> {\n const { engine, source, readBeforeWrite } = params;\n\n // Mirrors the renderer's applyReturning verdict WITHOUT rendering — the\n // native path would otherwise render twice per mutation.\n const statement = source.statement;\n // `in` narrowing, not a select-vs-mutation dichotomy: the RLS statement\n // variants carry no RETURNING either, and neither does a select.\n const requested = \"returning\" in statement ? statement.returning : undefined;\n if (requested !== undefined && requested.length > 0 && engine.dialect.capabilities.returning) {\n const rows = await runRows({ engine, plan: source });\n const row = rows[0];\n if (row === undefined) {\n if (params.allowZeroRows === true) return null;\n throw notFound({ model: source.model.name, method: source.method });\n }\n return row;\n }\n\n // RETURNING omitted (mysql): read the row around the write.\n const rendered = renderStatementCached({ dialect: engine.dialect, statement, cache: engine.renderCache });\n // `executeUnsafe` — the only adapter entry point that surfaces the\n // affected-row count, which the overlays below must check (M1/M2): a write\n // that matched nothing is a not-found, never \"re-select and hope\".\n const executeWrite = async (target: Engine): Promise<QueryResult> => {\n const result = await runStatement<QueryResult>({\n engine: target,\n kind: \"affected\",\n model: source.model.name,\n method: source.method,\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: QueryResult): number => value.affectedRows,\n run: (): Promise<QueryResult> =>\n runBoundAffected({\n adapter: target.adapter,\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n }),\n });\n return result;\n };\n\n if (readBeforeWrite) {\n // delete: the read must happen BEFORE the write — and both must observe\n // ONE row: the read locks it (FOR UPDATE) inside a transaction, and a\n // DELETE that then matches nothing is a concurrent-delete not-found, not\n // a success reporting the pre-read row (M1).\n const where = source.refetchWhere;\n if (where === null) throw notFound({ model: source.model.name, method: source.method });\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const before = await refetch({ engine: txEngine, source, where, lock: true });\n if (before === null) throw notFound({ model: source.model.name, method: source.method });\n const { affectedRows: affected } = await executeWrite(txEngine);\n if (affected === 0) throw notFound({ model: source.model.name, method: source.method });\n return before;\n });\n }\n\n if (source.refetchWhere !== null) {\n const knownWhere = source.refetchWhere;\n\n if (source.method === \"upsert\") {\n // Which arm ran is only knowable from the read-back. The write and every\n // read ride ONE transaction (the only same-connection guarantee the\n // frozen adapter interface gives). In order:\n // 1. the overlaid unique where — the UPDATE arm's row answers it, and\n // so does the INSERT arm's unless the update arm rewrites the key;\n // 2. the un-overlaid where — the INSERT arm's row always answers it\n // (the B1 gate guarantees create binds the conflict target);\n // 3. LAST_INSERT_ID() — only meaningful when the ODKU statement\n // carries the `id = LAST_INSERT_ID(id)` trick (B2): the update arm\n // then names the row it addressed even when that row was matched\n // through a DIFFERENT unique key than the where names.\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n await executeWrite(txEngine);\n const byWhere = await refetch({ engine: txEngine, source, where: knownWhere });\n if (byWhere !== null) return byWhere;\n const baseWhere = source.refetchWhereBase;\n if (baseWhere !== null && !sameRecord(baseWhere, knownWhere)) {\n const byBase = await refetch({ engine: txEngine, source, where: baseWhere });\n if (byBase !== null) return byBase;\n }\n const insertStatement = source.statement;\n const hasIdTrick =\n insertStatement.kind === \"insert\" &&\n insertStatement.onConflict !== undefined &&\n !(\"doNothing\" in insertStatement.onConflict) &&\n insertStatement.onConflict.lastInsertIdColumn !== undefined;\n if (!hasIdTrick) throw notFound({ model: source.model.name, method: source.method });\n const where = await insertedKeyWhere({ engine: txEngine, source: { ...source, refetchWhere: null } });\n const after = await refetch({ engine: txEngine, source, where });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n }\n\n if (source.method === \"update\") {\n // M2: the write and its read-back observe one row inside a transaction,\n // and a write that MATCHED no row (mysql reports matched — mysql2 sets\n // CLIENT_FOUND_ROWS) is a not-found: re-selecting by the overlaid unique\n // where could otherwise resolve a wrong, unrelated row.\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const { affectedRows: affected } = await executeWrite(txEngine);\n if (affected === 0) throw notFound({ model: source.model.name, method: source.method });\n const after = await refetch({ engine: txEngine, source, where: knownWhere });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n }\n\n // create with an app-generated key: the key is known before the write.\n const { affectedRows: affected } = await executeWrite(engine);\n if (affected === 0 && params.allowZeroRows === true) return null;\n const after = await refetch({ engine, source, where: knownWhere });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n }\n\n // DB-assigned key: INSERT + LAST_INSERT_ID() + re-select must observe ONE\n // connection — the transaction contract is the only guarantee the frozen\n // adapter interface gives us (review work order #7/F5, runtime half).\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const { affectedRows: affected, insertId } = await executeWrite(txEngine);\n if (affected === 0 && params.allowZeroRows === true) return null;\n const where = await insertedKeyWhere({ engine: txEngine, source, insertId });\n const after = await refetch({ engine: txEngine, source, where });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n}\n\n/** Narrow a mutation result the caller KNOWS cannot be null (no allowZeroRows). */\nfunction requireRow(params: { row: ClientRow | null; model: string; method: string }): ClientRow {\n if (params.row === null) throw notFound({ model: params.model, method: params.method });\n return params.row;\n}\n\n/**\n * The transactional find-then-write upsert — Prisma's own fallback, used\n * whenever the create data does not bind the conflict-target columns with the\n * where's values (`upsertUsesNativeStatement`, SQL review B1): a native\n * INSERT … ON CONFLICT could never fire on the addressed row there, and on\n * postgres/sqlite would silently insert a duplicate-in-spirit row while\n * mysql's ODKU could update an unrelated one.\n *\n * Probe by the unique where (locked, where the dialect has row locks), then\n * run the UPDATE arm on a hit and the CREATE arm on a miss. Both arm plans\n * build BEFORE the transaction — validation stays earliest-moment, exactly as\n * the native statement validates both arms up front. Races stay LOUD: a\n * concurrent insert after a probe miss surfaces the unique violation, a\n * concurrent delete after a probe hit surfaces not-found.\n */\nasync function runUpsertFallback(params: {\n engine: Engine;\n model: ModelMeta;\n args: ClientRow;\n}): Promise<ClientRow> {\n const { engine, model, args } = params;\n const passthrough: ClientRow = {};\n if (args.select !== undefined) passthrough.select = args.select;\n if (args.omit !== undefined) passthrough.omit = args.omit;\n if (args.include !== undefined) passthrough.include = args.include;\n\n const probeSource = plan({ engine, model: model.name, method: \"findUnique\", args: { where: args.where } });\n const probePlan: QueryPlan = {\n ...probeSource,\n statement: { ...(probeSource.statement as SelectStatement), rowLock: OVERLAY_ROW_LOCK },\n };\n const createSource = plan({\n engine,\n model: model.name,\n method: \"create\",\n args: { ...passthrough, data: args.create },\n });\n const updateSource = plan({\n engine,\n model: model.name,\n method: \"update\",\n args: { ...passthrough, where: args.where, data: args.update },\n });\n\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const existing = (await runRows({ engine: txEngine, plan: probePlan }))[0];\n const source = existing === undefined ? createSource : updateSource;\n return requireRow({\n row: await runSingleMutation({ engine: txEngine, source, readBeforeWrite: false }),\n model: model.name,\n method: \"upsert\",\n });\n });\n}\n\n// ─── Relation attachment + result shaping ─────────────────\n\nfunction relationExecutor(params: { engine: Engine }): RelationExecutor {\n const { engine } = params;\n return async ({ statement, model, method }) => {\n if (engine.readOnlySql === true && containsSqlFragment(statement)) throw readOnlyRefusal({ path: `${model}.${method}`, reason: \"raw\" });\n const rendered = renderStatementCached({ dialect: engine.dialect, statement, cache: engine.renderCache });\n return await runStatement<ClientRow[]>({\n engine,\n kind: \"rows\",\n model,\n method,\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n }),\n });\n };\n}\n\ntype ResultShape = {\n readonly relations: RelationSelection | null;\n readonly resultFields: readonly string[] | null;\n readonly relationStrategy: RelationStrategy;\n /** Computed fields to attach before projection, or `null` (see QueryPlan.computed). */\n readonly computed: readonly string[] | null;\n};\n\n/**\n * Relation statements this engine may have in flight at once.\n *\n * Forced to 1 inside a transaction whatever the option says: a transaction owns\n * ONE connection, and its statements are ordered by definition. The option is\n * validated at client construction, so this only reads it.\n */\nfunction relationConcurrency(params: { engine: Engine }): number {\n const { engine } = params;\n if (engine.inTransaction === true) return 1;\n return engine.options.relationLoading?.concurrency ?? 1;\n}\n\n/** Attach relations (per the shape's strategy), then narrow to the caller's selection. */\nasync function finalizeRows(params: {\n engine: Engine;\n model: ModelMeta;\n shape: ResultShape;\n rows: ClientRow[];\n}): Promise<ClientRow[]> {\n const { engine, model, shape, rows } = params;\n if (shape.relations !== null && rows.length > 0) {\n const execute = relationExecutor({ engine });\n const concurrency = relationConcurrency({ engine });\n if (shape.relationStrategy === \"join\") {\n await attachLateralRelations({\n dialect: engine.dialect,\n meta: engine.meta,\n model,\n rows,\n selection: shape.relations,\n execute,\n wire: engine.adapter.wire,\n concurrency,\n });\n } else {\n await attachRelations({\n dialect: engine.dialect,\n meta: engine.meta,\n model,\n rows,\n selection: shape.relations,\n execute,\n wire: engine.adapter.wire,\n concurrency,\n });\n }\n }\n // Computed fields attach BEFORE projection: their `needs` are still on the\n // row here, and are narrowed away next unless selected themselves.\n if (shape.computed !== null && rows.length > 0) {\n applyComputedFields({ model, rows, names: shape.computed });\n }\n if (shape.resultFields === null) return rows;\n return rows.map((row) => project({ row, fields: shape.resultFields }));\n}\n\nasync function finalizeRow(params: {\n engine: Engine;\n model: ModelMeta;\n shape: ResultShape;\n row: ClientRow;\n}): Promise<ClientRow> {\n const { engine, model, shape, row } = params;\n const rows = await finalizeRows({ engine, model, shape, rows: [row] });\n return rows[0] as ClientRow;\n}\n\n// ─── Nested-write plumbing ────────────────────────────────────────\n\nfunction makeRunner(params: { engine: Engine }): StatementRunner {\n const { engine } = params;\n return {\n single: async ({ model, method, args }) =>\n requireRow({\n row: await runSingleMutation({\n engine,\n source: plan({ engine, model, method, args }),\n readBeforeWrite: method === \"delete\",\n }),\n model,\n method,\n }),\n rows: async ({ model, method, args }) => await runRows({ engine, plan: plan({ engine, model, method, args }) }),\n affected: async ({ model, method, args }) =>\n await runAffected({ engine, plan: plan({ engine, model, method, args }) }),\n statement: async ({ statement, model, method }) => {\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: statement as SqlStatement,\n cache: engine.renderCache,\n });\n return await runStatement<ClientRow[]>({\n engine,\n kind: \"rows\",\n model,\n method,\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n }),\n });\n },\n };\n}\n\nfunction makeWriteContext(params: { engine: Engine }): WriteContext {\n const { engine } = params;\n return {\n meta: engine.meta,\n dialect: engine.dialect,\n run: makeRunner({ engine }),\n transactional: <T>(fn: (run: StatementRunner) => Promise<T>): Promise<T> =>\n engine.adapter.transaction((txAdapter) => fn(makeRunner({ engine: { ...engine, adapter: txAdapter, inTransaction: true } }))),\n };\n}\n\n// ─── Delegates ────────────────────────────────────────────────────\n\n/**\n * A view's delegate: reads pass through, every write verb is refused before a\n * statement is built. Views are read-only by construction, and leaving the\n * write verbs live is not dialect-honest — a simple projection view is\n * auto-updatable on postgres (the INSERT silently lands in the base table)\n * while sqlite/mysql raise a raw driver error. Applied once per delegate at\n * construction, so the hot path is untouched.\n */\nfunction readOnlyDelegate(params: { delegate: ModelDelegate; model: string }): ModelDelegate {\n const { delegate, model } = params;\n const refuse =\n (method: string) =>\n async (): Promise<never> => {\n throw viewIsReadOnly({ model, method });\n };\n return {\n ...delegate,\n create: refuse(\"create\"),\n createMany: refuse(\"createMany\"),\n createManyAndReturn: refuse(\"createManyAndReturn\"),\n update: refuse(\"update\"),\n updateMany: refuse(\"updateMany\"),\n updateManyAndReturn: refuse(\"updateManyAndReturn\"),\n upsert: refuse(\"upsert\"),\n upsertMany: refuse(\"upsertMany\"),\n delete: refuse(\"delete\"),\n deleteMany: refuse(\"deleteMany\"),\n };\n}\n\n/**\n * #7 (v1/Prisma parity): an update `data` object whose every key is undefined\n * is an effectively-empty write — the batch short-circuits to `{ count: 0 }`\n * BEFORE `@updatedAt` injection, so a no-op updateMany never bumps timestamps.\n */\nfunction isEffectivelyEmptyData(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) return false;\n if (Array.isArray(value) || value instanceof Date || value instanceof Uint8Array) return false;\n return Object.values(value).every((entry) => entry === undefined);\n}\n\nfunction createDelegate(params: { engine: Engine; model: string }): ModelDelegate {\n const { engine, model } = params;\n\n const shapeOf = (built: QueryPlan): ResultShape => ({\n relations: built.relations,\n resultFields: built.resultFields,\n relationStrategy: built.relationStrategy,\n computed: built.computed,\n });\n\n // ─── Implementations ───\n // Each takes the engine it runs against as a parameter: the delegate wraps\n // them in LAZY query promises bound to this client's engine, and the array\n // form of $transaction re-runs the same closure against the transaction's\n // engine instead (see QueryPromise).\n\n const findMany = async (target: Engine, args?: ClientRow): Promise<ClientRow[]> => {\n const built = plan({ engine: target, model, method: \"findMany\", args });\n const rows = shapeRows({ plan: built, rows: await runRows({ engine: target, plan: built }) });\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const findFirst = async (target: Engine, args?: ClientRow): Promise<ClientRow | null> => {\n const built = plan({ engine: target, model, method: \"findFirst\", args });\n const rows = shapeRows({ plan: built, rows: await runRows({ engine: target, plan: built }) });\n const row = rows[0];\n if (row === undefined) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const findUnique = async (target: Engine, args: ClientRow): Promise<ClientRow | null> => {\n const built = plan({ engine: target, model, method: \"findUnique\", args });\n const rows = await runRows({ engine: target, plan: built });\n const row = rows[0];\n if (row === undefined) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const create = async (target: Engine, args: ClientRow): Promise<ClientRow | null> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n // `onConflict` → insert-or-skip: zero written rows returns null (the\n // truthful \"another writer won\" verdict), never not-found.\n const skipping = args.onConflict !== undefined;\n if (hasNestedWrites({ model: modelMeta, data: args.data })) {\n if (skipping) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `onConflict cannot combine with nested writes on ${modelMeta.name}.create() — insert the parent row alone, then connect relations`,\n meta: { model: modelMeta.name },\n });\n }\n const shape = resolveResultShape({ meta: target.meta, model: modelMeta, method: \"create\", args });\n const row = await createWithNested({\n ctx: makeWriteContext({ engine: target }),\n model: modelMeta,\n data: args.data as Record<string, unknown>,\n });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"create\", args });\n const row = await runSingleMutation({\n engine: target,\n source: built,\n readBeforeWrite: false,\n ...(skipping ? { allowZeroRows: true } : {}),\n });\n if (row === null) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const update = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n if (hasNestedWrites({ model: modelMeta, data: args.data })) {\n const shape = resolveResultShape({ meta: target.meta, model: modelMeta, method: \"update\", args });\n const row = await updateWithNested({\n ctx: makeWriteContext({ engine: target }),\n model: modelMeta,\n where: args.where as Record<string, unknown>,\n data: args.data as Record<string, unknown>,\n });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"update\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: false }),\n model: built.model.name,\n method: \"update\",\n });\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const createMany = async (target: Engine, args: ClientRow): Promise<BatchResult> => {\n // #7 (v1/Prisma parity): an empty batch is a normal outcome of\n // `data: rows.filter(…)` — `{ count: 0 }`, NO statement.\n if (Array.isArray(args.data) && args.data.length === 0) return { count: 0 };\n const built = plan({ engine: target, model, method: \"createMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n /**\n * EPIC 10: bounded bulk upsert. `count` is the rows submitted after\n * duplicate-key validation — every one was inserted or updated, because there\n * is no skip arm and the chunks run atomically. The driver's own number rides\n * along ONLY where it is a row count (never on mysql, whose ON DUPLICATE KEY\n * counts an insert as 1, a changed update as 2 and an unchanged update as 0).\n */\n const upsertMany = async (target: Engine, args: ClientRow): Promise<UpsertManyResult> => {\n // #7 parity with createMany: an empty feed is a normal outcome, no statement.\n if (Array.isArray(args.data) && args.data.length === 0) return { count: 0, affectedRows: 0 };\n const built = plan({ engine: target, model, method: \"upsertMany\", args });\n const affected = await runAffected({ engine: target, plan: built });\n return {\n count: built.upsertRowCount ?? 0,\n affectedRows: affectedRowsAreRowCounts({ dialect: target.dialect }) ? affected : null,\n };\n };\n\n const createManyAndReturn = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n // #7: empty batch → no rows, no statement.\n if (Array.isArray(args.data) && args.data.length === 0) return [];\n const built = plan({ engine: target, model, method: \"createManyAndReturn\", args });\n // M4/M7: multi-statement batches run atomically; returned rows come in\n // statement order (heterogeneous rows regroup — no input-order promise,\n // matching Prisma's own non-guarantee here).\n const rows =\n built.batch !== undefined && built.batch.length > 1\n ? await target.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...target, adapter: txAdapter };\n const collected: ClientRow[] = [];\n for (const statement of built.batch as readonly SqlStatement[]) {\n collected.push(\n ...(await runRows({ engine: txEngine, plan: { ...built, statement, batch: undefined } })),\n );\n }\n return collected;\n })\n : await runRows({ engine: target, plan: built });\n // #8: the one multi-row returning write loads relations like its siblings\n // (finalizeRows narrows to the caller's selection afterwards, exactly as\n // the bare projection did before).\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const updateMany = async (target: Engine, args: ClientRow): Promise<BatchResult> => {\n // #7 (v1 parity, old/v1 client.ts:957): short-circuit BEFORE @updatedAt\n // injection — auto-managed fields must not turn a no-op into a real UPDATE.\n if (isEffectivelyEmptyData(args.data)) return { count: 0 };\n const built = plan({ engine: target, model, method: \"updateMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n /**\n * EPIC 2: the bulk update that reports WHICH rows changed. One statement —\n * `UPDATE … RETURNING` — so the returned rows are the rows this write\n * changed, not whatever a follow-up SELECT would find. Dialects without\n * RETURNING refuse at build time (mysql); relations are refused by\n * `ALLOWED_ARGS`, so the shape only ever carries scalars.\n */\n const updateManyAndReturn = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n // Parity with updateMany (#7): a data object with no defined keys writes\n // nothing — and therefore returns nothing — BEFORE @updatedAt injection.\n if (isEffectivelyEmptyData(args.data)) return [];\n const built = plan({ engine: target, model, method: \"updateManyAndReturn\", args });\n const rows = await runRows({ engine: target, plan: built });\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const upsert = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n if (\n hasNestedWrites({ model: modelMeta, data: args.create }) ||\n hasNestedWrites({ model: modelMeta, data: args.update })\n ) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `nested writes are not supported inside upsert arms on ${modelMeta.name} — use create()/update() with nested data`,\n meta: { model: modelMeta.name },\n });\n }\n if (!upsertUsesNativeStatement({ model: modelMeta, args: args as Record<string, unknown> })) {\n if (args.onConflict !== undefined) {\n // An explicit conflict target only exists in the native single\n // statement; the find-then-write fallback has no ON CONFLICT clause\n // to attach it to — refuse instead of silently ignoring it.\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `onConflict on ${modelMeta.name}.upsert() needs the native single-statement path — this shape (a guard field beyond the conflict target, or create data not binding the where's key) runs the find-then-write fallback, which cannot honor an explicit conflict target`,\n meta: { model: modelMeta.name },\n });\n }\n // B1: the create row does not bind the conflict target with the\n // where's values — the native statement's conflict clause could never\n // fire on the addressed row. Run the find-then-write flow instead.\n const shape = resolveResultShape({\n meta: target.meta,\n model: modelMeta,\n method: \"upsert\",\n args: args as Record<string, unknown>,\n });\n const row = await runUpsertFallback({ engine: target, model: modelMeta, args });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"upsert\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: false }),\n model: built.model.name,\n method: \"upsert\",\n });\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const deleteOne = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const built = plan({ engine: target, model, method: \"delete\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: true }),\n model: built.model.name,\n method: \"delete\",\n });\n // #25: relations load like update's — from the returned (or pre-read) row,\n // AFTER the delete: children a cascade removed come back empty.\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const deleteMany = async (target: Engine, args?: ClientRow): Promise<BatchResult> => {\n const built = plan({ engine: target, model, method: \"deleteMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n const count = async (target: Engine, args?: ClientRow): Promise<number | Record<string, number>> => {\n const built = plan({ engine: target, model, method: \"count\", args });\n const rendered = renderStatementCached({\n dialect: target.dialect,\n statement: built.statement,\n cache: target.renderCache,\n });\n const rows = await runStatement<ClientRow[]>({\n engine: target,\n kind: \"rows\",\n model,\n method: \"count\",\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n target.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n }),\n });\n // count-with-select: aliases ARE the result keys ({ _all, field, … }).\n if (built.aggregateSpec !== null) {\n const row = rows[0] ?? {};\n const out: Record<string, number> = {};\n for (const selection of built.aggregateSpec.selections) {\n out[selection.alias] = Number(row[selection.alias] ?? 0);\n }\n return out;\n }\n // postgres returns COUNT(*) as a bigint string; Number() normalizes it.\n const raw = rows[0]?.[built.countAlias ?? COUNT_ALIAS];\n return raw === undefined || raw === null ? 0 : Number(raw);\n };\n\n const aggregate = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const built = plan({ engine: target, model, method: \"aggregate\", args });\n const rows = await runRows({ engine: target, plan: built });\n // A non-grouped aggregate always yields exactly one row — even over an\n // empty table (COUNT → 0, the others → SQL NULL → null).\n return assembleAggregates({\n engine: target,\n model: built.model,\n spec: built.aggregateSpec as AggregateSpec,\n row: rows[0] ?? {},\n into: {},\n });\n };\n\n const groupBy = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n const built = plan({ engine: target, model, method: \"groupBy\", args });\n const rows = await runRows({ engine: target, plan: built });\n const by = built.groupByFields as readonly string[];\n const spec = built.aggregateSpec as AggregateSpec;\n return rows.map((row) => {\n const out: ClientRow = {};\n for (const name of by) out[name] = row[name];\n return assembleAggregates({ engine: target, model: built.model, spec, row, into: out });\n });\n };\n\n // ─── Lazy wrappers ───\n\n // `method` names the operation for telemetry; it is the delegate key, so a\n // sibling call is never confused with another one.\n const lazy = <T>(method: string, run: (target: Engine) => Promise<T>): Promise<T> =>\n createQueryPromise<T>({ engine, run, model, method });\n\n const delegate: ModelDelegate = {\n findMany: (args?: ClientRow): Promise<ClientRow[]> => lazy(\"findMany\", (target) => findMany(target, args)),\n findFirst: (args?: ClientRow): Promise<ClientRow | null> => lazy(\"findFirst\", (target) => findFirst(target, args)),\n findUnique: (args: ClientRow): Promise<ClientRow | null> => lazy(\"findUnique\", (target) => findUnique(target, args)),\n\n findFirstOrThrow: (args?: ClientRow): Promise<ClientRow> =>\n lazy(\"findFirstOrThrow\", async (target) => {\n const row = await findFirst(target, args);\n if (row === null) throw notFound({ model, method: \"findFirstOrThrow\" });\n return row;\n }),\n\n findUniqueOrThrow: (args: ClientRow): Promise<ClientRow> =>\n lazy(\"findUniqueOrThrow\", async (target) => {\n const row = await findUnique(target, args);\n if (row === null) throw notFound({ model, method: \"findUniqueOrThrow\" });\n return row;\n }),\n\n create: (args: ClientRow): Promise<ClientRow | null> => lazy(\"create\", (target) => create(target, args)),\n createMany: (args: ClientRow): Promise<BatchResult> => lazy(\"createMany\", (target) => createMany(target, args)),\n createManyAndReturn: (args: ClientRow): Promise<ClientRow[]> =>\n lazy(\"createManyAndReturn\", (target) => createManyAndReturn(target, args)),\n update: (args: ClientRow): Promise<ClientRow> => lazy(\"update\", (target) => update(target, args)),\n updateMany: (args: ClientRow): Promise<BatchResult> => lazy(\"updateMany\", (target) => updateMany(target, args)),\n updateManyAndReturn: (args: ClientRow): Promise<ClientRow[]> =>\n lazy(\"updateManyAndReturn\", (target) => updateManyAndReturn(target, args)),\n upsert: (args: ClientRow): Promise<ClientRow> => lazy(\"upsert\", (target) => upsert(target, args)),\n upsertMany: (args: ClientRow): Promise<UpsertManyResult> =>\n lazy(\"upsertMany\", (target) => upsertMany(target, args)),\n delete: (args: ClientRow): Promise<ClientRow> => lazy(\"delete\", (target) => deleteOne(target, args)),\n deleteMany: (args?: ClientRow): Promise<BatchResult> => lazy(\"deleteMany\", (target) => deleteMany(target, args)),\n count: (args?: ClientRow): Promise<number | Record<string, number>> =>\n lazy(\"count\", (target) => count(target, args)),\n aggregate: (args: ClientRow): Promise<ClientRow> => lazy(\"aggregate\", (target) => aggregate(target, args)),\n groupBy: (args: ClientRow): Promise<ClientRow[]> => lazy(\"groupBy\", (target) => groupBy(target, args)),\n };\n\n const meta = getModelMeta({ meta: engine.meta, model });\n return meta.isView ? readOnlyDelegate({ delegate, model: meta.name }) : delegate;\n}\n\n// ─── Write validation wrapper ────────────────────────────────────\n\nconst WRITE_METHODS = [\n \"create\",\n \"createMany\",\n \"createManyAndReturn\",\n \"update\",\n \"updateMany\",\n \"updateManyAndReturn\",\n \"upsert\",\n \"upsertMany\",\n] as const;\n\n/** Wrap a delegate's write methods through the Standard-Schema validators. */\nfunction withWriteValidation(params: {\n engine: Engine;\n delegate: ModelDelegate;\n model: string;\n validators: WriteValidators;\n}): ModelDelegate {\n const { engine, delegate, model, validators } = params;\n const meta = getModelMeta({ meta: engine.meta, model });\n const wrapped: Record<string, unknown> = { ...delegate };\n for (const method of WRITE_METHODS) {\n const original = delegate[method] as (args: ClientRow) => Promise<unknown>;\n wrapped[method] = (args: ClientRow): Promise<unknown> =>\n original(applyWriteValidators({ meta: engine.meta, model: meta, method, args, validators }) as ClientRow);\n }\n return wrapped as ModelDelegate;\n}\n\n// ─── Strict argument checking (opt-in) ──────────────────────\n\n/**\n * Wrap every delegate method in the strict-argument check (EPIC 2), installed\n * OUTSIDE the write-validation wrapper so it sees exactly what the caller\n * passed — before any wrapper rewrites, merges or drops a member.\n *\n * Refusals REJECT rather than throw synchronously: delegate methods promise a\n * Promise (`scoped.ts` does the same), and a refused root operation dispatches\n * no statement at all.\n */\nfunction withStrictArguments(params: { engine: Engine; delegate: ModelDelegate; model: string }): ModelDelegate {\n const { engine, delegate, model } = params;\n const meta = getModelMeta({ meta: engine.meta, model });\n const wrapped: Record<string, unknown> = { ...delegate };\n for (const [method, value] of Object.entries(wrapped)) {\n if (typeof value !== \"function\") continue;\n const original = value as (args?: ClientRow) => Promise<unknown>;\n wrapped[method] = (args?: ClientRow): Promise<unknown> => {\n let checked: ClientRow | undefined;\n try {\n checked = checkStrictArguments({ meta: engine.meta, model: meta, method, args });\n } catch (error) {\n return Promise.reject(error);\n }\n return original(checked);\n };\n }\n return wrapped as ModelDelegate;\n}\n\n// ─── Raw SQL ──────────────────────────────────────────────────────\n\n/**\n * Interleave a tagged template's literals with placeholders. Interpolated\n * values are ALWAYS bound as parameters — a template can never inject text.\n */\nfunction buildRawStatement(params: {\n dialect: SqlDialect;\n strings: TemplateStringsArray;\n values: readonly unknown[];\n}): { text: string; values: unknown[] } {\n const { dialect, strings, values } = params;\n const collector = new ParamCollector(dialect);\n let text = strings[0] ?? \"\";\n for (let index = 0; index < values.length; index++) {\n text += collector.add(values[index]) + (strings[index + 1] ?? \"\");\n }\n return { text, values: collector.values };\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\nfunction buildClient(params: { engine: Engine }): DynamicClient {\n const { engine } = params;\n\n const models: Record<string, ModelDelegate> = {};\n for (const model of engine.meta.models) {\n let delegate = createDelegate({ engine, model: model.name });\n const validators = engine.options?.validate;\n // Wrap whenever ANY model configures validators (F09): a root with none of\n // its own can still carry a nested write into a model that has them.\n if (validators !== undefined && Object.keys(validators).length > 0) {\n delegate = withWriteValidation({ engine, delegate, model: model.name, validators });\n }\n // Outermost wrapper: the strict check must see the caller's own arguments.\n // ON unless explicitly opted out — `undefined` (no options at all, or an\n // options object that never mentions it) is the strict default.\n if (engine.options?.strictArguments !== false) {\n delegate = withStrictArguments({ engine, delegate, model: model.name });\n }\n models[model.name] = delegate;\n models[model.clientName] = delegate;\n }\n\n const runRaw = async (\n method: string,\n statement: { text: string; values: unknown[] },\n decodeRows?: (rows: ClientRow[]) => void,\n ): Promise<{ rows: ClientRow[]; affectedRows: number }> => {\n const scope = beginOperation({ engine, kind: \"raw\", model: null, method });\n scope?.dispatch();\n const running = executeOperation({\n engine: scope === undefined ? engine : { ...engine, operation: scope },\n run: async (target) => {\n // Prefer an explicitly bound RAW route, preserving raw-session affinity\n // and array serialization. Older adapters keep their existing bound\n // affected-row fallback; executeUnsafe may legally use text escaping.\n const result = await runStatement<QueryResult>({\n engine: target,\n kind: \"raw\",\n model: null,\n method,\n text: statement.text,\n values: statement.values,\n rowCount: (value: QueryResult): number =>\n method.startsWith(\"$query\") ? value.rows.length : value.affectedRows,\n run: (): Promise<QueryResult> =>\n statement.values.length > 0\n ? target.adapter.executeRawBound !== undefined\n ? target.adapter.executeRawBound(statement)\n : runBoundAffected({ adapter: target.adapter, text: statement.text, values: statement.values })\n : target.adapter.executeUnsafe(statement),\n });\n decodeRows?.(result.rows);\n return result;\n },\n });\n if (scope === undefined) return await running;\n running.then(\n (value: QueryResult) => {\n scope.settle({\n outcome: \"success\",\n rowCount: method.startsWith(\"$query\") ? value.rows.length : value.affectedRows,\n });\n },\n (error: unknown) => {\n scope.settle({ outcome: \"failure\", error });\n },\n );\n return await running;\n };\n\n /**\n * Advisory locks ride the ordinary statement path: same telemetry, same\n * transaction deadline, same driver-error mapping. The refusals (unsupported\n * dialect, outside a transaction, malformed key) all happen BEFORE the\n * operation scope opens, so a refused call dispatches nothing.\n */\n const runAdvisoryLock = async (params: {\n method: AdvisoryLockMethod;\n options: AdvisoryLockOptions;\n }): Promise<boolean> => {\n const { method, options } = params;\n assertEngineActive({ engine });\n const statement = compileAdvisoryLock({\n dialect: engine.dialect,\n method,\n inTransaction: engine.inTransaction === true,\n options,\n });\n // Rendered directly: one statement per lock, and the shape cache mirrors\n // only the row-query grammar.\n const rendered = renderStatement({ dialect: engine.dialect, statement });\n const scope = beginOperation({ engine, kind: \"raw\", model: null, method });\n scope?.dispatch();\n const target = scope === undefined ? engine : { ...engine, operation: scope };\n const running = runStatement<QueryResult>({\n engine: target,\n kind: \"raw\",\n model: null,\n method,\n text: rendered.text,\n values: rendered.values,\n rowCount: (value: QueryResult): number => value.rows.length,\n run: (): Promise<QueryResult> =>\n runBoundAffected({\n adapter: target.adapter,\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n }),\n });\n if (scope !== undefined) settleWith({ scope, running });\n const result = await running;\n // The blocking form returns void and has already succeeded by returning;\n // the try form's single boolean column IS the verdict.\n if (statement.wait === \"wait\") return true;\n return readAcquiredVerdict({ method, result });\n };\n\n /**\n * The array form: claim every operation SYNCHRONOUSLY (before their\n * auto-dispatch microtask fires), then run them sequentially against ONE\n * transaction engine — statement order is array order, a throw rolls the\n * whole batch back and settles the not-yet-run operations with the same\n * failure, results return positionally. Only un-dispatched QueryPromises\n * may join: anything else is already in flight on the non-transactional\n * adapter and wrapping it would fake atomicity.\n */\n const runOperations = (operations: readonly unknown[], options?: TransactionOptions): Promise<unknown[]> => {\n const scope = beginOperation({ engine, kind: \"transaction\", model: null, method: \"$transaction\" });\n const claimed: ClaimedOperation[] = [];\n let claimError: unknown = null;\n // Preflight ALL identities synchronously, before claiming even the first entry.\n let identityError = engineStateError({ engine });\n for (const operation of operations) {\n if (identityError === undefined && isQueryPromise(operation)) identityError = queryPromiseOwnerError({ value: operation, engine });\n }\n if (identityError !== undefined) {\n for (const operation of operations) {\n if (isQueryPromise(operation)) refuseQueryPromise({ value: operation, reason: identityError });\n }\n scope?.settle({ outcome: \"failure\", stage: \"refused\", error: identityError });\n return Promise.reject(identityError);\n }\n for (const operation of operations) {\n if (!(isQueryPromise(operation))) {\n claimError = new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n \"$transaction([...]) takes query promises from model delegate calls — a foreign promise is already running and cannot join the transaction\",\n });\n break;\n }\n try {\n claimed.push(claimQueryPromise({ value: operation }));\n } catch (error) {\n claimError = error;\n break;\n }\n }\n if (claimError !== null) {\n for (const entry of claimed) entry.abort(claimError);\n for (const operation of operations) {\n if (isQueryPromise(operation)) refuseQueryPromise({ value: operation, reason: claimError });\n }\n // F06: a refused batch dispatches NOTHING. Telemetry must not resurrect it\n // — one honest terminal outcome, no statements, no duration.\n scope?.settle({ outcome: \"failure\", stage: \"refused\", error: claimError });\n return Promise.reject(claimError);\n }\n scope?.dispatch();\n const batch = engineTransaction({ engine: scope === undefined ? engine : { ...engine, operation: scope }, options, run: async (txEngine) => {\n const results: unknown[] = [];\n let index = 0;\n try {\n for (; index < claimed.length; index++) {\n results.push(await (claimed[index] as ClaimedOperation).start(txEngine));\n }\n } catch (error) {\n for (let rest = index + 1; rest < claimed.length; rest++) {\n (claimed[rest] as ClaimedOperation).abort(error);\n }\n throw error;\n }\n return results;\n } }).catch((error: unknown) => {\n for (const entry of claimed) entry.abort(error);\n throw error;\n });\n if (scope !== undefined) settleWith({ scope, running: batch });\n return batch;\n };\n\n /** The callback form: one transaction operation, with every call inside it as a child. */\n const runCallbackTransaction = <T>(\n fn: (tx: DynamicClient) => Promise<T>,\n options?: TransactionOptions,\n ): Promise<T> => {\n const scope = beginOperation({ engine, kind: \"transaction\", model: null, method: \"$transaction\" });\n if (scope === undefined) {\n return engineTransaction({ engine, run: (target) => fn(buildClient({ engine: target })), options });\n }\n scope.dispatch();\n const running = engineTransaction({\n engine: { ...engine, operation: scope },\n run: (target) => fn(buildClient({ engine: { ...target, operation: scope } })),\n options,\n });\n // Commit/rollback failure is the TRANSACTION's outcome; a statement that\n // succeeded inside it never claimed the commit.\n settleWith({ scope, running });\n return running;\n };\n\n const client: DynamicClient = {\n $models: models,\n\n $on: (event: \"query\", listener: (event: QueryEvent) => void): (() => void) => {\n if (event !== \"query\") {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `unknown client event \"${String(event)}\" — supported: \"query\"`,\n meta: { event },\n });\n }\n engine.listeners.add(listener);\n return () => {\n engine.listeners.delete(listener);\n };\n },\n\n $transaction: (<T>(\n fnOrOperations: ((tx: DynamicClient) => Promise<T>) | readonly unknown[],\n options?: TransactionOptions,\n ): Promise<T | unknown[]> =>\n Array.isArray(fnOrOperations)\n ? runOperations(fnOrOperations, options)\n : runCallbackTransaction(fnOrOperations as (tx: DynamicClient) => Promise<T>, options)) as DynamicClient[\"$transaction\"],\n\n $querySql: async <T>({ query, decoder }: { query: SqlFragment; decoder: ResultDecoder<T> }): Promise<T[]> => {\n assertEngineActive({ engine });\n if (decoder === null || typeof decoder !== \"object\" || typeof decoder.decode !== \"function\") throw new VibeError({ code: \"VIBE_VALIDATION\", message: \"$querySql requires an explicit result decoder\" });\n const statement = compileSql({ dialect: engine.dialect, query });\n let output: T[] = [];\n await runRaw(\"$querySql\", statement, (rows) => {\n output = rows.map((value) => decoder.decode({ value, dialect: engine.dialect.name, ...(engine.adapter.wire === undefined ? {} : { wire: engine.adapter.wire }) }));\n });\n return output;\n },\n $executeSql: async ({ query }: { query: SqlFragment }): Promise<number> => {\n assertEngineActive({ engine });\n return (await runRaw(\"$executeSql\", compileSql({ dialect: engine.dialect, query }))).affectedRows;\n },\n\n // Raw results are NOT decoded: without a model there is no field→column\n // mapping and no codec to apply. Values arrive as the driver produced them.\n $queryRaw: async (strings: TemplateStringsArray, ...values: unknown[]): Promise<ClientRow[]> =>\n (await runRaw(\"$queryRaw\", buildRawStatement({ dialect: engine.dialect, strings, values }))).rows,\n\n $executeRaw: async (strings: TemplateStringsArray, ...values: unknown[]): Promise<number> =>\n (await runRaw(\"$executeRaw\", buildRawStatement({ dialect: engine.dialect, strings, values }))).affectedRows,\n\n $queryRawUnsafe: async (text: string, ...values: unknown[]): Promise<ClientRow[]> =>\n (await runRaw(\"$queryRawUnsafe\", { text, values })).rows,\n\n $executeRawUnsafe: async (text: string, ...values: unknown[]): Promise<number> =>\n (await runRaw(\"$executeRawUnsafe\", { text, values })).affectedRows,\n\n $advisoryLock: async (options: AdvisoryLockOptions): Promise<void> => {\n await runAdvisoryLock({ method: \"$advisoryLock\", options });\n },\n\n $tryAdvisoryLock: (options: AdvisoryLockOptions): Promise<boolean> =>\n runAdvisoryLock({ method: \"$tryAdvisoryLock\", options }),\n\n $connect: async (): Promise<void> => {\n assertEngineActive({ engine, requireContext: false });\n if (engine.borrowedModule === true) throw new VibeError({ code: \"VIBE_VALIDATION\", message: \"A package module borrows its adapter; the application owns connection lifecycle\", meta: { reason: \"module_borrowed_lifecycle\", method: \"$connect\" } });\n if (engine.inTransaction === true) throw transactionLifecycleRefusal({ method: \"$connect\" });\n if (engine.rlsSchema !== undefined) {\n await engine.adapter.connect();\n await engineTransaction({ engine, requireContext: false, run: async (target) => {\n for (const hook of engine.connectHooks ?? []) {\n await hook({ execute: (query) => target.adapter.execute({ text: query.text, values: [...(query.values ?? [])] }) });\n }\n } });\n return;\n }\n await engine.adapter.connect();\n for (const hook of engine.connectHooks ?? []) {\n await hook({\n execute: (execParams) =>\n engine.adapter.execute({ text: execParams.text, values: [...(execParams.values ?? [])] }),\n });\n }\n },\n $disconnect: async (): Promise<void> => {\n assertEngineActive({ engine, requireContext: false });\n if (engine.borrowedModule === true) throw new VibeError({ code: \"VIBE_VALIDATION\", message: \"A package module borrows its adapter; the application owns connection lifecycle\", meta: { reason: \"module_borrowed_lifecycle\", method: \"$disconnect\" } });\n if (engine.inTransaction === true) throw transactionLifecycleRefusal({ method: \"$disconnect\" });\n // Outstanding EXPLAINs run on the pool, so they settle (bounded) BEFORE\n // the pool closes — never an unawaited statement, never a hang.\n await engine.diagnostics?.flush();\n await engine.adapter.disconnect();\n // Flush what we buffered — and NOTHING else. The provider behind a shared\n // exporter belongs to the host; disconnecting a database client must never\n // shut it down.\n await engine.telemetry?.flush();\n },\n };\n\n // Ergonomic access (`client.user.findMany()`). The generated client declares\n // these properties with precise types; here they are attached at runtime only.\n for (const model of engine.meta.models) {\n Object.defineProperty(client, model.clientName, {\n value: models[model.clientName],\n enumerable: true,\n });\n }\n\n attachExtensionMounts({ engine, client, models });\n attachDefineView({ client, meta: engine.meta, models });\n // Tenant scoping ($scoped) reads client.$models lazily at CALL time, so it\n // sees the final delegates too; on @@policy schemas it refuses outright,\n // which keeps the two scoping layers from ever composing silently.\n const wrapDelegate = engine.options?.strictArguments !== false\n ? (params: { model: string; delegate: ModelDelegate }): ModelDelegate => withStrictArguments({ engine, ...params })\n : undefined;\n if (engine.rlsSchema === undefined) attachScoped({ client, meta: engine.meta, ...(wrapDelegate === undefined ? {} : { wrapDelegate }) });\n // Policy scoping LAST: it must see the final delegates (extension mounts\n // included) so scoped extension surfaces inherit the rewrite; fail-closed\n // guards then land on the finished base client. No-op without @@policy.\n if (engine.rlsSchema === undefined) {\n registerPolicyOperations({ client, factory: (run) => createQueryPromise({\n engine,\n model: null,\n method: \"$policyOperation\",\n kind: \"transaction\",\n run: (target) => engineTransaction({ engine: target, run: (transactionEngine) => run(buildClient({ engine: transactionEngine })) }),\n }) });\n attachPolicy({ client, meta: engine.meta, ...(wrapDelegate === undefined ? {} : { wrapDelegate }) });\n attachReadOnly({\n client,\n meta: engine.meta,\n ...(engine.extensionMounts === undefined ? {} : { mounts: engine.extensionMounts }),\n operations: LAZY_OPERATIONS,\n });\n }\n else {\n const refuseLegacy = (): never => {\n throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Native row-level security cannot be combined with application policy or tenant scoping\" });\n };\n Object.defineProperties(client, {\n $withContext: { enumerable: true, value: (context: Readonly<Record<string, unknown>>): DynamicClient => {\n assertEngineActive({ engine, requireContext: false });\n if (engine.inTransaction) throw new RlsContextError({ reason: \"conflicting\" });\n return buildClient({ engine: { ...engine, context: bindRlsContext({ schema: engine.rlsSchema!, dialect: engine.dialect, context }) } });\n } },\n $scoped: { value: refuseLegacy },\n $withPolicy: { value: refuseLegacy },\n $bypassPolicy: { value: refuseLegacy },\n });\n // Not on the UNBOUND root: it cannot reach a row at all until an identity\n // is bound, and its generated type has no query surface to restrict.\n if (engine.context !== undefined) {\n attachReadOnly({\n client,\n meta: engine.meta,\n ...(engine.extensionMounts === undefined ? {} : { mounts: engine.extensionMounts }),\n operations: LAZY_OPERATIONS,\n });\n }\n for (const delegate of Object.values(models)) Object.freeze(delegate);\n Object.freeze(models);\n Object.freeze(client);\n }\n\n registerModuleBinder({ client, bind: ({ schema, manifest }) => {\n assertEngineActive({ engine, requireContext: false });\n if (engine.rlsSchema !== undefined || engine.meta.models.some((model) => model.policy !== undefined)) throw new VibeError({ code: \"VIBE_CONFIG\", message: `Module ${manifest.id} cannot attach models to a policy or native-RLS context`, meta: { reason: \"module_restricted_context\", moduleId: manifest.id } });\n if (manifest.dialect !== engine.dialect.name) throw new VibeError({ code: \"VIBE_UNSUPPORTED_CAPABILITY\", message: `Module ${manifest.id} requires ${manifest.dialect}, received ${engine.dialect.name}`, meta: { reason: \"module_dialect\", moduleId: manifest.id } });\n const previous = engine.moduleManifests.get(manifest.id);\n if (previous !== undefined && (previous.schemaChecksum !== manifest.schemaChecksum || previous.revision !== manifest.revision || previous.contract !== manifest.contract)) throw new VibeError({ code: \"VIBE_CONFIG\", message: `Module ${manifest.id} was already bound with a different manifest; use compatible package artifacts`, meta: { reason: \"module_manifest_conflict\", moduleId: manifest.id, revision: manifest.revision } });\n let meta = moduleMetadata.get(schema);\n if (meta === undefined) {\n meta = buildRuntimeMeta({ schema });\n registerRestrictedSqlSchema({ meta, schema });\n moduleMetadata.set(schema, meta);\n }\n engine.moduleManifests.set(manifest.id, manifest);\n const { validate: _validate, ...options } = engine.options;\n return buildClient({ engine: { ...engine, meta, options, borrowedModule: true, extensionMounts: [], connectHooks: [], renderCache: new StatementRenderCache() } });\n } });\n return client;\n}\n\n// ─── Extension mounts (D9 — baked surfaces) ────────────────────\n\nfunction makeMountContext(params: {\n engine: Engine;\n extension: string;\n model: ModelMeta | null;\n}): ExtensionMountContext {\n const { engine, extension, model } = params;\n return {\n extension,\n dialect: engine.dialect,\n provider: engine.adapter.provider,\n meta: engine.meta,\n model,\n executeRows: async ({ text, values, method }) => {\n const scope = beginOperation({\n engine,\n kind: \"extension\",\n model: model?.name ?? null,\n method: method ?? extension,\n });\n scope?.dispatch();\n const running = executeOperation({\n engine: scope === undefined ? engine : { ...engine, operation: scope },\n run: async (target) => {\n const rows = await runStatement<ClientRow[]>({\n engine: target,\n kind: \"extension\",\n model: model?.name ?? null,\n method: method ?? extension,\n text,\n values,\n rowCount: (value: ClientRow[]): number => value.length,\n run: (): Promise<ClientRow[]> =>\n target.adapter.execute({\n text,\n values: bindValues({ adapter: target.adapter, values: [...values] }),\n }),\n });\n return model === null\n ? rows\n : materializeRows({ dialect: target.dialect.name, model, rows, wire: target.adapter.wire });\n },\n });\n if (scope !== undefined) settleWith({ scope, running });\n return await running;\n },\n compileWhere: ({ where, model: modelName, qualify }) => {\n const target =\n modelName === undefined\n ? model\n : getModelMeta({ meta: engine.meta, model: modelName });\n if (target === null) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `extension \"${extension}\" compiled a where with no model in scope`,\n meta: { extension },\n });\n }\n // The delegate wrapper never sees a mounted surface's arguments, so the\n // strict check runs HERE: a mount's `where` must not keep legacy widening\n // on a client whose default is strict.\n const checked = engine.options?.strictArguments !== false\n ? checkStrictArguments({ meta: engine.meta, model: target, method: `${extension}.compileWhere`, args: { where } })\n : undefined;\n return compileWhere({\n dialect: engine.dialect,\n meta: engine.meta,\n model: target,\n where: (checked === undefined ? where : checked.where) as typeof where,\n ...(qualify === undefined ? {} : { qualify }),\n });\n },\n };\n}\n\n/** Recreate a mount on the operation engine, so all of a method's statements share its identity. */\nfunction createMountSurface(params: { engine: Engine; mount: ClientExtensionMount; model: ModelMeta | null }): unknown {\n const { engine, mount, model } = params;\n const original = mount.create(makeMountContext({ engine, extension: mount.extension, model }));\n if (engine.rlsSchema === undefined) return original;\n const wrap = (value: unknown, path: readonly PropertyKey[]): unknown => {\n if (typeof value === \"function\") {\n return (...args: unknown[]): Promise<unknown> => createQueryPromise({ engine, run: async (target) => {\n let current = mount.create(makeMountContext({ engine: target, extension: mount.extension, model }));\n let receiver: unknown = undefined;\n for (const key of path) {\n receiver = current;\n if (current === null || (typeof current !== \"object\" && typeof current !== \"function\")) throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Extension mount changed its method shape\" });\n current = Reflect.get(current, key);\n }\n if (typeof current !== \"function\") throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Extension mount changed its method shape\" });\n return Reflect.apply(current, receiver, args);\n } });\n }\n if (value === null || typeof value !== \"object\") return value;\n if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {\n throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Native RLS extension mounts must expose plain objects and methods\" });\n }\n const result: Record<PropertyKey, unknown> = {};\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key)!;\n if (!(\"value\" in descriptor)) throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Native RLS extension mount accessors are unsupported\" });\n Object.defineProperty(result, key, { value: wrap(descriptor.value, [...path, key]), enumerable: descriptor.enumerable });\n }\n return Object.freeze(result);\n };\n return wrap(original, []);\n}\n\n/**\n * Attach the baked extension surfaces. Runs on EVERY client build — the\n * `$transaction` path rebuilds the client over the tx adapter, so mounted\n * surfaces execute on the transaction connection like core delegates do.\n */\nfunction attachExtensionMounts(params: {\n engine: Engine;\n client: DynamicClient;\n models: Record<string, ModelDelegate>;\n}): void {\n const { engine, client, models } = params;\n const mounts = engine.extensionMounts;\n if (mounts === undefined) return;\n\n for (const mount of mounts) {\n if (mount.scope === \"model\") {\n const model = getModelMeta({ meta: engine.meta, model: mount.model ?? \"\" });\n const delegate = models[model.name];\n if (delegate === undefined || mount.property in delegate) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `extension \"${mount.extension}\" cannot mount \"${mount.property}\" on ${model.name} — the name is taken`,\n meta: { extension: mount.extension, model: model.name, property: mount.property },\n });\n }\n const value = createMountSurface({ engine, mount, model });\n // configurable: a LATER layer (attachPolicy's fail-closed guards) must be\n // able to redefine this property on the same delegate object. The client's\n // own `client.<model>` property is non-configurable and holds this exact\n // object, so guarding can only happen in place (F05).\n Object.defineProperty(delegate, mount.property, { value, enumerable: true, configurable: true });\n continue;\n }\n\n if (!mount.property.startsWith(\"$\") || mount.property in client) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `extension \"${mount.extension}\" cannot mount client property \"${mount.property}\" — root mounts are $-prefixed and must not collide`,\n meta: { extension: mount.extension, property: mount.property },\n });\n }\n const value = createMountSurface({ engine, mount, model: null });\n Object.defineProperty(client, mount.property, { value, enumerable: true });\n }\n}\n\n/**\n * Build a client for a schema over an adapter.\n *\n * The adapter chooses the dialect: the same IR runs on postgres, sqlite or\n * mysql, and every dialect difference is resolved by `@vibeorm/sql` and the\n * codec table rather than by branching here.\n *\n * @example\n * const db = createClient({ schema, adapter });\n * const users = await db.$models.user.findMany({ where: { active: true } });\n */\nexport function createClient(params: {\n schema: SchemaIR;\n adapter: DatabaseAdapter;\n options?: ClientOptions;\n /** Extension wiring — baked mounts + manifest from the generated client, live instances from the caller. */\n extensions?: ClientExtensionsOptions;\n /** Computed-field wiring — baked manifest from the generated client, live specs from the caller. */\n computed?: ClientComputedOptions;\n}): DynamicClient {\n const { schema, adapter, options, extensions, computed } = params;\n const dialectName: Dialect = adapter.dialect;\n // Built once per client and shared with every transaction engine; invalid\n // telemetry configuration fails here, not at the first query.\n const telemetry =\n options?.telemetry === undefined ? undefined : createTelemetryRecorder({ options: options.telemetry });\n // Refused here rather than at the first include: a bad concurrency is a\n // configuration mistake, and this is the earliest point it is knowable.\n resolveRelationConcurrency({ concurrency: options?.relationLoading?.concurrency });\n // Same for diagnostics: the env switch and the option are validated once,\n // here; with neither present no hook exists and runStatement pays nothing.\n const diagnosticsConfig = resolveStatementDiagnostics({\n options: options?.diagnostics,\n env: process.env[STATEMENT_DIAGNOSTICS_DEFAULTS.envVariable],\n });\n const diagnostics =\n diagnosticsConfig === undefined\n ? undefined\n : createStatementDiagnostics({ config: diagnosticsConfig, adapter, dialect: getSqlDialect({ dialect: dialectName }) });\n if (\n diagnosticsConfig !== undefined &&\n diagnosticsConfig.explain === \"analyze\" &&\n diagnosticsConfig.slowerThanMs < STATEMENT_DIAGNOSTICS_DEFAULTS.analyzeWarnBelowMs\n ) {\n console.warn(\n `[vibeorm] diagnostics: explain \"analyze\" with slowerThanMs ${diagnosticsConfig.slowerThanMs} re-executes every read statement under EXPLAIN ANALYZE — set a threshold, and never use this against production`,\n );\n }\n if (schema.rls !== undefined) {\n const dialect = getSqlDialect({ dialect: dialectName });\n if (!dialect.capabilities.nativeRowLevelSecurity) throw unsupportedCapability({ dialect: dialectName, feature: \"nativeRowLevelSecurity\" });\n assertValidSchemaIR({ schema });\n for (const model of schema.models) {\n if (model.rls !== \"unprotected\") renderRlsPolicy({ dialect, schema, model: model.name });\n }\n const role = options?.nativeRls?.runtimeRole;\n if (adapter.provider === \"pglite\") {\n if (typeof role !== \"string\" || role.length === 0 || role.includes(\"\\0\")) throw new VibeError({ code: \"VIBE_CONFIG\", message: \"PGlite native row-level security requires a pre-existing restricted runtimeRole; embedded binding is not a boundary against the host process\" });\n } else if (role !== undefined) {\n throw new VibeError({ code: \"VIBE_CONFIG\", message: \"Server native row-level security must use the runtime login role, not a runtimeRole switch\" });\n }\n }\n\n // Staleness gate (extensions.md §3.2): a baked manifest must match the live\n // extension list BEFORE any query runs.\n if (extensions?.manifest !== undefined) {\n assertExtensionManifest({ manifest: extensions.manifest, instances: extensions.instances });\n }\n // Same gate for computed fields: the generated .d.ts promised these types.\n if (computed?.manifest !== undefined) {\n assertComputedManifest({ manifest: computed.manifest, specs: computed.specs });\n }\n // A client generated WITHOUT computed fields spreads a stray `computed`\n // option into ClientOptions — refuse it instead of silently ignoring it.\n if (\n computed === undefined &&\n options !== undefined &&\n (options as Record<string, unknown>)[\"computed\"] !== undefined\n ) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message:\n \"this client was generated without computed fields — declare them in vibeorm.config.ts and re-run vibeorm generate\",\n meta: {},\n });\n }\n\n const instances = extensions?.instances ?? [];\n const operatorMap =\n instances.length === 0\n ? null\n : buildExtensionOperatorMap({ instances, dialect: dialectName, provider: adapter.provider });\n const connectHooks =\n instances.length === 0\n ? []\n : buildConnectHooks({ instances, dialect: dialectName, provider: adapter.provider });\n\n const baseMeta = buildRuntimeMeta({\n schema,\n ...(computed?.specs === undefined ? {} : { computed: computed.specs }),\n });\n const meta: RuntimeMeta =\n operatorMap === null ? baseMeta : { ...baseMeta, extensionOperators: operatorMap };\n registerRestrictedSqlSchema({ meta, schema });\n\n return buildClient({\n engine: {\n rootIdentity: Object.freeze({}),\n moduleManifests: new Map(),\n ...(schema.rls === undefined ? {} : { rlsSchema: schema }),\n meta,\n adapter,\n dialect: getSqlDialect({ dialect: dialectName }),\n options: schema.rls === undefined ? options ?? {} : Object.freeze({ ...options, nativeRls: Object.freeze({ ...options?.nativeRls }) }),\n listeners: new Set(),\n renderCache: new StatementRenderCache(),\n ...(telemetry === undefined ? {} : { telemetry }),\n ...(diagnostics === undefined ? {} : { diagnostics }),\n ...(extensions?.mounts === undefined ? {} : { extensionMounts: extensions.mounts }),\n ...(connectHooks.length === 0 ? {} : { connectHooks }),\n },\n });\n}\n",
|
|
40
40
|
"/**\n * The compiled-query cache — §9's \"query-shape cache (structural hash → SQL\n * skeleton)\", constitution rule 8 (perf) under rule 3's constraint: the SQL\n * text is ALWAYS the renderer's, byte-identical — this module never builds SQL.\n *\n * How it works: a statement AST is walked ONCE, producing (a) a structural key\n * covering everything that affects the rendered text — kinds, identifiers,\n * operators, flags, literal LIMIT/OFFSET, arity where a dialect expands\n * placeholders per element — and (b) the parameter values in exactly the\n * renderer's collection order. A key hit reuses the cached text with the fresh\n * values; a miss renders for real and caches the text.\n *\n * SAFETY: the walk mirrors @vibeorm/sql's render traversal. Two guards keep a\n * divergence from ever mis-binding parameters:\n * 1. every MISS cross-checks the walked values against the renderer's\n * collected values (element-wise); a mismatch poisons the key so that\n * shape renders uncached forever, and\n * 2. constructs with dialect-conditional value branching that is not worth\n * mirroring (jsonFilter) are declared uncacheable outright.\n * The cache is invalidation-free by construction: the key IS the shape, and\n * equal shapes render equal text (shape-purity). Statement ASTs are treated as\n * immutable by the whole runtime, so cached texts can never go stale.\n */\n\nimport {\n isSqlFragment,\n isDbNowMarker,\n isJsonParamCell,\n isListSetOperation,\n isSetOperation,\n isSqlDefaultCell,\n renderStatement,\n strictMatchPattern,\n} from \"@vibeorm/sql\";\nimport type {\n AggRef,\n ColRef,\n DeleteStatement,\n InsertStatement,\n OrderTerm,\n RenderedQuery,\n SelectStatement,\n SqlDialect,\n SqlExpr,\n SqlStatement,\n TableRef,\n UpdateStatement,\n} from \"@vibeorm/sql\";\n\n// ─── Cache ────────────────────────────────────────────────────────\n\ntype CachedText = {\n readonly text: string;\n readonly returning: \"native\" | \"omitted\" | \"none\";\n};\n\n/** `null` = poisoned: this shape verified unsafe once — never cache it. */\ntype CacheSlot = CachedText | null;\n\nconst MAX_ENTRIES = 512;\n\n/**\n * One per client (dialect-stable); shared across its transaction clients.\n *\n * Bounded by least-recently-used eviction. LIMIT and OFFSET are rendered as\n * literals and are therefore part of the key, so one offset-paginated query is\n * a NEW shape per page: a single endpoint walking a large table produces\n * hundreds of entries on its own. Evicting the entry that has gone longest\n * without a read keeps the hot shapes cached through that churn; the earlier\n * \"clear everything at the cap\" policy threw the hot shapes away with the\n * pages and re-rendered them until the cache had refilled.\n *\n * A `Map` iterates in insertion order, so recency is kept by re-inserting on\n * every hit: the first key is always the least recently used.\n */\nexport class StatementRenderCache {\n private readonly entries: Map<string, CacheSlot> = new Map();\n\n /** Number of cached shapes (poisoned ones included). */\n get size(): number {\n return this.entries.size;\n }\n\n get(key: string): CacheSlot | undefined {\n const slot = this.entries.get(key);\n if (slot === undefined) return undefined;\n this.entries.delete(key);\n this.entries.set(key, slot);\n return slot;\n }\n\n set(key: string, slot: CacheSlot): void {\n if (this.entries.has(key)) {\n this.entries.delete(key);\n } else if (this.entries.size >= MAX_ENTRIES) {\n const oldest = this.entries.keys().next();\n if (!oldest.done) this.entries.delete(oldest.value);\n }\n this.entries.set(key, slot);\n }\n}\n\n// ─── Shape walk (key + values, in render order) ───────────────────\n\ntype Walk = {\n key: string;\n readonly values: unknown[];\n};\n\n/** Length-prefixed so adjacent names can never collide across boundaries. */\nfunction addIdent(walk: Walk, name: string): void {\n walk.key += `§${name.length}~${name}`;\n}\n\nfunction addCol(walk: Walk, column: ColRef): void {\n if (column.table !== undefined) addIdent(walk, column.table);\n walk.key += \".\";\n addIdent(walk, column.name);\n // B3/B4 wire transforms change the rendered text — part of the shape.\n if (column.transform !== undefined) walk.key += column.transform === \"castText\" ? \"^t\" : \"^b\";\n if (column.castReal === true) walk.key += \"^r\";\n // Projection alias (`… AS \"__vibe_parent\"`) is rendered text — shape.\n if (column.alias !== undefined) {\n walk.key += \"^a\";\n addIdent(walk, column.alias);\n }\n}\n\nfunction addTable(walk: Walk, table: TableRef): void {\n addIdent(walk, table.name);\n if (table.alias !== undefined) {\n walk.key += \"@\";\n addIdent(walk, table.alias);\n }\n}\n\nfunction addAgg(walk: Walk, agg: AggRef): void {\n walk.key += agg.fn;\n if (agg.fn !== \"countAll\") addCol(walk, agg.column);\n}\n\n/** SET/DO UPDATE SET entry — mirrors renderAssignments' value forms. */\nfunction addSetEntry(walk: Walk, name: string, value: unknown): void {\n if (isJsonParamCell(value)) {\n // F11: the renderer binds the cell's TEXT and appends the dialect's json\n // param cast — both are shape. Without the `=j` marker a null-first write\n // (`=v`) and a JSON write collide on one key, and without `.text` the\n // internal cell object itself would be bound as the parameter.\n walk.key += \"=j\";\n addIdent(walk, name);\n walk.values.push(value.text);\n return;\n }\n if (isSetOperation(value)) {\n walk.key += `=o${value.__op}`;\n addIdent(walk, name);\n walk.values.push(value.value);\n return;\n }\n if (isDbNowMarker(value)) {\n // Text differs between zero and non-zero offsets; only the non-zero form\n // binds the offset as a parameter.\n walk.key += value.offsetSeconds === 0 ? \"=N0\" : \"=N1\";\n addIdent(walk, name);\n if (value.offsetSeconds !== 0) walk.values.push(value.offsetSeconds);\n return;\n }\n if (isListSetOperation(value)) {\n walk.key += `=l${value.__listOp}`;\n addIdent(walk, name);\n walk.values.push(value.value);\n return;\n }\n walk.key += \"=v\";\n addIdent(walk, name);\n walk.values.push(value);\n}\n\nfunction addReturning(walk: Walk, returning: readonly string[] | undefined): void {\n if (returning === undefined || returning.length === 0) {\n walk.key += \"r0\";\n return;\n }\n walk.key += \"r(\";\n for (const name of returning) addIdent(walk, name);\n walk.key += \")\";\n}\n\n/** Mirrors renderExpr; returns false when the expression is uncacheable. */\nfunction walkExpr(walk: Walk, dialect: SqlDialect, expr: SqlExpr): boolean {\n switch (expr.kind) {\n case \"cmp\":\n if (isDbNowMarker(expr.value)) {\n walk.key += `cN${expr.op}${expr.value.offsetSeconds === 0 ? \"0\" : \"1\"}`;\n addCol(walk, expr.column);\n if (expr.value.offsetSeconds !== 0) walk.values.push(expr.value.offsetSeconds);\n return true;\n }\n walk.key += `c${expr.op}`;\n addCol(walk, expr.column);\n walk.values.push(expr.value);\n return true;\n\n case \"cmpCol\":\n walk.key += `k${expr.op}`;\n addCol(walk, expr.left);\n addCol(walk, expr.right);\n return true;\n\n case \"isNull\":\n walk.key += expr.negate === true ? \"n1\" : \"n0\";\n addCol(walk, expr.column);\n return true;\n\n case \"inArray\": {\n if (expr.values.length === 0) {\n walk.key += expr.negate === true ? \"z1\" : \"z0\";\n return true;\n }\n walk.key += expr.negate === true ? \"i1\" : \"i0\";\n addCol(walk, expr.column);\n if (dialect.inArrayStrategy === \"any\") {\n // One array parameter — the renderer copies, so the walk copies too.\n walk.values.push([...expr.values]);\n } else {\n // Expanded placeholders: arity is part of the text.\n walk.key += `#${expr.values.length}`;\n for (const value of expr.values) walk.values.push(value);\n }\n return true;\n }\n\n case \"tupleIn\": {\n // Mirrors renderExpr's tupleIn case. The TEXT is decided by `negate`, the\n // column identifiers and the two arities (values per tuple, tuples); the\n // VALUES are collected row by row, each row in column order — the same\n // sequence under BOTH `rowValue` (one addMany per row) and `expand` (one\n // add per member, ascending index). Strategy itself is fixed per dialect\n // and the cache is per dialect instance, so it stays out of the key.\n if (expr.columns.length === 0) return false; // renderer throws on this shape\n walk.key += `Tu${expr.negate === true ? \"1\" : \"0\"}${expr.columns.length}#${expr.rows.length}(`;\n for (const column of expr.columns) addCol(walk, column);\n walk.key += \")\";\n // Empty membership renders the constant `1 = 1` / `1 = 0` and binds nothing.\n if (expr.rows.length === 0) return true;\n for (const row of expr.rows) {\n // Ragged rows make the renderer throw — never key such a shape.\n if (row.length !== expr.columns.length) return false;\n for (const value of row) walk.values.push(value);\n }\n return true;\n }\n\n case \"like\":\n walk.key += `L${expr.insensitive === true ? \"i\" : \"s\"}${expr.negate === true ? \"n\" : \"p\"}`;\n addCol(walk, expr.column);\n walk.values.push(expr.pattern);\n return true;\n\n case \"strictMatch\":\n // #20 — mirrors the renderer's strictMatch case: the text depends on op\n // + strategy (both in the key via op; strategy is fixed per dialect,\n // and the cache is per dialect instance), and the BOUND value is the\n // DERIVED pattern for pattern ops — the shared strictMatchPattern\n // helper keeps this mirror and the renderer from drifting.\n walk.key += `S${expr.op}${expr.negate === true ? \"n\" : \"p\"}`;\n addCol(walk, expr.column);\n walk.values.push(\n expr.op === \"equals\"\n ? expr.value\n : strictMatchPattern({ strategy: dialect.strictMatchStrategy, op: expr.op, value: expr.value }),\n );\n return true;\n\n case \"and\":\n case \"or\": {\n walk.key += `${expr.kind === \"and\" ? \"A\" : \"O\"}${expr.operands.length}(`;\n for (const operand of expr.operands) {\n if (!walkExpr(walk, dialect, operand)) return false;\n }\n walk.key += \")\";\n return true;\n }\n\n case \"not\":\n walk.key += \"!(\";\n if (!walkExpr(walk, dialect, expr.operand)) return false;\n walk.key += \")\";\n return true;\n\n case \"exists\":\n walk.key += expr.negate === true ? \"E1(\" : \"E0(\";\n if (!walkSelect(walk, dialect, expr.select)) return false;\n walk.key += \")\";\n return true;\n\n case \"aggCmp\":\n walk.key += `g${expr.op}`;\n addAgg(walk, expr.agg);\n walk.values.push(expr.value);\n return true;\n\n case \"arrayHas\":\n walk.key += expr.negate === true ? \"h1\" : \"h0\";\n addCol(walk, expr.column);\n walk.values.push(expr.value);\n return true;\n\n case \"arrayContainsAll\":\n walk.key += \"H\";\n addCol(walk, expr.column);\n walk.values.push([...expr.values]);\n return true;\n\n case \"arrayOverlaps\":\n walk.key += \"V\";\n addCol(walk, expr.column);\n walk.values.push([...expr.values]);\n return true;\n\n case \"arrayIsEmpty\":\n walk.key += expr.empty ? \"e1\" : \"e0\";\n addCol(walk, expr.column);\n return true;\n\n case \"jsonFilter\":\n // Value collection branches on dialect json mode AND operand type —\n // deliberately uncacheable rather than mirrored (see module docs).\n return false;\n\n case \"composed\":\n case \"fragment\":\n // Extension-defined part streams (extensions.md §3) — uncacheable, the\n // fragment owns its own text/param interleaving.\n return false;\n\n case \"raw\":\n // Text-only fragment: the text IS the shape.\n walk.key += \"R(\";\n addIdent(walk, expr.text);\n walk.key += \")\";\n return true;\n }\n}\n\n/** One ORDER BY term — column, aggregate, or correlated subquery (relation orderBy). */\nfunction walkOrderTerm(walk: Walk, dialect: SqlDialect, term: OrderTerm): boolean {\n if (\"agg\" in term) {\n walk.key += \"a\";\n addAgg(walk, term.agg);\n } else if (\"select\" in term) {\n // Correlated subquery term: its parameters land in the shared sequence in\n // render order — walk the whole subselect.\n walk.key += \"q(\";\n if (!walkSelect(walk, dialect, term.select)) return false;\n walk.key += \")\";\n } else {\n addCol(walk, term.column);\n walk.key += term.nulls === undefined ? \"-\" : term.nulls === \"first\" ? \"^\" : \"$\";\n }\n walk.key += term.direction === \"asc\" ? \"+\" : \"~\";\n return true;\n}\n\n/**\n * Mirrors renderSelect. Value order there: rowNumber OVER-order subqueries\n * (projection renders first) → fromSelect → lateralJoins → where → having →\n * orderBy subqueries (everything else is parameter-free; LIMIT/OFFSET are\n * literals and therefore live in the KEY).\n */\nfunction walkSelect(walk: Walk, dialect: SqlDialect, statement: SelectStatement): boolean {\n walk.key += \"S{\";\n if (statement.distinctOn !== undefined && statement.distinctOn.length > 0) {\n walk.key += \"d(\";\n for (const column of statement.distinctOn) addCol(walk, column);\n walk.key += \")\";\n }\n walk.key += \"p(\";\n for (const column of statement.columns) addCol(walk, column);\n walk.key += \")\";\n if (statement.selectExpr !== undefined) {\n if (statement.selectExpr.kind === \"one\") {\n walk.key += \"x1\";\n } else {\n walk.key += \"xc\";\n if (statement.selectExpr.alias !== undefined) addIdent(walk, statement.selectExpr.alias);\n }\n }\n if (statement.aggregates !== undefined) {\n for (const selection of statement.aggregates) {\n walk.key += \"a\";\n addAgg(walk, selection.agg);\n addIdent(walk, selection.alias);\n }\n }\n if (statement.rowNumber !== undefined) {\n walk.key += \"W(\";\n for (const column of statement.rowNumber.partitionBy) addCol(walk, column);\n walk.key += \":\";\n for (const term of statement.rowNumber.orderBy) {\n if (!walkOrderTerm(walk, dialect, term)) return false;\n }\n addIdent(walk, statement.rowNumber.alias);\n walk.key += \")\";\n }\n walk.key += \"f\";\n addTable(walk, statement.table);\n if (statement.fromSelect !== undefined) {\n walk.key += \"F(\";\n if (!walkSelect(walk, dialect, statement.fromSelect)) return false;\n walk.key += \")\";\n }\n if (statement.innerJoins !== undefined && statement.innerJoins.length > 0) {\n for (const join of statement.innerJoins) {\n walk.key += \"J(\";\n addTable(walk, join.table);\n for (const pair of join.on) {\n addCol(walk, pair.left);\n walk.key += \"=\";\n addCol(walk, pair.right);\n }\n walk.key += \")\";\n }\n }\n if (statement.lateralJoins !== undefined && statement.lateralJoins.length > 0) {\n for (const join of statement.lateralJoins) {\n walk.key += join.agg === \"count\" ? \"Jc(\" : join.agg === \"jsonArray\" ? \"Ja(\" : \"Jo(\";\n walk.key += join.rowFormat === \"positional\" ? \"pos;\" : \"obj;\";\n if (!walkSelect(walk, dialect, join.select)) return false;\n addIdent(walk, join.columnAlias);\n addIdent(walk, join.alias);\n walk.key += \")\";\n }\n }\n if (statement.where !== undefined) {\n walk.key += \"w\";\n if (!walkExpr(walk, dialect, statement.where)) return false;\n }\n if (statement.groupBy !== undefined && statement.groupBy.length > 0) {\n walk.key += \"b(\";\n for (const column of statement.groupBy) addCol(walk, column);\n walk.key += \")\";\n }\n if (statement.having !== undefined) {\n walk.key += \"v\";\n if (!walkExpr(walk, dialect, statement.having)) return false;\n }\n if (statement.orderBy !== undefined && statement.orderBy.length > 0) {\n walk.key += \"o(\";\n for (const term of statement.orderBy) {\n if (!walkOrderTerm(walk, dialect, term)) return false;\n }\n walk.key += \")\";\n }\n if (statement.limit !== undefined) walk.key += `t${statement.limit}`;\n if (statement.offset !== undefined) walk.key += `s${statement.offset}`;\n // The lock is part of the SQL text: strength and wait policy both render, so\n // both belong in the key (`u:update/skipLocked`). A lock a dialect renders as\n // nothing still keys distinctly — keys may be finer than the text, never coarser.\n if (statement.rowLock !== undefined) {\n walk.key += `u:${statement.rowLock.strength}/${statement.rowLock.wait}`;\n }\n walk.key += \"}\";\n return true;\n}\n\n/** Mirrors renderInsert: values row-major, then ON CONFLICT update entries. */\nfunction walkInsert(walk: Walk, dialect: SqlDialect, statement: InsertStatement): boolean {\n walk.key += \"I{\";\n addTable(walk, statement.table);\n walk.key += \"c(\";\n for (const name of statement.columns) addIdent(walk, name);\n walk.key += `)r${statement.rows.length}`;\n const arity = statement.columns.length;\n for (let rowIndex = 0; rowIndex < statement.rows.length; rowIndex++) {\n const row = statement.rows[rowIndex] as readonly unknown[];\n // A malformed row must reach the renderer's own arity error — never a hit.\n if (row.length !== arity) return false;\n for (let cell = 0; cell < row.length; cell++) {\n const value = row[cell];\n // M4: a DEFAULT cell is TEXT, not a parameter — its POSITION is shape.\n if (isSqlDefaultCell(value)) walk.key += `D${rowIndex}:${cell};`;\n else if (isJsonParamCell(value)) {\n // F11: json cell — cast text at this POSITION, bound to the cell's text.\n walk.key += `J${rowIndex}:${cell};`;\n walk.values.push(value.text);\n } else if (isDbNowMarker(value)) {\n // Database-clock cell: expression text (zero offset) or one bound param.\n walk.key += `T${rowIndex}:${cell}:${value.offsetSeconds === 0 ? \"0\" : \"1\"};`;\n if (value.offsetSeconds !== 0) walk.values.push(value.offsetSeconds);\n } else walk.values.push(value);\n }\n }\n const onConflict = statement.onConflict;\n if (onConflict !== undefined) {\n if (\"doNothing\" in onConflict) {\n walk.key += \"N(\";\n if (onConflict.constraint !== undefined) {\n walk.key += \"K\";\n addIdent(walk, onConflict.constraint);\n }\n if (onConflict.columns !== undefined) {\n for (const name of onConflict.columns) addIdent(walk, name);\n }\n if (onConflict.conflictWhere !== undefined) {\n // Raw predicate text — part of the SHAPE, no parameters.\n walk.key += \"w\";\n addIdent(walk, onConflict.conflictWhere);\n }\n walk.key += \")\";\n } else {\n if (Object.values(onConflict.update).some(isSqlFragment)) return false;\n walk.key += \"U(\";\n if (onConflict.constraint !== undefined) {\n walk.key += \"K\";\n addIdent(walk, onConflict.constraint);\n }\n for (const name of onConflict.columns) addIdent(walk, name);\n walk.key += \":\";\n for (const [name, value] of Object.entries(onConflict.update)) addSetEntry(walk, name, value);\n if (onConflict.lastInsertIdColumn !== undefined) {\n walk.key += \"@\";\n addIdent(walk, onConflict.lastInsertIdColumn);\n }\n walk.key += \")\";\n }\n }\n addReturning(walk, statement.returning);\n walk.key += \"}\";\n return true;\n}\n\n/** Mirrors renderUpdate: SET entries, then WHERE. */\nfunction walkUpdate(walk: Walk, dialect: SqlDialect, statement: UpdateStatement): boolean {\n walk.key += \"U{\";\n addTable(walk, statement.table);\n for (const [name, value] of Object.entries(statement.set)) addSetEntry(walk, name, value);\n if (statement.where !== undefined) {\n walk.key += \"w\";\n if (!walkExpr(walk, dialect, statement.where)) return false;\n }\n addReturning(walk, statement.returning);\n walk.key += \"}\";\n return true;\n}\n\nfunction walkDelete(walk: Walk, dialect: SqlDialect, statement: DeleteStatement): boolean {\n walk.key += \"D{\";\n addTable(walk, statement.table);\n if (statement.where !== undefined) {\n walk.key += \"w\";\n if (!walkExpr(walk, dialect, statement.where)) return false;\n }\n addReturning(walk, statement.returning);\n walk.key += \"}\";\n return true;\n}\n\nfunction walkStatement(walk: Walk, dialect: SqlDialect, statement: SqlStatement): boolean {\n switch (statement.kind) {\n case \"select\":\n return walkSelect(walk, dialect, statement);\n case \"insert\":\n return walkInsert(walk, dialect, statement);\n case \"update\":\n return walkUpdate(walk, dialect, statement);\n case \"delete\":\n return walkDelete(walk, dialect, statement);\n // RLS statements are DDL/session shapes rendered once per migration or per\n // transaction, never in a hot loop — declared uncacheable rather than\n // walked, per the render-cache mirror rule (an unmirrored branch would\n // reuse cached SQL and silently drop params).\n case \"rlsEnable\":\n case \"rlsForce\":\n case \"rlsDisable\":\n case \"rlsNoForce\":\n case \"rlsDropPolicy\":\n case \"rlsPolicy\":\n case \"rlsContext\":\n case \"rlsRole\":\n // One advisory lock per resource per transaction: not a hot loop either,\n // and its key is a parameter, so caching the shape would buy nothing.\n case \"advisoryLock\":\n return false;\n }\n}\n\n// ─── Miss-time verification ───────────────────────────────────────\n\n/**\n * Element-wise identity, with one-level array content equality — the renderer\n * copies array params (`[...values]`), so a fresh copy with identical elements\n * counts as the same value.\n */\nfunction sameValues(walked: readonly unknown[], rendered: readonly unknown[]): boolean {\n if (walked.length !== rendered.length) return false;\n for (let index = 0; index < walked.length; index++) {\n const a = walked[index];\n const b = rendered[index];\n if (a === b) continue;\n if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) {\n let equal = true;\n for (let element = 0; element < a.length; element++) {\n if (a[element] !== b[element]) {\n equal = false;\n break;\n }\n }\n if (equal) continue;\n }\n return false;\n }\n return true;\n}\n\n// ─── Entry point ──────────────────────────────────────────────────\n\n/**\n * Render through the shape cache: hit = cached text + freshly walked values;\n * miss = real render, cross-checked against the walk before caching. Anything\n * uncacheable (or a verification failure — poisoned) renders directly.\n */\nexport function renderStatementCached(params: {\n dialect: SqlDialect;\n statement: SqlStatement;\n cache: StatementRenderCache;\n}): RenderedQuery {\n const { dialect, statement, cache } = params;\n\n const walk: Walk = { key: \"\", values: [] };\n if (!walkStatement(walk, dialect, statement)) {\n return renderStatement({ dialect, statement });\n }\n\n const slot = cache.get(walk.key);\n if (slot !== undefined) {\n if (slot === null) return renderStatement({ dialect, statement });\n return { text: slot.text, values: walk.values, returning: slot.returning };\n }\n\n const rendered = renderStatement({ dialect, statement });\n cache.set(\n walk.key,\n sameValues(walk.values, rendered.values) ? { text: rendered.text, returning: rendered.returning } : null,\n );\n return rendered;\n}\n",
|
|
41
|
-
"/**\n * Strict argument handling (EPIC 2) — ON BY DEFAULT.\n *\n * Legacy (and Prisma's own default) semantics treat `where: { tenantId: undefined }`\n * exactly like `where: {}`: the member vanishes and a bulk write silently widens\n * to every row. That is the single most expensive footgun in an ORM argument\n * object, and it is invisible in review because the *code* names the filter.\n *\n * So an explicit `undefined` anywhere in ORM argument SYNTAX is refused before a\n * statement is built, and `SKIP` is the deliberate way to say \"omit this\n * property\". `strictArguments: false` on the client opts out and restores the\n * legacy behaviour; only that explicit `false` does — an options object that\n * never mentions the flag stays strict.\n *\n * What is NOT argument syntax, and is therefore never inspected:\n * - anything under a `Json`-typed field (a JSON document's own keys are data,\n * exactly as `validators.ts` and the query builder already treat them);\n * - non-plain objects (`Date`, `Uint8Array`, `Decimal`, any class instance);\n * - symbol-keyed properties.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\n\n// ─── The omission sentinel ────────────────────────────────────────\n\n/**\n * Omit a property deliberately: `{ where: { tenantId: SKIP } }` compiles exactly\n * like `{ where: {} }`, in strict mode and in legacy mode alike.\n *\n * A globally registered symbol, so a consumer that cannot import the runtime\n * (a generated-client-only app, a serialized argument builder) can name the very\n * same value with `Symbol.for(\"vibeorm.skip\")`.\n *\n * Named `SKIP`, not `skip`: `skip` is already a pagination argument, and\n * `{ take: 10, skip: SKIP }` must not read as two meanings of one word.\n */\nexport const SKIP: unique symbol = Symbol.for(\"vibeorm.skip\") as typeof SKIP;\n\n/** The type of the {@link SKIP} sentinel. */\nexport type Skip = typeof SKIP;\n\n// ─── Walk ─────────────────────────────────────────────────────────\n\nfunction explicitUndefined(params: { model: string; method: string; path: string }): VibeError {\n const { model, method, path } = params;\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n `${model}.${method}(): explicit undefined at ${path} — an undefined value is refused ` +\n `because it would silently drop the property (widening a filter or losing a write). ` +\n `Omit the property, or pass SKIP to omit it deliberately; ` +\n `VibeClient({ strictArguments: false }) restores the legacy behaviour.`,\n meta: { model, method, path },\n });\n}\n\n/**\n * A plain data object: `{}` or `Object.create(null)`. A `Date`, a `Uint8Array`,\n * a Decimal instance or any other class carries values, not argument syntax.\n */\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false;\n const proto: unknown = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\ntype WalkContext = {\n readonly meta: RuntimeMeta;\n readonly model: string;\n readonly method: string;\n};\n\n/**\n * The model a subtree is written against, and whether that subtree is a JSON\n * document (in which case it is left completely alone).\n */\nfunction descend(params: { ctx: WalkContext; model: ModelMeta; key: string }): ModelMeta | \"json\" {\n const { ctx, model, key } = params;\n const field = model.fieldByName.get(key);\n if (field !== undefined) return field.scalarType === \"Json\" ? \"json\" : model;\n const relation = model.relationByName.get(key);\n if (relation === undefined) return model;\n return ctx.meta.modelByName.get(relation.targetModel) ?? model;\n}\n\nfunction walkArray(params: {\n ctx: WalkContext;\n model: ModelMeta;\n value: readonly unknown[];\n path: string;\n filter: boolean;\n}): readonly unknown[] {\n const { ctx, model, value, path, filter } = params;\n let changed = false;\n const out = value.map((item, index) => {\n const next = walkNode({ ctx, model, value: item, path: `${path}[${index}]`, filter });\n if (next !== item) changed = true;\n return next;\n });\n return changed ? out : value;\n}\n\n/**\n * Refuse explicit `undefined`, strip `SKIP`. Returns the SAME reference when\n * nothing was stripped, so the common path allocates nothing.\n */\nfunction walkNode(params: { ctx: WalkContext; model: ModelMeta; value: unknown; path: string; filter?: boolean }): unknown {\n const { ctx, model, value, path } = params;\n const filter = params.filter === true;\n if (Array.isArray(value)) return walkArray({ ctx, model, value, path, filter });\n if (!isPlainObject(value)) return value;\n\n let out: Record<string, unknown> | null = null;\n for (const key of Object.keys(value)) {\n const child = value[key];\n const childPath = `${path}.${key}`;\n if (child === undefined) {\n throw explicitUndefined({ model: ctx.model, method: ctx.method, path: childPath });\n }\n if (child === SKIP) {\n out ??= { ...value };\n delete out[key];\n continue;\n }\n const target = descend({ ctx, model, key });\n if (target === \"json\") {\n // A filter's operator bag is ORM syntax; only its operands are documents.\n if (filter && isPlainObject(child)) {\n let filtered: Record<string, unknown> | null = null;\n for (const operator of Object.keys(child)) {\n if (child[operator] === undefined) {\n throw explicitUndefined({ model: ctx.model, method: ctx.method, path: `${childPath}.${operator}` });\n }\n if (child[operator] === SKIP) {\n filtered ??= { ...child };\n delete filtered[operator];\n }\n }\n if (filtered !== null) {\n out ??= { ...value };\n out[key] = filtered;\n }\n }\n continue;\n }\n const next = walkNode({ ctx, model: target, value: child, path: childPath,\n filter: key === \"where\" || key === \"having\" ? true\n : key === \"data\" || key === \"create\" || key === \"update\" ? false : filter,\n });\n if (next !== child) {\n out ??= { ...value };\n out[key] = next;\n }\n }\n return out ?? value;\n}\n\n/**\n * Check one public call's arguments. Runs BEFORE any wrapper can discard an\n * undefined member and before a statement is built, so a refused root operation\n * dispatches nothing at all.\n */\nexport function checkStrictArguments(params: {\n readonly meta: RuntimeMeta;\n readonly model: ModelMeta;\n readonly method: string;\n readonly args: Record<string, unknown> | undefined;\n}): Record<string, unknown> | undefined {\n const { meta, model, method, args } = params;\n if (args === undefined) return undefined;\n const ctx: WalkContext = { meta, model: model.clientName, method };\n const walked = walkNode({ ctx, model, value: args, path: \"args\" });\n return walked as Record<string, unknown>;\n}\n",
|
|
41
|
+
"/**\n * Strict argument handling (EPIC 2) — ON BY DEFAULT.\n *\n * Legacy (and Prisma's own default) semantics treat `where: { tenantId: undefined }`\n * exactly like `where: {}`: the member vanishes and a bulk write silently widens\n * to every row. That is the single most expensive footgun in an ORM argument\n * object, and it is invisible in review because the *code* names the filter.\n *\n * So an explicit `undefined` anywhere in ORM argument SYNTAX is refused before a\n * statement is built, and `SKIP` is the deliberate way to say \"omit this\n * property\". `strictArguments: false` on the client opts out and restores the\n * legacy behaviour; only that explicit `false` does — an options object that\n * never mentions the flag stays strict.\n *\n * What is NOT argument syntax, and is therefore never inspected:\n * - anything under a `Json`-typed field (a JSON document's own keys are data,\n * exactly as `validators.ts` and the query builder already treat them);\n * - non-plain objects (`Date`, `Uint8Array`, `Decimal`, any class instance);\n * - symbol-keyed properties.\n *\n * The walk classifies keys by the tree's STRUCTURE, never by field-name lookup\n * alone: an argument tree alternates between STRUCTURAL levels (`where`,\n * `data`, `select`, a relation's `some`/`create`/`connect` bag …) and FIELD\n * levels (the keys are the model's fields, relations and filter/logic\n * operators). Only at a field level does a key naming a `Json` field mean \"a\n * document starts here\" — a model whose Json column is literally named `data`\n * or `where` must not turn the `data:` / `where:` ARGUMENT into a document,\n * which would let an explicit `undefined` drop a write or widen a bulk delete\n * and bind `SKIP` as a parameter instead of stripping it.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\n\n// ─── The omission sentinel ────────────────────────────────────────\n\n/**\n * Omit a property deliberately: `{ where: { tenantId: SKIP } }` compiles exactly\n * like `{ where: {} }`, in strict mode and in legacy mode alike.\n *\n * A globally registered symbol, so a consumer that cannot import the runtime\n * (a generated-client-only app, a serialized argument builder) can name the very\n * same value with `Symbol.for(\"vibeorm.skip\")`.\n *\n * Named `SKIP`, not `skip`: `skip` is already a pagination argument, and\n * `{ take: 10, skip: SKIP }` must not read as two meanings of one word.\n */\nexport const SKIP: unique symbol = Symbol.for(\"vibeorm.skip\") as typeof SKIP;\n\n/** The type of the {@link SKIP} sentinel. */\nexport type Skip = typeof SKIP;\n\n// ─── Walk ─────────────────────────────────────────────────────────\n\nfunction explicitUndefined(params: { model: string; method: string; path: string }): VibeError {\n const { model, method, path } = params;\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n `${model}.${method}(): explicit undefined at ${path} — an undefined value is refused ` +\n `because it would silently drop the property (widening a filter or losing a write). ` +\n `Omit the property, or pass SKIP to omit it deliberately; ` +\n `VibeClient({ strictArguments: false }) restores the legacy behaviour.`,\n meta: { model, method, path },\n });\n}\n\n/**\n * A plain data object: `{}` or `Object.create(null)`. A `Date`, a `Uint8Array`,\n * a Decimal instance or any other class carries values, not argument syntax.\n */\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false;\n const proto: unknown = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\ntype WalkContext = {\n readonly meta: RuntimeMeta;\n readonly model: string;\n readonly method: string;\n};\n\n/**\n * Which vocabulary a level's keys belong to. `structural`: argument keywords\n * (the root of every call, and a relation's nested bag). `fields`: the model's\n * fields, relations and operators.\n */\ntype Level = \"structural\" | \"fields\";\n\n/**\n * What a structural keyword's VALUE is: a field level in filter position, a\n * field level in write/selection position, or another structural level.\n * Keywords are looked up before any field name, so a field that happens to be\n * called `data` cannot capture the `data:` argument.\n */\nconst STRUCTURAL_KEYWORDS: Readonly<Record<string, { level: Level; filter: boolean | \"inherit\" }>> = Object.freeze({\n // Filters.\n where: { level: \"fields\", filter: true },\n having: { level: \"fields\", filter: true },\n some: { level: \"fields\", filter: true },\n every: { level: \"fields\", filter: true },\n none: { level: \"fields\", filter: true },\n is: { level: \"fields\", filter: true },\n isNot: { level: \"fields\", filter: true },\n deleteMany: { level: \"fields\", filter: true },\n // Writes and unique selectors.\n data: { level: \"fields\", filter: false },\n create: { level: \"fields\", filter: false },\n set: { level: \"fields\", filter: false },\n connect: { level: \"fields\", filter: false },\n disconnect: { level: \"fields\", filter: false },\n delete: { level: \"fields\", filter: false },\n cursor: { level: \"fields\", filter: false },\n // Selection and ordering (values are booleans, directions or relation bags).\n select: { level: \"fields\", filter: \"inherit\" },\n include: { level: \"fields\", filter: \"inherit\" },\n omit: { level: \"fields\", filter: \"inherit\" },\n orderBy: { level: \"fields\", filter: \"inherit\" },\n // Bags of further keywords: `{ where, create }`, `{ where, create, update }`,\n // `{ data, skipDuplicates }`, `{ where, data }`, `{ select }`.\n connectOrCreate: { level: \"structural\", filter: \"inherit\" },\n upsert: { level: \"structural\", filter: \"inherit\" },\n createMany: { level: \"structural\", filter: \"inherit\" },\n updateMany: { level: \"structural\", filter: \"inherit\" },\n _count: { level: \"structural\", filter: \"inherit\" },\n // `update` is `{ where?, data }` on a to-many relation but a bare field\n // object on a to-one one: structural with the field fallback below.\n update: { level: \"structural\", filter: false },\n});\n\n/** Logical operators keep the current model and level. */\nconst LOGICAL_KEYS: ReadonlySet<string> = new Set([\"AND\", \"OR\", \"NOT\"]);\n\nfunction walkArray(params: {\n ctx: WalkContext;\n model: ModelMeta;\n value: readonly unknown[];\n path: string;\n level: Level;\n filter: boolean;\n}): readonly unknown[] {\n const { ctx, model, value, path, level, filter } = params;\n let changed = false;\n const out = value.map((item, index) => {\n const next = walkNode({ ctx, model, value: item, path: `${path}[${index}]`, level, filter });\n if (next !== item) changed = true;\n return next;\n });\n return changed ? out : value;\n}\n\n/**\n * A Json filter's operator bag (`{ path, equals, string_contains … }`) is ORM\n * syntax; only its operands are documents. Returns the bag with `SKIP`\n * members stripped, or the same reference.\n */\nfunction walkJsonOperators(params: { ctx: WalkContext; value: Record<string, unknown>; path: string }): Record<string, unknown> {\n const { ctx, value, path } = params;\n let filtered: Record<string, unknown> | null = null;\n for (const operator of Object.keys(value)) {\n if (value[operator] === undefined) {\n throw explicitUndefined({ model: ctx.model, method: ctx.method, path: `${path}.${operator}` });\n }\n if (value[operator] === SKIP) {\n filtered ??= { ...value };\n delete filtered[operator];\n }\n }\n return filtered ?? value;\n}\n\n/**\n * Refuse explicit `undefined`, strip `SKIP`. Returns the SAME reference when\n * nothing was stripped, so the common path allocates nothing.\n */\nfunction walkNode(params: {\n ctx: WalkContext;\n model: ModelMeta;\n value: unknown;\n path: string;\n level: Level;\n filter: boolean;\n}): unknown {\n const { ctx, model, value, path, level, filter } = params;\n if (Array.isArray(value)) return walkArray({ ctx, model, value, path, level, filter });\n if (!isPlainObject(value)) return value;\n\n let out: Record<string, unknown> | null = null;\n for (const key of Object.keys(value)) {\n const child = value[key];\n const childPath = `${path}.${key}`;\n if (child === undefined) {\n throw explicitUndefined({ model: ctx.model, method: ctx.method, path: childPath });\n }\n if (child === SKIP) {\n out ??= { ...value };\n delete out[key];\n continue;\n }\n\n let next: unknown;\n const keyword = level === \"structural\" ? STRUCTURAL_KEYWORDS[key] : undefined;\n if (keyword !== undefined) {\n next = walkNode({\n ctx, model, value: child, path: childPath,\n level: keyword.level,\n filter: keyword.filter === \"inherit\" ? filter : keyword.filter,\n });\n } else if (LOGICAL_KEYS.has(key)) {\n next = walkNode({ ctx, model, value: child, path: childPath, level: \"fields\", filter });\n } else {\n // A field level — or a structural level's fallback for a bare field\n // object (`update: { title: … }` on a to-one relation).\n const field = model.fieldByName.get(key);\n if (field !== undefined && field.scalarType === \"Json\") {\n // A document: left alone, except a filter's operator bag.\n next = filter && isPlainObject(child) ? walkJsonOperators({ ctx, value: child, path: childPath }) : child;\n } else if (field !== undefined) {\n // A scalar's value or operator bag (`{ contains }`, `{ increment }`).\n next = walkNode({ ctx, model, value: child, path: childPath, level: \"fields\", filter });\n } else {\n const relation = model.relationByName.get(key);\n const target = relation === undefined ? undefined : ctx.meta.modelByName.get(relation.targetModel);\n next = target === undefined\n // Unknown key (an aggregate bucket, `mode`, `_relevance` …): same model.\n ? walkNode({ ctx, model, value: child, path: childPath, level: \"fields\", filter })\n // A relation's bag: `some`/`create`/`select`… of the TARGET model.\n : walkNode({ ctx, model: target, value: child, path: childPath, level: \"structural\", filter });\n }\n }\n if (next !== child) {\n out ??= { ...value };\n out[key] = next;\n }\n }\n return out ?? value;\n}\n\n/**\n * Check one public call's arguments. Runs BEFORE any wrapper can discard an\n * undefined member and before a statement is built, so a refused root operation\n * dispatches nothing at all.\n */\nexport function checkStrictArguments(params: {\n readonly meta: RuntimeMeta;\n readonly model: ModelMeta;\n readonly method: string;\n readonly args: Record<string, unknown> | undefined;\n}): Record<string, unknown> | undefined {\n const { meta, model, method, args } = params;\n if (args === undefined) return undefined;\n const ctx: WalkContext = { meta, model: model.clientName, method };\n const walked = walkNode({ ctx, model, value: args, path: \"args\", level: \"structural\", filter: false });\n return walked as Record<string, unknown>;\n}\n",
|
|
42
42
|
"import { RlsContextError } from \"@vibeorm/schema\";\nimport type { RlsContextScalar, SchemaIR } from \"@vibeorm/schema\";\nimport { renderRlsColumnType } from \"@vibeorm/sql\";\nimport type { SqlDialect } from \"@vibeorm/sql\";\nimport { getCodec } from \"./codecs.ts\";\n\n/** Private, copied identity and its total transaction-settings transport. */\nexport type BoundRlsContext = {\n readonly values: Readonly<Record<string, unknown>>;\n readonly settings: Readonly<Record<string, string | null>>;\n};\n\nconst RLS_SCALAR_LIMITS = Object.freeze({\n smallIntMin: -32768,\n smallIntMax: 32767,\n intMin: -2147483648,\n intMax: 2147483647,\n bigIntMin: -9223372036854775808n,\n bigIntMax: 9223372036854775807n,\n decimal: /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/,\n uuid: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,\n});\n\nfunction validScalar(params: { type: RlsContextScalar; value: unknown }): boolean {\n const { type, value } = params;\n switch (type) {\n case \"String\": return typeof value === \"string\" && value.length > 0 && !value.includes(\"\\0\");\n case \"Boolean\": return typeof value === \"boolean\";\n case \"Int\": return typeof value === \"number\" && Number.isInteger(value) && value >= RLS_SCALAR_LIMITS.intMin && value <= RLS_SCALAR_LIMITS.intMax;\n case \"BigInt\": return typeof value === \"bigint\" && value >= RLS_SCALAR_LIMITS.bigIntMin && value <= RLS_SCALAR_LIMITS.bigIntMax;\n case \"Float\": return typeof value === \"number\" && Number.isFinite(value);\n case \"Decimal\": return typeof value === \"string\" && RLS_SCALAR_LIMITS.decimal.test(value) && Number.isFinite(Number(value));\n case \"DateTime\": return value instanceof Date && Number.isFinite(Date.prototype.getTime.call(value));\n }\n}\n\n/** Validate before serialization; missing nullable slots are still missing keys. */\nexport function bindRlsContext(params: { schema: SchemaIR; dialect: SqlDialect; context: unknown }): BoundRlsContext {\n const { schema, dialect, context } = params;\n if (context === null || typeof context !== \"object\" || Array.isArray(context)) {\n throw new RlsContextError({ reason: \"invalid\" });\n }\n const declaration = schema.rls!.context;\n const values: Record<string, unknown> = Object.create(null);\n const settings: Record<string, string | null> = Object.create(null);\n for (const key of Object.keys(declaration)) {\n if (!Object.hasOwn(context, key)) throw new RlsContextError({ reason: \"missing\", key });\n }\n for (const key of Reflect.ownKeys(context)) {\n if (typeof key !== \"string\" || !Object.hasOwn(declaration, key)) throw new RlsContextError({ reason: \"invalid\" });\n }\n for (const [key, slot] of Object.entries(declaration)) {\n const descriptor = Object.getOwnPropertyDescriptor(context, key)!;\n if (!(\"value\" in descriptor) || descriptor.enumerable !== true) throw new RlsContextError({ reason: \"invalid\", key });\n const value: unknown = descriptor.value;\n if (value === null && slot.nullable) {\n values[key] = null;\n settings[key] = null;\n continue;\n }\n if (!validScalar({ type: slot.type, value })) throw new RlsContextError({ reason: \"invalid\", key });\n const copied = value instanceof Date ? Object.freeze(new Date(Date.prototype.getTime.call(value))) : value;\n values[key] = copied;\n const encoded = getCodec({ dialect: dialect.name, type: slot.type }).encode(copied);\n settings[key] = encoded instanceof Date ? Date.prototype.toISOString.call(encoded) : String(encoded);\n }\n // Validate context against every direct ownership column, not only its logical scalar.\n for (const model of schema.models) {\n if (typeof model.rls !== \"object\" || !(\"where\" in model.rls)) continue;\n for (const [name, ref] of Object.entries(model.rls.where)) {\n const field = model.fields.find((candidate) => candidate.name === name)!;\n const type = renderRlsColumnType({ dialect, field });\n const value = values[ref.context];\n if (value === null) continue;\n if (\n (type === \"uuid\" && (typeof value !== \"string\" || !RLS_SCALAR_LIMITS.uuid.test(value))) ||\n (type === \"smallint\" && typeof value === \"number\" && (value < RLS_SCALAR_LIMITS.smallIntMin || value > RLS_SCALAR_LIMITS.smallIntMax)) ||\n (type === \"real\" && typeof value === \"number\" && Math.fround(value) !== value)\n ) throw new RlsContextError({ reason: \"invalid\", key: ref.context });\n }\n }\n return Object.freeze({ values: Object.freeze(values), settings: Object.freeze(settings) });\n}\n",
|
|
43
43
|
"/**\n * The recorder: one per client, owning operation identity, sampling, bounded\n * buffering, drop accounting, metrics and every guarded exporter call.\n *\n * Three invariants this module exists to hold:\n *\n * 1. **Exactly one terminal operation outcome.** `settle()` is idempotent —\n * success, refusal before dispatch, validation failure, adapter failure,\n * decode failure and commit/rollback failure all end in one event, and a\n * later duplicate settle is ignored rather than emitting a second span.\n * 2. **The database never depends on the exporter.** Every exporter callback\n * runs inside a guard; a throw is reported to `onExporterError` (itself\n * guarded) and swallowed. No exporter can change a query's arguments, its\n * results or whether it committed.\n * 3. **Nothing unknown is invented.** Absent row counts, absent durations and\n * absent timing subdivisions stay absent.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { Dialect, Provider, VibeErrorCode } from \"@vibeorm/schema\";\nimport { resolveTelemetryConfig } from \"./config.ts\";\nimport type { ResolvedTelemetryConfig } from \"./config.ts\";\nimport { queryFingerprint } from \"./fingerprint.ts\";\nimport type {\n TelemetryDropEvent,\n TelemetryExportPhase,\n TelemetryExporter,\n TelemetryHistogram,\n TelemetryMetricsSnapshot,\n TelemetryOperationEvent,\n TelemetryOperationKind,\n TelemetryOptions,\n TelemetryOutcome,\n TelemetryParentContext,\n TelemetryStage,\n TelemetryStatementEvent,\n TelemetryStatementKind,\n TelemetryTimingDetail,\n} from \"./types.ts\";\n\n// ─── Inputs ───────────────────────────────────────────────────────\n\n/** What starting an operation needs to know. */\nexport type TelemetryBeginInput = {\n readonly kind: TelemetryOperationKind;\n readonly model: string | null;\n readonly method: string;\n readonly dialect: Dialect;\n readonly provider: Provider;\n /** The enclosing transaction/extension operation, when there is one. */\n readonly parentOperationId?: string;\n};\n\n/** One finished statement, reported by the execution path that ran it. */\nexport type TelemetryStatementInput = {\n readonly kind: TelemetryStatementKind;\n readonly model: string | null;\n readonly method: string;\n readonly text: string;\n readonly values: readonly unknown[];\n readonly inTransaction: boolean;\n readonly durationMs: number;\n readonly outcome: TelemetryOutcome;\n /** Absent when this path cannot know it. */\n readonly rowCount?: number;\n readonly error?: unknown;\n /** Time spent rendering this statement, when measured. */\n readonly renderMs?: number;\n};\n\n/** How an operation ended. */\nexport type TelemetrySettleInput = {\n readonly outcome: TelemetryOutcome;\n /** Named only where the caller genuinely knows better than the derivation below. */\n readonly stage?: TelemetryStage;\n readonly error?: unknown;\n /** Rows the operation is known to have produced or affected. */\n readonly rowCount?: number;\n};\n\n/**\n * Where a failure happened, derived from what actually ran — never guessed from\n * an error message. A caller that knows better passes `stage` explicitly.\n */\nfunction deriveStage(params: {\n outcome: TelemetryOutcome;\n kind: TelemetryOperationKind;\n dispatched: boolean;\n statementCount: number;\n failedStatements: number;\n code: VibeErrorCode | undefined;\n}): TelemetryStage {\n const { outcome, kind, dispatched, statementCount, failedStatements, code } = params;\n if (outcome === \"success\") return \"completed\";\n if (!dispatched) return \"refused\";\n if (failedStatements > 0) return \"statement\";\n // A transaction operation runs no statements of its OWN — its children do — so\n // an empty statement list is not evidence of a pre-SQL refusal here.\n if (kind === \"transaction\") return \"transaction\";\n if (statementCount === 0) return \"validation\";\n if (code === \"VIBE_TRANSACTION\") return \"transaction\";\n return \"decode\";\n}\n\n/** The per-operation handle the client threads through its engine. */\nexport type TelemetryOperationScope = {\n readonly id: string;\n /** False when sampling declined this operation: statements and the span are skipped, counters are not. */\n readonly sampled: boolean;\n /** Mark ACTUAL dispatch. Idempotent; the first call starts the operation clock. */\n readonly dispatch: () => void;\n /**\n * Re-attach this operation to the parent that actually executes it. An array\n * `$transaction` member is created in one context and executed by another;\n * the executing transaction is the truthful parent.\n */\n readonly reparent: (params: { parentOperationId: string }) => void;\n readonly statement: (input: TelemetryStatementInput) => void;\n /** Terminal outcome. Idempotent — only the first call emits. */\n readonly settle: (input: TelemetrySettleInput) => void;\n};\n\n/** One client's telemetry. */\nexport type TelemetryRecorder = {\n readonly config: ResolvedTelemetryConfig;\n readonly begin: (input: TelemetryBeginInput) => TelemetryOperationScope;\n /** Drain buffered operations and ask the exporter to flush. Never shuts anything down. */\n readonly flush: () => Promise<void>;\n /** Host-owned: drains, then calls `exporter.shutdown`. The client never calls this. */\n readonly shutdown: () => Promise<void>;\n readonly metrics: () => TelemetryMetricsSnapshot;\n};\n\n// ─── Helpers ──────────────────────────────────────────────────────\n\n/** Only a VibeError carries a stable code; anything else reports no code rather than a made-up one. */\nfunction errorCodeOf(error: unknown): VibeErrorCode | undefined {\n return error instanceof VibeError ? error.code : undefined;\n}\n\ntype MutableHistogram = { readonly counts: number[]; sum: number; count: number };\n\nfunction newHistogram(bounds: readonly number[]): MutableHistogram {\n return { counts: new Array<number>(bounds.length + 1).fill(0), sum: 0, count: 0 };\n}\n\nfunction observe(histogram: MutableHistogram, bounds: readonly number[], value: number): void {\n let bucket = bounds.length;\n for (let index = 0; index < bounds.length; index++) {\n if (value <= (bounds[index] as number)) {\n bucket = index;\n break;\n }\n }\n histogram.counts[bucket] = (histogram.counts[bucket] as number) + 1;\n histogram.sum += value;\n histogram.count += 1;\n}\n\nfunction freezeHistogram(histogram: MutableHistogram, bounds: readonly number[]): TelemetryHistogram {\n return { bounds, counts: [...histogram.counts], sum: histogram.sum, count: histogram.count };\n}\n\n// ─── Recorder ─────────────────────────────────────────────────────\n\n/**\n * Build a recorder from validated options.\n *\n * @throws VibeError VIBE_CONFIG when the options are invalid (see `resolveTelemetryConfig`).\n */\nexport function createTelemetryRecorder(params: { options: TelemetryOptions }): TelemetryRecorder {\n const config = resolveTelemetryConfig({ options: params.options });\n const exporter: TelemetryExporter = params.options.exporter;\n const onExporterError = params.options.onExporterError;\n const buckets = config.latencyBucketsMs;\n\n const prefix = Math.random().toString(36).slice(2, 10);\n let sequence = 0;\n\n let sampledOperations = 0;\n let totalOperations = 0;\n let failedOperations = 0;\n let refusedOperations = 0;\n let totalStatements = 0;\n let failedStatements = 0;\n let rowsKnown = 0;\n let rowsTotal = 0;\n let droppedOperations = 0;\n let droppedStatements = 0;\n const operationLatency = newHistogram(buckets);\n const statementLatency = newHistogram(buckets);\n const buffer: TelemetryOperationEvent[] = [];\n\n /** Every exporter entry point goes through here. A throw never escapes. */\n const guard = (phase: TelemetryExportPhase, run: () => void): void => {\n try {\n run();\n } catch (error) {\n if (onExporterError === undefined) return;\n try {\n onExporterError({ error, phase });\n } catch {\n // An error handler that throws is out of options; the query is unaffected.\n }\n }\n };\n\n /** The async twin of `guard`, for `flush`/`shutdown` which may return a promise. */\n const guardAsync = async (phase: TelemetryExportPhase, run: () => void | Promise<void>): Promise<void> => {\n try {\n await run();\n } catch (error) {\n if (onExporterError === undefined) return;\n try {\n onExporterError({ error, phase });\n } catch {\n // An error handler that throws is out of options; the query is unaffected.\n }\n }\n };\n\n const reportDrop = (event: TelemetryDropEvent): void => {\n const onDrop = exporter.onDrop;\n if (onDrop === undefined) return;\n guard(\"drop\", () => {\n onDrop(event);\n });\n };\n\n const deliver = (event: TelemetryOperationEvent): void => {\n if (config.delivery === \"buffered\") {\n buffer.push(event);\n if (buffer.length > config.maxBufferedOperations) {\n const dropped = buffer.length - config.maxBufferedOperations;\n buffer.splice(0, dropped);\n droppedOperations += dropped;\n reportDrop({ reason: \"buffer_full\", count: dropped });\n }\n return;\n }\n const onOperation = exporter.onOperation;\n if (onOperation === undefined) return;\n guard(\"operation\", () => {\n onOperation(event);\n });\n };\n\n const drain = (): void => {\n if (buffer.length === 0) return;\n const pending = buffer.splice(0, buffer.length);\n const onOperation = exporter.onOperation;\n if (onOperation === undefined) return;\n for (const event of pending) {\n guard(\"operation\", () => {\n onOperation(event);\n });\n }\n };\n\n const decideSampling = (input: TelemetryBeginInput, context: TelemetryParentContext): boolean => {\n const sampler = config.sampler;\n if (sampler !== undefined) {\n let keep = false;\n guard(\"sampler\", () => {\n keep = sampler({\n kind: input.kind,\n model: input.model,\n method: input.method,\n ...(context === undefined ? {} : { context }),\n });\n });\n return keep;\n }\n if (config.sampleRate >= 1) return true;\n if (config.sampleRate <= 0) return false;\n return Math.random() < config.sampleRate;\n };\n\n const begin = (input: TelemetryBeginInput): TelemetryOperationScope => {\n sequence += 1;\n const id = `${prefix}-${sequence}`;\n const createdAt = performance.now();\n\n let context: TelemetryParentContext;\n const readContext = config.context;\n if (readContext !== undefined) {\n guard(\"context\", () => {\n context = readContext();\n });\n }\n\n const sampled = decideSampling(input, context);\n if (sampled) sampledOperations += 1;\n\n const statements: TelemetryStatementEvent[] = [];\n let statementCount = 0;\n let failedStatementsHere = 0;\n let statementDurationMs = 0;\n let renderMs = 0;\n let renderMeasured = false;\n let statementsDroppedHere = 0;\n let startedAtEpoch: number | undefined;\n let startedAt: number | undefined;\n let settled = false;\n let parentOperationId = input.parentOperationId;\n\n const dispatch = (): void => {\n if (startedAt !== undefined) return;\n startedAt = performance.now();\n startedAtEpoch = Date.now();\n };\n\n const statement = (statementInput: TelemetryStatementInput): void => {\n // Counters cover every execution, sampled or not.\n totalStatements += 1;\n if (statementInput.outcome === \"failure\") {\n failedStatements += 1;\n failedStatementsHere += 1;\n }\n observe(statementLatency, buckets, statementInput.durationMs);\n\n statementCount += 1;\n statementDurationMs += statementInput.durationMs;\n if (statementInput.renderMs !== undefined) {\n renderMs += statementInput.renderMs;\n renderMeasured = true;\n }\n if (!sampled) return;\n if (statements.length >= config.maxStatementsPerOperation) {\n statementsDroppedHere += 1;\n droppedStatements += 1;\n reportDrop({ reason: \"statement_limit\", count: 1 });\n return;\n }\n const code = errorCodeOf(statementInput.error);\n const event: TelemetryStatementEvent = {\n operationId: id,\n index: statements.length,\n kind: statementInput.kind,\n model: statementInput.model,\n method: statementInput.method,\n dialect: input.dialect,\n provider: input.provider,\n fingerprint: queryFingerprint({\n model: statementInput.model,\n method: statementInput.method,\n text: statementInput.text,\n maxLength: config.maxFingerprintLength,\n }),\n outcome: statementInput.outcome,\n durationMs: statementInput.durationMs,\n parameterCount: statementInput.values.length,\n inTransaction: statementInput.inTransaction,\n ...(statementInput.rowCount === undefined ? {} : { rowCount: statementInput.rowCount }),\n ...(code === undefined ? {} : { errorCode: code }),\n ...(statementInput.durationMs >= config.slowStatementMs ? { slow: true } : {}),\n ...(config.captureSql ? { sql: statementInput.text } : {}),\n ...(config.captureParameterValues ? { parameters: [...statementInput.values] } : {}),\n };\n statements.push(event);\n const onStatement = exporter.onStatement;\n if (onStatement === undefined) return;\n guard(\"statement\", () => {\n onStatement(event);\n });\n };\n\n const settle = (settleInput: TelemetrySettleInput): void => {\n if (settled) return;\n settled = true;\n\n const dispatched = startedAt !== undefined;\n const durationMs = startedAt === undefined ? undefined : performance.now() - startedAt;\n\n // Counters cover every execution, sampled or not.\n totalOperations += 1;\n if (settleInput.outcome === \"failure\") failedOperations += 1;\n if (!dispatched) refusedOperations += 1;\n if (durationMs !== undefined) observe(operationLatency, buckets, durationMs);\n if (settleInput.rowCount !== undefined) {\n rowsKnown += 1;\n rowsTotal += settleInput.rowCount;\n }\n if (!sampled) return;\n\n const code = errorCodeOf(settleInput.error);\n const stage =\n settleInput.stage ??\n deriveStage({\n outcome: settleInput.outcome,\n kind: input.kind,\n dispatched,\n statementCount,\n failedStatements: failedStatementsHere,\n code,\n });\n let detail: TelemetryTimingDetail | undefined;\n if (config.detailedTimings) {\n const adapterMs = statementCount === 0 ? undefined : statementDurationMs;\n const processingMs =\n durationMs === undefined ? undefined : Math.max(0, durationMs - statementDurationMs);\n detail = {\n ...(renderMeasured ? { renderMs } : {}),\n ...(adapterMs === undefined ? {} : { adapterMs }),\n ...(processingMs === undefined ? {} : { processingMs }),\n };\n }\n\n const event: TelemetryOperationEvent = {\n operationId: id,\n ...(parentOperationId === undefined ? {} : { parentOperationId }),\n ...(context === undefined ? {} : { context }),\n kind: input.kind,\n model: input.model,\n method: input.method,\n dialect: input.dialect,\n provider: input.provider,\n outcome: settleInput.outcome,\n stage,\n dispatched,\n ...(startedAtEpoch === undefined ? {} : { startedAt: startedAtEpoch }),\n ...(durationMs === undefined ? {} : { durationMs }),\n ...(startedAt === undefined ? {} : { queueWaitMs: startedAt - createdAt }),\n statementCount,\n ...(statementCount === 0 ? {} : { statementDurationMs }),\n ...(settleInput.rowCount === undefined ? {} : { rowCount: settleInput.rowCount }),\n ...(code === undefined ? {} : { errorCode: code }),\n ...(detail === undefined ? {} : { detail }),\n statements: [...statements],\n ...(statementsDroppedHere === 0 ? {} : { droppedStatements: statementsDroppedHere }),\n ...(durationMs !== undefined && durationMs >= config.slowOperationMs ? { slow: true } : {}),\n sampled: true,\n };\n deliver(event);\n };\n\n const reparent = (reparentParams: { parentOperationId: string }): void => {\n if (settled) return;\n parentOperationId = reparentParams.parentOperationId;\n };\n\n return { id, sampled, dispatch, reparent, statement, settle };\n };\n\n const flush = async (): Promise<void> => {\n drain();\n const exporterFlush = exporter.flush;\n if (exporterFlush === undefined) return;\n await guardAsync(\"flush\", () => exporterFlush());\n };\n\n const recorder: TelemetryRecorder = {\n config,\n begin,\n flush,\n shutdown: async (): Promise<void> => {\n await flush();\n const exporterShutdown = exporter.shutdown;\n if (exporterShutdown === undefined) return;\n await guardAsync(\"shutdown\", () => exporterShutdown());\n },\n metrics: (): TelemetryMetricsSnapshot => ({\n countsRepresent: \"all\",\n sampleRate: config.sampleRate,\n sampledOperations,\n operations: { total: totalOperations, failed: failedOperations, refused: refusedOperations },\n statements: { total: totalStatements, failed: failedStatements },\n rows: { known: rowsKnown, total: rowsTotal },\n operationLatencyMs: freezeHistogram(operationLatency, buckets),\n statementLatencyMs: freezeHistogram(statementLatency, buckets),\n dropped: { operations: droppedOperations, statements: droppedStatements },\n }),\n };\n\n const onReady = params.options.onReady;\n if (onReady !== undefined) {\n guard(\"operation\", () => {\n onReady({ metrics: recorder.metrics, flush: recorder.flush, shutdown: recorder.shutdown });\n });\n }\n return recorder;\n}\n",
|
|
44
44
|
"/**\n * THE telemetry config module (EPIC 1). Every threshold, limit and sampling\n * default lives here and nowhere else — no magic literal for telemetry may\n * appear in the recorder, the client or an adapter.\n *\n * Invalid configuration fails loudly at client construction with\n * `VIBE_CONFIG`, not silently at the first query.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { TelemetryDelivery, TelemetryOptions, TelemetrySamplerInput } from \"./types.ts\";\n\n// ─── Defaults ─────────────────────────────────────────────────────\n\n/** Documented defaults. Privacy-conservative: nothing sensitive is captured unless asked for. */\nexport type TelemetryDefaults = {\n readonly captureSql: false;\n readonly captureParameterValues: false;\n readonly detailedTimings: false;\n readonly sampleRate: 1;\n readonly delivery: \"immediate\";\n readonly maxBufferedOperations: 1024;\n readonly maxStatementsPerOperation: 256;\n readonly slowStatementMs: 200;\n readonly slowOperationMs: 500;\n /** Longest fingerprint kept; longer normalized text is truncated with a stable suffix. */\n readonly maxFingerprintLength: 512;\n /** Histogram bucket bounds in milliseconds (upper-inclusive), plus an overflow bucket. */\n readonly latencyBucketsMs: readonly [1, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000];\n};\n\nexport const TELEMETRY_DEFAULTS: TelemetryDefaults = Object.freeze({\n captureSql: false,\n captureParameterValues: false,\n detailedTimings: false,\n sampleRate: 1,\n delivery: \"immediate\",\n maxBufferedOperations: 1024,\n maxStatementsPerOperation: 256,\n slowStatementMs: 200,\n slowOperationMs: 500,\n maxFingerprintLength: 512,\n latencyBucketsMs: Object.freeze([1, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000]) as readonly [\n 1, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000,\n ],\n});\n\n// ─── Resolution ───────────────────────────────────────────────────\n\n/** Every option resolved to a concrete value — what the recorder reads. */\nexport type ResolvedTelemetryConfig = {\n readonly captureSql: boolean;\n readonly captureParameterValues: boolean;\n readonly detailedTimings: boolean;\n readonly sampleRate: number;\n readonly sampler?: (input: TelemetrySamplerInput) => boolean;\n readonly context?: () => unknown;\n readonly delivery: TelemetryDelivery;\n readonly maxBufferedOperations: number;\n readonly maxStatementsPerOperation: number;\n readonly slowStatementMs: number;\n readonly slowOperationMs: number;\n readonly maxFingerprintLength: number;\n readonly latencyBucketsMs: readonly number[];\n};\n\nfunction configError(params: { message: string; meta?: Record<string, unknown> }): VibeError {\n return new VibeError({\n code: \"VIBE_CONFIG\",\n message: `telemetry: ${params.message}`,\n ...(params.meta === undefined ? {} : { meta: params.meta }),\n });\n}\n\nfunction positiveInteger(params: { name: string; value: number | undefined; fallback: number }): number {\n const { name, value, fallback } = params;\n if (value === undefined) return fallback;\n if (!Number.isInteger(value) || value < 1) {\n throw configError({ message: `${name} must be a positive integer, received ${String(value)}`, meta: { option: name } });\n }\n return value;\n}\n\nfunction nonNegativeNumber(params: { name: string; value: number | undefined; fallback: number }): number {\n const { name, value, fallback } = params;\n if (value === undefined) return fallback;\n if (!Number.isFinite(value) || value < 0) {\n throw configError({ message: `${name} must be a finite number >= 0, received ${String(value)}`, meta: { option: name } });\n }\n return value;\n}\n\n/**\n * Validate and resolve `ClientOptions.telemetry`.\n *\n * @throws VibeError VIBE_CONFIG when the exporter is missing, the sample rate is\n * outside 0..1, a limit is not a positive integer, a threshold is negative, or\n * `delivery` is not one of the two documented modes.\n */\nexport function resolveTelemetryConfig(params: { options: TelemetryOptions }): ResolvedTelemetryConfig {\n const { options } = params;\n if (options.exporter === undefined || options.exporter === null || typeof options.exporter !== \"object\") {\n throw configError({ message: \"an exporter is required — telemetry has nowhere to send events without one\" });\n }\n const sampleRate = options.sampleRate ?? TELEMETRY_DEFAULTS.sampleRate;\n if (!Number.isFinite(sampleRate) || sampleRate < 0 || sampleRate > 1) {\n throw configError({ message: `sampleRate must be between 0 and 1, received ${String(sampleRate)}`, meta: { option: \"sampleRate\" } });\n }\n const delivery = options.delivery ?? TELEMETRY_DEFAULTS.delivery;\n if (delivery !== \"immediate\" && delivery !== \"buffered\") {\n throw configError({ message: `delivery must be \"immediate\" or \"buffered\", received ${JSON.stringify(delivery)}`, meta: { option: \"delivery\" } });\n }\n return {\n captureSql: options.captureSql ?? TELEMETRY_DEFAULTS.captureSql,\n captureParameterValues: options.captureParameterValues ?? TELEMETRY_DEFAULTS.captureParameterValues,\n detailedTimings: options.detailedTimings ?? TELEMETRY_DEFAULTS.detailedTimings,\n sampleRate,\n ...(options.sampler === undefined ? {} : { sampler: options.sampler }),\n ...(options.context === undefined ? {} : { context: options.context }),\n delivery,\n maxBufferedOperations: positiveInteger({\n name: \"maxBufferedOperations\",\n value: options.maxBufferedOperations,\n fallback: TELEMETRY_DEFAULTS.maxBufferedOperations,\n }),\n maxStatementsPerOperation: positiveInteger({\n name: \"maxStatementsPerOperation\",\n value: options.maxStatementsPerOperation,\n fallback: TELEMETRY_DEFAULTS.maxStatementsPerOperation,\n }),\n slowStatementMs: nonNegativeNumber({\n name: \"slowStatementMs\",\n value: options.slowStatementMs,\n fallback: TELEMETRY_DEFAULTS.slowStatementMs,\n }),\n slowOperationMs: nonNegativeNumber({\n name: \"slowOperationMs\",\n value: options.slowOperationMs,\n fallback: TELEMETRY_DEFAULTS.slowOperationMs,\n }),\n maxFingerprintLength: TELEMETRY_DEFAULTS.maxFingerprintLength,\n latencyBucketsMs: TELEMETRY_DEFAULTS.latencyBucketsMs,\n };\n}\n",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"/**\n * Bounded-memory export: a sequential async iterator over keyset pages.\n *\n * One page is held at a time and the next one is fetched only when the\n * consumer asks for a row the buffer cannot serve. There is no prefetch, no\n * look-ahead and no unbounded accumulation — `pagesFetched()` is the receipt.\n *\n * What this deliberately is NOT:\n * - **not a snapshot.** No transaction is opened, so the traversal is a LIVE\n * view: concurrent inserts, deletes and sort-key updates change what a\n * later page sees. A row that moves behind the position is missed; one\n * that moves ahead of it is seen twice. A consistent export means running\n * the whole iteration inside `$transaction` at an explicit isolation\n * level, paying its connection and deadline cost — never a secretly\n * long-lived transaction.\n * - **not exactly-once.** `checkpoint()` records the last row the consumer\n * came BACK for, so a `break` or an exception leaves the in-flight row\n * uncheckpointed and resuming re-delivers it. At-least-once. The consumer\n * owns acknowledgement and de-duplication; this is not a durable job\n * engine.\n * - **not statement cancellation.** Aborting the signal stops FUTURE page\n * fetches. A page query already in flight keeps running: per EPIC 6 only\n * `adapter-pg` / `adapter-bun` can cancel a running statement, and only\n * inside a transaction carrying a deadline — which this iterator does not\n * open.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { SqlDialect } from \"@vibeorm/sql\";\nimport {\n KEYSET_MAX_PAGE_SIZE,\n compileKeysetOrderPlan,\n decodeKeysetToken,\n encodeKeysetToken,\n keysetRowIsAfter,\n keysetRowValues,\n} from \"./keyset.ts\";\nimport type { KeysetOrderPlan, KeysetTimestampPrecision } from \"./keyset.ts\";\nimport { getModelMeta } from \"./model-meta.ts\";\nimport type { RuntimeMeta } from \"./model-meta.ts\";\nimport { compileKeysetOrderInputs } from \"./query-builder.ts\";\n\n// ─── Types ────────────────────────────────────────────────────────\n\n/** The one method this iterator needs — a model delegate satisfies it. */\nexport type KeysetPageSource = {\n readonly findMany: (args: Record<string, unknown>) => Promise<Record<string, unknown>[]>;\n};\n\nexport type KeysetIterateOptions = {\n readonly source: KeysetPageSource;\n readonly meta: RuntimeMeta;\n readonly dialect: SqlDialect;\n readonly model: string;\n readonly orderBy: unknown;\n /** Bounded and required, 1…{@link KEYSET_MAX_PAGE_SIZE}. There is no unbounded default. */\n readonly pageSize: number;\n readonly where?: Record<string, unknown>;\n readonly select?: Record<string, unknown>;\n readonly omit?: Record<string, unknown>;\n readonly include?: Record<string, unknown>;\n /** Resume from a checkpoint minted by a previous run over the SAME ordering. */\n readonly after?: string;\n /** Consumer cancellation: stops future page fetches; ends iteration cleanly. */\n readonly signal?: AbortSignal;\n readonly timestampPrecision?: KeysetTimestampPrecision;\n};\n\nexport type KeysetIterator = AsyncIterableIterator<Record<string, unknown>> & {\n /** Always present: `break` and an exception both have to be able to release the traversal. */\n readonly return: (value?: unknown) => Promise<IteratorResult<Record<string, unknown>>>;\n readonly throw: (error?: unknown) => Promise<IteratorResult<Record<string, unknown>>>;\n /** Token for the last SUCCESSFULLY CONSUMED row; `null` before the first one settles. */\n readonly checkpoint: () => string | null;\n /** Pages fetched so far — the bounded-fetch receipt. */\n readonly pagesFetched: () => number;\n /** True when the signal aborted the traversal. */\n readonly cancelled: () => boolean;\n};\n\n// ─── Implementation ───────────────────────────────────────────────\n\nfunction validation(params: { message: string; meta: Record<string, unknown> }): VibeError {\n return new VibeError({ code: \"VIBE_VALIDATION\", message: params.message, meta: params.meta });\n}\n\n/**\n * Order fields the page must fetch but the caller did not ask for, plus the\n * projection arguments that carry them. They ride the SQL projection like a\n * stitch key and are deleted from every yielded row, so the payload is exactly\n * what `select`/`omit` asked for and no caller ever selects a private\n * ordering field to paginate.\n */\nfunction projectionFor(params: {\n plan: KeysetOrderPlan;\n select: Record<string, unknown> | undefined;\n omit: Record<string, unknown> | undefined;\n}): { select?: Record<string, unknown>; omit?: Record<string, unknown>; hidden: readonly string[] } {\n const { plan, select, omit } = params;\n const names = plan.keys.map((key) => key.field.name);\n if (select !== undefined) {\n const hidden = names.filter((name) => select[name] !== true);\n if (hidden.length === 0) return { select, hidden };\n const widened: Record<string, unknown> = { ...select };\n for (const name of hidden) widened[name] = true;\n return { select: widened, hidden };\n }\n if (omit !== undefined) {\n const hidden = names.filter((name) => omit[name] === true);\n if (hidden.length === 0) return { omit, hidden };\n const narrowed: Record<string, unknown> = { ...omit };\n for (const name of hidden) narrowed[name] = false;\n return { omit: narrowed, hidden };\n }\n return { hidden: [] };\n}\n\n/**\n * Iterate a model in keyset order, one bounded page at a time.\n *\n * @example\n * const rows = iterateKeyset({ source: db.$models.product, meta, dialect,\n * model: \"Product\", orderBy: [{ price: \"asc\" }, { id: \"asc\" }], pageSize: 500 });\n * for await (const row of rows) { … }\n * const resumeFrom = rows.checkpoint();\n */\nexport function iterateKeyset(options: KeysetIterateOptions): KeysetIterator {\n const { source, meta, dialect, orderBy, pageSize, signal } = options;\n if (!Number.isSafeInteger(pageSize) || pageSize < 1 || pageSize > KEYSET_MAX_PAGE_SIZE) {\n throw validation({\n message: `keyset pageSize must be an integer between 1 and ${KEYSET_MAX_PAGE_SIZE}, got ${String(pageSize)}`,\n meta: { model: options.model, pageSize, reason: \"keyset-page-size\" },\n });\n }\n const model = getModelMeta({ meta, model: options.model });\n const plan = compileKeysetOrderPlan({\n model,\n dialect,\n terms: compileKeysetOrderInputs({ dialect, meta, model, orderBy }),\n ...(options.timestampPrecision === undefined ? {} : { timestampPrecision: options.timestampPrecision }),\n });\n const projection = projectionFor({ plan, select: options.select, omit: options.omit });\n const keysetArg =\n options.timestampPrecision === undefined ? {} : { keyset: { timestampPrecision: options.timestampPrecision } };\n\n let buffer: Record<string, unknown>[] = [];\n let position: string | null = options.after ?? null;\n let consumed: string | null = null;\n let pending: string | null = null;\n let exhausted = false;\n let finished = false;\n let aborted = false;\n let pages = 0;\n let tail: Promise<unknown> = Promise.resolve();\n\n const stop = (): void => {\n finished = true;\n exhausted = true;\n buffer = [];\n };\n\n const fetchPage = async (): Promise<void> => {\n const rows = await source.findMany({\n ...(options.where === undefined ? {} : { where: options.where }),\n ...(projection.select === undefined ? {} : { select: projection.select }),\n ...(projection.omit === undefined ? {} : { omit: projection.omit }),\n ...(options.include === undefined ? {} : { include: options.include }),\n ...keysetArg,\n orderBy,\n take: pageSize,\n ...(position === null ? {} : { after: position }),\n });\n pages++;\n // LIVENESS: a page whose first row does not sort strictly after the\n // position it was fetched from means the traversal is not advancing —\n // a non-total ordering, or a lossy cursor value (a sub-millisecond\n // timestamp asserted to be millisecond-exact does exactly this). Without\n // this check that situation is an infinite page loop, which is a far worse\n // failure than a typed error. Inconclusive comparisons (collated strings)\n // never raise it.\n const first = rows[0];\n if (position !== null && first !== undefined) {\n const advanced = keysetRowIsAfter({\n keys: plan.keys,\n row: keysetRowValues({ plan, row: first }),\n position: decodeKeysetToken({ plan, token: position }),\n });\n if (advanced === false) {\n stop();\n throw new VibeError({\n code: \"VIBE_DATA_INVALID\",\n message:\n `keyset traversal of \"${options.model}\" is not advancing: the engine returned a row that does not sort after the previous position. ` +\n \"The ordering is not total, or a cursor value lost precision — a DateTime column finer than milliseconds asserted as millisecond-exact does this.\",\n meta: { model: options.model, order: plan.signature, reason: \"keyset-position-not-advancing\" },\n });\n }\n }\n buffer = [...rows];\n // A short page is the end of the sequence: no further fetch is possible,\n // so the iterator never issues a \"one more, just in case\" query.\n if (rows.length < pageSize) exhausted = true;\n };\n\n const step = async (): Promise<IteratorResult<Record<string, unknown>>> => {\n // A row counts as CONSUMED once the consumer comes back for the next one.\n if (pending !== null) {\n consumed = pending;\n pending = null;\n }\n if (finished) return { done: true, value: undefined };\n if (signal?.aborted === true) {\n aborted = true;\n stop();\n return { done: true, value: undefined };\n }\n if (buffer.length === 0) {\n if (exhausted) {\n finished = true;\n return { done: true, value: undefined };\n }\n await fetchPage();\n if (buffer.length === 0) {\n finished = true;\n return { done: true, value: undefined };\n }\n }\n const raw = buffer.shift() as Record<string, unknown>;\n pending = encodeKeysetToken({ plan, row: raw });\n position = pending;\n if (projection.hidden.length === 0) return { done: false, value: raw };\n const shaped: Record<string, unknown> = { ...raw };\n for (const name of projection.hidden) delete shaped[name];\n return { done: false, value: shaped };\n };\n\n const serialize = (run: () => Promise<IteratorResult<Record<string, unknown>>>) => {\n const next = tail.then(run, run);\n tail = next.then(\n () => undefined,\n () => undefined,\n );\n return next;\n };\n\n const iterator: KeysetIterator = {\n [Symbol.asyncIterator](): KeysetIterator {\n return iterator;\n },\n next: (): Promise<IteratorResult<Record<string, unknown>>> => serialize(step),\n return: (): Promise<IteratorResult<Record<string, unknown>>> =>\n serialize(async () => {\n stop();\n return { done: true, value: undefined };\n }),\n throw: (error?: unknown): Promise<IteratorResult<Record<string, unknown>>> =>\n serialize(async () => {\n stop();\n throw error;\n }),\n checkpoint: (): string | null => consumed,\n pagesFetched: (): number => pages,\n cancelled: (): boolean => aborted,\n };\n return iterator;\n}\n",
|
|
47
47
|
"/**\n * An in-memory collector — the ONLY exporter this repository ships.\n *\n * Its purpose is tests and local inspection: assert the emitted operation tree,\n * the statement records and the database outcome together. It is deliberately\n * not a monitoring integration; a real deployment writes its own exporter (or a\n * future, separately decided OpenTelemetry bridge).\n *\n * `throwOn` makes it hostile on demand — the fixture that proves a throwing\n * exporter cannot change a database outcome.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type {\n TelemetryDropEvent,\n TelemetryExportPhase,\n TelemetryExporter,\n TelemetryOperationEvent,\n TelemetryStatementEvent,\n} from \"./types.ts\";\n\n/** One operation with the operations that ran inside it. */\nexport type TelemetryOperationNode = {\n readonly event: TelemetryOperationEvent;\n readonly children: readonly TelemetryOperationNode[];\n};\n\n/** The collector handle: the exporter to pass to the client, plus what it saw. */\nexport type TelemetryCollector = {\n /** Pass this as `telemetry.exporter`. */\n readonly exporter: TelemetryExporter;\n readonly operations: readonly TelemetryOperationEvent[];\n readonly statements: readonly TelemetryStatementEvent[];\n readonly drops: readonly TelemetryDropEvent[];\n readonly flushes: () => number;\n readonly shutdowns: () => number;\n readonly reset: () => void;\n /** Operations as a parent/child tree, roots first, each level in emission order. */\n readonly tree: () => readonly TelemetryOperationNode[];\n /** Every operation whose `parentOperationId` is the given id, in emission order. */\n readonly childrenOf: (params: { operationId: string }) => readonly TelemetryOperationEvent[];\n /** The single operation for a model method, or `undefined`; throws VIBE_VALIDATION when several match. */\n readonly operationFor: (params: { model?: string; method: string }) => TelemetryOperationEvent | undefined;\n};\n\n/**\n * Build a collector.\n *\n * @example\n * const collector = createTelemetryCollector();\n * const db = VibeClient({ adapter, telemetry: { exporter: collector.exporter } });\n * await db.user.findMany();\n * expect(collector.operations).toHaveLength(1);\n */\nexport function createTelemetryCollector(params?: {\n /** Callbacks that inject VIBE_INTERNAL, to prove the database outcome does not depend on the exporter. */\n readonly throwOn?: readonly TelemetryExportPhase[];\n}): TelemetryCollector {\n const throwOn = new Set<TelemetryExportPhase>(params?.throwOn ?? []);\n const operations: TelemetryOperationEvent[] = [];\n const statements: TelemetryStatementEvent[] = [];\n const drops: TelemetryDropEvent[] = [];\n let flushes = 0;\n let shutdowns = 0;\n\n const hostile = (phase: TelemetryExportPhase): void => {\n if (throwOn.has(phase)) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `telemetry collector: deliberate ${phase} failure`,\n meta: { reason: \"telemetry-collector-deliberate-failure\", phase },\n });\n }\n };\n\n const exporter: TelemetryExporter = {\n onOperation: (event: TelemetryOperationEvent): void => {\n operations.push(event);\n hostile(\"operation\");\n },\n onStatement: (event: TelemetryStatementEvent): void => {\n statements.push(event);\n hostile(\"statement\");\n },\n onDrop: (event: TelemetryDropEvent): void => {\n drops.push(event);\n hostile(\"drop\");\n },\n flush: (): void => {\n flushes += 1;\n hostile(\"flush\");\n },\n shutdown: (): void => {\n shutdowns += 1;\n hostile(\"shutdown\");\n },\n };\n\n const childrenOf = (childParams: { operationId: string }): readonly TelemetryOperationEvent[] =>\n operations.filter((event) => event.parentOperationId === childParams.operationId);\n\n const build = (event: TelemetryOperationEvent): TelemetryOperationNode => ({\n event,\n children: childrenOf({ operationId: event.operationId }).map(build),\n });\n\n return {\n exporter,\n operations,\n statements,\n drops,\n flushes: (): number => flushes,\n shutdowns: (): number => shutdowns,\n reset: (): void => {\n operations.length = 0;\n statements.length = 0;\n drops.length = 0;\n flushes = 0;\n shutdowns = 0;\n },\n tree: (): readonly TelemetryOperationNode[] => {\n const ids = new Set(operations.map((event) => event.operationId));\n return operations\n .filter((event) => event.parentOperationId === undefined || !ids.has(event.parentOperationId))\n .map(build);\n },\n childrenOf,\n operationFor: (lookup: { model?: string; method: string }): TelemetryOperationEvent | undefined => {\n const matches = operations.filter(\n (event) => event.method === lookup.method && (lookup.model === undefined || event.model === lookup.model),\n );\n if (matches.length > 1) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `telemetry collector: ${matches.length} operations match ${lookup.model ?? \"*\"}.${lookup.method}`,\n meta: {\n reason: \"telemetry-collector-ambiguous-operation\",\n ...(lookup.model === undefined ? {} : { model: lookup.model }),\n method: lookup.method,\n matches: matches.length,\n },\n });\n }\n return matches[0];\n },\n };\n}\n"
|
|
48
48
|
],
|
|
49
|
-
"mappings": ";;AASA,gBAAS,gBAAK;;;ACTd;AAEA;AAYO,SAAS,aAAyC,CAAC,QAA0D;AAAA,EAClH,MAAM,UAAU,OAAO,QAAQ,OAAO,MAAM;AAAA,EAC5C,IAAI,QAAQ,WAAW;AAAA,IAAG,MAAM,IAAI,UAAU,EAAE,MAAM,mBAAmB,SAAS,4CAA4C,CAAC;AAAA,EAC/H,OAAO,OAAO,OAAO;AAAA,IACnB,KAAK,IAAI,KAAK,EAAE,OAAO,QAAQ,IAAI,EAAE,MAAM,YAAY,MAAM,OAAO,UAAU,IAAI,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;AAAA,IAC/G,SAAS,OAAO,OAAO,EAAE,QAAQ,OAAO,YAAY,QAAQ,IAAI,EAAE,MAAM,YAAY,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC;AAAA,EAChH,CAAC;AAAA;AAGH,IAAM,kBAAwE,OAAO,OAAO;AAAA,EAC1F,QAAQ,OAAO;AAAA,EAAQ,SAAS,OAAO;AAAA,EAAS,KAAK,OAAO;AAAA,EAAK,OAAO,OAAO;AAAA,EAC/E,QAAQ,OAAO;AAAA,EAAQ,SAAS,OAAO;AAAA,EAAS,UAAU,OAAO;AAAA,EAAU,MAAM,OAAO;AAAA,EAAM,OAAO,OAAO;AAC9G,CAAC;AAGM,SAAS,cAAc,CAAC,QAAuE;AAAA,EACpG,MAAM,QAAQ,OAAO,OAAO,OAAO,KAAK,CAAC,UAAU,MAAM,SAAS,OAAO,KAAK;AAAA,EAC9E,IAAI,UAAU;AAAA,IAAW,MAAM,IAAI,UAAU,EAAE,MAAM,mBAAmB,SAAS,oBAAoB,CAAC;AAAA,EACtG,MAAM,YAAY,MAAM,UAAU,MAAM;AAAA,EACxC,MAAM,QAAQ,IAAI,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AAAA,EAC9C,MAAM,SAAS,OAAO,YAAY,MAAM,OAAO,OAAO,CAAC,UAAU,MAAM,kBAAkB,IAAI,EAAE,IAAI,CAAC,UAAU;AAAA,IAC5G,IAAI;AAAA,IACJ,IAAI,WAAW,MAAM,IAAI,GAAG;AAAA,MAC1B,MAAM,OAAO,MAAM,KAAK;AAAA,MACxB,MAAM,WAAW,OAAO,OAAO,MAAM,KAAK,CAAC,UAAU,MAAM,SAAS,IAAI;AAAA,MACxE,IAAI,aAAa;AAAA,QAAW,MAAM,IAAI,UAAU,EAAE,MAAM,uBAAuB,SAAS,4BAA4B,CAAC;AAAA,MACrH,UAAU,OAAO,KAAK,EAAE,QAAQ,SAAS,OAAO,CAAC;AAAA,IACnD,EAAO;AAAA,gBAAU,gBAAgB,MAAM;AAAA,IACvC,IAAI,MAAM;AAAA,MAAQ,UAAU,OAAO,MAAM,EAAE,QAAQ,CAAC;AAAA,IACpD,IAAI,MAAM;AAAA,MAAY,UAAU,OAAO,SAAS,EAAE,QAAQ,CAAC;AAAA,IAC3D,OAAO,CAAC,MAAM,MAAM,OAAO,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,OAAO,CAAC,OAAO,SAAS,WAAW,MAAM,UAAU,MAAM,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;AAAA,GACnI,CAAC;AAAA,EACF,OAAO,OAAO,OAAO,EAAE,OAAO,OAAO,UAAU,YAAY,QAAQ,MAAM,YAAY,IAAI,MAAM,EAAE,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC,KAAK,QAAQ,OAAO,OAAO,MAAM,EAAE,CAAC;AAAA;;ACjC9J,sBAAS;AAqQF,SAAS,aAAa,CAAC,QAAmD;AAAA,EAC/E,QAAQ,YAAY;AAAA,EACpB,MAAM,UAAuB,OAAO,gBAAgB;AAAA,IAClD,MAAM,SAAS,MAAM,QAAQ,cAAc,WAAW;AAAA,IACtD,OAAO,OAAO;AAAA;AAAA,EAEhB,MAAM,cAA6B,SAAS,UAAU;AAAA,IACpD,IAAI,QAAQ,gBAAgB;AAAA,MAAW,MAAM,IAAI,WAAU;AAAA,QACzD,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM,EAAE,YAAY,WAAW,UAAU,QAAQ,SAAS;AAAA,MAC5D,CAAC;AAAA,IACD,OAAO,QAAQ,YAAY,EAAE,IAAI,CAAC;AAAA;AAAA,EAEpC,OAAO,OAAO,OAAO,SAAS,EAAE,YAAY,CAAC;AAAA;;AC9Q/C,sBAAS;AAqBF,SAAS,KAAK,CAAC,SAAoD;AAAA,EACxE,MAAM,SAAS,SAAS,eAAe;AAAA,EACvC,IAAI,OAAO,WAAW,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG;AAAA,IAC1D,MAAM,IAAI,WAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,kFAAkF,OAAO,MAAM;AAAA,MACxG,MAAM,EAAE,aAAa,OAAO;AAAA,IAC9B,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,aAAa,MAAM,eAAe,OAAO;AAAA;AAI7C,SAAS,OAAO,CAAC,OAAgC;AAAA,EACtD,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EAChF,MAAM,OAAO,OAAO,KAAK,KAAK;AAAA,EAC9B,IAAI,KAAK,WAAW,KAAK,CAAC,KAAK,SAAS,aAAa,KAAK,CAAC,KAAK,SAAS,eAAe,GAAG;AAAA,IACzF,OAAO;AAAA,EACT;AAAA,EACA,MAAM,YAAY;AAAA,EAClB,OACE,UAAU,gBAAgB,QAC1B,OAAO,UAAU,kBAAkB,YACnC,OAAO,SAAS,UAAU,aAAa;AAAA;;ACnC3C,sBAAS;AAET;AAoCA,SAAS,eAAe,CAAC,QAAuE;AAAA,EAC9F,OAAO,IAAI,WAAU,EAAE,MAAM,mBAAmB,SAAS,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC;AAAA;AAI9F,SAAS,SAAS,CAAC,QAAgF;AAAA,EACjG,QAAQ,OAAO,QAAQ,WAAW;AAAA,EAClC,IACE,OAAO,UAAU,YACjB,CAAC,OAAO,UAAU,KAAK,KACvB,QAAQ,oBAAoB,KAAK,OACjC,QAAQ,oBAAoB,KAAK,KACjC;AAAA,IACA,MAAM,gBAAgB;AAAA,MACpB,SACE,GAAG,YAAY,wCACf,IAAI,oBAAoB,KAAK,cAAS,oBAAoB,KAAK,aAAa,OAAO,KAAK;AAAA,MAC1F,MAAM,EAAE,QAAQ,QAAQ,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK,EAAE;AAAA,IACnF,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAST,SAAS,SAAS,CAAC,QAAgE;AAAA,EACjF,QAAQ,OAAO,WAAW;AAAA,EAC1B,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,IAAI,QAAQ,oBAAoB,OAAO,OAAO,QAAQ,oBAAoB,OAAO,KAAK;AAAA,MACpF,MAAM,gBAAgB;AAAA,QACpB,SAAS,GAAG,kDAAkD,MAAM,SAAS;AAAA,QAC7E,MAAM,EAAE,QAAQ,QAAQ,OAAO,OAAO,MAAM,SAAS,EAAE;AAAA,MACzD,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK;AAAA,IAAG,OAAO,OAAO,KAAK;AAAA,EACjF,MAAM,gBAAgB;AAAA,IACpB,SACE,GAAG,2DAA2D,OAAO,KAAK,cAC1E;AAAA,IACF,MAAM,EAAE,QAAQ,QAAQ,OAAO,OAAO,OAAO,KAAK,EAAE;AAAA,EACtD,CAAC;AAAA;AAWI,SAAS,mBAAmB,CAAC,QAKV;AAAA,EACxB,QAAQ,SAAS,QAAQ,eAAe,YAAY;AAAA,EACpD,IAAI,CAAC,QAAQ,aAAa,eAAe;AAAA,IACvC,MAAM,sBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS,GAAG;AAAA,MACZ,MACE,QAAQ,SAAS,UACb,8LACA;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,IAAI,CAAC,eAAe;AAAA,IAClB,MAAM,gBAAgB;AAAA,MACpB,SACE,GAAG,mGACH;AAAA,MACF,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EACA,IAAI,OAAO,YAAY,YAAY,YAAY,QAAQ,MAAM,QAAQ,OAAO,GAAG;AAAA,IAC7E,MAAM,gBAAgB;AAAA,MACpB,SAAS,GAAG,+EAA+E,OAAO,OAAO;AAAA,MACzG,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EACA,MAAM,UAAU;AAAA,EAChB,MAAM,YAAY,SAAS;AAAA,EAC3B,MAAM,UAAU,aAAa,WAAW,cAAc;AAAA,EACtD,IAAI,aAAa,SAAS;AAAA,IACxB,MAAM,gBAAgB;AAAA,MACpB,SACE,GAAG,oGACH;AAAA,MACF,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EACA,WAAW,UAAU,OAAO,KAAK,OAAO,GAAG;AAAA,IACzC,IAAI,WAAW,UAAU,WAAW,SAAS,WAAW,aAAa,WAAW;AAAA,MAAY;AAAA,IAC5F,MAAM,gBAAgB;AAAA,MACpB,SAAS,GAAG,oBAAoB;AAAA,MAChC,MAAM,EAAE,QAAQ,OAAO;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EACA,MAAM,OAAO,SAAS,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,EACrD,IAAI,WAAW;AAAA,IACb,MAAM,MAAuB,EAAE,KAAK,UAAU,EAAE,OAAO,QAAQ,KAAK,OAAO,CAAC,EAAE;AAAA,IAC9E,OAAO,aAAa,EAAE,QAAQ,MAAM,IAAI,CAAC;AAAA,EAC3C;AAAA,EACA,IAAI,EAAE,aAAa,YAAY,EAAE,cAAc,UAAU;AAAA,IACvD,MAAM,gBAAgB;AAAA,MACpB,SAAS,GAAG;AAAA,MACZ,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EACA,MAAM,MAAuB;AAAA,IAC3B,SAAS,UAAU,EAAE,OAAO,QAAQ,SAAS,QAAQ,WAAW,OAAO,CAAC;AAAA,IACxE,UAAU,UAAU,EAAE,OAAO,QAAQ,UAAU,QAAQ,YAAY,OAAO,CAAC;AAAA,EAC7E;AAAA,EACA,OAAO,aAAa,EAAE,QAAQ,MAAM,IAAI,CAAC;AAAA;AAG3C,SAAS,QAAQ,CAAC,QAA0E;AAAA,EAC1F,QAAQ,OAAO,WAAW;AAAA,EAC1B,IAAI,UAAU,aAAa,UAAU;AAAA,IAAa,OAAO;AAAA,EACzD,IAAI,UAAU;AAAA,IAAU,OAAO;AAAA,EAC/B,MAAM,gBAAgB;AAAA,IACpB,SAAS,GAAG,yDAAyD,OAAO,KAAK;AAAA,IACjF,MAAM,EAAE,QAAQ,MAAM,OAAO,KAAK,EAAE;AAAA,EACtC,CAAC;AAAA;AAGH,SAAS,YAAY,CAAC,QAII;AAAA,EACxB,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,OAAO;AAAA,IACb,MAAM,OAAO,WAAW,qBAAqB,WAAW;AAAA,IACxD,KAAK,OAAO;AAAA,EACd;AAAA;;ACnMF,sBAAS,yCAA0B;AAcnC;AAuJO,SAAS,YAAY,CAAC,QAAkC;AAAA,EAC7D,QAAQ,SAAS;AAAA,EACjB,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAC9B,OAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA;AAKpD,IAAM,kBAA0B;AAEhC,IAAM,eAAuB;AAE7B,SAAS,YAAY,CAAC,QAAoC;AAAA,EACxD,QAAQ,WAAW;AAAA,EACnB,IAAI,MAAM;AAAA,EACV,OAAO,IAAI,SAAS,QAAQ;AAAA,IAC1B,MAAM,QAAQ,IAAI,WAAW,SAAS,IAAI,SAAS,CAAC;AAAA,IACpD,OAAO,gBAAgB,KAAK;AAAA,IAC5B,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,QAAQ;AAAA,QAAc;AAAA,MAC1B,OAAO,gBAAgB,OAAO;AAAA,MAC9B,IAAI,IAAI,WAAW;AAAA,QAAQ;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIF,SAAS,YAAY,GAAW;AAAA,EACrC,OAAO,OAAO,WAAW;AAAA;AAQpB,SAAS,YAAY,GAAW;AAAA,EACrC,OAAO,IAAI,KAAK,IAAI,EAAE,SAAS,EAAE,IAAI,aAAa,EAAE,QAAQ,GAAG,CAAC;AAAA;AAGlE,IAAM,kBAA0B;AAChC,IAAM,gBAAwB;AAGvB,SAAS,cAAc,GAAW;AAAA,EACvC,MAAM,QAAQ,IAAI,WAAW,aAAa;AAAA,EAC1C,OAAO,gBAAgB,KAAK;AAAA,EAC5B,IAAI,MAAM;AAAA,EACV,WAAW,QAAQ,OAAO;AAAA,IACxB,OAAO,gBAAgB,OAAO;AAAA,EAChC;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,gBAAwB;AAOvB,SAAS,YAAY,GAAW;AAAA,EACrC,IAAI,YAAY,KAAK,IAAI;AAAA,EACzB,IAAI,OAAO;AAAA,EACX,SAAS,IAAI,EAAG,IAAI,IAAI,KAAK;AAAA,IAC3B,OAAO,cAAc,YAAY,MAAM;AAAA,IACvC,YAAY,KAAK,MAAM,YAAY,EAAE;AAAA,EACvC;AAAA,EACA,MAAM,QAAQ,IAAI,WAAW,EAAE;AAAA,EAC/B,OAAO,gBAAgB,KAAK;AAAA,EAC5B,IAAI,SAAS;AAAA,EACb,WAAW,QAAQ,OAAO;AAAA,IACxB,UAAU,cAAc,OAAO;AAAA,EACjC;AAAA,EACA,OAAO,OAAO;AAAA;AAST,SAAS,oBAAoB,CAAC,QAA2C;AAAA,EAC9E,QAAQ,SAAS;AAAA,EACjB,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,OAAO,aAAa;AAAA,SACjB;AAAA,MACH,OAAO,aAAa;AAAA,SACjB;AAAA,MACH,OAAO,eAAe;AAAA,SACnB;AAAA,MACH,OAAO,aAAa;AAAA,SACjB;AAAA,MACH,OAAO,IAAI;AAAA,SACR;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH;AAAA;AAAA;AAIN,SAAS,eAAe,CAAC,QAA6D;AAAA,EACpF,QAAQ,SAAS;AAAA,EACjB,IAAI,SAAS;AAAA,IAAW,OAAO;AAAA,EAC/B,QAAQ,KAAK;AAAA,SACN;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAMb,SAAS,cAAc,CAAC,QAA0F;AAAA,EAEhH,QAAQ,OAAO,OAAO,UAAU;AAAA,EAChC,MAAM,WAAW,YAAW,MAAM,IAAI,IAAI,MAAM,KAAK,OAAO;AAAA,EAC5D,MAAM,UAAU,aAAa,OAAO,YAAY,MAAM,IAAI,QAAQ;AAAA,EAClE,MAAM,cAAc,aAAa,OAAO,OAAO,cAAc,EAAE,SAAS,WAAW,CAAC,EAAE,CAAC;AAAA,EACvF,OAAO;AAAA,IACL,MAAM,MAAM;AAAA,IACZ,YAAY,MAAM,UAAU,MAAM;AAAA,OAC9B,MAAM,cAAc,YAAY,CAAC,IAAI,EAAE,WAAW,MAAM,UAAU;AAAA,OAClE,MAAM,eAAe,YAAY,CAAC,IAAI,EAAE,YAAY,MAAM,WAAW;AAAA,IACzE,MAAM,MAAM;AAAA,IACZ,YAAY,aAAa,OAAQ,MAAM,OAAsB;AAAA,IAC7D;AAAA,IACA;AAAA,IACA,WAAW,gBAAgB,YAAY,YAAY,YAC/C,oBAAoB,EAAE,OAAO,OAAO,MAAM,MAAM,MAAM,QAAQ,MAAM,SAAS,QAAQ,OAAO,CAAC,IAC7F;AAAA,IACJ,QAAQ,MAAM;AAAA,IACd,YAAY,MAAM;AAAA,IAClB,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,IAChB,aAAa,MAAM;AAAA,IACnB,SAAS,MAAM,WAAW;AAAA,IAC1B,eAAe,gBAAgB,EAAE,MAAM,MAAM,QAAQ,CAAC;AAAA,EACxD;AAAA;AAGF,SAAS,cAAc,CAAC,QAIV;AAAA,EACZ,QAAQ,UAAU;AAAA,EAKlB,MAAM,SAAS,MAAM,OAClB,OAAO,CAAC,UAAU,MAAM,kBAAkB,IAAI,EAC9C,IAAI,CAAC,UAAU,eAAe,EAAE,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,MAAM,CAAC,CAAC;AAAA,EACnF,MAAM,cAAc,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,EACtE,MAAM,gBAAgB,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC;AAAA,EAE9E,MAAM,aAA0B,CAAC;AAAA,EACjC,IAAI,MAAM,eAAe,WAAW;AAAA,IAClC,WAAW,QAAQ,MAAM,WAAW,QAAQ;AAAA,MAC1C,MAAM,QAAQ,YAAY,IAAI,IAAI;AAAA,MAClC,IAAI,UAAU,WAAW;AAAA,QACvB,MAAM,IAAI,WAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,UAAU,MAAM,+CAA+C;AAAA,UACxE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,QACzC,CAAC;AAAA,MACH;AAAA,MACA,WAAW,KAAK,KAAK;AAAA,IACvB;AAAA,EACF,EAAO;AAAA,IACL,WAAW,KAAK,GAAG,OAAO,OAAO,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA;AAAA,EAKzD,MAAM,kBAAkB,IAAI;AAAA,EAC5B,MAAM,qBAAwC,CAAC;AAAA,EAC/C,MAAM,gBAAgB,CAAC,UAAiD;AAAA,IACtE,MAAM,WAAwB,CAAC;AAAA,IAC/B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,QAAQ,YAAY,IAAI,IAAI;AAAA,MAElC,IAAI,UAAU;AAAA,QAAW,OAAO;AAAA,MAChC,SAAS,KAAK,KAAK;AAAA,IACrB;AAAA,IACA,OAAO;AAAA;AAAA,EAET,MAAM,cAAc,CAAC,OAA0B,kBAA2B,eAA8B;AAAA,IACtG,IAAI,MAAM,SAAS;AAAA,MAAG;AAAA,IACtB,MAAM,MAAM,cAAc,MAAM,KAAK,GAAG;AAAA,IACxC,IAAI,gBAAgB,IAAI,GAAG;AAAA,MAAG;AAAA,IAC9B,MAAM,WAAW,cAAc,KAAK;AAAA,IACpC,IAAI,aAAa;AAAA,MAAM;AAAA,IACvB,gBAAgB,IAAI,KAAK,EAAE,QAAQ,UAAU,iBAAiB,CAAC;AAAA;AAAA,EAEjE,IAAI,WAAW,SAAS,GAAG;AAAA,IACzB,YAAY,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI,GAAG,OAAO,MAAM,YAAY,UAAU;AAAA,EACxF,EAAO;AAAA,IAOL,MAAM,OAAO,WAAW;AAAA,IACxB,IAAI,SAAS,aAAa,CAAC,KAAK,QAAQ,CAAC,KAAK,UAAU;AAAA,MACtD,mBAAmB,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,kBAAkB,MAAM,CAAC;AAAA,IACrE;AAAA;AAAA,EAEF,WAAW,SAAS,MAAM,SAAS;AAAA,IAGjC,IAAI,MAAM,SAAS,YAAY,MAAM,UAAU;AAAA,MAAW;AAAA,IAC1D,MAAM,QAAQ,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IACpD,MAAM,mBAAmB,MAAM,qBAAqB;AAAA,IACpD,IAAI,MAAM,WAAW,GAAG;AAAA,MACtB,MAAM,QAAQ,cAAc,KAAK,IAAI;AAAA,MAGrC,IAAI,UAAU,aAAa,MAAM,QAAQ,MAAM;AAAA,QAAU;AAAA,MACzD,IAAI,mBAAmB,KAAK,CAAC,UAAU,MAAM,OAAO,IAAI,SAAS,MAAM,IAAI;AAAA,QAAG;AAAA,MAC9E,mBAAmB,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,iBAAiB,CAAC;AAAA,IAC/D,EAAO;AAAA,MACL,YAAY,OAAO,kBAAkB,MAAM,UAAU;AAAA;AAAA,EAEzD;AAAA,EAEA,MAAM,gBAAgB,OAAO;AAAA,EAC7B,MAAM,WACJ,kBAAkB,aAAa,OAAO,KAAK,aAAa,EAAE,WAAW,IACjE,OACA,IAAI,IACF,OAAO,QAAQ,aAAa,EAAE,IAAI,EAAE,MAAM,UAAuC;AAAA,IAC/E;AAAA,IACA,EAAE,MAAM,MAAM,KAAK,MAAM,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ;AAAA,EACpE,CAAC,CACH;AAAA,EAEN,OAAO;AAAA,IACL,MAAM,MAAM;AAAA,IACZ,YAAY,aAAa,EAAE,MAAM,MAAM,KAAK,CAAC;AAAA,IAC7C,WAAW,MAAM,UAAU,MAAM;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,OAAO,OAAO,CAAC,UAAU,MAAM,QAAQ,MAAM,QAAQ;AAAA,IACnE;AAAA,IACA;AAAA,IACA,WAAW,MAAM;AAAA,IACjB,gBAAgB,IAAI,IAAI,MAAM,UAAU,IAAI,CAAC,aAAa,CAAC,SAAS,MAAM,QAAQ,CAAC,CAAC;AAAA,OAChF,MAAM,WAAW,YAAY,CAAC,IAAI,EAAE,QAAQ,MAAM,OAAO;AAAA,IAC7D,QAAQ,MAAM;AAAA,IACd;AAAA,EACF;AAAA;AAIK,SAAS,gBAAgB,CAAC,QAAsE;AAAA,EACrG,QAAQ,QAAQ,aAAa;AAAA,EAC7B,IAAI,aAAa,aAAa,OAAO,KAAK,QAAQ,EAAE,SAAS,GAAG;AAAA,IAG9D,uBAAuB,EAAE,QAAQ,SAAS,CAAC;AAAA,EAC7C;AAAA,EACA,MAAM,QAAQ,IAAI,IAAI,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,MAAM,OAAO,CAAC,CAAC;AAAA,EAC5E,MAAM,SAAS,OAAO,OAAO,IAAI,CAAC,UAAU;AAAA,IAC1C,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC/B,OAAO,eAAe,EAAE,OAAO,UAAW,UAAU,YAAY,CAAC,IAAI,EAAE,UAAU,MAAM,EAAG,CAAC;AAAA,GAC5F;AAAA,EAED,MAAM,cAAc,IAAI;AAAA,EACxB,WAAW,SAAS,QAAQ;AAAA,IAC1B,YAAY,IAAI,MAAM,MAAM,KAAK;AAAA,IACjC,YAAY,IAAI,MAAM,YAAY,KAAK;AAAA,EACzC;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO,IAAI,IAAI,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,MAAM,SAAS,MAAM,CAAC,CAAC;AAAA,EACjF;AAAA;AAMK,SAAS,YAAY,CAAC,QAAyD;AAAA,EACpF,QAAQ,MAAM,UAAU;AAAA,EACxB,MAAM,QAAQ,KAAK,YAAY,IAAI,KAAK;AAAA,EACxC,IAAI,UAAU,WAAW;AAAA,IACvB,MAAM,IAAI,WAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,kBAAkB;AAAA,MAC3B,MAAM,EAAE,OAAO,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,CAAC,EAAE;AAAA,IAC7E,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAIF,SAAS,YAAY,CAAC,QAAyE;AAAA,EACpG,QAAQ,OAAO,OAAO,YAAY;AAAA,EAClC,MAAM,QAAQ,MAAM,YAAY,IAAI,KAAK;AAAA,EACzC,IAAI,UAAU,WAAW;AAAA,IACvB,IAAI,MAAM,aAAa,QAAQ,MAAM,SAAS,IAAI,KAAK,GAAG;AAAA,MACxD,MAAM,IAAI,WAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,IAAI,oBAAoB,MAAM,iGAA4F;AAAA,QACnI,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,SAAS,UAAU,KAAK;AAAA,MAC5D,CAAC;AAAA,IACH;AAAA,IACA,IAAI,MAAM,eAAe,IAAI,KAAK,GAAG;AAAA,MACnC,MAAM,IAAI,WAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,IAAI,oBAAoB,MAAM,2CAAsC;AAAA,QAC7E,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,QAAQ;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA,IACA,MAAM,IAAI,WAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,kBAAkB,oBAAoB,MAAM,YAAY;AAAA,MACjE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,QAAQ;AAAA,IAC5C,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;;ACnfT;AAGA,sBAAS,0BAAW;AAEpB;AAMA;AAAA,oBACE;AAAA;AAAA;AAAA;AAAA,kBAIA;AAAA;AAOK,SAAS,QAAQ,CAAC,QAA4D;AAAA,EACnF,QAAQ,SAAS,SAAS;AAAA,EAC1B,MAAM,QAAQ,eAAe;AAAA,EAC7B,OAAO,YAAW,IAAI,IAAI,MAAM,SAAS,MAAM;AAAA;AAIjD,SAAS,UAAU,CAAC,QAA6D;AAAA,EAC/E,QAAQ,SAAS,UAAU;AAAA,EAC3B,OAAO,MAAM,aAAa,SAAS,EAAE,SAAS,MAAM,MAAM,KAAK,CAAC;AAAA;AAclE,SAAS,kBAAkB,CAAC,QAAyD;AAAA,EACnF,QAAQ,SAAS,UAAU;AAAA,EAC3B,OAAO,YAAY,cAAc,MAAM,UAAU,MAAM,gBAAgB;AAAA;AAUlE,SAAS,WAAW,CAAC,QAAyE;AAAA,EACnG,QAAQ,SAAS,OAAO,UAAU;AAAA,EAClC,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,MAAM,QAAQ,WAAW,EAAE,SAAS,MAAM,CAAC;AAAA,EAC3C,IAAI,MAAM,UAAU,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxC,MAAM,WAAW,MAAM,IAAI,CAAC,YAC1B,YAAY,QAAQ,YAAY,YAAY,UAAU,MAAM,OAAO,OAAO,CAC5E;AAAA,IACA,OAAO,mBAAmB,EAAE,SAAS,MAAM,CAAC,IAAI,iBAAiB,EAAE,QAAQ,SAAS,CAAC,IAAI;AAAA,EAC3F;AAAA,EACA,OAAO,MAAM,OAAO,KAAK;AAAA;AAUpB,SAAS,WAAW,CAAC,QAAyE;AAAA,EACnG,QAAQ,SAAS,OAAO,UAAU;AAAA,EAClC,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,MAAM,QAAQ,WAAW,EAAE,SAAS,MAAM,CAAC;AAAA,EAC3C,IAAI,OAAO,UAAU,YAAY,mBAAmB,EAAE,SAAS,MAAM,CAAC,GAAG;AAAA,IACvE,MAAM,SAAS,oBAAoB,EAAE,SAAS,MAAM,CAAC;AAAA,IACrD,IAAI,WAAW;AAAA,MAAM,OAAO;AAAA,EAC9B;AAAA,EACA,IAAI,MAAM,UAAU,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxC,OAAO,MAAM,IAAI,CAAC,YAAa,YAAY,QAAQ,YAAY,YAAY,UAAU,MAAM,OAAO,OAAO,CAAE;AAAA,EAC7G;AAAA,EACA,OAAO,MAAM,OAAO,KAAK;AAAA;AAM3B,IAAM,kBAA0B;AAGzB,SAAS,qBAAqB,CAAC,QAAwE;AAAA,EAC5G,QAAQ,OAAO,UAAU;AAAA,EACzB,IAAI,MAAM,eAAe,UAAU;AAAA,IACjC,IAAI,OAAO,UAAU,YAAa,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK;AAAA,MAAI,OAAO;AAAA,EACtG,EAAO,SAAI,MAAM,eAAe,WAAW;AAAA,IACzC,IAAI,OAAO,UAAU,YAAY,gBAAgB,KAAK,MAAM,KAAK,CAAC;AAAA,MAAG,OAAO,MAAM,KAAK;AAAA,IACvF,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AAAA,MAAG,OAAO;AAAA,EAClE,EAAO,SAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,GAAG;AAAA,IAC9D,OAAO;AAAA,EACT;AAAA,EACA,MAAM,IAAI,WAAU;AAAA,IAClB,MAAM;AAAA,IACN,SAAS,kCAAkC,MAAM,qBAAqB,MAAM;AAAA,IAC5E,MAAM,EAAE,OAAO,MAAM,MAAM,MAAM;AAAA,EACnC,CAAC;AAAA;AAUH,SAAS,YAAY,CAAC,QAAsD;AAAA,EAC1E,QAAQ,OAAO,UAAU;AAAA,EACzB,MAAM,SAAS,MAAa;AAAA,IAC1B,MAAM,IAAI,WAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,IAAI,OAAO,KAAK,oDAAoD,MAAM;AAAA,MACnF,MAAM,EAAE,OAAO,MAAM,MAAM,MAAM;AAAA,IACnC,CAAC;AAAA;AAAA,EAEH,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO;AAAA,EAC9E,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,OAAO,KAAK;AAAA,EAClD,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,MAAM,UAAU,MAAM,KAAK;AAAA,IAC3B,IAAI,YAAY,MAAM,gBAAgB,KAAK,OAAO,GAAG;AAAA,MACnD,MAAM,SAAS,OAAO,OAAO;AAAA,MAC7B,IAAI,OAAO,SAAS,MAAM;AAAA,QAAG,OAAO;AAAA,IACtC;AAAA,IACA,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,OAAO,OAAO;AAAA;AAWT,SAAS,iBAAiB,CAAC,QAAyE;AAAA,EACzG,QAAQ,SAAS,OAAO,UAAU;AAAA,EAClC,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,IAAI,YAAY,YAAY,MAAM,eAAe,aAAa,CAAC,MAAM,QAAQ;AAAA,IAC3E,OAAO,aAAa,EAAE,OAAO,MAAM,CAAC;AAAA,EACtC;AAAA,EACA,OAAO,YAAY,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA;AAWvC,SAAS,sBAAsB,CAAC,QAAyE;AAAA,EAC9G,QAAQ,SAAS,OAAO,UAAU;AAAA,EAClC,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,IAAI,YAAY,UAAU;AAAA,IACxB,IAAI,MAAM,eAAe;AAAA,MAAW,OAAO,aAAa,EAAE,OAAO,MAAM,CAAC;AAAA,IACxE,IAAI,MAAM,eAAe,UAAU;AAAA,MACjC,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,QAAU,OAAO;AAAA,MACnE,OAAO,OAAO,OAAO,KAAK,CAAC;AAAA,IAC7B;AAAA,IACA,OAAO,YAAY,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA,EAC9C;AAAA,EACA,OAAO,YAAY,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA;AA0B9C,IAAM,kBAA8B,eAAe,SAAS,OAAO;AACnE,IAAM,kBAA+C,eAAe,SAAS,OAAO;AAM7E,SAAS,YAAY,CAAC,QAAmE;AAAA,EAC9F,QAAQ,SAAS,UAAU;AAAA,EAC3B,MAAM,SAAS,WAAW,EAAE,SAAS,MAAM,CAAC,EAAE;AAAA,EAK9C,IAAI,mBAAmB,EAAE,SAAS,MAAM,CAAC,GAAG;AAAA,IAC1C,OAAO,CAAC,UAAU,YAAY,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA,EACzD;AAAA,EACA,IAAI,WAAW;AAAA,IAAiB,OAAO;AAAA,EACvC,IAAI,MAAM,QAAQ;AAAA,IAChB,OAAO,CAAC,UACN,MAAM,QAAQ,KAAK,IACf,MAAM,IAAI,CAAC,YAAa,YAAY,QAAQ,YAAY,YAAY,UAAU,OAAO,OAAO,CAAE,IAC9F,OAAO,KAAK;AAAA,EACpB;AAAA,EACA,OAAO;AAAA;AAQT,IAAM,kBAAkB,IAAI;AAG5B,SAAS,WAAW,CAAC,MAAwC;AAAA,EAC3D,IAAI,SAAS;AAAA,IAAW,OAAO;AAAA,EAC/B,OAAO,GAAG,KAAK,YAAY,OAAO,KAAK,QAAQ,OAAO,KAAK,WAAW;AAAA;AAejE,SAAS,YAAY,CAAC,QAAwF;AAAA,EACnH,QAAQ,SAAS,OAAO,SAAS;AAAA,EACjC,MAAM,SAAS,WAAW,EAAE,SAAS,MAAM,CAAC,EAAE;AAAA,EAE9C,IAAI,mBAAmB,EAAE,SAAS,MAAM,CAAC,GAAG;AAAA,IAC1C,OAAO,CAAC,UAAU,YAAY,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA,EACzD;AAAA,EACA,IAAI,WAAW;AAAA,IAAiB,OAAO;AAAA,EACvC,IAAI,MAAM,QAAQ;AAAA,IAQhB,IAAI,MAAM,eAAe,UAAU,aAAa,EAAE,YAAY,QAAQ,KAAK,CAAC;AAAA,MAAG,OAAO;AAAA,IACtF,OAAO,CAAC,UACN,MAAM,QAAQ,KAAK,IACf,MAAM,IAAI,CAAC,YAAa,YAAY,QAAQ,YAAY,YAAY,UAAU,OAAO,OAAO,CAAE,IAC9F,OAAO,KAAK;AAAA,EACpB;AAAA,EACA,IAAI,MAAM,eAAe,QAAQ,aAAa,EAAE,YAAY,MAAM,YAAY,KAAK,CAAC;AAAA,IAAG,OAAO;AAAA,EAC9F,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,QAA4F;AAAA,EACnH,QAAQ,SAAS,OAAO,SAAS;AAAA,EACjC,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,UAAoD,CAAC;AAAA,EAC3D,MAAM,iBAA2B,CAAC;AAAA,EAClC,WAAW,SAAS,MAAM,QAAQ;AAAA,IAChC,MAAM,SAAS,aAAa,EAAE,SAAS,UAAW,SAAS,YAAY,CAAC,IAAI,EAAE,KAAK,EAAG,CAAC;AAAA,IACvF,SAAS,IAAI,MAAM,YAAY,EAAE,MAAM,MAAM,MAAM,OAAO,CAAC;AAAA,IAC3D,IAAI,MAAM,eAAe,MAAM;AAAA,MAAM,eAAe,KAAK,MAAM,UAAU;AAAA,IACzE,IAAI,WAAW;AAAA,MAAM,QAAQ,KAAK,EAAE,QAAQ,MAAM,YAAY,OAAO,CAAC;AAAA,EACxE;AAAA,EACA,OAAO,EAAE,UAAU,gBAAgB,UAAU,SAAS,SAAS,eAAe,SAAS,IAAI,OAAO,QAAQ;AAAA;AAoB5G,SAAS,QAAQ,CAAC,MAA0D;AAAA,EAC1E,OAAO,MAAM,SAAS,WAAW,EAAE,MAAM,SAAS,IAAI;AAAA;AAGxD,SAAS,aAAa,CAAC,QAA4F;AAAA,EACjH,QAAQ,SAAS,UAAU;AAAA,EAM3B,MAAM,OAAO,MAAM,SAAS,SAAS,OAAO,IAAI,IAAI,OAAO;AAAA,EAC3D,IAAI,WAAW,gBAAgB,IAAI,KAAK;AAAA,EACxC,IAAI,aAAa,WAAW;AAAA,IAC1B,WAAW,IAAI;AAAA,IACf,gBAAgB,IAAI,OAAO,QAAQ;AAAA,EACrC;AAAA,EACA,MAAM,MAAM,GAAG,WAAW,YAAY,IAAI;AAAA,EAC1C,IAAI,OAAO,SAAS,IAAI,GAAG;AAAA,EAC3B,IAAI,SAAS,WAAW;AAAA,IACtB,OAAO,gBAAgB,EAAE,SAAS,OAAO,KAAK,CAAC;AAAA,IAC/C,SAAS,IAAI,KAAK,IAAI;AAAA,EACxB;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,MAAkB,KAAuD;AAAA,EAClG,MAAM,MAA+B,CAAC;AAAA,EACtC,WAAW,UAAU,OAAO,KAAK,GAAG,GAAG;AAAA,IACrC,MAAM,QAAQ,IAAI;AAAA,IAClB,MAAM,QAAQ,KAAK,SAAS,IAAI,MAAM;AAAA,IACtC,IAAI,UAAU,WAAW;AAAA,MACvB,IAAI,UAAU;AAAA,MACd;AAAA,IACF;AAAA,IACA,IAAI,MAAM,QAAQ,UAAU,QAAQ,UAAU,aAAa,MAAM,WAAW,OAAO,QAAQ,MAAM,OAAO,KAAK;AAAA,EAC/G;AAAA,EACA,OAAO;AAAA;AAWT,IAAM,qBAAqB,IAAI;AAE/B,SAAS,qBAAqB,CAAC,QAA0F;AAAA,EACvH,QAAQ,MAAM,SAAS;AAAA,EACvB,IAAI,UAAU,mBAAmB,IAAI,IAAI;AAAA,EACzC,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS;AAAA,IAChD,MAAM,MAAM,KAAK;AAAA,IAIjB,IAAI,KAAK,eAAe,SAAS,KAAK,CAAC,KAAK,eAAe,KAAK,CAAC,WAAW,OAAO,OAAO,KAAK,MAAM,CAAC,GAAG;AAAA,MACvG,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,MAAM,QAAQ,IAAI,MAAM;AAAA,QACxB,IAAI,UAAU,QAAQ,UAAU;AAAA,UAAW,IAAI,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MACnF;AAAA,MACA;AAAA,IACF;AAAA,IAGA,MAAM,OAAO,OAAO,KAAK,GAAG;AAAA,IAC5B,IAAI,UAAU,YAAY,aAAa,KAAK,WAAW,QAAQ,KAAK;AAAA,IACpE,IAAI;AAAA,MAAS,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,QACjD,IAAI,KAAK,OAAO,SAAS,KAAK,IAAI;AAAA,UAAE,UAAU;AAAA,UAAO;AAAA,QAAO;AAAA,MAC9D;AAAA,IACA,IAAI,YAAY,aAAa,CAAC,SAAS;AAAA,MACrC,MAAM,QAAQ,KAAK,IAAI,CAAC,WAAW;AAAA,QACjC,MAAM,QAAQ,KAAK,SAAS,IAAI,MAAM;AAAA,QACtC,OAAO,EAAE,QAAQ,MAAM,OAAO,QAAQ,QAAQ,QAAQ,OAAO,UAAU,KAAK;AAAA,OAC7E;AAAA,MACD,MAAM,WAAqD,CAAC;AAAA,MAC5D,WAAW,QAAQ;AAAA,QAAO,IAAI,KAAK,WAAW;AAAA,UAAM,SAAS,KAAK,EAAE,QAAQ,KAAK,QAAQ,QAAQ,KAAK,OAAO,CAAC;AAAA,MAC9G,UAAU,EAAE,MAAM,OAAO,UAAU,SAAS,MAAM,KAAK,CAAC,SAAS,KAAK,WAAW,KAAK,IAAI,EAAE;AAAA,MAC5F,mBAAmB,IAAI,MAAM,OAAO;AAAA,IACtC;AAAA,IACA,IAAI,QAAQ,SAAS;AAAA,MACnB,MAAM,MAA+B,CAAC;AAAA,MACtC,WAAW,QAAQ,QAAQ,OAAO;AAAA,QAChC,MAAM,QAAQ,IAAI,KAAK;AAAA,QACvB,IAAI,KAAK,QAAQ,UAAU,QAAQ,UAAU,aAAa,KAAK,WAAW,OAAO,QAAQ,KAAK,OAAO,KAAK;AAAA,MAC5G;AAAA,MACA,KAAK,SAAS;AAAA,IAChB,EAAO;AAAA,MACL,WAAW,QAAQ,QAAQ,UAAU;AAAA,QACnC,MAAM,QAAQ,IAAI,KAAK;AAAA,QACvB,IAAI,UAAU,QAAQ,UAAU;AAAA,UAAW,IAAI,KAAK,UAAU,KAAK,OAAO,KAAK;AAAA,MACjF;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO;AAAA;AAQF,SAAS,SAAS,CAAC,QAME;AAAA,EAC1B,QAAQ,SAAS,OAAO,KAAK,SAAS;AAAA,EACtC,OAAO,kBAAkB,cAAc,EAAE,SAAS,OAAO,KAAK,CAAC,GAAG,GAAG;AAAA;AAIhE,SAAS,UAAU,CAAC,QAMG;AAAA,EAC5B,QAAQ,SAAS,OAAO,MAAM,SAAS;AAAA,EACvC,MAAM,OAAO,cAAc,EAAE,SAAS,OAAO,KAAK,CAAC;AAAA,EACnD,OAAO,KAAK,IAAI,CAAC,QAAQ,kBAAkB,MAAM,GAAG,CAAC;AAAA;AAahD,SAAS,eAAe,CAAC,QAMF;AAAA,EAC5B,QAAQ,SAAS,OAAO,MAAM,SAAS;AAAA,EACvC,MAAM,OAAO,cAAc,EAAE,SAAS,OAAO,KAAK,CAAC;AAAA,EACnD,IAAI,KAAK,WAAW,KAAK,KAAK,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EAC5D,IAAI,KAAK,YAAY,QAAQ,OAAO,KAAK,KAAK,EAA6B,EAAE,SAAS,KAAK,SAAS,MAAM;AAAA,IACxG,OAAO,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAAA,EAC7C;AAAA,EACA,MAAM,WAAW,KAAK;AAAA,EACtB,IAAI,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EAClC,WAAW,OAAO,MAAM;AAAA,IACtB,WAAW,SAAS,UAAU;AAAA,MAC5B,MAAM,QAAQ,IAAI,MAAM;AAAA,MACxB,IAAI,UAAU,QAAQ,UAAU;AAAA,QAAW,IAAI,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,IACnF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUT,IAAM,oBAAgC,CAAC,UACrC,OAAO,UAAU,WAAW,IAAI,WAAW,OAAO,KAAK,OAAO,QAAQ,CAAC,IAAI;AAE7E,IAAM,sBAAsB,IAAI;AAShC,SAAS,iBAAiB,CAAC,OAA8B;AAAA,EACvD,IAAI,OAAO,oBAAoB,IAAI,KAAK;AAAA,EACxC,IAAI,SAAS;AAAA,IAAW,OAAO;AAAA,EAC/B,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,UAAoD,CAAC;AAAA,EAC3D,MAAM,iBAA2B,CAAC;AAAA,EAClC,WAAW,SAAS,MAAM,QAAQ;AAAA,IAChC,MAAM,SACJ,MAAM,eAAe,SACjB,OACA,MAAM,eAAe,WAAW,CAAC,MAAM,SACrC,oBACA,aAAa,EAAE,SAAS,YAAY,MAAM,CAAC;AAAA,IACnD,SAAS,IAAI,MAAM,YAAY,EAAE,MAAM,MAAM,MAAM,OAAO,CAAC;AAAA,IAC3D,IAAI,MAAM,eAAe,MAAM;AAAA,MAAM,eAAe,KAAK,MAAM,UAAU;AAAA,IACzE,IAAI,WAAW;AAAA,MAAM,QAAQ,KAAK,EAAE,QAAQ,MAAM,YAAY,OAAO,CAAC;AAAA,EACxE;AAAA,EACA,OAAO,EAAE,UAAU,gBAAgB,UAAU,SAAS,SAAS,eAAe,SAAS,IAAI,OAAO,QAAQ;AAAA,EAC1G,oBAAoB,IAAI,OAAO,IAAI;AAAA,EACnC,OAAO;AAAA;AAoCF,SAAS,sBAAsB,CAAC,QAGZ;AAAA,EACzB,QAAQ,OAAO,YAAY;AAAA,EAC3B,MAAM,OAAO,kBAAkB,KAAK;AAAA,EACpC,MAAM,QAAQ,QAAQ,IAAI,CAAC,WAAW;AAAA,IACpC,MAAM,SAAS,qBAAqB,EAAE,OAAO,CAAC;AAAA,IAC9C,MAAM,QAAQ,KAAK,SAAS,IAAI,MAAM;AAAA,IACtC,IAAI,UAAU;AAAA,MAAW,MAAM,IAAI,WAAU,EAAE,MAAM,iBAAiB,SAAS,6CAA6C,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,OAAO,EAAE,CAAC;AAAA,IACzK,OAAO;AAAA,GACR;AAAA,EACD,MAAM,QAAQ,MAAM;AAAA,EACpB,MAAM,YAAY,eAAe;AAAA,EACjC,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,QAAQ,KAAK,KAAK,QAAQ,SAAS;AAAA,EACzC,MAAM,UAAU,MAAa;AAAA,IAC3B,MAAM,IAAI,WAAU,EAAE,MAAM,iBAAiB,SAAS,iEAAiE,MAAM,EAAE,OAAO,MAAM,MAAM,iBAAiB,MAAM,EAAE,CAAC;AAAA;AAAA,EAE9K,IAAI,UAAU,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,SAAS;AAAA,IAAO,OAAO,QAAQ;AAAA,EAC1F,OAAO,CAAC,UAAU;AAAA,IAChB,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,YAAY,UAAU,QAAQ;AAAA,MAAQ,OAAO,QAAQ;AAAA,IACxF,IAAI,SAAS;AAAA,MACX,SAAS,QAAQ,EAAG,QAAQ,OAAO,SAAS;AAAA,QAC1C,MAAM,QAAiB,MAAM;AAAA,QAC7B,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,KAAK,IAAI,WAAW,QAAQ,QAAQ,SAAS;AAAA,UAAG,OAAO,QAAQ;AAAA,MAC/G;AAAA,IACF;AAAA,IACA,MAAM,MAA+B,CAAC;AAAA,IACtC,SAAS,QAAQ,EAAG,QAAQ,OAAO,SAAS;AAAA,MAC1C,MAAM,OAAO,MAAM;AAAA,MACnB,MAAM,OAAgB,UAAW,MAAM,KAAK,MAAM,QAAQ,SAAS,GAAiB,QAAQ,aAAa,MAAM;AAAA,MAC/G,IAAI,SAAS;AAAA,QAAW,OAAO,QAAQ;AAAA,MACvC,IAAI,KAAK,QAAQ,SAAS,QAAQ,KAAK,WAAW,OAAO,OAAO,KAAK,OAAO,IAAI;AAAA,IAClF;AAAA,IACA,OAAO;AAAA;AAAA;AAsBJ,SAAS,oBAAoB,CAAC,QAKzB;AAAA,EACV,QAAQ,SAAS,KAAK,OAAO,UAAU;AAAA,EACvC,IAAI,QAAQ;AAAA,IAAU,OAAO,OAAO,SAAS,CAAC;AAAA,EAC9C,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,IAAI,QAAQ,QAAQ;AAAA,IAClB,IAAI,UAAU,QAAQ,MAAM,eAAe,WAAW;AAAA,MACpD,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI;AAAA,IAClF;AAAA,IACA,OAAO,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI;AAAA,EACrD;AAAA,EAKA,IAAI,UAAU,QAAQ,MAAM,eAAe,aAAa,OAAO,UAAU;AAAA,IAAU,OAAO,OAAO,KAAK;AAAA,EACtG,OAAO,UAAU,OAAO,QAAQ,YAAY,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA;;ACpoBvE,sBAAS,qCAAW;AAKpB,SAAS,aAAa,CAAC,OAAkD;AAAA,EACvE,OAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,KAAK,EAAE,iBAAiB;AAAA;AAI7F,IAAM,sBAA8B;AAQ3C,IAAM,cAAc,IAAI;AAGjB,SAAS,iBAAiB,CAAC,QAAuD;AAAA,EACvF,QAAQ,SAAS;AAAA,EACjB,MAAM,SAAS,YAAY,IAAI,IAAI;AAAA,EACnC,IAAI,WAAW;AAAA,IAAW,OAAO;AAAA,EACjC,MAAM,QAAQ,KAAK,KAAK;AAAA,EACxB,MAAM,cAAc,yBAAyB,EAAE,KAAK,CAAC;AAAA,EACrD,MAAM,QAAQ,KAAK,KAAK,cAAc,OAClC,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,IACtC,CAAC,GAAG,KAAK,KAAK,WAAW,GAAG,WAAW;AAAA,EAC3C,MAAM,UAAU,MAAM,IAAI,CAAC,SAAS;AAAA,IAClC,MAAM,QAAQ,MAAM,YAAY,IAAI,IAAI;AAAA,IACxC,IAAI,UAAU;AAAA,MAAW,MAAM,IAAI,WAAU,EAAE,MAAM,iBAAiB,SAAS,kDAAkD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK,EAAE,CAAC;AAAA,IAC3K,OAAO,OAAO,OAAO,sBAAsB,EAAE,OAAO,QAAQ,EAAE,OAAO,qBAAqB,MAAM,MAAM,WAAW,EAAE,CAAC,CAAC;AAAA,GACtH;AAAA,EACD,MAAM,aAAgC,OAAO,OAAO,EAAE,SAAS,OAAO,OAAO,OAAO,GAAG,aAAa,OAAO,OAAO,WAAW,EAAE,CAAC;AAAA,EAChI,YAAY,IAAI,MAAM,UAAU;AAAA,EAChC,OAAO;AAAA;AAWF,SAAS,wBAAwB,CAAC,QAA8C;AAAA,EACrF,QAAQ,SAAS;AAAA,EACjB,MAAM,YAAY,KAAK,KAAK;AAAA,EAC5B,IAAI,cAAc,QAAQ,KAAK,KAAK,YAAY;AAAA,IAAW,OAAO,CAAC;AAAA,EACnE,MAAM,SAAS,KAAK,KAAK;AAAA,EACzB,MAAM,SAAmB,CAAC;AAAA,EAC1B,MAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,UAAU,CAAC,KAAK,KAAK,OAAO;AAAA,EACvF,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,CAAC,cAAc,IAAI;AAAA,MAAG;AAAA,IAC1B,YAAY,MAAM,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,MAChD,IAAI,UAAU;AAAA,QAAW;AAAA,MACzB,IAAI,CAAC,OAAO,YAAY,IAAI,IAAI;AAAA,QAAG;AAAA,MACnC,IAAI,CAAC,UAAU,SAAS,IAAI,KAAK,CAAC,OAAO,SAAS,IAAI;AAAA,QAAG,OAAO,KAAK,IAAI;AAAA,IAC3E;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAYT,SAAS,qBAAqB,CAAC,QAAsD;AAAA,EACnF,QAAQ,OAAO,WAAW;AAAA,EAC1B,MAAM,QAAQ,MAAM,cAAc,IAAI,OAAO,IAAI;AAAA,EACjD,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,MAAM,SAAS,MAAM;AAAA,EACrB,IAAI,WAAW,YAAY,WAAW,aAAa,WAAW;AAAA,IAAS,OAAO;AAAA,EAC9E,IAAI,MAAM,QAAQ;AAAA,IAChB,MAAM,uBAAsB;AAAA,MAC1B,SAAS;AAAA,MACT,SAAS,qCAAqC,MAAM,QAAQ,MAAM,SAAS;AAAA,MAC3E,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,OAAO,KAAK,QAAQ,WAAW,WAAW,UAAU,iBAAiB,WAAW;AAAA;;;ACtElF;AACA,sBAAS,sCAAW;AAEpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;;;ACwBA,sBAAS,qCAAW;AAKpB,SAAS,gBAAe,CAAC,QAAwE;AAAA,EAC/F,OAAO,IAAI,WAAU;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,OACZ,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,EAC3D,CAAC;AAAA;AA8BI,SAAS,wBAAwB,CAAC,QAA0C;AAAA,EACjF,OAAO,OAAO,QAAQ,eAAe;AAAA;AAehC,SAAS,qBAAqB,CAAC,QAAmD;AAAA,EACvF,OAAO,IAAI,IAAI,eAAe,EAAE,OAAO,OAAO,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAAA;AAIjG,SAAS,WAAW,CAAC,QAAkD;AAAA,EACrE,OAAO,CAAC,GAAG,OAAO,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU,CAAC,EACtD,KAAK,CAAC,MAAM,UAAW,OAAO,QAAQ,KAAK,CAAE,EAC7C,KAAK,MAAQ;AAAA;AAWlB,SAAS,cAAc,CAAC,QAAiE;AAAA,EACvF,QAAQ,UAAU;AAAA,EAClB,MAAM,SAAmC,CAAC;AAAA,EAC1C,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,MAAM,CAAC,WAAuC;AAAA,IAClD,IAAI,OAAO,WAAW;AAAA,MAAG;AAAA,IACzB,MAAM,YAAY,YAAY,EAAE,OAAO,CAAC;AAAA,IACxC,IAAI,KAAK,IAAI,SAAS;AAAA,MAAG;AAAA,IACzB,KAAK,IAAI,SAAS;AAAA,IAClB,OAAO,KAAK,MAAM;AAAA;AAAA,EAEpB,IAAI,MAAM,UAAU;AAAA,EACpB,WAAW,SAAS,MAAM;AAAA,IAAc,IAAI,CAAC,KAAK,CAAC;AAAA,EACnD,WAAW,SAAS,MAAM,gBAAgB,OAAO;AAAA,IAAG,IAAI,MAAM,MAAM;AAAA,EACpE,WAAW,SAAS,MAAM;AAAA,IAAoB,IAAI,MAAM,MAAM;AAAA,EAC9D,OAAO;AAAA;AAUF,SAAS,2BAA2B,CAAC,QAGnB;AAAA,EACvB,QAAQ,OAAO,WAAW;AAAA,EAC1B,IAAI,WAAW,WAAW;AAAA,IACxB,MAAM,iBAAgB;AAAA,MACpB,SAAS,iBAAiB,MAAM;AAAA,MAChC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,IACE,OAAO,WAAW,YAClB,WAAW,QACX,CAAC,MAAM,QAAQ,MAAM,KACrB,OAAQ,OAAoC,eAAe,UAC3D;AAAA,IACA,MAAM,aAAc,OAAkC;AAAA,IACtD,IAAI,WAAW,WAAW,KAAK,OAAO,KAAK,MAAM,EAAE,WAAW,GAAG;AAAA,MAC/D,MAAM,iBAAgB;AAAA,QACpB,SAAS,qBAAqB,MAAM;AAAA,QACpC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IACA,OAAO,EAAE,MAAM,cAAc,WAAW;AAAA,EAC1C;AAAA,EACA,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,KAAK,OAAO,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AAAA,IACpG,MAAM,iBAAgB;AAAA,MACpB,SAAS,qBAAqB,MAAM;AAAA,MACpC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,MAAM,SAAsB,CAAC;AAAA,EAC7B,WAAW,QAAQ,QAA6B;AAAA,IAC9C,MAAM,QAAQ,MAAM,YAAY,IAAI,IAAI;AAAA,IACxC,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,iBAAgB;AAAA,QACpB,SAAS,kBAAkB,8BAA8B,MAAM;AAAA,QAC/D,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,OAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EACA,MAAM,YAAY,CAAC,GAAG,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU,CAAC,EAC1D,KAAK,CAAC,MAAM,UAAW,OAAO,QAAQ,KAAK,CAAE,EAC7C,KAAK,MAAQ;AAAA,EAChB,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,EAAE,IAAI,SAAS,GAAG;AAAA,IACpD,MAAM,iBAAgB;AAAA,MACpB,SAAS,mBAAmB,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS,MAAM,6DAA6D,MAAM;AAAA,MACzJ,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE;AAAA,IACvE,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,MAAM,WAAW,OAAO;AAAA;AAU5B,SAAS,iCAAiC,CAAC,QAIzC;AAAA,EACP,QAAQ,SAAS,OAAO,2BAA2B;AAAA,EACnD,IAAI,QAAQ,eAAe,oBAAoB;AAAA,IAAwB;AAAA,EACvE,MAAM,SAAS,sBAAsB,EAAE,MAAM,CAAC;AAAA,EAC9C,IAAI,OAAO,QAAQ;AAAA,IAAG;AAAA,EACtB,MAAM,uBAAsB;AAAA,IAC1B,SAAS,QAAQ;AAAA,IACjB,SAAS,kCAAkC,MAAM,4BAA4B,MAAM,iBAAiB,OAAO;AAAA,IAC3G,MAAM;AAAA,EACR,CAAC;AAAA;AAaI,SAAS,yBAAyB,CAAC,QAKjB;AAAA,EACvB,QAAQ,OAAO,QAAQ,eAAe,kBAAkB;AAAA,EACxD,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,KAAK,OAAO,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AAAA,IACpG,MAAM,iBAAgB;AAAA,MACpB,SAAS,aAAa,MAAM;AAAA,MAC5B,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,MAAM,SAAsB,CAAC;AAAA,EAC7B,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,QAAQ,QAA6B;AAAA,IAC9C,MAAM,QAAQ,MAAM,YAAY,IAAI,IAAI;AAAA,IACxC,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,iBAAgB;AAAA,QACpB,SAAS,kBAAkB,sBAAsB,MAAM;AAAA,QACvD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,IAAI,cAAc,IAAI,MAAM,UAAU,GAAG;AAAA,MACvC,MAAM,iBAAgB;AAAA,QACpB,SAAS,aAAa,MAAM,2CAA2C,MAAM;AAAA,QAC7E,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,IACA,IAAI,MAAM,WAAW,aAAa,MAAM,OAAO,UAAU,MAAM,MAAM;AAAA,MACnE,MAAM,iBAAgB;AAAA,QACpB,SAAS,aAAa,MAAM,2CAA2C,MAAM,gBAAgB,MAAM;AAAA,QACnG,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,IACA,IAAI,KAAK,IAAI,MAAM,UAAU;AAAA,MAAG;AAAA,IAChC,KAAK,IAAI,MAAM,UAAU;AAAA,IACzB,OAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EACA,IAAI,CAAC,eAAe;AAAA,IAGlB,WAAW,SAAS,MAAM,QAAQ;AAAA,MAChC,IAAI,CAAC,MAAM,eAAe,KAAK,IAAI,MAAM,UAAU,KAAK,cAAc,IAAI,MAAM,UAAU;AAAA,QAAG;AAAA,MAC7F,KAAK,IAAI,MAAM,UAAU;AAAA,MACzB,OAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAeF,SAAS,2BAA2B,CAAC,QAKnC;AAAA,EACP,QAAQ,OAAO,UAAU,eAAe,iBAAiB;AAAA,EACzD,SAAS,QAAQ,EAAG,QAAQ,SAAS,QAAQ,SAAS,GAAG;AAAA,IACvD,MAAM,MAAM,SAAS;AAAA,IACrB,WAAW,UAAU,eAAe;AAAA,MAClC,IAAI,UAAU;AAAA,QAAK;AAAA,MACnB,MAAM,iBAAgB;AAAA,QACpB,SAAS,OAAO,YAAY,MAAM,gEAAgE;AAAA,QAClG,MAAM,EAAE,OAAO,MAAM,MAAM,KAAK,OAAO,OAAO;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,IACA,WAAW,SAAS,cAAc;AAAA,MAChC,IAAI,MAAM,cAAc;AAAA,QAAK;AAAA,MAC7B,MAAM,iBAAgB;AAAA,QACpB,SAAS,OAAO,YAAY,MAAM,yCAAyC,MAAM,uJAAkJ,MAAM;AAAA,QACzO,MAAM,EAAE,OAAO,MAAM,MAAM,KAAK,OAAO,OAAO,MAAM,KAAK;AAAA,MAC3D,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAQF,SAAS,aAAa,CAAC,QAAwF;AAAA,EAC7G,OAAO,OAAO,QACX,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,QAAQ,OAAO,IAAI;AAAA,IACzB,IAAI,UAAU,QAAQ,UAAU;AAAA,MAAW,OAAO;AAAA,IAClD,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO,KAAK;AAAA,IAC3C,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,MAAU,OAAO,KAAK,MAAM,SAAS;AAAA,IACvF,IAAI,OAAO,UAAU;AAAA,MAAW,OAAO,KAAK,QAAQ,IAAI;AAAA,IACxD,IAAI,iBAAiB;AAAA,MAAM,OAAO,KAAK,MAAM,QAAQ;AAAA,IACrD,IAAI,iBAAiB;AAAA,MAAY,OAAO,KAAK,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,IACjH,OAAO,KAAK,KAAK,UAAU,KAAK;AAAA,GACjC,EACA,KAAK,MAAQ;AAAA;AAcX,SAAS,6BAA6B,CAAC,QAIrC;AAAA,EACP,QAAQ,OAAO,UAAU,kBAAkB;AAAA,EAC3C,MAAM,kBAAkB,IAAI;AAAA,EAC5B,MAAM,YAAY,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,MAAM,UAAW,OAAO,QAAQ,KAAK,CAAE,EAAE,KAAK,MAAQ;AAAA,EACjG,MAAM,mBAAmB,CAAC,GAAG,MAAM,gBAAgB,OAAO,GAAG,GAAG,MAAM,kBAAkB,EACrF,KAAK,CAAC,UAAU,MAAM,oBAAoB,YAAY,EAAE,QAAQ,MAAM,OAAO,CAAC,MAAM,SAAS;AAAA,EAChG,SAAS,QAAQ,EAAG,QAAQ,SAAS,QAAQ,SAAS,GAAG;AAAA,IACvD,MAAM,MAAM,SAAS;AAAA,IACrB,IAAI,CAAC,oBAAoB,cAAc,KAAK,CAAC,WAAW,IAAI,YAAY,IAAI;AAAA,MAAG;AAAA,IAC/E,MAAM,MAAM,cAAc,EAAE,KAAK,SAAS,cAAc,CAAC;AAAA,IACzD,MAAM,QAAQ,gBAAgB,IAAI,GAAG;AAAA,IACrC,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,iBAAgB;AAAA,QACpB,SAAS,GAAG,MAAM,uEAAkE,aAAa,uBAAuB,cAAc,KAAK,IAAI;AAAA,QAC/I,MAAM,EAAE,OAAO,MAAM,MAAM,MAAM,CAAC,OAAO,KAAK,GAAG,SAAS,CAAC,GAAG,aAAa,EAAE;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,IAAI,KAAK,KAAK;AAAA,EAChC;AAAA;AAiCK,SAAS,iCAAiC,CAAC,QAKzC;AAAA,EACP,QAAQ,SAAS,OAAO,UAAU,kBAAkB;AAAA,EACpD,IAAI,QAAQ,eAAe;AAAA,IAAkB;AAAA,EAC7C,MAAM,kBACJ,cAAc,WAAW,IACrB,OACA,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,MAAM,UAAW,OAAO,QAAQ,KAAK,CAAE,EAAE,KAAK,MAAQ;AAAA,EAErF,WAAW,UAAU,eAAe,EAAE,MAAM,CAAC,GAAG;AAAA,IAC9C,IAAI,YAAY,EAAE,OAAO,CAAC,MAAM;AAAA,MAAiB;AAAA,IACjD,MAAM,UAAU,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU;AAAA,IACtD,MAAM,kBAAkB,IAAI;AAAA,IAC5B,SAAS,QAAQ,EAAG,QAAQ,SAAS,QAAQ,SAAS,GAAG;AAAA,MACvD,MAAM,MAAM,SAAS;AAAA,MACrB,IAAI,QAAQ,KAAK,CAAC,WAAW,EAAE,UAAU,QAAQ,IAAI,YAAY,QAAQ,IAAI,YAAY,SAAS;AAAA,QAAG;AAAA,MACrG,MAAM,MAAM,cAAc,EAAE,KAAK,QAAQ,CAAC;AAAA,MAC1C,MAAM,QAAQ,gBAAgB,IAAI,GAAG;AAAA,MACrC,IAAI,UAAU,WAAW;AAAA,QACvB,MAAM,uBAAsB;AAAA,UAC1B,SAAS,QAAQ;AAAA,UACjB,SAAS,GAAG,MAAM,qCAAqC,aAAa,2BAA2B,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,KAAK,KAAK;AAAA,UAC3I,MAAM,8HAA8H,0BAA0B,yBAAyB,QAAQ,KAAK,IAAI;AAAA,QAC1M,CAAC;AAAA,MACH;AAAA,MACA,gBAAgB,IAAI,KAAK,KAAK;AAAA,IAChC;AAAA,EACF;AAAA;AAoCF,IAAM,wBAA6C,IAAI,IAAI;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAaD,SAAS,oBAAoB,CAAC,QAAwC;AAAA,EACpE,OAAO,sBAAsB,IAAI,OAAO,UAAU,KAAK,EAAE,WAAW,KAAK,EAAE,EAAE,YAAY,CAAC;AAAA;AAqC5F,IAAM,0BAA+C,IAAI,IAAI,CAAC,WAAW,WAAW,CAAC;AAWrF,SAAS,qBAAqB,CAAC,QAAyC;AAAA,EACtE,MAAM,QAAQ,kDAAkD,KAAK,OAAO,WAAW,KAAK,CAAC;AAAA,EAC7F,OAAO,UAAU,QAAQ,wBAAwB,IAAK,MAAM,GAAc,YAAY,CAAC;AAAA;AASzF,SAAS,qBAAqB,CAAC,QAKtB;AAAA,EACP,IAAI,OAAO,QAAQ,SAAS;AAAA,IAAU;AAAA,EACtC,WAAW,SAAS,OAAO,QAAQ;AAAA,IACjC,MAAM,SAAS,MAAM,eAAe,YAAY,OAAO,6CAA6C,KAAK,MAAM,WAAW,KAAK,CAAC;AAAA,IAChI,MAAM,WAAW,WAAW,OACxB,OAAO,OAAO,EAAE,IAChB,MAAM,eAAe,aAAa,MAAM,eAAe,WACrD,OAAO,QAAQ,oBAAoB,yBACnC;AAAA,IACN,IAAI,aAAa;AAAA,MAAW;AAAA,IAC5B,SAAS,QAAQ,EAAG,QAAQ,OAAO,SAAS,QAAQ,SAAS,GAAG;AAAA,MAC9D,MAAM,QAAQ,OAAO,SAAS,SAAS,MAAM;AAAA,MAE7C,MAAM,SAAS,OAAO,UAAU,WAAW,MAAM,KAAK,KAAK,EAAE,SAAS,iBAAiB,aAAa,MAAM,aAAa;AAAA,MACvH,IAAI,UAAU;AAAA,QAAU;AAAA,MACxB,MAAM,iBAAgB;AAAA,QACpB,SAAS,GAAG,OAAO,MAAM,+BAA+B,uBAAuB,MAAM,qCAAqC;AAAA,QAC1H,MAAM,EAAE,OAAO,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,KAAK,OAAO,SAAS;AAAA,MAC5E,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAgCK,SAAS,uBAAuB,CAAC,QAGd;AAAA,EACxB,QAAQ,SAAS,UAAU;AAAA,EAC3B,MAAM,WAAW,QAAQ;AAAA,EACzB,IAAI,MAAM,eAAe,aAAa,CAAC,sBAAsB,EAAE,YAAY,MAAM,WAAW,CAAC,GAAG;AAAA,IAC9F,OAAO;AAAA,EACT;AAAA,EACA,MAAM,eAAe,MAAM,eAAe,YAAY,MAAM,aAAa;AAAA,EACzE,IAAI,cAAc;AAAA,IAChB,IAAI,MAAM,cAAc,WAAW;AAAA,MACjC,OAAO,qBAAqB,EAAE,WAAW,MAAM,UAAU,CAAC,IAAI,SAAS;AAAA,IACzE;AAAA,IACA,OAAO,SAAS,wBAAwB,SAAS;AAAA,EACnD;AAAA,EACA,IAAI,MAAM,eAAe,QAAQ,SAAS,eAAe,SAAS,MAAM,UAAU;AAAA,IAAG,OAAO;AAAA,EAC5F,OAAO;AAAA;AAaT,SAAS,SAAS,CAAC,QAAuE;AAAA,EACxF,MAAM,cACJ;AAAA,EACF,MAAM,SAAS,OAAO,OAAO,OAAO,CAAC,UAAU,MAAM,eAAe,SAAS;AAAA,EAC7E,IAAI,OAAO,SAAS,GAAG;AAAA,IACrB,MAAM,cAAc,OAAO,IAAI,CAAC,UAAU,SAAS,MAAM,cAAc,EAAE,KAAK,OAAO;AAAA,IACrF,OAAO,QAAQ,8LAAoL;AAAA,EACrM;AAAA,EACA,MAAM,UAAU,OAAO,OAAO,KAAK,CAAC,UAAU,MAAM,eAAe,YAAY,MAAM,aAAa,IAAI;AAAA,EACtG,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EACrB,OAAO,OAAO,QAAQ,SAAS,UAC3B,qXAA2W,gBAC3W,kDAAkD;AAAA;AA0CjD,SAAS,+BAA+B,CAAC,QAOvC;AAAA,EACP,QAAQ,SAAS,OAAO,QAAQ,mBAAmB;AAAA,EACnD,MAAM,0BACJ,QAAQ,oBAAoB,6BAA6B,YAAY,mBAAmB;AAAA,EAE1F,IAAI,OAAO,SAAS,cAAc;AAAA,IAChC,IAAI;AAAA,MAAyB;AAAA,IAC7B,MAAM,uBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS,KAAK,iBAAiB,IAAI,aAAa,KAAK,MAAM,2DAA2D,OAAO;AAAA,MAC7H,MACE,iBAAiB,IACb,4NAAuN,MAAM,mBAAmB,4GAChP;AAAA,IACN,CAAC;AAAA,EACL;AAAA,EAEA,sBAAsB,EAAE,SAAS,OAAO,QAAQ,OAAO,QAAQ,UAAU,OAAO,SAAS,CAAC;AAAA,EAC1F,MAAM,SAAS,OAAO,OAAO,OAC3B,CAAC,UAAU,wBAAwB,EAAE,SAAS,MAAM,CAAC,MAAM,UAC7D;AAAA,EACA,IAAI,OAAO,WAAW,KAAK;AAAA,IAAyB;AAAA,EAEpD,MAAM,YAAY,OACf,IAAI,CAAC,UAAU;AAAA,IAGd,MAAM,QAAkB,CAAC;AAAA,IACzB,IAAI,MAAM,eAAe;AAAA,MAAW,MAAM,KAAK,OAAO,MAAM,YAAY;AAAA,IACxE,IAAI,MAAM,cAAc;AAAA,MAAW,MAAM,KAAK,eAAe,MAAM,aAAa;AAAA,IAChF,OAAO,MAAM,WAAW,IACpB,GAAG,MAAM,iBAAiB,MAAM,iBAChC,GAAG,MAAM,iBAAiB,MAAM,gBAAgB,MAAM,KAAK,IAAI;AAAA,GACpE,EACA,KAAK,IAAI;AAAA,EACZ,MAAM,uBAAsB;AAAA,IAC1B,SAAS,QAAQ;AAAA,IACjB,SAAS,GAAG,MAAM,8CAA8C;AAAA,IAChE,MACE,iBAAiB,IACb,6NAAmN,MAAM,mBAAmB,kDAAkD,UAAU,EAAE,SAAS,QAAQ,OAAO,CAAC,MACnU,wTAA8S,UAAU,EAAE,SAAS,QAAQ,OAAO,CAAC;AAAA,EAC3V,CAAC;AAAA;;;AC9tBH,sBAAS;AA6CF,IAAM,uBAA+B;AAGrC,IAAM,sBAA8B;AAGpC,IAAM,uBAA+B;AAgB5C,IAAM,qCAAwE,OAAO,OAAO;AAAA,EAC1F,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AAID,SAAS,gBAAgB,CAAC,QAAuE;AAAA,EAC/F,OAAO,IAAI,WAAU,EAAE,MAAM,mBAAmB,SAAS,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC;AAAA;AAG9F,SAAS,iBAAiB,CAAC,QAAuE;AAAA,EAChG,OAAO,IAAI,WAAU;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,OAAO;AAAA,IAChB,MAAM,OAAO;AAAA,EACf,CAAC;AAAA;AAKH,IAAM,qBAA6B;AAEnC,SAAS,gBAAgB,CAAC,OAA2B;AAAA,EACnD,IAAI,SAAS;AAAA,EACb,WAAW,QAAQ;AAAA,IAAO,UAAU,OAAO,aAAa,IAAI;AAAA,EAC5D,OAAO,KAAK,MAAM,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AAAA;AAG/E,SAAS,gBAAgB,CAAC,MAAiC;AAAA,EACzD,IAAI,CAAC,mBAAmB,KAAK,IAAI;AAAA,IAAG,OAAO;AAAA,EAC3C,MAAM,SAAS,KAAK,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AAAA,EACxD,MAAM,UAAU,MAAqB;AAAA,IACnC,IAAI;AAAA,MACF,OAAO,KAAK,SAAS,IAAI,QAAQ,IAAK,OAAO,SAAS,KAAM,CAAC,CAAC;AAAA,MAC9D,MAAM;AAAA,MACN,OAAO;AAAA;AAAA,KAER;AAAA,EACH,IAAI,WAAW;AAAA,IAAM,OAAO;AAAA,EAC5B,MAAM,QAAQ,IAAI,WAAW,OAAO,MAAM;AAAA,EAC1C,SAAS,QAAQ,EAAG,QAAQ,OAAO,QAAQ;AAAA,IAAS,MAAM,SAAS,OAAO,WAAW,KAAK;AAAA,EAC1F,OAAO;AAAA;AAMT,SAAS,KAAK,CAAC,OAAyC;AAAA,EACtD,IAAI,MAAM;AAAA,IAAQ,OAAO;AAAA,EACzB,IAAI,MAAM,aAAa;AAAA,IAAM,OAAO;AAAA,EACpC,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA,MAKP,OAAO;AAAA;AAAA;AAUb,SAAS,YAAY,CAAC,QAA2E;AAAA,EAC/F,QAAQ,OAAO,UAAU;AAAA,EACzB,WAAW,SAAS,MAAM,QAAQ;AAAA,IAChC,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,KAAK,MAAM;AAAA,MAAY;AAAA,IAChD,IAAI,MAAM,QAAQ,MAAM;AAAA,MAAU,OAAO,CAAC,MAAM,IAAI;AAAA,IACpD,IAAI,MAAM,mBAAmB,KAAK,CAAC,UAAW,MAAM,OAAO,GAAiB,SAAS,MAAM,IAAI,GAAG;AAAA,MAChG,OAAO,CAAC,MAAM,IAAI;AAAA,IACpB;AAAA,EACF;AAAA,EACA,MAAM,SAAmC;AAAA,IACvC,GAAI,MAAM,WAAW,SAAS,IAAI,CAAC,MAAM,UAAU,IAAI,CAAC;AAAA,IACxD,GAAG,CAAC,GAAG,MAAM,gBAAgB,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,MAAM,MAAM;AAAA,EACpE;AAAA,EACA,WAAW,SAAS,QAAQ;AAAA,IAC1B,IAAI,MAAM,WAAW;AAAA,MAAG;AAAA,IACxB,IAAI,MAAM,MAAM,CAAC,UAAU,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,UAAU,GAAG;AAAA,MACtE,OAAO,MAAM,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IACxC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAeF,SAAS,sBAAsB,CAAC,QAKnB;AAAA,EAClB,QAAQ,OAAO,SAAS,OAAO,uBAAuB;AAAA,EACtD,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,MAAM,iBAAiB;AAAA,MACrB,SAAS,+BAA+B,MAAM;AAAA,MAC9C,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,wBAAwB;AAAA,IAC7D,CAAC;AAAA,EACH;AAAA,EACA,MAAM,OAAyB,CAAC;AAAA,EAChC,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,QAAQ,OAAO;AAAA,IACxB,QAAQ,UAAU;AAAA,IAClB,IAAI,KAAK,IAAI,MAAM,IAAI,GAAG;AAAA,MACxB,MAAM,iBAAiB;AAAA,QACrB,SAAS,4BAA4B,MAAM,gBAAgB,MAAM;AAAA,QACjE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,QAAQ,yBAAyB;AAAA,MACjF,CAAC;AAAA,IACH;AAAA,IACA,KAAK,IAAI,MAAM,IAAI;AAAA,IACnB,MAAM,MAAM,MAAM,KAAK;AAAA,IACvB,IAAI,QAAQ,MAAM;AAAA,MAChB,MAAM,kBAAkB;AAAA,QACtB,SAAS,qCAAqC,MAAM,QAAQ,MAAM;AAAA,QAClE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS,iBAAiB;AAAA,MAC1E,CAAC;AAAA,IACH;AAAA,IACA,IAAI,QAAQ,OAAO,mCAAmC,QAAQ,UAAU,QAAQ,uBAAuB,WAAW;AAAA,MAChH,MAAM,kBAAkB;AAAA,QACtB,SACE,qCAAqC,MAAM,QAAQ,MAAM,WAAW,QAAQ,6DAC5E,oGACA;AAAA,QACF,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS,4BAA4B,SAAS,QAAQ,KAAK;AAAA,MAC3G,CAAC;AAAA,IACH;AAAA,IACA,KAAK,KAAK,EAAE,OAAO,WAAW,KAAK,WAAW,OAAO,KAAK,OAAO,IAAI,CAAC;AAAA,EACxE;AAAA,EACA,MAAM,aAAa,aAAa,EAAE,OAAO,OAAO,KAAK,CAAC;AAAA,EACtD,IAAI,eAAe,MAAM;AAAA,IACvB,MAAM,kBAAkB;AAAA,MACtB,SACE,+BAA+B,MAAM,4DACrC;AAAA,MACF,MAAM,EAAE,OAAO,MAAM,MAAM,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,mBAAmB;AAAA,IACjF,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,OAAO,MAAM,MAAM,MAAM,WAAW,aAAY,EAAE,OAAO,MAAM,MAAM,KAAK,CAAC,EAAE;AAAA;AASxF,SAAS,YAAW,CAAC,QAAoE;AAAA,EACvF,QAAQ,OAAO,SAAS;AAAA,EACxB,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ;AAAA,IAC9B,MAAM,OAAO,GAAG,IAAI,MAAM,QAAQ,IAAI;AAAA,IACtC,OAAO,IAAI,MAAM,aAAa,GAAG,cAAc,IAAI,UAAU;AAAA,GAC9D;AAAA,EACD,OAAO,CAAC,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG;AAAA;AAKnC,SAAS,cAAc,CAAC,QAA+E;AAAA,EACrG,QAAQ,KAAK,OAAO,UAAU;AAAA,EAC9B,IAAI,UAAU,QAAQ,UAAU,WAAW;AAAA,IACzC,IAAI,CAAC,IAAI,MAAM,YAAY;AAAA,MACzB,MAAM,iBAAiB;AAAA,QACrB,SAAS,uBAAuB,SAAS,IAAI,MAAM;AAAA,QACnD,MAAM,EAAE,OAAO,OAAO,IAAI,MAAM,MAAM,QAAQ,0BAA0B;AAAA,MAC1E,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,IAAI;AAAA,SACL;AAAA,MACH,IAAI,OAAO,UAAU;AAAA,QAAU;AAAA,MAC/B,OAAO;AAAA,SACJ,KAAK;AAAA,MACR,MAAM,WAAW,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI;AAAA,MACzG,IAAI,OAAO,aAAa,YAAY,CAAC,OAAO,cAAc,QAAQ;AAAA,QAAG;AAAA,MACrE,OAAO,OAAO,QAAQ;AAAA,IACxB;AAAA,SACK,KAAK;AAAA,MACR,IAAI,OAAO,UAAU;AAAA,QAAU,OAAO,MAAM,SAAS;AAAA,MACrD,IAAI,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK;AAAA,QAAG,OAAO,OAAO,KAAK;AAAA,MACjF,IAAI,OAAO,UAAU,YAAY,UAAU,KAAK,KAAK;AAAA,QAAG,OAAO;AAAA,MAC/D;AAAA,IACF;AAAA,SACK,KAAK;AAAA,MACR,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK;AAAA,QAAG;AAAA,MAG1D,OAAO,MAAM,SAAS;AAAA,IACxB;AAAA,SACK,KAAK;AAAA,MACR,IAAI,OAAO,UAAU;AAAA,QAAU,OAAO;AAAA,MACtC,IAAI,OAAO,UAAU;AAAA,QAAU,OAAO,MAAM,SAAS;AAAA,MACrD,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AAAA,QAAG,OAAO,MAAM,SAAS;AAAA,MAC/E;AAAA,IACF;AAAA,SACK,KAAK;AAAA,MACR,MAAM,OACJ,iBAAiB,OAAO,MAAM,QAAQ,IAAI,OAAO,UAAU,WAAW,IAAI,KAAK,KAAK,EAAE,QAAQ,IAAI,OAAO,KAAK;AAAA,MAChH,IAAI,CAAC,OAAO,SAAS,IAAI;AAAA,QAAG;AAAA,MAC5B,OAAO,OAAO,IAAI;AAAA,IACpB;AAAA,SACK,KAAK;AAAA,MACR,IAAI,OAAO,UAAU;AAAA,QAAW,OAAO,QAAQ,MAAM;AAAA,MACrD,IAAI,UAAU,KAAK,UAAU;AAAA,QAAG,OAAO,UAAU,IAAI,MAAM;AAAA,MAC3D;AAAA,IACF;AAAA,SACK,KAAK;AAAA,MACR,IAAI,iBAAiB;AAAA,QAAY,OAAO,iBAAiB,KAAK;AAAA,MAC9D;AAAA,IACF;AAAA;AAAA,EAEF,MAAM,iBAAiB;AAAA,IACrB,SAAS,6BAA6B,SAAS,IAAI,MAAM;AAAA,IACzD,MAAM,EAAE,OAAO,OAAO,IAAI,MAAM,MAAM,QAAQ,0BAA0B;AAAA,EAC1E,CAAC;AAAA;AAGH,SAAS,cAAc,CAAC,QAAoF;AAAA,EAC1G,QAAQ,KAAK,KAAK,MAAM,UAAU;AAAA,EAClC,MAAM,SAAS,MAAa;AAAA,IAC1B,MAAM,iBAAiB;AAAA,MACrB,SAAS,gDAAgD,SAAS,IAAI,MAAM;AAAA,MAC5E,MAAM,EAAE,OAAO,OAAO,IAAI,MAAM,MAAM,QAAQ,yBAAyB;AAAA,IACzE,CAAC;AAAA;AAAA,EAEH,IAAI,QAAQ,IAAI;AAAA,IAAK,OAAO,OAAO;AAAA,EACnC,QAAQ,IAAI;AAAA,SACL;AAAA,MACH,OAAO;AAAA,SACJ,KAAK;AAAA,MACR,MAAM,QAAQ,OAAO,IAAI;AAAA,MACzB,OAAO,OAAO,cAAc,KAAK,IAAI,QAAQ,OAAO;AAAA,IACtD;AAAA,SACK;AAAA,MACH,IAAI,CAAC,UAAU,KAAK,IAAI;AAAA,QAAG,OAAO,OAAO;AAAA,MACzC,OAAO,OAAO,IAAI;AAAA,SACf,KAAK;AAAA,MACR,MAAM,QAAQ,OAAO,IAAI;AAAA,MACzB,OAAO,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO;AAAA,IACjD;AAAA,SACK;AAAA,MACH,OAAO;AAAA,SACJ,KAAK;AAAA,MACR,MAAM,OAAO,OAAO,IAAI;AAAA,MACxB,IAAI,CAAC,OAAO,cAAc,IAAI;AAAA,QAAG,OAAO,OAAO;AAAA,MAC/C,OAAO,IAAI,KAAK,IAAI;AAAA,IACtB;AAAA,SACK;AAAA,MACH,OAAO,SAAS,MAAM,OAAO,SAAS,MAAM,QAAQ,OAAO;AAAA,SACxD,KAAK;AAAA,MACR,MAAM,QAAQ,iBAAiB,IAAI;AAAA,MACnC,OAAO,UAAU,OAAO,OAAO,IAAI;AAAA,IACrC;AAAA;AAAA,MAEE,OAAO,OAAO;AAAA;AAAA;AAOpB,SAAS,aAAa,CAAC,GAAY,GAA+B;AAAA,EAChE,MAAM,OAAO,CAAC,GAAoB,MAAoC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAAA,EAC/F,IAAI,aAAa,QAAQ,aAAa;AAAA,IAAM,OAAO,KAAK,EAAE,QAAQ,GAAG,EAAE,QAAQ,CAAC;AAAA,EAChF,IAAI,OAAO,MAAM,aAAa,OAAO,MAAM;AAAA,IAAW,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;AAAA,EACtF,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM;AAAA,IAAU,OAAO,KAAK,GAAG,CAAC;AAAA,EACpE,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM;AAAA,IAAU,OAAO,KAAK,GAAG,CAAC;AAAA,EACpE,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM;AAAA,IAAU,OAAO,KAAK,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC;AAAA,EACxF,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM;AAAA,IAAU,OAAO,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC;AAAA,EAKxF,OAAO;AAAA;AAcF,SAAS,gBAAgB,CAAC,QAId;AAAA,EACjB,QAAQ,MAAM,KAAK,aAAa;AAAA,EAChC,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS;AAAA,IAChD,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,IAAI,IAAI;AAAA,IACd,MAAM,IAAI,SAAS;AAAA,IACnB,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAAA,IAClC,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAAA,IAClC,IAAI,SAAS;AAAA,MAAO;AAAA,IACpB,IAAI,SAAS,OAAO;AAAA,MAClB,MAAM,cAAc,IAAI,UAAU;AAAA,MAClC,OAAO,QAAQ,cAAc,CAAC;AAAA,IAChC;AAAA,IACA,MAAM,QAAQ,cAAc,GAAG,CAAC;AAAA,IAChC,IAAI,UAAU;AAAA,MAAM,OAAO;AAAA,IAC3B,IAAI,UAAU;AAAA,MAAG;AAAA,IACjB,OAAO,IAAI,cAAc,QAAQ,QAAQ,IAAI,QAAQ;AAAA,EACvD;AAAA,EACA,OAAO;AAAA;AAIF,SAAS,eAAe,CAAC,QAGT;AAAA,EACrB,QAAQ,MAAM,QAAQ;AAAA,EACtB,OAAO,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,MAAM,SAAS,IAAI;AAAA;AAapD,SAAS,iBAAiB,CAAC,QAGvB;AAAA,EACT,QAAQ,MAAM,QAAQ;AAAA,EACtB,MAAM,SAAS,KAAK,KAAK,IAAI,CAAC,QAAQ;AAAA,IACpC,IAAI,EAAE,IAAI,MAAM,QAAQ,MAAM;AAAA,MAC5B,MAAM,iBAAiB;AAAA,QACrB,SAAS,gFAAgF,IAAI,MAAM;AAAA,QACnG,MAAM,EAAE,OAAO,KAAK,OAAO,OAAO,IAAI,MAAM,MAAM,QAAQ,0BAA0B;AAAA,MACtF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,UAAU,eAAe,EAAE,KAAK,OAAO,IAAI,IAAI,MAAM,OAAO,OAAO,KAAK,MAAM,CAAC;AAAA,IACrF,OAAO,YAAY,OAAO,OAAO,CAAC,IAAI,KAAK,OAAO;AAAA,GACnD;AAAA,EACD,MAAM,UAAU,KAAK,UAAU,CAAC,sBAAsB,KAAK,WAAW,MAAM,CAAC;AAAA,EAC7E,OAAO,sBAAsB,iBAAiB,IAAI,YAAY,EAAE,OAAO,OAAO,CAAC;AAAA;AAS1E,SAAS,iBAAiB,CAAC,QAAsE;AAAA,EACtG,QAAQ,MAAM,UAAU;AAAA,EACxB,MAAM,YAAY,CAAC,WAA0B;AAAA,IAC3C,MAAM,iBAAiB;AAAA,MACrB,SAAS,iCAAiC;AAAA,MAC1C,MAAM,EAAE,OAAO,KAAK,OAAO,QAAQ,yBAAyB;AAAA,IAC9D,CAAC;AAAA;AAAA,EAEH,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW;AAAA,IAAG,OAAO,UAAU,6BAA6B;AAAA,EACnG,MAAM,MAAM,MAAM,QAAQ,GAAG;AAAA,EAC7B,MAAM,SAAS,MAAM,IAAI,KAAK,MAAM,MAAM,GAAG,MAAM,CAAC;AAAA,EACpD,IAAI,WAAW,qBAAqB;AAAA,IAClC,IAAI,YAAY,KAAK,MAAM,GAAG;AAAA,MAC5B,MAAM,iBAAiB;AAAA,QACrB,SAAS,4CAA4C,OAAO,MAAM,GAAG,EAAE,gCAAgC;AAAA,QACvG,MAAM;AAAA,UACJ,OAAO,KAAK;AAAA,UACZ,QAAQ;AAAA,UACR,cAAc,OAAO,OAAO,MAAM,GAAG,EAAE,CAAC;AAAA,UACxC,kBAAkB;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,OAAO,UAAU,iBAAiB,6BAA6B;AAAA,EACjE;AAAA,EACA,MAAM,QAAQ,iBAAiB,MAAM,MAAM,oBAAoB,MAAM,CAAC;AAAA,EACtE,IAAI,UAAU;AAAA,IAAM,OAAO,UAAU,2BAA2B;AAAA,EAChE,MAAM,UAAU,MAAe;AAAA,IAC7B,IAAI;AAAA,MACF,OAAO,KAAK,MAAM,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC;AAAA,MACjD,MAAM;AAAA,MACN;AAAA;AAAA,KAED;AAAA,EACH,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW;AAAA,IAAG,OAAO,UAAU,kCAAkC;AAAA,EACtG,OAAO,SAAS,WAAW,UAAU;AAAA,EACrC,IAAI,YAAY,sBAAsB;AAAA,IACpC,MAAM,iBAAiB;AAAA,MACrB,SAAS,4CAA4C,OAAO,OAAO,gCAAgC;AAAA,MACnG,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,kBAAkB;AAAA,MACpB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,IAAI,OAAO,cAAc;AAAA,IAAU,OAAO,UAAU,gCAAgC;AAAA,EACpF,IAAI,cAAc,KAAK,WAAW;AAAA,IAChC,MAAM,YAAY,UAAU,MAAM,GAAG,EAAE,OAAO,KAAK;AAAA,IACnD,MAAM,iBAAiB;AAAA,MACrB,SAAS,YACL,6CAA6C,wCAAwC,KAAK,8EAC1F,sCAAsC,UAAU,MAAM,GAAG,EAAE,MAAM,8BAA8B,KAAK;AAAA,MACxG,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ,QAAQ,YAAY,uBAAuB;AAAA,QAC3C,gBAAgB;AAAA,QAChB,mBAAmB,KAAK;AAAA,MAC1B;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,KAAK,KAAK,QAAQ;AAAA,IAChE,OAAO,UAAU,YAAY,KAAK,KAAK,0BAA0B;AAAA,EACnE;AAAA,EACA,OAAO,KAAK,KAAK,IAAI,CAAC,KAAK,UAAU;AAAA,IACnC,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,UAAU,MAAM;AAAA,MAClB,IAAI,CAAC,IAAI,MAAM,YAAY;AAAA,QACzB,OAAO,UAAU,gDAAgD,IAAI,MAAM,OAAO;AAAA,MACpF;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,KAAK,OAAO,MAAM,OAAO,YAAY,OAAO,MAAM,OAAO,UAAU;AAAA,MAC/G,OAAO,UAAU,4BAA4B,IAAI,MAAM,OAAO;AAAA,IAChE;AAAA,IACA,OAAO,eAAe,EAAE,KAAK,KAAK,MAAM,IAAI,MAAM,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC;AAAA,GAChF;AAAA;;;ACphBH,sBAAS;AA6FT,SAAS,gBAAe,CAAC,QAAwE;AAAA,EAC/F,OAAO,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC;AAAA;AAG9F,SAAS,cAAa,CAAC,OAAkD;AAAA,EACvE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,KAAK,EAAE,iBAAiB;AAAA;AAKpG,SAAS,aAAa,CAAC,UAAqC;AAAA,EAC1D,OAAO,SAAS,gBAAgB;AAAA;AAQlC,SAAS,mBAAmB,CAAC,QAAwE;AAAA,EACnG,QAAQ,UAAU,WAAW;AAAA,EAC7B,MAAM,MAAM,cAAc,QAAQ;AAAA,EAClC,MAAM,aAAa,OAAO,UAAU,OAClC,CAAC,cACC,UAAU,gBAAgB,SAAS,SACnC,cAAc,SAAS,MAAM,QAE5B,SAAS,UAAU,SAAS,eAAe,UAAU,SAAS,SAAS,KAC5E;AAAA,EACA,OAAO,WAAW,MAAM;AAAA;AAS1B,SAAS,SAAS,CAAC,QAKM;AAAA,EACvB,QAAQ,OAAO,OAAO,UAAU,SAAS;AAAA,EACzC,IAAI,UAAU,aAAa,MAAM,WAAW,GAAG;AAAA,IAC7C,MAAM,iBAAgB;AAAA,MACpB,SAAS,aAAa,SAAS,YAAY,SAAS,gBAAgB;AAAA,MACpE,MAAM,EAAE,OAAO,SAAS,OAAO,UAAU,SAAS,KAAK;AAAA,IACzD,CAAC;AAAA,EACH;AAAA,EACA,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,IACzB,MAAM,QAAQ,MAAM,YAAY,IAAI,IAAI;AAAA,IACxC,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,aAAa,SAAS,YAAY,SAAS,uBAAuB,eAAe;AAAA,QAC1F,MAAM,EAAE,OAAO,SAAS,OAAO,UAAU,SAAS,KAAK;AAAA,MACzD,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA,GACR;AAAA;AASI,SAAS,aAAa,CAAC,QAGgC;AAAA,EAC5D,QAAQ,MAAM,SAAS;AAAA,EACvB,IAAI,KAAK,WAAW,WAAW,KAAK,KAAK,UAAU,WAAW,GAAG;AAAA,IAC/D,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,GAAG,qBAAqB,KAAK,SAAS,YAAY,KAAK,SAAS,uEAAkE,KAAK,WAAW;AAAA,MAC3J,MAAM,EAAE,OAAO,KAAK,SAAS,OAAO,UAAU,KAAK,SAAS,MAAM,OAAO,KAAK,WAAW,OAAO;AAAA,IAClG,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,QAAQ,KAAK,WAAW,IAAiB,OAAO,KAAK,UAAU,GAAgB;AAAA;AAcnF,SAAS,mBAAmB,CAAC,QAA+C;AAAA,EACjF,QAAQ,SAAS;AAAA,EACjB,MAAM,UAAU,oBAAoB,EAAE,UAAU,KAAK,UAAU,QAAQ,KAAK,OAAO,CAAC;AAAA,EACpF,OAAO,YAAY,OAAO,OAAO,QAAQ;AAAA;AAG3C,SAAS,gBAAgB,CAAC,QAA+D;AAAA,EACvF,QAAQ,OAAO,aAAa;AAAA,EAC5B,MAAM,KAAK,MAAM;AAAA,EACjB,IAAI,GAAG,WAAW,GAAG;AAAA,IACnB,MAAM,iBAAgB;AAAA,MACpB,SAAS,mCAAmC,SAAS,8CAA8C,MAAM;AAAA,MACzG,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,IACrD,CAAC;AAAA,EACH;AAAA,EACA,OAAO,GAAG;AAAA;AASZ,IAAM,YAAY,IAAI;AAGf,SAAS,mBAAmB,CAAC,QAInB;AAAA,EACf,QAAQ,MAAM,aAAa;AAAA,EAC3B,IAAI,UAAU,UAAU,IAAI,IAAI;AAAA,EAChC,IAAI,YAAY,WAAW;AAAA,IACzB,UAAU,IAAI;AAAA,IACd,UAAU,IAAI,MAAM,OAAO;AAAA,EAC7B;AAAA,EACA,MAAM,SAAS,QAAQ,IAAI,QAAQ;AAAA,EACnC,IAAI,WAAW;AAAA,IAAW,OAAO;AAAA,EACjC,MAAM,OAAO,4BAA4B,MAAM;AAAA,EAC/C,QAAQ,IAAI,UAAU,IAAI;AAAA,EAC1B,OAAO;AAAA;AAGT,SAAS,2BAA2B,CAAC,QAIpB;AAAA,EACf,QAAQ,MAAM,OAAO,aAAa;AAAA,EAClC,MAAM,SAAS,aAAa,EAAE,MAAM,OAAO,SAAS,YAAY,CAAC;AAAA,EAEjE,IAAI,SAAS,SAAS,cAAc;AAAA,IAWlC,IAAI,SAAS,UAAU,SAAS,aAAa;AAAA,MAC3C,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SACE,aAAa,SAAS,YAAY,SAAS,gEAC3C,0GACA;AAAA,QACF,MAAM,EAAE,OAAO,SAAS,OAAO,UAAU,SAAS,MAAM,aAAa,SAAS,YAAY;AAAA,MAC5F,CAAC;AAAA,IACH;AAAA,IACA,MAAM,OAAO,kBAAkB;AAAA,MAC7B,QAAQ,SAAS;AAAA,MACjB,QAAQ,SAAS;AAAA,SACb,SAAS,iBAAiB,YAAY,CAAC,IAAI,EAAE,cAAc,SAAS,aAAa;AAAA,IACvF,CAAC;AAAA,IAID,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MAGA,YAAY,CAAC,iBAAiB,EAAE,OAAO,SAAS,CAAC,CAAC;AAAA,MAClD,WAAW,CAAC,iBAAiB,EAAE,OAAO,QAAQ,SAAS,CAAC,CAAC;AAAA,MACzD,MAAM;AAAA,QACJ,WAAW,KAAK;AAAA,QAChB,cAAc,YAAY,MAAM;AAAA,QAChC,aAAa,YAAY,MAAM;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,SAAS,WAAW,aAAa,SAAS,OAAO,SAAS,GAAG;AAAA,IAE/D,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA;AAAA,SACG,WAAW;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa,SAAS;AAAA,QACtB,YAAY,SAAS;AAAA,MACvB,CAAC;AAAA,MACD,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAGA,MAAM,UAAU,oBAAoB,EAAE,UAAU,OAAO,CAAC;AAAA,EACxD,IAAI,YAAY,QAAQ,QAAQ,WAAW,aAAa,QAAQ,OAAO,WAAW,GAAG;AAAA,IACnF,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,aAAa,SAAS,YAAY,SAAS,2CAA2C,SAAS;AAAA,MACxG,MAAM,EAAE,OAAO,SAAS,OAAO,UAAU,SAAS,MAAM,QAAQ,SAAS,YAAY;AAAA,IACvF,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA,IACL,MAAM,SAAS,SAAS,aAAa;AAAA,IACrC;AAAA,IACA;AAAA,OACG,WAAW;AAAA,MACZ;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,aAAa,QAAQ;AAAA,MACrB,YAAY,QAAQ;AAAA,IACtB,CAAC;AAAA,IACD,MAAM;AAAA,EACR;AAAA;AAQF,SAAS,UAAU,CAAC,QAMwE;AAAA,EAC1F,QAAQ,OAAO,QAAQ,UAAU,aAAa,eAAe;AAAA,EAC7D,MAAM,aAAa,UAAU,EAAE,OAAO,OAAO,aAAa,UAAU,MAAM,SAAS,CAAC;AAAA,EACpF,MAAM,YAAY,UAAU,EAAE,OAAO,QAAQ,OAAO,YAAY,UAAU,MAAM,aAAa,CAAC;AAAA,EAC9F,IAAI,WAAW,WAAW,UAAU,QAAQ;AAAA,IAC1C,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,aAAa,SAAS,YAAY,SAAS,eAAe,WAAW,sBAAsB,UAAU;AAAA,MAC9G,MAAM,EAAE,OAAO,SAAS,OAAO,UAAU,SAAS,KAAK;AAAA,IACzD,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,YAAY,UAAU;AAAA;AAKjC,IAAM,mBAAsC,CAAC,SAAS,WAAW,QAAQ,QAAQ,UAAU,WAAW,MAAM;AAC5G,IAAM,kBAAqC,CAAC,SAAS,UAAU,WAAW,MAAM;AAEhF,SAAS,oBAAoB,CAAC,QAAoE;AAAA,EAChG,QAAQ,OAAO,MAAM,aAAa;AAAA,EAClC,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG;AAAA,IAC1E,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,qBAAqB;AAAA,MACjC,MAAM,EAAE,UAAU,UAAU,MAAM,MAAM;AAAA,IAC1C,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAOT,SAAS,kBAAkB,CAAC,QAAyE;AAAA,EACnG,QAAQ,OAAO,WAAW;AAAA,EAC1B,MAAM,QAAkB,CAAC;AAAA,EACzB,YAAY,MAAM,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IAClD,IAAI,UAAU,aAAa,UAAU;AAAA,MAAO;AAAA,IAC5C,IAAI,SAAS,YAAY,MAAM,eAAe,IAAI,IAAI;AAAA,MAAG;AAAA,IACzD,IAAI,MAAM,aAAa,QAAQ,MAAM,SAAS,IAAI,IAAI,GAAG;AAAA,MACvD,IAAI,UAAU,MAAM;AAAA,QAClB,MAAM,iBAAgB;AAAA,UACpB,SAAS,UAAU,wCAAwC,MAAM;AAAA,UACjE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,QACzC,CAAC;AAAA,MACH;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,MAAM,YAAY,IAAI,IAAI;AAAA,IACxC,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,iBAAgB;AAAA,QACpB,SAAS,kBAAkB,mBAAmB,MAAM;AAAA,QACpD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,IAAI,UAAU,MAAM;AAAA,MAClB,MAAM,iBAAgB;AAAA,QACpB,SAAS,UAAU,wCAAwC,MAAM;AAAA,QACjE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,MAAM,KAAK,MAAM,IAAI;AAAA,EACvB;AAAA,EACA,OAAO;AAAA;AAQT,SAAS,gBAAgB,CAAC,QAAyE;AAAA,EACjG,QAAQ,OAAO,MAAM,aAAa;AAAA,EAClC,IAAI,CAAC,eAAc,IAAI,GAAG;AAAA,IACxB,MAAM,iBAAgB;AAAA,MACpB,SAAS,qBAAqB;AAAA,MAC9B,MAAM,EAAE,OAAO,MAAM,MAAM,SAAS;AAAA,IACtC,CAAC;AAAA,EACH;AAAA,EACA,MAAM,UAAU,IAAI;AAAA,EACpB,YAAY,MAAM,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,IAChD,IAAI,UAAU,aAAa,UAAU;AAAA,MAAO;AAAA,IAC5C,IAAI,UAAU,MAAM;AAAA,MAClB,MAAM,iBAAgB;AAAA,QACpB,SAAS,QAAQ,wCAAwC,MAAM;AAAA,QAC/D,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,OAAO,KAAK;AAAA,MACnD,CAAC;AAAA,IACH;AAAA,IACA,IAAI,MAAM,eAAe,IAAI,IAAI,GAAG;AAAA,MAClC,MAAM,iBAAgB;AAAA,QACpB,SAAS,QAAQ,kBAAkB,MAAM;AAAA,QACzC,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,OAAO,KAAK;AAAA,MACnD,CAAC;AAAA,IACH;AAAA,IACA,IAAI,MAAM,aAAa,QAAQ,MAAM,SAAS,IAAI,IAAI;AAAA,MAAG;AAAA,IACzD,IAAI,CAAC,MAAM,YAAY,IAAI,IAAI,GAAG;AAAA,MAChC,MAAM,iBAAgB;AAAA,QACpB,SAAS,kBAAkB,mBAAmB,MAAM;AAAA,QACpD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,OAAO,KAAK;AAAA,MACnD,CAAC;AAAA,IACH;AAAA,IACA,QAAQ,IAAI,IAAI;AAAA,EAClB;AAAA,EACA,MAAM,OAAO,MAAM,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,IAAI,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,EAC/F,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,MAAM,iBAAgB;AAAA,MACpB,SAAS,qBAAqB,2CAA2C,MAAM;AAAA,MAC/E,MAAM,EAAE,OAAO,MAAM,MAAM,SAAS;AAAA,IACtC,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAOF,SAAS,oBAAoB,CAAC,QAIxB;AAAA,EACX,QAAQ,MAAM,OAAO,cAAc;AAAA,EACnC,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,QAAQ,UAAU,WAAW;AAAA,IACtC,WAAW,SAAS,KAAK,KAAK;AAAA,MAAY,OAAO,IAAI,MAAM,IAAI;AAAA,EACjE;AAAA,EACA,WAAW,QAAQ,UAAU,QAAQ;AAAA,IACnC,WAAW,SAAS,KAAK,KAAK;AAAA,MAAY,OAAO,IAAI,MAAM,IAAI;AAAA,EACjE;AAAA,EACA,OAAO,CAAC,GAAG,MAAM;AAAA;AAInB,IAAM,mBAAsC,CAAC,OAAO;AAMpD,SAAS,gBAAgB,CAAC,QAKJ;AAAA,EACpB,QAAQ,MAAM,OAAO,MAAM,UAAU;AAAA,EACrC,MAAM,WAAW,MAAM,eAAe,IAAI,IAAI;AAAA,EAC9C,IAAI,aAAa,aAAa,CAAC,SAAS,QAAQ;AAAA,IAC9C,MAAM,iBAAgB;AAAA,MACpB,SAAS,iBAAiB,kBAAkB,MAAM;AAAA,MAClD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,KAAK;AAAA,IAC5C,CAAC;AAAA,EACH;AAAA,EACA,MAAM,OAAO,oBAAoB,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,EAK1D,IAAI,UAAU,aAAa,KAAK,OAAO,WAAW,WAAW;AAAA,IAC3D,MAAM,iBAAgB;AAAA,MACpB,SAAS,aAAa,MAAM,QAAQ,qCAAqC,KAAK,OAAO;AAAA,MACrF,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,KAAK;AAAA,IAC5C,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,MAAM,SAAU,UAAU,YAAY,EAAE,OAAO,UAAU,IAAI,EAAE,MAAM,EAAG;AAAA;AAGnF,SAAS,aAAa,CAAC,QAAqF;AAAA,EAC1G,QAAQ,MAAM,OAAO,SAAS;AAAA,EAC9B,IAAI,SAAS,MAAM;AAAA,IACjB,OAAO,MAAM,UACV,OAAO,CAAC,aAAa,SAAS,MAAM,EACpC,IAAI,CAAC,aAAa,iBAAiB,EAAE,MAAM,OAAO,MAAM,SAAS,MAAM,OAAO,UAAU,CAAC,CAAC;AAAA,EAC/F;AAAA,EACA,IAAI,CAAC,eAAc,IAAI,KAAK,CAAC,eAAc,KAAK,MAAM,GAAG;AAAA,IACvD,MAAM,iBAAgB;AAAA,MACpB,SAAS,oBAAoB,MAAM;AAAA,MACnC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,MAAM,QAA6B,CAAC;AAAA,EACpC,YAAY,MAAM,UAAU,OAAO,QAAQ,KAAK,MAAM,GAAG;AAAA,IACvD,IAAI,UAAU,aAAa,UAAU;AAAA,MAAO;AAAA,IAC5C,IAAI,UAAU,MAAM;AAAA,MAClB,MAAM,KAAK,iBAAiB,EAAE,MAAM,OAAO,MAAM,OAAO,UAAU,CAAC,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,IACA,IAAI,CAAC,eAAc,KAAK,GAAG;AAAA,MACzB,MAAM,iBAAgB;AAAA,QACpB,SAAS,iBAAiB,kBAAkB,MAAM;AAAA,QAClD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,KAAK;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA,IACA,WAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AAAA,MACpC,IAAI,MAAM,SAAS;AAAA,QAAW;AAAA,MAC9B,IAAI,CAAC,iBAAiB,SAAS,GAAG,GAAG;AAAA,QACnC,MAAM,iBAAgB;AAAA,UACpB,SAAS,iBAAiB,kBAAkB,MAAM,wCAAmC;AAAA,UACrF,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,MAAM,UAAU,IAAI;AAAA,QAC3D,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,MAAM;AAAA,IACpB,IAAI,UAAU,aAAa,CAAC,eAAc,KAAK,GAAG;AAAA,MAChD,MAAM,iBAAgB;AAAA,QACpB,SAAS,iBAAiB,wBAAwB,MAAM;AAAA,QACxD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,KAAK;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA,IACA,MAAM,KAAK;AAAA,SACN,iBAAiB,EAAE,MAAM,OAAO,MAAM,MAAoD,CAAC;AAAA,IAChG,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,WAAW,CAAC,QAKA;AAAA,EACnB,QAAQ,MAAM,OAAO,UAAU,SAAS;AAAA,EACxC,MAAM,OAAO,oBAAoB,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,EAC1D,MAAM,MAA+B,SAAS,OAAO,CAAC,IAAK;AAAA,EAE3D,MAAM,UAAU,SAAS,SAAS,mBAAmB;AAAA,EACrD,WAAW,OAAO,OAAO,KAAK,GAAG,GAAG;AAAA,IAClC,IAAI,IAAI,SAAS;AAAA,MAAW;AAAA,IAC5B,IAAI,CAAC,QAAQ,SAAS,GAAG,GAAG;AAAA,MAC1B,MAAM,iBAAgB;AAAA,QACpB,SAAS,yBAAyB,qBAAqB,SAAS,2BAAsB,QAAQ,KAAK,IAAI;AAAA,QACvG,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,MAAM,UAAU,IAAI;AAAA,MACpE,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,IAAI,IAAI,WAAW,aAAa,IAAI,YAAY,WAAW;AAAA,IACzD,MAAM,iBAAgB;AAAA,MACpB,SAAS,aAAa,SAAS;AAAA,MAC/B,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,IACrD,CAAC;AAAA,EACH;AAAA,EACA,IAAI,IAAI,WAAW,aAAa,IAAI,SAAS,WAAW;AAAA,IACtD,MAAM,iBAAgB;AAAA,MACpB,SAAS,aAAa,SAAS;AAAA,MAC/B,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,IACrD,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,QACJ,IAAI,UAAU,YACV,aACC,MAAM;AAAA,IACL,IAAI,CAAC,eAAc,IAAI,KAAK,GAAG;AAAA,MAC7B,MAAM,iBAAgB;AAAA,QACpB,SAAS,sBAAsB,SAAS;AAAA,QACxC,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,IACA,OAAO,IAAI;AAAA,KACV;AAAA,EAET,MAAM,OACJ,IAAI,SAAS,YAAY,YAAY,qBAAqB,EAAE,OAAO,IAAI,MAAM,MAAM,QAAQ,UAAU,SAAS,KAAK,CAAC;AAAA,EACtH,MAAM,OACJ,IAAI,SAAS,YAAY,YAAY,qBAAqB,EAAE,OAAO,IAAI,MAAM,MAAM,QAAQ,UAAU,SAAS,KAAK,CAAC;AAAA,EAGtH,MAAM,SAAS,yBAAyB;AAAA,IACtC;AAAA,IACA,OAAO,KAAK;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ,SAAS,IAAI;AAAA,EACf,CAAC;AAAA,EAED,MAAM,SACJ,IAAI,WAAW,YACX,mBAAmB,EAAE,OAAO,KAAK,QAAQ,QAAQ,IAAI,OAAkC,CAAC,IACxF,IAAI,SAAS,YACX,iBAAiB,EAAE,OAAO,KAAK,QAAQ,MAAM,IAAI,MAAM,UAAU,SAAS,KAAK,CAAC,IAChF;AAAA,EAIR,MAAM,iBAAiB,KAAK,OAAO;AAAA,EACnC,IAAI,WAAqC;AAAA,EACzC,IAAI,mBAAmB,MAAM;AAAA,IAC3B,IAAI,IAAI,WAAW,WAAW;AAAA,MAC5B,MAAM,QAAQ,OAAO,QAAQ,IAAI,MAAiC,EAC/D,OAAO,EAAE,MAAM,WAAW,eAAe,IAAI,IAAI,KAAK,UAAU,IAAI,EACpE,IAAI,EAAE,UAAU,IAAI;AAAA,MACvB,WAAW,MAAM,WAAW,IAAI,OAAO;AAAA,IACzC,EAAO,SAAI,IAAI,SAAS,WAAW;AAAA,MACjC,MAAM,QAAQ,CAAC,GAAG,eAAe,KAAK,CAAC,EAAE,OACvC,CAAC,SAAU,IAAI,KAAiC,UAAU,IAC5D;AAAA,MACA,WAAW,MAAM,WAAW,IAAI,OAAO;AAAA,IACzC,EAAO;AAAA,MACL,WAAW,CAAC,GAAG,eAAe,KAAK,CAAC;AAAA;AAAA,EAExC;AAAA,EAKA,IAAI,YAAsC;AAAA,EAC1C,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,WAAW,MAAM;AAAA,IACnB,MAAM,QAAQ,CAAC,GAAG,MAAM;AAAA,IAExB,MAAM,YAAY,IAAI,IAAY,KAAK,UAAU,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA,IAC3E,IAAI,WAAW,MAAM;AAAA,MACnB,WAAW,QAAQ,qBAAqB,EAAE,MAAM,OAAO,KAAK,QAAQ,WAAW,OAAO,CAAC,GAAG;AAAA,QACxF,UAAU,IAAI,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,IACA,IAAI,aAAa,QAAQ,mBAAmB,MAAM;AAAA,MAChD,WAAW,QAAQ,UAAU;AAAA,QAC3B,WAAW,QAAQ,eAAe,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG;AAAA,UACxD,UAAU,IAAI,IAAI;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,QAAQ,WAAW;AAAA,MAC5B,IAAI,CAAC,MAAM,SAAS,IAAI,GAAG;AAAA,QACzB,MAAM,KAAK,IAAI;AAAA,QACf,MAAM,KAAK,IAAI;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY;AAAA,EACd;AAAA,EAEA,OAAO;AAAA,IACL,MAAM,SAAS;AAAA,IACf;AAAA,IACA,MAAM,EAAE,OAAO,SAAS,IAAI,SAAS,MAAM,MAAM,QAAQ,WAAW,OAAO,UAAU,OAAO;AAAA,EAC9F;AAAA;AAWK,SAAS,wBAAwB,CAAC,QAKZ;AAAA,EAC3B,QAAQ,MAAM,OAAO,QAAQ,YAAY;AAAA,EAEzC,MAAM,aAAa,eAAc,MAAM,IAAI,SAAS;AAAA,EACpD,MAAM,cAAc,eAAc,OAAO,IAAI,UAAU;AAAA,EAEvD,IAAI,gBAAgB,MAAM;AAAA,IACxB,YAAY,KAAK,UAAU,OAAO,QAAQ,WAAW,GAAG;AAAA,MACtD,IAAI,UAAU,aAAa,UAAU;AAAA,QAAO;AAAA,MAC5C,IAAI,QAAQ;AAAA,QAAU;AAAA,MACtB,IAAI,CAAC,MAAM,eAAe,IAAI,GAAG,GAAG;AAAA,QAClC,MAAM,WAAW,MAAM,YAAY,IAAI,GAAG;AAAA,QAC1C,MAAM,iBAAgB;AAAA,UACpB,SAAS,WACL,IAAI,kBAAkB,MAAM,mFAC5B,qBAAqB,kBAAkB,MAAM;AAAA,UACjD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,IAAI;AAAA,QAC3C,CAAC;AAAA,MACH;AAAA,MACA,IAAI,UAAU,QAAQ,CAAC,eAAc,KAAK,GAAG;AAAA,QAC3C,MAAM,iBAAgB;AAAA,UACpB,SAAS,WAAW,iBAAiB,MAAM;AAAA,UAC3C,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,IAAI;AAAA,QAC3C,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,IAAI;AAAA,EAClB,IAAI,eAAe,MAAM;AAAA,IACvB,WAAW,YAAY,MAAM,WAAW;AAAA,MACtC,MAAM,QAAQ,WAAW,SAAS;AAAA,MAClC,IAAI,UAAU,QAAQ,eAAc,KAAK;AAAA,QAAG,MAAM,IAAI,SAAS,MAAM,KAAK;AAAA,IAC5E;AAAA,EACF;AAAA,EAEA,IAAI,gBAAgB,MAAM;AAAA,IACxB,WAAW,YAAY,MAAM,WAAW;AAAA,MACtC,MAAM,QAAQ,YAAY,SAAS;AAAA,MACnC,IAAI,UAAU,QAAQ,eAAc,KAAK;AAAA,QAAG,MAAM,IAAI,SAAS,MAAM,KAAK;AAAA,IAC5E;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,aAAa,UAAU,YAAY;AAAA,EACrD,MAAM,SACJ,cAAc,aAAa,cAAc,QAAQ,CAAC,IAAI,cAAc,EAAE,MAAM,OAAO,MAAM,UAAU,CAAC;AAAA,EAEtG,IAAI,MAAM,SAAS,KAAK,OAAO,WAAW;AAAA,IAAG,OAAO;AAAA,EAEpD,MAAM,YAAY,CAAC,GAAG,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,UACjD,YAAY,EAAE,MAAM,OAAO,UAAU,MAAM,eAAe,IAAI,IAAI,GAAiB,KAAK,CAAC,CAC3F;AAAA,EAEA,OAAO,EAAE,WAAW,OAAO;AAAA;;;AHxhBtB,IAAM,cAAsB;AAEnC,IAAM,gBAAuC,CAAC,OAAO,UAAU,SAAS,SAAS;AAEjF,IAAM,oBAA2D;AAAA,EAC/D,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AACV;AAGA,IAAM,eAAiE;AAAA,EAIrE,UAAU,CAAC,SAAS,WAAW,QAAQ,QAAQ,UAAU,SAAS,UAAU,YAAY,UAAU,WAAW,QAAQ,oBAAoB,MAAM;AAAA,EAC/I,WAAW,CAAC,SAAS,WAAW,QAAQ,QAAQ,UAAU,SAAS,UAAU,YAAY,UAAU,WAAW,QAAQ,oBAAoB,MAAM;AAAA,EAChJ,YAAY,CAAC,SAAS,UAAU,WAAW,QAAQ,oBAAoB,MAAM;AAAA,EAC7E,QAAQ,CAAC,QAAQ,UAAU,WAAW,QAAQ,YAAY;AAAA,EAC1D,YAAY,CAAC,QAAQ,gBAAgB;AAAA,EACrC,qBAAqB,CAAC,QAAQ,kBAAkB,UAAU,WAAW,MAAM;AAAA,EAG3E,YAAY,CAAC,QAAQ,kBAAkB,iBAAiB,UAAU,iBAAiB,wBAAwB;AAAA,EAG3G,qBAAqB,CAAC,SAAS,QAAQ,UAAU,QAAQ,eAAe;AAAA,EACxE,QAAQ,CAAC,SAAS,QAAQ,UAAU,WAAW,QAAQ,eAAe;AAAA,EACtE,YAAY,CAAC,SAAS,QAAQ,eAAe;AAAA,EAC7C,QAAQ,CAAC,SAAS,UAAU,UAAU,UAAU,WAAW,QAAQ,YAAY;AAAA,EAC/E,QAAQ,CAAC,SAAS,UAAU,WAAW,MAAM;AAAA,EAC7C,YAAY,CAAC,OAAO;AAAA,EACpB,OAAO,CAAC,SAAS,UAAU,QAAQ,QAAQ,SAAS;AAAA,EACpD,WAAW,CAAC,SAAS,WAAW,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,MAAM;AAAA,EACxF,SAAS,CAAC,MAAM,SAAS,UAAU,WAAW,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,MAAM;AACxG;AAEA,IAAM,iBAA0C,CAAC,UAAU,QAAQ,QAAQ,QAAQ,MAAM;AAEzF,IAAM,gBAAyF;AAAA,EAC7F,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAIA,SAAS,gBAAe,CAAC,QAAwE;AAAA,EAC/F,OAAO,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC;AAAA;AAK9F,SAAS,cAAa,CAAC,OAAkD;AAAA,EACvE,OACE,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,EAAE,iBAAiB,SACnB,EAAE,iBAAiB;AAAA;AAKvB,SAAS,aAAa,CAAC,OAAyB;AAAA,EAC9C,OACE,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,aACjB,OAAO,UAAU,YACjB,iBAAiB,QACjB,iBAAiB;AAAA;AAKrB,SAAS,aAAa,CAAC,SAAqB,OAA2B;AAAA,EACrE,OAAO,QAAQ,SAAS,YAAY,MAAM,eAAe,aAAa,CAAC,MAAM;AAAA;AAO/E,SAAS,gBAAgB,CAAC,QAA2E;AAAA,EACnG,QAAQ,SAAS,OAAO,UAAU;AAAA,EAClC,MAAM,MAAM,UAAU,EAAE,UAAW,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAG,CAAC;AAAA,EAC1E,OAAO,cAAc,SAAS,KAAK,IAAI,KAAK,KAAK,UAAU,KAAK,IAAI;AAAA;AAGtE,SAAS,SAAS,CAAC,QAAsD;AAAA,EACvE,QAAQ,OAAO,UAAU;AAAA,EACzB,OAAO,UAAU,YAAY,EAAE,MAAM,MAAM,WAAW,IAAI,EAAE,OAAO,MAAM,MAAM,WAAW;AAAA;AAM5F,IAAM,qBAAiD,OAAO,OAAO;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,IAAM,yBAAuD,OAAO,OAAO;AAAA,EACzE;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,IAAM,mBAA4B,OAAO,OAAO,EAAE,UAAU,UAAU,MAAM,OAAO,CAAC;AAWpF,SAAS,eAAe,CAAC,QAIb;AAAA,EACV,QAAQ,OAAO,OAAO,WAAW;AAAA,EACjC,MAAM,QAAQ,WAAW,MAAM,cAAc;AAAA,EAC7C,IAAI,UAAU;AAAA,IAAU,OAAO;AAAA,EAC/B,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AAAA,IACvE,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,sDAAsD,KAAK,UAAU,KAAK,KAAK,OAAO,KAAK;AAAA,MACvG,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,MAAM,MAAM;AAAA,IACjD,CAAC;AAAA,EACH;AAAA,EACA,MAAM,UAAU;AAAA,EAChB,WAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AAAA,IACtC,IAAI,QAAQ,cAAc,QAAQ;AAAA,MAAQ;AAAA,IAC1C,MAAM,iBAAgB;AAAA,MACpB,SACE,GAAG,iBAAiB,qEACpB,UAAU,uBAAuB,IAAI,CAAC,WAAW,IAAI,SAAS,EAAE,KAAK,KAAK,OAC1E;AAAA,MACF,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,QAAQ,IAAI;AAAA,IACjD,CAAC;AAAA,EACH;AAAA,EACA,MAAM,WAAW,QAAQ;AAAA,EACzB,IAAI,OAAO,aAAa,YAAY,CAAC,mBAAmB,SAAS,QAA2B,GAAG;AAAA,IAC7F,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,yBAAyB,mBAAmB,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE,KAAK,KAAK,UAAU,OAAO,QAAQ;AAAA,MACtH,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,SAAS;AAAA,IAC9C,CAAC;AAAA,EACH;AAAA,EACA,MAAM,OAAO,QAAQ;AAAA,EACrB,IAAI,SAAS,cAAc,OAAO,SAAS,YAAY,CAAC,uBAAuB,SAAS,IAAyB,IAAI;AAAA,IACnH,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,qBAAqB,uBAAuB,IAAI,CAAC,SAAS,IAAI,OAAO,EAAE,KAAK,KAAK,UAAU,OAAO,IAAI;AAAA,MAClH,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC1C,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA,MAAM,SAAS,YAAY,SAAU;AAAA,EACvC;AAAA;AAmBF,SAAS,WAAW,CAAC,QAMF;AAAA,EACjB,QAAQ,SAAS,MAAM,OAAO,QAAQ,iBAAiB;AAAA,EACvD,IAAI,KAAK,SAAS;AAAA,IAAW,OAAO;AAAA,EACpC,IAAI,MAAM,QAAQ;AAAA,IAChB,MAAM,iBAAgB;AAAA,MACpB,SAAS,WAAW,MAAM,cAAc;AAAA,MACxC,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EACA,MAAM,OAAO,gBAAgB,EAAE,OAAO,KAAK,MAAM,OAAO,OAAO,CAAC;AAAA,EAChE,IAAI,KAAK,aAAa,WAAW;AAAA,IAC/B,MAAM,iBAAgB;AAAA,MACpB,SAAS,wCAAwC,MAAM,cAAc;AAAA,MACrE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EACA,IAAI,cAAc;AAAA,IAChB,MAAM,iBAAgB;AAAA,MACpB,SAAS,gDAAgD,MAAM,cAAc;AAAA,MAC7E,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EACA,wBAAwB,EAAE,SAAS,MAAM,OAAO,OAAO,CAAC;AAAA,EACxD,OAAO;AAAA;AAWT,SAAS,uBAAuB,CAAC,QAKxB;AAAA,EACP,QAAQ,SAAS,MAAM,OAAO,WAAW;AAAA,EACzC,QAAQ,kBAAkB,wBAAwB,QAAQ;AAAA,EAC1D,MAAM,OAAO,GAAG,gBAAgB,EAAE,KAAK,CAAC,QAAQ,MAAM,cAAc;AAAA,EACpE,IAAI,iBAAiB,WAAW,GAAG;AAAA,IACjC,IAAI,KAAK,aAAa,YAAY,KAAK,SAAS;AAAA,MAAQ;AAAA,IACxD,MAAM,uBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS;AAAA,MACT,MACE,GAAG,QAAQ,oFACX;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,IAAI,CAAC,iBAAiB,SAAS,KAAK,QAAQ,GAAG;AAAA,IAC7C,MAAM,uBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS;AAAA,MACT,MAAM,GAAG,QAAQ,kCAAkC,iBAAiB,KAAK,IAAI;AAAA,IAC/E,CAAC;AAAA,EACH;AAAA,EACA,IAAI,CAAC,oBAAoB,SAAS,KAAK,IAAI,GAAG;AAAA,IAC5C,MAAM,uBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS;AAAA,MACT,MAAM,GAAG,QAAQ,sCAAsC,oBAAoB,KAAK,IAAI;AAAA,IACtF,CAAC;AAAA,EACH;AAAA;AAgBF,SAAS,qBAAqB,CAAC,QAOyC;AAAA,EACtE,QAAQ,SAAS,MAAM,OAAO,QAAQ,QAAQ,UAAU;AAAA,EACxD,KAAK,WAAW,aAAa,UAAU,cAAc,QAAQ,kBAAkB,gBAAgB;AAAA,IAC7F,MAAM,uBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS,wBAAwB,MAAM,cAAc;AAAA,MACrD,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,MAAM,MAA2E,CAAC;AAAA,EAClF,IAAI,WAAW,WAAW;AAAA,IACxB,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,MACzB,IAAI,OAAO,WAAW,GAAG;AAAA,QACvB,MAAM,iBAAgB;AAAA,UACpB,SAAS,wBAAwB,MAAM,cAAc;AAAA,UACrD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,QACpC,CAAC;AAAA,MACH;AAAA,MACA,IAAI,UAAU,OAAO,IACnB,CAAC,SAAS,aAAa,EAAE,OAAO,OAAO,OAAO,IAAI,GAAG,SAAS,oBAAoB,CAAC,EAAE,UACvF;AAAA,IACF,EAAO,SACL,eAAc,MAAM,KACpB,OAAO,OAAO,eAAe,YAC7B,OAAO,WAAW,SAAS,KAC3B,OAAO,KAAK,MAAM,EAAE,WAAW,GAC/B;AAAA,MACA,IAAI,CAAC,QAAQ,aAAa,0BAA0B;AAAA,QAClD,MAAM,uBAAsB;AAAA,UAC1B,SAAS,QAAQ;AAAA,UACjB,SAAS;AAAA,UACT,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,IAAI,aAAa,OAAO;AAAA,IAC1B,EAAO;AAAA,MACL,MAAM,iBAAgB;AAAA,QACpB,SAAS,wBAAwB,MAAM,cAAc;AAAA,QACrD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,MACpC,CAAC;AAAA;AAAA,EAEL;AAAA,EACA,IAAI,UAAU,WAAW;AAAA,IACvB,IAAI,IAAI,YAAY,WAAW;AAAA,MAC7B,MAAM,iBAAgB;AAAA,QACpB,SAAS,uBAAuB,MAAM,cAAc;AAAA,QACpD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,MACpC,CAAC;AAAA,IACH;AAAA,IACA,IAAI,CAAC,QAAQ,aAAa,gBAAgB;AAAA,MACxC,MAAM,uBAAsB;AAAA,QAC1B,SAAS,QAAQ;AAAA,QACjB,SAAS;AAAA,QACT,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IAMA,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAAA,MAC1D,MAAM,iBAAgB;AAAA,QACpB,SAAS,uBAAuB,MAAM,cAAc;AAAA,QACpD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,MACpC,CAAC;AAAA,IACH;AAAA,IACA,IAAI,gBAAgB;AAAA,EACtB;AAAA,EACA,OAAO;AAAA;AAST,SAAS,iBAAiB,CAAC,QAAuE;AAAA,EAChG,QAAQ,OAAO,OAAO,UAAU;AAAA,EAChC,IAAI,MAAM,eAAe,cAAc,MAAM,QAAQ;AAAA,IACnD,MAAM,iBAAgB;AAAA,MACpB,SAAS,kEAA6D,MAAM,QAAQ,MAAM,WAAW,OAAO,MAAM,YAAY,MAAM,UAAU,IAAI,MAAM,SAAS,OAAO;AAAA,MACxK,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,IAC/C,CAAC;AAAA,EACH;AAAA,EACA,IACE,MAAM,QACN,MAAM,YACN,MAAM,WAAW,KAAK,CAAC,cAAc,UAAU,SAAS,MAAM,IAAI,GAClE;AAAA,IACA,MAAM,iBAAgB;AAAA,MACpB,SAAS,cAAc,MAAM,QAAQ,MAAM;AAAA,MAC3C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,IAC/C,CAAC;AAAA,EACH;AAAA,EACA,OAAO,YAAY,EAAE,eAAe,MAAM,cAAc,CAAC;AAAA;AAI3D,SAAS,kBAAkB,CAAC,QAAuE;AAAA,EACjG,QAAQ,OAAO,OAAO,UAAU;AAAA,EAChC,IAAI,MAAM,eAAe,cAAc,MAAM,QAAQ;AAAA,IACnD,MAAM,iBAAgB;AAAA,MACpB,SAAS,oDAA+C,MAAM,QAAQ,MAAM,WAAW,OAAO,MAAM,YAAY,MAAM,UAAU,IAAI,MAAM,SAAS,OAAO;AAAA,MAC1J,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,IAC/C,CAAC;AAAA,EACH;AAAA,EACA,OAAO,YAAY,EAAE,eAAe,MAAM,cAAc,CAAC;AAAA;AAG3D,SAAS,aAAa,CAAC,QAAqF;AAAA,EAC1G,QAAQ,OAAO,MAAM,UAAU;AAAA,EAC/B,IAAI,CAAC,eAAc,KAAK,GAAG;AAAA,IACzB,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,oCAAoC,MAAM;AAAA,MACtD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,KAAK;AAAA,IAC5C,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,qBAAoB,CAAC,QAAoE;AAAA,EAChG,QAAQ,OAAO,MAAM,UAAU;AAAA,EAC/B,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,KAAK,GAAG;AAAA,IAC7D,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,qCAAqC,MAAM,cAAc,OAAO,KAAK;AAAA,MACjF,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,MAAM,MAAM;AAAA,IACnD,CAAC;AAAA,EACH;AAAA,EACA,IAAI,QAAQ,GAAG;AAAA,IACb,MAAM,iBAAgB;AAAA,MACpB,SAAS,YAAY;AAAA,MACrB,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,MAAM,MAAM;AAAA,IACnD,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,UAAU,CAAC,QAAwF;AAAA,EAC1G,QAAQ,QAAQ,MAAM,UAAU;AAAA,EAChC,MAAM,UAAU,aAAa;AAAA,EAC7B,WAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,IACnC,IAAI,KAAK,SAAS;AAAA,MAAW;AAAA,IAC7B,IAAI,CAAC,QAAQ,SAAS,GAAG,GAAG;AAAA,MAC1B,MAAM,iBAAgB;AAAA,QACpB,SAAS,yBAAyB,YAAY,MAAM,cAAc,8BAAyB,QAAQ,KAAK,IAAI;AAAA,QAC5G,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,UAAU,KAAK,QAAQ;AAAA,MAC5D,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAMF,SAAS,oBAAoB,CAAC,QAKrB;AAAA,EACP,QAAQ,SAAS,OAAO,OAAO,aAAa;AAAA,EAC5C,IAAI,QAAQ,aAAa;AAAA,IAAc;AAAA,EACvC,MAAM,uBAAsB;AAAA,IAC1B,SAAS,QAAQ;AAAA,IACjB,SAAS,uBAAuB,gBAAgB,MAAM,QAAQ,MAAM;AAAA,IACpE,MAAM;AAAA,EACR,CAAC;AAAA;AAQH,SAAS,kBAAkB,CAAC,QAA2E;AAAA,EACrG,QAAQ,SAAS,OAAO,UAAU;AAAA,EAClC,IAAI,CAAC,MAAM,UAAU,QAAQ,aAAa;AAAA,IAAc;AAAA,EACxD,MAAM,uBAAsB;AAAA,IAC1B,SAAS,QAAQ;AAAA,IACjB,SAAS,2BAA2B,MAAM,QAAQ,MAAM;AAAA,IACxD,MAAM;AAAA,EACR,CAAC;AAAA;AAGH,SAAS,oBAAoB,CAAC,QAA4F;AAAA,EACxH,QAAQ,UAAU,SAAS,OAAO,UAAU;AAAA,EAC5C,IAAI,OAAO,YAAY,UAAU;AAAA,IAC/B,MAAM,iBAAgB;AAAA,MACpB,SAAS,IAAI,gBAAgB,MAAM,QAAQ,MAAM;AAAA,MACjD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,IACzD,CAAC;AAAA,EACH;AAAA,EACA,IAAI,aAAa;AAAA,IAAY,OAAO,gBAAgB,EAAE,KAAK,QAAQ,CAAC;AAAA,EACpE,IAAI,aAAa;AAAA,IAAc,OAAO,kBAAkB,EAAE,KAAK,QAAQ,CAAC;AAAA,EACxE,OAAO,gBAAgB,EAAE,KAAK,QAAQ,CAAC;AAAA;AAoBzC,SAAS,sBAAsB,CAAC,QAMpB;AAAA,EACV,QAAQ,KAAK,OAAO,OAAO,QAAQ,YAAY;AAAA,EAC/C,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,SAAS,UAAU,EAAE,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC;AAAA,EACxF,MAAM,aAAwB,CAAC;AAAA,EAE/B,YAAY,UAAU,YAAY,OAAO,QAAQ,MAAM,GAAG;AAAA,IACxD,IAAI,YAAY;AAAA,MAAW;AAAA,IAC3B,qBAAqB,EAAE,SAAS,OAAO,OAAO,SAAS,CAAC;AAAA,IACxD,QAAQ;AAAA,WACD,UAAU;AAAA,QACb,IAAI,YAAY,MAAM;AAAA,UACpB,WAAW,KAAK,EAAE,MAAM,UAAU,OAAO,CAAC;AAAA,UAC1C;AAAA,QACF;AAAA,QACA,IAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAAA,UAC3B,MAAM,iBAAgB;AAAA,YACpB,SAAS,wBAAwB,MAAM,QAAQ,MAAM;AAAA,YACrD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,QACA,WAAW,KAAK;AAAA,UACd,MAAM;AAAA,UACN,IAAI;AAAA,UACJ;AAAA,UACA,OAAO,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,QAAQ,CAAC;AAAA,QACrE,CAAC;AAAA,QACD;AAAA,MACF;AAAA,WACK,OAAO;AAAA,QACV,WAAW,KAAK;AAAA,UACd,MAAM;AAAA,UACN;AAAA,UACA,OAAO,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,QAAQ,CAAC;AAAA,QACrE,CAAC;AAAA,QACD;AAAA,MACF;AAAA,WACK;AAAA,WACA,WAAW;AAAA,QACd,IAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAAA,UAC3B,MAAM,iBAAgB;AAAA,YACpB,SAAS,IAAI,gBAAgB,MAAM,QAAQ,MAAM;AAAA,YACjD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,QACA,MAAM,SAAS,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,QAAQ,CAAC;AAAA,QAC3E,WAAW,KACT,aAAa,aACT,EAAE,MAAM,oBAAoB,QAAQ,OAAO,IAC3C,EAAE,MAAM,iBAAiB,QAAQ,OAAO,CAC9C;AAAA,QACA;AAAA,MACF;AAAA,WACK,WAAW;AAAA,QACd,IAAI,OAAO,YAAY,WAAW;AAAA,UAChC,MAAM,iBAAgB;AAAA,YACpB,SAAS,gBAAgB,MAAM,QAAQ,MAAM;AAAA,YAC7C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,QACA,WAAW,KAAK,EAAE,MAAM,gBAAgB,QAAQ,OAAO,QAAQ,CAAC;AAAA,QAChE;AAAA,MACF;AAAA;AAAA,QAEE,MAAM,iBAAgB;AAAA,UACpB,SAAS,wBAAwB,gBAAgB,MAAM,QAAQ,MAAM;AAAA,UACrE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,QACzD,CAAC;AAAA;AAAA,EAEP;AAAA,EAEA,IAAI,WAAW,WAAW;AAAA,IAAG,OAAO,WAAW;AAAA,EAC/C,OAAO,EAAE,MAAM,OAAO,UAAU,WAAW;AAAA;AAG7C,IAAM,kBAA2C,CAAC,mBAAmB,sBAAsB,kBAAkB;AAC7G,IAAM,iBAA0C,CAAC,kBAAkB,qBAAqB,iBAAiB;AAQzG,SAAS,sBAAsB,CAAC,QAMpB;AAAA,EACV,QAAQ,KAAK,OAAO,OAAO,QAAQ,YAAY;AAAA,EAC/C,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,SAAS,UAAU,EAAE,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC;AAAA,EAExF,MAAM,UAAU,OAAO;AAAA,EACvB,IAAI,YAAY,WAAW;AAAA,IACzB,IAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,QAAQ,KAAK,CAAC,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,QAAQ,GAAG;AAAA,MACxG,MAAM,iBAAgB;AAAA,QACpB,SAAS,aAAa,MAAM,QAAQ,MAAM;AAAA,QAC1C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,MAAM,OAAsC,WAAwD,CAAC;AAAA,EAErG,MAAM,OAAO,OAAO;AAAA,EACpB,IAAI,SAAS,aAAa,SAAS,iBAAiB,SAAS,WAAW;AAAA,IACtE,MAAM,iBAAgB;AAAA,MACpB,SAAS,8CAA8C,MAAM,QAAQ,MAAM;AAAA,MAC3E,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,KAAK;AAAA,IACrD,CAAC;AAAA,EACH;AAAA,EACA,MAAM,cAAc,SAAS;AAAA,EAE7B,MAAM,YAAY,CAAC,OAA2B;AAAA,IAC5C,IAAI,QAAQ,iBAAiB,SAAS,EAAE;AAAA,MAAG;AAAA,IAC3C,MAAM,uBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS,gBAAgB,UAAU,MAAM,QAAQ,MAAM;AAAA,MACvD,MAAM,6BAA6B,QAAQ,iBAAiB,KAAK,IAAI;AAAA,IACvE,CAAC;AAAA;AAAA,EAGH,MAAM,aAAwB,CAAC;AAAA,EAC/B,YAAY,UAAU,YAAY,OAAO,QAAQ,MAAM,GAAG;AAAA,IACxD,IAAI,YAAY,aAAa,aAAa,UAAU,aAAa;AAAA,MAAQ;AAAA,IAEzE,IAAI,aAAa,YAAY,aAAa,OAAO;AAAA,MAC/C,IAAI,YAAY,MAAM;AAAA,QACpB,IAAI,KAAK,SAAS,GAAG;AAAA,UACnB,MAAM,iBAAgB;AAAA,YACpB,SAAS,IAAI,kCAAkC,MAAM,QAAQ,MAAM;AAAA,YACnE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,QACA,WAAW,KAAK,EAAE,MAAM,UAAU,WAAY,aAAa,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC,EAAG,CAAC;AAAA,QAC3F;AAAA,MACF;AAAA,MACA,UAAU,QAAQ;AAAA,MAClB,WAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ,OAAO;AAAA,WACH,aAAa,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,MAC/C,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IAEA,IAAK,gBAAsC,SAAS,QAAQ,GAAG;AAAA,MAC7D,IAAI,OAAO,YAAY,UAAU;AAAA,QAC/B,MAAM,iBAAgB;AAAA,UACpB,SAAS,IAAI,gBAAgB,MAAM,QAAQ,MAAM;AAAA,UACjD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,QACzD,CAAC;AAAA,MACH;AAAA,MACA,MAAM,KAAK;AAAA,MACX,UAAU,EAAE;AAAA,MACZ,WAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,WACH,cAAc,EAAE,aAAa,KAAK,IAAI,CAAC;AAAA,MAC7C,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IAEA,IAAK,eAAqC,SAAS,QAAQ,GAAG;AAAA,MAC5D,MAAM,KAAK;AAAA,MACX,UAAU,EAAE;AAAA,MACZ,WAAW,KAAK,EAAE,MAAM,cAAc,QAAQ,MAAM,IAAI,OAAO,QAAQ,CAAC;AAAA,MACxE;AAAA,IACF;AAAA,IAEA,MAAM,iBAAgB;AAAA,MACpB,SAAS,wBAAwB,gBAAgB,MAAM,QAAQ,MAAM,mDAA8C,CAAC,GAAG,iBAAiB,GAAG,cAAc,EAAE,KAAK,IAAI;AAAA,MACpK,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,IACzD,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,WAAW,WAAW,GAAG;AAAA,IAC3B,MAAM,iBAAgB;AAAA,MACpB,SAAS,kBAAkB,MAAM,QAAQ,MAAM;AAAA,MAC/C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,IAC/C,CAAC;AAAA,EACH;AAAA,EACA,IAAI,WAAW,WAAW;AAAA,IAAG,OAAO,WAAW;AAAA,EAC/C,OAAO,EAAE,MAAM,OAAO,UAAU,WAAW;AAAA;AAG7C,SAAS,qBAAqB,CAAC,QAMnB;AAAA,EACV,QAAQ,KAAK,OAAO,OAAO,QAAQ,YAAY;AAAA,EAC/C,IAAI,MAAM;AAAA,IAAQ,OAAO,uBAAuB,EAAE,KAAK,OAAO,OAAO,QAAQ,QAAQ,CAAC;AAAA,EACtF,IAAI,MAAM,eAAe;AAAA,IAAQ,OAAO,uBAAuB,EAAE,KAAK,OAAO,OAAO,QAAQ,QAAQ,CAAC;AAAA,EACrG,MAAM,UAAU,IAAI;AAAA,EAGpB,MAAM,SAAS,iBAAiB,EAAE,SAAS,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC;AAAA,EACxG,MAAM,UAAU,OAAO,QAAQ,MAAM,EAAE,OAAO,IAAI,aAAa,YAAY,SAAS;AAAA,EACpF,MAAM,kBAAkB,CAAC,YAAY,cAAc,UAAU;AAAA,EAO7D,MAAM,iBAAiB,CAAC,GAAG,iBAAiB,QAAQ;AAAA,EACpD,MAAM,OAAO,OAAO;AAAA,EACpB,IAAI,SAAS,WAAW;AAAA,IACtB,IAAI,SAAS,iBAAiB,SAAS,YAAY,SAAS,WAAW;AAAA,MACrE,MAAM,iBAAgB;AAAA,QACpB,SAAS,wDAAwD,MAAM,QAAQ,MAAM;AAAA,QACrF,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,KAAK;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,IACA,MAAM,SAAS,QAAQ,OAAO,EAAE,cAAc,aAAa,MAAM;AAAA,IACjE,IAAI,OAAO,WAAW,KAAK,OAAO,KAAK,EAAE,cAAc,CAAC,eAAe,SAAS,QAAQ,CAAC,GAAG;AAAA,MAC1F,MAAM,iBAAgB;AAAA,QACpB,SAAS,+BAA+B,eAAe,KAAK,GAAG,QAAQ,MAAM,QAAQ,MAAM;AAAA,QAC3F,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,MAAM,cAAc,SAAS;AAAA,EAC7B,MAAM,SAAS,SAAS;AAAA,EAQxB,MAAM,aAAa,CAAC,WAClB,OAAO,QAAQ,SAAS,WAAW,OAAO,MAAM,WAAW,YAAY,EAAE,SAAS,KAAK,MAAM;AAAA,EAG/F,MAAM,uBAAuB,CAAC,UAAkB,YAA6B;AAAA,IAC3E,IAAI,OAAO,YAAY,UAAU;AAAA,MAC/B,MAAM,iBAAgB;AAAA,QACpB,SAAS,UAAU,OAAO,IAAI,WAAW,eAAe,MAAM,QAAQ,MAAM;AAAA,QAC5E,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,aAAwB,CAAC;AAAA,EAC/B,YAAY,UAAU,YAAY,SAAS;AAAA,IACzC,IAAI,aAAa;AAAA,MAAQ;AAAA,IAEzB,QAAQ;AAAA,WACD,UAAU;AAAA,QACb,IAAI,YAAY,MAAM;AAAA,UAEpB,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN,QAAQ,UAAU,EAAE,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC;AAAA,UACnF,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA,IAAI,aAAa;AAAA,UAMf,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN;AAAA,YACA,SAAS,kBAAkB,EAAE,KAAK,qBAAqB,UAAU,OAAO,EAAE,CAAC;AAAA,YAC3E,aAAa;AAAA,eACT,WAAW,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAAA,UAChE,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA,IAAI,QAAQ;AAAA,UAGV,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN;AAAA,YACA,IAAI;AAAA,YACJ,OAAO,qBAAqB,UAAU,OAAO;AAAA,UAC/C,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA,WAAW,KAAK;AAAA,UACd,MAAM;AAAA,UACN,IAAI;AAAA,UACJ;AAAA,UACA,OAAO,QAAQ,OAAO,IAClB,mBAAmB,EAAE,OAAO,OAAO,OAAO,QAAQ,CAAC,IACnD,kBAAkB,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,QAAQ,CAAC;AAAA,QACxE,CAAC;AAAA,QACD;AAAA,MACF;AAAA,WAEK,OAAO;AAAA,QACV,IAAI,YAAY,MAAM;AAAA,UACpB,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN,QAAQ,UAAU,EAAE,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC;AAAA,YACjF,QAAQ;AAAA,UACV,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA,IAAI,eAAc,OAAO,GAAG;AAAA,UAC1B,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN,SAAS,sBAAsB,EAAE,KAAK,OAAO,OAAO,QAAQ,SAAS,QAAQ,CAAC;AAAA,UAChF,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA,WAAW,KAAK;AAAA,UACd,MAAM;AAAA,UACN,IAAI;AAAA,UACJ;AAAA,UACA,OAAO,QAAQ,OAAO,IAClB,mBAAmB,EAAE,OAAO,OAAO,OAAO,QAAQ,CAAC,IACnD,kBAAkB,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,QAAQ,CAAC;AAAA,QACxE,CAAC;AAAA,QACD;AAAA,MACF;AAAA,WAEK;AAAA,WACA,SAAS;AAAA,QACZ,IAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAAA,UAC3B,MAAM,iBAAgB;AAAA,YACpB,SAAS,IAAI,gBAAgB,MAAM,QAAQ,MAAM;AAAA,YACjD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,QACA,WAAW,QAAQ,SAAS;AAAA,UAC1B,IAAI,SAAS,MAAM;AAAA,YACjB,MAAM,iBAAgB;AAAA,cACpB,SAAS,IAAI,gBAAgB,MAAM,QAAQ,MAAM;AAAA,cACjD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,YACzD,CAAC;AAAA,UACH;AAAA,UACA,IAAI,QAAQ,IAAI,GAAG;AAAA,YACjB,MAAM,iBAAgB;AAAA,cACpB,SAAS,2BAA2B,qBAAqB,MAAM,QAAQ,MAAM;AAAA,cAC7E,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,YACzD,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,WAAW,KAAK;AAAA,UACd,MAAM;AAAA,UACN;AAAA,UACA,QAAQ,QAAQ,IAAI,CAAC,SAAS,kBAAkB,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,KAAK,CAAC,CAAC;AAAA,UAC9F,QAAQ,aAAa;AAAA,QACvB,CAAC;AAAA,QACD;AAAA,MACF;AAAA,WAEK;AAAA,WACA;AAAA,WACA;AAAA,WACA,OAAO;AAAA,QACV,WAAW,KAAK;AAAA,UACd,MAAM;AAAA,UACN,IAAI;AAAA,UACJ;AAAA,UACA,OAAO,QAAQ,OAAO,IAClB,mBAAmB,EAAE,OAAO,OAAO,OAAO,QAAQ,CAAC,IACnD,kBAAkB,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,QAAQ,CAAC;AAAA,QACxE,CAAC;AAAA,QACD;AAAA,MACF;AAAA,WAEK;AAAA,WACA;AAAA,WACA,YAAY;AAAA,QACf,IAAI,QAAQ;AAAA,UAIV,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN;AAAA,YACA,IAAI;AAAA,YACJ,OAAO,qBAAqB,UAAU,OAAO;AAAA,UAC/C,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA,WAAW,KAAK;AAAA,UACd,MAAM;AAAA,UACN;AAAA,UACA,SAAS,qBAAqB,EAAE,UAAU,SAAS,OAAO,MAAM,CAAC;AAAA,UACjE;AAAA,aACI,eAAe,WAAW,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;AAAA,QAC/E,CAAC;AAAA,QACD;AAAA,MACF;AAAA,eAES;AAAA,QAGP,MAAM,oBAAoB,IAAI,KAAK,oBAAoB,IAAI,QAAQ;AAAA,QACnE,IAAI,sBAAsB,WAAW;AAAA,UACnC,WAAW,KACT,kBAAkB;AAAA,YAChB,QAAQ,YAAY,YAAY,CAAC,MAAM,UAAU,IAAI,CAAC,SAAS,MAAM,UAAU;AAAA,YAC/E;AAAA,YACA,OAAO,MAAM;AAAA,YACb,OAAO,MAAM;AAAA,UACf,CAAC,CACH;AAAA,UACA;AAAA,QACF;AAAA,QACA,MAAM,iBAAgB;AAAA,UACpB,SAAS,4BAA4B,gBAAgB,MAAM,QAAQ,MAAM;AAAA,UACzE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,QACzD,CAAC;AAAA,MACH;AAAA;AAAA,EAEJ;AAAA,EAGA,IAAI,WAAW,WAAW;AAAA,IAAG,OAAO,WAAW;AAAA,EAC/C,OAAO,EAAE,MAAM,OAAO,UAAU,WAAW;AAAA;AAG7C,SAAS,kBAAkB,CAAC,QAMhB;AAAA,EACV,QAAQ,KAAK,OAAO,OAAO,OAAO,YAAY;AAAA,EAC9C,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,SAAS,iBAAiB,EAAE,SAAS,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC;AAAA,EAExG,IAAI,UAAU,MAAM;AAAA,IAClB,OAAO,EAAE,MAAM,UAAU,QAAQ,UAAU,EAAE,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC,EAAE;AAAA,EAC9G;AAAA,EAEA,IAAI,cAAc,KAAK,GAAG;AAAA,IACxB,OAAO,EAAE,MAAM,OAAO,IAAI,MAAM,QAAQ,OAAO,kBAAkB,EAAE,SAAS,QAAQ,MAAM,OAAO,MAAM,CAAC,EAAE;AAAA,EAC5G;AAAA,EAEA,IAAI,QAAQ,KAAK,GAAG;AAAA,IAClB,OAAO,EAAE,MAAM,OAAO,IAAI,MAAM,QAAQ,OAAO,mBAAmB,EAAE,OAAO,OAAO,MAAM,CAAC,EAAE;AAAA,EAC7F;AAAA,EAEA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IAExB,IAAI,CAAC,MAAM,QAAQ;AAAA,MACjB,MAAM,iBAAgB;AAAA,QACpB,SAAS,yBAAyB,MAAM,QAAQ,MAAM;AAAA,QACtD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,IACA,qBAAqB,EAAE,SAAS,OAAO,OAAO,UAAU,SAAS,CAAC;AAAA,IAClE,OAAO,EAAE,MAAM,OAAO,IAAI,MAAM,QAAQ,OAAO,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,MAAM,CAAC,EAAE;AAAA,EACtG;AAAA,EAEA,IAAI,eAAc,KAAK,GAAG;AAAA,IACxB,OAAO,sBAAsB,EAAE,KAAK,OAAO,OAAO,QAAQ,OAAO,QAAQ,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAM,iBAAgB;AAAA,IACpB,SAAS,gCAAgC,MAAM,QAAQ,MAAM;AAAA,IAC7D,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,EAC/C,CAAC;AAAA;AAMH,IAAM,eAAwB,EAAE,MAAM,OAAO,UAAU,CAAC,EAAE;AAa1D,SAAS,aAAa,CAAC,QAAiF;AAAA,EACtG,QAAQ,MAAM,YAAY,eAAe;AAAA,EACzC,MAAM,WAAsB,KAAK,UAAU,IAAI,CAAC,OAAO,WAAW;AAAA,IAChE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM,EAAE,OAAO,YAAY,MAAM,MAAM,WAAW;AAAA,IAClD,OAAO;AAAA,MACL,OAAO;AAAA,MACP,MAAO,KAAK,WAAW,OAA4C;AAAA,IACrE;AAAA,EACF,EAAE;AAAA,EACF,OAAO,SAAS,WAAW,IAAK,SAAS,KAAiB,EAAE,MAAM,OAAO,SAAS;AAAA;AAGpF,SAAS,mBAAmB,CAAC,QAOjB;AAAA,EACV,QAAQ,KAAK,MAAM,OAAO,WAAW,kBAAkB,OAAO,SAAS,UAAU;AAAA,EACjF,MAAM,SAAS,KAAK;AAAA,EAEpB,MAAM,aAAa,OAAO,EAAE,IAAI,SAAS;AAAA,EACzC,IAAI,OACF,cAAc,YACV,eACC,qBAAqB,EAAE,KAAK,OAAO,QAAQ,OAAO,WAAW,SAAS,WAAW,CAAC,KAAK;AAAA,EAC9F,IAAI;AAAA,IAAiB,OAAO,EAAE,MAAM,OAAO,SAAS,KAAK;AAAA,EAKzD,MAAM,aAAa,CAAC,gBAClB,SAAS,eAAe,cAAc,EAAE,MAAM,OAAO,UAAU,CAAC,aAAa,IAAI,EAAE;AAAA,EAErF,IAAI,KAAK,SAAS,cAAc;AAAA,IAC9B,MAAM,OAAO,KAAK;AAAA,IAClB,MAAM,MAAM,cAAc,EAAE,MAAM,MAAM,kCAAkC,CAAC;AAAA,IAC3E,MAAM,UAAU,OAAO,EAAE,IAAI,SAAS;AAAA,IACtC,MAAM,cAAuB;AAAA,MAC3B,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,OAAO,WAAW,OAAO,WAAW;AAAA,QACnD,SAAS,CAAC;AAAA,QACV,YAAY,EAAE,MAAM,MAAM;AAAA,QAC1B,OAAO,WAAW;AAAA,UAChB,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,MAAM,EAAE,OAAO,YAAY,MAAM,IAAI,MAAM,WAAW;AAAA,UACtD,OAAO,EAAE,OAAO,SAAS,MAAM,KAAK,YAAY;AAAA,QAClD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,SACF,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,MACjC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,KAAK,WAAW,OAAO,QAAQ;AAAA,QAC9C,SAAS,CAAC;AAAA,QACV,YAAY,EAAE,MAAM,MAAM;AAAA,QAC1B,OAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU;AAAA,YACR;AAAA,cACE,MAAM;AAAA,cACN,IAAI;AAAA,cACJ,MAAM,EAAE,OAAO,SAAS,MAAM,KAAK,aAAa;AAAA,cAChD,OAAO,EAAE,OAAO,OAAO,MAAM,IAAI,OAAO,WAAW;AAAA,YACrD;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,OACF,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IACjC,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,OAAO,WAAW,OAAO,WAAW;AAAA,MACnD,SAAS,CAAC;AAAA,MACV,YAAY,EAAE,MAAM,MAAM;AAAA,MAC1B,OAAO,WAAW,cAAc,EAAE,MAAM,YAAY,YAAY,YAAY,MAAM,CAAC,CAAC;AAAA,IACtF;AAAA,EACF;AAAA;AAGF,SAAS,sBAAsB,CAAC,QAKJ;AAAA,EAC1B,QAAQ,OAAO,UAAU,UAAU,YAAY;AAAA,EAC/C,IAAI,CAAC,eAAc,OAAO,GAAG;AAAA,IAC3B,MAAM,iBAAgB;AAAA,MACpB,SAAS,IAAI,yBAAyB,MAAM,QAAQ,SAAS;AAAA,MAC7D,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,MAAM,SAAS;AAAA,IAC/D,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAYT,SAAS,qBAAqB,CAAC,QAMnB;AAAA,EACV,QAAQ,KAAK,OAAO,UAAU,OAAO,YAAY;AAAA,EACjD,MAAM,OAAO,oBAAoB,EAAE,MAAM,IAAI,MAAM,OAAO,SAAS,CAAC;AAAA,EACpE,MAAM,QAAQ,WAAW,MAAM;AAAA,EAE/B,IAAI,SAAS,QAAQ;AAAA,IACnB,IAAI,CAAC,eAAc,KAAK,GAAG;AAAA,MACzB,MAAM,iBAAgB;AAAA,QACpB,SAAS,sBAAsB,MAAM,QAAQ,SAAS;AAAA,QACtD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,IACA,MAAM,aAAwB,CAAC;AAAA,IAC/B,YAAY,UAAU,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,MACvD,IAAI,YAAY;AAAA,QAAW;AAAA,MAC3B,QAAQ;AAAA,aACD;AAAA,UACH,WAAW,KACT,oBAAoB;AAAA,YAClB;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,uBAAuB,EAAE,OAAO,UAAU,UAAU,QAAQ,CAAC;AAAA,UAC1E,CAAC,CACH;AAAA,UACA;AAAA,aACG;AAAA,UACH,WAAW,KACT,oBAAoB;AAAA,YAClB;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,uBAAuB,EAAE,OAAO,UAAU,UAAU,QAAQ,CAAC;AAAA,YACxE,QAAQ;AAAA,UACV,CAAC,CACH;AAAA,UACA;AAAA,aACG;AAAA,UAEH,WAAW,KACT,oBAAoB;AAAA,YAClB;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,uBAAuB,EAAE,OAAO,UAAU,UAAU,QAAQ,CAAC;AAAA,YACxE,iBAAiB;AAAA,YACjB,QAAQ;AAAA,UACV,CAAC,CACH;AAAA,UACA;AAAA;AAAA,UAEA,MAAM,iBAAgB;AAAA,YACpB,SAAS,4BAA4B,gBAAgB,MAAM,QAAQ,SAAS;AAAA,YAC5E,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,MAAM,SAAS;AAAA,UAC/D,CAAC;AAAA;AAAA,IAEP;AAAA,IACA,IAAI,WAAW,WAAW,GAAG;AAAA,MAC3B,MAAM,iBAAgB;AAAA,QACpB,SAAS,sBAAsB,MAAM,QAAQ,SAAS;AAAA,QACtD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,IACA,IAAI,WAAW,WAAW;AAAA,MAAG,OAAO,WAAW;AAAA,IAC/C,OAAO,EAAE,MAAM,OAAO,UAAU,WAAW;AAAA,EAC7C;AAAA,EAGA,IAAI;AAAA,EACJ,IAAI,QAAQ;AAAA,EACZ,IAAI;AAAA,EACJ,IAAI,WAAW;AAAA,EACf,IAAI,UAAU,MAAM;AAAA,IAClB,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,EAAO,SAAI,eAAc,KAAK,OAAM,QAAQ,WAAS,WAAW,SAAQ;AAAA,IACtE,WAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AAAA,MACpC,IAAI,MAAM,SAAS;AAAA,QAAW;AAAA,MAC9B,IAAI,QAAQ,MAAM;AAAA,QAChB,QAAQ,MAAM;AAAA,QACd,QAAQ;AAAA,MACV,EAAO,SAAI,QAAQ,SAAS;AAAA,QAC1B,WAAW,MAAM;AAAA,QACjB,WAAW;AAAA,MACb,EAAO;AAAA,QACL,MAAM,iBAAgB;AAAA,UACpB,SAAS,sBAAsB,MAAM,QAAQ,SAAS,oBAAoB;AAAA,UAC1E,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,MAAM,UAAU,IAAI;AAAA,QACpE,CAAC;AAAA;AAAA,IAEL;AAAA,EACF,EAAO,SAAI,eAAc,KAAK,GAAG;AAAA,IAC/B,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,EAAO;AAAA,IACL,MAAM,iBAAgB;AAAA,MACpB,SAAS,sBAAsB,MAAM,QAAQ,SAAS;AAAA,MACtD,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,IACrD,CAAC;AAAA;AAAA,EAGH,MAAM,aAAwB,CAAC;AAAA,EAK/B,MAAM,WAAW,KAAK,SAAS,gBAAgB,KAAK,WAAW,WAAW;AAAA,EAC1E,MAAM,WAAmB,UAAU;AAAA,IACjC,OAAO,KAAK,WAAW;AAAA,OACnB,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ;AAAA,EACpD,CAAC;AAAA,EAED,IAAI,OAAO;AAAA,IACT,IAAI,UAAU,MAAM;AAAA,MAClB,WAAW,KACT,WACI,EAAE,MAAM,UAAU,QAAQ,SAAS,IACnC,oBAAoB,EAAE,KAAK,MAAM,OAAO,WAAW,WAAW,QAAQ,KAAK,CAAC,CAClF;AAAA,IACF,EAAO;AAAA,MACL,WAAW,KACT,oBAAoB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,uBAAuB,EAAE,OAAO,UAAU,UAAU,MAAM,SAAS,MAAM,CAAC;AAAA,MACvF,CAAC,CACH;AAAA;AAAA,EAEJ;AAAA,EACA,IAAI,UAAU;AAAA,IACZ,IAAI,aAAa,MAAM;AAAA,MACrB,WAAW,KACT,WACI,EAAE,MAAM,UAAU,QAAQ,UAAU,QAAQ,KAAK,IACjD,oBAAoB,EAAE,KAAK,MAAM,OAAO,WAAW,UAAU,CAAC,CACpE;AAAA,IACF,EAAO;AAAA,MAEL,WAAW,KACT,oBAAoB;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,uBAAuB,EAAE,OAAO,UAAU,UAAU,SAAS,SAAS,SAAS,CAAC;AAAA,QAC3F,QAAQ;AAAA,MACV,CAAC,CACH;AAAA;AAAA,EAEJ;AAAA,EAEA,IAAI,WAAW,WAAW;AAAA,IAAG,OAAO,WAAW;AAAA,EAC/C,OAAO,EAAE,MAAM,OAAO,UAAU,WAAW;AAAA;AAK7C,SAAS,iBAAiB,CAAC,QAMb;AAAA,EACZ,QAAQ,KAAK,OAAO,OAAO,KAAK,YAAY;AAAA,EAC5C,MAAM,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,EACnD,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,IACzB,MAAM,QAAQ,cAAc,EAAE,OAAO,MAAM,MAAM,KAAK,MAAM,CAAC;AAAA,IAE7D,OAAO,qBAAqB,EAAE,KAAK,OAAO,OAAO,QAAQ,CAAC,KAAK;AAAA,GAChE;AAAA;AAGH,SAAS,oBAAoB,CAAC,QAKN;AAAA,EACtB,QAAQ,KAAK,OAAO,OAAO,YAAY;AAAA,EACvC,MAAM,WAAsB,CAAC;AAAA,EAE7B,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,UAAU;AAAA,MAAW;AAAA,IAEzB,IAAI,QAAQ,QAAQ;AAAA,MAClB,IAAI,CAAC,cAAc,KAAK;AAAA,QAAG,MAAM,iBAAgB,EAAE,SAAS,2CAA2C,CAAC;AAAA,MACxG,SAAS,KAAK,EAAE,MAAM,YAAY,UAAU,MAAM,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,OAAO;AAAA,MACjB,SAAS,KAAK,EAAE,MAAM,OAAO,UAAU,kBAAkB,EAAE,KAAK,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;AAAA,MAC/F;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,MAAM;AAAA,MAChB,SAAS,KAAK,EAAE,MAAM,MAAM,UAAU,kBAAkB,EAAE,KAAK,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;AAAA,MAC9F;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,OAAO;AAAA,MAEjB,WAAW,UAAU,kBAAkB,EAAE,KAAK,OAAO,OAAO,KAAK,QAAQ,CAAC,GAAG;AAAA,QAC3E,SAAS,KAAK,EAAE,MAAM,OAAO,SAAS,OAAO,CAAC;AAAA,MAChD;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,IAC7C,IAAI,aAAa,WAAW;AAAA,MAC1B,SAAS,KAAK,sBAAsB,EAAE,KAAK,OAAO,UAAU,OAAO,QAAQ,CAAC,CAAC;AAAA,MAC7E;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,aAAa,EAAE,OAAO,OAAO,KAAK,SAAS,QAAQ,CAAC;AAAA,IAClE,SAAS,KAAK,mBAAmB,EAAE,KAAK,OAAO,OAAO,OAAO,QAAQ,CAAC,CAAC;AAAA,EACzE;AAAA,EAEA,IAAI,SAAS,WAAW;AAAA,IAAG;AAAA,EAC3B,IAAI,SAAS,WAAW;AAAA,IAAG,OAAO,SAAS;AAAA,EAC3C,OAAO,EAAE,MAAM,OAAO,SAAS;AAAA;AAU1B,SAAS,YAAY,CAAC,QAOL;AAAA,EACtB,QAAQ,SAAS,MAAM,OAAO,OAAO,SAAS,aAAa;AAAA,EAC3D,MAAM,MAAoB,EAAE,SAAS,MAAM,UAAU,YAAY,EAAE,GAAG,EAAE,EAAE;AAAA,EAC1E,OAAO,qBAAqB,EAAE,KAAK,OAAO,OAAO,QAAQ,CAAC;AAAA;AAK5D,SAAS,gBAAgB,CAAC,QAMR;AAAA,EAChB,QAAQ,OAAO,OAAO,MAAM,SAAS,YAAY;AAAA,EAEjD,MAAM,SACJ,YAAY,YACR,iBAAiB,EAAE,SAAS,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC,IACzF,UAAU,EAAE,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC;AAAA,EAE/E,IAAI,SAAS,SAAS,SAAS;AAAA,IAAQ,OAAO,EAAE,QAAQ,WAAW,KAAK;AAAA,EAExE,IAAI,eAAc,IAAI,GAAG;AAAA,IACvB,QAAQ,MAAM,UAAU;AAAA,IACxB,IAAI,SAAS,SAAS,SAAS,QAAQ;AAAA,MACrC,MAAM,iBAAgB;AAAA,QACpB,SAAS,2CAA2C,MAAM,QAAQ,MAAM;AAAA,QACxE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,KAAK;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,IACA,IAAI,UAAU,aAAa,UAAU,WAAW,UAAU,QAAQ;AAAA,MAChE,MAAM,iBAAgB;AAAA,QACpB,SAAS,8CAA8C,MAAM,QAAQ,MAAM;AAAA,QAC3E,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM;AAAA,MACtD,CAAC;AAAA,IACH;AAAA,IACA,OAAO,UAAU,YAAY,EAAE,QAAQ,WAAW,KAAK,IAAI,EAAE,QAAQ,WAAW,MAAM,MAAM;AAAA,EAC9F;AAAA,EAEA,MAAM,iBAAgB;AAAA,IACpB,SAAS,cAAc,MAAM,QAAQ,MAAM;AAAA,IAC3C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,EAC/C,CAAC;AAAA;AAII,SAAS,cAAc,CAAC,QAMX;AAAA,EAClB,QAAQ,OAAO,SAAS,SAAS,YAAY;AAAA,EAC7C,MAAM,QAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAAA,EACzD,MAAM,QAAyB,CAAC;AAAA,EAChC,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,MAAM,WAAW,MAAM,CAAC;AAAA,IAClE,YAAY,MAAM,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,MAChD,IAAI,UAAU;AAAA,QAAW;AAAA,MACzB,MAAM,QAAQ,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,UAAU,CAAC;AAAA,MACrE,MAAM,KACJ,iBAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA,MAAM;AAAA,WACF,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,WACvC,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,MAC7C,CAAC,CACH;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAoBT,SAAS,yBAAyB,CAAC,QAQb;AAAA,EACpB,QAAQ,SAAS,MAAM,OAAO,UAAU,MAAM,SAAS,aAAa;AAAA,EACpE,MAAM,UAAU,cAAc,EAAE,OAAO,MAAM,MAAM,WAAW,SAAS,QAAQ,MAAM,CAAC;AAAA,EACtF,MAAM,OAAO,oBAAoB,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,EAC1D,MAAM,QAAQ,WAAW,MAAM;AAAA,EAC/B,MAAM,SAAS,KAAK,SAAS,cAAc,KAAK,SAAS;AAAA,EACzD,MAAM,QAA2B,CAAC;AAAA,EAElC,MAAM,mBAAmB,CAAC,OAAgB,SAAiC;AAAA,IACzE,IAAI,UAAU,SAAS,UAAU;AAAA,MAAQ,OAAO;AAAA,IAChD,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,WAAW,MAAM,QAAQ,SAAS;AAAA,MAC9C,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,IACrD,CAAC;AAAA;AAAA,EAGH,YAAY,KAAK,UAAU,OAAO,QAAQ,OAAO,GAAG;AAAA,IAClD,IAAI,UAAU;AAAA,MAAW;AAAA,IAEzB,IAAI,QAAQ,UAAU;AAAA,MACpB,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,iBAAgB;AAAA,UACpB,SAAS,WAAW,SAAS,yBAAyB,MAAM,uCAAkC,SAAS;AAAA,UACvG,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,QACrD,CAAC;AAAA,MACH;AAAA,MACA,MAAM,YAAY,iBAAiB,OAAO,WAAW,SAAS,aAAa;AAAA,MAC3E,MAAM,QAAQ,QAAQ,EAAE,SAAS;AAAA,MACjC,MAAM,SACJ,KAAK,SAAS,eACV;AAAA,QACE,MAAM;AAAA,QACN,OAAO,EAAE,MAAO,KAAK,KAA2C,WAAW,MAAM;AAAA,QACjF,SAAS,CAAC;AAAA,QACV,YAAY,EAAE,MAAM,WAAW;AAAA,QAC/B,OAAO;AAAA,UACL,MAAM;AAAA,UACN,IAAI;AAAA,UACJ,MAAM,EAAE,OAAO,OAAO,MAAO,KAAK,KAA2C,aAAa;AAAA,UAC1F,OAAO;AAAA,YACL,OAAO;AAAA,YACP,MAAM,cAAc,EAAE,MAAM,MAAM,iCAAiC,CAAC,EAAE,OAAO;AAAA,UAC/E;AAAA,QACF;AAAA,MACF,IACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,KAAK,OAAO,WAAW,MAAM;AAAA,QAC5C,SAAS,CAAC;AAAA,QACV,YAAY,EAAE,MAAM,WAAW;AAAA,QAC/B,OAAO,cAAc,EAAE,MAAM,YAAY,OAAO,YAAY,MAAM,CAAC;AAAA,MACrE;AAAA,MACN,MAAM,KAAK,EAAE,QAAQ,UAAU,CAAC;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,IAAI,QAAQ;AAAA,MACV,MAAM,iBAAgB;AAAA,QACpB,SAAS,WAAW,SAAS,QAAQ,iBAAiB,MAAM;AAAA,QAC5D,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,MAAM,OAAO,IAAI;AAAA,MACjE,CAAC;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,aAAa,EAAE,OAAO,KAAK,QAAQ,OAAO,KAAK,SAAS,WAAW,SAAS,OAAO,CAAC;AAAA,IAClG,MAAM,YAAY,iBAAiB,OAAO,WAAW,SAAS,QAAQ,KAAK;AAAA,IAC3E,MAAM,QAAQ,QAAQ,EAAE,SAAS;AAAA,IACjC,MAAM,KAAK;AAAA,MACT,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,KAAK,OAAO,WAAW,MAAM;AAAA,QAG5C,SAAS,CAAC,iBAAiB,EAAE,SAAS,OAAO,OAAO,MAAM,CAAC,CAAC;AAAA,QAC5D,OAAO,cAAc,EAAE,MAAM,YAAY,OAAO,YAAY,MAAM,CAAC;AAAA,MACrE;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAST,SAAS,kBAAkB,CAAC,QAOR;AAAA,EAClB,QAAQ,SAAS,MAAM,OAAO,SAAS,SAAS,aAAa;AAAA,EAC7D,MAAM,QAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAAA,EACzD,MAAM,QAAyB,CAAC;AAAA,EAChC,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,MAAM,WAAW,MAAM,CAAC;AAAA,IAClE,YAAY,MAAM,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,MAChD,IAAI,UAAU;AAAA,QAAW;AAAA,MACzB,MAAM,WAAW,MAAM,eAAe,IAAI,IAAI;AAAA,MAC9C,IAAI,aAAa,WAAW;AAAA,QAC1B,MAAM,KAAK,GAAG,0BAA0B,EAAE,SAAS,MAAM,OAAO,UAAU,MAAM,OAAO,SAAS,SAAS,CAAC,CAAC;AAAA,QAC3G;AAAA,MACF;AAAA,MACA,MAAM,QAAQ,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,UAAU,CAAC;AAAA,MACrE,MAAM,KACJ,iBAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA,MAAM;AAAA,WACF,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,QAC3C;AAAA,MACF,CAAC,CACH;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAYF,SAAS,aAAa,CAAC,QAA+E;AAAA,EAC3G,QAAQ,OAAO,QAAQ,aAAa,UAAU;AAAA,EAC9C,MAAM,OAAO,cAAc,EAAE,OAAO,QAAQ,MAAM,UAAU,MAAM,CAAC;AAAA,EACnE,MAAM,QAAkB,CAAC;AAAA,EACzB,YAAY,MAAM,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,IAChD,IAAI,UAAU,aAAa,UAAU;AAAA,MAAO;AAAA,IAC5C,IAAI,SAAS,YAAY,MAAM,eAAe,IAAI,IAAI;AAAA,MAAG;AAAA,IAGzD,IAAI,MAAM,aAAa,QAAQ,MAAM,SAAS,IAAI,IAAI;AAAA,MAAG;AAAA,IACzD,IAAI,UAAU,MAAM;AAAA,MAClB,MAAM,iBAAgB;AAAA,QACpB,SAAS,UAAU,wCAAwC,MAAM;AAAA,QACjE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,MAAM,KAAK,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,SAAS,CAAC,EAAE,IAAI;AAAA,EACzE;AAAA,EACA,IAAI,MAAM,WAAW,KAAK,CAAC,YAAY;AAAA,IACrC,MAAM,iBAAgB;AAAA,MACpB,SAAS,oBAAoB,MAAM;AAAA,MACnC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAST,SAAS,wBAAwB,CAAC,QAIL;AAAA,EAC3B,QAAQ,OAAO,MAAM,gBAAgB;AAAA,EACrC,MAAM,QAAQ,MAAM;AAAA,EACpB,IAAI,UAAU,QAAQ;AAAA,IAAa,OAAO;AAAA,EAC1C,IAAI,eAAc,KAAK,MAAM,GAAG;AAAA,IAC9B,MAAM,QAAkB,CAAC;AAAA,IACzB,YAAY,MAAM,UAAU,OAAO,QAAQ,KAAK,MAAM,GAAG;AAAA,MACvD,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,UAAU,aAAa,UAAU;AAAA,QAAO;AAAA,MAChE,IAAI,UAAU,MAAM;AAAA,QAClB,MAAM,iBAAgB;AAAA,UACpB,SAAS,UAAU,wCAAwC,MAAM;AAAA,UACjE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,QACzC,CAAC;AAAA,MACH;AAAA,MACA,MAAM,KAAK,IAAI;AAAA,IACjB;AAAA,IACA,OAAO,MAAM,WAAW,IAAI,OAAO;AAAA,EACrC;AAAA,EACA,IAAI,eAAc,KAAK,IAAI,GAAG;AAAA,IAC5B,MAAM,QAAkB,CAAC;AAAA,IACzB,WAAW,QAAQ,MAAM,KAAK,GAAG;AAAA,MAC/B,MAAM,QAAS,KAAK,KAAiC;AAAA,MACrD,IAAI,UAAU;AAAA,QAAM;AAAA,MACpB,MAAM,KAAK,IAAI;AAAA,IACjB;AAAA,IACA,OAAO,MAAM,WAAW,IAAI,OAAO;AAAA,EACrC;AAAA,EACA,OAAO,CAAC,GAAG,MAAM,KAAK,CAAC;AAAA;AAIzB,IAAM,sBAAsB,IAAI;AAEhC,SAAS,iBAAiB,CAAC,QAIL;AAAA,EACpB,QAAQ,OAAO,gBAAgB,UAAU;AAAA,EACzC,IAAI,mBAAmB,QAAQ,UAAU,WAAW;AAAA,IAClD,IAAI,SAAS,oBAAoB,IAAI,KAAK;AAAA,IAC1C,IAAI,WAAW,WAAW;AAAA,MACxB,SAAS,MAAM,OAAO,IAAI,CAAC,UAAU,UAAU,EAAE,MAAM,CAAC,CAAC;AAAA,MACzD,oBAAoB,IAAI,OAAO,MAAM;AAAA,IACvC;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAM,CAAC,UAA6B,UAAU,EAAE,UAAW,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAG,CAAC;AAAA,EACxG,IAAI,mBAAmB;AAAA,IAAM,OAAO,MAAM,OAAO,IAAI,GAAG;AAAA,EACxD,OAAO,eAAe,IAAI,CAAC,SAAS,IAAI,MAAM,YAAY,IAAI,IAAI,CAAc,CAAC;AAAA;AAUnF,IAAM,qBAAqB,IAAI;AAE/B,SAAS,gBAAgB,CAAC,QAGJ;AAAA,EACpB,QAAQ,OAAO,mBAAmB;AAAA,EAClC,IAAI,mBAAmB,MAAM;AAAA,IAC3B,IAAI,SAAS,mBAAmB,IAAI,KAAK;AAAA,IACzC,IAAI,WAAW,WAAW;AAAA,MACxB,SAAS,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU;AAAA,MACrD,mBAAmB,IAAI,OAAO,MAAM;AAAA,IACtC;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS,IAAI,IAAY,CAAC,GAAG,MAAM,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI,GAAG,GAAG,cAAc,CAAC;AAAA,EAClG,OAAO,MAAM,OAAO,OAAO,CAAC,UAAU,OAAO,IAAI,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,MAAM,UAAU;AAAA;AAY/F,SAAS,mBAAmB,CAAC,QAKD;AAAA,EAC1B,QAAQ,OAAO,OAAO,OAAO,YAAY;AAAA,EACzC,IAAI,MAAM,gBAAgB,SAAS;AAAA,IAAG,OAAO;AAAA,EAC7C,IAAI,WAA2C;AAAA,EAC/C,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,MAAM,SAAS,MAAM,gBAAgB,IAAI,GAAG,GAAG;AAAA,IAC/C,IAAI,WAAW;AAAA,MAAW;AAAA,IAC1B,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,GAAG,QAAQ,OAAO,MAAM,CAAC;AAAA,IACnE,aAAa,KAAK,MAAM;AAAA,IACxB,OAAO,SAAS;AAAA,IAChB,WAAW,SAAS,QAAQ;AAAA,MAC1B,MAAM,SAAS,KAAK,MAAM;AAAA,MAC1B,IAAI,WAAW,WAAW;AAAA,QACxB,MAAM,iBAAgB;AAAA,UACpB,SAAS,GAAG,QAAQ,iBAAiB,MAAM,mCAAmC,OAC3E,IAAI,CAAC,UAAU,MAAM,IAAI,EACzB,KAAK,IAAI,cAAS,MAAM;AAAA,UAC3B,MAAM,EAAE,OAAO,MAAM,MAAM,KAAK,OAAO,MAAM,KAAK;AAAA,QACpD,CAAC;AAAA,MACH;AAAA,MACA,SAAS,MAAM,QAAQ;AAAA,IACzB;AAAA,EACF;AAAA,EACA,OAAO,YAAY;AAAA;AAerB,SAAS,mBAAmB,CAAC,QAAgE;AAAA,EAC3F,OAAO,cAAc,OAAO,KAAK,KAAM,OAAO,oBAAoB,OAAO,UAAU;AAAA;AAU9E,SAAS,aAAa,CAAC,QAAuE;AAAA,EACnG,QAAQ,OAAO,UAAU;AAAA,EACzB,WAAW,SAAS,MAAM,cAAc;AAAA,IACtC,IAAI,cAAc,MAAM,MAAM,KAAK;AAAA,MAAG,OAAO;AAAA,EAC/C;AAAA,EACA,WAAW,UAAU,MAAM,oBAAoB;AAAA,IAC7C,MAAM,QAAQ,OAAO,OAAO;AAAA,IAC5B,IAAI,oBAAoB,EAAE,OAAO,MAAM,MAAM,OAAO,kBAAkB,OAAO,iBAAiB,CAAC;AAAA,MAAG,OAAO;AAAA,EAC3G;AAAA,EACA,WAAW,SAAS,MAAM,gBAAgB,OAAO,GAAG;AAAA,IAClD,IACE,MAAM,OAAO,MAAM,CAAC,UAClB,oBAAoB,EAAE,OAAO,MAAM,MAAM,OAAO,kBAAkB,MAAM,iBAAiB,CAAC,CAC5F;AAAA,MAEA,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,QAAyF;AAAA,EAClH,QAAQ,OAAO,OAAO,WAAW;AAAA,EACjC,IAAI,cAAc,EAAE,OAAO,MAAM,CAAC;AAAA,IAAG;AAAA,EACrC,MAAM,aAAa;AAAA,IACjB,GAAG,MAAM,aAAa,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IAC/C,GAAG,MAAM,mBAAmB,IAAI,CAAC,WAAY,OAAO,OAAO,GAAiB,IAAI;AAAA,IAChF,GAAG,MAAM,gBAAgB,KAAK;AAAA,EAChC;AAAA,EACA,MAAM,iBAAgB;AAAA,IACpB,SAAS,GAAG,MAAM,cAAc,gDAA2C,WAAW,KAAK,IAAI;AAAA,IAC/F,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,WAAW;AAAA,EAChD,CAAC;AAAA;AAeH,SAAS,kBAAkB,CAAC,QAIA;AAAA,EAC1B,QAAQ,OAAO,OAAO,SAAS;AAAA,EAC/B,MAAM,QAAQ,oBAAoB,EAAE,OAAO,MAAM,CAAC;AAAA,EAClD,MAAM,MAA+B,CAAC;AAAA,EACtC,WAAW,SAAS,MAAM,QAAQ;AAAA,IAChC,IAAI,CAAC,oBAAoB,EAAE,OAAO,MAAM,MAAM,OAAO,kBAAkB,MAAM,iBAAiB,CAAC,GAAG;AAAA,MAChG,OAAO,oBAAoB,EAAE,OAAO,OAAO,KAAK,CAAC;AAAA,IACnD;AAAA,IACA,IAAI,MAAM,QAAQ,MAAM,MAAM;AAAA,EAChC;AAAA,EACA,OAAO,oBAAoB,EAAE,OAAO,OAAO,KAAK,KAAK,CAAC;AAAA;AAIxD,SAAS,mBAAmB,CAAC,QAGT;AAAA,EAClB,QAAQ,OAAO,UAAU;AAAA,EACzB,WAAW,SAAS,MAAM,cAAc;AAAA,IACtC,IAAI,cAAc,MAAM,MAAM,KAAK;AAAA,MAAG,OAAO,EAAE,QAAQ,CAAC,KAAK,GAAG,kBAAkB,MAAM;AAAA,EAC1F;AAAA,EACA,WAAW,UAAU,MAAM,oBAAoB;AAAA,IAC7C,MAAM,QAAQ,OAAO,OAAO;AAAA,IAC5B,IAAI,oBAAoB,EAAE,OAAO,MAAM,MAAM,OAAO,kBAAkB,OAAO,iBAAiB,CAAC,GAAG;AAAA,MAChG,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAGA,WAAW,SAAS,MAAM,gBAAgB,OAAO,GAAG;AAAA,IAClD,IACE,MAAM,OAAO,MAAM,CAAC,UAClB,oBAAoB,EAAE,OAAO,MAAM,MAAM,OAAO,kBAAkB,MAAM,iBAAiB,CAAC,CAC5F,GACA;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO,EAAE,QAAQ,MAAM,YAAY,kBAAkB,MAAM;AAAA;AAU7D,SAAS,eAAe,CAAC,GAAY,GAAqB;AAAA,EACxD,IAAI,MAAM;AAAA,IAAG,OAAO;AAAA,EACpB,IAAI,aAAa,QAAQ,aAAa;AAAA,IAAM,OAAO,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAAA,EAC7E,MAAM,aAAa,CAAC,UAClB,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,EAC7E,IAAI,WAAW,CAAC,KAAK,WAAW,CAAC;AAAA,IAAG,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA,EACjE,OAAO;AAAA;AA2BF,SAAS,yBAAyB,CAAC,QAG9B;AAAA,EACV,QAAQ,OAAO,SAAS;AAAA,EACxB,MAAM,QAAQ,oBAAoB;AAAA,IAChC;AAAA,IACA,OAAO,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC;AAAA,EAClE,CAAC;AAAA,EACD,kBAAkB,EAAE,OAAO,OAAO,QAAQ,SAAS,CAAC;AAAA,EACpD,MAAM,SAAS,cAAc,EAAE,OAAO,KAAK,QAAQ,MAAM,UAAU,MAAM,CAAC;AAAA,EAC1E,MAAM,SAAS,oBAAoB,EAAE,OAAO,MAAM,CAAC;AAAA,EACnD,MAAM,cAAc,IAAI,IAAI,OAAO,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA,EACpE,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,IAAI,CAAC,YAAY,IAAI,GAAG;AAAA,MAAG,OAAO;AAAA,EACpC;AAAA,EACA,OAAO,OAAO,OAAO,MAAM,CAAC,UAAU;AAAA,IACpC,MAAM,cAAc,OAAO,MAAM;AAAA,IACjC,MAAM,aAAa,MAAM,MAAM;AAAA,IAE/B,IAAI,OAAO,oBAAoB,gBAAgB,QAAQ,eAAe;AAAA,MAAM,OAAO;AAAA,IACnF,OAAO,cAAc,WAAW,KAAK,gBAAgB,aAAa,UAAU;AAAA,GAC7E;AAAA;AAwBH,IAAM,iBAAiB,IAAI;AAE3B,SAAS,YAAY,CAAC,QAAmE;AAAA,EACvF,QAAQ,SAAS,UAAU;AAAA,EAC3B,IAAI,aAAa,eAAe,IAAI,KAAK;AAAA,EACzC,IAAI,eAAe,WAAW;AAAA,IAC5B,aAAa,IAAI;AAAA,IACjB,eAAe,IAAI,OAAO,UAAU;AAAA,EACtC;AAAA,EACA,MAAM,MAAM,WAAW,IAAI,QAAQ,IAAI;AAAA,EACvC,IAAI,QAAQ;AAAA,IAAW,OAAO;AAAA,EAE9B,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,WAA6B,CAAC;AAAA,EACpC,WAAW,SAAS,MAAM,QAAQ;AAAA,IAChC,MAAM,QAAwB;AAAA,MAC5B;AAAA,MACA,QAAQ,aAAa,EAAE,SAAS,QAAQ,MAAM,MAAM,CAAC;AAAA,MACrD,aAAa,MAAM,UAAU,CAAC,QAAQ,aAAa;AAAA,IACrD;AAAA,IACA,MAAM,IAAI,MAAM,MAAM,KAAK;AAAA,IAC3B,IAAI,MAAM,eAAgB,MAAM,kBAAkB,SAAS,MAAM,YAAY,MAAO;AAAA,MAClF,SAAS,KAAK,KAAK;AAAA,IACrB;AAAA,EACF;AAAA,EACA,MAAM,OAAuB,EAAE,OAAO,SAAS;AAAA,EAC/C,WAAW,IAAI,QAAQ,MAAM,IAAI;AAAA,EACjC,OAAO;AAAA;AAIT,SAAS,UAAU,CAAC,OAAuB,OAAyB;AAAA,EAClE,IAAI,UAAU,QAAQ,UAAU,aAAa,MAAM,WAAW;AAAA,IAAM,OAAO;AAAA,EAC3E,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,EAOlC,IAAI,MAAM,MAAM,eAAe,UAAU,CAAC,MAAM,MAAM,UAAU,OAAO,YAAY,UAAU;AAAA,IAC3F,OAAO,cAAc,EAAE,MAAM,QAAQ,CAAC;AAAA,EACxC;AAAA,EACA,OAAO;AAAA;AAST,SAAS,gBAAgB,CAAC,QAIZ;AAAA,EACZ,QAAQ,SAAS,OAAO,SAAS;AAAA,EACjC,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,EAC/D,MAAM,OAAO,aAAa,EAAE,SAAS,MAAM,CAAC;AAAA,EAC5C,MAAM,SAAkC,CAAC;AAAA,EACzC,MAAM,MAAM,IAAI;AAAA,EAEhB,WAAW,QAAQ,OAAO,KAAK,IAAI,GAAG;AAAA,IACpC,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,MAAM,QAAQ,KAAK,MAAM,IAAI,IAAI;AAAA,IACjC,IAAI,UAAU,WAAW;AAAA,MACvB,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,OAAO,CAAC;AAAA,MACpD;AAAA,IACF;AAAA,IACA,IAAI,MAAM;AAAA,MAAa,mBAAmB,EAAE,SAAS,OAAO,OAAO,MAAM,MAAM,CAAC;AAAA,IAChF,IAAI,QAAQ,KAAK,GAAG;AAAA,MAClB,IAAI,IAAI,MAAM,MAAM,MAAM,KAAK;AAAA,MAC/B,OAAO,MAAM,MAAM,cAAc,kBAAkB,EAAE,OAAO,OAAO,MAAM,OAAO,MAAM,CAAC;AAAA,MACvF;AAAA,IACF;AAAA,IACA,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,KAAK,CAAC,SAAS,QAAQ,IAAI,CAAC,GAAG;AAAA,MAC/D,MAAM,iBAAgB;AAAA,QACpB,SAAS,qCAAqC,MAAM,QAAQ,MAAM,MAAM;AAAA,QACxE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,KAAK;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,IACA,IAAI,IAAI,MAAM,MAAM,MAAM,KAAK;AAAA,IAC/B,OAAO,MAAM,MAAM,cAAc,WAAW,OAAO,KAAK;AAAA,EAC1D;AAAA,EAEA,WAAW,SAAS,KAAK,UAAU;AAAA,IACjC,MAAM,QAAQ,MAAM;AAAA,IACpB,IAAI,IAAI,IAAI,MAAM,IAAI;AAAA,MAAG;AAAA,IAEzB,IAAI,MAAM,aAAa;AAAA,MACrB,MAAM,MAAM,IAAI;AAAA,MAChB,IAAI,IAAI,MAAM,MAAM,GAAG;AAAA,MACvB,OAAO,MAAM,cAAc,WAAW,OAAO,GAAG;AAAA,MAChD;AAAA,IACF;AAAA,IACA,MAAM,YAAY,qBAAqB,EAAE,MAAM,MAAM,QAA6C,CAAC;AAAA,IACnG,IAAI,cAAc;AAAA,MAAW;AAAA,IAC7B,IAAI,IAAI,MAAM,MAAM,SAAS;AAAA,IAC7B,OAAO,MAAM,cAAc,WAAW,OAAO,SAAS;AAAA,EACxD;AAAA,EAEA,MAAM,WAAoC,CAAC;AAAA,EAC3C,IAAI,cAAc,MAAM,WAAW,SAAS;AAAA,EAC5C,WAAW,SAAS,MAAM,YAAY;AAAA,IACpC,MAAM,QAAQ,IAAI,IAAI,MAAM,IAAI;AAAA,IAChC,IAAI,UAAU,WAAW;AAAA,MACvB,cAAc;AAAA,MACd;AAAA,IACF;AAAA,IACA,SAAS,MAAM,QAAQ;AAAA,EACzB;AAAA,EAEA,OAAO,EAAE,QAAQ,UAAU,cAAc,WAAW,KAAK;AAAA;AAO3D,SAAS,cAAc,CAAC,QAAmF;AAAA,EACzG,QAAQ,OAAO,WAAW;AAAA,EAC1B,OAAO,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU,EAAE,OAAO,CAAC,YAAW,UAAU,OAAM;AAAA;AAG1F,SAAS,sBAAsB,CAAC,QAK+E;AAAA,EAC7G,QAAQ,OAAO,OAAO,UAAU,YAAY;AAAA,EAC5C,MAAM,QAAQ,MAAM;AAAA,EACpB,IAAI,MAAM,eAAe,QAAQ,CAAC,cAAc,SAAS,MAAM,UAAU,GAAG;AAAA,IAC1E,MAAM,iBAAgB;AAAA,MACpB,SAAS,IAAI,wCAAwC,MAAM,QAAQ,MAAM,WAAW,OAAO,MAAM,YAAY,MAAM,UAAU;AAAA,MAC7H,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,IACzD,CAAC;AAAA,EACH;AAAA,EACA,MAAM,UAAU,sBAAsB,EAAE,OAAO,OAAO,QAAQ,CAAC;AAAA,EAC/D,MAAM,UAAU,WAAW,OAAO,OAAO;AAAA,EACzC,OAAO,EAAE,MAAM,UAAU,OAAO,YAAa,MAAM,eAAe,YAAY,EAAE,aAAa,UAAmB,IAAI,CAAC,EAAG;AAAA;AAG1H,SAAS,gBAAgB,CAAC,QAUE;AAAA,EAC1B,QAAQ,SAAS,OAAO,SAAS;AAAA,EACjC,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,EAC/D,MAAM,OAAO,aAAa,EAAE,SAAS,MAAM,CAAC;AAAA,EAC5C,MAAM,MAA+B,CAAC;AAAA,EACtC,MAAM,UAAU,IAAI;AAAA,EAEpB,WAAW,QAAQ,OAAO,KAAK,IAAI,GAAG;AAAA,IACpC,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,MAAM,QAAQ,KAAK,MAAM,IAAI,IAAI;AAAA,IACjC,IAAI,UAAU,WAAW;AAAA,MACvB,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,OAAO,CAAC;AAAA,MACpD;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,MAAM;AAAA,IACpB,IAAI,MAAM;AAAA,MAAa,mBAAmB,EAAE,SAAS,OAAO,MAAM,CAAC;AAAA,IACnE,QAAQ,IAAI,MAAM,IAAI;AAAA,IAEtB,IAAI,QAAQ,KAAK,GAAG;AAAA,MAClB,IAAI,MAAM,cAAc,kBAAkB,EAAE,OAAO,OAAO,MAAM,CAAC;AAAA,MACjE;AAAA,IACF;AAAA,IACA,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,KAAK,CAAC,SAAS,QAAQ,IAAI,CAAC,GAAG;AAAA,MAC/D,MAAM,iBAAgB;AAAA,QACpB,SAAS,qCAAqC,MAAM,QAAQ,MAAM;AAAA,QAClE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,IAIA,IAAI,eAAc,KAAK,KAAK,MAAM,eAAe,QAAQ;AAAA,MACvD,MAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,OAAO,IAAI,aAAa,YAAY,SAAS;AAAA,MACnF,IAAI,QAAQ,WAAW,GAAG;AAAA,QACxB,MAAM,iBAAgB;AAAA,UACpB,SAAS,aAAa,MAAM,QAAQ,MAAM;AAAA,UAC1C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,YAAY,QAAQ,IAAI,EAAE,SAAS,GAAG,EAAE;AAAA,QACxF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,UAAU,WAAW,QAAQ;AAAA,MACpC,IAAI,aAAa,OAAO;AAAA,QACtB,IAAI,MAAM,cAAc,QAAQ,OAAO,IACnC,kBAAkB,EAAE,OAAO,OAAO,OAAO,QAAQ,CAAC,IAClD,WAAW,OAAO,OAAO;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,IAAI,aAAa,UAAU,MAAM,QAAQ;AAAA,QAGvC,IAAI,MAAM,cAAc,MAAM,QAAQ,OAAO,IACzC,EAAE,UAAU,UAAU,OAAO,WAAW,OAAO,OAAO,EAAE,IACxD,EAAE,UAAU,UAAU,OAAO,WAAW,OAAO,OAAO,EAAE;AAAA,QAC5D;AAAA,MACF;AAAA,MACA,MAAM,SAAS,kBAAkB;AAAA,MACjC,IAAI,WAAW,WAAW;AAAA,QACxB,MAAM,iBAAgB;AAAA,UACpB,SAAS,6BAA6B,gBAAgB,MAAM,QAAQ,MAAM;AAAA,UAC1E,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,QACzD,CAAC;AAAA,MACH;AAAA,MACA,IAAI,MAAM,cAAc,uBAAuB,EAAE,OAAO,OAAO,UAAU,QAAQ,QAAQ,CAAC;AAAA,MAC1F;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,cAAc,WAAW,OAAO,KAAK;AAAA,EACjD;AAAA,EAEA,IAAI,OAAO,kBAAkB,MAAM;AAAA,IACjC,WAAW,SAAS,KAAK,UAAU;AAAA,MACjC,IAAI,CAAC,MAAM,MAAM,eAAe,QAAQ,IAAI,MAAM,MAAM,IAAI;AAAA,QAAG;AAAA,MAC/D,IAAI,MAAM,MAAM,cAAc,WAAW,OAAO,IAAI,IAAM;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,IAAI,OAAO,KAAK,GAAG,EAAE,WAAW,GAAG;AAAA,IACjC,MAAM,iBAAgB;AAAA,MACpB,SAAS,oBAAoB,MAAM;AAAA,MACnC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAoBT,SAAS,iBAAiB,CAAC,QAaL;AAAA,EACpB,QAAQ,SAAS,OAAO,SAAS;AAAA,EACjC,MAAM,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAAA,EAChD,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,OAAO,UAAU,0BAA0B,MAAM;AAAA,MAC7D,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,MAAM,WAAW,MAAM,IAAI,CAAC,SAAS,iBAAiB,EAAE,SAAS,OAAO,MAAM,KAAK,CAAC,EAAE,MAAM;AAAA,EAC5F,OAAO,cAAc,QAAQ;AAAA,EAI7B,MAAM,UAAU,IAAI;AAAA,EACpB,WAAW,OAAO,UAAU;AAAA,IAC1B,WAAW,UAAU,OAAO,KAAK,GAAG;AAAA,MAAG,QAAQ,IAAI,MAAM;AAAA,EAC3D;AAAA,EACA,MAAM,eAAe,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU,EAAE,OAAO,CAAC,WAAW,QAAQ,IAAI,MAAM,CAAC;AAAA,EACzG,MAAM,cAAc,SAAS,MAAM,CAAC,QAAQ,aAAa,MAAM,CAAC,YAAW,UAAU,IAAG,CAAC;AAAA,EAEzF,IAAI;AAAA,EACJ,IAAI,aAAa;AAAA,IACf,SAAS,CAAC,EAAE,SAAS,cAAc,MAAM,SAAS,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;AAAA,EAC7G,EAAO,SAAI,QAAQ,mBAAmB;AAAA,IACpC,SAAS;AAAA,MACP;AAAA,QACE,SAAS;AAAA,QACT,MAAM,SAAS,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,YAAY,UAAU,OAAM,IAAI,UAAU,gBAAiB,CAAC;AAAA,MAC5G;AAAA,IACF;AAAA,EACF,EAAO;AAAA,IACL,MAAM,cAAc,IAAI;AAAA,IACxB,WAAW,OAAO,UAAU;AAAA,MAC1B,MAAM,UAAU,aAAa,OAAO,CAAC,YAAW,UAAU,IAAG;AAAA,MAC7D,MAAM,YAAY,QAAQ,KAAK,MAAQ;AAAA,MACvC,IAAI,QAAQ,YAAY,IAAI,SAAS;AAAA,MACrC,IAAI,UAAU,WAAW;AAAA,QACvB,QAAQ,EAAE,SAAS,MAAM,CAAC,EAAE;AAAA,QAC5B,YAAY,IAAI,WAAW,KAAK;AAAA,MAClC;AAAA,MACA,MAAM,KAAK,KAAK,QAAQ,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC;AAAA,IACtD;AAAA,IACA,SAAS,CAAC,GAAG,YAAY,OAAO,CAAC;AAAA;AAAA,EAKnC,MAAM,UAA6B,CAAC;AAAA,EACpC,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,cAAc,KAAK,IAAI,GAAG,MAAM,QAAQ,MAAM;AAAA,IACpD,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,cAAc,WAAW,CAAC;AAAA,IAC9E,SAAS,QAAQ,EAAG,QAAQ,MAAM,KAAK,QAAQ,SAAS,cAAc;AAAA,MACpE,QAAQ,KAAK,EAAE,SAAS,MAAM,SAAS,MAAM,MAAM,KAAK,MAAM,OAAO,QAAQ,YAAY,EAAE,CAAC;AAAA,IAC9F;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAWT,SAAS,WAAW,CAAC,QAAsD;AAAA,EACzE,QAAQ,OAAO,UAAU;AAAA,EACzB,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,KAAK,GAAG;AAAA,IAC7D,MAAM,iBAAgB;AAAA,MACpB,SAAS,qCAAqC,MAAM,cAAc,OAAO,KAAK;AAAA,MAC9E,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,QAAQ,MAAM;AAAA,IACrD,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAiBT,SAAS,WAAW,CAAC,QAA6D;AAAA,EAChF,QAAQ,UAAU;AAAA,EAClB,MAAM,OAAO,oBAAoB;AAAA,IAC/B;AAAA,IACA,OAAO,cAAc,EAAE,OAAO,OAAO,QAAQ,MAAM,UAAU,MAAM,CAAC;AAAA,IACpE,MAAM;AAAA,EACR,CAAC;AAAA,EACD,MAAM,UAAU,OAAO,QAAQ,IAAI,EAAE,OAAO,IAAI,WAAW,UAAU,SAAS;AAAA,EAC9E,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,MAAM,iBAAgB;AAAA,MACpB,SAAS,oBAAoB,MAAM;AAAA,MACnC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,MAAM,SAAsB,CAAC;AAAA,EAC7B,MAAM,SAAoB,CAAC;AAAA,EAC3B,YAAY,MAAM,UAAU,SAAS;AAAA,IACnC,MAAM,QAAQ,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,SAAS,CAAC;AAAA,IACpE,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,MACzB,MAAM,iBAAgB;AAAA,QACpB,SAAS,UAAU,kBAAkB,MAAM;AAAA,QAC3C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,OAAO,KAAK,KAAK;AAAA,IACjB,OAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EACA,IAAI,OAAO,WAAW,GAAG;AAAA,IACvB,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,sBAAsB,MAAM,mBAAmB,KACnD,CAAC,WAAY,OAAO,OAAO,GAAiB,SAAS,MAAM,IAC7D;AAAA,IACA,IAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,YAAY,CAAC,qBAAqB;AAAA,MAC1D,MAAM,iBAAgB;AAAA,QACpB,SAAS,gBAAgB,MAAM,QAAQ,MAAM;AAAA,QAC7C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,EACF,EAAO;AAAA,IACL,MAAM,QAAQ,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA,IACvD,MAAM,eAAe,CAAC,UACpB,MAAM,WAAW,MAAM,QAAQ,MAAM,MAAM,CAAC,UAAU,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA,IAC7E,MAAM,UACJ,aAAa,MAAM,UAAU,KAC7B,CAAC,GAAG,MAAM,gBAAgB,OAAO,CAAC,EAAE,KAAK,CAAC,UAAU,aAAa,MAAM,MAAM,CAAC;AAAA,IAChF,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,aAAa;AAAA,QACjB,MAAM,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,KAAK,KAAK,KAAK;AAAA,QAC3D,GAAG,MAAM,gBAAgB,KAAK;AAAA,MAChC;AAAA,MACA,MAAM,iBAAgB;AAAA,QACpB,SAAS,gCAAgC,MAAM,kFAAkF,WAAW,KAAK,IAAI;AAAA,QACrJ,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,CAAC,GAAG,KAAK,EAAE;AAAA,MAChD,CAAC;AAAA,IACH;AAAA;AAAA,EAEF,OAAO,EAAE,QAAQ,OAAO;AAAA;AAU1B,SAAS,iBAAiB,CAAC,QAAmF;AAAA,EAC5G,QAAQ,SAAS,OAAO,SAAS;AAAA,EACjC,IAAI,EAAE,YAAY,OAAO;AAAA,IACvB,MAAM,uBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS,oEAAoE,MAAM;AAAA,MACnF,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,MAAM,QAAQ,MAAM,cAAc,IAAI,KAAK,OAAO,IAAI;AAAA,EACtD,IAAI,UAAU,WAAW;AAAA,IACvB,MAAM,uBAAsB;AAAA,MAC1B,SAAS,QAAQ;AAAA,MACjB,SAAS,yDAAyD,MAAM;AAAA,MACxE,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAQF,SAAS,wBAAwB,CAAC,QAKlB;AAAA,EACrB,QAAQ,SAAS,MAAM,OAAO,YAAY;AAAA,EAC1C,MAAM,QAAQ,mBAAmB,EAAE,SAAS,MAAM,OAAO,SAAS,SAAS,WAAW,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC;AAAA,EAC1G,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,IACzB,MAAM,QAAQ,kBAAkB,EAAE,SAAS,OAAO,KAAK,CAAC;AAAA,IACxD,MAAM,SAAS;AAAA,IACf,OAAO,EAAE,OAAO,WAAW,OAAO,WAAW,OAAO,kBAAkB,EAAE,SAAS,MAAM,OAAO,CAAC,EAAE;AAAA,GAClG;AAAA;AAUH,SAAS,iBAAiB,CAAC,QAAmE;AAAA,EAC5F,QAAQ,SAAS,SAAS;AAAA,EAC1B,MAAM,cAAc,QAAQ,SAAS,aAAa,KAAK,cAAc,SAAS,KAAK,cAAc;AAAA,EACjG,OAAO,KAAK,UAAU,cAAc,UAAU;AAAA;AAIhD,SAAS,kBAAkB,CAAC,QAG0B;AAAA,EACpD,QAAQ,OAAO,UAAU;AAAA,EACzB,IAAI,UAAU;AAAA,IAAW,OAAO,CAAC;AAAA,EACjC,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,UAAU,MAAM,CAAC;AAAA,EAC3D,WAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,IACnC,IAAI,QAAQ,sBAAsB;AAAA,MAChC,MAAM,iBAAgB;AAAA,QACpB,SAAS,0BAA0B,kBAAkB,MAAM;AAAA,QAC3D,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK,QAAQ,wBAAwB;AAAA,MAC1E,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,MAAM,YAAY,KAAK;AAAA,EACvB,IAAI,cAAc;AAAA,IAAW,OAAO,CAAC;AAAA,EACrC,IAAI,cAAc,gBAAgB;AAAA,IAChC,MAAM,iBAAgB;AAAA,MACpB,SAAS,uCAAuC,MAAM;AAAA,MACtD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,WAAW,QAAQ,wBAAwB;AAAA,IAC/E,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,oBAAoB,eAAe;AAAA;AAsB9C,SAAS,gBAAgB,CAAC,QAOd;AAAA,EACV,QAAQ,SAAS,OAAO,MAAM,WAAW,UAAU,aAAa;AAAA,EAChE,IAAI,KAAK,WAAW,WAAW;AAAA,IAC7B,MAAM,iBAAgB;AAAA,MACpB,SAAS,6CAA6C,MAAM;AAAA,MAC5D,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,yBAAyB;AAAA,IAC9D,CAAC;AAAA,EACH;AAAA,EACA,IAAI,KAAK,aAAa,WAAW;AAAA,IAC/B,MAAM,iBAAgB;AAAA,MACpB,SAAS,gDAAgD,MAAM;AAAA,MAC/D,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,8BAA8B;AAAA,IACnE,CAAC;AAAA,EACH;AAAA,EACA,IAAI,KAAK,SAAS,WAAW;AAAA,IAC3B,MAAM,iBAAgB;AAAA,MACpB,SAAS,4CAA4C,MAAM;AAAA,MAC3D,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,0BAA0B;AAAA,IAC/D,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAU,WAAW,GAAG;AAAA,IAC1B,MAAM,iBAAgB;AAAA,MACpB,SAAS,mBAAmB,MAAM;AAAA,MAClC,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,wBAAwB;AAAA,IAC7D,CAAC;AAAA,EACH;AAAA,EACA,MAAM,cAAc,CAAC,SAAmC,kBAAkB,EAAE,SAAS,OAAO,KAAK,CAAC;AAAA,EAElG,MAAM,YAAiC,UAAuC,IAAI,CAAC,SAAS;AAAA,IAC1F,MAAM,QAAQ,YAAY,IAAI;AAAA,IAC9B,MAAM,SAAS;AAAA,IACf,OAAO,EAAE,OAAO,WAAW,OAAO,WAAW,OAAO,kBAAkB,EAAE,SAAS,MAAM,OAAO,CAAC,EAAE;AAAA,GAClG;AAAA,EACD,MAAM,OAAO,uBAAuB;AAAA,IAClC;AAAA,IACA;AAAA,IACA,OAAO;AAAA,OACJ,mBAAmB,EAAE,OAAO,OAAO,KAAK,OAAO,CAAC;AAAA,EACrD,CAAC;AAAA,EACD,MAAM,SAAS,kBAAkB,EAAE,MAAM,OAAO,KAAK,MAAgB,CAAC;AAAA,EAEtE,MAAM,YAAa,SAAsC,IAAI,CAAC,MAAM,UAAU;AAAA,IAC5E,MAAM,QAAQ,YAAY,IAAI;AAAA,IAC9B,MAAM,SAAS;AAAA,IACf,OAAO;AAAA,MACL;AAAA,MACA,WAAW,OAAO;AAAA,MAClB,OAAO,kBAAkB,EAAE,SAAS,MAAM,OAAO,CAAC;AAAA,MAClD,OAAO,OAAO;AAAA,IAChB;AAAA,GACD;AAAA,EAED,MAAM,UAAU,CAAC,QACf,IAAI,UAAU,OACV,EAAE,MAAM,UAAU,QAAQ,UAAU,EAAE,OAAO,IAAI,MAAM,CAAC,EAAE,IAC1D;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,QAAQ,SAAS,IAAI,KAAK;AAAA,IAC1B,OAAO,kBAAkB,EAAE,SAAS,QAAQ,MAAM,OAAO,IAAI,OAAO,OAAO,IAAI,MAAM,CAAC;AAAA,EACxF;AAAA,EAGN,MAAM,gBAAgB,CAAC,QAAoD;AAAA,IACzE,IAAI,IAAI,UAAU,MAAM;AAAA,MACtB,OAAO,IAAI,UAAU,SAAS,OAAO,EAAE,MAAM,UAAU,QAAQ,UAAU,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,QAAQ,KAAK;AAAA,IAC/G;AAAA,IACA,MAAM,UAAmB;AAAA,MACvB,MAAM;AAAA,MACN,IAAI,IAAI,cAAc,QAAQ,OAAO;AAAA,MACrC,QAAQ,SAAS,IAAI,KAAK;AAAA,MAC1B,OAAO,kBAAkB,EAAE,SAAS,QAAQ,MAAM,OAAO,IAAI,OAAO,OAAO,IAAI,MAAM,CAAC;AAAA,IACxF;AAAA,IACA,OAAO,IAAI,MAAM,cAAc,IAAI,UAAU,SACzC,EAAE,MAAM,MAAM,UAAU,CAAC,SAAS,EAAE,MAAM,UAAU,QAAQ,UAAU,EAAE,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,IAC/F;AAAA;AAAA,EAGN,MAAM,WAAsB,CAAC;AAAA,EAC7B,SAAS,QAAQ,EAAG,QAAQ,UAAU,QAAQ,SAAS;AAAA,IACrD,MAAM,QAAQ,cAAc,UAAU,MAAoC;AAAA,IAC1E,IAAI,UAAU;AAAA,MAAM;AAAA,IACpB,MAAM,WAAsB,CAAC;AAAA,IAC7B,SAAS,WAAW,EAAG,WAAW,OAAO,YAAY;AAAA,MACnD,SAAS,KAAK,QAAQ,UAAU,SAAuC,CAAC;AAAA,IAC1E;AAAA,IACA,SAAS,KAAK,KAAK;AAAA,IACnB,SAAS,KAAK,SAAS,WAAW,IAAK,SAAS,KAAiB,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,EAC5F;AAAA,EACA,IAAI,SAAS,WAAW,GAAG;AAAA,IAIzB,MAAM,UAAW,UAAU,GAAkC;AAAA,IAC7D,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,QACR,EAAE,MAAM,UAAU,QAAQ,UAAU,EAAE,OAAO,QAAQ,CAAC,EAAE;AAAA,QACxD,EAAE,MAAM,UAAU,QAAQ,UAAU,EAAE,OAAO,QAAQ,CAAC,GAAG,QAAQ,KAAK;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,SAAS,WAAW,IAAK,SAAS,KAAiB,EAAE,MAAM,MAAM,UAAU,SAAS;AAAA;AAQ7F,SAAS,mBAAmB,CAAC,QAA0D;AAAA,EACrF,QAAQ,OAAO,YAAY;AAAA,EAC3B,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,QAAQ,CAAC,UAAyB;AAAA,IACtC,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,WAAW,SAAS;AAAA,QAAO,MAAM,KAAK;AAAA,MACtC;AAAA,IACF;AAAA,IACA,IAAI,CAAC,eAAc,KAAK;AAAA,MAAG;AAAA,IAC3B,YAAY,KAAK,SAAS,OAAO,QAAQ,KAAK,GAAG;AAAA,MAC/C,IAAI,SAAS;AAAA,QAAW;AAAA,MACxB,IAAI,MAAM,YAAY,IAAI,GAAG;AAAA,QAAG,MAAM,KAAK,GAAG;AAAA,IAChD;AAAA;AAAA,EAEF,MAAM,OAAO;AAAA,EACb,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,QAA8D;AAAA,EACvF,QAAQ,OAAO,aAAa;AAAA,EAC5B,MAAM,QAAQ,OAAO,aAAa,WAAW,CAAC,QAAQ,IAAI;AAAA,EAC1D,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,KAAK,MAAM,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AAAA,IACjG,MAAM,iBAAgB;AAAA,MACpB,SAAS,sBAAsB,MAAM;AAAA,MACrC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,OAAQ,MAAmB,IAAI,CAAC,SAAS,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,WAAW,CAAC,CAAC;AAAA;AAGpG,SAAS,cAAc,CAAC,OAAkD;AAAA,EACxE,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,IACzB,MAAM,YAAY,KAAK,cAAc,QAAS,SAAoB;AAAA,IAClE,IAAI,YAAY;AAAA,MAAM,OAAO,KAAK,MAAM,UAAU;AAAA,IAClD,OAAO;AAAA,SACF;AAAA,MACH;AAAA,SACI,KAAK,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,KAAK,UAAU,UAAW,SAAoB,QAAkB;AAAA,IAC/G;AAAA,GACD;AAAA;AAgBH,SAAS,YAAY,CAAC,QAIN;AAAA,EACd,QAAQ,SAAS,OAAO,UAAU;AAAA,EAClC,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,IACzB,MAAM,QAAQ,MAAM,cAAc,IAAI,KAAK,OAAO,IAAI;AAAA,IACtD,MAAM,cAAc,QAAQ,SAAS,aAAa,KAAK,cAAc,SAAS,KAAK,cAAc;AAAA,IACjG,OAAO;AAAA,MACL,OAAO,OAAO,QAAQ,KAAK,OAAO;AAAA,MAClC,WAAW,KAAK;AAAA,MAChB,OAAO,KAAK,UAAU,cAAc,UAAU;AAAA,MAC9C,SAAS,UAAU,aAAa,MAAM,eAAe,aAAa,CAAC,MAAM;AAAA,IAC3E;AAAA,GACD;AAAA;AAgBH,SAAS,cAAc,CAAC,QASV;AAAA,EACZ,QAAQ,SAAS,MAAM,OAAO,MAAM,gBAAgB,YAAY,WAAW,kBAAkB;AAAA,EAC7F,MAAM,aAAa,cAAc;AAAA,EACjC,MAAM,UAAU,aAAa,MAAM,YAAY;AAAA,EAE/C,IAAI,QACF,KAAK,UAAU,YACX,YACA,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC;AAAA,OAC5D,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,EAC7C,CAAC;AAAA,EAKP,MAAM,OAAO,KAAK,SAAS,YAAY,YAAY,YAAY,EAAE,OAAO,KAAK,MAAM,MAAM,CAAC;AAAA,EAC1F,MAAM,WAAW,SAAS,aAAa,OAAO;AAAA,EAC9C,MAAM,OAAO,KAAK,SAAS,YAAY,YAAY,sBAAqB,EAAE,OAAO,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,EAEjH,MAAM,YACJ,KAAK,YAAY,YACb,CAAC,IACD,mBAAmB,EAAE,SAAS,MAAM,OAAO,SAAS,KAAK,SAAS,SAAS,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC;AAAA,EAErG,MAAM,SAAS,KAAK,WAAW,YAAY,YAAY,YAAY,EAAE,OAAO,QAAQ,KAAK,OAAO,CAAC;AAAA,EACjG,MAAM,aAAa,KAAK,SAAS,aAAa,KAAK,SAAS,aAAa,eAAe;AAAA,EAGxF,MAAM,WAAW,CAAC,UAChB,iBAAiB,EAAE,SAAS,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC;AAAA,EAE3F,IAAI,YAA6B;AAAA,EACjC,IAAI,UAAU,WAAW,KAAK,WAAW,WAAW;AAAA,IAClD,YAAY,OAAO,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,SAAS,KAAK,GAAG,WAAW,MAAe,EAAE;AAAA,EACnG;AAAA,EACA,IAAI,UAAU,WAAW,MAAM,YAAY,eAAe,qBAAqB,OAAO;AAAA,IACpF,YAAY,MAAM,WAAW,IAAI,CAAC,WAAW,EAAE,QAAQ,SAAS,KAAK,GAAG,WAAW,MAAe,EAAE;AAAA,EACtG;AAAA,EACA,IAAI,YAAY,UAAU,WAAW,GAAG;AAAA,IACtC,MAAM,iBAAgB;AAAA,MACpB,SAAS,2BAA2B,MAAM;AAAA,MAC1C,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,aAA8B,WAAW,eAAe,SAAS,IAAI;AAAA,EAEzE,IAAI;AAAA,EACJ,IAAI,kBAAkB;AAAA,EACtB,IAAI,WAA+B;AAAA,EACnC,IAAI,oBAAoB;AAAA,EACxB,IAAI,oBAAqC;AAAA,EAEzC,IAAI,qBAA6C;AAAA,EACjD,IAAI,KAAK,aAAa,WAAW;AAAA,IAC/B,IAAI,UAAU;AAAA,MACZ,MAAM,iBAAgB;AAAA,QACpB,SAAS,0DAA0D,MAAM;AAAA,QACzE,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IACA,IAAI,WAAW,KAAK,CAAC,UAAS,YAAY,KAAI,GAAG;AAAA,MAG/C,MAAM,iBAAgB;AAAA,QACpB,SAAS,6DAA6D,MAAM;AAAA,QAC5E,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IACA,MAAM,cAAc;AAAA,IAGpB,IAAI,UAAU,SAAS,GAAG;AAAA,MACxB,WAAW,aAAa,EAAE,SAAS,OAAO,OAAO,UAA6B,CAAC;AAAA,IACjF;AAAA,IACA,MAAM,iBAAiB,kBAAkB,EAAE,OAAO,UAAU,KAAK,SAAS,CAAC;AAAA,IAK3E,oBAAoB,eAAe,IAAI,CAAC,UAAU,UAAU,EAAE,MAAM,CAAC,CAAC;AAAA,IACtE,MAAM,UAA2B,eAAe,IAAI,CAAC,UAAU;AAAA,MAC7D,MAAM,WAAW,YAAY,KAAK,CAAC,SAAS,KAAK,OAAO,SAAS,MAAM,UAAU;AAAA,MACjF,OAAO,YAAY,EAAE,QAAQ,SAAS,KAAK,GAAG,WAAW,MAAe;AAAA,KACzE;AAAA,IACD,MAAM,OAAO,YAAY,OACvB,CAAC,SAAS,CAAC,eAAe,KAAK,CAAC,UAAU,MAAM,eAAe,KAAK,OAAO,IAAI,CACjF;AAAA,IACA,aAAa,CAAC,GAAG,SAAS,GAAG,IAAI;AAAA,IACjC,IAAI,eAAe,sBAAsB,OAAO;AAAA,MAC9C,WAAW,SAAS,MAAM,YAAY;AAAA,QACpC,IAAI,CAAE,WAA+B,KAAK,CAAC,SAAS,KAAK,OAAO,SAAS,MAAM,UAAU,GAAG;AAAA,UAC1F,WAAW,KAAK,EAAE,QAAQ,SAAS,KAAK,GAAG,WAAW,MAAM,CAAC;AAAA,QAC/D;AAAA,MACF;AAAA,IACF;AAAA,IACA,oBAAoB,QAAQ;AAAA,IAQ5B,IAAI,cAAc,UAAU,SAAS,GAAG;AAAA,MACtC,qBAAsB,UAA8B,IAAI,CAAC,SAAS;AAAA,QAChE,MAAM,QAAQ,MAAM,cAAc,IAAI,KAAK,OAAO,IAAI;AAAA,QACtD,OAAO,UAAU,YAAY,OAAO,KAAK,MAAM,QAAQ,iBAAiB,EAAE,SAAS,MAAM,CAAC,EAAE;AAAA,OAC7F;AAAA,MACD,IAAI,eAAe,sBAAsB,OAAO;AAAA,QAC9C,WAAW,SAAS,MAAM,YAAY;AAAA,UACpC,IAAI,CAAC,mBAAmB,KAAK,CAAC,SAAS,KAAK,OAAO,SAAS,MAAM,UAAU,GAAG;AAAA,YAC7E,mBAAmB,KAAK,EAAE,QAAQ,iBAAiB,EAAE,SAAS,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC;AAAA,UAC5F;AAAA,QACF;AAAA,MACF;AAAA,MACA,WAAW;AAAA,IACb;AAAA,IACA,IAAI,QAAQ,aAAa,YAAY;AAAA,MACnC,aAAa,eAAe,IAAI,CAAC,UAAU,SAAS,KAAK,CAAC;AAAA,IAC5D,EAAO;AAAA,MACL,kBAAkB;AAAA;AAAA,EAEtB;AAAA,EAOA,IAAI,WAAW,WAAW;AAAA,IACxB,MAAM,UAAU,WAAW,MAAM,GAAG,OAAO,OAAO,MAAM;AAAA,IACxD,MAAM,sBAAsB,IAAI,IAAI,OAAO,OAAO,IAAI,CAAC,OAAO,UAAU,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC;AAAA,IAClG,MAAM,iBAAiB,QAAQ,OAAO,CAAC,UAAgC,YAAY,KAAI;AAAA,IACvF,MAAM,WACJ,eAAe,WAAW,QAAQ,UAClC,QAAQ,WAAW,OAAO,OAAO,UACjC,IAAI,IAAI,eAAe,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,EAAE,SAAS,QAAQ,UACzE,eAAe,MAAM,CAAC,SAAS,oBAAoB,IAAI,KAAK,OAAO,IAAI,CAAC;AAAA,IAC1E,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,iBAAgB;AAAA,QACpB,SAAS,+BAA+B,MAAM,wDAAwD,OAAO,OAC1G,IAAI,CAAC,UAAU,IAAI,MAAM,OAAO,EAChC,KAAK,IAAI;AAAA,QACZ,MAAM,EAAE,OAAO,MAAM,MAAM,cAAc,OAAO,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE;AAAA,MACpF,CAAC;AAAA,IACH;AAAA,IAGA,MAAM,WAAY,QAA4B,IAAI,CAAC,SAAS;AAAA,MAC1D,MAAM,QAAQ,oBAAoB,IAAI,KAAK,OAAO,IAAI;AAAA,MACtD,MAAM,QAAQ,OAAO,OAAO;AAAA,MAM5B,MAAM,cAAc,QAAQ,SAAS,aAAa,KAAK,cAAc,SAAS,KAAK,cAAc;AAAA,MACjG,MAAM,QAAQ,KAAK,UAAU,cAAc,UAAU;AAAA,MACrD,OAAO;AAAA,QACL;AAAA,QACA,IAAK,KAAK,cAAc,QAAQ,OAAO;AAAA,QACvC,OAAO,kBAAkB,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,CAAC;AAAA,QAGtF,cAAc,MAAM,cAAc,UAAU;AAAA,MAC9C;AAAA,KACD;AAAA,IACD,MAAM,WAAsB,SAAS,IAAI,CAAC,OAAO,UAAU;AAAA,MACzD,MAAM,WAAsB,CAAC;AAAA,MAC7B,SAAS,WAAW,EAAG,WAAW,OAAO,YAAY;AAAA,QACnD,MAAM,SAAS,SAAS;AAAA,QACxB,SAAS,KAAK,EAAE,MAAM,OAAO,IAAI,MAAM,QAAQ,SAAS,OAAO,KAAK,GAAG,OAAO,OAAO,MAAM,CAAC;AAAA,MAC9F;AAAA,MACA,MAAM,UAAmB,EAAE,MAAM,OAAO,IAAI,MAAM,IAAI,QAAQ,SAAS,MAAM,KAAK,GAAG,OAAO,MAAM,MAAM;AAAA,MACxG,SAAS,KACP,MAAM,eACF,EAAE,MAAM,MAAM,UAAU,CAAC,SAAS,EAAE,MAAM,UAAU,QAAQ,UAAU,EAAE,OAAO,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,IACjG,OACN;AAAA,MACA,OAAO,SAAS,WAAW,IAAK,SAAS,KAAiB,EAAE,MAAM,OAAO,SAAS;AAAA,KACnF;AAAA,IACD,MAAM,QAAiB,SAAS,WAAW,IAAK,SAAS,KAAiB,EAAE,MAAM,MAAM,UAAU,SAAS;AAAA,IAC3G,QAAQ,UAAU,YAAY,QAAQ,EAAE,MAAM,OAAO,UAAU,CAAC,OAAO,KAAK,EAAE;AAAA,EAChF;AAAA,EAKA,IAAI,KAAK,UAAU,WAAW;AAAA,IAC5B,IAAI,OAAO,KAAK,UAAU,UAAU;AAAA,MAClC,MAAM,iBAAgB;AAAA,QACpB,SAAS,mBAAmB,MAAM;AAAA,QAClC,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,yBAAyB;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,iBAAiB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,IACF,CAAC;AAAA,IACD,QAAQ,UAAU,YAAY,QAAQ,EAAE,MAAM,OAAO,UAAU,CAAC,OAAO,KAAK,EAAE;AAAA,EAChF,EAAO,SAAI,KAAK,WAAW,WAAW;AAAA,IAEpC,mBAAmB,EAAE,OAAO,OAAO,KAAK,OAAO,CAAC;AAAA,EAClD;AAAA,EAIA,MAAM,UAAU,SAAS,YAAY,YAAY,KAAK,IAAI,IAAI;AAAA,EAC9D,MAAM,QACJ,eAAe,YAAY,UAAU,YAAY,YAAY,aAAa,KAAK,IAAI,YAAY,OAAO;AAAA,EACxG,MAAM,SAAS;AAAA,EAEf,MAAM,eAAe,aACjB;AAAA,IACE,GAAG,UAAU,UAAU,IAAI,CAAC,MAAM,UAAU,uBAAuB,EAAE,SAAS,MAAM,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,IACzG,GAAG,UAAU,OAAO,IAAI,CAAC,MAAM,UAAU,kBAAkB,EAAE,SAAS,MAAM,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,EACnG,IACA,CAAC;AAAA,EACL,MAAM,YAAY,kBAAkB;AAAA,IAClC;AAAA,IACA;AAAA,OACI,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ;AAAA,EACpD,CAAC;AAAA,EACD,MAAM,UACJ,aAAa,WAAW,IACpB,YACA,CAAC,GAAG,WAAW,GAAG,aAAa,IAAI,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO,MAAM,KAAK,YAAY,EAAE,CAAC;AAAA,EAenG,MAAM,qBAAqB,CAAC,OAA0B,UAA8C;AAAA,IAClG,MAAM,MAAM,CAAC,GAAG,KAAK;AAAA,IACrB,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,IAAI,KAAK,CAAC,WAAW,OAAO,SAAS,KAAK,OAAO,IAAI;AAAA,QAAG;AAAA,MAC5D,MAAM,QAAQ,MAAM,cAAc,IAAI,KAAK,OAAO,IAAI;AAAA,MACtD,IAAI,UAAU;AAAA,QAAW;AAAA,MACzB,IAAI,KAAK,UAAU,EAAE,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC,CAAC;AAAA,IACrF;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,iBAAiB,CAAC,OAA0B,SAAyC;AAAA,IACzF,MAAM,MAAM,CAAC,GAAG,KAAK;AAAA,IACrB,WAAW,SAAS,MAAM;AAAA,MACxB,IAAI,IAAI,KAAK,CAAC,WAAW,OAAO,SAAS,MAAM,UAAU;AAAA,QAAG;AAAA,MAC5D,IAAI,KAAK,UAAU,EAAE,UAAW,YAAY,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAG,CAAC,CAAC;AAAA,IACrF;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,IAAI,iBAAiB;AAAA,IAUnB,MAAM,WAAW;AAAA,IACjB,MAAM,cAAc,SAAS,MAAM,iBAAiB;AAAA,IACpD,MAAM,aAAa,sBAAsB,SAAS,MAAM,GAAG,iBAAiB;AAAA,IAC5E,MAAM,QAAyB;AAAA,MAC7B,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,MAC/B,SAAS,mBAAmB,SAAS,UAAU;AAAA,MAC/C,WAAW;AAAA,QACT,aAAa;AAAA,QACb,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,SACI,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,IACzC;AAAA,IACA,MAAM,YAA6B;AAAA,MACjC,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,qBAAqB;AAAA,MACpC,SAAS,kBAAkB,EAAE,OAAO,eAAe,CAAC;AAAA,MACpD,YAAY;AAAA,MACZ,OAAO,EAAE,MAAM,OAAO,IAAI,MAAM,QAAQ,EAAE,MAAM,0BAA0B,GAAG,OAAO,EAAE;AAAA,MACtF,SAAS;AAAA,SACL,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,SACnC,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,IAC3C;AAAA,IACA,OAAO,EAAE,WAAW,aAAa,UAAU,SAAS;AAAA,EACtD;AAAA,EAEA,IAAI,uBAAuB,MAAM;AAAA,IAG/B,MAAM,QAAyB;AAAA,MAC7B,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,MAC/B,SAAS,mBAAmB,SAAS,kBAAkB;AAAA,SACnD,aAAa,SAAS,IAAI,EAAE,aAAa,IAAI,CAAC;AAAA,SAC9C,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,SACnC,eAAe,YAAY,CAAC,IAAI,EAAE,WAAW;AAAA,SAC7C,WAAW,WAAW,IAAI,CAAC,IAAI,EAAE,SAAS,WAAW;AAAA,IAC3D;AAAA,IACA,MAAM,eAAyB;AAAA,MAC7B,GAAG,kBAAkB,EAAE,OAAO,eAAe,CAAC;AAAA,MAC9C,GAAG,aAAa,IAAI,CAAC,UAAU,EAAE,MAAM,KAAK,YAAY,EAAE;AAAA,IAC5D;AAAA,IACA,MAAM,YAA6B;AAAA,MACjC,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,qBAAqB;AAAA,MACpC,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,SACL,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,SACnC,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,IAC3C;AAAA,IACA,OAAO,EAAE,WAAW,aAAa,UAAU,SAAS;AAAA,EACtD;AAAA,EAyBA,MAAM,YACJ,aAAa,SAAS,MACrB,UAAU,aAAa,WAAW,cACnC,WAAW,MAAM,CAAC,UAAgC,YAAY,KAAI;AAAA,EACpE,IAAI,aAAa,cAAc,WAAW;AAAA,IACxC,MAAM,kBAAkB,CAAC,GAAG,UAAU,WAAW,GAAG,UAAU,MAAM,EAAE,QAAQ,CAAC,SAAS,KAAK,KAAK,UAAU;AAAA,IAC5G,MAAM,eAAe,mBAAmB,eAAe,WAAW,eAAe,GAAG,UAA6B;AAAA,IACjH,MAAM,QAAyB;AAAA,MAC7B,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,MAC/B,SAAS;AAAA,SACL,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,SACnC,eAAe,YAAY,CAAC,IAAI,EAAE,WAAW;AAAA,SAC7C,WAAW,WAAW,IAAI,CAAC,IAAI,EAAE,SAAS,WAAW;AAAA,SACrD,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,SACnC,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,IAC3C;AAAA,IACA,MAAM,YAA6B;AAAA,MACjC,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,MAC/B;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,SACI,WAAW,WAAW,IAAI,CAAC,IAAI,EAAE,SAAS,WAAW;AAAA,IAC3D;AAAA,IACA,OAAO,EAAE,WAAW,aAAa,UAAU,SAAS;AAAA,EACtD;AAAA,EAEA,MAAM,YAA6B;AAAA,IACjC,MAAM;AAAA,IACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,IAC/B;AAAA,OACI,aAAa,SAAS,IAAI,EAAE,aAAa,IAAI,CAAC;AAAA,OAC9C,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,OACnC,eAAe,YAAY,CAAC,IAAI,EAAE,WAAW;AAAA,OAC7C,WAAW,WAAW,IAAI,CAAC,IAAI,EAAE,SAAS,WAAW;AAAA,OACrD,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,OACnC,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,EAC3C;AAAA,EACA,OAAO,EAAE,WAAW,aAAa,UAAU,SAAS;AAAA;AAMtD,IAAM,uBAA+B;AAErC,IAAM,4BAAoC;AAGnC,SAAS,kBAAkB,CAAC,QAAsC;AAAA,EACvE,OAAO,SAAS,OAAO;AAAA;AAIlB,SAAS,iBAAiB,CAAC,QAAmC;AAAA,EACnE,OAAO,gBAAgB,OAAO;AAAA;AAGhC,SAAS,iBAAiB,CAAC,QAMX;AAAA,EACd,QAAQ,SAAS,MAAM,OAAO,MAAM,UAAU;AAAA,EAC9C,QAAQ,SAAS;AAAA,EACjB,MAAM,aAAa;AAAA,EACnB,MAAM,YAAY;AAAA,EAClB,MAAM,cAAc,kBAAkB,EAAE,MAAM,CAAC;AAAA,EAC/C,IAAI;AAAA,EACJ,MAAM,SAAS,KAAK,UAAU,YAAY,YAAY,aAAa;AAAA,IACjE;AAAA,IAAS;AAAA,IAAM,OAAO,KAAK;AAAA,IAAQ,OAAO,KAAK;AAAA,IAAO,SAAS;AAAA,EACjE,CAAC;AAAA,EACD,IAAI,KAAK,SAAS,cAAc;AAAA,IAC9B,MAAM,OAAO,KAAK;AAAA,IAClB,MAAM,OAAO,cAAc,EAAE,MAAM,MAAM,uCAAuC,CAAC;AAAA,IACjF,MAAM,cAAuB;AAAA,MAC3B,MAAM;AAAA,MAAU,IAAI;AAAA,MACpB,MAAM,EAAE,OAAO,WAAW,MAAM,KAAK,aAAa;AAAA,MAClD,OAAO,EAAE,OAAO,MAAM,WAAW,MAAM,KAAK,OAAO,WAAW;AAAA,IAChE;AAAA,IAGA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAO,WAAW,YAAY,EAAE,MAAM,KAAK,WAAW,OAAO,UAAU,IAAI,EAAE,MAAM,KAAK,OAAO,WAAW,OAAO,WAAW;AAAA,MAC5H,SAAS,CAAC;AAAA,MAAG,YAAY,EAAE,MAAM,YAAY,OAAO,YAAY;AAAA,MAChE,OAAO,WAAW,YAAY,cAAc,EAAE,MAAM,OAAO,UAAU,CAAC,aAAa,MAAM,EAAE;AAAA,SACvF,WAAW,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;AAAA,QAC7C,OAAO,EAAE,MAAM,KAAK,WAAW,OAAO,UAAU;AAAA,QAChD,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,WAAW,MAAM,KAAK,YAAY,GAAG,OAAO,EAAE,OAAO,YAAY,MAAM,KAAK,MAAM,WAAW,EAAE,CAAC;AAAA,MACxH,CAAC,EAAE;AAAA,IACL;AAAA,EACF,EAAO;AAAA,IACL,MAAM,cAAc,cAAc,EAAE,MAAM,YAAY,YAAY,YAAY,MAAM,UAAU,CAAC;AAAA,IAC/F,SAAS;AAAA,MACP,MAAM;AAAA,MAAU,OAAO,EAAE,MAAM,KAAK,OAAO,WAAW,OAAO,WAAW;AAAA,MAAG,SAAS,CAAC;AAAA,MACrF,YAAY,EAAE,MAAM,YAAY,OAAO,YAAY;AAAA,MACnD,OAAO,WAAW,YAAY,cAAc,EAAE,MAAM,OAAO,UAAU,CAAC,aAAa,MAAM,EAAE;AAAA,IAC7F;AAAA;AAAA,EAEF,OAAO,EAAE,OAAO,WAAW,SAAS,aAAa,KAAK,SAAS,OAAO;AAAA;AAGxE,SAAS,sBAAsB,CAAC,QAMhB;AAAA,EACd,QAAQ,SAAS,MAAM,OAAO,MAAM,UAAU;AAAA,EAC9C,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,SAAS,KAAK;AAAA,EACpB,MAAM,WAAW,EAAE,GAAG,EAAE;AAAA,EAExB,QAAQ,YAAY,kBAAkB,EAAE,KAAK,CAAC;AAAA,EAK9C,IAAI;AAAA,EACJ,IAAI,KAAK,SAAS,cAAc;AAAA,IAC9B,MAAM,OAAO,KAAK;AAAA,IAClB,MAAM,MAAM,cAAc,EAAE,MAAM,MAAM,8CAA8C,CAAC;AAAA,IACvF,MAAM,UAAU,OAAO,EAAE,SAAS;AAAA,IAClC,YAAY;AAAA,MACV,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,KAAK,WAAW,OAAO,QAAQ;AAAA,QAC9C,SAAS,CAAC;AAAA,QACV,YAAY,EAAE,MAAM,MAAM;AAAA,QAC1B,OAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU;AAAA,YACR;AAAA,cACE,MAAM;AAAA,cACN,IAAI;AAAA,cACJ,MAAM,EAAE,OAAO,SAAS,MAAM,KAAK,YAAY;AAAA,cAC/C,OAAO,EAAE,OAAO,qBAAqB,MAAM,IAAI,MAAM,WAAW;AAAA,YAClE;AAAA,YACA;AAAA,cACE,MAAM;AAAA,cACN,IAAI;AAAA,cACJ,MAAM,EAAE,OAAO,SAAS,MAAM,KAAK,aAAa;AAAA,cAChD,OAAO,EAAE,OAAO,MAAM,WAAW,MAAM,IAAI,OAAO,WAAW;AAAA,YAC/D;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAO;AAAA,IACL,YAAY,cAAc,EAAE,MAAM,YAAY,qBAAqB,YAAY,MAAM,UAAU,CAAC;AAAA;AAAA,EAGlG,MAAM,cACJ,KAAK,KAAK,UAAU,YAChB,YACA,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,OAAO,KAAK,KAAK;AAAA,IACjB,SAAS;AAAA,IACT;AAAA,EACF,CAAC;AAAA,EACP,MAAM,QACJ,gBAAgB,YAAY,YAAY,EAAE,MAAM,OAAO,UAAU,CAAC,WAAW,WAAW,EAAE;AAAA,EAE5F,MAAM,SAAS,KAAK,SAAS;AAAA,EAC7B,IAAI;AAAA,EACJ,IAAI,KAAK,KAAK,YAAY,WAAW;AAAA,IACnC,UAAU,eAAe,EAAE,OAAO,QAAQ,SAAS,KAAK,KAAK,SAAS,SAAS,qBAAqB,QAAQ,CAAC;AAAA,EAC/G,EAAO,SAAI,KAAK,KAAK,SAAS,aAAa,KAAK,KAAK,SAAS,WAAW;AAAA,IAEvE,UAAU,OAAO,WAAW,IAAI,CAAC,WAAW;AAAA,MAC1C,QAAQ,UAAU,EAAE,OAAO,OAAO,oBAAoB,CAAC;AAAA,MACvD,WAAW;AAAA,IACb,EAAE;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,SAAS,KAAK,KAAK,OAAO;AAAA,EAExC,OAAO;AAAA,IACL,OAAO,SAAS;AAAA,IAChB,aAAa,mBAAmB,EAAE,UAAU,KAAK,KAAK,CAAC;AAAA,IACvD,KAAK,SAAS,cAAc;AAAA,IAC5B,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,OAAO,WAAW,OAAO,oBAAoB;AAAA,MAC5D;AAAA,MACA;AAAA,SACI,YAAY,aAAa,QAAQ,WAAW,IAAI,CAAC,IAAI,EAAE,QAAQ;AAAA,SAC/D,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,SACnC,KAAK,KAAK,SAAS,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,KAAK,KAAK,KAAK;AAAA,IAC9E;AAAA,EACF;AAAA;AASF,SAAS,WAAW,CAAC,QAAuD;AAAA,EAC1E,QAAQ,UAAU;AAAA,EAClB,MAAM,OAAO,cAAc,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,EACtE,MAAM,UAAU,IAAI;AAAA,EACpB,YAAY,MAAM,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,IAChD,IAAI,UAAU,aAAa,UAAU;AAAA,MAAO;AAAA,IAC5C,IAAI,UAAU,MAAM;AAAA,MAClB,MAAM,iBAAgB;AAAA,QACpB,SAAS,QAAQ,wCAAwC,MAAM;AAAA,QAC/D,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IACA,IAAI,MAAM,eAAe,IAAI,IAAI,GAAG;AAAA,MAClC,MAAM,iBAAgB;AAAA,QACpB,SAAS,QAAQ,kBAAkB,MAAM;AAAA,QACzC,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,MAAM,aAAa,QAAQ,MAAM,SAAS,IAAI,IAAI;AAAA,MAAG;AAAA,IACzD,QAAQ,IAAI,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,OAAO,CAAC,EAAE,IAAI;AAAA,EACxE;AAAA,EACA,MAAM,OAAO,MAAM,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,IAAI,MAAM,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,EAC/F,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,MAAM,iBAAgB;AAAA,MACpB,SAAS,kBAAkB,MAAM;AAAA,MACjC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAKT,SAAS,cAAc,CAAC,QAAyD;AAAA,EAC/E,OAAO,GAAG,OAAO,QAAQ,OAAO;AAAA;AAGlC,SAAS,uBAAuB,CAAC,QAAyE;AAAA,EACxG,QAAQ,OAAO,OAAO,QAAQ;AAAA,EAC9B,IAAI,QAAQ;AAAA,IAAU;AAAA,EACtB,IAAI,MAAM,QAAQ;AAAA,IAChB,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,uCAAuC,MAAM,QAAQ,MAAM;AAAA,MACvE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,IAAI;AAAA,IACpD,CAAC;AAAA,EACH;AAAA,EACA,IAAI,QAAQ,UAAU,QAAQ,QAAQ;AAAA,IACpC,IAAI,MAAM,eAAe,QAAQ,CAAC,cAAc,SAAS,MAAM,UAAU,GAAG;AAAA,MAC1E,MAAM,iBAAgB;AAAA,QACpB,SAAS,GAAG,kCAAkC,MAAM,QAAQ,MAAM,WAAW,OAAO,MAAM,YAAY,MAAM,UAAU;AAAA,QACtH,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,IAAI;AAAA,MACpD,CAAC;AAAA,IACH;AAAA,IACA;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,eAAe,UAAU,MAAM,eAAe,WAAW,MAAM,eAAe,WAAW;AAAA,IACjG,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,wBAAwB,MAAM,QAAQ,MAAM,SAAS,MAAM;AAAA,MACvE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,IAAI;AAAA,IACpD,CAAC;AAAA,EACH;AAAA;AAkBF,SAAS,mBAAmB,CAAC,QAKN;AAAA,EACrB,QAAQ,SAAS,OAAO,MAAM,WAAW;AAAA,EACzC,MAAM,aAAmC,CAAC;AAAA,EAC1C,MAAM,aAA0B,CAAC;AAAA,EACjC,MAAM,aAAuB,CAAC;AAAA,EAC9B,IAAI,iBAAiB;AAAA,EAErB,WAAW,OAAO,gBAAgB;AAAA,IAChC,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,UAAU;AAAA,MAAW;AAAA,IAEzB,IAAI,QAAQ,YAAY,UAAU,MAAM;AAAA,MACtC,iBAAiB;AAAA,MACjB,MAAM,QAAQ,eAAe,EAAE,KAAK,UAAU,OAAO,CAAC;AAAA,MACtD,WAAW,KAAK,EAAE,KAAK,OAAO,MAAM,MAAM,CAAC;AAAA,MAC3C,WAAW,KAAK,EAAE,KAAK,EAAE,IAAI,WAAW,GAAG,MAAM,CAAC;AAAA,MAClD;AAAA,IACF;AAAA,IACA,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,KAAK,MAAM,CAAC;AAAA,IACtD,YAAY,MAAM,SAAS,OAAO,QAAQ,IAAI,GAAG;AAAA,MAC/C,IAAI,SAAS,aAAa,SAAS;AAAA,QAAO;AAAA,MAC1C,IAAI,SAAS,MAAM;AAAA,QACjB,MAAM,iBAAgB;AAAA,UACpB,SAAS,GAAG,OAAO,wCAAwC,MAAM;AAAA,UACjE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,IAAI;AAAA,QAC9C,CAAC;AAAA,MACH;AAAA,MACA,IAAI,SAAS,QAAQ;AAAA,QACnB,IAAI,QAAQ,UAAU;AAAA,UACpB,MAAM,iBAAgB;AAAA,YACpB,SAAS,GAAG;AAAA,YACZ,MAAM,EAAE,OAAO,MAAM,MAAM,IAAI;AAAA,UACjC,CAAC;AAAA,QACH;AAAA,QACA;AAAA,MACF;AAAA,MACA,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,IAAI,CAAC;AAAA,IACnD;AAAA,IACA,IAAI,QAAQ,YAAY,KAAK,SAAS,MAAM;AAAA,MAC1C,MAAM,QAAQ,eAAe,EAAE,KAAK,UAAU,OAAO,CAAC;AAAA,MACtD,WAAW,KAAK,EAAE,KAAK,OAAO,MAAM,MAAM,CAAC;AAAA,MAC3C,WAAW,KAAK,EAAE,KAAK,EAAE,IAAI,WAAW,GAAG,MAAM,CAAC;AAAA,IACpD;AAAA,IACA,WAAW,SAAS,MAAM,QAAQ;AAAA,MAChC,IAAI,KAAK,MAAM,UAAU;AAAA,QAAM;AAAA,MAC/B,wBAAwB,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,MAC7C,MAAM,QAAQ,eAAe,EAAE,KAAK,UAAU,MAAM,KAAK,CAAC;AAAA,MAC1D,WAAW,KAAK,EAAE,KAAK,OAAO,MAAM,MAAM,MAAM,CAAC;AAAA,MAIjD,MAAM,YAAY,QAAQ,WAAW,EAAE,MAAM,MAAM,WAAW,IAAI,iBAAiB,EAAE,SAAS,MAAM,CAAC;AAAA,MACrG,WAAW,KAAK,EAAE,KAAK,EAAE,IAAI,cAAc,MAAM,QAAQ,UAAU,GAAG,MAAM,CAAC;AAAA,MAC7E,IAAI,CAAC,WAAW,SAAS,MAAM,IAAI;AAAA,QAAG,WAAW,KAAK,MAAM,IAAI;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,IAAI,WAAW,WAAW,KAAK,WAAW,aAAa;AAAA,IACrD,MAAM,iBAAgB;AAAA,MACpB,SAAS,GAAG,MAAM,gDAAgD,eAAe,KAAK,IAAI;AAAA,MAC1F,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,MAAM,EAAE,YAAY,eAAe,GAAG,YAAY,WAAW;AAAA;AAGxE,IAAM,sBAA2F;AAAA,EAC/F,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AACP;AAEA,SAAS,yBAAyB,CAAC,QAMrB;AAAA,EACZ,QAAQ,SAAS,OAAO,KAAK,UAAU,WAAW;AAAA,EAClD,IAAI;AAAA,EACJ,IAAI,QAA0B;AAAA,EAC9B,IAAI,aAAa,QAAQ;AAAA,IACvB,IAAI,QAAQ,UAAU;AAAA,MACpB,MAAM,iBAAgB;AAAA,QACpB,SAAS,UAAU;AAAA,QACnB,MAAM,EAAE,OAAO,MAAM,MAAM,IAAI;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA,MAAM,EAAE,IAAI,WAAW;AAAA,EACzB,EAAO;AAAA,IACL,QAAQ,aAAa,EAAE,OAAO,OAAO,UAAU,SAAS,UAAU,MAAM,CAAC;AAAA,IACzE,wBAAwB,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,IAE7C,MAAM,YAAY,QAAQ,WAAW,EAAE,MAAM,MAAM,WAAW,IAAI,iBAAiB,EAAE,SAAS,MAAM,CAAC;AAAA,IACrG,MAAM,EAAE,IAAI,cAAc,MAAM,QAAQ,UAAU;AAAA;AAAA,EAEpD,MAAM,OAAO,eAAc,MAAM,IAAI,SAAS,EAAE,QAAQ,OAAO;AAAA,EAC/D,MAAM,MAAiB,CAAC;AAAA,EACxB,YAAY,UAAU,YAAY,OAAO,QAAQ,IAAI,GAAG;AAAA,IACtD,IAAI,YAAY;AAAA,MAAW;AAAA,IAC3B,MAAM,KAAK,oBAAoB;AAAA,IAC/B,IAAI,OAAO,WAAW;AAAA,MACpB,MAAM,iBAAgB;AAAA,QACpB,SAAS,4BAA4B,gBAAgB,UAAU,MAAM,QAAQ,8BAAyB,OAAO,KAAK,mBAAmB,EAAE,KAAK,IAAI;AAAA,QAChJ,MAAM,EAAE,OAAO,MAAM,MAAM,KAAK,SAAS;AAAA,MAC3C,CAAC;AAAA,IACH;AAAA,IAOA,MAAM,QACJ,QAAQ,SAAS,YAAY,UAAU,QAAQ,QAAQ,WACnD,uBAAuB,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,QAAQ,CAAC,IACvE,UAAU,SAAS,QAAQ,UAAU,QAAQ,UAAU,QAAQ,UAC7D,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,OAAO,QAAQ,CAAC,IAC5D,OAAO,YAAY,WACjB,QAAQ,SAAS,WACf,UACA,QAAQ,SAAS,IACnB;AAAA,IACV,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,KAAK,MAAM,CAAC;AAAA,EAC7C;AAAA,EACA,IAAI,IAAI,WAAW,GAAG;AAAA,IACpB,MAAM,iBAAgB;AAAA,MACpB,SAAS,UAAU,OAAO,sBAAsB,MAAM;AAAA,MACtD,MAAM,EAAE,OAAO,MAAM,MAAM,IAAI;AAAA,IACjC,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAST,SAAS,aAAa,CAAC,QAKC;AAAA,EACtB,QAAQ,KAAK,OAAO,SAAS,WAAW;AAAA,EACxC,MAAM,WAAsB,CAAC;AAAA,EAE7B,MAAM,QAAQ,CAAC,OAAgB,SAA4B;AAAA,IACzD,MAAM,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACnD,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,MACzB,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,MAAM,MAAM,CAAC;AAAA,MACvD,OAAO,cAAc,EAAE,KAAK,OAAO,SAAS,QAAQ,KAAK,CAAC,KAAK;AAAA,KAChE;AAAA;AAAA,EAGH,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IACjD,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,IAAI,QAAQ,OAAO;AAAA,MACjB,SAAS,KAAK,EAAE,MAAM,OAAO,UAAU,MAAM,OAAO,GAAG,EAAE,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,MAAM;AAAA,MAChB,SAAS,KAAK,EAAE,MAAM,MAAM,UAAU,MAAM,OAAO,GAAG,EAAE,CAAC;AAAA,MACzD;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,OAAO;AAAA,MACjB,WAAW,UAAU,MAAM,OAAO,GAAG;AAAA,QAAG,SAAS,KAAK,EAAE,MAAM,OAAO,SAAS,OAAO,CAAC;AAAA,MACtF;AAAA,IACF;AAAA,IAEA,IAAK,eAAqC,SAAS,GAAG,GAAG;AAAA,MACvD,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,UAAU,OAAO,MAAM,CAAC;AAAA,MAClE,YAAY,UAAU,WAAW,OAAO,QAAQ,IAAI,GAAG;AAAA,QACrD,IAAI,WAAW;AAAA,UAAW;AAAA,QAC1B,SAAS,KACP,GAAG,0BAA0B,EAAE,SAAS,IAAI,SAAS,OAAO,KAA0B,UAAU,OAAO,CAAC,CAC1G;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,aAAa,EAAE,OAAO,OAAO,KAAK,SAAS,SAAS,CAAC;AAAA,IACnE,MAAM,iBAAiB,MAAY;AAAA,MACjC,IAAI,QAAQ,IAAI,MAAM,IAAI;AAAA,QAAG;AAAA,MAC7B,MAAM,iBAAgB;AAAA,QACpB,SAAS,aAAa,MAAM,QAAQ,MAAM;AAAA,QAC1C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MAC/C,CAAC;AAAA;AAAA,IAEH,IAAI,eAAc,KAAK,GAAG;AAAA,MACxB,MAAM,QAAiC,CAAC;AAAA,MACxC,YAAY,UAAU,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,QACvD,IAAI,YAAY;AAAA,UAAW;AAAA,QAC3B,IAAK,eAAqC,SAAS,QAAQ,GAAG;AAAA,UAC5D,SAAS,KACP,GAAG,0BAA0B;AAAA,YAC3B,SAAS,IAAI;AAAA,YACb;AAAA,YACA,KAAK;AAAA,YACL,UAAU,MAAM;AAAA,YAChB,QAAQ;AAAA,UACV,CAAC,CACH;AAAA,UACA;AAAA,QACF;AAAA,QACA,MAAM,YAAY;AAAA,MACpB;AAAA,MACA,IAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAAA,QACjC,eAAe;AAAA,QACf,SAAS,KAAK,sBAAsB,EAAE,KAAK,OAAO,OAAO,QAAQ,OAAO,SAAS,UAAU,CAAC,CAAC;AAAA,MAC/F;AAAA,MACA;AAAA,IACF;AAAA,IACA,eAAe;AAAA,IACf,SAAS,KAAK,mBAAmB,EAAE,KAAK,OAAO,OAAO,OAAO,SAAS,UAAU,CAAC,CAAC;AAAA,EACpF;AAAA,EAEA,IAAI,SAAS,WAAW;AAAA,IAAG;AAAA,EAC3B,IAAI,SAAS,WAAW;AAAA,IAAG,OAAO,SAAS;AAAA,EAC3C,OAAO,EAAE,MAAM,OAAO,SAAS;AAAA;AAQjC,SAAS,mBAAmB,CAAC,QAKb;AAAA,EACd,QAAQ,SAAS,OAAO,SAAS,YAAY;AAAA,EAC7C,MAAM,QAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAAA,EACzD,MAAM,QAAqB,CAAC;AAAA,EAC5B,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,OAAO,cAAc,EAAE,OAAO,MAAM,MAAM,WAAW,MAAM,CAAC;AAAA,IAClE,YAAY,MAAM,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,MAChD,IAAI,UAAU;AAAA,QAAW;AAAA,MACzB,IAAK,eAAqC,SAAS,IAAI,GAAG;AAAA,QACxD,MAAM,MAAM;AAAA,QACZ,MAAM,UAAU,cAAc,EAAE,OAAO,MAAM,WAAW,QAAQ,MAAM,CAAC;AAAA,QACvE,YAAY,UAAU,cAAc,OAAO,QAAQ,OAAO,GAAG;AAAA,UAC3D,IAAI,cAAc;AAAA,YAAW;AAAA,UAC7B,IAAI,cAAc,SAAS,cAAc,QAAQ;AAAA,YAC/C,MAAM,iBAAgB;AAAA,cACpB,SAAS,WAAW,QAAQ,8CAA8C,MAAM;AAAA,cAChF,MAAM,EAAE,OAAO,MAAM,MAAM,KAAK,MAAM,SAAS;AAAA,YACjD,CAAC;AAAA,UACH;AAAA,UACA,IAAI;AAAA,UACJ,IAAI,aAAa,QAAQ;AAAA,YACvB,IAAI,QAAQ,UAAU;AAAA,cACpB,MAAM,iBAAgB;AAAA,gBACpB,SAAS,WAAW;AAAA,gBACpB,MAAM,EAAE,OAAO,MAAM,MAAM,KAAK,KAAK;AAAA,cACvC,CAAC;AAAA,YACH;AAAA,YACA,MAAM,EAAE,IAAI,WAAW;AAAA,UACzB,EAAO;AAAA,YACL,MAAM,QAAQ,aAAa,EAAE,OAAO,OAAO,UAAU,SAAS,WAAW,OAAO,CAAC;AAAA,YACjF,wBAAwB,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,YAE7C,MAAM,YAAY,QAAQ,WAAW,EAAE,MAAM,MAAM,WAAW,IAAI,iBAAiB,EAAE,SAAS,MAAM,CAAC;AAAA,YACrG,MAAM,EAAE,IAAI,cAAc,MAAM,QAAQ,UAAU;AAAA;AAAA,UAEpD,MAAM,KAAK,EAAE,KAAK,UAAU,CAAC;AAAA,QAC/B;AAAA,QACA;AAAA,MACF;AAAA,MACA,MAAM,QAAQ,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,UAAU,CAAC;AAAA,MACrE,IAAI,CAAC,QAAQ,IAAI,MAAM,IAAI,GAAG;AAAA,QAC5B,MAAM,iBAAgB;AAAA,UACpB,SAAS,cAAc,MAAM,QAAQ,MAAM;AAAA,UAC3C,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,QAC/C,CAAC;AAAA,MACH;AAAA,MACA,MAAM,KAAK,iBAAiB,EAAE,OAAO,OAAO,MAAM,OAAO,QAAQ,CAAC,CAAC;AAAA,IACrE;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAiBT,SAAS,mBAAmB,CAAC,QAID;AAAA,EAC1B,QAAQ,OAAO,OAAO,SAAS;AAAA,EAC/B,MAAM,MAA+B,KAAK,MAAM;AAAA,EAChD,IAAI,CAAC,eAAc,IAAI;AAAA,IAAG,OAAO;AAAA,EACjC,WAAW,OAAO,OAAO,KAAK,GAAG,GAAG;AAAA,IAClC,IAAI,CAAC,MAAM,YAAY,IAAI,GAAG;AAAA,MAAG;AAAA,IACjC,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,IAAI,cAAc,KAAK,KAAK,UAAU,MAAM;AAAA,MAC1C,IAAI,OAAO;AAAA,MACX;AAAA,IACF;AAAA,IACA,IAAI,eAAc,KAAK,MAAM,cAAc,MAAM,GAAG,KAAK,MAAM,QAAQ,OAAO;AAAA,MAC5E,IAAI,OAAO,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAKT,IAAM,eAAuC,CAAC,YAAY,aAAa,YAAY;AAGnF,IAAM,2BAAmD;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AACF;AAEA,SAAS,eAAe,CAAC,QAOJ;AAAA,EACnB,QAAQ,SAAS,OAAO,QAAQ,MAAM,cAAc,4BAA4B;AAAA,EAChF,MAAM,WAAW,KAAK;AAAA,EACtB,IAAI,aAAa,aAAa,aAAa,WAAW,aAAa,QAAQ;AAAA,IACzE,MAAM,iBAAgB;AAAA,MACpB,SAAS,uBAAuB,MAAM,cAAc;AAAA,MACpD,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,kBAAkB,SAAS;AAAA,IAChE,CAAC;AAAA,EACH;AAAA,EACA,IAAI,CAAC,aAAa,SAAS,MAAM;AAAA,IAAG,OAAO;AAAA,EAC3C,MAAM,WAAY,YAA6C,2BAA2B;AAAA,EAC1F,IAAI,aAAa,UAAU,CAAC,QAAQ,aAAa,aAAa;AAAA,IAG5D,IAAI,aAAa,aAAa,cAAc;AAAA,MAC1C,MAAM,uBAAsB;AAAA,QAC1B,SAAS,QAAQ;AAAA,QACjB,SAAS;AAAA,QACT,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AASF,SAAS,kBAAkB,CAAC,QASjC;AAAA,EACA,QAAQ,MAAM,OAAO,QAAQ,SAAS;AAAA,EACtC,WAAW,EAAE,QAAQ,MAAM,MAAM,CAAC;AAAA,EAClC,MAAM,YAAY,yBAAyB,EAAE,MAAM,OAAO,QAAQ,KAAK,QAAQ,SAAS,KAAK,QAAQ,CAAC;AAAA,EACtG,MAAM,WAAW,yBAAyB,EAAE,OAAO,MAAM,aAAa,MAAM,CAAC;AAAA,EAC7E,MAAM,eACJ,KAAK,WAAW,YACZ,OACA,cAAc,EAAE,OAAO,QAAQ,KAAK,QAAQ,YAAY,cAAc,QAAQ,aAAa,KAAK,CAAC;AAAA,EACvG,MAAM,eAAgC,iBAAiB,OAAO,OAAO,CAAC,GAAG,YAAY;AAAA,EACrF,IAAI,cAAc,QAAQ,iBAAiB,MAAM;AAAA,IAC/C,WAAW,QAAQ,UAAU;AAAA,MAAW,aAAa,KAAK,KAAK,IAAI;AAAA,IACnE,IAAI,UAAU,OAAO,SAAS;AAAA,MAAG,aAAa,KAAK,QAAQ;AAAA,EAC7D;AAAA,EACA,IAAI,aAAa,QAAQ,iBAAiB,MAAM;AAAA,IAC9C,WAAW,QAAQ;AAAA,MAAU,aAAa,KAAK,IAAI;AAAA,EACrD;AAAA,EACA,OAAO,EAAE,WAAW,cAAc,SAAS;AAAA;AAWtC,SAAS,UAAU,CAAC,QAQb;AAAA,EACZ,QAAQ,MAAM,SAAS,WAAW;AAAA,EAClC,MAAM,QAAQ,aAAa,EAAE,MAAM,OAAO,OAAO,MAAM,CAAC;AAAA,EACxD,MAAM,OAAO,OAAO,QAAQ,CAAC;AAAA,EAC7B,WAAW,EAAE,QAAQ,MAAM,MAAM,CAAC;AAAA,EAIlC,MAAM,cAAc,WAAW,eAAe,WAAW,aAAa,WAAW;AAAA,EAGjF,MAAM,kBAAkB,yBAAyB,SAAS,MAAM;AAAA,EAChE,MAAM,YAAY,kBACd,yBAAyB,EAAE,MAAM,OAAO,QAAQ,KAAK,QAAQ,SAAS,KAAK,QAAQ,CAAC,IACpF;AAAA,EACJ,IAAI,CAAC,mBAAmB,CAAC,eAAe,eAAc,KAAK,MAAM,GAAG;AAAA,IAClE,WAAW,OAAO,OAAO,KAAK,KAAK,MAAM,GAAG;AAAA,MAC1C,IAAI,KAAK,OAAO,SAAS,aAAa,KAAK,OAAO,SAAS;AAAA,QAAO;AAAA,MAClE,IAAI,QAAQ,YAAY,MAAM,eAAe,IAAI,GAAG,GAAG;AAAA,QACrD,MAAM,iBAAgB;AAAA,UACpB,SAAS,UAAU,UAAU,MAAM,cAAc;AAAA,UACjD,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,OAAO,IAAI;AAAA,QAChD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,mBAAmB,gBAAgB;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,cAAc;AAAA,IAC5B,yBAAyB,OAAO;AAAA,EAClC,CAAC;AAAA,EAID,IAAI,KAAK,WAAW,aAAa,KAAK,SAAS,WAAW;AAAA,IACxD,MAAM,iBAAgB;AAAA,MACpB,SAAS,qCAAqC,MAAM,cAAc;AAAA,MAClE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,IACpC,CAAC;AAAA,EACH;AAAA,EACA,MAAM,oBAAoB,yBAAyB,EAAE,OAAO,MAAM,YAAY,CAAC;AAAA,EAC/E,MAAM,eAAe,cACjB,OACA,KAAK,WAAW,YACd,cAAc,EAAE,OAAO,QAAQ,KAAK,QAAQ,YAAY,cAAc,QAAQ,sBAAsB,KAAK,CAAC,IAC1G,KAAK,SAAS,YACZ,YAAY,EAAE,OAAO,MAAM,KAAK,KAAK,CAAC,IACtC;AAAA,EACR,IAAI,iBAAkC,iBAAiB,OAAO,OAAO,CAAC,GAAG,YAAY;AAAA,EACrF,IAAI,eAAgC,iBAAiB,OAAO,OAAO,CAAC,GAAG,YAAY;AAAA,EACnF,IAAI,cAAc,QAAQ,iBAAiB,MAAM;AAAA,IAC/C,WAAW,QAAQ,UAAU;AAAA,MAAW,aAAa,KAAK,KAAK,IAAI;AAAA,IACnE,IAAI,UAAU,OAAO,SAAS;AAAA,MAAG,aAAa,KAAK,QAAQ;AAAA,EAC7D;AAAA,EACA,IAAI,sBAAsB,QAAQ,iBAAiB,MAAM;AAAA,IACvD,WAAW,QAAQ;AAAA,MAAmB,aAAa,KAAK,IAAI;AAAA,EAC9D;AAAA,EACA,IAAI,cAAc,QAAQ,mBAAmB,MAAM;AAAA,IACjD,WAAW,QAAQ,qBAAqB,EAAE,MAAM,OAAO,WAAW,UAAU,CAAC,GAAG;AAAA,MAC9E,IAAI,CAAC,eAAe,SAAS,IAAI;AAAA,QAAG,eAAe,KAAK,IAAI;AAAA,IAC9D;AAAA,EACF;AAAA,EAGA,IAAI,KAAK,aAAa,aAAa,mBAAmB,SAAS,WAAW,cAAc,WAAW,cAAc;AAAA,IAC/G,WAAW,SAAS,kBAAkB,EAAE,OAAO,UAAU,KAAK,SAAS,CAAC,GAAG;AAAA,MACzE,IAAI,CAAC,eAAe,SAAS,MAAM,IAAI;AAAA,QAAG,eAAe,KAAK,MAAM,IAAI;AAAA,IAC1E;AAAA,IAOA,WAAW,QAAQ,oBAAoB,EAAE,OAAO,SAAS,KAAK,QAAQ,CAAC,GAAG;AAAA,MACxE,IAAI,CAAC,eAAe,SAAS,IAAI;AAAA,QAAG,eAAe,KAAK,IAAI;AAAA,IAC9D;AAAA,EACF;AAAA,EAGA,IAAI,sBAAsB,QAAQ,mBAAmB,QAAQ,MAAM,aAAa,MAAM;AAAA,IACpF,WAAW,QAAQ,mBAAmB;AAAA,MACpC,WAAW,QAAQ,MAAM,SAAS,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG;AAAA,QACxD,IAAI,CAAC,eAAe,SAAS,IAAI;AAAA,UAAG,eAAe,KAAK,IAAI;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,KAAK,WAAW,aAAa,cAAc,OAAQ,KAAK;AAAA,EAC1E,MAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,aAAa,KAAK,SAAS;AAAA,IAC3B,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB;AAAA,IACA,eAAe;AAAA,IACf,eAAe;AAAA,IACf,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EAEA,MAAM,aAAa,qBAAqB,UAAU,cAAc;AAAA,EAEhE,QAAQ;AAAA,SACD;AAAA,SACA,aAAa;AAAA,MAChB,MAAM,SAAS,YAAY,EAAE,SAAS,MAAM,OAAO,QAAQ,cAAc,cAAc,KAAK,CAAC;AAAA,MAC7F,MAAM,QAAQ,eAAe;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,WACI,WAAW,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC;AAAA,WAC9C,aAAa,EAAE,WAAW,UAA+B,IAAI,CAAC;AAAA,QAClE,eAAe,OAAO;AAAA,MACxB,CAAC;AAAA,MACD,OAAO;AAAA,WACF;AAAA,QACH,WAAW,WAAW,OAAO,MAAM,YAAY,KAAK,MAAM,WAAW,SAAS,OAAO;AAAA,QACrF,aAAa,MAAM;AAAA,QACnB,UAAU,MAAM;AAAA,MAClB;AAAA,IACF;AAAA,SAEK,cAAc;AAAA,MACjB,MAAM,SAAS,YAAY,EAAE,SAAS,MAAM,OAAO,QAAQ,cAAc,cAAc,KAAK,CAAC;AAAA,MAC7F,MAAM,QAAQ,oBAAoB;AAAA,QAChC;AAAA,QACA,OAAO,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC;AAAA,MAClE,CAAC;AAAA,MACD,kBAAkB,EAAE,OAAO,OAAO,OAAO,CAAC;AAAA,MAC1C,MAAM,QAAQ,eAAe;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM,EAAE,MAAM;AAAA,QACd;AAAA,WACI,aAAa,EAAE,WAAW,UAA+B,IAAI,CAAC;AAAA,QAClE,eAAe;AAAA,MACjB,CAAC;AAAA,MACD,OAAO;AAAA,WACF;AAAA,QACH,WAAW,WAAW,OAAO,MAAM,YAAY,KAAK,MAAM,WAAW,SAAS,OAAO;AAAA,MACvF;AAAA,IACF;AAAA,SAEK,SAAS;AAAA,MACZ,MAAM,QACJ,KAAK,UAAU,YACX,YACA,aAAa,EAAE,SAAS,MAAM,OAAO,OAAO,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC,EAAE,CAAC;AAAA,MAK9G,MAAM,YACJ,KAAK,SAAS,YAAY,YAAY,sBAAqB,EAAE,OAAO,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,MACtG,MAAM,YACJ,KAAK,SAAS,YAAY,YAAY,sBAAqB,EAAE,OAAO,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,MACtG,MAAM,aACJ,KAAK,YAAY,YAAY,YAAY,eAAe,EAAE,OAAO,SAAS,KAAK,SAAS,QAAQ,CAAC;AAAA,MACnG,MAAM,UAAU,cAAc,aAAa,cAAc;AAAA,MACzD,MAAM,eAAe,CAAC,iBAAqD;AAAA,QACzE,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,QAC/B,SAAS,kBAAkB,EAAE,OAAO,gBAAgB,YAAY,CAAC;AAAA,WAC7D,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,WACnC,eAAe,aAAa,WAAW,WAAW,IAAI,CAAC,IAAI,EAAE,SAAS,WAAW;AAAA,WACjF,cAAc,YAAY,CAAC,IAAI,EAAE,OAAO,UAAU;AAAA,WAClD,cAAc,YAAY,CAAC,IAAI,EAAE,QAAQ,UAAU;AAAA,MACzD;AAAA,MACA,IAAI,KAAK,WAAW,WAAW;AAAA,QAG7B,MAAM,OAAO,cAAc,EAAE,OAAO,KAAK,QAAQ,MAAM,UAAU,MAAM,CAAC;AAAA,QACxE,YAAY,MAAM,SAAS,OAAO,QAAQ,IAAI,GAAG;AAAA,UAC/C,IAAI,SAAS,aAAa,SAAS;AAAA,YAAO;AAAA,UAC1C,IAAI,SAAS,MAAM;AAAA,YACjB,MAAM,iBAAgB;AAAA,cACpB,SAAS,UAAU,iCAAiC,MAAM;AAAA,cAC1D,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK;AAAA,YACzC,CAAC;AAAA,UACH;AAAA,UACA,IAAI,SAAS;AAAA,YAAQ,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,eAAe,CAAC;AAAA,QACnF;AAAA,QACA,MAAM,aAAmC,CAAC;AAAA,QAC1C,MAAM,aAA0B,CAAC;AAAA,QACjC,IAAI,KAAK,SAAS,MAAM;AAAA,UACtB,WAAW,KAAK,EAAE,KAAK,UAAU,OAAO,MAAM,OAAO,OAAO,CAAC;AAAA,UAC7D,WAAW,KAAK,EAAE,KAAK,EAAE,IAAI,WAAW,GAAG,OAAO,OAAO,CAAC;AAAA,QAC5D;AAAA,QACA,WAAW,SAAS,MAAM,QAAQ;AAAA,UAChC,IAAI,KAAK,MAAM,UAAU;AAAA,YAAM;AAAA,UAC/B,WAAW,KAAK,EAAE,KAAK,UAAU,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK,CAAC;AAAA,UACvE,WAAW,KAAK,EAAE,KAAK,EAAE,IAAI,SAAS,QAAQ,EAAE,MAAM,MAAM,WAAW,EAAE,GAAG,OAAO,MAAM,KAAK,CAAC;AAAA,QACjG;AAAA,QACA,IAAI,WAAW,WAAW,GAAG;AAAA,UAC3B,MAAM,iBAAgB;AAAA,YACpB,SAAS,0BAA0B,MAAM;AAAA,YACzC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,UAC5B,CAAC;AAAA,QACH;AAAA,QACA,IAAI,SAAS;AAAA,UAIX,MAAM,aAAa,WAAW,OAAO,CAAC,UAAU,MAAM,UAAU,IAAI,EAAE,IAAI,CAAC,UAAU,MAAM,KAAe;AAAA,UAC1G,MAAM,cAAc,WAAW,SAAS,IAAI,aAAa,MAAM,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,UACnG,OAAO;AAAA,eACF;AAAA,YACH,eAAe,EAAE,YAAY,gBAAgB,MAAM;AAAA,YACnD,WAAW;AAAA,cACT,MAAM;AAAA,cACN,OAAO,EAAE,MAAM,QAAQ;AAAA,cACvB,SAAS,CAAC;AAAA,cACV,YAAY;AAAA,cACZ,YAAY,aAAa,WAAW;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAAA,QACA,OAAO;AAAA,aACF;AAAA,UACH,eAAe,EAAE,YAAY,gBAAgB,MAAM;AAAA,UACnD,WAAW;AAAA,YACT,MAAM;AAAA,YACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,YAC/B,SAAS,CAAC;AAAA,YACV,YAAY;AAAA,eACR,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,SAAS;AAAA,QACX,OAAO;AAAA,aACF;AAAA,UACH,YAAY;AAAA,UACZ,WAAW;AAAA,YACT,MAAM;AAAA,YACN,OAAO,EAAE,MAAM,QAAQ;AAAA,YACvB,SAAS,CAAC;AAAA,YACV,YAAY,EAAE,MAAM,YAAY,OAAO,YAAY;AAAA,YACnD,YAAY,aAAa,MAAM,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA,UACtE;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,WACF;AAAA,QACH,YAAY;AAAA,QACZ,WAAW;AAAA,UACT,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,UAC/B,SAAS,CAAC;AAAA,UACV,YAAY,EAAE,MAAM,YAAY,OAAO,YAAY;AAAA,aAC/C,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,SAEK,aAAa;AAAA,MAChB,QAAQ,MAAM,YAAY,eAAe,oBAAoB,EAAE,SAAS,OAAO,MAAM,OAAO,CAAC;AAAA,MAC7F,MAAM,QACJ,KAAK,UAAU,YACX,YACA,aAAa,EAAE,SAAS,MAAM,OAAO,OAAO,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC,EAAE,CAAC;AAAA,MAC9G,MAAM,UACJ,KAAK,YAAY,YAAY,YAAY,eAAe,EAAE,OAAO,SAAS,KAAK,SAAS,QAAQ,CAAC;AAAA,MACnG,MAAM,OAAO,KAAK,SAAS,YAAY,YAAY,sBAAqB,EAAE,OAAO,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,MACjH,MAAM,OAAO,KAAK,SAAS,YAAY,YAAY,sBAAqB,EAAE,OAAO,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,MACjH,MAAM,UAAU,YAAY,aAAa,SAAS,aAAa,SAAS;AAAA,MACxE,IAAI,CAAC,SAAS;AAAA,QACZ,OAAO;AAAA,aACF;AAAA,UACH,eAAe;AAAA,UACf,WAAW;AAAA,YACT,MAAM;AAAA,YACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,YAC/B,SAAS,CAAC;AAAA,YACV,YAAY;AAAA,eACR,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,MAIA,MAAM,cAAc,WAAW,SAAS,IAAI,aAAa,MAAM,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,MACnG,MAAM,QAAyB;AAAA,QAC7B,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,QAC/B,SAAS,kBAAkB,EAAE,OAAO,gBAAgB,YAAY,CAAC;AAAA,WAC7D,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,WACnC,YAAY,aAAa,QAAQ,WAAW,IAAI,CAAC,IAAI,EAAE,QAAQ;AAAA,WAC/D,SAAS,YAAY,CAAC,IAAI,EAAE,OAAO,KAAK;AAAA,WACxC,SAAS,YAAY,CAAC,IAAI,EAAE,QAAQ,KAAK;AAAA,MAC/C;AAAA,MACA,OAAO;AAAA,WACF;AAAA,QACH,eAAe;AAAA,QACf,WAAW;AAAA,UACT,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,QAAQ;AAAA,UACvB,SAAS,CAAC;AAAA,UACV,YAAY;AAAA,UACZ,YAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA,SAEK,WAAW;AAAA,MACd,MAAM,QAAQ,KAAK;AAAA,MACnB,MAAM,SAAS,OAAO,UAAU,WAAW,CAAC,KAAK,IAAI;AAAA,MACrD,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,KAAK,OAAO,KAAK,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AAAA,QACpG,MAAM,iBAAgB;AAAA,UACpB,SAAS,qBAAqB,MAAM;AAAA,UACpC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,MAAM,WAAY,OAAoB,IAAI,CAAC,SAAS;AAAA,QAClD,MAAM,QAAQ,aAAa,EAAE,OAAO,OAAO,MAAM,SAAS,KAAK,CAAC;AAAA,QAChE,IAAI,MAAM,UAAU,MAAM,eAAe,QAAQ;AAAA,UAC/C,MAAM,iBAAgB;AAAA,YACpB,SAAS,2BAA2B,MAAM,QAAQ,MAAM,SAAS,MAAM,SAAS,SAAS;AAAA,YACzF,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,UAC/C,CAAC;AAAA,QACH;AAAA,QACA,OAAO;AAAA,OACR;AAAA,MACD,MAAM,UAAU,IAAI,IAAI,SAAS,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA,MAC3D,QAAQ,MAAM,eAAe,oBAAoB,EAAE,SAAS,OAAO,MAAM,OAAO,CAAC;AAAA,MACjF,MAAM,QACJ,KAAK,UAAU,YACX,YACA,aAAa,EAAE,SAAS,MAAM,OAAO,OAAO,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC,EAAE,CAAC;AAAA,MAC9G,MAAM,MAAoB,EAAE,SAAS,MAAM,UAAU,EAAE,GAAG,EAAE,EAAE;AAAA,MAC9D,MAAM,SACJ,KAAK,WAAW,YACZ,YACA,cAAc,EAAE,KAAK,OAAO,SAAS,QAAQ,cAAc,EAAE,OAAO,KAAK,QAAQ,MAAM,UAAU,MAAM,CAAC,EAAE,CAAC;AAAA,MACjH,MAAM,UACJ,KAAK,YAAY,YACb,YACA,oBAAoB,EAAE,SAAS,OAAO,SAAS,SAAS,KAAK,QAAQ,CAAC;AAAA,MAC5E,MAAM,OAAO,KAAK,SAAS,YAAY,YAAY,sBAAqB,EAAE,OAAO,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,MACjH,MAAM,OAAO,KAAK,SAAS,YAAY,YAAY,sBAAqB,EAAE,OAAO,KAAK,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,MACjH,MAAM,YAAY,SAAS,IAAI,CAAC,UAAU,UAAU,EAAE,MAAM,CAAC,CAAC;AAAA,MAC9D,OAAO;AAAA,WACF;AAAA,QACH,eAAe;AAAA,QACf,eAAe,SAAS,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,QACjD,WAAW;AAAA,UACT,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,UAC/B,SAAS;AAAA,aACL,WAAW,WAAW,IAAI,CAAC,IAAI,EAAE,YAAY,WAAW;AAAA,aACxD,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM;AAAA,UACvC,SAAS;AAAA,aACL,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,aACrC,YAAY,aAAa,QAAQ,WAAW,IAAI,CAAC,IAAI,EAAE,QAAQ;AAAA,aAC/D,SAAS,YAAY,CAAC,IAAI,EAAE,OAAO,KAAK;AAAA,aACxC,SAAS,YAAY,CAAC,IAAI,EAAE,QAAQ,KAAK;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,SAEK,UAAU;AAAA,MAIb,IAAI;AAAA,MACJ,IAAI,KAAK,eAAe,WAAW;AAAA,QACjC,MAAM,OAAO,cAAc,EAAE,OAAO,KAAK,YAAY,MAAM,cAAc,MAAM,CAAC;AAAA,QAChF,WAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,UACnC,IAAI,QAAQ,YAAY,QAAQ,YAAY,QAAQ,WAAW,QAAQ,UAAU;AAAA,YAC/E,MAAM,iBAAgB;AAAA,cACpB,SAAS,2BAA2B,WAAW,MAAM;AAAA,cACrD,MAAM,EAAE,OAAO,MAAM,MAAM,IAAI;AAAA,YACjC,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,IAAI,KAAK,WAAW,aAAa,KAAK,WAAW,UAAU;AAAA,UACzD,MAAM,iBAAgB;AAAA,YACpB,SAAS,wBAAwB,MAAM;AAAA,YACvC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,UAC5B,CAAC;AAAA,QACH;AAAA,QACA,MAAM,WAAW,sBAAsB;AAAA,UACrC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,QACd,CAAC;AAAA,QACD,IAAI,KAAK,WAAW,aAAa,KAAK,WAAW;AAAA,UAAW,MAAM,iBAAgB,EAAE,SAAS,6CAA6C,CAAC;AAAA,QAC3I,IAAI,KAAK,WAAW,UAAU;AAAA,UAC5B,IAAI,CAAC,QAAQ,aAAa;AAAA,YAAW,MAAM,uBAAsB,EAAE,SAAS,QAAQ,MAAM,SAAS,sCAAsC,MAAM,kDAAkD,CAAC;AAAA,UAClM,IAAI,SAAS,YAAY,aAAa,SAAS,eAAe;AAAA,YAAW,MAAM,iBAAgB,EAAE,SAAS,gDAAgD,CAAC;AAAA,UAC3J,MAAM,UAAU,cAAc,EAAE,OAAO,KAAK,QAAQ,MAAM,qBAAqB,MAAM,CAAC;AAAA,UACtF,MAAM,SAAS,0BAA0B,EAAE,OAAO,QAAQ,OAAO,KAAK,OAAO,GAAG,eAAe,IAAI,IAAI,SAAS,WAAW,CAAC,CAAC,GAAG,eAAe,KAAK,CAAC;AAAA,UACrJ,MAAM,UAAU,OAAO,YAAY,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,MAAM,MAAM,UAAU,CAAC,CAAC;AAAA,UAC9F,iBAAiB;AAAA,YACf,SAAS,SAAS,WAAW,CAAC;AAAA,eAC1B,SAAS,eAAe,YAAY,CAAC,IAAI,EAAE,YAAY,SAAS,WAAW;AAAA,eAC3E,SAAS,kBAAkB,YAAY,CAAC,IAAI,EAAE,eAAe,SAAS,cAAc;AAAA,YACxF,QAAQ,OAAO,YAAY,OAAO,IAAI,CAAC,UAAU;AAAA,cAC/C,MAAM,WAAW,QAAQ,MAAM;AAAA,cAC/B,IAAI,CAAC,cAAc,QAAQ;AAAA,gBAAG,MAAM,iBAAgB,EAAE,SAAS,gEAAgE,CAAC;AAAA,cAChI,OAAO,CAAC,MAAM,YAAY,mBAAmB,EAAE,UAAU,QAAQ,CAAC,CAAC;AAAA,aACpE,CAAC;AAAA,UACJ;AAAA,QACF,EAAO;AAAA,2BAAiB;AAAA,YACtB,WAAW;AAAA,eACP,SAAS,YAAY,YAAY,CAAC,IAAI,EAAE,SAAS,SAAS,QAAQ;AAAA,eAClE,SAAS,eAAe,YAAY,CAAC,IAAI,EAAE,YAAY,SAAS,WAAW;AAAA,eAC3E,SAAS,kBAAkB,YAAY,CAAC,IAAI,EAAE,eAAe,SAAS,cAAc;AAAA,UAC1F;AAAA,MACF;AAAA,MACA,MAAM,MAAM,iBAAiB,EAAE,SAAS,OAAO,MAAM,KAAK,KAAK,CAAC;AAAA,MAChE,MAAM,UAAU,eAAe,EAAE,OAAO,QAAQ,IAAI,OAAO,CAAC;AAAA,MAC5D,IAAI,QAAQ,WAAW,GAAG;AAAA,QACxB,MAAM,iBAAgB;AAAA,UACpB,SAAS,oBAAoB,MAAM;AAAA,UACnC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,OAAO;AAAA,WACF;AAAA,QACH,cAAc,IAAI;AAAA,QAClB,WAAW;AAAA,UACT,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,UAC/B;AAAA,UACA,MAAM,CAAC,QAAQ,IAAI,CAAC,WAAW,IAAI,OAAO,OAAO,CAAC;AAAA,aAC9C,mBAAmB,YAAY,CAAC,IAAI,EAAE,YAAY,eAAe;AAAA,UACrE,WAAW,iBAAiB,EAAE,OAAO,eAAe,CAAC;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AAAA,SAEK;AAAA,SACA,uBAAuB;AAAA,MAC1B,IAAI,WAAW,yBAAyB,CAAC,QAAQ,aAAa,qBAAqB;AAAA,QACjF,MAAM,uBAAsB;AAAA,UAC1B,SAAS,QAAQ;AAAA,UACjB,SAAS;AAAA,UACT,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,MAAM,SAAS,kBAAkB,EAAE,SAAS,OAAO,MAAM,KAAK,KAAK,CAAC;AAAA,MAIpE,IAAI;AAAA,MACJ,IAAI,KAAK,mBAAmB,MAAM;AAAA,QAChC,eAAe,EAAE,WAAW,KAAK;AAAA,MACnC,EAAO,SAAI,KAAK,mBAAmB,aAAa,KAAK,mBAAmB,OAAO;AAAA,QAC7E,MAAM,OAAO,cAAc,EAAE,OAAO,KAAK,gBAAgB,MAAM,kBAAkB,MAAM,CAAC;AAAA,QACxF,WAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,UACnC,IAAI,QAAQ,YAAY,QAAQ,SAAS;AAAA,YACvC,MAAM,iBAAgB;AAAA,cACpB,SAAS,+BAA+B,WAAW,MAAM,cAAc;AAAA,cACvE,MAAM,EAAE,OAAO,MAAM,MAAM,IAAI;AAAA,YACjC,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,MAAM,WAAW,sBAAsB;AAAA,UACrC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,QACd,CAAC;AAAA,QACD,eAAe;AAAA,UACb,WAAW;AAAA,aACP,SAAS,YAAY,YAAY,CAAC,IAAI,EAAE,SAAS,SAAS,QAAQ;AAAA,aAClE,SAAS,eAAe,YAAY,CAAC,IAAI,EAAE,YAAY,SAAS,WAAW;AAAA,aAC3E,SAAS,kBAAkB,YAAY,CAAC,IAAI,EAAE,eAAe,SAAS,cAAc;AAAA,QAC1F;AAAA,MACF;AAAA,MACA,MAAM,aAAa,OAAO,IACxB,CAAC,WAAyB;AAAA,QACxB,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,QAC/B,SAAS,MAAM;AAAA,QACf,MAAM,MAAM;AAAA,WACR,iBAAiB,YAAY,CAAC,IAAI,EAAE,YAAY,aAAa;AAAA,WAC7D,WAAW,wBAAwB,EAAE,WAAW,iBAAiB,EAAE,OAAO,eAAe,CAAC,EAAE,IAAI,CAAC;AAAA,MACvG,EACF;AAAA,MACA,OAAO;AAAA,WACF;AAAA,QACH,WAAW,WAAW;AAAA,WAGlB,WAAW,SAAS,IAAI,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,SAEK,cAAc;AAAA,MAUjB,WAAW,QAAQ,CAAC,iBAAiB,wBAAwB,GAAY;AAAA,QACvE,IAAI,KAAK,UAAU,aAAa,OAAO,KAAK,UAAU,WAAW;AAAA,UAC/D,MAAM,iBAAgB;AAAA,YACpB,SAAS,GAAG,WAAW,MAAM,kDAAkD,OAAO,KAAK,KAAK;AAAA,YAChG,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,KAAK;AAAA,UAC5C,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,kCAAkC;AAAA,QAChC;AAAA,QACA;AAAA,QACA,wBAAwB,KAAK,2BAA2B;AAAA,MAC1D,CAAC;AAAA,MACD,MAAM,iBAAiB,4BAA4B,EAAE,OAAO,QAAQ,KAAK,eAAe,CAAC;AAAA,MACzF,MAAM,gBACJ,eAAe,SAAS,YAAY,eAAe,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU,IAAI,CAAC;AAAA,MAChG,MAAM,mBAAmB,eAAc,KAAK,MAAM,IAAI,KAAK,SAAS;AAAA,MACpE,MAAM,eAAe,0BAA0B;AAAA,QAC7C;AAAA,QACA,QAAQ,qBAAqB,YAAY,KAAK,SAAS,OAAO,KAAK,gBAAgB;AAAA,QACnF,eAAe,IAAI,IAAI,aAAa;AAAA,QACpC,eAAe,KAAK,kBAAkB;AAAA,MACxC,CAAC;AAAA,MAMD,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI,eAAe,SAAS,gBAAgB,KAAK,kBAAkB,WAAW;AAAA,QAC5E,MAAM,UAAU,sBAAsB;AAAA,UACpC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QACE,eAAe,SAAS,eACpB,EAAE,YAAY,eAAe,WAAW,IACxC,eAAe,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,UACrD,OAAO,KAAK;AAAA,QACd,CAAC;AAAA,QACD,kBAAkB,QAAQ;AAAA,QAC1B,iBAAiB,QAAQ;AAAA,MAC3B;AAAA,MACA,IAAI,eAA6D,CAAC;AAAA,MAClE,MAAM,eAAe,kBAAkB;AAAA,QACrC;AAAA,QACA;AAAA,QACA,MAAM,KAAK;AAAA,QACX;AAAA,QACA,aAAa,CAAC,SAAS;AAAA,UACrB,eAAe;AAAA;AAAA,MAEnB,CAAC;AAAA,MACD,4BAA4B,EAAE,OAAO,UAAU,cAAc,eAAe,aAAa,CAAC;AAAA,MAK1F,IAAI,cAAc,SAAS,GAAG;AAAA,QAC5B,8BAA8B,EAAE,OAAO,UAAU,cAAc,cAAc,CAAC;AAAA,MAChF;AAAA,MAIA,kCAAkC,EAAE,SAAS,OAAO,UAAU,cAAc,cAAc,CAAC;AAAA,MAM3F,gCAAgC;AAAA,QAC9B;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,gBAAgB,aAAa;AAAA,QAC7B,UAAU;AAAA,MACZ,CAAC;AAAA,MACD,MAAM,aAA+B;AAAA,QACnC,SAAS;AAAA,WACL,oBAAoB,YAAY,CAAC,IAAI,EAAE,YAAY,gBAAgB;AAAA,WACnE,mBAAmB,YAAY,CAAC,IAAI,EAAE,eAAe,eAAe;AAAA,QACxE,QAAQ,OAAO,YACb,aAAa,IAAI,CAAC,UAAU;AAAA,UAC1B,IAAI,qBAAqB,aAAa,CAAC,OAAO,OAAO,kBAAkB,MAAM,IAAI;AAAA,YAAG,OAAO,CAAC,MAAM,YAAY,YAAY,EAAE,QAAQ,MAAM,WAAW,CAAC,CAAC;AAAA,UACvJ,MAAM,WAAW,iBAAiB,MAAM;AAAA,UACxC,IAAI,CAAC,cAAc,QAAQ;AAAA,YAAG,MAAM,iBAAgB,EAAE,SAAS,gEAAgE,CAAC;AAAA,UAChI,OAAO,CAAC,MAAM,YAAY,mBAAmB,EAAE,UAAU,SAAS,OAAO,YAAY,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AAAA,SACrJ,CACH;AAAA,MACF;AAAA,MACA,MAAM,mBAAmB,aAAa,IACpC,CAAC,WAAyB;AAAA,QACxB,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,QAC/B,SAAS,MAAM;AAAA,QACf,MAAM,MAAM;AAAA,QACZ;AAAA,MACF,EACF;AAAA,MACA,OAAO;AAAA,WACF;AAAA,QACH,WAAW,iBAAiB;AAAA,QAC5B,gBAAgB,aAAa;AAAA,WAGzB,iBAAiB,SAAS,IAAI,EAAE,OAAO,iBAAiB,IAAI,CAAC;AAAA,MACnE;AAAA,IACF;AAAA,SAEK;AAAA,SACA;AAAA,SACA,uBAAuB;AAAA,MAC1B,MAAM,WAAW,WAAW;AAAA,MAM5B,IAAI,WAAW,yBAAyB,CAAC,QAAQ,aAAa,WAAW;AAAA,QACvE,MAAM,uBAAsB;AAAA,UAC1B,SAAS,QAAQ;AAAA,UACjB,SAAS;AAAA,UACT,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,IAAI,KAAK,kBAAkB,aAAa,OAAO,KAAK,kBAAkB,WAAW;AAAA,QAC/E,MAAM,iBAAgB;AAAA,UACpB,SAAS,oBAAoB,MAAM,cAAc,mCAAmC,OAAO,KAAK,aAAa;AAAA,UAC7G,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,QACpC,CAAC;AAAA,MACH;AAAA,MACA,MAAM,MAAM,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC;AAAA,MACrE,MAAM,QAAQ,WAAW,oBAAoB,EAAE,OAAO,OAAO,IAAI,CAAC,IAAI;AAAA,MACtE,IAAI;AAAA,QAAU,kBAAkB,EAAE,OAAO,OAAO,OAAO,CAAC;AAAA,MACxD,MAAM,WAAW,aAAa,EAAE,SAAS,MAAM,OAAO,MAAM,CAAC;AAAA,MAC7D,OAAO;AAAA,WACF;AAAA,QAIH,cAAc,WAAW,mBAAmB,EAAE,OAAO,OAAO,MAAM,KAAK,KAAK,CAAC,IAAI;AAAA,QACjF,WAAW;AAAA,UACT,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,UAC/B,KAAK,iBAAiB;AAAA,YACpB;AAAA,YACA;AAAA,YACA,MAAM,KAAK;AAAA,eACP,KAAK,kBAAkB,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,UAC/D,CAAC;AAAA,aACG,aAAa,YAAY,CAAC,IAAI,EAAE,OAAO,SAAS;AAAA,aAChD,WAAW,eAAe,CAAC,IAAI,EAAE,WAAW,iBAAiB,EAAE,OAAO,eAAe,CAAC,EAAE;AAAA,QAC9F;AAAA,MACF;AAAA,IACF;AAAA,SAEK,UAAU;AAAA,MAGb,IAAI;AAAA,MACJ,IAAI,KAAK,eAAe,WAAW;AAAA,QACjC,MAAM,OAAO,cAAc,EAAE,OAAO,KAAK,YAAY,MAAM,cAAc,MAAM,CAAC;AAAA,QAChF,IACE,OAAO,KAAK,eAAe,YAC3B,KAAK,WAAW,WAAW,KAC3B,OAAO,KAAK,IAAI,EAAE,WAAW,GAC7B;AAAA,UACA,MAAM,iBAAgB;AAAA,YACpB,SAAS,iBAAiB,MAAM;AAAA,YAChC,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,UAC5B,CAAC;AAAA,QACH;AAAA,QACA,IAAI,CAAC,QAAQ,aAAa,0BAA0B;AAAA,UAClD,MAAM,uBAAsB;AAAA,YAC1B,SAAS,QAAQ;AAAA,YACjB,SAAS;AAAA,YACT,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,QACA,mBAAmB,KAAK;AAAA,MAC1B;AAAA,MACA,MAAM,QAAQ,oBAAoB;AAAA,QAChC;AAAA,QACA,OAAO,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC;AAAA,MAClE,CAAC;AAAA,MACD,kBAAkB,EAAE,OAAO,OAAO,OAAO,CAAC;AAAA,MAC1C,MAAM,MAAM,iBAAiB,EAAE,SAAS,OAAO,MAAM,KAAK,OAAO,CAAC;AAAA,MAClE,MAAM,UAAU,eAAe,EAAE,OAAO,QAAQ,IAAI,OAAO,CAAC;AAAA,MAC5D,MAAM,eAAe,oBAAoB,EAAE,OAAO,MAAM,CAAC,EAAE;AAAA,MAM3D,WAAW,SAAS,cAAc;AAAA,QAChC,IAAI,EAAE,MAAM,cAAc,IAAI,SAAS;AAAA,UACrC,MAAM,IAAI,YAAU;AAAA,YAClB,MAAM;AAAA,YACN,SAAS,aAAa,MAAM,2DAA2D,MAAM;AAAA,YAC7F,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,MAAM,WAAW;AAAA,UACtD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAGA,MAAM,oBAAoB,IAAI,IAAI,aAAa,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA,MACzE,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,QAChD,IAAI,UAAU,aAAa,kBAAkB,IAAI,GAAG;AAAA,UAAG;AAAA,QACvD,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,aAAa,MAAM,sBAAsB;AAAA,UAClD,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,IAAI;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,MACA,MAAM,SAAS,iBAAiB,EAAE,SAAS,OAAO,MAAM,KAAK,OAAO,CAAC;AAAA,MAIrE,MAAM,KAAK,MAAM,WAAW,WAAW,IAAK,MAAM,WAAW,KAAmB;AAAA,MAChF,MAAM,gBACJ,QAAQ,eAAe,oBACvB,OAAO,cACN,GAAG,eAAe,SAAS,GAAG,eAAe,aAC9C,EAAE,GAAG,cAAc,UACf,GAAG,aACH;AAAA,MACN,OAAO;AAAA,WACF;AAAA,QAEH,cAAc,oBAAoB,EAAE,OAAO,OAAO,MAAM,KAAK,OAAO,CAAC;AAAA,QAGrE,kBAAkB,KAAK,MAAM;AAAA,QAC7B,WAAW;AAAA,UACT,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,UAC/B;AAAA,UACA,MAAM,CAAC,QAAQ,IAAI,CAAC,WAAW,IAAI,OAAO,OAAO,CAAC;AAAA,UAClD,YAAY;AAAA,YACV,SAAS,aAAa,IAAI,CAAC,UAAU,MAAM,UAAU;AAAA,eACjD,qBAAqB,YAAY,CAAC,IAAI,EAAE,YAAY,iBAAiB;AAAA,YACzE;AAAA,eACI,kBAAkB,YAAY,CAAC,IAAI,EAAE,oBAAoB,cAAc;AAAA,UAC7E;AAAA,UACA,WAAW,iBAAiB,EAAE,OAAO,eAAe,CAAC;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AAAA,SAEK;AAAA,SACA,cAAc;AAAA,MACjB,MAAM,WAAW,WAAW;AAAA,MAC5B,MAAM,MACJ,KAAK,UAAU,aAAa,CAAC,WACzB,YACA,cAAc,EAAE,OAAO,KAAK,OAAO,MAAM,SAAS,MAAM,CAAC;AAAA,MAC/D,MAAM,QAAQ,YAAY,QAAQ,YAAY,oBAAoB,EAAE,OAAO,OAAO,IAAI,CAAC,IAAI;AAAA,MAC3F,IAAI,YAAY,UAAU;AAAA,QAAW,kBAAkB,EAAE,OAAO,OAAO,OAAO,CAAC;AAAA,MAC/E,MAAM,WAAW,UAAU,YAAY,YAAY,aAAa,EAAE,SAAS,MAAM,OAAO,MAAM,CAAC;AAAA,MAC/F,OAAO;AAAA,WACF;AAAA,QACH,cAAc,WAAY,QAAoC;AAAA,QAC9D,WAAW;AAAA,UACT,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,MAAM,UAAU;AAAA,aAC3B,aAAa,YAAY,CAAC,IAAI,EAAE,OAAO,SAAS;AAAA,aAChD,WAAW,EAAE,WAAW,iBAAiB,EAAE,OAAO,eAAe,CAAC,EAAE,IAAI,CAAC;AAAA,QAC/E;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;AIzqJJ;;;ACDA,sBAAS;AAmFF,SAAS,uBAAuB,CAAC,QAG/B;AAAA,EACP,QAAQ,aAAa;AAAA,EACrB,MAAM,YAAY,OAAO,aAAa,CAAC;AAAA,EACvC,MAAM,OAAO,IAAI,IACf,UAAU,IAAI,CAAC,cAAc,CAAC,UAAU,MAAM,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC,CACtF;AAAA,EAEA,MAAM,WAAqB,CAAC;AAAA,EAC5B,WAAW,SAAS,UAAU;AAAA,IAC5B,MAAM,UAAU,KAAK,IAAI,MAAM,IAAI;AAAA,IACnC,IAAI,YAAY,WAAW;AAAA,MACzB,SAAS,KAAK,IAAI,MAAM,8DAA8D;AAAA,MACtF;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,YAAY,MAAM,SAAS;AAAA,MACrC,SAAS,KACP,IAAI,MAAM,oCAAoC,MAAM,iBAAiB,QAAQ,UAC/E;AAAA,IACF,EAAO,SAAI,QAAQ,gBAAgB,MAAM,aAAa;AAAA,MACpD,SAAS,KAAK,IAAI,MAAM,sCAAsC;AAAA,IAChE;AAAA,IACA,KAAK,OAAO,MAAM,IAAI;AAAA,EACxB;AAAA,EACA,WAAW,QAAQ,KAAK,KAAK,GAAG;AAAA,IAC9B,SAAS,KAAK,IAAI,2DAA2D;AAAA,EAC/E;AAAA,EAEA,IAAI,SAAS,SAAS,GAAG;AAAA,IACvB,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,sEAAiE,SAAS,KAAK,IAAI;AAAA,MAC5F,MAAM,EAAE,UAAU,SAAS;AAAA,IAC7B,CAAC;AAAA,EACH;AAAA;AAUK,SAAS,yBAAyB,CAAC,QAIU;AAAA,EAClD,QAAQ,WAAW,SAAS,aAAa;AAAA,EACzC,MAAM,MAAM,IAAI;AAAA,EAChB,MAAM,QAAQ,IAAI;AAAA,EAElB,WAAW,aAAa,WAAW;AAAA,IACjC,WAAW,YAAY,UAAU,KAAK,kBAAkB,CAAC,GAAG;AAAA,MAC1D,MAAM,WAAW,MAAM,IAAI,SAAS,IAAI;AAAA,MACxC,IAAI,aAAa,WAAW;AAAA,QAC1B,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,mBAAmB,SAAS,6BAA6B,kBAAkB,UAAU;AAAA,UAC9F,MAAM,EAAE,UAAU,SAAS,KAAK;AAAA,QAClC,CAAC;AAAA,MACH;AAAA,MACA,MAAM,IAAI,SAAS,MAAM,UAAU,IAAI;AAAA,MACvC,IAAI,IAAI,SAAS,MAAM,GAAG,QAAQ,SAAS,OAAO,YAAqB;AAAA,QACrE,MAAM,WAAW,SAAS,QAAQ;AAAA,UAChC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,UAAU;AAAA,QACrB,CAAC;AAAA,QACD,IAAI,WAAW,UAAU;AAAA,UACvB,MAAM,IAAI,YAAU;AAAA,YAClB,MAAM;AAAA,YACN,SAAS,IAAI,SAAS,YAAY,SAAS,UAAU,SAAS;AAAA,YAC9D,MAAM,EAAE,OAAO,OAAO,UAAU,SAAS,MAAM,WAAW,UAAU,KAAK;AAAA,UAC3E,CAAC;AAAA,QACH;AAAA,QACA,OAAO,EAAE,MAAM,YAAY,UAAU,SAAS,SAAS;AAAA,OACxD;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO,IAAI,SAAS,IAAI,OAAO;AAAA;AAc1B,SAAS,iBAAiB,CAAC,QAIP;AAAA,EACzB,QAAQ,WAAW,SAAS,aAAa;AAAA,EACzC,MAAM,QAAuB,CAAC;AAAA,EAC9B,WAAW,aAAa,WAAW;AAAA,IACjC,MAAM,YAAY,UAAU,SAAS;AAAA,IACrC,IAAI,cAAc;AAAA,MAAW;AAAA,IAC7B,MAAM,KAAK,GAAG,cACZ,UAAU;AAAA,MACR,SAAS,CAAC,eACR,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,WACb,WAAW,WAAW,YAAY,CAAC,IAAI,EAAE,QAAQ,WAAW,OAAO;AAAA,MACzE,CAAC;AAAA,MACH;AAAA,MACA;AAAA,MACA,SAAS,UAAU;AAAA,IACrB,CAAC,CACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;AC3NT,sBAAS;AAGF,SAAS,gBAAgB,CAAC,QAAqC;AAAA,EACpE,QAAQ,UAAU;AAAA,EAClB,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,QAAQ,OAAO;AAAA,SACR;AAAA,MACH,OAAO,KAAK;AAAA,SACT;AAAA,SACA;AAAA,MACH,OAAO,KAAK,MAAM,SAAS;AAAA,SACxB;AAAA,MACH,OAAO,KAAK,QAAQ,IAAI;AAAA;AAAA,MAExB;AAAA;AAAA,EAEJ,IAAI,iBAAiB;AAAA,IAAM,OAAO,KAAK,MAAM,QAAQ;AAAA,EACrD,IAAI,iBAAiB,YAAY;AAAA,IAC/B,IAAI,MAAM;AAAA,IACV,WAAW,QAAQ;AAAA,MAAO,OAAO,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,IAClE,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,OAAO,KAAK;AAAA;AAkBnB,SAAS,gBAAgB,CAAC,QAAuD;AAAA,EACtF,QAAQ,WAAW;AAAA,EACnB,MAAM,OAAiB,CAAC;AAAA,EACxB,WAAW,SAAS,QAAQ;AAAA,IAC1B,IAAI,UAAU,QAAQ,UAAU;AAAA,MAAW,OAAO;AAAA,IAClD,IAAI,OAAO,UAAU,YAAY,EAAE,iBAAiB,SAAS,EAAE,iBAAiB,aAAa;AAAA,MAC3F,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SACE;AAAA,QACF,MAAM,EAAE,UAAU,OAAO,UAAU,SAAS,KAAK,KAAK,EAAE;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,IACA,KAAK,KAAK,OAAO,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAAA,EAC/C;AAAA,EACA,OAAO,KAAK,UAAU,IAAI;AAAA;;;ACnD5B,IAAM,cAA6B,OAAO,oBAAoB;AAOvD,SAAS,iBAAiB,CAAC,QAKN;AAAA,EAC1B,QAAQ,MAAM,OAAO,OAAO,UAAU;AAAA,EACtC,OAAO,KAAK,OAAO,cAAc,EAAE,OAAO,OAAO,MAAM,EAAE;AAAA;AAIpD,SAAS,gBAAgB,CAAC,QAGxB;AAAA,EACP,MAAM,QAAS,OAAO,KAAoB;AAAA,EAC1C,IAAI,UAAU,aAAa,EAAE,MAAM,SAAS,OAAO;AAAA,IAAc;AAAA,EACjE,IAAI,OAAO,YAAY,MAAM,WAAW,MAAM;AAAA,IAAO,MAAM,MAAM;AAAA;;;ACiBnE,sBAAS;AAmBT,SAAS,aAAa,CAAC,QAA+D;AAAA,EACpF,QAAQ,MAAM,QAAQ;AAAA,EACtB,OAAO,KAAK,WAAW,IAAI,CAAC,UAAU,IAAI,MAAM,KAAK;AAAA;AAIvD,SAAS,YAAY,CAAC,QAA+D;AAAA,EACnF,QAAQ,MAAM,QAAQ;AAAA,EACtB,OAAO,KAAK,UAAU,IAAI,CAAC,UAAU,IAAI,MAAM,KAAK;AAAA;AAItD,SAAS,eAAe,CAAC,QAAqF;AAAA,EAC5G,QAAQ,MAAM,WAAW;AAAA,EACzB,MAAM,MAA+B,CAAC;AAAA,EACtC,KAAK,UAAU,QAAQ,CAAC,OAAO,UAAU;AAAA,IACvC,IAAI,MAAM,QAAQ,OAAO;AAAA,GAC1B;AAAA,EACD,OAAO;AAAA;AAIT,SAAS,gBAAgB,CAAC,QAAqF;AAAA,EAC7G,QAAQ,MAAM,WAAW;AAAA,EACzB,MAAM,MAA+B,CAAC;AAAA,EACtC,KAAK,WAAW,QAAQ,CAAC,OAAO,UAAU;AAAA,IACxC,IAAI,MAAM,QAAQ,OAAO;AAAA,GAC1B;AAAA,EACD,OAAO;AAAA;AAIT,SAAS,cAAc,CAAC,QAAsD;AAAA,EAC5E,QAAQ,SAAS;AAAA,EACjB,MAAM,MAA4B,CAAC;AAAA,EACnC,WAAW,SAAS,KAAK;AAAA,IAAW,IAAI,MAAM,QAAQ;AAAA,EACtD,OAAO;AAAA;AAST,SAAS,gBAAgB,CAAC,QAKE;AAAA,EAC1B,QAAQ,QAAQ,IAAI,MAAM,WAAW;AAAA,EACrC,MAAM,WAAW,OAAO,OAAO,CAAC,UAAU,MAAM,UAAU;AAAA,EAC1D,IAAI,SAAS,WAAW,GAAG;AAAA,IACzB,MAAM,iBAAgB;AAAA,MACpB,SAAS,WAAW,YAAY,GAAG,KAAK,SAAS,SAAS,GAAG,yCAAyC,UAAU,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,KAAK,IAAI;AAAA,MAC3J,MAAM,EAAE,UAAU,GAAG,MAAM,KAAK;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EACA,MAAM,MAA+B,CAAC;AAAA,EACtC,WAAW,SAAS;AAAA,IAAU,IAAI,MAAM,QAAQ;AAAA,EAChD,OAAO;AAAA;AAgDT,SAAS,gBAAe,CAAC,QAAwE;AAAA,EAC/F,OAAO,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC;AAAA;AAG9F,SAAS,QAAQ,CAAC,QAAwE;AAAA,EACxF,OAAO,IAAI,YAAU,EAAE,MAAM,kBAAkB,SAAS,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC;AAAA;AAG7F,SAAS,cAAa,CAAC,OAAkD;AAAA,EACvE,OACE,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,EAAE,iBAAiB,SACnB,EAAE,iBAAiB;AAAA;AAIvB,SAAS,cAAa,CAAC,OAAyB;AAAA,EAC9C,OACE,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,aACjB,OAAO,UAAU,YACjB,iBAAiB,QACjB,iBAAiB;AAAA;AAOd,SAAS,eAAe,CAAC,QAAsD;AAAA,EACpF,QAAQ,OAAO,SAAS;AAAA,EACxB,IAAI,CAAC,eAAc,IAAI;AAAA,IAAG,OAAO;AAAA,EACjC,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC/C,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,IAAI,MAAM,eAAe,IAAI,GAAG;AAAA,MAAG,OAAO;AAAA,EAC5C;AAAA,EACA,OAAO;AAAA;AAST,IAAM,eAAkC,CAAC,UAAU,WAAW,iBAAiB;AAC/E,IAAM,sBAAyC;AAAA,EAC7C,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,uBAA0C;AAAA,EAC9C,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,aAAa,CAAC,QAKmC;AAAA,EACxD,QAAQ,MAAM,OAAO,MAAM,UAAU;AAAA,EACrC,MAAM,UAAmC,CAAC;AAAA,EAC1C,MAAM,MAAkB,CAAC;AAAA,EAEzB,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC/C,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,IAC7C,IAAI,aAAa,WAAW;AAAA,MAC1B,QAAQ,OAAO;AAAA,MACf;AAAA,IACF;AAAA,IACA,IAAI,CAAC,eAAc,KAAK,GAAG;AAAA,MACzB,MAAM,iBAAgB;AAAA,QACpB,SAAS,YAAY,MAAM,QAAQ;AAAA,QACnC,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,IAAI;AAAA,MAC3C,CAAC;AAAA,IACH;AAAA,IACA,MAAM,OAAO,oBAAoB,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,IAC1D,MAAM,UACJ,UAAU,WAAW,eAAe,SAAS,SAAS,uBAAuB;AAAA,IAE/E,MAAM,QAAiC,KAAK,MAAM;AAAA,IAClD,YAAY,MAAM,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,MACnD,IAAI,YAAY,WAAW;AAAA,QACzB,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAAA,MACA,IAAI,CAAC,QAAQ,SAAS,IAAI,GAAG;AAAA,QAC3B,MAAM,iBAAgB;AAAA,UACpB,SAAS,mCAAmC,YAAY,MAAM,QAAQ,QAAQ,4BAAuB,QAAQ,KAAK,IAAI;AAAA,UACtH,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,KAAK,MAAM,MAAM;AAAA,QACxD,CAAC;AAAA,MACH;AAAA,MACA,MAAM,QAAQ;AAAA,IAChB;AAAA,IACA,IAAI,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AAAA,MACnC,MAAM,iBAAgB;AAAA,QACpB,SAAS,YAAY,MAAM,QAAQ;AAAA,QACnC,MAAM,EAAE,OAAO,MAAM,MAAM,UAAU,IAAI;AAAA,MAC3C,CAAC;AAAA,IACH;AAAA,IACA,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,MAAM,CAAC;AAAA,EACrC;AAAA,EAEA,OAAO,EAAE,SAAS,IAAI;AAAA;AAGxB,SAAS,OAAO,CAAC,QAAqF;AAAA,EACpG,QAAQ,IAAI,MAAM,YAAY;AAAA,EAC9B,MAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAAA,EACxD,IAAI,CAAC,GAAG,KAAK,SAAS,UAAU,MAAM,QAAQ,OAAO,GAAG;AAAA,IACtD,MAAM,iBAAgB;AAAA,MACpB,SAAS,WAAW,4BAA4B,GAAG,KAAK,SAAS,SAAS,GAAG;AAAA,MAC7E,MAAM,EAAE,UAAU,GAAG,MAAM,KAAK;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EACA,OAAO,KAAK,IAAI,CAAC,SAAS;AAAA,IACxB,IAAI,CAAC,eAAc,IAAI,GAAG;AAAA,MACxB,MAAM,iBAAgB;AAAA,QACpB,SAAS,WAAW,YAAY,GAAG,KAAK,SAAS,SAAS,GAAG;AAAA,QAC7D,MAAM,EAAE,UAAU,GAAG,MAAM,KAAK;AAAA,MAClC,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA,GACR;AAAA;AAGH,SAAS,YAAY,CAAC,QAKb;AAAA,EACP,QAAQ,IAAI,MAAM,MAAM,SAAS;AAAA,EACjC,WAAW,OAAO,MAAM;AAAA,IACtB,IAAI,CAAC,eAAc,KAAK,IAAI,GAAG;AAAA,MAC7B,MAAM,iBAAgB;AAAA,QACpB,SAAS,WAAW,YAAY,GAAG,KAAK,SAAS,SAAS,GAAG,yBAAyB;AAAA,QACtF,MAAM,EAAE,UAAU,GAAG,MAAM,MAAM,SAAS,IAAI;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAUF,eAAe,iBAAiB,CAAC,QAKV;AAAA,EACrB,QAAQ,KAAK,MAAM,OAAO,SAAS;AAAA,EACnC,MAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,OAAO,IAAI,WAAW,UAAU,SAAS;AAAA,EAC/E,MAAM,QAAQ,IAAI,IAAI,OAAO;AAAA,EAI7B,IACE,QAAQ,WAAW,KAAK,UAAU,UAClC,KAAK,UAAU,MAAM,CAAC,UAAU,MAAM,IAAI,MAAM,IAAI,KAAK,eAAc,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC,GAC7F;AAAA,IACA,OAAO,KAAK,UAAU,IAAI,CAAC,UAAU,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA,EAC5D;AAAA,EACA,MAAM,OAAO,MAAM,IAAI,KAAK;AAAA,IAC1B,OAAO,KAAK,OAAO;AAAA,IACnB,QAAQ;AAAA,IACR,MAAM,EAAE,OAAO,QAAQ,eAAe,EAAE,KAAK,CAAC,EAAE;AAAA,EAClD,CAAC;AAAA,EACD,MAAM,MAAM,KAAK;AAAA,EACjB,IAAI,QAAQ,WAAW;AAAA,IACrB,MAAM,SAAS;AAAA,MACb,SAAS,GAAG,YAAY,KAAK,OAAO;AAAA,MACpC,MAAM,EAAE,OAAO,KAAK,OAAO,MAAM,MAAM;AAAA,IACzC,CAAC;AAAA,EACH;AAAA,EACA,OAAO,aAAa,EAAE,MAAM,IAAI,CAAC;AAAA;AAKnC,SAAS,UAAU,CAAC,QAKW;AAAA,EAC7B,QAAQ,SAAS,MAAM,WAAW,aAAa;AAAA,EAC/C,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,cAAc,EAAE,MAAM,MAAM,+BAA+B,CAAC;AAAA,EACzE,MAAM,cAAc,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,KAAK,QAAQ,OAAO,UAAU,CAAC;AAAA,EAC/F,MAAM,aAAa,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,KAAK,OAAO,OAAO,SAAS,CAAC;AAAA,EAC5F,OAAO,KAAK,iBAAiB,MAAM,EAAE,GAAG,aAAa,GAAG,WAAW,IAAI,EAAE,GAAG,YAAY,GAAG,YAAY;AAAA;AASzG,SAAS,YAAe,CAAC,QASK;AAAA,EAC5B,QAAQ,SAAS,MAAM,QAAQ,aAAa;AAAA,EAC5C,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO,CAAC;AAAA,EAC/B,IAAI,OAAO,aAAa,QAAQ,QAAQ,oBAAoB;AAAA,IAAU,OAAO,CAAC,IAAI;AAAA,EAClF,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,OAAO,QAAQ,cAAc,YAAY,MAAM,CAAC;AAAA,EAC9E,MAAM,SAA2B,CAAC;AAAA,EAClC,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS;AAAA,IAAM,OAAO,KAAK,KAAK,MAAM,OAAO,QAAQ,IAAI,CAAC;AAAA,EACnG,OAAO;AAAA;AAQT,eAAe,cAAc,CAAC,QAMZ;AAAA,EAChB,QAAQ,KAAK,SAAS,MAAM,WAAW,cAAc;AAAA,EACrD,IAAI,UAAU,WAAW;AAAA,IAAG;AAAA,EAC5B,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,UAAU,IAAI,CAAC,aAAa;AAAA,IACvC,QAAQ,GAAG,MAAM,WAAW,EAAE,SAAS,MAAM,WAAW,SAAS,CAAC;AAAA,IAClE,OAAO,CAAC,GAAG,CAAC;AAAA,GACb;AAAA,EACD,MAAM,WAAW,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,cAAc,CAAC,CAAC;AAAA,EAChE,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS,UAAU;AAAA,IAC1D,MAAM,IAAI,UAAU;AAAA,MAClB,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,KAAK,UAAU;AAAA,QAC9B,SAAS,CAAC,KAAK,GAAG;AAAA,QAClB,MAAM,KAAK,MAAM,OAAO,QAAQ,QAAQ;AAAA,QAExC,YAAY,EAAE,SAAS,CAAC,KAAK,GAAG,GAAG,WAAW,KAAK;AAAA,MACrD;AAAA,MACA,OAAO,KAAK,SAAS;AAAA,MACrB,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA;AAGF,eAAe,cAAc,CAAC,QAMZ;AAAA,EAChB,QAAQ,KAAK,SAAS,MAAM,WAAW,cAAc;AAAA,EACrD,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,cAAc,EAAE,MAAM,MAAM,+BAA+B,CAAC;AAAA,EACzE,MAAM,cAAc,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,KAAK,QAAQ,OAAO,UAAU,CAAC;AAAA,EAC/F,MAAM,SAAS,cAAc,YAAY,CAAC,SAAS,IAAI,aAAa,EAAE,SAAS,MAAM,WAAW,QAAQ,GAAG,UAAU,EAAE,CAAC;AAAA,EACxH,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,IAAI,UAAU;AAAA,MAClB,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,KAAK,UAAU;AAAA,QAC9B,OAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU;AAAA,YACR,EAAE,MAAM,OAAO,IAAI,MAAM,QAAQ,EAAE,MAAM,KAAK,aAAa,GAAG,OAAO,YAAY;AAAA,YACjF,GAAI,UAAU,YACV,CAAC,IACD;AAAA,cACE;AAAA,gBACE,MAAM;AAAA,gBACN,QAAQ,EAAE,MAAM,KAAK,YAAY;AAAA,gBACjC,QAAQ,MAAM,IAAI,CAAC,QAAQ,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,KAAK,OAAO,OAAO,IAAI,CAAC,CAAC;AAAA,cAClG;AAAA,YACF;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,KAAK,SAAS;AAAA,MACrB,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA;AAcF,eAAe,gBAAgB,CAAC,QASd;AAAA,EAChB,QAAQ,KAAK,KAAK,MAAM,WAAW,WAAW,QAAQ,MAAM,aAAa;AAAA,EACzE,IAAI,UAAU,WAAW;AAAA,IAAG;AAAA,EAC5B,MAAM,UAAU,MAAM,eAAe,EAAE,KAAK,KAAK,MAAM,WAAW,UAAU,CAAC;AAAA,EAC7E,MAAM,OAAO,cAAc,EAAE,MAAM,MAAM,+BAA+B,CAAC;AAAA,EACzE,MAAM,YAAY,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,iBAAiB,EAAE,OAAO,YAAY,EAAE,SAAS,IAAI,QAAQ,MAAM,OAAO,KAAK,OAAO,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,EAC5J,WAAW,YAAY,WAAW;AAAA,IAChC,MAAM,aAAa,YAAY,EAAE,SAAS,IAAI,QAAQ,MAAM,OAAO,KAAK,OAAO,OAAO,SAAS,CAAC;AAAA,IAChG,IAAI,UAAU,IAAI,iBAAiB,EAAE,OAAO,WAAW,CAAC,CAAC;AAAA,MAAG;AAAA,IAC5D,MAAM,SAAS;AAAA,MACb,SAAS,WAAW,YAAY,KAAK,SAAS,SAAS,aAAa;AAAA,MACpE,MAAM,EAAE,SAAS;AAAA,IACnB,CAAC;AAAA,EACH;AAAA;AAQF,eAAe,yBAAyB,CAAC,QAKvB;AAAA,EAChB,QAAQ,KAAK,SAAS,MAAM,cAAc;AAAA,EAC1C,IAAI,UAAU,WAAW;AAAA,IAAG;AAAA,EAC5B,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,cAAc,EAAE,MAAM,MAAM,+BAA+B,CAAC;AAAA,EACzE,MAAM,SAAS,UAAU,IAAI,CAAC,aAC5B,YAAY,EAAE,SAAS,QAAQ,MAAM,OAAO,KAAK,OAAO,OAAO,SAAS,CAAC,CAC3E;AAAA,EACA,MAAM,SAAS,KAAK,SAAS,UAAU,KAAK,SAAS;AAAA,EACrD,WAAW,SAAS,aAAa,EAAE,SAAS,MAAM,QAAQ,QAAQ,SAAS,IAAI,GAAG,UAAU,EAAE,CAAC,GAAG;AAAA,IAChG,MAAM,IAAI,UAAU;AAAA,MAClB,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,KAAK,UAAU;AAAA,QAC9B,OAAO,SACH;AAAA,UACE,MAAM;AAAA,UACN,UAAU;AAAA,YACR,EAAE,MAAM,WAAW,QAAQ,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,KAAK,EAAE;AAAA,YAC7D,EAAE,MAAM,WAAW,QAAQ,EAAE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,KAAK,EAAE;AAAA,UAC/D;AAAA,QACF,IACA,EAAE,MAAM,WAAW,QAAQ,EAAE,MAAM,KAAK,YAAY,GAAG,QAAQ,CAAC,GAAG,KAAK,EAAE;AAAA,MAChF;AAAA,MACA,OAAO,KAAK,SAAS;AAAA,MACrB,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA;AAIF,eAAe,mBAAmB,CAAC,QAKjB;AAAA,EAChB,QAAQ,KAAK,SAAS,MAAM,cAAc;AAAA,EAC1C,WAAW,SAAS,aAAa,EAAE,SAAS,MAAM,WAAW,QAAQ,GAAG,UAAU,EAAE,CAAC,GAAG;AAAA,IACtF,MAAM,IAAI,SAAS;AAAA,MACjB,OAAO,KAAK,OAAO;AAAA,MACnB,QAAQ;AAAA,MACR,MAAM,EAAE,OAAO,gBAAgB,EAAE,MAAM,QAAQ,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;AAAA,IACzE,CAAC;AAAA,EACH;AAAA;AAKF,SAAS,UAAU,CAAC,QAA8D;AAAA,EAChF,QAAQ,OAAO;AAAA,EACf,MAAM,UAAU,OAAO,QAAQ,GAAG,KAAK;AAAA,EACvC,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,MAAM,iBAAgB;AAAA,MACpB,SAAS,mBAAmB,GAAG,KAAK,SAAS,SAAS,GAAG,uDAAuD,QAC7G,IAAI,EAAE,UAAU,IAAI,EACpB,KAAK,IAAI;AAAA,MACZ,MAAM,EAAE,UAAU,GAAG,MAAM,OAAO,QAAQ,IAAI,EAAE,UAAU,IAAI,EAAE;AAAA,IAClE,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,MAAM,QAAQ,KAAK,IAAc,SAAS,QAAQ,KAAK,GAAG;AAAA;AAIrE,eAAe,sBAAsB,CAAC,QAIf;AAAA,EACrB,QAAQ,KAAK,KAAK,OAAO;AAAA,EACzB,QAAQ,MAAM,YAAY,WAAW,EAAE,GAAG,CAAC;AAAA,EAC3C,OAAO,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,EAC5C,MAAM,OAAO;AAAA,EAEb,QAAQ;AAAA,SACD;AAAA,MACH,OAAO,MAAM,kBAAkB,EAAE,KAAK,MAAM,GAAG,MAAM,OAAO,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;AAAA,SAC3F,UAAU;AAAA,MACb,MAAM,QAAQ,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,GAAG,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC7E,OAAO,aAAa,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;AAAA,IACnD;AAAA,aACS;AAAA,MAEP,aAAa,EAAE,IAAI,MAAM,MAAM,MAAM,MAAM,CAAC,SAAS,QAAQ,EAAE,CAAC;AAAA,MAChE,MAAM,QAAQ,MAAM,IAAI,KAAK;AAAA,QAC3B,OAAO,GAAG,KAAK,OAAO;AAAA,QACtB,QAAQ;AAAA,QACR,MAAM,EAAE,OAAO,KAAK,OAAO,QAAQ,eAAe,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE;AAAA,MACvE,CAAC;AAAA,MACD,IAAI,MAAM,OAAO;AAAA,QAAW,OAAO,aAAa,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,CAAC;AAAA,MAChF,MAAM,QAAQ,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,GAAG,KAAK,QAAQ,MAAM,KAAK,OAAkC,CAAC;AAAA,MAC/G,OAAO,aAAa,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;AAAA,IACnD;AAAA;AAAA;AAaJ,SAAS,uBAAuB,CAAC,QAAwE;AAAA,EACvG,QAAQ,QAAQ,UAAU;AAAA,EAC1B,MAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,OAAO,IAAI,WAAW,UAAU,SAAS;AAAA,EAC/E,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO;AAAA,EACjC,IAAI,CAAC,QAAQ,MAAM,EAAE,KAAK,WAAW,OAAO,YAAY,IAAI,GAAG,KAAK,eAAc,KAAK,CAAC;AAAA,IAAG,OAAO;AAAA,EAClG,OAAO,cAAc,EAAE,OAAO,QAAQ,MAAM,CAAC;AAAA;AAe/C,eAAe,mBAAmB,CAAC,QAOjB;AAAA,EAChB,QAAQ,SAAS,KAAK,IAAI,OAAO,IAAI,SAAS;AAAA,EAC9C,MAAM,SAAS,GAAG,KAAK;AAAA,EACvB,IAAI,MAAM,WAAW;AAAA,IAAG;AAAA,EAExB,MAAM,YACJ,MAAM,SAAS,KAAK,MAAM,MAAM,CAAC,SAAS,wBAAwB,EAAE,QAAQ,OAAO,KAAK,CAAC,CAAC;AAAA,EAC5F,IAAI,CAAC,WAAW;AAAA,IACd,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,IAAI,OAAO,EAAE,OAAO,OAAO,MAAM,QAAQ,UAAU,MAAM,EAAE,OAAO,MAAM,MAAM,GAAG,EAAE,CAAC;AAAA,IAC5F;AAAA,IACA;AAAA,EACF;AAAA,EAEA,IAAI,SAAS;AAAA,EACb,WAAW,QAAQ;AAAA,IAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,OAAO,IAAI,EAAE,OAAO,CAAC,UAAU,UAAU,aAAa,UAAU,IAAI,EAAE,MAAM;AAAA,EACvI,MAAM,WAAW,OAAO,OAAO,EAAE,EAAE,OAAO,CAAC,UAAU,UAAU,SAAS,EAAE,SAAS,OAAO,OAAO,OAAO,CAAC,UAAU,MAAM,eAAe,GAAG,MAAM,UAAU,SAAS,EAAE;AAAA,EACtK,IAAI,WAAW;AAAA,EACf,WAAW,SAAS,aAAa,EAAE,SAAS,MAAM,OAAO,QAAQ,UAAU,UAAU,KAAK,CAAC,GAAG;AAAA,IAC5F,YAAY,MAAM,IAAI,SAAS;AAAA,MAC7B,OAAO,OAAO;AAAA,MACd,QAAQ;AAAA,MACR,MAAM,EAAE,OAAO,EAAE,IAAI,MAAM,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG;AAAA,IACtE,CAAC;AAAA,EACH;AAAA,EACA,IAAI,YAAY,MAAM;AAAA,IAAQ;AAAA,EAC9B,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,QAAQ,MAAM,IAAI,KAAK;AAAA,MAC3B,OAAO,OAAO;AAAA,MACd,QAAQ;AAAA,MACR,MAAM,EAAE,OAAO,MAAM,QAAQ,eAAe,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE;AAAA,IACjE,CAAC;AAAA,IACD,IAAI,MAAM,OAAO;AAAA,MAAW;AAAA,IAC5B,MAAM,SAAS;AAAA,MAGb,SAAS,MAAM,OAAO;AAAA,MACtB,MAAM,EAAE,OAAO,OAAO,MAAM,QAAQ,UAAU,UAAU,GAAG,MAAM,KAAK;AAAA,IACxE,CAAC;AAAA,EACH;AAAA;AAIF,SAAS,eAAe,CAAC,MAAmD;AAAA,EAC1E,MAAM,QAAQ,KAAK;AAAA,EACnB,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,MAAM,QAAQ,CAAC,QACb,OAAO,KAAK,GAAG,EACZ,OAAO,CAAC,QAAQ,IAAI,SAAS,SAAS,EACtC,KAAK,EACL,KAAK,MAAQ;AAAA,EAClB,MAAM,WAAW,MAAM,KAAK;AAAA,EAC5B,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS;AAAA,IAChD,IAAI,MAAM,KAAK,MAAiC,MAAM;AAAA,MAAU,OAAO;AAAA,EACzE;AAAA,EACA,OAAO;AAAA;AAIT,eAAe,mBAAmB,CAAC,QAKjB;AAAA,EAChB,QAAQ,KAAK,KAAK,IAAI,iBAAiB;AAAA,EACvC,MAAM,OAAO,GAAG;AAAA,EAChB,MAAM,KAAK,gBAAgB,EAAE,MAAM,QAAQ,aAAa,CAAC;AAAA,EACzD,iBAAiB,EAAE,MAAM,GAAG,OAAO,aAAa,GAAG,CAAC;AAAA,EACpD,MAAM,SAAS,KAAK;AAAA,EACpB,MAAM,YAAY,aAAa;AAAA,EAE/B,YAAY,MAAM,YAAY,OAAO,QAAQ,GAAG,KAAK,GAAG;AAAA,IACtD,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,IAO3C,IAAI,SAAS,YAAY,KAAK,SAAS,gBAAgB,MAAM,SAAS,GAAG;AAAA,MACvE,MAAM,OAAO,MAAM,IAAI,CAAC,UAAU,KAAK,SAAS,GAAG,EAAE;AAAA,MACrD,IACE,KAAK,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC,CAAC,KAClE,gBAAgB,IAAI,GACpB;AAAA,QACA,MAAM,IAAI,SAAS,EAAE,OAAO,OAAO,MAAM,QAAQ,cAAc,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC;AAAA,QACrF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,SAAS,cAAc;AAAA,MAI9B,MAAM,YAAuB,CAAC;AAAA,MAC9B,WAAW,QAAQ,OAAO;AAAA,QACxB,IAAI,SAAS,WAAW;AAAA,UACtB,UAAU,MAAM,MAAM,kBAAkB,EAAE,KAAK,MAAM,OAAO,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;AAAA,QACrG,EAAO,SAAI,SAAS,UAAU;AAAA,UAC5B,MAAM,QAAQ,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,QAAQ,MAAM,KAAK,CAAC;AAAA,UACrE,UAAU,KAAK,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,EAAE;AAAA,QACtD,EAAO;AAAA,UACL,aAAa,EAAE,IAAI,MAAM,MAAM,MAAM,CAAC,SAAS,QAAQ,EAAE,CAAC;AAAA,UAC1D,MAAM,QAAQ,MAAM,IAAI,KAAK;AAAA,YAC3B,OAAO,OAAO;AAAA,YACd,QAAQ;AAAA,YACR,MAAM,EAAE,OAAO,KAAK,OAAO,QAAQ,eAAe,EAAE,KAAK,CAAC,EAAE;AAAA,UAC9D,CAAC;AAAA,UACD,UAAU,KACR,MAAM,OAAO,YACT,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,EAAE,KACtC,aAAa;AAAA,YACX;AAAA,YACA,KAAK,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,QAAQ,MAAM,KAAK,OAAkC,CAAC;AAAA,UAChG,CAAC,EAAE,EACT;AAAA;AAAA,MAEJ;AAAA,MACA,MAAM,eAAe,EAAE,KAAK,SAAS,IAAI,SAAS,MAAM,WAAW,UAAU,CAAC;AAAA,MAC9E;AAAA,IACF;AAAA,IAGA,IAAI,SAAS,WAAW;AAAA,MACtB,MAAM,oBAAoB,EAAE,SAAS,IAAI,SAAS,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC;AAAA,MAC5E;AAAA,IACF;AAAA,IAEA,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,SAAS,UAAU;AAAA,QACrB,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,QAAQ,MAAM,KAAK,SAAS,GAAG,EAAE,CAAC;AAAA,MACvE,EAAO;AAAA,QACL,aAAa,EAAE,IAAI,MAAM,MAAM,MAAM,CAAC,SAAS,QAAQ,EAAE,CAAC;AAAA,QAC1D,MAAM,QAAQ,MAAM,IAAI,KAAK;AAAA,UAC3B,OAAO,OAAO;AAAA,UACd,QAAQ;AAAA,UACR,MAAM,EAAE,OAAO,KAAK,OAAO,QAAQ,eAAe,EAAE,KAAK,CAAC,EAAE;AAAA,QAC9D,CAAC;AAAA,QACD,IAAI,MAAM,OAAO,WAAW;AAAA,UAC1B,MAAM,IAAI,OAAO,EAAE,OAAO,OAAO,MAAM,QAAQ,UAAU,MAAM,EAAE,OAAO,KAAK,OAAO,MAAM,GAAG,EAAE,CAAC;AAAA,QAClG,EAAO;AAAA,UACL,MAAM,UAAU;AAAA,YACd;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP,MAAM,KAAM,KAAK,WAAuC,GAAG;AAAA,UAC7D,CAAC;AAAA;AAAA;AAAA,IAGP;AAAA,EACF;AAAA;AAIF,eAAe,SAAS,CAAC,QAKE;AAAA,EACzB,QAAQ,KAAK,KAAK,OAAO,SAAS;AAAA,EAClC,QAAQ,SAAS,QAAQ,cAAc,EAAE,MAAM,IAAI,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC;AAAA,EAEvF,WAAW,MAAM,KAAK;AAAA,IACpB,IAAI,GAAG,KAAK,SAAS;AAAA,MAAc;AAAA,IACnC,MAAM,SAAS,MAAM,uBAAuB,EAAE,KAAK,KAAK,GAAG,CAAC;AAAA,IAC5D,MAAM,cAAc,iBAAiB,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC;AAAA,IAC9D,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAAA,IACtC,OAAO,OAAO,SAAS,WAAW;AAAA,EACpC;AAAA,EAEA,MAAM,SAAS,MAAM,IAAI,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,UAAU,MAAM,EAAE,MAAM,QAAQ,EAAE,CAAC;AAAA,EAEhG,WAAW,MAAM,KAAK;AAAA,IACpB,IAAI,GAAG,KAAK,SAAS;AAAA,MAAc;AAAA,IACnC,MAAM,oBAAoB,EAAE,KAAK,KAAK,IAAI,cAAc,cAAc,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC;AAAA,EACzG;AAAA,EAEA,OAAO;AAAA;AAIT,SAAS,sBAAsB,CAAC,QAA+C;AAAA,EAC7E,QAAQ,QAAQ;AAAA,EAChB,OAAO,IAAI,KAAK,CAAC,OAAO;AAAA,IACtB,IAAI,GAAG,KAAK,SAAS;AAAA,MAAc,OAAO;AAAA,IAC1C,QAAQ,MAAM,YAAY,WAAW,EAAE,GAAG,CAAC;AAAA,IAC3C,IAAI,SAAS,aAAa,CAAC,eAAc,OAAO;AAAA,MAAG,OAAO;AAAA,IAE1D,MAAM,UAAU,OAAO,QAAQ,OAAO,EAAE,OAAO,IAAI,WAAW,UAAU,SAAS;AAAA,IACjF,MAAM,QAAQ,IAAI,IAAI,OAAO;AAAA,IAC7B,OAAO,EACL,QAAQ,WAAW,GAAG,KAAK,UAAU,UACrC,GAAG,KAAK,UAAU,MAAM,CAAC,UAAU,MAAM,IAAI,MAAM,IAAI,KAAK,eAAc,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC;AAAA,GAEnG;AAAA;AAOH,eAAsB,gBAAgB,CAAC,QAIZ;AAAA,EACzB,QAAQ,KAAK,OAAO,SAAS;AAAA,EAC7B,QAAQ,QAAQ,cAAc,EAAE,MAAM,IAAI,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC;AAAA,EAC9E,IAAI,uBAAuB,EAAE,IAAI,CAAC,GAAG;AAAA,IACnC,OAAO,MAAM,IAAI,cAAc,CAAC,QAAQ,UAAU,EAAE,KAAK,KAAK,OAAO,KAAK,CAAC,CAAC;AAAA,EAC9E;AAAA,EACA,OAAO,MAAM,UAAU,EAAE,KAAK,KAAK,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA;AAM3D,SAAS,YAAY,CAAC,QAAqF;AAAA,EACzG,QAAQ,IAAI,YAAY;AAAA,EACxB,IAAI,UAAU,WAAW,eAAc,QAAQ,IAAI;AAAA,IAAG,OAAO,QAAQ;AAAA,EACrE,IAAI,UAAU,SAAS;AAAA,IACrB,MAAM,iBAAgB;AAAA,MACpB,SAAS,sBAAsB,GAAG,KAAK,SAAS,SAAS,GAAG;AAAA,MAC5D,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,WAAW,CAAC,QAAiE;AAAA,EACpF,QAAQ,IAAI,SAAS;AAAA,EACrB,OAAO,iBAAiB,EAAE,QAAQ,GAAG,KAAK,WAAW,IAAI,MAAM,QAAQ,GAAG,KAAK,OAAO,KAAK,CAAC;AAAA;AAI9F,eAAe,sBAAsB,CAAC,QAOpB;AAAA,EAChB,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,aAAa;AAAA,EAChD,MAAM,OAAO,GAAG;AAAA,EAGhB,MAAM,gBAAgB,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,EACtD,MAAM,UAAU,iBAAiB,EAAE,QAAQ,cAAc,CAAC,MAAM,OAAO,OAAO;AAAA,EAC9E,MAAM,cAAc,MAClB,gBAAgB,EAAE,MAAM,QAAQ,QAA8B,CAAC;AAAA,EACjE,QAAQ,MAAM,YAAY,WAAW,EAAE,GAAG,CAAC;AAAA,EAC3C,MAAM,SAAS,CAAC,WAAqC;AAAA,IACnD,OAAO,OAAO,QAAQ,iBAAiB,EAAE,MAAM,OAAO,CAAC,CAAC;AAAA;AAAA,EAG1D,QAAQ;AAAA,SACD,WAAW;AAAA,MACd,OAAO,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,MAC5C,OACE,MAAM,kBAAkB;AAAA,QACtB;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,MAAM,WAAW,GAAG;AAAA,MACtB,CAAC,CACH;AAAA,MACA;AAAA,IACF;AAAA,SACK,UAAU;AAAA,MACb,OAAO,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,MAC5C,MAAM,QAAQ,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,KAAK,QAAQ,MAAM,KAAgC,CAAC;AAAA,MACrG,OAAO,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;AAAA,MACzC;AAAA,IACF;AAAA,SACK,mBAAmB;AAAA,MACtB,OAAO,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,MAC5C,MAAM,OAAO;AAAA,MACb,aAAa,EAAE,IAAI,MAAM,MAAM,MAAM,MAAM,CAAC,SAAS,QAAQ,EAAE,CAAC;AAAA,MAChE,MAAM,QAAQ,MAAM,IAAI,KAAK;AAAA,QAC3B,OAAO,KAAK,OAAO;AAAA,QACnB,QAAQ;AAAA,QACR,MAAM,EAAE,OAAO,KAAK,OAAO,QAAQ,eAAe,EAAE,KAAK,CAAC,EAAE;AAAA,MAC9D,CAAC;AAAA,MACD,OACE,aAAa;AAAA,QACX;AAAA,QACA,KACE,MAAM,MACL,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,KAAK,QAAQ,MAAM,KAAK,OAAkC,CAAC;AAAA,MACnG,CAAC,CACH;AAAA,MACA;AAAA,IACF;AAAA,SACK,cAAc;AAAA,MACjB,IAAI,YAAY;AAAA,QAAO;AAAA,MACvB,IAAI,CAAC,KAAK,SAAS,YAAY;AAAA,QAC7B,MAAM,iBAAgB;AAAA,UACpB,SAAS,4CAA4C,KAAK,SAAS,SAAS,GAAG;AAAA,UAC/E,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,OAAO,OACL,QACA,iBAAiB,EAAE,QAAQ,KAAK,YAAY,IAAI,MAAM,QAAQ,KAAK,SAAS,MAAM,CAAC,CACrF;AAAA,MACA;AAAA,IACF;AAAA,SACK,UAAU;AAAA,MACb,IAAI,YAAY;AAAA,QAAO;AAAA,MACvB,IAAI,CAAC,KAAK,SAAS,YAAY;AAAA,QAC7B,MAAM,iBAAgB;AAAA,UACpB,SAAS,wCAAwC,KAAK,SAAS,SAAS,GAAG;AAAA,UAC3E,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,IAAI,YAAY,MAAM;AAAA,QACpB,MAAM,SAAS;AAAA,UACb,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG,sBAAsB,KAAK,OAAO;AAAA,UAC3F,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,MAAM,QAAQ,YAAY;AAAA,MAC1B,OAAO,OACL,QACA,iBAAiB,EAAE,QAAQ,KAAK,YAAY,IAAI,MAAM,QAAQ,KAAK,SAAS,MAAM,CAAC,CACrF;AAAA,MAEA,SAAS,KAAK,YAAY;AAAA,QACxB,MAAM,IAAI,OAAO,EAAE,OAAO,KAAK,OAAO,MAAM,QAAQ,UAAU,MAAM,EAAE,MAAM,EAAE,CAAC;AAAA,OAChF;AAAA,MACD;AAAA,IACF;AAAA,SACK,UAAU;AAAA,MACb,IAAI,CAAC,eAAc,OAAO,GAAG;AAAA,QAC3B,MAAM,iBAAgB;AAAA,UACpB,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG;AAAA,UACzD,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,IAAI,YAAY,MAAM;AAAA,QACpB,MAAM,SAAS;AAAA,UACb,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG,sBAAsB,KAAK,OAAO;AAAA,UAC3F,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,MAAM,QAAQ,YAAY;AAAA,MAC1B,SAAS,KAAK,YAAY;AAAA,QACxB,MAAM,IAAI,OAAO;AAAA,UACf,OAAO,KAAK,OAAO;AAAA,UACnB,QAAQ;AAAA,UACR,MAAM,EAAE,OAAO,MAAM,aAAa,EAAE,IAAI,QAAQ,CAAC,EAAE;AAAA,QACrD,CAAC;AAAA,OACF;AAAA,MACD;AAAA,IACF;AAAA,aACS;AAAA,MAEP,IAAI,CAAC,eAAc,OAAO,GAAG;AAAA,QAC3B,MAAM,iBAAgB;AAAA,UACpB,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG;AAAA,UACzD,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,aAAa,EAAE,IAAI,MAAM,MAAM,SAAS,MAAM,CAAC,UAAU,QAAQ,EAAE,CAAC;AAAA,MACpE,IAAI,YAAY,MAAM;AAAA,QACpB,MAAM,QAAQ,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,KAAK,QAAQ,MAAM,QAAQ,OAAkC,CAAC;AAAA,QAC/G,OAAO,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;AAAA,MAC3C,EAAO;AAAA,QACL,MAAM,QAAQ,YAAY;AAAA,QAC1B,SAAS,KAAK,YAAY;AAAA,UACxB,MAAM,IAAI,OAAO,EAAE,OAAO,KAAK,OAAO,MAAM,QAAQ,UAAU,MAAM,EAAE,OAAO,MAAM,QAAQ,OAAO,EAAE,CAAC;AAAA,SACtG;AAAA;AAAA,MAEH;AAAA,IACF;AAAA;AAAA;AAUJ,eAAe,cAAc,CAAC,QAOP;AAAA,EACrB,QAAQ,KAAK,KAAK,MAAM,WAAW,cAAc;AAAA,EACjD,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,cAAc,EAAE,MAAM,MAAM,+BAA+B,CAAC;AAAA,EACzE,MAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,QAAQ,EAAE,MAAM,KAAK,aAAa;AAAA,IAClC,OAAO,YAAY,EAAE,SAAS,IAAI,QAAQ,MAAM,OAAO,KAAK,QAAQ,OAAO,UAAU,CAAC;AAAA,EACxF;AAAA,EACA,MAAM,OAAO,OAAO,WAA0D;AAAA,IAC5E,MAAM,OAAO,MAAM,IAAI,UAAU;AAAA,MAC/B,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,KAAK,UAAU;AAAA,QAC9B,SAAS,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC;AAAA,QACpC,OACE,WAAW,OACP,cACA;AAAA,UACE,MAAM;AAAA,UACN,UAAU;AAAA,YACR;AAAA,YACA,EAAE,MAAM,WAAW,QAAQ,EAAE,MAAM,KAAK,YAAY,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE;AAAA,UAC7E;AAAA,QACF;AAAA,MACR;AAAA,MACA,OAAO,KAAK,SAAS;AAAA,MACrB,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,OAAO,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,YAAY;AAAA;AAAA,EAGhD,IAAI,cAAc;AAAA,IAAW,OAAO,MAAM,KAAK,IAAI;AAAA,EACnD,MAAM,SAAS,UAAU,IAAI,CAAC,aAC5B,YAAY,EAAE,SAAS,IAAI,QAAQ,MAAM,OAAO,KAAK,OAAO,OAAO,SAAS,CAAC,CAC/E;AAAA,EACA,MAAM,QAAmB,CAAC;AAAA,EAE1B,WAAW,SAAS,aAAa,EAAE,SAAS,IAAI,SAAS,MAAM,QAAQ,QAAQ,GAAG,UAAU,EAAE,CAAC,GAAG;AAAA,IAChG,WAAW,UAAU,MAAM,KAAK,KAAK;AAAA,MAAG,MAAM,KAAK,MAAM;AAAA,EAC3D;AAAA,EACA,OAAO;AAAA;AAaT,eAAe,gBAAgB,CAAC,QAKK;AAAA,EACnC,QAAQ,KAAK,KAAK,MAAM,cAAc;AAAA,EACtC,MAAM,UAAU,oBAAoB,EAAE,KAAK,CAAC;AAAA,EAC5C,IAAI,YAAY,MAAM;AAAA,IACpB,MAAM,OAAO,cAAc,EAAE,MAAM,MAAM,+BAA+B,CAAC;AAAA,IACzE,OAAO,GAAG,UAAU,EAAE,MAAM,GAAG,KAAK,OAAO,OAAO,UAAU,EAAE,EAAE;AAAA,EAClE;AAAA,EACA,MAAM,UAAU,MAAM,eAAe,EAAE,KAAK,KAAK,MAAM,UAAU,CAAC;AAAA,EAClE,OAAO,gBAAgB,EAAE,MAAM,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC;AAAA;AAI5D,eAAe,mBAAmB,CAAC,QAKjB;AAAA,EAChB,QAAQ,KAAK,KAAK,IAAI,iBAAiB;AAAA,EACvC,MAAM,OAAO,GAAG;AAAA,EAChB,MAAM,KAAK,gBAAgB,EAAE,MAAM,QAAQ,aAAa,CAAC;AAAA,EACzD,iBAAiB,EAAE,MAAM,GAAG,OAAO,aAAa,GAAG,CAAC;AAAA,EACpD,MAAM,SAAS,KAAK;AAAA,EACpB,MAAM,YAAY,aAAa;AAAA,EAC/B,MAAM,QAAQ,KAAK,SAAS;AAAA,EAE5B,YAAY,MAAM,YAAY,OAAO,QAAQ,GAAG,KAAK,GAAG;AAAA,IACtD,QAAQ;AAAA,WACD;AAAA,WACA;AAAA,WACA,mBAAmB;AAAA,QACtB,MAAM,oBAAoB,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,OAAO,QAAQ,EAAE,GAAG,aAAa,CAAC;AAAA,QAC/F;AAAA,MACF;AAAA,WAEK,OAAO;AAAA,QACV,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,SAAS,WAAW,CAAC,EAAE,CAAC;AAAA,QAC1D,IAAI,OAAO;AAAA,UAET,MAAM,eAAe,EAAE,KAAK,SAAS,IAAI,SAAS,MAAM,UAAU,CAAC;AAAA,UACnE,MAAM,YAAuB,CAAC;AAAA,UAC9B,WAAW,QAAQ,OAAO;AAAA,YACxB,UAAU,MAAM,MAAM,kBAAkB,EAAE,KAAK,MAAM,OAAO,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;AAAA,UACjG;AAAA,UACA,MAAM,eAAe,EAAE,KAAK,SAAS,IAAI,SAAS,MAAM,WAAW,UAAU,CAAC;AAAA,QAChF,EAAO;AAAA,UACL,MAAM,SAAS,YAAY,EAAE,IAAI,KAAK,CAAC;AAAA,UACvC,MAAM,IAAI,SAAS;AAAA,YACjB,OAAO,OAAO;AAAA,YACd,QAAQ;AAAA,YACR,MAAM,EAAE,OAAO,IAAI,MAAM,OAAO;AAAA,UAClC,CAAC;AAAA,UACD,MAAM,oBAAoB,EAAE,SAAS,IAAI,SAAS,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC;AAAA;AAAA,QAE9E;AAAA,MACF;AAAA,WAEK,cAAc;AAAA,QACjB,IAAI,KAAK,SAAS,gBAAgB;AAAA,UAChC,IAAI,YAAY;AAAA,YAAO;AAAA,UACvB,MAAM,IAAI,SAAS;AAAA,YACjB,OAAO,OAAO;AAAA,YACd,QAAQ;AAAA,YACR,MAAM,EAAE,OAAO,IAAI,MAAM,YAAY,EAAE,IAAI,KAAK,CAAC,EAAE;AAAA,UACrD,CAAC;AAAA,UACD;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,QAC3C,IAAI,OAAO;AAAA,UACT,MAAM,OAAkB,CAAC;AAAA,UACzB,WAAW,QAAQ,OAAO;AAAA,YACxB,KAAK,MAAM,MAAM,kBAAkB,EAAE,KAAK,MAAM,OAAO,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;AAAA,UACnG;AAAA,UACA,MAAM,eAAe,EAAE,KAAK,SAAS,IAAI,SAAS,MAAM,WAAW,WAAW,KAAK,CAAC;AAAA,QACtF,EAAO;AAAA,UACL,MAAM,SAAS,YAAY,EAAE,IAAI,KAAK,CAAC;AAAA,UACvC,WAAW,QAAQ,OAAO;AAAA,YACxB,MAAM,IAAI,SAAS;AAAA,cACjB,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,cACR,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,OAAO;AAAA,YACnD,CAAC;AAAA,UACH;AAAA;AAAA,QAEF;AAAA,MACF;AAAA,WAEK,UAAU;AAAA,QACb,IAAI,KAAK,SAAS,gBAAgB;AAAA,UAChC,IAAI,YAAY;AAAA,YAAO;AAAA,UACvB,MAAM,IAAI,SAAS,EAAE,OAAO,OAAO,MAAM,QAAQ,cAAc,MAAM,EAAE,OAAO,GAAG,EAAE,CAAC;AAAA,UACpF;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,QAC3C,IAAI,OAAO;AAAA,UACT,MAAM,YAAuB,CAAC;AAAA,UAC9B,WAAW,QAAQ,OAAO;AAAA,YACxB,UAAU,MAAM,MAAM,kBAAkB,EAAE,KAAK,MAAM,OAAO,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;AAAA,UACpG;AAAA,UAEA,MAAM,iBAAiB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ,OAAO;AAAA,YACf,MAAM;AAAA,YACN,UAAU,GAAG;AAAA,UACf,CAAC;AAAA,UACD,MAAM,0BAA0B,EAAE,KAAK,SAAS,IAAI,SAAS,MAAM,UAAU,CAAC;AAAA,UAC9E,MAAM,oBAAoB,EAAE,KAAK,SAAS,IAAI,SAAS,MAAM,UAAU,CAAC;AAAA,UACxE;AAAA,QACF;AAAA,QACA,WAAW,QAAQ,OAAO;AAAA,UACxB,MAAM,IAAI,SAAS;AAAA,YACjB,OAAO,OAAO;AAAA,YACd,QAAQ;AAAA,YACR,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE;AAAA,UACrC,CAAC;AAAA,QACH;AAAA,QACA;AAAA,MACF;AAAA,WAEK,UAAU;AAAA,QACb,IAAI,KAAK,SAAS,gBAAgB;AAAA,UAChC,IAAI,CAAC,eAAc,OAAO,GAAG;AAAA,YAC3B,MAAM,iBAAgB;AAAA,cACpB,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG;AAAA,cACzD,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,YAC5B,CAAC;AAAA,UACH;AAAA,UACA,MAAM,WAAW,MAAM,IAAI,SAAS;AAAA,YAClC,OAAO,OAAO;AAAA,YACd,QAAQ;AAAA,YACR,MAAM,EAAE,OAAO,IAAI,MAAM,aAAa,EAAE,IAAI,QAAQ,CAAC,EAAE;AAAA,UACzD,CAAC;AAAA,UACD,IAAI,aAAa,GAAG;AAAA,YAClB,MAAM,SAAS;AAAA,cACb,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG,sBAAsB,OAAO;AAAA,cACtF,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,YAC5B,CAAC;AAAA,UACH;AAAA,UACA;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,QAC3C,WAAW,QAAQ;AAAA,UAAO,aAAa,EAAE,IAAI,MAAM,MAAM,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC;AAAA,QAClF,IAAI,OAAO;AAAA,UACT,MAAM,YAAuB,CAAC;AAAA,UAC9B,WAAW,QAAQ,OAAO;AAAA,YACxB,UAAU,MAEN,MAAM,kBAAkB;AAAA,cACtB;AAAA,cACA;AAAA,cACA,OAAO,KAAK;AAAA,cACZ,MAAM,UAAU,GAAG;AAAA,YACrB,CAAC,GACD,EACJ;AAAA,UACF;AAAA,UAGA,MAAM,iBAAiB;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ,OAAO;AAAA,YACf,MAAM;AAAA,YACN,UAAU,GAAG;AAAA,UACf,CAAC;AAAA,UACD,WAAW,QAAQ,OAAO;AAAA,YACxB,MAAM,IAAI,OAAO,EAAE,OAAO,OAAO,MAAM,QAAQ,UAAU,MAAM,EAAE,OAAO,KAAK,OAAO,MAAM,KAAK,KAAK,EAAE,CAAC;AAAA,UACzG;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAW,QAAQ,OAAO;AAAA,UACxB,MAAM,WAAW,MAAM,IAAI,SAAS;AAAA,YAClC,OAAO,OAAO;AAAA,YACd,QAAQ;AAAA,YACR,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,OAAO,EAAE,EAAE,GAAG,MAAM,KAAK,KAAK;AAAA,UAC5D,CAAC;AAAA,UACD,IAAI,aAAa,GAAG;AAAA,YAClB,MAAM,SAAS;AAAA,cACb,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG,sBAAsB,OAAO;AAAA,cACtF,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,YAC5B,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,WAEK,cAAc;AAAA,QACjB,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,QAC3C,WAAW,QAAQ,OAAO;AAAA,UACxB,MAAM,OAAO,KAAK;AAAA,UAClB,IAAI,CAAC,eAAc,IAAI,GAAG;AAAA,YACxB,MAAM,iBAAgB;AAAA,cACpB,SAAS,0BAA0B,KAAK,SAAS,SAAS,GAAG;AAAA,cAC7D,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,YAC5B,CAAC;AAAA,UACH;AAAA,UACA,IAAI,OAAO;AAAA,YACT,MAAM,IAAI,SAAS;AAAA,cACjB,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,cACR,MAAM;AAAA,gBACJ,OAAO,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,MAAM,iBAAiB,EAAE,KAAK,KAAK,MAAM,UAAU,CAAC,CAAC,EAAE;AAAA,gBACxF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH,EAAO;AAAA,YACL,MAAM,IAAI,SAAS;AAAA,cACjB,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,cACR,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK;AAAA,YACvD,CAAC;AAAA;AAAA,QAEL;AAAA,QACA;AAAA,MACF;AAAA,WAEK,cAAc;AAAA,QACjB,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,QAC3C,WAAW,QAAQ,OAAO;AAAA,UACxB,IAAI,OAAO;AAAA,YACT,MAAM,UAAU,MAAM,IAAI,KAAK;AAAA,cAC7B,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,cACR,MAAM;AAAA,gBACJ,OAAO,EAAE,KAAK,CAAC,MAAM,MAAM,iBAAiB,EAAE,KAAK,KAAK,MAAM,UAAU,CAAC,CAAC,EAAE;AAAA,gBAC5E,QAAQ,eAAe,EAAE,KAAK,CAAC;AAAA,cACjC;AAAA,YACF,CAAC;AAAA,YACD,MAAM,YAAY,QAAQ,IAAI,CAAC,WAAW,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,EAAE;AAAA,YAChF,MAAM,0BAA0B,EAAE,KAAK,SAAS,IAAI,SAAS,MAAM,UAAU,CAAC;AAAA,YAC9E,MAAM,oBAAoB,EAAE,KAAK,SAAS,IAAI,SAAS,MAAM,UAAU,CAAC;AAAA,UAC1E,EAAO;AAAA,YACL,MAAM,IAAI,SAAS;AAAA,cACjB,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,cACR,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE;AAAA,YACrC,CAAC;AAAA;AAAA,QAEL;AAAA,QACA;AAAA,MACF;AAAA,eAES;AAAA,QAEP,IAAI,KAAK,SAAS,gBAAgB;AAAA,UAChC,IAAI,CAAC,eAAc,OAAO,GAAG;AAAA,YAC3B,MAAM,iBAAgB;AAAA,cACpB,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG;AAAA,cACzD,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,YAC5B,CAAC;AAAA,UACH;AAAA,UACA,aAAa,EAAE,IAAI,MAAM,MAAM,SAAS,MAAM,CAAC,UAAU,QAAQ,EAAE,CAAC;AAAA,UACpE,MAAM,WAAW,MAAM,IAAI,KAAK;AAAA,YAC9B,OAAO,OAAO;AAAA,YACd,QAAQ;AAAA,YACR,MAAM,EAAE,OAAO,IAAI,QAAQ,eAAe,EAAE,KAAK,CAAC,EAAE;AAAA,UACtD,CAAC;AAAA,UACD,IAAI,SAAS,OAAO,WAAW;AAAA,YAC7B,MAAM,IAAI,SAAS;AAAA,cACjB,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,cACR,MAAM,EAAE,OAAO,IAAI,MAAM,QAAQ,OAAO;AAAA,YAC1C,CAAC;AAAA,UACH,EAAO;AAAA,YACL,MAAM,UAAU;AAAA,cACd;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP,MAAM,KAAM,QAAQ,WAAuC,GAAG;AAAA,YAChE,CAAC;AAAA;AAAA,UAEH;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,QAAQ,CAAC;AAAA,QAC3C,WAAW,QAAQ,OAAO;AAAA,UACxB,aAAa,EAAE,IAAI,MAAM,MAAM,MAAM,CAAC,SAAS,UAAU,QAAQ,EAAE,CAAC;AAAA,UACpE,MAAM,QAAQ,MAAM,IAAI,KAAK;AAAA,YAC3B,OAAO,OAAO;AAAA,YACd,QAAQ;AAAA,YACR,MAAM;AAAA,cACJ,OAAO,KAAK;AAAA,cACZ,QAAQ,eAAe,EAAE,KAAK,CAAC;AAAA,YACjC;AAAA,UACF,CAAC;AAAA,UACD,IAAI,MAAM,OAAO,WAAW;AAAA,YAI1B,IAAI,OAAO;AAAA,cACT,MAAM,iBAAiB;AAAA,gBACrB;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,WAAW,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,EAAE,EAAE;AAAA,gBACpD,QAAQ,OAAO;AAAA,gBACf,MAAM;AAAA,gBACN,UAAU,GAAG;AAAA,cACf,CAAC;AAAA,YAGH,EAAO,SACL,iBAAiB,EAAE,QAAQ,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,EAAE,CAAC,MAClE,iBAAiB,EAAE,QAAQ,aAAa,CAAC,GACzC;AAAA,cACA,MAAM,SAAS;AAAA,gBACb,SAAS,sBAAsB,KAAK,SAAS,SAAS,GAAG,sBAAsB,OAAO,2BAA2B,KAAK,SAAS;AAAA,gBAC/H,MAAM,EAAE,UAAU,GAAG,KAAK;AAAA,cAC5B,CAAC;AAAA,YACH;AAAA,YACA,MAAM,IAAI,OAAO,EAAE,OAAO,OAAO,MAAM,QAAQ,UAAU,MAAM,EAAE,OAAO,KAAK,OAAO,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,UAC3G,EAAO,SAAI,OAAO;AAAA,YAChB,MAAM,QAAQ,MAAM,UAAU,EAAE,KAAK,KAAK,OAAO,QAAQ,MAAM,KAAK,OAAkC,CAAC;AAAA,YACvG,MAAM,eAAe;AAAA,cACnB;AAAA,cACA,SAAS,IAAI;AAAA,cACb;AAAA,cACA;AAAA,cACA,WAAW,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,EAAE;AAAA,YACnD,CAAC;AAAA,UACH,EAAO;AAAA,YACL,MAAM,UAAU;AAAA,cACd;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP,MAAM,KAAM,KAAK,WAAuC,GAAG;AAAA,YAC7D,CAAC;AAAA;AAAA,QAEL;AAAA,QACA;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA;AAQF,eAAsB,gBAAgB,CAAC,QAKZ;AAAA,EACzB,QAAQ,KAAK,OAAO,OAAO,SAAS;AAAA,EACpC,QAAQ,SAAS,QAAQ,cAAc,EAAE,MAAM,IAAI,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC;AAAA,EAEvF,MAAM,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,KAAK,SAAS,YAAY;AAAA,EASjE,MAAM,eAAe,SAAS,SAAS,KAAK,OAAO,KAAK,OAAO,EAAE,WAAW;AAAA,EAE5E,OAAO,MAAM,IAAI,cAAc,OAAO,QAAQ;AAAA,IAC5C,IAAI;AAAA,IACJ,IAAI,cAAc;AAAA,MAChB,MAAM,UAAU,MAAM,IAAI,KAAK,EAAE,OAAO,MAAM,MAAM,QAAQ,cAAc,MAAM,EAAE,MAAM,EAAE,CAAC;AAAA,MAC3F,MAAM,QAAQ;AAAA,MACd,IAAI,QAAQ,WAAW;AAAA,QACrB,MAAM,SAAS;AAAA,UACb,SAAS,MAAM,MAAM;AAAA,UACrB,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,MAAM,SAAkC,CAAC;AAAA,IACzC,MAAM,WAAoC,CAAC;AAAA,IAC3C,WAAW,MAAM,UAAU;AAAA,MACzB,MAAM,uBAAuB,EAAE,KAAK,KAAK,IAAI,KAA2B,QAAQ,SAAS,CAAC;AAAA,IAC5F;AAAA,IAEA,iBAAiB,EAAE,MAAM,aAAa,OAAO,CAAC;AAAA,IAC9C,MAAM,aAAa,KAAK,YAAY,OAAO;AAAA,IAC3C,IAAI,SAAwB;AAAA,IAC5B,IAAI,OAAO,KAAK,UAAU,EAAE,SAAS,GAAG;AAAA,MACtC,SAAS,MAAM,IAAI,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,UAAU,MAAM,EAAE,OAAO,MAAM,WAAW,EAAE,CAAC;AAAA,IACtG;AAAA,IAEA,WAAW,MAAM;AAAA,MAAU,MAAM,GAAG;AAAA,IAEpC,WAAW,MAAM,KAAK;AAAA,MACpB,IAAI,GAAG,KAAK,SAAS;AAAA,QAAc;AAAA,MACnC,MAAM,oBAAoB,EAAE,KAAK,KAAK,IAAI,cAAc,cAAc,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC;AAAA,IACzG;AAAA,IAEA,OAAO;AAAA,GACR;AAAA;;;ACn+CH,IAAM,UAAU;AAChB,IAAM,cAAc;AACpB,IAAM,aAAa;AAUZ,SAAS,YAAY,CAAC,QAAkC;AAAA,EAC7D,QAAQ,SAAS;AAAA,EACjB,IAAI,MAAM;AAAA,EACV,IAAI,QAAQ;AAAA,EACZ,OAAO,QAAQ,KAAK,QAAQ;AAAA,IAC1B,MAAM,YAAY,KAAK;AAAA,IACvB,IAAI,cAAc,KAAK;AAAA,MAGrB;AAAA,MACA,OAAO,QAAQ,KAAK,QAAQ;AAAA,QAC1B,IAAI,KAAK,WAAW,MAAM;AAAA,UAAE,SAAS;AAAA,UAAG;AAAA,QAAU;AAAA,QAClD,IAAI,KAAK,WAAW,KAAK;AAAA,UACvB,IAAI,KAAK,QAAQ,OAAO,KAAK;AAAA,YAAE,SAAS;AAAA,YAAG;AAAA,UAAU;AAAA,UACrD;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO;AAAA,IACT,EAAO,SAAI,cAAc,OAAO,mCAAmC,KAAK,KAAK,MAAM,KAAK,CAAC,GAAG;AAAA,MAC1F,MAAM,YAAY,KAAK,MAAM,KAAK,EAAE,MAAM,kCAAkC,EAAG;AAAA,MAC/E,MAAM,MAAM,KAAK,QAAQ,WAAW,QAAQ,UAAU,MAAM;AAAA,MAC5D,QAAQ,QAAQ,KAAK,KAAK,SAAS,MAAM,UAAU;AAAA,MACnD,OAAO;AAAA,IACT,EAAO,SAAI,cAAc,OAAO,cAAc,KAAK;AAAA,MAEjD,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ,KAAK,QAAQ;AAAA,QAC1B,IAAI,KAAK,aAAa;AAAA,UAAW;AAAA,QACjC,IAAI,KAAK,WAAW,WAAW;AAAA,UAAE;AAAA,UAAS;AAAA,QAAU;AAAA,QACpD;AAAA,MACF;AAAA,MACA,OAAO,KAAK,MAAM,OAAO,KAAK;AAAA,IAChC,EAAO,SAAI,KAAK,WAAW,MAAM,KAAK,GAAG;AAAA,MACvC,MAAM,MAAM,KAAK,QAAQ;AAAA,GAAM,QAAQ,CAAC;AAAA,MACxC,QAAQ,QAAQ,KAAK,KAAK,SAAS;AAAA,MACnC,OAAO;AAAA,IACT,EAAO,SAAI,KAAK,WAAW,MAAM,KAAK,GAAG;AAAA,MACvC,IAAI,QAAQ;AAAA,MACZ,SAAS;AAAA,MACT,OAAO,QAAQ,KAAK,UAAU,QAAQ,GAAG;AAAA,QACvC,IAAI,KAAK,WAAW,MAAM,KAAK,GAAG;AAAA,UAAE;AAAA,UAAS,SAAS;AAAA,QAAG,EACpD,SAAI,KAAK,WAAW,MAAM,KAAK,GAAG;AAAA,UAAE;AAAA,UAAS,SAAS;AAAA,QAAG,EACzD;AAAA;AAAA,MACP;AAAA,MACA,OAAO;AAAA,IACT,EAAO;AAAA,MACL,OAAO;AAAA,MACP;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO,IAAI,QAAQ,aAAa,GAAG,EAAE,QAAQ,SAAS,GAAG,EAAE,QAAQ,YAAY,GAAG,EAAE,KAAK;AAAA;AAM3F,SAAS,KAAK,CAAC,MAAsB;AAAA,EACnC,IAAI,OAAO;AAAA,EACX,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS;AAAA,IAChD,QAAQ,KAAK,WAAW,KAAK;AAAA,IAC7B,OAAO,KAAK,KAAK,MAAM,QAAU,MAAM;AAAA,EACzC;AAAA,EACA,OAAO,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA;AAWnC,SAAS,gBAAgB,CAAC,QAKtB;AAAA,EACT,QAAQ,OAAO,QAAQ,MAAM,cAAc;AAAA,EAC3C,MAAM,OAAO,MAAM,aAAa,EAAE,KAAK,CAAC,CAAC;AAAA,EACzC,MAAM,SAAS,GAAG,SAAS,SAAS;AAAA,EACpC,MAAM,OAAO,GAAG,UAAU;AAAA,EAC1B,IAAI,KAAK,UAAU;AAAA,IAAW,OAAO;AAAA,EACrC,MAAM,OAAO,KAAK,IAAI,GAAG,YAAY,KAAK,SAAS,CAAC;AAAA,EACpD,OAAO,GAAG,OAAO,MAAM,GAAG,IAAI,KAAK;AAAA;;;ALxFrC,IAAM,yBAAiC;AAMhC,SAAS,gBAAgB,CAAC,QAAoC;AAAA,EACnE,QAAQ,UAAU;AAAA,EAClB,IAAI,UAAU;AAAA,IAAM,OAAO;AAAA,EAC3B,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,IAAI,iBAAiB;AAAA,IAAM,OAAO;AAAA,EAClC,IAAI,iBAAiB;AAAA,IAAY,OAAO;AAAA,EACxC,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EACjC,MAAM,OAAO,OAAO;AAAA,EACpB,OAAO,SAAS,WAAW,WAAW;AAAA;AAGxC,SAAS,kBAAkB,CAAC,QAAmF;AAAA,EAC7G,QAAQ,QAAQ,kBAAkB;AAAA,EAClC,OAAO,OAAO,IAAI,CAAC,UACjB,gBAAiB,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK,IAAK,iBAAiB,EAAE,MAAM,CAAC,CAClG;AAAA;AAGF,SAAS,WAAW,CAAC,QASA;AAAA,EACnB,QAAQ,OAAO,MAAM,SAAS,WAAW,OAAO,QAAQ,kBAAkB;AAAA,EAC1E,MAAM,WAAW,gBAAgB,EAAE,SAAS,UAAU,CAAC;AAAA,EACvD,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,MAAM,UAAU;AAAA,IAChB,KAAK,SAAS;AAAA,IACd,gBAAgB,SAAS,OAAO;AAAA,IAChC,YAAY,mBAAmB,EAAE,QAAQ,SAAS,QAAQ,cAAc,CAAC;AAAA,IACzE,aAAa,iBAAiB,EAAE,OAAO,QAAQ,MAAM,SAAS,MAAM,WAAW,uBAAuB,CAAC;AAAA,EACzG;AAAA;AAIF,SAAS,gBAAgB,CAAC,QAAsD;AAAA,EAC9E,QAAQ,OAAO,SAAS;AAAA,EACxB,IAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,MAAM,QAAQ,IAAI;AAAA,IAAG,OAAO;AAAA,EAC7E,MAAM,UAAmC,CAAC;AAAA,EAC1C,YAAY,KAAK,UAAU,OAAO,QAAQ,IAA+B,GAAG;AAAA,IAC1E,IAAI,MAAM,eAAe,IAAI,GAAG;AAAA,MAAG;AAAA,IACnC,QAAQ,OAAO;AAAA,EACjB;AAAA,EACA,OAAO;AAAA;AAWF,SAAS,gBAAgB,CAAC,QAYZ;AAAA,EACnB,QAAQ,QAAQ,OAAO,QAAQ,MAAM,kBAAkB,kBAAkB;AAAA,EACzE,MAAM,gBAAgB,OAAO,2BAA2B;AAAA,EACxD,MAAM,UAAU,cAAc,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,EACzD,MAAM,WAAW,iBAAiB,EAAE,OAAO,CAAC;AAAA,EAC5C,MAAM,cAAc,0BAA0B,EAAE,WAAW,OAAO,cAAc,CAAC,GAAG,SAAS,OAAO,SAAS,UAAU,OAAO,WAAW,SAAS,CAAC;AAAA,EACnJ,MAAM,OAAO,gBAAgB,OAAO,WAAW,KAAK,UAAU,oBAAoB,YAAY;AAAA,EAC9F,MAAM,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC;AAAA,EAK9C,MAAM,gBACH,WAAW,YAAY,WAAW,YAAY,WAAW,cACzD,gBAAgB,EAAE,OAAO,WAAW,MAAM,MAAM,KAAK,CAAC,KACrD,gBAAgB,EAAE,OAAO,WAAW,MAAM,MAAM,OAAO,CAAC,KACxD,gBAAgB,EAAE,OAAO,WAAW,MAAM,MAAM,OAAO,CAAC;AAAA,EAC5D,MAAM,gBACJ,SAAS,aAAa,CAAC,eACnB,OACA;AAAA,OACK;AAAA,OACC,KAAK,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,iBAAiB,EAAE,OAAO,WAAW,MAAM,KAAK,KAAK,CAAC,EAAE;AAAA,OAC/F,KAAK,WAAW,YAAY,CAAC,IAAI,EAAE,QAAQ,iBAAiB,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,EAAE;AAAA,OACrG,KAAK,WAAW,YAAY,CAAC,IAAI,EAAE,QAAQ,iBAAiB,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,EAAE;AAAA,EAC3G;AAAA,EAEN,MAAM,QAAQ,MACZ,WAAW;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,OACI,kBAAkB,YAAY,CAAC,IAAI,EAAE,MAAM,cAAc;AAAA,OACzD,qBAAqB,YAAY,CAAC,IAAI,EAAE,yBAAyB,iBAAiB;AAAA,OAClF,kBAAkB,YAAY,CAAC,IAAI,EAAE,cAAc;AAAA,EACzD,CAAC;AAAA,EAEH,IAAI,OAAyB;AAAA,EAC7B,IAAI,cAAc;AAAA,IAIhB,IAAI;AAAA,MACF,OAAO,MAAM;AAAA,MACb,MAAM;AAAA,MACN,OAAO;AAAA;AAAA,EAEX,EAAO;AAAA,IACL,OAAO,MAAM;AAAA;AAAA,EAGf,MAAM,QAAQ,MAAM,SAAS,CAAC;AAAA,EAC9B,MAAM,aACJ,SAAS,OACL,CAAC,IACD,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,WAAW,MAAM,SAAS,WAAW,KAAK,WAAW,OAAO,QAAQ,cAAc,CAAC,CAAC;AAAA,EAGzH,SAAS,QAAQ,EAAG,QAAQ,MAAM,UAAU,SAAS,MAAM,SAAS;AAAA,IAClE,WAAW,KACT,YAAY,EAAE,OAAO,MAAM,SAAS,MAAM,SAAS,WAAW,MAAM,QAAS,OAAO,QAAQ,cAAc,CAAC,CAC7G;AAAA,EACF;AAAA,EAEA,MAAM,cAAmC,CAAC;AAAA,EAC1C,MAAM,gBAA0B,CAAC;AAAA,EAEjC,IAAI,SAAS,QAAQ,KAAK,cAAc,QAAQ,KAAK,qBAAqB,SAAS;AAAA,IACjF,WAAW,QAAQ,KAAK,UAAU;AAAA,MAAW,cAAc,KAAK,KAAK,IAAI;AAAA,IACzE,WAAW,SAAS,KAAK,UAAU;AAAA,MAAQ,cAAc,KAAK,UAAU,MAAM,MAAM;AAAA,IACpF,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SACE,GAAG,cAAc,KAAK,IAAI,wEAC1B,4FACA;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,cAAc;AAAA,IAChB,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SACE,qGACA,8FACC,SAAS,OACN,yFACA;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,WAAW,UAAU;AAAA,IACvB,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SACE,sGACA;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,MAAM,SAAS,GAAG;AAAA,IACpB,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS,uBAAuB,MAAM;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,SAAS,SAAS,KAAK,aAAa,QAAQ,KAAK,cAAc;AAAA,IACjE,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WAAW,CAAC,gBAAgB,WAAW,YAAY,cAAc,WAAW;AAAA,EAElF,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB,SAAS,QAAQ,KAAK,cAAc,OAAO,OAAO,KAAK;AAAA,IACzE,2BAA2B;AAAA,EAC7B;AAAA;;AMnNF,sBAAS,sCAAW;AAGpB,sCAAqB,kFAA8D;AAY5E,IAAM,gBAGT,OAAO,OAAO,EAAE,UAAU,KAAK,oBAAoB,KAAK,CAAC;AAG7D,IAAM,iBAAoC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIA,SAAS,SAAS,CAAC,QAAwC;AAAA,EACzD,OAAO,IAAI,YAAU,EAAE,MAAM,gBAAgB,SAAS,OAAO,SAAS,MAAM,CAAC,EAAE,CAAC;AAAA;AAGlF,SAAS,QAAQ,CAAC,OAAqD;AAAA,EACrE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IACrE,QACD;AAAA;AAGN,SAAS,GAAG,CAAC,OAAoC;AAAA,EAC/C,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAChE,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,SAAS,OAAO,KAAK,CAAC;AAAA,IAAG,OAAO,OAAO,KAAK;AAAA,EACpG;AAAA;AAGF,SAAS,IAAI,CAAC,OAAoC;AAAA,EAChD,OAAO,OAAO,UAAU,YAAY,MAAM,SAAS,IAAI,QAAQ;AAAA;AAGjE,SAAS,YAAY,CAAC,QAA6F;AAAA,EACjH,QAAQ,MAAM,oBAAoB;AAAA,EAClC,MAAM,MAA8B,CAAC;AAAA,EACrC,WAAW,OAAO,gBAAgB;AAAA,IAChC,MAAM,MAAM,KAAK;AAAA,IACjB,MAAM,QAAQ,MAAM,QAAQ,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI;AAAA,IACpD,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW;AAAA,MAAG;AAAA,IAIrD,MAAM,QAAQ,kBAAkB,QAAQ,aAAa,EAAE,MAAM,MAAM,CAAC;AAAA,IACpE,IAAI,OAAO,MAAM,SAAS,cAAc,qBAAqB,GAAG,MAAM,MAAM,GAAG,cAAc,kBAAkB,YAAO;AAAA,EACxH;AAAA,EACA,OAAO;AAAA;AASF,SAAS,iBAAiB,CAAC,QAKnB;AAAA,EACb,QAAQ,SAAS,SAAS;AAAA,EAC1B,MAAM,WAAW,OAAO,YAAY,cAAc;AAAA,EAClD,MAAM,kBAAkB,OAAO,oBAAoB;AAAA,EACnD,IAAI,CAAC,OAAO,UAAU,QAAQ,KAAK,WAAW,GAAG;AAAA,IAC/C,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,4CAA4C,OAAO,QAAQ,KAAK,MAAM,EAAE,SAAS,EAAE,CAAC;AAAA,EAC1I;AAAA,EAEA,IAAI,SAAkB;AAAA,EACtB,IAAI,OAAO,YAAY,UAAU;AAAA,IAC/B,IAAI;AAAA,MACF,SAAS,KAAK,MAAM,OAAO;AAAA,MAC3B,MAAM;AAAA,MAEN,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM,EAAE,QAAQ,uBAAuB,KAAK;AAAA,MAC9C,CAAC;AAAA;AAAA,EAEL;AAAA,EACA,MAAM,QAAQ,MAAM,QAAQ,MAAM,IAAI,OAAO,KAAK;AAAA,EAClD,MAAM,UAAU,SAAS,KAAK;AAAA,EAC9B,MAAM,UAAU,YAAY,YAAY,YAAY,SAAS,QAAQ,OAAO;AAAA,EAC5E,IAAI,YAAY,WAAW;AAAA,IACzB,MAAM,UAAU,EAAE,SAAS,iGAA4F,CAAC;AAAA,EAC1H;AAAA,EAEA,IAAI,QAAQ;AAAA,EACZ,IAAI,YAAY;AAAA,EAChB,MAAM,QAAQ,CAAC,SAA4C;AAAA,IACzD;AAAA,IACA,MAAM,cAAc,MAAM,QAAQ,KAAK,QAAQ,IAAK,KAAK,WAAyB,CAAC;AAAA,IACnF,MAAM,WAAuB,CAAC;AAAA,IAC9B,WAAW,SAAS,aAAa;AAAA,MAC/B,MAAM,SAAS,SAAS,KAAK;AAAA,MAC7B,IAAI,WAAW;AAAA,QAAW;AAAA,MAC1B,IAAI,SAAS,UAAU;AAAA,QACrB,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MACA,SAAS,KAAK,MAAM,MAAM,CAAC;AAAA,IAC7B;AAAA,IACA,MAAM,aAAa,IAAI,KAAK,oBAAoB;AAAA,IAChD,MAAM,aAAa,IAAI,KAAK,cAAc;AAAA,IAC1C,OAAO;AAAA,MACL,UAAU,KAAK,KAAK,YAAY,KAAK;AAAA,SACjC,KAAK,KAAK,gBAAgB,MAAM,YAAY,CAAC,IAAI,EAAE,UAAU,KAAK,KAAK,gBAAgB,EAAY;AAAA,SACnG,KAAK,KAAK,QAAQ,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,EAAY;AAAA,SAChF,KAAK,KAAK,aAAa,MAAM,YAAY,CAAC,IAAI,EAAE,WAAW,KAAK,KAAK,aAAa,EAAY;AAAA,SAC9F,KAAK,KAAK,sBAAsB,MAAM,YAAY,CAAC,IAAI,EAAE,oBAAoB,KAAK,KAAK,sBAAsB,EAAY;AAAA,MAC7H,sBAAsB,IAAI,KAAK,eAAe,KAAK;AAAA,MACnD,oBAAoB,IAAI,KAAK,aAAa,KAAK;AAAA,MAC/C,eAAe,IAAI,KAAK,YAAY,KAAK;AAAA,MACzC,WAAW,IAAI,KAAK,aAAa,KAAK;AAAA,SAClC,SAAS,aAAa,eAAe,YAAY,EAAE,mBAAmB,WAAW,IAAI,CAAC;AAAA,SACtF,SAAS,aAAa,eAAe,YAAY,EAAE,WAAW,IAAI,CAAC;AAAA,SACnE,SAAS,aAAa,IAAI,KAAK,eAAe,MAAM,YAAY,EAAE,aAAa,IAAI,KAAK,eAAe,EAAY,IAAI,CAAC;AAAA,SACxH,IAAI,KAAK,yBAAyB,MAAM,YAAY,CAAC,IAAI,EAAE,qBAAqB,IAAI,KAAK,yBAAyB,EAAY;AAAA,SAC9H,IAAI,KAAK,oBAAoB,MAAM,YAAY,CAAC,IAAI,EAAE,iBAAiB,IAAI,KAAK,oBAAoB,EAAY;AAAA,SAChH,IAAI,KAAK,qBAAqB,MAAM,YAAY,CAAC,IAAI,EAAE,kBAAkB,IAAI,KAAK,qBAAqB,EAAY;AAAA,SACnH,IAAI,KAAK,mBAAmB,MAAM,YAAY,CAAC,IAAI,EAAE,gBAAgB,IAAI,KAAK,mBAAmB,EAAY;AAAA,SAC7G,IAAI,KAAK,sBAAsB,MAAM,YAAY,CAAC,IAAI,EAAE,mBAAmB,IAAI,KAAK,sBAAsB,EAAY;AAAA,SACtH,KAAK,KAAK,cAAc,MAAM,YAAY,CAAC,IAAI,EAAE,YAAY,KAAK,KAAK,cAAc,EAAY;AAAA,MACrG,YAAY,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAAA,MAClD;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,OAAO,MAAM,OAAO;AAAA,EAC1B,MAAM,eAAe,IAAI,UAAU,gBAAgB;AAAA,EACnD,MAAM,gBAAgB,SAAS,YAAY,IAAI,UAAU,iBAAiB,IAAI;AAAA,EAC9E,OAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX;AAAA,OACI,iBAAiB,YAAY,CAAC,IAAI,EAAE,gBAAgB,aAAa;AAAA,OACjE,kBAAkB,YAAY,CAAC,IAAI,EAAE,iBAAiB,cAAc;AAAA,EAC1E;AAAA;AAKF,IAAM,gBAAmC,CAAC,UAAU,UAAU,UAAU,SAAS,YAAY,UAAU,QAAQ,SAAS,SAAS,UAAU,QAAQ,QAAQ,IAAI;AAO/J,IAAM,oBAA4B;AAElC,SAAS,MAAM,CAAC,QAAwE;AAAA,EACtF,OAAO,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,OAAO,SAAS,MAAM,OAAO,QAAQ,CAAC,EAAE,CAAC;AAAA;AAUpG,SAAS,qBAAqB,CAAC,QAAiD;AAAA,EAC9E,MAAM,aAAa,aAAa,EAAE,MAAM,OAAO,KAAK,CAAC;AAAA,EACrD,MAAM,OAAO,WAAW,QAAQ,SAAS,EAAE;AAAA,EAC3C,IAAI,KAAK,SAAS,GAAG,GAAG;AAAA,IACtB,OAAO,OAAO,EAAE,SAAS,wFAAwF,MAAM,CAAC,EAAE,CAAC;AAAA,EAC7H;AAAA,EACA,MAAM,UAAU,KAAK,MAAM,oBAAoB,IAAI,MAAM,IAAI,YAAY;AAAA,EACzE,IAAI,cAAc,SAAS,MAAM,GAAG;AAAA,IAClC,OAAO,OAAO,EAAE,SAAS,6BAA6B,gEAAgE,MAAM,EAAE,WAAW,OAAO,EAAE,CAAC;AAAA,EACrJ;AAAA,EACA,IAAI,WAAW,YAAY,WAAW,UAAU,WAAW,WAAW,WAAW,UAAU;AAAA,IACzF,OAAO,OAAO,EAAE,SAAS,uEAAuE,UAAU,QAAQ,MAAM,EAAE,WAAW,OAAO,EAAE,CAAC;AAAA,EACjJ;AAAA,EACA,IAAI,kBAAkB,KAAK,IAAI,GAAG;AAAA,IAChC,OAAO,OAAO,EAAE,SAAS,qIAAqI,MAAM,EAAE,WAAW,OAAO,EAAE,CAAC;AAAA,EAC7L;AAAA,EACA;AAAA;AAGF,SAAS,oBAAoB,CAAC,QAAgC;AAAA,EAC5D,MAAM,UAAU,sBAAsB,MAAM;AAAA,EAC5C,IAAI,YAAY;AAAA,IAAW,MAAM;AAAA;AAS5B,SAAS,gBAAgB,CAAC,QAAmC;AAAA,EAClE,OAAO,sBAAsB,MAAM,MAAM;AAAA;AAK3C,eAAe,eAAe,CAAC,QAIN;AAAA,EACvB,QAAQ,UAAU,SAAS,mBAAmB;AAAA,EAC9C,MAAM,QAAQ,uBAAuB,EAAE,SAAS,OAAO,cAAc,CAAC;AAAA,EACtE,MAAM,OAAO,MAAM,SAAS,EAAE,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,EACtE,MAAM,MAAM,KAAK,MAAM,CAAC;AAAA,EACxB,MAAM,YAAY,IAAI,iBAAiB;AAAA,EACvC,MAAM,YAAY,IAAI,iBAAiB;AAAA,EACvC,MAAM,iBAAiB,CAAC,aAAa,CAAC;AAAA,EACtC,OAAO;AAAA,IACL,aAAa,OAAO,IAAI,kBAAkB,SAAS;AAAA,IACnD,aAAa,OAAO,IAAI,kBAAkB,SAAS;AAAA,IACnD;AAAA,IACA;AAAA,IACA,kBAAkB,OAAO,IAAI,uBAAuB,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,OACI,iBACA,CAAC,IACD;AAAA,MACE,QACE,0BAA0B,OAAO,IAAI,kBAAkB,SAAS,eAChE,GAAG,YAAY,mBAAmB,iEAClC;AAAA,IACJ;AAAA,EACN;AAAA;AAKF,SAAS,eAAe,CAAC,QAA0C;AAAA,EACjE,IAAI,OAAO,YAAY,YAAY;AAAA,IACjC,MAAM,uBAAsB;AAAA,MAC1B,SAAS,OAAO;AAAA,MAChB,SAAS;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,OAAO,eAAc,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA;AAUlD,eAAsB,UAAU,CAAC,QAeJ;AAAA,EAC3B,QAAQ,UAAU,KAAK,eAAe;AAAA,EACtC,MAAM,OAAoB,OAAO,QAAQ;AAAA,EACzC,MAAM,UAAU,gBAAgB,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,EAC3D,MAAM,WAAqB,CAAC;AAAA,EAE5B,IAAI,SAAS,WAAW;AAAA,IACtB,IAAI,OAAO,mBAAmB,MAAM;AAAA,MAClC,MAAM,OAAO;AAAA,QACX,SACE;AAAA,QACF,MAAM,EAAE,KAAK;AAAA,MACf,CAAC;AAAA,IACH;AAAA,IACA,IAAI,OAAO,iBAAiB,MAAM;AAAA,MAChC,MAAM,OAAO;AAAA,QACX,SACE;AAAA,QACF,MAAM,EAAE,KAAK;AAAA,MACf,CAAC;AAAA,IACH;AAAA,IACA,qBAAqB,EAAE,MAAM,IAAI,KAAK,CAAC;AAAA,IACvC,SAAS,KACP,sMACF;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,eAAe,YAAY,CAAC,IAAI,OAAO,KAAK,UAAU;AAAA,EAC1E,MAAM,gBAAgB,YAAY,SAAS,KAAK,SAAS;AAAA,EACzD,MAAM,MAAM,OAAO,UACjB,SAAS,EAAE,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,EACrD,MAAM,UAAU,CAAC,UACf,uBAAuB,EAAE,SAAS,MAAM,CAAC;AAAA,EAE3C,IAAI,eAAe;AAAA,IACjB,MAAM,IAAI,QAAQ,cAAc,CAAC;AAAA,IACjC,IAAI,SAAS;AAAA,MAAW,MAAM,IAAI,QAAQ,iBAAiB,CAAC;AAAA,EAC9D;AAAA,EACA,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,iBAAiB;AAAA,MACpC;AAAA,MACA,SAAS,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,SACI,eAAe,YAAY,CAAC,IAAI,EAAE,WAAW;AAAA,SAC7C,OAAO,iCAAiC,YAAY,CAAC,IAAI,EAAE,8BAA8B,OAAO,6BAA6B;AAAA,SAC7H,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,SACjE,OAAO,oBAAoB,YAAY,CAAC,IAAI,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,IAC5F,CAAC;AAAA,IACD,IAAI;AAAA,MAAe,MAAM,IAAI,QAAQ,eAAe,CAAC;AAAA,IACrD,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,IAAI,eAAe;AAAA,MAGjB,MAAM,IAAI,QAAQ,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC,CAAC;AAAA,IACtD;AAAA,IACA,MAAM;AAAA;AAAA;AAgBV,eAAsB,gBAAgB,CAAC,QAWV;AAAA,EAC3B,QAAQ,UAAU,KAAK,MAAM,eAAe;AAAA,EAC5C,MAAM,UAAU,gBAAgB,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,EAC3D,MAAM,WAAW,OAAO,YAAY,CAAC;AAAA,EACrC,MAAM,cAAc,eAAe,YAAY,CAAC,IAAI,OAAO,KAAK,UAAU;AAAA,EAC1E,MAAM,MAAM,OAAO,UACjB,SAAS,EAAE,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,EAErD,WAAW,OAAO,aAAa;AAAA,IAC7B,MAAM,QAAQ,aAAa;AAAA,IAC3B,MAAM,YAAY,uBAAuB;AAAA,MACvC;AAAA,MACA,OAAO;AAAA,MACP,KAAK,GAAG,WAAW,gBAAgB;AAAA,MACnC,OAAO,UAAU,QAAQ,UAAU,YAAY,OAAO,OAAO,KAAK;AAAA,IACpE,CAAC;AAAA,IACD,MAAM,IAAI,SAAS;AAAA,EACrB;AAAA,EAEA,MAAM,UAAU,MAAM,gBAAgB,EAAE,UAAU,SAAS,gBAAgB,YAAY,CAAC;AAAA,EACxF,IAAI,CAAC,QAAQ,gBAAgB;AAAA,IAC3B,IAAI,OAAO,iCAAiC,MAAM;AAAA,MAChD,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,wEAAwE,QAAQ,UAAU;AAAA,QACnG,MAAM,EAAE,aAAa,QAAQ,aAAa,WAAW,QAAQ,WAAW,WAAW,QAAQ,UAAU;AAAA,MACvG,CAAC;AAAA,IACH;AAAA,IACA,SAAS,KAAK,QAAQ,UAAU,4DAA4D;AAAA,EAC9F;AAAA,EAEA,MAAM,UAAU,sBAAsB;AAAA,IACpC;AAAA,IACA,OAAO,EAAE,MAAM,IAAI,MAAM,QAAQ,CAAC,GAAG,IAAI,MAAM,GAAG,WAAW,OAAO;AAAA,IACpE,SAAS,SAAS,YAAY,EAAE,SAAS,MAAM,SAAS,KAAK,IAAI,CAAC;AAAA,EACpE,CAAC;AAAA,EACD,MAAM,OAAO,MAAM,IAAI,OAAO;AAAA,EAC9B,MAAM,UAAU,KAAK,KAAK,iBAAiB,KAAK,KAAK,iBAAiB,KAAK,KAAK;AAAA,EAChF,MAAM,SAAS,kBAAkB;AAAA,IAC/B;AAAA,IACA;AAAA,OACI,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,OACjE,OAAO,oBAAoB,YAAY,CAAC,IAAI,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,EAC5F,CAAC;AAAA,EACD,IAAI,OAAO;AAAA,IAAW,SAAS,KAAK,6BAA6B,OAAO,iDAAiD;AAAA,EACzH,IAAI,SAAS,YAAY;AAAA,IACvB,SAAS,KACP,iKACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA,MAAM,OAAO;AAAA,IACb,WAAW,OAAO;AAAA,IAClB,WAAW,OAAO;AAAA,IAClB,yBAAyB,OAAO,KAAK;AAAA,OACjC,OAAO,mBAAmB,YAAY,CAAC,IAAI,EAAE,gBAAgB,OAAO,eAAe;AAAA,OACnF,OAAO,oBAAoB,YAAY,CAAC,IAAI,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,IAC1F,kBAAkB,OAAO,oBAAoB;AAAA,IAC7C;AAAA,IACA;AAAA,EACF;AAAA;AAQF,eAAsB,gBAAgB,CAAC,QAiBV;AAAA,EAC3B,QAAQ,QAAQ,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,UAAU,gBAAgB,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,EAC3D,MAAM,OAAoB,OAAO,QAAQ;AAAA,EACzC,MAAM,WAAW,iBAAiB,EAAE,OAAO,CAAC;AAAA,EAC5C,MAAM,cAAc,0BAA0B,EAAE,WAAW,OAAO,cAAc,CAAC,GAAG,SAAS,OAAO,SAAS,UAAU,OAAO,WAAW,SAAS,CAAC;AAAA,EACnJ,MAAM,OAAO,gBAAgB,OAAO,WAAW,KAAK,UAAU,oBAAoB,YAAY;AAAA,EAC9F,MAAM,OAAO,WAAW;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,OACI,SAAS,YAAY,CAAC,IAAI,EAAE,KAAK;AAAA,OACjC,OAAO,qBAAqB,YAAY,CAAC,IAAI,EAAE,yBAAyB,OAAO,iBAAiB;AAAA,OAChG,OAAO,kBAAkB,YAAY,CAAC,IAAI,EAAE,eAAe,OAAO,cAAc;AAAA,EACtF,CAAC;AAAA,EACD,IAAI,SAAS,cAAc,KAAK,SAAS,CAAC,GAAG,SAAS,GAAG;AAAA,IACvD,MAAM,OAAO;AAAA,MACX,SAAS,GAAG,SAAS;AAAA,MACrB,MAAM,EAAE,OAAO,OAAO;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EACA,MAAM,WAAW,iBAAgB,EAAE,SAAS,WAAW,KAAK,UAAU,CAAC;AAAA,EACvE,OAAO,WAAW;AAAA,IAChB,UAAU,OAAO;AAAA,IACjB,SAAS,OAAO;AAAA,IAChB,KAAK,EAAE,MAAM,SAAS,MAAM,QAAQ,SAAS,OAAO;AAAA,IACpD;AAAA,OACI,OAAO,mBAAmB,YAAY,CAAC,IAAI,EAAE,gBAAgB,OAAO,eAAe;AAAA,IAEvF,cAAc;AAAA,OACV,OAAO,eAAe,YAAY,CAAC,IAAI,EAAE,YAAY,OAAO,WAAW;AAAA,OACvE,OAAO,iCAAiC,YAAY,CAAC,IAAI,EAAE,8BAA8B,OAAO,6BAA6B;AAAA,OAC7H,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,OACjE,OAAO,oBAAoB,YAAY,CAAC,IAAI,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,EAC5F,CAAC;AAAA;;AC7eH,sBAAS;AAET,mCAAS;AA6DF,IAAM,iCAUT,OAAO,OAAO;AAAA,EAChB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,aAAa;AACf,CAAC;AAYD,IAAM,gBAAiD,CAAC,OAAO,YAAY,SAAS;AAEpF,SAAS,WAAW,CAAC,QAAwE;AAAA,EAC3F,OAAO,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,OAAO,SAAS,MAAM,OAAO,QAAQ,CAAC,EAAE,CAAC;AAAA;AAGhG,SAAS,aAAa,CAAC,OAA+C;AAAA,EACpE,OAAO,OAAO,UAAU,YAAa,cAAoC,SAAS,KAAK;AAAA;AAGzF,SAAS,eAAe,CAAC,QAAoD;AAAA,EAC3E,QAAQ,OAAO,WAAW;AAAA,EAC1B,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,GAAG;AAAA,IACrE,MAAM,YAAY;AAAA,MAChB,SAAS,GAAG,2EAA2E,OAAO,KAAK;AAAA,MACnG,MAAM,EAAE,QAAQ,MAAM;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAUF,SAAS,mBAAmB,CAAC,QAGtB;AAAA,EACZ,MAAM,MAAM,OAAO,OAAO,KAAK;AAAA,EAC/B,IAAI,QAAQ,aAAa,QAAQ;AAAA,IAAI;AAAA,EACrC,MAAM,WAAW,+BAA+B;AAAA,EAChD,OAAO,UAAU,kBAAkB,QAAQ,IAAI,MAAM,GAAG;AAAA,EACxD,MAAM,OAAO,UAAU,KAAK,EAAE,YAAY;AAAA,EAC1C,IAAI,KAAK,SAAS,KAAK,CAAC,cAAc,IAAI,GAAG;AAAA,IAC3C,MAAM,YAAY;AAAA,MAChB,SAAS,GAAG,aAAa,8DAA8D,cAAc,KAAK,KAAK,iBAAY;AAAA,MAC3H,MAAM,EAAE,UAAU,OAAO,IAAI;AAAA,IAC/B,CAAC;AAAA,EACH;AAAA,EACA,IAAI,kBAAkB;AAAA,IAAW,OAAO,EAAE,SAAS,MAAM,cAAc,+BAA+B,aAAa;AAAA,EACnH,MAAM,YAAY,cAAc,KAAK;AAAA,EACrC,MAAM,SAAS,kBAAkB,KAAK,SAAS,IAAI,OAAO,SAAS,IAAI,OAAO;AAAA,EAC9E,IAAI,CAAC,OAAO,SAAS,MAAM,GAAG;AAAA,IAC5B,MAAM,YAAY;AAAA,MAChB,SAAS,GAAG,aAAa;AAAA,MACzB,MAAM,EAAE,UAAU,OAAO,IAAI;AAAA,IAC/B,CAAC;AAAA,EACH;AAAA,EACA,OAAO,EAAE,SAAS,MAAM,cAAc,OAAO;AAAA;AAIxC,SAAS,yBAAyB,CAAC,QAAiD;AAAA,EACzF,QAAQ,WAAW;AAAA,EACnB,MAAM,OAAO,aAAa,OAAO,SAAS,SAAS,OAAO,UAAU,OAAO,WAAW,QAAQ,CAAC,aAAU,OAAO,uBAAuB,OAAO,mBAAmB,IAAI,KAAK,MAAM,OAAO,gBAAgB,yBAAsB;AAAA,EAC7N,IAAI,OAAO,SAAS;AAAA,IAAW,OAAO,GAAG,aAAU,OAAO,KAAK;AAAA,EAC/D,IAAI,OAAO,mBAAmB,WAAW;AAAA,IACvC,MAAM,SAAS,OAAO,iBAAiB,YAAY,KAAK,KAAK,OAAO;AAAA,IACpE,OAAO,GAAG,8BAA2B,OAAO,iBAAiB;AAAA,EAC/D;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,cAAc,CAAC,WAAsC;AAAA,EACzD,QAAQ,KAAK,0BAA0B,EAAE,OAAO,CAAC,CAAC;AAAA;AAS7C,SAAS,2BAA2B,CAAC,QAGC;AAAA,EAC3C,QAAQ,YAAY;AAAA,EACpB,MAAM,UAAU,oBAAoB,EAAE,OAAO,OAAO,IAAI,CAAC;AAAA,EACzD,IAAI,YAAY,aAAa,YAAY;AAAA,IAAW;AAAA,EAEpD,MAAM,UAAU,SAAS,WAAW,SAAS,WAAW,+BAA+B;AAAA,EACvF,IAAI,CAAC,cAAc,OAAO,GAAG;AAAA,IAC3B,MAAM,YAAY;AAAA,MAChB,SAAS,sCAAsC,cAAc,KAAK,KAAK,UAAU,OAAO,OAAO;AAAA,MAC/F,MAAM,EAAE,QAAQ;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EACA,MAAM,eACJ,SAAS,iBAAiB,YACtB,SAAS,gBAAgB,+BAA+B,eACxD,gBAAgB,EAAE,OAAO,QAAQ,cAAc,QAAQ,cAAc,CAAC;AAAA,EAC5E,IAAI,SAAS,SAAS,aAAa,OAAO,QAAQ,SAAS,YAAY;AAAA,IACrE,MAAM,YAAY,EAAE,SAAS,uCAAuC,MAAM,CAAC,EAAE,CAAC;AAAA,EAChF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,MAAM,SAAS,QAAQ;AAAA,IACvB,cAAc,SAAS,iBAAiB;AAAA,IACxC,iBAAiB,YAAY,cAAc,SAAS,YAAY,aAAa,QAAQ,iBAAiB;AAAA,EACxG;AAAA;AAKF,SAAS,SAAS,CAAC,MAAwB;AAAA,EACzC,MAAM,SAAS,KAAK,YAAY,KAAK;AAAA,EACrC,OAAO,WAAW,YAAY,KAAK,WAAW,GAAG,KAAK,eAAe;AAAA;AAGvE,SAAS,YAAY,CAAC,QAA6E;AAAA,EACjG,MAAM,MAAuD,CAAC;AAAA,EAC9D,MAAM,OAAO,CAAC,SAAyB;AAAA,IACrC,IAAI,KAAK,gBAAgB,aAAa,KAAK,cAAc,GAAG;AAAA,MAC1D,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,GAAG,OAAO,KAAK,aAAa,MAAM,KAAK,cAAc,EAAE,CAAC;AAAA,IACzF;AAAA,IACA,WAAW,SAAS,KAAK;AAAA,MAAU,KAAK,KAAK;AAAA;AAAA,EAE/C,KAAK,OAAO,IAAI;AAAA,EAChB,IAAI,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAAA,EACpC,OAAO;AAAA;AAGT,IAAM,cAAc,CAAC,UAA0B,MAAM,eAAe,OAAO;AAUpE,SAAS,aAAa,CAAC,QAA0E;AAAA,EACtG,QAAQ,MAAM,SAAS;AAAA,EACvB,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,QAAQ,SAAS,YAAY,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AAAA,EAC7D,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,SAAS,WAAW;AAAA,IACtB,MAAM,cAAc,KAAK,mBAAmB,KAAK;AAAA,IACjD,MAAM,KAAK,gBAAgB,YAAY,UAAU,IAAI,IAAI,GAAG,UAAU,IAAI,KAAK,YAAY,QAAQ,CAAC,MAAM;AAAA,IAC1G,MAAM,UAAU,MAAM;AAAA,IACtB,IAAI,YAAY;AAAA,MAAW,MAAM,KAAK,GAAG,QAAQ,cAAc,YAAY,QAAQ,KAAK,UAAU,YAAY,QAAQ,IAAI,GAAG;AAAA,IAC7H,IAAI,KAAK,oBAAoB;AAAA,MAAW,MAAM,KAAK,cAAc,YAAY,KAAK,eAAe,GAAG;AAAA,IACpG,IAAI,KAAK,qBAAqB,aAAa,KAAK,mBAAmB;AAAA,MAAG,MAAM,KAAK,eAAe,YAAY,KAAK,gBAAgB,GAAG;AAAA,EACtI,EAAO;AAAA,IACL,MAAM,KAAK,GAAG,UAAU,IAAI,UAAU,KAAK,gCAA2B,YAAY,KAAK,aAAa,eAAe;AAAA;AAAA,EAErH,IAAI,KAAK;AAAA,IAAW,MAAM,KAAK,qBAAqB,KAAK,iBAAiB;AAAA,EAC1E,OAAO;AAAA,IACL,SAAS,MAAM,KAAK,QAAK;AAAA,IACzB,OAAO;AAAA,OACH,KAAK,oBAAoB,YAAY,CAAC,IAAI,EAAE,aAAa,KAAK,gBAAgB;AAAA,OAC9E,KAAK,mBAAmB,YAAY,CAAC,IAAI,EAAE,YAAY,KAAK,eAAe;AAAA,OAC3E,KAAK,oBAAoB,YAAY,CAAC,IAAI,EAAE,eAAe,KAAK,gBAAgB;AAAA,OAChF,MAAM,WAAW,IAAI,CAAC,IAAI,EAAE,MAAM;AAAA,EACxC;AAAA;AAmCF,SAAS,SAAS,CAAC,OAAwB;AAAA,EACzC,OAAO,iBAAiB,cAAY,MAAM,OAAO;AAAA;AAQ5C,SAAS,0BAA0B,CAAC,QAId;AAAA,EAC3B,QAAQ,QAAQ,SAAS,YAAY;AAAA,EACrC,MAAM,cAAc,IAAI;AAAA,EACxB,MAAM,cAAc,QAAQ,SAAS;AAAA,EACrC,MAAM,YAAY,+BAA+B;AAAA,EAIjD,MAAM,qBAAqB,QAAQ,SAAS,qBAAqB,mBAAmB,EAAE,SAAS,UAAU,IAAI;AAAA,EAE7G,MAAM,SAAS,CAAC,eAA0C;AAAA,IAGxD,IAAI;AAAA,MACF,OAAO,KAAK,UAAU;AAAA,MACtB,MAAM;AAAA;AAAA,EAKV,MAAM,UAAU,OAAO,WAA8B,SAAwD;AAAA,IAC3G,MAAM,MAAM,OAAO,OAA0D;AAAA,MAC3E,IAAI,SAAS,WAAW;AAAA,QACtB,MAAM,WAAW,wBAAuB,EAAE,SAAS,OAAO,kBAAkB,CAAC;AAAA,QAC7E,MAAM,GAAG,QAAQ,EAAE,MAAM,SAAS,MAAM,QAAQ,SAAS,OAAO,CAAC;AAAA,MACnE;AAAA,MAIA,MAAM,WAAW,UAAU,MACvB,OAAO,WACJ,MAAM,GAAG,cAAc,EAAE,MAAM,MAAM,MAAM,QAAQ,MAAM,UAAU,CAAC,EAAE,CAAC,GAAG,OAC7E,OAAO,UACL,GAAG,QAAQ;AAAA,QACT,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,UAAW,MAAM,QAAQ,KAAK,IAAI,GAAG,iBAAiB,KAAK,IAAI,KAAM;AAAA,MACzG,CAAC;AAAA,MACP,MAAM,SAAS,MAAM,iBAAiB;AAAA,QACpC;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB,KAAK,EAAE,MAAM,UAAU,MAAM,QAAQ,UAAU,OAAO;AAAA,QACtD;AAAA,QACA,iBAAiB,OAAO;AAAA,MAC1B,CAAC;AAAA,MACD,OAAO,cAAc;AAAA,QACnB,MAAM;AAAA,UACJ,MAAM,OAAO;AAAA,UACb,WAAW,OAAO;AAAA,UAClB,WAAW,OAAO;AAAA,aACd,OAAO,mBAAmB,YAAY,CAAC,IAAI,EAAE,gBAAgB,OAAO,eAAe;AAAA,aACnF,OAAO,oBAAoB,YAAY,CAAC,IAAI,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,QAC5F;AAAA,QACA;AAAA,MACF,CAAC;AAAA;AAAA,IAEH,OAAO,uBAAuB,YAAY,QAAQ,YAAY,GAAG,IAAI,QAAQ,YAAY,KAAK,kBAAkB;AAAA;AAAA,EAGlH,MAAM,WAAW,CAAC,WAA8B,MAAmB,SAAoC;AAAA,IAGrG,MAAM,OAAO,IAAI,QAAc,CAAC,YAAY;AAAA,MAC1C,WAAW,MAAM;AAAA,QACf,QAAQ,WAAW,IAAI,EAAE,KACvB,CAAC,SAAS;AAAA,UACR,OAAO,KAAK,MAAM,KAAK,CAAC;AAAA,UACxB,QAAQ;AAAA,WAEV,CAAC,UAAmB;AAAA,UAElB,OAAO,KAAK,MAAM,gBAAgB,SAAS,cAAc,UAAU,KAAK,EAAE,CAAC;AAAA,UAC3E,QAAQ;AAAA,SAEZ;AAAA,SACC,CAAC;AAAA,KACL;AAAA,IACD,YAAY,IAAI,IAAI;AAAA,IACf,KAAK,QAAQ,MAAM,YAAY,OAAO,IAAI,CAAC;AAAA;AAAA,EAGlD,OAAO;AAAA,IACL;AAAA,IACA,SAAS,CAAC,cAAoB;AAAA,MAC5B,IAAI,UAAU,aAAa,OAAO;AAAA,QAAc;AAAA,MAChD,MAAM,OAA4B;AAAA,QAChC,OAAO,UAAU;AAAA,QACjB,QAAQ,UAAU;AAAA,QAClB,MAAM,UAAU;AAAA,QAChB,YAAY,UAAU;AAAA,QACtB,gBAAgB,UAAU,OAAO;AAAA,QACjC,eAAe,UAAU;AAAA,MAC3B;AAAA,MACA,IAAI,OAAO,YAAY,OAAO;AAAA,QAC5B,OAAO,IAAI;AAAA,QACX;AAAA,MACF;AAAA,MACA,IAAI,CAAC,aAAa;AAAA,QAChB,OAAO,KAAK,MAAM,gBAAgB,UAAU,CAAC;AAAA,QAC7C;AAAA,MACF;AAAA,MACA,IAAI,UAAU,eAAe;AAAA,QAC3B,OAAO,KAAK,MAAM,gBAAgB,iBAAiB,CAAC;AAAA,QACpD;AAAA,MACF;AAAA,MACA,IAAI,CAAC,iBAAiB,EAAE,MAAM,UAAU,KAAK,CAAC,GAAG;AAAA,QAC/C,OAAO,KAAK,MAAM,gBAAgB,aAAa,CAAC;AAAA,QAChD;AAAA,MACF;AAAA,MACA,IAAI,YAAY,QAAQ,+BAA+B,wBAAwB;AAAA,QAC7E,OAAO,KAAK,MAAM,gBAAgB,WAAW,CAAC;AAAA,QAC9C;AAAA,MACF;AAAA,MACA,SAAS,WAAW,OAAO,SAAS,IAAI;AAAA;AAAA,IAE1C,OAAO,YAA2B;AAAA,MAChC,IAAI,YAAY,SAAS;AAAA,QAAG;AAAA,MAC5B,IAAI;AAAA,MACJ,MAAM,QAAQ,IAAI,QAAc,CAAC,YAAY;AAAA,QAC3C,QAAQ,WAAW,SAAS,SAAS;AAAA,OACtC;AAAA,MACD,IAAI;AAAA,QACF,MAAM,QAAQ,KAAK,CAAC,QAAQ,WAAW,CAAC,GAAG,WAAW,CAAC,GAAG,KAAK,CAAC;AAAA,gBAChE;AAAA,QACA,IAAI,UAAU;AAAA,UAAW,aAAa,KAAK;AAAA;AAAA;AAAA,IAG/C,aAAa,MAAc,YAAY;AAAA,EACzC;AAAA;;ACtbF,kCAAS;AAET,0BAAS,0CAAe;AAMxB,IAAM,8BAAsC;AAE5C,IAAM,yBAAiC;AAEvC,IAAM,QAOF,OAAO,OAAO;AAAA,EAChB,eACE;AAAA,EACF,eACE;AAAA,EACF,YAAY;AAAA,EACZ,gBACE;AAAA,EACF,cACE;AAAA,EACF,QAAQ;AACV,CAAC;AAED,SAAS,IAAG,CAAC,OAAwB;AAAA,EACnC,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,SAAS,CAAC;AAAA;AAG9D,eAAe,gBAAgB,CAAC,QAA6G;AAAA,EAC3I,MAAM,QAAQ,wBAAuB,EAAE,SAAS,OAAO,SAAS,OAAO,qBAAqB,CAAC;AAAA,EAC7F,MAAM,OAAO,MAAM,OAAO,SAAS,EAAE,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,EAC7E,MAAM,MAAM,KAAK,MAAM,CAAC;AAAA,EACxB,MAAM,mBAAmB,IAAI,wBAAwB,QAAQ,IAAI,wBAAwB,YAAY,OAAO,OAAO,IAAI,mBAAmB;AAAA,EAC1I,MAAM,SAAS,IAAI,cAAc,QAAQ,IAAI,cAAc,YAAY,OAAO,OAAO,IAAI,SAAS;AAAA,EAClG,OAAO;AAAA,IACL,WAAW,IAAI,iBAAiB,QAAQ,qBAAqB;AAAA,IAC7D,WAAW,qBAAqB,QAAQ,WAAW;AAAA,IACnD;AAAA,IACA;AAAA,IACA,kBAAkB,KAAI,IAAI,mBAAmB;AAAA,IAC7C,cAAc,IAAI,oBAAoB;AAAA,EACxC;AAAA;AAUF,eAAsB,sBAAsB,CAAC,QAMjB;AAAA,EAC1B,QAAQ,aAAa;AAAA,EACrB,IAAI,OAAO,YAAY,YAAY;AAAA,IACjC,MAAM,uBAAsB;AAAA,MAC1B,SAAS,OAAO;AAAA,MAChB,SAAS;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,MAAM,UAAU,eAAc,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,EACzD,MAAM,QAAkB,CAAC,MAAM,eAAe,MAAM,eAAe,MAAM,UAAU;AAAA,EAEnF,MAAM,eAAe,MAAM,iBAAiB,EAAE,UAAU,QAAQ,CAAC;AAAA,EACjE,IAAI,CAAC,aAAa,aAAa,aAAa,WAAW,MAAM;AAAA,IAC3D,MAAM,KAAK,aAAa,YAAY,MAAM,eAAe,oDAAoD;AAAA,IAC7G,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,cAAc,KAAK,cAAc,QAAQ,aAAa,YAAY,MAAM,eAAe,0BAA0B;AAAA,MACjH,kBAAkB,EAAE,YAAY,MAAM,OAAO,MAAM;AAAA,MACnD,YAAY,CAAC;AAAA,MACb,aAAa;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,aAAa,mBAAmB,wBAAwB;AAAA,IAC1D,MAAM,KAAK,MAAM,MAAM;AAAA,IACvB,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,cAAc,KAAK,cAAc,QAAQ,MAAM,OAAO;AAAA,MACtD,kBAAkB,EAAE,YAAY,MAAM,OAAO,MAAM;AAAA,MACnD,YAAY,CAAC;AAAA,MACb,aAAa;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,CAAC,aAAa;AAAA,IAAc,MAAM,KAAK,MAAM,cAAc;AAAA,EAE/D,IAAI,aAA4B;AAAA,EAChC,IAAI,aAAa,oBAAoB,6BAA6B;AAAA,IAChE,MAAM,OAAO,wBAAuB,EAAE,SAAS,OAAO,iBAAiB,QAAQ,aAAa,OAAO,CAAC;AAAA,IACpG,MAAM,WAAW,MAAM,SAAS,EAAE,MAAM,KAAK,MAAM,QAAQ,KAAK,OAAO,CAAC;AAAA,IACxE,MAAM,QAAQ,SAAS,KAAK;AAAA,IAC5B,aAAa,UAAU,QAAQ,UAAU,YAAY,OAAO,OAAO,KAAK;AAAA,EAC1E,EAAO;AAAA,IACL,MAAM,KAAK,gGAAgG;AAAA;AAAA,EAG7G,MAAM,WAAW,wBAAuB;AAAA,IACtC;AAAA,IACA,OAAO;AAAA,IACP,QAAQ,aAAa;AAAA,OACjB,OAAO,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,EAC9D,CAAC;AAAA,EACD,MAAM,OAAO,MAAM,SAAS,EAAE,MAAM,SAAS,MAAM,QAAQ,SAAS,OAAO,CAAC;AAAA,EAC5E,MAAM,cAAc,OAAO,yBAAyB;AAAA,EACpD,MAAM,aAAkC,KAAK,IAAI,CAAC,QAAQ;AAAA,IACxD,MAAM,MAAM,OAAO,IAAI,YAAY,EAAE;AAAA,IACrC,OAAO;AAAA,MACL,SAAS,IAAI,eAAe,QAAQ,IAAI,eAAe,YAAY,OAAO,OAAO,IAAI,UAAU;AAAA,MAC/F,WAAW,cAAc,MAAM,aAAa,EAAE,MAAM,IAAI,CAAC;AAAA,MACzD,UAAU,CAAC;AAAA,MACX,OAAO,KAAI,IAAI,QAAQ;AAAA,MACvB,iBAAiB,KAAI,IAAI,kBAAkB;AAAA,MAC3C,gBAAgB,KAAI,IAAI,iBAAiB;AAAA,MACzC,eAAe,KAAI,IAAI,gBAAgB;AAAA,MACvC,eAAe,KAAI,IAAI,gBAAgB;AAAA,MACvC,MAAM,KAAI,IAAI,OAAO;AAAA,MACrB,iBAAiB,KAAI,IAAI,kBAAkB;AAAA,MAC3C,kBAAkB,KAAI,IAAI,mBAAmB;AAAA,MAC7C,gBAAgB,KAAI,IAAI,iBAAiB;AAAA,MACzC,mBAAmB,KAAI,IAAI,oBAAoB;AAAA,IACjD;AAAA,GACD;AAAA,EAED,OAAO;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,kBAAkB,EAAE,YAAY,OAAO,eAAe,KAAK;AAAA,IAC3D;AAAA,IACA,aAAa;AAAA,IACb;AAAA,EACF;AAAA;;AC9IF,sBAAS;AAgBF,IAAM,wBAWT,OAAO,OAAO;AAAA,EAChB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,eAAe;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,QAAyG;AAAA,EACxH,QAAQ,OAAO,UAAU,KAAK,KAAK,SAAS;AAAA,EAC5C,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,IAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,OAAO,QAAQ,KAAK;AAAA,IAC1D,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,GAAG,mCAAmC,WAAW,YAAY,OAAO,KAAK;AAAA,MAClF,MAAM,GAAG,OAAO,MAAM;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAaF,SAAS,yBAAyB,CAAC,QAMZ;AAAA,EAC5B,MAAM,kBAAkB,QAAQ;AAAA,IAC9B,OAAO,OAAO;AAAA,IACd,UAAU,sBAAsB;AAAA,IAChC,KAAK,sBAAsB;AAAA,IAC3B,KAAK,sBAAsB;AAAA,IAC3B,MAAM;AAAA,EACR,CAAC;AAAA,EACD,MAAM,gBAAgB,QAAQ;AAAA,IAC5B,OAAO,OAAO;AAAA,IACd,UAAU,sBAAsB;AAAA,IAChC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,EACR,CAAC;AAAA,EACD,MAAM,cAAc,QAAQ;AAAA,IAC1B,OAAO,OAAO;AAAA,IACd,UAAU,sBAAsB;AAAA,IAChC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,EACR,CAAC;AAAA,EACD,MAAM,kBAAkB,OAAO,mBAAmB,sBAAsB;AAAA,EAGxE,MAAM,WAAW,OAAO,WAAW,SAAS;AAAA,EAC5C,MAAM,SAAS,WAAW,OAAO,WAAW,MAAM,CAAC,aAAa,IAAI,CAAC,GAAG,OAAO,UAAU;AAAA,EAEzF,MAAM,iBAAkC,CAAC;AAAA,EACzC,MAAM,qBAAyC,CAAC;AAAA,EAChD,MAAM,oBAAwC,CAAC;AAAA,EAC/C,IAAI,iBAAiB;AAAA,EAErB,WAAW,aAAa,QAAQ;AAAA,IAC9B,kBAAkB,UAAU,WAAW;AAAA,IACvC,IAAI,UAAU,eAAe,aAAa,UAAU,cAAc,iBAAiB;AAAA,MACjF,eAAe,KAAK;AAAA,QAClB,aAAa,UAAU;AAAA,QACvB,OAAO,UAAU;AAAA,QACjB,QAAQ,UAAU;AAAA,QAClB,YAAY,UAAU;AAAA,QACtB,gBAAgB,UAAU;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,IAGA,MAAM,SAAS,IAAI;AAAA,IACnB,WAAW,aAAa,UAAU,YAAY;AAAA,MAC5C,MAAM,WAAW,OAAO,IAAI,UAAU,WAAW;AAAA,MACjD,IAAI,aAAa,WAAW;AAAA,QAC1B,OAAO,IAAI,UAAU,aAAa;AAAA,UAChC,OAAO;AAAA,UACP,iBAAiB,UAAU;AAAA,UAC3B,OAAO,UAAU;AAAA,UACjB,QAAQ,UAAU;AAAA,QACpB,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MACA,SAAS;AAAA,MACT,SAAS,mBAAmB,UAAU;AAAA,IACxC;AAAA,IAEA,YAAY,aAAa,UAAU,QAAQ;AAAA,MACzC,IAAI,MAAM,QAAQ;AAAA,QAAiB;AAAA,MAInC,MAAM,gBAAgB,MAAM,UAAU,UAAU;AAAA,MAChD,MAAM,UAA4B;AAAA,QAChC,MAAM,gBAAgB,yBAAyB;AAAA,QAC/C;AAAA,QACA,OAAO,MAAM;AAAA,QACb,aAAa,UAAU;AAAA,QACvB,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,QACd,iBAAiB,MAAM;AAAA,QACvB,UACE,GAAG,MAAM,uDAAuD,UAAU,SAAS,SAAS,UAAU,cACtG,cAAc,MAAM,gBAAgB,QAAQ,CAAC,mBAC5C,gBAAgB,sBAAiB,MAAM,SAAS,gFAAgF;AAAA,QACnI,WAAW;AAAA,MACb;AAAA,MACA,IAAI;AAAA,QAAe,kBAAkB,KAAK,OAAO;AAAA,MAC5C;AAAA,2BAAmB,KAAK,OAAO;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,QAAQ,EAAE,YAAY,OAAO,QAAQ,YAAY,gBAAgB,SAAS,SAAS;AAAA,IACnF,gBAAgB,eAAe,MAAM,GAAG,WAAW;AAAA,IACnD,oBAAoB,mBAAmB,MAAM,GAAG,WAAW;AAAA,IAC3D,mBAAmB,kBAAkB,MAAM,GAAG,WAAW;AAAA,EAC3D;AAAA;AAKF,SAAS,IAAI,CAAC,MAAgB,OAAuC;AAAA,EACnE,MAAM,IAAI;AAAA,EACV,WAAW,SAAS,KAAK;AAAA,IAAU,KAAK,OAAO,KAAK;AAAA;AAGtD,SAAS,WAAW,CAAC,MAAwB;AAAA,EAC3C,MAAM,QAAkB,CAAC;AAAA,EACzB,WAAW,OAAO,CAAC,UAAU,cAAc,gBAAgB,aAAa,aAAa,GAAG;AAAA,IACtF,MAAM,QAAQ,KAAK,WAAW;AAAA,IAC9B,IAAI,UAAU;AAAA,MAAW,MAAM,KAAK,GAAG,QAAQ,OAAO;AAAA,EACxD;AAAA,EACA,OAAO,MAAM,WAAW,IAAI,2CAA2C,MAAM,KAAK,QAAK;AAAA;AAWlF,SAAS,iBAAiB,CAAC,QAKD;AAAA,EAC/B,QAAQ,WAAW;AAAA,EACnB,MAAM,cAAc,QAAQ;AAAA,IAC1B,OAAO,OAAO;AAAA,IACd,UAAU,sBAAsB;AAAA,IAChC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,EACR,CAAC;AAAA,EACD,MAAM,SAAS,IAAI,KAAK,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA,EACjF,MAAM,iBAAiB,IAAI;AAAA,EAC3B,WAAW,SAAS,OAAO,WAAW,CAAC,GAAG;AAAA,IACxC,MAAM,OAAO,eAAe,IAAI,MAAM,KAAK,KAAK,CAAC;AAAA,IACjD,KAAK,KAAK,MAAM,KAAK;AAAA,IACrB,eAAe,IAAI,MAAM,OAAO,IAAI;AAAA,EACtC;AAAA,EAEA,MAAM,WAAgC,CAAC;AAAA,EACvC,KAAK,OAAO,MAAM,CAAC,SAAS;AAAA,IAC1B,MAAM,WAAW,KAAK,YAAY;AAAA,IAClC,MAAM,QAAQ,aAAa,OAAO,YAAY,OAAO,IAAI,QAAQ;AAAA,IAEjE,IAAI,KAAK,aAAa,cAAc,aAAa,MAAM;AAAA,MACrD,IAAI,UAAU,WAAW;AAAA,QAGvB,SAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM,KAAK;AAAA,UACX;AAAA,UACA,UAAU,uBAAuB;AAAA,UACjC,WAAW;AAAA,QACb,CAAC;AAAA,MACH,EAAO,SAAI,MAAM,gBAAgB,sBAAsB,gBAAgB;AAAA,QACrE,SAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM,KAAK;AAAA,UACX;AAAA,UACA,UAAU,IAAI,yBAAyB,MAAM,mCAA8B,sBAAsB;AAAA,UACjG,WAAW;AAAA,QACb,CAAC;AAAA,MACH,EAAO;AAAA,QACL,MAAM,UAAU,KAAK;AAAA,QACrB,SAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM,KAAK;AAAA,UACX;AAAA,UACA,UACE,yBAAyB,oBAAoB,MAAM,oCAAoC,KAAK,oCAC3F,YAAY,YAAY,KAAK,gBAAgB,6BAC7C,KAAK,eAAe,YAAY,KAAK,eAAe,KAAK;AAAA,UAC5D,WAAW;AAAA,UACX,gBAAgB;AAAA,YACd,OAAO;AAAA,YACP,kBAAkB,YAAY,IAAI;AAAA,eAC9B,KAAK,WAAW,gBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,KAAK,WAAW,YAAY;AAAA,YACjG,iBAAiB,eAAe,IAAI,QAAQ,KAAK,CAAC;AAAA,YAClD,UACE;AAAA,UACJ;AAAA,QACF,CAAC;AAAA;AAAA,IAEL;AAAA,IAEA,MAAM,UAAU,KAAK;AAAA,IACrB,IAAI,OAAO,SAAS,aAAa,YAAY,aAAa,KAAK,eAAe,WAAW;AAAA,MACvF,MAAM,WAAW,UAAU,KAAK;AAAA,MAChC,IAAI,WAAW,KAAK,UAAU,YAAY,sBAAsB,oBAAoB;AAAA,QAClF,SAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM,KAAK;AAAA,UACX;AAAA,UACA,UAAU,uBAAuB,+BAA+B,4BAA4B,KAAK;AAAA,UACjG,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,SAAS,aAAa,KAAK,eAAe,aAAa,KAAK,gBAAgB,GAAG;AAAA,MACxF,MAAM,SAAS,KAAK,IAAI,KAAK,YAAY,CAAC,IAAI,KAAK;AAAA,MACnD,MAAM,UAAU,KAAK,gBAAgB,KAAK,IAAI,KAAK,YAAY,CAAC;AAAA,MAChE,IAAI,UAAU,sBAAsB,uBAAuB,WAAW,sBAAsB,qBAAqB;AAAA,QAC/G,SAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM,KAAK;AAAA,UACX;AAAA,UACA,UACE,yBAAyB,KAAK,4CAA4C,KAAK,gBAC9E,OAAO,gBAAgB,YAAY,KAAK,mBAAmB,OAAO,MAAM,WAAW;AAAA,UACtF,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,SAAS,SAAS,MAAM,MAAM,KAAK,YAAY,SAAS,UAAU,MAAM,SAAS,KAAK,qBAAqB,KAAK,IAAI;AAAA,MAC3H,SAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,UAAU;AAAA,QACV,MAAM,KAAK;AAAA,QACX;AAAA,QACA,UAAU,6BAA6B,KAAK,cAAc,eAAe,KAAK,qBAAqB;AAAA,QACnG,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,KAAK,aAAa,kBAAkB,KAAK,eAAe,KAAK,sBAAsB,eAAe;AAAA,MACpG,SAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,UAAU;AAAA,QACV,MAAM,KAAK;AAAA,QACX;AAAA,QACA,UAAU,0CAA0C,KAAK;AAAA,QACzD,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAAA,GACD;AAAA,EAGD,SAAS,KAAK;AAAA,IACZ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM,OAAO,KAAK;AAAA,IAClB,UAAU,OAAO,KAAK,YAAY;AAAA,IAClC,UACE,OAAO,SAAS,aACZ,6NACA;AAAA,IACN,WAAW;AAAA,EACb,CAAC;AAAA,EAED,OAAO,SAAS,MAAM,GAAG,WAAW;AAAA;;ACxTtC,sBAAS;AACT,4BAAS;;;ACvBT,sBAAS;AAgBT,SAAS,SAAS,CAAC,GAAsB,GAA+B;AAAA,EACtE,IAAI,EAAE,WAAW,EAAE;AAAA,IAAQ,OAAO;AAAA,EAClC,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK;AAAA,EACzB,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK;AAAA,EAC1B,OAAO,KAAK,MAAM,CAAC,OAAO,UAAU,UAAU,MAAM,MAAM;AAAA;AASrD,SAAS,sBAAsB,CAAC,QAG9B;AAAA,EACP,QAAQ,aAAa;AAAA,EACrB,MAAM,QAAQ,OAAO,SAAS,CAAC;AAAA,EAE/B,MAAM,OAAO,IAAI;AAAA,EACjB,YAAY,OAAO,WAAW,OAAO,QAAQ,KAAK,GAAG;AAAA,IACnD,YAAY,OAAO,SAAS,OAAO,QAAQ,MAAM,GAAG;AAAA,MAClD,KAAK,IAAI,GAAG,SAAS,SAAS,EAAE,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM,CAAC;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,MAAM,WAAqB,CAAC;AAAA,EAC5B,WAAW,SAAS,UAAU;AAAA,IAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,MAAM;AAAA,IACpC,MAAM,UAAU,KAAK,IAAI,GAAG;AAAA,IAC5B,IAAI,YAAY,WAAW;AAAA,MACzB,SAAS,KAAK,IAAI,wEAAwE;AAAA,MAC1F;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,SAAS,MAAM,MAAM;AAAA,MAC/B,SAAS,KAAK,IAAI,gCAAgC,KAAK,UAAU,MAAM,IAAI,WAAW,KAAK,UAAU,QAAQ,IAAI,IAAI;AAAA,IACvH,EAAO,SAAI,CAAC,UAAU,QAAQ,OAAO,MAAM,KAAK,GAAG;AAAA,MACjD,SAAS,KAAK,IAAI,mCAAmC;AAAA,IACvD;AAAA,IACA,KAAK,OAAO,GAAG;AAAA,EACjB;AAAA,EACA,WAAW,OAAO,KAAK,KAAK,GAAG;AAAA,IAC7B,SAAS,KAAK,IAAI,0DAA0D;AAAA,EAC9E;AAAA,EAEA,IAAI,SAAS,SAAS,GAAG;AAAA,IACvB,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,6EAAwE,SAAS,KAAK,IAAI;AAAA,MACnG,MAAM,EAAE,SAAS;AAAA,IACnB,CAAC;AAAA,EACH;AAAA;AAWK,SAAS,mBAAmB,CAAC,QAI3B;AAAA,EACP,QAAQ,OAAO,MAAM,UAAU;AAAA,EAC/B,MAAM,QAAQ,MAAM;AAAA,EACpB,IAAI,UAAU,QAAQ,MAAM,WAAW,KAAK,UAAU,QAAQ,KAAK,WAAW;AAAA,IAAG;AAAA,EACjF,WAAW,OAAO,MAAM;AAAA,IACtB,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,OAAO,MAAM,IAAI,IAAI;AAAA,MAC3B,IAAI,SAAS;AAAA,QAAW;AAAA,MACxB,IAAI,QAAQ,KAAK,QAAQ,GAAG;AAAA,IAC9B;AAAA,EACF;AAAA;;;ADvBK,SAAS,0BAA0B,CAAC,QAAqD;AAAA,EAC9F,QAAQ,gBAAgB;AAAA,EACxB,IAAI,gBAAgB;AAAA,IAAW,OAAO;AAAA,EACtC,IAAI,CAAC,OAAO,UAAU,WAAW,KAAK,cAAc,GAAG;AAAA,IACrD,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,qEAAgE,OAAO,WAAW;AAAA,MAC3F,MAAM,EAAE,YAAY;AAAA,IACtB,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAQT,SAAS,sBAAsB,CAAC,QAAmD;AAAA,EACjF,QAAQ,gBAAgB;AAAA,EACxB,MAAM,UAA0B,CAAC;AAAA,EACjC,IAAI,SAAS;AAAA,EACb,MAAM,UAAU,MAAY;AAAA,IAC1B,MAAM,OAAO,QAAQ,MAAM;AAAA,IAC3B,IAAI,SAAS,WAAW;AAAA,MACtB,UAAU;AAAA,MACV;AAAA,IACF;AAAA,IACA,KAAK;AAAA;AAAA,EAEP,OAAO;AAAA,IACL,KAAK,OAAU,SAAuC;AAAA,MACpD,IAAI,UAAU,aAAa;AAAA,QACzB,MAAM,IAAI,QAAc,CAAC,YAAY;AAAA,UACnC,QAAQ,KAAK,OAAO;AAAA,SACrB;AAAA,MACH,EAAO;AAAA,QACL,UAAU;AAAA;AAAA,MAEZ,IAAI;AAAA,QACF,OAAO,MAAM,KAAK;AAAA,gBAClB;AAAA,QACA,QAAQ;AAAA;AAAA;AAAA,EAGd;AAAA;AASF,eAAe,aAAa,CAAC,QAAoE;AAAA,EAC/F,MAAM,UAAU,MAAM,QAAQ,WAAW,OAAO,MAAM,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;AAAA,EAC3E,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,OAAO,WAAW;AAAA,MAAY,MAAM,OAAO;AAAA,EACjD;AAAA;AAIF,SAAS,mBAAmB,CAAC,QAMX;AAAA,EAChB,QAAQ,SAAS,MAAM,SAAS,SAAS;AAAA,EACzC,MAAM,cAAc,2BAA2B,EAAE,aAAa,OAAO,YAAY,CAAC;AAAA,EAClF,IAAI,gBAAgB;AAAA,IAAG,OAAO,EAAE,SAAS,MAAM,SAAS,MAAM,SAAS,KAAK;AAAA,EAC5E,MAAM,UAAU,uBAAuB,EAAE,YAAY,CAAC;AAAA,EACtD,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS,CAAC,cAAc,QAAQ,IAAI,MAAM,QAAQ,SAAS,CAAC;AAAA,IAC5D;AAAA,IACA;AAAA,EACF;AAAA;AAQF,eAAe,aAAa,CAAC,QAIU;AAAA,EACrC,QAAQ,KAAK,QAAQ,QAAQ;AAAA,EAC7B,MAAM,MAAiC,CAAC;AAAA,EACxC,IAAI,IAAI,YAAY,QAAQ,OAAO,SAAS,GAAG;AAAA,IAC7C,WAAW,SAAS;AAAA,MAAQ,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC;AAAA,IACzD,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAwC,OAAO,IAAI,MAAM,CAAC,CAAC;AAAA,EACjE,MAAM,cAAc;AAAA,IAClB,OAAO,OAAO,IAAI,CAAC,OAAO,UAAU,YAA2B;AAAA,MAC7D,SAAS,SAAS,MAAM,IAAI,KAAK;AAAA,KAClC;AAAA,EACH,CAAC;AAAA,EACD,WAAW,QAAQ;AAAA,IAAU,QAAQ,KAAK,IAAI;AAAA,EAC9C,OAAO;AAAA;AAIT,IAAM,oBAA4B;AAElC,IAAM,mBAA2B;AAEjC,IAAM,qBAA6B;AAWnC,SAAS,OAAU,CAAC,QAAa,OAA2B;AAAA,EAC1D,WAAW,QAAQ;AAAA,IAAO,OAAO,KAAK,IAAI;AAAA;AA2B5C,SAAS,cAAc,CAAC,QAAgF;AAAA,EACtG,QAAQ,MAAM,WAAW;AAAA,EACzB,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,SAAsB,CAAC;AAAA,EAC7B,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,SAAS,OAAO,IAAI,CAAC,UAAU,IAAI,MAAM;AAAA,IAC/C,MAAM,MAAM,iBAAiB,EAAE,OAAO,CAAC;AAAA,IACvC,IAAI,QAAQ,QAAQ,KAAK,IAAI,GAAG;AAAA,MAAG;AAAA,IACnC,KAAK,IAAI,GAAG;AAAA,IACZ,OAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,UAAU,CAAC,QAAyF;AAAA,EAC3G,QAAQ,KAAK,WAAW;AAAA,EACxB,OAAO,iBAAiB,EAAE,QAAQ,OAAO,IAAI,CAAC,UAAU,IAAI,MAAM,KAAK,EAAE,CAAC;AAAA;AAO5E,SAAS,YAAY,CAAC,QAGsD;AAAA,EAC1E,QAAQ,MAAM,SAAS;AAAA,EACvB,IAAI,SAAS,aAAa,SAAS;AAAA,IAAW,OAAO;AAAA,EACrD,MAAM,OAAO,QAAQ;AAAA,EACrB,OAAO;AAAA,IACL,OAAO,OAAO,IAAI,OAAO;AAAA,IACzB,OAAO,SAAS,YAAY,OAAO,OAAO;AAAA,EAC5C;AAAA;AASF,SAAS,iBAAiB,CAAC,QAIP;AAAA,EAClB,QAAQ,OAAO,SAAS,WAAW;AAAA,EACnC,MAAM,WAAsB,CAAC;AAAA,EAC7B,IAAI,OAAO,UAAU,MAAM;AAAA,IACzB,SAAS,KAAK,EAAE,MAAM,OAAO,IAAI,MAAM,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,OAAO,MAAM,CAAC;AAAA,EAClG;AAAA,EACA,IAAI,OAAO,UAAU,MAAM;AAAA,IACzB,SAAS,KAAK,EAAE,MAAM,OAAO,IAAI,OAAO,QAAQ,EAAE,MAAM,iBAAiB,GAAG,OAAO,OAAO,MAAM,CAAC;AAAA,EACnG;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO,EAAE,MAAM,mBAAmB;AAAA,IAClC;AAAA,IACA,YAAY;AAAA,IACZ,OAAO,SAAS,WAAW,IAAK,SAAS,KAAiB,EAAE,MAAM,OAAO,SAAS;AAAA,IAClF,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,iBAAiB,GAAG,WAAW,MAAM,CAAC;AAAA,EACpE;AAAA;AAIF,SAAS,mBAAmB,CAAC,QAST;AAAA,EAClB,QAAQ,KAAK,MAAM,YAAY,WAAW;AAAA,EAC1C,MAAM,SAAS,KAAK,KAAK;AAAA,EAEzB,MAAM,cACJ,KAAK,KAAK,UAAU,YAChB,YACA,aAAa,EAAE,SAAS,IAAI,SAAS,MAAM,IAAI,MAAM,OAAO,QAAQ,OAAO,KAAK,KAAK,MAAM,CAAC;AAAA,EAClG,MAAM,QACJ,gBAAgB,YAAY,aAAa,EAAE,MAAM,OAAO,UAAU,CAAC,YAAY,WAAW,EAAE;AAAA,EAE9F,IAAI,UACF,KAAK,KAAK,YAAY,YAClB,YACA,eAAe,EAAE,OAAO,QAAQ,SAAS,KAAK,KAAK,SAAS,SAAS,IAAI,QAAQ,CAAC;AAAA,EACxF,IAAI,YAAY,cAAc,KAAK,KAAK,SAAS,aAAa,KAAK,KAAK,SAAS,YAAY;AAAA,IAE3F,UAAU,OAAO,WAAW,IAAI,CAAC,WAAW;AAAA,MAC1C,QAAQ,EAAE,MAAM,MAAM,WAAW;AAAA,MACjC,WAAW;AAAA,IACb,EAAE;AAAA,EACJ;AAAA,EAEA,MAAM,YAAY,KAAK,KAAK;AAAA,EAC5B,MAAM,UACJ,cAAc,OACV,OAAO,OAAO,IAAI,CAAC,WAAW,EAAE,MAAM,MAAM,WAAW,EAAE,IACzD,UAAU,IAAI,CAAC,UAAU;AAAA,IACvB,MAAO,OAAO,YAAY,IAAI,IAAI,EAA6B;AAAA,EACjE,EAAE;AAAA,EAER,IAAI,WAAW,WAAW;AAAA,IACxB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,OAAO,UAAU;AAAA,MAChC;AAAA,MACA;AAAA,SACI,YAAY,aAAa,QAAQ,WAAW,IAAI,CAAC,IAAI,EAAE,QAAQ;AAAA,IACrE;AAAA,EACF;AAAA,EAIA,MAAM,QAAyB;AAAA,IAC7B,MAAM;AAAA,IACN,OAAO,EAAE,MAAM,OAAO,UAAU;AAAA,IAChC;AAAA,IACA;AAAA,IACA,WAAW,EAAE,aAAa,CAAC,GAAG,OAAO,WAAW,GAAG,SAAS,WAAW,CAAC,GAAG,OAAO,iBAAiB;AAAA,EACrG;AAAA,EACA,OAAO,kBAAkB,EAAE,OAAO,SAAS,QAAQ,OAAO,OAAO,CAAC;AAAA;AAapE,SAAS,cAAc,CAAC,QASZ;AAAA,EACV,QAAQ,KAAK,QAAQ,UAAU,OAAO,WAAW;AAAA,EACjD,MAAM,UAAoB,OAAO,IAAI,CAAC,UACpC,UAAU,YAAY,EAAE,MAAM,MAAM,WAAW,IAAI,EAAE,OAAO,MAAM,MAAM,WAAW,CACrF;AAAA,EACA,MAAM,UAAU,OAAO,IAAI,CAAC,UAC1B,MAAM,IAAI,CAAC,OAAO,UAChB,YAAY,EAAE,SAAS,IAAI,QAAQ,MAAM,OAAO,SAAS,QAAqC,MAAM,CAAC,CACvG,CACF;AAAA,EACA,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,QAAQ;AAAA,MAChB,QAAQ,QAAQ,IAAI,CAAC,UAAU,MAAM,EAAE;AAAA,IACzC;AAAA,EACF;AAAA,EACA,OAAO,EAAE,MAAM,WAAW,SAAS,MAAM,QAAQ;AAAA;AAenD,SAAS,SAAS,CAAC,QAU8B;AAAA,EAC/C,QAAQ,KAAK,MAAM,UAAU,OAAO,SAAS,UAAU;AAAA,EACvD,MAAM,SAAS,IAAI,QAAQ;AAAA,EAG3B,MAAM,UAAU,QAAQ,KAAK,IAAI,QAAQ,oBAAoB;AAAA,EAO7D,IAAI,QAAQ;AAAA,EACZ,IAAI,SAAS;AAAA,IACX,MAAM,WAAW,iBAAgB,EAAE,SAAS,IAAI,SAAS,WAAW,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAAA,IAC7F,QAAQ,SAAS,OAAO,UAAU,UAAU,QAAQ;AAAA,IACpD,IAAI,QAAQ,QAAQ,QAAQ;AAAA,MAC1B,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,aAAa,mBAAmB,QAAQ,2DAA2D,IAAI,QAAQ,UAAU;AAAA,QAClI,MAAM,EAAE,UAAU,SAAS,IAAI,QAAQ,MAAM,UAAU,QAAQ,OAAO,OAAO;AAAA,MAC/E,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,IAAI,CAAC;AAAA,IAAS,OAAO,CAAC,IAAI;AAAA,EAC1B,MAAM,YAAY,KAAK,IAAI,GAAG,KAAK,OAAO,SAAS,SAAS,KAAK,CAAC;AAAA,EAClE,IAAI,KAAK,UAAU;AAAA,IAAW,OAAO,CAAC,IAAI;AAAA,EAC1C,MAAM,SAA8C,CAAC;AAAA,EACrD,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS,WAAW;AAAA,IAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,QAAQ,SAAS,CAAC;AAAA,EAClD;AAAA,EACA,OAAO;AAAA;AAOT,eAAe,YAAY,CAAC,QAKH;AAAA,EACvB,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EACnC,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,eAAe,EAAE,MAAM,QAAQ,KAAK,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,CAAC;AAAA,EAExF,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,WAAW,OAAO;AAAA,MAAM,IAAI,KAAK,QAAQ,CAAC;AAAA,IAC1C,OAAO,CAAC;AAAA,EACV;AAAA,EAKA,MAAM,SAAS,aAAa,EAAE,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,KAAK,CAAC;AAAA,EAC1E,MAAM,QAAQ,CAAC,UACb,oBAAoB;AAAA,IAClB;AAAA,IACA;AAAA,IACA,YAAY,eAAe,EAAE,KAAK,QAAQ,KAAK,WAAW,UAAU,KAAK,WAAW,QAAQ,MAAM,CAAC;AAAA,OAC/F,WAAW,OACX,CAAC,IACD;AAAA,MACE,QAAQ;AAAA,QACN,aAAa,KAAK,UAAU,IAAI,CAAC,WAAW,EAAE,MAAM,MAAM,WAAW,EAAE;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AAAA,EACN,CAAC;AAAA,EAEH,MAAM,SAAS,UAAU;AAAA,IACvB;AAAA,IACA;AAAA,IACA,UAAU,KAAK;AAAA,IACf;AAAA,IACA,SAAS,KAAK,KAAK,UAAU,aAAa,WAAW;AAAA,IACrD,OAAO,KAAK,UAAU;AAAA,EACxB,CAAC;AAAA,EACD,MAAM,MAAM,MAAM,cAAc;AAAA,IAC9B;AAAA,IACA;AAAA,IACA,KAAK,CAAC,UAAU,IAAI,QAAQ,EAAE,WAAW,MAAM,KAAK,GAAG,OAAO,MAAM,MAAM,QAAQ,WAAW,KAAK,OAAO,CAAC;AAAA,EAC5G,CAAC;AAAA,EACD,MAAM,WAAW,gBAAgB,EAAE,SAAS,IAAI,QAAQ,MAAM,OAAO,KAAK,QAAQ,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC;AAAA,EAE7G,MAAM,UAAU,IAAI;AAAA,EACpB,WAAW,SAAS,UAAU;AAAA,IAC5B,MAAM,MAAM,WAAW,EAAE,KAAK,OAAO,QAAQ,KAAK,UAAU,CAAC;AAAA,IAC7D,IAAI,QAAQ;AAAA,MAAM;AAAA,IAClB,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAAA,IAC7B,IAAI,UAAU;AAAA,MAAW,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;AAAA,IAC5C;AAAA,YAAM,KAAK,KAAK;AAAA,EACvB;AAAA,EAEA,MAAM,OAAoB,CAAC;AAAA,EAC3B,WAAW,OAAO,MAAM;AAAA,IAGtB,MAAM,MAAM,WAAW,EAAE,KAAK,QAAQ,KAAK,WAAW,CAAC;AAAA,IACvD,MAAM,SAAS,QAAQ,OAAO,CAAC,IAAK,QAAQ,IAAI,GAAG,KAAK,CAAC,GAAI,MAAM;AAAA,IACnE,IAAI,KAAK,QAAQ;AAAA,IACjB,QAAQ,MAAM,KAAK;AAAA,EACrB;AAAA,EACA,OAAO;AAAA;AAIT,eAAe,SAAS,CAAC,QAKA;AAAA,EACvB,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EACnC,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,eAAe,EAAE,MAAM,QAAQ,KAAK,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,CAAC;AAAA,EAExF,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,WAAW,OAAO;AAAA,MAAM,IAAI,KAAK,QAAQ;AAAA,IACzC,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,QAAQ,CAAC,UACb,oBAAoB;AAAA,IAClB;AAAA,IACA;AAAA,IACA,YAAY,eAAe,EAAE,KAAK,QAAQ,KAAK,WAAW,UAAU,KAAK,WAAW,QAAQ,MAAM,CAAC;AAAA,EACrG,CAAC;AAAA,EAEH,MAAM,SAAS,UAAU;AAAA,IACvB;AAAA,IACA;AAAA,IACA,UAAU,KAAK;AAAA,IACf;AAAA,IACA,SAAS,KAAK,KAAK,UAAU;AAAA,IAC7B,OAAO,KAAK,UAAU;AAAA,EACxB,CAAC;AAAA,EACD,MAAM,MAAM,MAAM,cAAc;AAAA,IAC9B;AAAA,IACA;AAAA,IACA,KAAK,CAAC,UAAU,IAAI,QAAQ,EAAE,WAAW,MAAM,KAAK,GAAG,OAAO,MAAM,MAAM,QAAQ,WAAW,KAAK,OAAO,CAAC;AAAA,EAC5G,CAAC;AAAA,EACD,MAAM,WAAW,gBAAgB,EAAE,SAAS,IAAI,QAAQ,MAAM,OAAO,KAAK,QAAQ,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC;AAAA,EAE7G,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,SAAS,UAAU;AAAA,IAC5B,MAAM,MAAM,WAAW,EAAE,KAAK,OAAO,QAAQ,KAAK,UAAU,CAAC;AAAA,IAC7D,IAAI,QAAQ;AAAA,MAAM;AAAA,IAClB,IAAI,CAAC,MAAM,IAAI,GAAG;AAAA,MAAG,MAAM,IAAI,KAAK,KAAK;AAAA,EAC3C;AAAA,EAIA,MAAM,OAAoB,CAAC;AAAA,EAC3B,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,cAAc,WAAW,EAAE,KAAK,QAAQ,KAAK,WAAW,CAAC;AAAA,IAC/D,MAAM,QAAQ,gBAAgB,OAAO,YAAY,MAAM,IAAI,WAAW;AAAA,IACtE,IAAI,UAAU,WAAW;AAAA,MACvB,IAAI,KAAK,QAAQ;AAAA,MACjB;AAAA,IACF;AAAA,IACA,MAAM,OAAO,KAAK,MAAM;AAAA,IACxB,IAAI,KAAK,QAAQ;AAAA,IACjB,KAAK,KAAK,IAAI;AAAA,EAChB;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,iBAAyB;AAE/B,IAAM,mBAA2B;AAUjC,eAAe,cAAc,CAAC,QAKL;AAAA,EACvB,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EACnC,MAAM,OAAO,KAAK;AAAA,EAClB,MAAM,OAAO,KAAK;AAAA,EAClB,IAAI,SAAS,MAAM;AAAA,IACjB,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,wBAAwB,KAAK;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAIA,QAAQ,QAAQ,WAAW,OAAO,aAAa,cAAc,EAAE,MAAM,MAAM,gCAAgC,CAAC;AAAA,EAC5G,MAAM,OAAO,eAAe,EAAE,MAAM,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;AAAA,EAE9D,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,WAAW,OAAO;AAAA,MAAM,IAAI,KAAK,QAAQ,CAAC;AAAA,IAC1C,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,SAAS,KAAK;AAAA,EAGpB,MAAM,YAAY,KAAK,KAAK;AAAA,EAC5B,MAAM,gBACJ,cAAc,OACV,OAAO,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU,IAC7C,UAAU,IAAI,CAAC,SAAU,OAAO,YAAY,IAAI,IAAI,EAA6B,UAAU,GAC/F,IAAI,CAAC,UAAU,EAAE,OAAO,OAAO,WAAW,KAAK,EAAE;AAAA,EAEnD,MAAM,cACJ,KAAK,KAAK,UAAU,YAChB,YACA,aAAa;AAAA,IACX,SAAS,IAAI;AAAA,IACb,MAAM,IAAI;AAAA,IACV,OAAO;AAAA,IACP,OAAO,KAAK,KAAK;AAAA,IACjB,SAAS,OAAO;AAAA,EAClB,CAAC;AAAA,EACP,IAAI,UACF,KAAK,KAAK,YAAY,YAClB,YACA,eAAe,EAAE,OAAO,QAAQ,SAAS,KAAK,KAAK,SAAS,SAAS,OAAO,WAAW,SAAS,IAAI,QAAQ,CAAC;AAAA,EACnH,IAAI,YAAY,cAAc,KAAK,KAAK,SAAS,aAAa,KAAK,KAAK,SAAS,YAAY;AAAA,IAE3F,UAAU,OAAO,WAAW,IAAI,CAAC,WAAW;AAAA,MAC1C,QAAQ,EAAE,OAAO,OAAO,WAAW,MAAM,MAAM,WAAW;AAAA,MAC1D,WAAW;AAAA,IACb,EAAE;AAAA,EACJ;AAAA,EAIA,MAAM,SAAS,aAAa,EAAE,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,KAAK,CAAC;AAAA,EAC1E,MAAM,eAAyB;AAAA,IAC7B,GAAG,aAAa,IAAI,CAAC,YAAY,EAAE,MAAM,OAAO,KAAK,EAAE;AAAA,IACvD,EAAE,MAAM,iBAAiB;AAAA,EAC3B;AAAA,EACA,MAAM,QAAQ,CAAC,UAA4D;AAAA,IACzE,MAAM,aAAsB,eAAe;AAAA,MACzC;AAAA,MACA,QAAQ,CAAC,EAAE,YAAY,KAAK,aAAa,CAAC;AAAA,MAC1C,UAAU,CAAC,SAAS;AAAA,MACpB,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,MAAM,QACJ,gBAAgB,YAAY,aAAa,EAAE,MAAM,OAAO,UAAU,CAAC,YAAY,WAAW,EAAE;AAAA,IAC9F,MAAM,OAAwB;AAAA,MAC5B,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,OAAO,UAAU;AAAA,MAChC,SAAS,CAAC,GAAG,cAAc,EAAE,OAAO,gBAAgB,MAAM,KAAK,cAAc,OAAO,iBAAiB,CAAC;AAAA,MACtG,YAAY;AAAA,QACV;AAAA,UACE,OAAO,EAAE,MAAM,KAAK,WAAW,OAAO,eAAe;AAAA,UACrD,IAAI;AAAA,YACF;AAAA,cACE,MAAM,EAAE,OAAO,gBAAgB,MAAM,KAAK,YAAY;AAAA,cACtD,OAAO,EAAE,OAAO,OAAO,WAAW,MAAM,SAAS,WAAW;AAAA,YAC9D;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,WAAW,MAAM;AAAA,MACnB,OAAO,KAAK,SAAU,YAAY,aAAa,QAAQ,WAAW,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAG;AAAA,IAC1F;AAAA,IACA,MAAM,QAAyB;AAAA,SAC1B;AAAA,MACH,WAAW;AAAA,QACT,aAAa,CAAC,EAAE,OAAO,gBAAgB,MAAM,KAAK,aAAa,CAAC;AAAA,QAChE,SAAS,WAAW,CAAC;AAAA,QACrB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO,kBAAkB,EAAE,OAAO,SAAS,cAAc,OAAO,CAAC;AAAA;AAAA,EAGnE,MAAM,SAAS,UAAU;AAAA,IACvB;AAAA,IACA;AAAA,IACA,UAAU,KAAK;AAAA,IACf;AAAA,IACA,SAAS,KAAK,KAAK,UAAU,aAAa,WAAW;AAAA,IACrD,OAAO;AAAA,EACT,CAAC;AAAA,EACD,MAAM,MAAM,MAAM,cAAc;AAAA,IAC9B;AAAA,IACA;AAAA,IACA,KAAK,CAAC,UAAU,IAAI,QAAQ,EAAE,WAAW,MAAM,KAAK,GAAG,OAAO,MAAM,MAAM,QAAQ,WAAW,KAAK,OAAO,CAAC;AAAA,EAC5G,CAAC;AAAA,EAKD,MAAM,QAAQ,gBAAgB,EAAE,SAAS,IAAI,QAAQ,MAAM,OAAO,QAAQ,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC;AAAA,EACrG,MAAM,eAAe,aAAa;AAAA,IAChC,SAAS,IAAI,QAAQ;AAAA,IACrB,OAAO;AAAA,OACH,IAAI,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK;AAAA,EACrD,CAAC;AAAA,EAED,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,YAAY,KAAK;AAAA,IACvB,OAAO,KAAK;AAAA,IACZ,MAAM,YACJ,iBAAiB,QAAQ,cAAc,QAAQ,cAAc,YAAY,YAAY,aAAa,SAAS;AAAA,IAE7G,MAAM,MAAM,iBAAiB,EAAE,OAAO,UAAU,CAAC;AAAA,IACjD,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAC5B,IAAI,UAAU;AAAA,MAAW,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA,IAC1C;AAAA,YAAM,KAAK,IAAI;AAAA,EACtB;AAAA,EAEA,MAAM,OAAoB,CAAC;AAAA,EAC3B,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,SAAS,OAAO,IAAI,iBAAiB,EAAE,OAAO,IAAI,UAAU,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM;AAAA,IACzF,IAAI,KAAK,QAAQ;AAAA,IACjB,QAAQ,MAAM,KAAK;AAAA,EACrB;AAAA,EACA,OAAO;AAAA;AAUT,SAAS,gBAAgB,CAAC,QAAoF;AAAA,EAC5G,QAAQ,MAAM,WAAW;AAAA,EACzB,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,SAAiC,CAAC;AAAA,IACxC,WAAW,QAAQ;AAAA,MAAQ,OAAO,KAAK,QAAQ;AAAA,IAC/C,IAAI,SAAS;AAAA,EACf;AAAA;AAuBF,eAAe,UAAU,CAAC,QAKR;AAAA,EAChB,QAAQ,KAAK,OAAO,MAAM,WAAW;AAAA,EACrC,IAAI,OAAO,WAAW,KAAK,KAAK,WAAW;AAAA,IAAG;AAAA,EAE9C,WAAW,QAAQ,QAAQ;AAAA,IACzB,MAAM,OAAO,KAAK;AAAA,IAClB,MAAM,OAAO,KAAK;AAAA,IAClB,MAAM,OAAO,eAAe,EAAE,MAAM,QAAQ,KAAK,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,CAAC;AAAA,IACxF,IAAI,KAAK,WAAW;AAAA,MAAG;AAAA,IAEvB,MAAM,OAAO,KAAK;AAAA,IAClB,MAAM,SAAS,KAAK;AAAA,IAGpB,MAAM,kBAAkB,SAAS,QAAQ,KAAK,UAAU;AAAA,IACxD,MAAM,WAAW,kBACb,cAAc,EAAE,MAAM,MAAM,iCAAiC,CAAC,EAAE,QAChE;AAAA,IAGJ,MAAM,cACJ,SAAS,OAAO,KAAK,YAAY,CAAC,EAAE,YAAY,KAAK,aAAa,CAAC;AAAA,IACrE,MAAM,WAAW,SAAS,OAAO,KAAK,YAAY,CAAC,KAAK,WAAW,EAAsC;AAAA,IACzG,MAAM,QAAQ,SAAS,OAAO,OAAO,YAAY,KAAK;AAAA,IACtD,MAAM,eAAyB,YAAY,IAAI,CAAC,UAC9C,kBAAkB,EAAE,OAAO,gBAAgB,MAAM,MAAM,WAAW,IAAI,EAAE,MAAM,MAAM,WAAW,CACjG;AAAA,IAGA,MAAM,aAAgC,kBAClC,CAAC,gBAAgB,IACjB,YAAY,IAAI,CAAC,UAAU,MAAM,UAAU;AAAA,IAC/C,MAAM,mBAA6B,kBAC/B,aAAa,IAAI,CAAC,YAAY,KAAK,QAAQ,OAAO,iBAAiB,EAAE,IACrE;AAAA,IACJ,MAAM,SACJ,KAAK,UAAU,YACX,YACA,aAAa;AAAA,MACX,SAAS,IAAI;AAAA,MACb,MAAM,IAAI;AAAA,MACV,OAAO;AAAA,MACP,OAAO,KAAK;AAAA,SACR,kBAAkB,EAAE,SAAS,OAAO,UAAU,IAAI,CAAC;AAAA,IACzD,CAAC;AAAA,IACP,MAAM,QAAQ,CAAC,UAA4D;AAAA,MACzE,MAAM,aAAa,eAAe;AAAA,QAChC;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA,QAAQ;AAAA,WACJ,kBAAkB,EAAE,OAAO,eAAe,IAAI,CAAC;AAAA,MACrD,CAAC;AAAA,MACD,MAAM,QAAiB,WAAW,YAAY,aAAa,EAAE,MAAM,OAAO,UAAU,CAAC,YAAY,MAAM,EAAE;AAAA,MACzG,MAAM,OAAwB;AAAA,QAC5B,MAAM;AAAA,QACN,OAAO,EAAE,MAAM,kBAAkB,OAAO,YAAY,MAAM;AAAA,QAC1D,SAAS;AAAA,QACT,YAAY,EAAE,MAAM,YAAY,OAAO,kBAAkB;AAAA,QACzD;AAAA,QACA,SAAS;AAAA,MACX;AAAA,MACA,IAAI,CAAC;AAAA,QAAiB,OAAO;AAAA,MAC7B,OAAO;AAAA,WACF;AAAA,QACH,YAAY;AAAA,UACV;AAAA,YACE,OAAO,EAAE,MAAO,KAAkC,WAAW,OAAO,eAAe;AAAA,YACnF,IAAI;AAAA,cACF;AAAA,gBACE,MAAM,EAAE,OAAO,gBAAgB,MAAO,KAAkC,YAAY;AAAA,gBACpF,OAAO,EAAE,OAAO,OAAO,WAAW,MAAO,SAAuB,WAAW;AAAA,cAC7E;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA,IAGF,MAAM,SAAS,UAAU;AAAA,MACvB;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS,KAAK,UAAU;AAAA,MACxB,OAAO,YAAY;AAAA,IACrB,CAAC;AAAA,IACD,MAAM,MAAM,MAAM,cAAc;AAAA,MAC9B;AAAA,MACA;AAAA,MACA,KAAK,CAAC,UAAU,IAAI,QAAQ,EAAE,WAAW,MAAM,KAAK,GAAG,OAAO,MAAM,MAAM,QAAQ,UAAU,OAAO,CAAC;AAAA,IACtG,CAAC;AAAA,IAED,MAAM,QAAQ,IAAI;AAAA,IAClB,WAAW,SAAS,KAAK;AAAA,MACvB,MAAM,UAAU,YAAY,IAAI,CAAC,OAAO,UACtC,YAAY;AAAA,QACV,SAAS,IAAI,QAAQ;AAAA,QACrB,OAAO,SAAS;AAAA,QAChB,OAAO,MAAM,WAAW;AAAA,MAC1B,CAAC,CACH;AAAA,MACA,MAAM,MAAM,iBAAiB,EAAE,QAAQ,QAAQ,CAAC;AAAA,MAChD,IAAI,QAAQ;AAAA,QAAM,MAAM,IAAI,KAAK,OAAO,MAAM,sBAAsB,CAAC,CAAC;AAAA,IACxE;AAAA,IACA,WAAW,OAAO,MAAM;AAAA,MACtB,MAAM,MAAM,WAAW,EAAE,KAAK,QAAQ,KAAK,WAAW,CAAC;AAAA,MACvD,MAAM,QAAQ,QAAQ,OAAO,YAAY,MAAM,IAAI,GAAG;AAAA,MACtD,IAAI,UAAU;AAAA,QAAY,IAAI,OAAkC,QAAQ;AAAA,IAC1E;AAAA,EACF;AAAA;AAKF,eAAe,QAAQ,CAAC,QAKN;AAAA,EAChB,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EAEnC,IAAI;AAAA,EACJ,QAAQ,KAAK,KAAK;AAAA,SACX;AAAA,MACH,OAAO,MAAM,aAAa,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,MACpD;AAAA,SACG;AAAA,MACH,OAAO,MAAM,eAAe,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,MACtD;AAAA,SACG;AAAA,SACA;AAAA,MACH,OAAO,MAAM,UAAU,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,MACjD;AAAA;AAAA,EAGJ,MAAM,WAAW,EAAE,KAAK,MAAM,KAAK,CAAC;AAAA;AAItC,eAAe,UAAU,CAAC,QAIR;AAAA,EAChB,QAAQ,KAAK,MAAM,SAAS;AAAA,EAI5B,IAAI,KAAK,KAAK,aAAa,QAAQ,KAAK,SAAS,GAAG;AAAA,IAClD,oBAAoB,EAAE,OAAO,KAAK,KAAK,QAAQ,MAAM,MAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AAAA,EACxF;AAAA,EACA,IAAI,KAAK,KAAK,WAAW,QAAQ,KAAK,SAAS,GAAG;AAAA,IAGhD,MAAM,gBAAgB,EAAE,KAAK,OAAO,KAAK,KAAK,QAAQ,MAAM,CAAC,GAAG,IAAI,GAAG,WAAW,KAAK,KAAK,OAAO,CAAC;AAAA,EACtG;AAAA,EACA,IAAI,KAAK,KAAK,MAAM,SAAS,GAAG;AAAA,IAC9B,WAAW,SAAS,MAAM;AAAA,MACxB,WAAW,QAAQ,KAAK,KAAK;AAAA,QAAO,OAAO,MAAM;AAAA,IACnD;AAAA,EACF;AAAA;AAOF,eAAsB,eAAe,CAAC,QAWpB;AAAA,EAChB,QAAQ,SAAS,MAAM,OAAO,MAAM,WAAW,SAAS,MAAM,gBAAgB;AAAA,EAC9E,IAAI,KAAK,WAAW;AAAA,IAAG;AAAA,EACvB,MAAM,gBAAgB;AAAA,IACpB,KAAK,oBAAoB,EAAE,SAAS,MAAM,SAAS,MAAM,YAAY,CAAC;AAAA,IACtE;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA;AAYH,eAAe,eAAe,CAAC,QAKb;AAAA,EAChB,QAAQ,KAAK,OAAO,MAAM,cAAc;AAAA,EACxC,IAAI,KAAK,WAAW;AAAA,IAAG;AAAA,EACvB,IAAI,UAAU,OAAO,SAAS;AAAA,IAAG,iBAAiB,EAAE,MAAM,QAAQ,UAAU,OAAO,CAAC;AAAA,EAEpF,IAAI,IAAI,YAAY,MAAM;AAAA,IACxB,WAAW,QAAQ,UAAU,WAAW;AAAA,MACtC,MAAM,SAAS,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,IAC3C;AAAA,IACA,MAAM,WAAW,EAAE,KAAK,OAAO,MAAM,QAAQ,UAAU,OAAO,CAAC;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,MAAM,cAAc;AAAA,IAClB,OAAO;AAAA,MACL,GAAG,UAAU,UAAU,IAAI,CAAC,SAAS,MAAqB,SAAS,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC,CAAC;AAAA,MAC9F,GAAG,UAAU,OAAO,IAAI,CAAC,SAAS,MAAqB,WAAW,EAAE,KAAK,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAAA,IACzG;AAAA,EACF,CAAC;AAAA;AASH,eAAsB,sBAAsB,CAAC,QAW3B;AAAA,EAChB,QAAQ,SAAS,MAAM,MAAM,WAAW,SAAS,MAAM,gBAAgB;AAAA,EACvE,IAAI,KAAK,WAAW;AAAA,IAAG;AAAA,EACvB,MAAM,MAAqB,oBAAoB,EAAE,SAAS,MAAM,SAAS,MAAM,YAAY,CAAC;AAAA,EAI5F,MAAM,SAA4E,CAAC;AAAA,EACnF,WAAW,QAAQ,UAAU,WAAW;AAAA,IACtC,MAAM,SAAS,mBAAmB,EAAE,UAAU,KAAK,KAAK,CAAC;AAAA,IACzD,MAAM,SAAS,KAAK,KAAK,SAAS;AAAA,IAIlC,QAAQ,SAAS,gBAAgB,kBAAkB,EAAE,KAAK,CAAC;AAAA,IAC3D,MAAM,iBAAiB,uBAAuB,EAAE,OAAO,KAAK,KAAK,QAAQ,QAAQ,CAAC;AAAA,IAClF,MAAM,OAAoB,CAAC;AAAA,IAE3B,WAAW,OAAO,MAAM;AAAA,MACtB,MAAM,MAAM,IAAI;AAAA,MAChB,OAAO,IAAI;AAAA,MAEX,IAAI,SAAkB;AAAA,MACtB,IAAI,OAAO,QAAQ,UAAU;AAAA,QAC3B,IAAI;AAAA,UACF,SAAS,KAAK,MAAM,GAAG;AAAA,UACvB,OAAO,OAAO;AAAA,UACd,MAAM,IAAI,YAAU;AAAA,YAClB,MAAM;AAAA,YACN,SAAS,oBAAoB;AAAA,YAC7B,MAAM,EAAE,UAAU,KAAK,KAAK;AAAA,YAC5B;AAAA,UACF,CAAC;AAAA;AAAA,MAEL;AAAA,MAEA,IAAI,QAAQ;AAAA,QACV,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,UAC1B,MAAM,IAAI,YAAU,EAAE,MAAM,iBAAiB,SAAS,6CAA6C,MAAM,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;AAAA,QACpI;AAAA,QACA,MAAM,WAAW,OAAO,IAAI,cAAc;AAAA,QAC1C,WAAW,SAAS,UAAU;AAAA,UAC5B,WAAW,QAAQ;AAAA,YAAa,OAAO,MAAM;AAAA,QAC/C;AAAA,QACA,IAAI,KAAK,QAAQ;AAAA,QACjB,QAAQ,MAAM,QAAQ;AAAA,MACxB,EAAO;AAAA,QACL,IAAI,WAAW,MAAM;AAAA,UACnB,IAAI,KAAK,QAAQ;AAAA,UACjB;AAAA,QACF;AAAA,QACA,MAAM,QAAQ,eAAe,MAAM;AAAA,QACnC,WAAW,QAAQ;AAAA,UAAa,OAAO,MAAM;AAAA,QAC7C,IAAI,KAAK,QAAQ;AAAA,QACjB,KAAK,KAAK,KAAK;AAAA;AAAA,IAEnB;AAAA,IAEA,OAAO,KAAK,EAAE,MAAM,KAAK,CAAC;AAAA,EAC5B;AAAA,EAEA,IAAI,IAAI,YAAY,MAAM;AAAA,IACxB,WAAW,SAAS,QAAQ;AAAA,MAC1B,MAAM,WAAW,EAAE,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC;AAAA,IAC9D;AAAA,EACF,EAAO;AAAA,IACL,MAAM,cAAc;AAAA,MAClB,OAAO,OAAO,IAAI,CAAC,UAAU,MAAqB,WAAW,EAAE,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,IAC3G,CAAC;AAAA;AAAA,EAGH,IAAI,UAAU,OAAO,WAAW;AAAA,IAAG;AAAA,EACnC,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,SAAiC,CAAC;AAAA,IACxC,SAAS,QAAQ,EAAG,QAAQ,UAAU,OAAO,QAAQ,SAAS;AAAA,MAC5D,MAAM,SAAS,kBAAkB,EAAE,MAAM,CAAC;AAAA,MAC1C,MAAM,MAAM,IAAI;AAAA,MAChB,MAAM,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAa,OAAO,QAAQ,YAAY,QAAQ,KAAK,GAAG,IAAK,OAAO,GAAG,IAAI;AAAA,MACnI,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG;AAAA,QAC7C,MAAM,IAAI,YAAU,EAAE,MAAM,iBAAiB,SAAS,8DAA8D,MAAM,EAAE,UAAU,UAAU,OAAO,QAAQ,KAAK,EAAE,CAAC;AAAA,MACzK;AAAA,MACA,OAAQ,UAAU,OAAO,OAA6B,QAAQ;AAAA,MAC9D,OAAO,IAAI;AAAA,IACb;AAAA,IACA,IAAI,SAAS;AAAA,EACf;AAAA;;AE7kCF,sBAAS;;;AC7BT,mBAAS;AACT,sBAAS;AAET,0BAAS;AAIF,SAAS,mBAAmB,CAAC,OAAgB,OAAoB,IAAI,KAAgB;AAAA,EAC1F,IAAI,eAAc,KAAK;AAAA,IAAG,OAAO;AAAA,EACjC,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,KAAK,IAAI,KAAK;AAAA,IAAG,OAAO;AAAA,EAC3E,KAAK,IAAI,KAAK;AAAA,EACd,MAAM,OAAO,IAAI;AAAA,EACjB,SAAS,SAAwB,MAAO,WAAW,QAAQ,WAAW,OAAO,WAAW,SAAS,OAAO,eAAe,MAAM,GAAoB;AAAA,IAC/I,WAAW,OAAO,OAAO,oBAAoB,MAAM,GAAG;AAAA,MACpD,IAAI,KAAK,IAAI,GAAG,KAAK,QAAQ;AAAA,QAAe;AAAA,MAC5C,KAAK,IAAI,GAAG;AAAA,MACZ,MAAM,aAAa,OAAO,yBAAyB,QAAQ,GAAG;AAAA,MAC9D,IAAI,eAAe;AAAA,QAAW;AAAA,MAG9B,MAAM,QAAiB,WAAW,aAAa,WAAW,QACtD,WAAW,SAAS,WAAW,aAAc,MAAkC,OAAO;AAAA,MAC1F,IAAI,oBAAoB,OAAO,IAAI;AAAA,QAAG,OAAO;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIF,SAAS,iBAAoB,CAAC,QAAkE;AAAA,EACrG,MAAM,SAAS,MAAiB,OAAO,UAAU,KAAK,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,yCAAyC,OAAO,qCAAqC,MAAM,EAAE,MAAM,OAAO,KAAK,EAAE,CAAC;AAAA,EAC1N,IAAI,oBAAoB,OAAO,KAAK;AAAA,IAAG,MAAM,OAAO;AAAA,EACpD,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,OAAO,CAAC,UAA4B;AAAA,IACxC,IAAI,eAAc,KAAK;AAAA,MAAG,MAAM,OAAO;AAAA,IACvC,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,MAAM,OAAO;AAAA,IACxD,IAAI,KAAK,IAAI,KAAK;AAAA,MAAG,OAAO,KAAK,IAAI,KAAK;AAAA,IAC1C,IAAI;AAAA,IACJ,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,MAAM,QAAmB,CAAC;AAAA,MAC1B,MAAM;AAAA,MACN,KAAK,IAAI,OAAO,GAAG;AAAA,MACnB,WAAW,QAAQ;AAAA,QAAO,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,IACjD,EAAO,SAAI,iBAAiB,MAAM;AAAA,MAChC,MAAM,IAAI,KAAK,MAAM,QAAQ,CAAC;AAAA,IAChC,EAAO,SAAI,iBAAiB,YAAY;AAAA,MACtC,MAAM,QAAO,SAAS,KAAK,IAAI,QAAO,KAAK,KAAK,IAAI,IAAI,WAAW,KAAK;AAAA,IAC1E,EAAO;AAAA,MACL,MAAM,SAAkC,OAAO,OAAO,IAAI;AAAA,MAC1D,MAAM;AAAA,MACN,KAAK,IAAI,OAAO,GAAG;AAAA,MACnB,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,QAChD,IAAI,QAAQ,YAAY,OAAO,UAAU;AAAA,UAAY,OAAO,OAAO,KAAK,KAAK;AAAA,MAC/E;AAAA;AAAA,IAEF,KAAK,IAAI,OAAO,GAAG;AAAA,IACnB,MAAM,SAAmB,MAA+B;AAAA,IACxD,MAAM,aAAa,iBAAiB,QAAQ,WAAW,KAAK,UAAU,UAAU,QAAO,SAAS,KAAK,KAAK,WAAW,QAAO,UAAU;AAAA,IACtI,IAAI,OAAO,WAAW,cAAc,CAAC,YAAY;AAAA,MAI/C,OAAO,eAAe,KAAK,UAAU,EAAE,YAAY,OAAO,OAAO,CAAC,QAAyB;AAAA,QACzF,MAAM,SAAmB,OAAkD,KAAK,OAAO,GAAG;AAAA,QAC1F,OAAO,WAAW,QAAQ,MAAM,kBAAkB,KAAK,QAAQ,OAAO,OAAO,CAAC;AAAA,QAC9E,CAAC;AAAA,IACL;AAAA,IACA,OAAO;AAAA;AAAA,EAET,OAAO,KAAK,OAAO,KAAK;AAAA;AAM1B,IAAM,kBAAkB,IAAI;AAGrB,SAAS,2BAA2B,CAAC,QAAuD;AAAA,EACjG,gBAAgB,IAAI,OAAO,MAAM,IAAI,IAAI,OAAO,OAAO,OAAO,IAAI,CAAC,UAAU;AAAA,IAAC,MAAM;AAAA,IAClF,MAAM,QAAQ,QAAQ,CAAC,UAAU,MAAM,SAAS,YAAY,MAAM,UAAU,YACxE,CAAC,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,GAAG,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;AAAA,EACpF,CAAC,CAAC,CAAC;AAAA;AAIE,SAAS,0BAA0B,CAAC,QAAoG;AAAA,EAC7I,WAAW,OAAO,CAAC,cAAc,gBAAgB,GAAG;AAAA,IAClD,MAAM,SAAS,OAAO,KAAK;AAAA,IAC3B,IAAI,OAAO,WAAW,YAAY,WAAW;AAAA,MAAM;AAAA,IACnD,MAAM,OAAO;AAAA,IACb,IAAI,KAAK,UAAU;AAAA,MAAW;AAAA,IAC9B,MAAM,SAAS,KAAK;AAAA,IACpB,MAAM,WAAW,gBAAgB,IAAI,OAAO,IAAI,GAAG,IAAI,OAAO,MAAM,IAAI,GAAG,KAAK,CAAC,UAC/E,OAAO,KAAK,UAAU,YAAY,MAAM,UAAU,KAAK,SACvD,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,MAAM,OAAO,UACxD,MAAM,OAAO,MAAM,CAAC,OAAO,aAAa,UAAU,OAAO,SAAS,CACpE;AAAA,IACA,IAAI,aAAa;AAAA,MAAM,MAAM,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,GAAG,OAAO,SAAS,sHAAsH,MAAM,EAAE,OAAO,OAAO,MAAM,MAAM,MAAM,OAAO,KAAK,EAAE,CAAC;AAAA,EACjR;AAAA;;;ADlCF,SAAS,gBAAe,CAAC,QAAuE;AAAA,EAC9F,OAAO,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA;AAWvF,MAAM,WAAW;AAAA,EAOtB,WAAW,CAAC,QAKT;AAAA,IACD,QAAQ,QAAQ,QAAQ,aAAa;AAAA,IACrC,OAAO,eAAe,MAAM,aAAa;AAAA,MACvC,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,cAAc;AAAA,IAChB,CAAC;AAAA,IACD,WAAW,OAAO,QAAQ;AAAA,MACxB,IAAI,OAAO,QAAQ;AAAA,QACjB,KAAK,OAAO,OAAO;AAAA,MACrB;AAAA,IACF;AAAA;AAAA,EAIF,MAAM,GAA4B;AAAA,IAChC,MAAM,MAA+B,CAAC;AAAA,IACtC,WAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,MACnC,IAAI,KAAK,UAAU,IAAI,GAAG;AAAA,QAAG;AAAA,MAC7B,MAAM,QAAQ,KAAK;AAAA,MACnB,IAAI,iBAAiB,YAAY;AAAA,QAC/B,IAAI,OAAO,MAAM,OAAO;AAAA,MAC1B,EAAO,SAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QAC/B,IAAI,OAAO,MAAM,IAAI,CAAC,SAAU,gBAAgB,aAAa,KAAK,OAAO,IAAI,IAAK;AAAA,MACpF,EAAO;AAAA,QACL,IAAI,OAAO;AAAA;AAAA,IAEf;AAAA,IACA,OAAO;AAAA;AAAA,EAIT,OAAO,GAA4B;AAAA,IACjC,MAAM,MAA+B,CAAC;AAAA,IACtC,WAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,MACnC,MAAM,QAAQ,KAAK;AAAA,MACnB,IAAI,iBAAiB,YAAY;AAAA,QAC/B,IAAI,OAAO,MAAM,QAAQ;AAAA,MAC3B,EAAO,SAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QAC/B,IAAI,OAAO,MAAM,IAAI,CAAC,SAAU,gBAAgB,aAAa,KAAK,QAAQ,IAAI,IAAK;AAAA,MACrF,EAAO;AAAA,QACL,IAAI,OAAO;AAAA;AAAA,IAEf;AAAA,IACA,OAAO;AAAA;AAEX;AAIA,SAAS,cAAa,CAAC,OAAkD;AAAA,EACvE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAAA;AAY5E,SAAS,iBAAiB,CAAC,QAIJ;AAAA,EACrB,QAAQ,MAAM,MAAM,eAAe;AAAA,EACnC,IAAI,CAAC,eAAc,UAAU,GAAG;AAAA,IAC9B,MAAM,iBAAgB;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB,MAAM,EAAE,MAAM,KAAK;AAAA,IACrB,CAAC;AAAA,EACH;AAAA,EACA,MAAM,WAAW,IAAI;AAAA,EACrB,YAAY,KAAK,cAAc,OAAO,QAAQ,UAAU,GAAG;AAAA,IACzD,IAAI,cAAc;AAAA,MAAW;AAAA,IAC7B,MAAM,QAAQ,KAAK,YAAY,IAAI,GAAG;AAAA,IACtC,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS,yBAAyB;AAAA,QAC3C,MAAM,EAAE,MAAM,MAAM,OAAO,IAAI;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA,IAAI,CAAC,eAAc,SAAS,GAAG;AAAA,MAC7B,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS,qBAAqB;AAAA,QACvC,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,IACA,MAAM,SAAS,IAAI;AAAA,IACnB,YAAY,OAAO,SAAS,OAAO,QAAQ,SAAS,GAAG;AAAA,MACrD,IAAI,SAAS,aAAa,SAAS;AAAA,QAAO;AAAA,MAC1C,IAAI,SAAS,MAAM;AAAA,QACjB,MAAM,iBAAgB;AAAA,UACpB,SAAS,SAAS,qBAAqB,OAAO;AAAA,UAC9C,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM;AAAA,QAC/C,CAAC;AAAA,MACH;AAAA,MACA,IAAI,CAAC,MAAM,YAAY,IAAI,KAAK,GAAG;AAAA,QACjC,MAAM,aAAa,MAAM,eAAe,IAAI,KAAK;AAAA,QACjD,MAAM,iBAAgB;AAAA,UACpB,SAAS,aACL,SAAS,WAAW,oBAAoB,MAAM,qIAC9C,SAAS,yBAAyB,oBAAoB,MAAM;AAAA,UAChE,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM;AAAA,QAC/C,CAAC;AAAA,MACH;AAAA,MACA,OAAO,IAAI,KAAK;AAAA,IAClB;AAAA,IACA,IAAI,OAAO,SAAS,GAAG;AAAA,MACrB,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS,qBAAqB;AAAA,QACvC,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,IACA,SAAS,IAAI,MAAM,YAAY,EAAE,OAAO,OAAO,CAAC;AAAA,EAClD;AAAA,EACA,IAAI,SAAS,SAAS,GAAG;AAAA,IACvB,MAAM,iBAAgB;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB,MAAM,EAAE,MAAM,KAAK;AAAA,IACrB,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAeT,IAAM,uBAA0C;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,SAAS,CAAC,QAIH;AAAA,EACd,QAAQ,MAAM,MAAM,WAAW;AAAA,EAC/B,MAAM,WAAW,IAAI;AAAA,EACrB,IAAI,WAAW;AAAA,IAAW,OAAO;AAAA,EACjC,IAAI,CAAC,eAAc,MAAM,GAAG;AAAA,IAC1B,MAAM,iBAAgB;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB,MAAM,EAAE,MAAM,MAAM,OAAO,KAAK,MAAM,KAAK;AAAA,IAC7C,CAAC;AAAA,EACH;AAAA,EACA,YAAY,OAAO,SAAS,OAAO,QAAQ,MAAM,GAAG;AAAA,IAClD,IAAI,SAAS,aAAa,SAAS;AAAA,MAAO;AAAA,IAC1C,IAAI,SAAS,MAAM;AAAA,MACjB,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS,iBAAiB;AAAA,QACnC,MAAM,EAAE,MAAM,MAAM,OAAO,KAAK,MAAM,MAAM,MAAM;AAAA,MACpD,CAAC;AAAA,IACH;AAAA,IACA,IAAI,CAAC,KAAK,MAAM,YAAY,IAAI,KAAK,GAAG;AAAA,MACtC,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS,yBAAyB,8CAAyC,KAAK,MAAM;AAAA,QAC/F,MAAM,EAAE,MAAM,MAAM,OAAO,KAAK,MAAM,MAAM,MAAM;AAAA,MACpD,CAAC;AAAA,IACH;AAAA,IAGA,IAAI,CAAC,KAAK,OAAO,IAAI,KAAK;AAAA,MAAG,SAAS,IAAI,KAAK;AAAA,EACjD;AAAA,EACA,OAAO;AAAA;AAST,SAAS,UAAU,CAAC,QAMoC;AAAA,EACtD,QAAQ,MAAM,MAAM,YAAY,MAAM,SAAS;AAAA,EAC/C,MAAM,QAAQ,KAAK;AAAA,EAEnB,IAAI,KAAK,SAAS,WAAW;AAAA,IAC3B,MAAM,iBAAgB;AAAA,MACpB,SAAS,SAAS,wFAAmF,MAAM;AAAA,MAC3G,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WAAW,UAAU,EAAE,MAAM,MAAM,QAAQ,KAAK,OAAO,CAAC;AAAA,EAG9D,IAAI;AAAA,EACJ,MAAM,aAAa,KAAK;AAAA,EACxB,IAAI,eAAe,aAAa,CAAC,eAAc,UAAU,GAAG;AAAA,IAC1D,MAAM,iBAAgB;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EACA,IAAI,eAAc,UAAU,GAAG;AAAA,IAC7B,UAAU,IAAI;AAAA,IACd,YAAY,KAAK,SAAS,OAAO,QAAQ,UAAU,GAAG;AAAA,MACpD,IAAI,SAAS,SAAS,SAAS;AAAA,QAAW;AAAA,MAE1C,IAAI,MAAM,YAAY,IAAI,GAAG,KAAK,KAAK,OAAO,IAAI,GAAG;AAAA,QAAG,QAAQ,IAAI,GAAG;AAAA,IACzE;AAAA,IACA,IAAI,QAAQ,SAAS;AAAA,MAAG,UAAU,IAAI,IAAI,KAAK,MAAM;AAAA,EACvD,EAAO;AAAA,IACL,UAAU,IAAI,IAAI,KAAK,MAAM;AAAA;AAAA,EAI/B,MAAM,gBAAgB,IAAI;AAAA,EAC1B,IAAI;AAAA,EACJ,MAAM,mBAAmB,CAAC,QAAiB,YAA0B;AAAA,IACnE,IAAI,WAAW;AAAA,MAAW;AAAA,IAC1B,IAAI,CAAC,eAAc,MAAM,GAAG;AAAA,MAC1B,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS,UAAU;AAAA,QAC5B,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,KAAK;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,IACA,YAAY,KAAK,SAAS,OAAO,QAAQ,MAAM,GAAG;AAAA,MAChD,IAAI,SAAS,SAAS,SAAS;AAAA,QAAW;AAAA,MAC1C,IAAI,QAAQ,UAAU;AAAA,QACpB,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,MACA,IAAI,MAAM,eAAe,IAAI,GAAG;AAAA,QAAG,cAAc,IAAI,KAAK,IAAI;AAAA,MACzD,SAAI,YAAY,WAAW;AAAA,QAC9B,MAAM,iBAAgB;AAAA,UACpB,SAAS,SAAS,4BAA4B,kBAAkB,MAAM;AAAA,UACtE,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,MAAM,UAAU,IAAI;AAAA,QACvD,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA,EAEF,iBAAiB,KAAK,QAAQ,QAAQ;AAAA,EACtC,iBAAiB,KAAK,SAAS,SAAS;AAAA,EAGxC,MAAM,SAAkC,CAAC;AAAA,EACzC,WAAW,OAAO;AAAA,IAAS,OAAO,OAAO;AAAA,EACzC,WAAW,OAAO;AAAA,IAAU,OAAO,OAAO;AAAA,EAE1C,MAAM,gBAAgB,IAAI;AAAA,EAC1B,YAAY,cAAc,SAAS,eAAe;AAAA,IAChD,MAAM,WAAW,MAAM,eAAe,IAAI,YAAY;AAAA,IACtD,IAAI,aAAa;AAAA,MAAW;AAAA,IAC5B,MAAM,SAAS,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,IACxD,MAAM,aAAa,WAAW,YAAY,YAAY,WAAW,IAAI,OAAO,UAAU;AAAA,IACtF,IAAI,eAAe,WAAW;AAAA,MAE5B,OAAO,gBAAgB;AAAA,MACvB,cAAc,IAAI,cAAc,IAAI;AAAA,MACpC;AAAA,IACF;AAAA,IACA,IAAI,SAAS,MAAM;AAAA,MACjB,MAAM,QAAQ,WAAW,EAAE,MAAM,MAAM,YAAY,MAAM,YAAY,MAAM,CAAC,EAAE,CAAC;AAAA,MAC/E,OAAO,gBAAgB,MAAM;AAAA,MAC7B,cAAc,IAAI,cAAc,MAAM,IAAI;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,IAAI,CAAC,eAAc,IAAI,GAAG;AAAA,MACxB,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS,kBAAkB;AAAA,QACpC,MAAM,EAAE,MAAM,MAAM,OAAO,MAAM,MAAM,UAAU,aAAa;AAAA,MAChE,CAAC;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,WAAW,EAAE,MAAM,MAAM,YAAY,MAAM,YAAY,MAAM,KAAK,CAAC;AAAA,IACjF,OAAO,gBAAgB,MAAM;AAAA,IAC7B,cAAc,IAAI,cAAc,MAAM,IAAI;AAAA,EAC5C;AAAA,EAEA,MAAM,SAAS,IAAI,IAAY,OAAO;AAAA,EACtC,IAAI,cAAc,WAAW;AAAA,IAC3B,OAAO,SAAS;AAAA,IAChB,OAAO,IAAI,QAAQ;AAAA,EACrB;AAAA,EAEA,MAAM,SAAkC,CAAC;AAAA,EACzC,WAAW,OAAO,sBAAsB;AAAA,IACtC,IAAI,KAAK,SAAS;AAAA,MAAW,OAAO,OAAO,KAAK;AAAA,EAClD;AAAA,EACA,OAAO,SAAS;AAAA,EAEhB,OAAO;AAAA,IACL;AAAA,IACA,MAAM,EAAE,QAAQ,UAAU,WAAW,cAAc;AAAA,EACrD;AAAA;AAKF,SAAS,QAAQ,CAAC,QAAsE;AAAA,EACtF,QAAQ,MAAM,SAAS;AAAA,EACvB,OAAO,KAAK,IAAI,CAAC,QAAQ;AAAA,IACvB,MAAM,SAAkC,KAAK,IAAI;AAAA,IACjD,MAAM,SAAS,IAAI,IAAI,KAAK,MAAM;AAAA,IAClC,YAAY,cAAc,cAAc,KAAK,WAAW;AAAA,MACtD,OAAO,IAAI,YAAY;AAAA,MACvB,IAAI,cAAc;AAAA,QAAM;AAAA,MACxB,MAAM,QAAQ,OAAO;AAAA,MACrB,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QACxB,OAAO,gBAAgB,SAAS,EAAE,MAAM,OAAsB,MAAM,UAAU,CAAC;AAAA,MACjF,EAAO,SAAI,eAAc,KAAK,GAAG;AAAA,QAC/B,OAAO,gBAAgB,SAAS,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,UAAU,CAAC,EAAE;AAAA,MACtE;AAAA,IACF;AAAA,IACA,WAAW,OAAO,KAAK;AAAA,MAAU,OAAO,IAAI,GAAG;AAAA,IAC/C,OAAO,IAAI,WAAW,EAAE,QAAQ,QAAQ,UAAU,KAAK,SAAS,CAAC;AAAA,GAClE;AAAA;AAKH,IAAM,qBAAwC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,kBAAkB,CAAC,QAMN;AAAA,EACpB,QAAQ,MAAM,MAAM,YAAY,MAAM,aAAa;AAAA,EAEnD,MAAM,QAAQ,CAAC,SAAqF;AAAA,IAClG,MAAM,MAAM,kBAAkB,EAAE,OAAO,QAAQ,CAAC,GAAG,MAAM,cAAc,CAAC;AAAA,IACxE,IAAI,CAAC,eAAc,GAAG,GAAG;AAAA,MACvB,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS;AAAA,QAClB,MAAM,EAAE,MAAM,MAAM,OAAO,KAAK,MAAM,KAAK;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA,IACA,OAAO,WAAW,EAAE,MAAM,MAAM,YAAY,MAAM,MAAM,IAAI,CAAC;AAAA;AAAA,EAG/D,MAAM,UAAU,CAAC,KAAuB,SAAsC;AAAA,IAC5E,IAAI,QAAQ;AAAA,MAAM,OAAO;AAAA,IACzB,OAAO,SAAS,EAAE,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,MAAM;AAAA;AAAA,EAG/C,MAAM,OAAgC;AAAA,IACpC,UAAU,OAAO,SAA4C;AAAA,MAC3D,QAAQ,QAAQ,SAAS,MAAM,IAAI;AAAA,MACnC,OAAO,SAAS,EAAE,MAAM,MAAM,SAAS,SAAS,MAAM,GAAG,KAAK,CAAC;AAAA;AAAA,IAEjE,WAAW,OAAO,SAAiD;AAAA,MACjE,QAAQ,QAAQ,SAAS,MAAM,IAAI;AAAA,MACnC,OAAO,QAAQ,MAAM,SAAS,UAAU,MAAM,GAAG,IAAI;AAAA;AAAA,IAEvD,kBAAkB,OAAO,SAA0C;AAAA,MACjE,QAAQ,QAAQ,SAAS,MAAM,IAAI;AAAA,MACnC,OAAO,SAAS,EAAE,MAAM,CAAC,MAAM,SAAS,iBAAiB,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE;AAAA;AAAA,IAE7E,YAAY,OAAO,SAAgD;AAAA,MACjE,QAAQ,QAAQ,SAAS,MAAM,IAAI;AAAA,MACnC,OAAO,QAAQ,MAAM,SAAS,WAAW,MAAM,GAAG,IAAI;AAAA;AAAA,IAExD,mBAAmB,OAAO,SAAyC;AAAA,MACjE,QAAQ,QAAQ,SAAS,MAAM,IAAI;AAAA,MACnC,OAAO,SAAS,EAAE,MAAM,CAAC,MAAM,SAAS,kBAAkB,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE;AAAA;AAAA,IAI9E,OAAO,CAAC,SAA+D,SAAS,MAAM,kBAAkB,EAAE,OAAO,MAAM,MAAM,cAAc,CAAC,CAAC;AAAA,IAC7I,WAAW,CAAC,SAAwC,SAAS,UAAU,kBAAkB,EAAE,OAAO,MAAM,MAAM,cAAc,CAAC,CAAC;AAAA,IAC9H,SAAS,CAAC,SAA0C,SAAS,QAAQ,kBAAkB,EAAE,OAAO,MAAM,MAAM,cAAc,CAAC,CAAC;AAAA,EAC9H;AAAA,EAEA,WAAW,UAAU,oBAAoB;AAAA,IACvC,KAAK,UAAU,MAAa;AAAA,MAC1B,MAAM,iBAAgB;AAAA,QACpB,SAAS,SAAS,6BAAwB;AAAA,QAC1C,MAAM,EAAE,MAAM,MAAM,OAAO,KAAK,MAAM,MAAM,OAAO;AAAA,MACrD,CAAC;AAAA;AAAA,EAEL;AAAA,EAEA,OAAO;AAAA;AAWF,SAAS,UAAU,CAAC,QAOP;AAAA,EAClB,QAAQ,MAAM,QAAQ,MAAM,eAAe;AAAA,EAC3C,MAAM,WAAW,kBAAkB,EAAE,MAAM,MAAM,WAAW,CAAC;AAAA,EAC7D,MAAM,OAA0C,CAAC;AAAA,EACjD,YAAY,YAAY,SAAS,UAAU;AAAA,IACzC,MAAM,WAAW,OAAO;AAAA,IACxB,IAAI,aAAa,WAAW;AAAA,MAC1B,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,SAAS,iCAAiC,KAAK,MAAM;AAAA,QAC9D,MAAM,EAAE,MAAM,MAAM,OAAO,KAAK,MAAM,KAAK;AAAA,MAC7C,CAAC;AAAA,IACH;AAAA,IACA,KAAK,cAAc,mBAAmB,EAAE,MAAM,MAAM,YAAY,UAAU,MAAM,SAAS,CAAC;AAAA,EAC5F;AAAA,EACA,OAAO;AAAA;AAOF,SAAS,gBAAgB,CAAC,QAIxB;AAAA,EACP,QAAQ,QAAQ,MAAM,WAAW;AAAA,EACjC,MAAM,QAAsB,CAAC,YAC3B,WAAW,EAAE,MAAM,QAAQ,MAAM,QAAQ,MAAM,YAAY,QAAQ,WAAW,CAAC;AAAA,EACjF,OAAO,eAAe,QAAQ,eAAe,EAAE,OAAO,YAAY,KAAK,CAAC;AAAA;;AEzhB1E,sBAAS;AA6BT,SAAS,gBAAgB,CAAC,QAIZ;AAAA,EACZ,OAAO,IAAI,YAAU;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,yBAAyB,OAAO,SAAS,OAAO,UAAU,OAAO,OAAO,IAAI,WAAW;AAAA,IAChG,MAAM,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC1E,CAAC;AAAA;AAGH,SAAS,aAAa,CAAC,QAKX;AAAA,EACV,MAAM,SAAS,OAAO,OAAO,aAAa,SAAS,OAAO,KAAK;AAAA,EAC/D,IAAI,kBAAkB,SAAS;AAAA,IAC7B,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,sBAAsB,OAAO,SAAS,OAAO;AAAA,MACtD,MAAM,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM;AAAA,IACnD,CAAC;AAAA,EACH;AAAA,EACA,IAAI,OAAO,WAAW,WAAW;AAAA,IAC/B,MAAM,iBAAiB,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,CAAC;AAAA,EAC5F;AAAA,EACA,OAAO,OAAO;AAAA;AAQhB,IAAM,mBAAsC,CAAC,OAAO,aAAa,aAAa,YAAY,UAAU,MAAM;AAE1G,SAAS,cAAa,CAAC,OAAkD;AAAA,EACvE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAAA;AAa5E,SAAS,UAAU,CAAC,QAAiF;AAAA,EACnG,QAAQ,OAAO,OAAO,UAAU;AAAA,EAChC,IAAI,CAAC,eAAc,KAAK;AAAA,IAAG;AAAA,EAC3B,MAAM,OAAO,MAAM,YAAY,IAAI,KAAK;AAAA,EACxC,IAAI,SAAS,aAAa,KAAK,eAAe;AAAA,IAAQ;AAAA,EACtD,MAAM,OAAO,OAAO,KAAK,KAAK;AAAA,EAC9B,MAAM,OAAO,KAAK,WAAW,IAAK,KAAK,KAAgB;AAAA,EACvD,OAAO,SAAS,aAAa,iBAAiB,SAAS,IAAI,IAAI,OAAO;AAAA;AAWjE,SAAS,iBAAiB,CAAC,QAKN;AAAA,EAC1B,QAAQ,MAAM,OAAO,MAAM,eAAe;AAAA,EAC1C,MAAM,eAAe,WAAW,MAAM;AAAA,EACtC,MAAM,MAA+B,KAAK,KAAK;AAAA,EAE/C,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC/C,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,MAAM,SAAS,eAAe;AAAA,IAC9B,IAAI,WAAW,WAAW;AAAA,MACxB,MAAM,WAAW,WAAW,EAAE,OAAO,OAAO,KAAK,MAAM,CAAC;AAAA,MACxD,MAAM,QAAQ,CAAC,UAA4B,cAAc,EAAE,OAAO,MAAM,MAAM,OAAO,KAAK,QAAQ,OAAO,MAAM,CAAC;AAAA,MAChH,IAAI,aAAa,OAAO;AAAA,QACtB,IAAI,OAAO,EAAE,KAAK,MAAO,MAA2B,GAAG,EAAE;AAAA,MAC3D,EAAO,SAAI,aAAa,QAAQ;AAAA,QAC9B,MAAM,UAAW,MAA4B;AAAA,QAC7C,IAAI,OAAO,EAAE,MAAM,MAAM,QAAQ,OAAO,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM,OAAO,EAAE;AAAA,MAClF,EAAO,SAAI,aAAa,WAAW;AAAA,QACjC,IAAI,OAAO;AAAA,MACb,EAAO;AAAA,QACL,IAAI,OAAO,MAAM,KAAK;AAAA;AAAA,MAExB;AAAA,IACF;AAAA,IAGA,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,IAC7C,IAAI,aAAa,aAAa,OAAO,UAAU,YAAY,UAAU;AAAA,MAAM;AAAA,IAC3E,MAAM,SAAS,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,IACxD,IAAI,WAAW;AAAA,MAAW;AAAA,IAC1B,IAAI,OAAO,oBAAoB,EAAE,MAAM,QAAQ,OAAO,OAAkC,WAAW,CAAC;AAAA,EACtG;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,mBAAmB,CAAC,QAKD;AAAA,EAC1B,QAAQ,MAAM,QAAQ,OAAO,eAAe;AAAA,EAC5C,MAAM,MAAM,CAAC,QACX,eAAc,GAAG,IAAI,kBAAkB,EAAE,MAAM,OAAO,QAAQ,MAAM,KAAK,WAAW,CAAC,IAAI;AAAA,EAC3F,MAAM,OAAO,CAAC,UAA6B,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,KAAK;AAAA,EAE5F,MAAM,OAAO,CAAC,OAAgB,SAA6D;AAAA,IACzF,IAAI,CAAC,eAAc,KAAK;AAAA,MAAG,OAAO;AAAA,IAClC,IAAI,CAAC,KAAK,KAAK,CAAC,QAAQ,MAAM,SAAS,SAAS;AAAA,MAAG,OAAO,IAAI,KAAK;AAAA,IACnE,MAAM,OAAgC,KAAK,MAAM;AAAA,IACjD,WAAW,OAAO,MAAM;AAAA,MACtB,IAAI,MAAM,SAAS;AAAA,QAAW,KAAK,OAAO,KAAK,MAAM,IAAI;AAAA,IAC3D;AAAA,IACA,OAAO;AAAA;AAAA,EAET,MAAM,WAAW,CAAC,OAAgB,SAChC,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI;AAAA,EAEjF,MAAM,OAAgC,KAAK,MAAM;AAAA,EACjD,IAAI,MAAM,WAAW;AAAA,IAAW,KAAK,SAAS,KAAK,MAAM,MAAM;AAAA,EAC/D,IAAI,MAAM,eAAe,WAAW;AAAA,IAClC,KAAK,aAAa,eAAc,MAAM,UAAU,IAC5C,KAAK,MAAM,YAAY,MAAM,KAAK,MAAM,WAAW,IAAI,EAAE,IACzD,KAAK,MAAM,UAAU;AAAA,EAC3B;AAAA,EACA,IAAI,MAAM,oBAAoB,WAAW;AAAA,IACvC,MAAM,UAAU,MAAM,QAAQ,MAAM,eAAe,IAAI,MAAM,kBAAkB,CAAC,MAAM,eAAe;AAAA,IACrG,MAAM,SAAS,QAAQ,IAAI,CAAC,UAC1B,eAAc,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,MAAM,MAAM,EAAE,IAAI,KACpE;AAAA,IACA,KAAK,kBAAkB,MAAM,QAAQ,MAAM,eAAe,IAAI,SAAS,OAAO;AAAA,EAChF;AAAA,EACA,IAAI,MAAM,WAAW;AAAA,IAAW,KAAK,SAAS,SAAS,MAAM,QAAQ,CAAC,MAAM,CAAC;AAAA,EAC7E,IAAI,MAAM,eAAe;AAAA,IAAW,KAAK,aAAa,SAAS,MAAM,YAAY,CAAC,MAAM,CAAC;AAAA,EACzF,IAAI,MAAM,WAAW;AAAA,IAAW,KAAK,SAAS,SAAS,MAAM,QAAQ,CAAC,UAAU,QAAQ,CAAC;AAAA,EACzF,OAAO;AAAA;AAIF,SAAS,oBAAoB,CAAC,QAMT;AAAA,EAC1B,QAAQ,MAAM,OAAO,QAAQ,MAAM,eAAe;AAAA,EAClD,MAAM,WAAW,CAAC,QAChB,OAAO,QAAQ,YAAY,QAAQ,OAC/B,kBAAkB,EAAE,MAAM,OAAO,MAAM,KAAgC,WAAW,CAAC,IACnF;AAAA,EAEN,IACE,WAAW,YACX,WAAW,YACX,WAAW,gBACX,WAAW,uBACX;AAAA,IACA,OAAO,KAAK,SAAS,YAAY,OAAO,KAAK,MAAM,MAAM,SAAS,KAAK,IAAI,EAAE;AAAA,EAC/E;AAAA,EACA,IAAI,WAAW,gBAAgB,WAAW,uBAAuB;AAAA,IAC/D,OAAO,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,MAAM,MAAM,KAAK,KAAK,IAAI,QAAQ,EAAE,IAAI;AAAA,EACjF;AAAA,EACA,IAAI,WAAW,UAAU;AAAA,IACvB,OAAO,KAAK,MAAM,QAAQ,SAAS,KAAK,MAAM,GAAG,QAAQ,SAAS,KAAK,MAAM,EAAE;AAAA,EACjF;AAAA,EACA,OAAO;AAAA;;AC/NT;AAIA,IAAM,YAAY,IAAI;AAGf,SAAS,wBAAwB,CAAC,QAA0E;AAAA,EACjH,UAAU,IAAI,OAAO,QAAQ,OAAO,OAAO;AAAA;AAItC,SAAS,oBAAuB,CAAC,QAA2F;AAAA,EACjI,MAAM,UAAU,UAAU,IAAI,OAAO,MAAM;AAAA,EAC3C,IAAI,YAAY;AAAA,IAAW,MAAM,cAAc,EAAE,SAAS,kDAAkD,CAAC;AAAA,EAC7G,OAAO,QAAQ,OAAO,GAAG;AAAA;;;ACiB3B,sBAAS;;;AChCT,sBAAS;AAKT,IAAM,UAAyC,IAAI;AAG5C,SAAS,oBAAoB,CAAC,QAAsD;AAAA,EACzF,QAAQ,IAAI,OAAO,QAAQ,OAAO,IAAI;AAAA;AAIjC,SAAS,2BAA2B,CAAC,QAA4C;AAAA,EACtF,MAAM,OAAO,QAAQ,IAAI,OAAO,IAAI;AAAA,EACpC,IAAI,SAAS;AAAA,IAAW,QAAQ,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE,UAAW,CAAC;AAAA;AAInF,SAAS,iBAAiB,CAAC,QAA0F;AAAA,EAC1H,MAAM,OAAO,QAAQ,IAAI,OAAO,EAAE;AAAA,EAClC,IAAI,SAAS;AAAA,IAAW,MAAM,IAAI,YAAU;AAAA,MAC1C,MAAM;AAAA,MACN,SAAS,UAAU,OAAO,SAAS,SAAS;AAAA,MAC5C,MAAM,EAAE,QAAQ,iBAAiB,UAAU,OAAO,SAAS,SAAS,IAAI,UAAU,OAAO,SAAS,SAAS,SAAS;AAAA,IACtH,CAAC;AAAA,EACD,OAAO,KAAK,OAAO,QAAQ;AAAA;;;ACJ7B;AAsBO,IAAM,wBAA2C,OAAO,OAAO;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAQM,IAAM,yBAA4C,OAAO,OAAO;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,yBAAyE,OAAO,OAC3F,OAAO,YAAY;AAAA,EACjB,GAAG,sBAAsB,IAAI,CAAC,WAAW,CAAC,QAAQ,MAAM,CAAU;AAAA,EAClE,GAAG,uBAAuB,IAAI,CAAC,WAAW,CAAC,QAAQ,OAAO,CAAU;AACtE,CAAC,CACH;AAGO,SAAS,oBAAoB,CAAC,QAA8D;AAAA,EACjG,OAAO,OAAO,OAAO,wBAAwB,OAAO,MAAM,IACtD,uBAAuB,OAAO,UAC9B;AAAA;AAoBC,IAAM,uBAAqE,OAAO,OAAO;AAAA,EAC9F,SAAS;AAAA,EACT,KAAK;AAAA,EACL,cAAc;AAAA,EACd,aAAa;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,eAAe;AAAA,EACf,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,WAAW;AAAA,EACX,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,cAAc;AAChB,CAAC;AAGM,SAAS,kBAAkB,CAAC,QAA4D;AAAA,EAC7F,OAAO,OAAO,OAAO,sBAAsB,OAAO,MAAM,IACpD,qBAAqB,OAAO,UAC5B;AAAA;AAKN,IAAM,eAAgE,OAAO,OAAO;AAAA,EAClF,OAAO;AAAA,EACP,KAAK;AAAA,EACL,SAAS;AAAA,EACT,cACE;AAAA,EACF,mBACE;AACJ,CAAC;AAGM,SAAS,eAAe,CAAC,QAIR;AAAA,EACtB,QAAQ,MAAM,WAAW;AAAA,EACzB,OAAO,IAAI,oBAAoB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,SAAS,cAAc,OAAO,WAAW,sBAAsB,KAAK,sDAAiD,aAAa;AAAA,OAC9H,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,EAC3D,CAAC;AAAA;AA+BH,IAAM,WAAW,IAAI;AAGrB,IAAM,UAAU,IAAI;AAEpB,SAAS,KAAK,CAAC,QAAiE;AAAA,EAC9E,QAAQ,OAAO,aAAa;AAAA,EAC5B,OAAO,OAAO,UAAU,aAAe,MAAgB,KAAK,QAAQ,IAAc;AAAA;AASpF,SAAS,eAAe,CAAC,QAGb;AAAA,EACV,QAAQ,OAAO,aAAa;AAAA,EAC5B,IAAI,aAAa;AAAA,IAAW;AAAA,EAC5B,IAAI,aAAa;AAAA,IAAM,OAAO,OAAO,UAAU,aAAa,IAAI,SAA6B;AAAA,MAC3F,IAAI,oBAAoB,IAAI;AAAA,QAAG,OAAO,QAAQ,OAAO,gBAAgB,EAAE,MAAM,aAAa,QAAQ,MAAM,CAAC,CAAC;AAAA,MAC1G,OAAQ,MAAgB,GAAG,kBAAkB,EAAE,OAAO,MAAM,MAAM,uBAAuB,SAAS,MAAM,gBAAgB,EAAE,MAAM,aAAa,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC;AAAA,QAC9J;AAAA,EACJ,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IAAM;AAAA,EACjD,MAAM,SAAS;AAAA,EACf,MAAM,YAAqC,CAAC;AAAA,EAC5C,WAAW,UAAU,UAAU;AAAA,IAG7B,MAAM,KAAK,MAAM,EAAE,OAAO,OAAO,SAAS,UAAU,UAAU,CAAC;AAAA,IAC/D,IAAI,OAAO;AAAA,MAAW,UAAU,UAAU,IAAI,SAA6B;AAAA,QACzE,IAAI,oBAAoB,IAAI;AAAA,UAAG,OAAO,QAAQ,OAAO,gBAAgB,EAAE,MAAM,QAAQ,QAAQ,MAAM,CAAC,CAAC;AAAA,QACrG,OAAO,GAAG,GAAG,kBAAkB,EAAE,OAAO,MAAM,MAAM,uBAAuB,SAAS,MAAM,gBAAgB,EAAE,MAAM,QAAQ,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC;AAAA;AAAA,EAEjJ;AAAA,EACA,OAAO,OAAO,OAAO,SAAS;AAAA;AAIhC,SAAS,gBAAgB,CAAC,QAKA;AAAA,EACxB,QAAQ,OAAO,WAAW;AAAA,EAC1B,MAAM,OAAO,OAAO;AAAA,EACpB,MAAM,WAAoC,CAAC;AAAA,EAE3C,WAAW,UAAU,uBAAuB;AAAA,IAC1C,MAAM,KAAK,MAAM,EAAE,OAAO,KAAK,SAAS,UAAU,KAAK,CAAC;AAAA,IACxD,IAAI,OAAO;AAAA,MAAW,SAAS,UAAU,IAAI,SAA6B;AAAA,QACxE,IAAI,oBAAoB,IAAI;AAAA,UAAG,OAAO,QAAQ,OAAO,gBAAgB,EAAE,MAAM,GAAG,MAAM,cAAc,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,QAC9H,MAAM,YAAY,GAAG,GAAG,kBAAkB,EAAE,OAAO,MAAM,MAAM,aAAa,SAAS,MAAM,gBAAgB,EAAE,MAAM,GAAG,MAAM,cAAc,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC;AAAA,QACvK,OAAO,WAAW,cAAc,EAAE,OAAO,UAAU,CAAC;AAAA,QACpD,OAAO;AAAA;AAAA,EAEX;AAAA,EACA,WAAW,UAAU,wBAAwB;AAAA,IAC3C,MAAM,UAAU,MACd,QAAQ,OACN,gBAAgB;AAAA,MACd,MAAM,GAAG,MAAM,cAAc;AAAA,MAC7B,QAAQ;AAAA,MACR,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,IACpC,CAAC,CACH;AAAA,IACF,SAAS,UAAU;AAAA,EACrB;AAAA,EACA,WAAW,SAAS,QAAQ;AAAA,IAC1B,IAAI,MAAM,UAAU,WAAW,MAAM,UAAU,MAAM;AAAA,MAAM;AAAA,IAC3D,MAAM,aAAa,gBAAgB,EAAE,OAAO,KAAK,MAAM,WAAW,UAAU,MAAM,SAAS,CAAC;AAAA,IAC5F,SAAS,MAAM,YACb,eACC,MACC,QAAQ,OACN,gBAAgB;AAAA,MACd,MAAM,GAAG,MAAM,cAAc,MAAM;AAAA,MACnC,QAAQ;AAAA,MACR,MAAM,EAAE,OAAO,MAAM,MAAM,QAAQ,MAAM,UAAU,WAAW,MAAM,UAAU;AAAA,IAChF,CAAC,CACH;AAAA,EACN;AAAA,EACA,OAAO,OAAO,OAAO,QAAQ;AAAA;AAI/B,SAAS,WAAW,CAAC,QAIF;AAAA,EACjB,WAAW,aAAa,OAAO,YAAY;AAAA,IACzC,OAAO,OAAO,OAAO,EAAE,OAAO,WAAW,QAAQ,OAAO,OAAO,CAAC;AAAA,EAClE;AAAA,EACA,OAAO,QAAQ,OAAO,OAAO,MAAM;AAAA;AAGrC,SAAS,aAAa,CAAC,QAA6E;AAAA,EAClG,QAAQ,QAAQ,YAAY;AAAA,EAC5B,QAAQ,MAAM,QAAQ,eAAe;AAAA,EAErC,MAAM,SAAgD,CAAC;AAAA,EACvD,MAAM,SAAkC,CAAC;AAAA,EAEzC,WAAW,SAAS,KAAK,QAAQ;AAAA,IAC/B,MAAM,OAAO,OAAO,QAAQ,MAAM;AAAA,IAClC,IAAI,SAAS;AAAA,MAAW;AAAA,IACxB,MAAM,WAAW,iBAAiB,EAAE,MAAM,OAAO,QAAQ,WAAW,CAAC;AAAA,IACrE,OAAO,MAAM,QAAQ;AAAA,IACrB,OAAO,MAAM,cAAc;AAAA,EAC7B;AAAA,EAEA,OAAO,UAAU,OAAO,OAAO,MAAM;AAAA,EACrC,WAAW,SAAS,KAAK,QAAQ;AAAA,IAC/B,MAAM,WAAW,OAAO,MAAM;AAAA,IAC9B,IAAI,aAAa,WAAW;AAAA,MAC1B,OAAO,eAAe,QAAQ,MAAM,YAAY,EAAE,OAAO,UAAU,YAAY,KAAK,CAAC;AAAA,IACvF;AAAA,EACF;AAAA,EAEA,OAAO,MAAM,OAAO,IAAI,KAAK,MAAM;AAAA,EAEnC,OAAO,eAAe,CAAC,KAAc,YAAwC;AAAA,IAC3E,IAAI,OAAO,QAAQ,YAAY;AAAA,MAC7B,MAAM,MAAM;AAAA,MACZ,OAAO,OAAO,aACZ,CAAC,OAAO,IAAI,aAAa,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,GACjD,OACF;AAAA,IACF;AAAA,IACA,IAAI,MAAM,QAAQ,GAAG,GAAG;AAAA,MAGtB,WAAW,aAAa,KAA2B;AAAA,QACjD,MAAM,SAAS,WAAW,SAAS,EAAE,OAAO,UAAU,CAAC;AAAA,QACvD,IAAI,WAAW;AAAA,UAAW;AAAA,QAC1B,IAAI,qBAAqB,EAAE,OAAO,CAAC,MAAM,QAAQ;AAAA,UAC/C,WAAW,cAAc,EAAE,OAAO,UAAU,CAAC;AAAA,UAC7C;AAAA,QACF;AAAA,QACA,OAAO,YAAY;AAAA,UACjB,YAAY;AAAA,UACZ,QAAQ,gBAAgB;AAAA,YACtB,MAAM,wBAAmB;AAAA,YACzB,QAAQ;AAAA,YACR,MAAM,EAAE,OAAO;AAAA,UACjB,CAAC;AAAA,UACD,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,MACA,OAAO,OAAO,aAAa,KAAc,OAAgB;AAAA,IAC3D;AAAA,IACA,OAAO,OAAO,aAAa,KAAc,OAAgB;AAAA;AAAA,EAK3D,iBAAiB,EAAE,QAAQ,QAAQ,MAAM,OAAO,CAAC;AAAA,EAEjD,MAAM,SAAS,CAAC,WAA8D;AAAA,IAC5E,MAAM,SAAS,OAAO;AAAA,IACtB,IAAI,WAAW;AAAA,MAAW;AAAA,IAC1B,OAAO,UAAU,CAAC,QAAkC;AAAA,MAClD,MAAM,UAAW,OAA8C,KAAK,QAAQ,GAAG;AAAA,MAC/E,OAAO,aAAa,EAAE,QAAQ,SAAS,QAAQ,CAAC;AAAA;AAAA;AAAA,EAGpD,OAAO,SAAS;AAAA,EAChB,OAAO,aAAa;AAAA,EACpB,OAAO,eAAe;AAAA,EAGtB,OAAO,YAAY,MAAsB;AAAA,EAEzC,YAAY,QAAQ,WAAW,OAAO,QAAQ,oBAAoB,GAAG;AAAA,IACnE,IAAI,WAAW,SAAS,WAAW;AAAA,MAAW;AAAA,IAC9C,MAAM,SAAgC,WAAW,QAAQ,QAAQ;AAAA,IACjE,OAAO,UACL,WAAW,iBACP,MAAa;AAAA,MACX,MAAM,gBAAgB,EAAE,MAAM,QAAQ,QAAQ,MAAM,EAAE,QAAQ,OAAO,EAAE,CAAC;AAAA,QAE1E,MACE,QAAQ,OAAO,gBAAgB,EAAE,MAAM,QAAQ,QAAQ,MAAM,EAAE,QAAQ,OAAO,EAAE,CAAC,CAAC;AAAA,EAC5F;AAAA,EAEA,WAAW,SAAS,QAAQ;AAAA,IAC1B,IAAI,MAAM,UAAU;AAAA,MAAU;AAAA,IAC9B,MAAM,aAAa,gBAAgB,EAAE,OAAQ,OAA8C,MAAM,WAAW,UAAU,MAAM,SAAS,CAAC;AAAA,IACtI,OAAO,MAAM,YACX,eACC,MACC,QAAQ,OACN,gBAAgB;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,QAAQ;AAAA,MACR,MAAM,EAAE,QAAQ,MAAM,UAAU,WAAW,MAAM,UAAU;AAAA,IAC7D,CAAC,CACH;AAAA,EACN;AAAA,EAEA,OAAO,OAAO,OAAO,MAAM;AAAA;AAG7B,SAAS,YAAY,CAAC,QAA6E;AAAA,EACjG,MAAM,WAAW,QAAQ,IAAI,OAAO,MAAM;AAAA,EAC1C,IAAI,aAAa;AAAA,IAAW,OAAO;AAAA,EACnC,MAAM,QAAQ,cAAc,MAAM;AAAA,EAClC,4BAA4B,EAAE,MAAM,OAAO,QAAQ,IAAI,MAAM,CAAC;AAAA,EAC9D,QAAQ,IAAI,OAAO,QAAQ,KAAK;AAAA,EAChC,OAAO;AAAA;AAUF,SAAS,cAAc,CAAC,QAKtB;AAAA,EACP,MAAM,UAA2B;AAAA,IAC/B,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO,UAAU,CAAC;AAAA,IAC1B,YAAY,OAAO;AAAA,EACrB;AAAA,EACA,SAAS,IAAI,OAAO,QAAQ,OAAO;AAAA,EACnC,OAAO,eAAe,OAAO,QAAQ,aAAa;AAAA,IAChD,OAAO,MAAsB,aAAa,EAAE,QAAQ,OAAO,QAAQ,QAAQ,CAAC;AAAA,IAC5E,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB,CAAC;AAAA;AASI,SAAS,eAAe,CAAC,QAA0D;AAAA,EACxF,MAAM,UAAU,SAAS,IAAI,OAAO,IAAI;AAAA,EACxC,IAAI,YAAY;AAAA,IAAW;AAAA,EAC3B,SAAS,IAAI,OAAO,IAAI,OAAO;AAAA,EAC/B,OAAO,eAAe,OAAO,IAAI,aAAa;AAAA,IAC5C,OAAO,MAAsB,aAAa,EAAE,QAAQ,OAAO,IAAI,QAAQ,CAAC;AAAA,IACxE,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB,CAAC;AAAA;;;AFpZH,SAAS,WAAW,CAAC,SAAiB,MAA2C;AAAA,EAC/E,OAAO,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,MAAM,QAAQ,CAAC,EAAE,CAAC;AAAA;AAG7E,SAAS,cAAc,CAAC,MAAgC;AAAA,EACtD,OAAO,KAAK,OAAO,OAAO,CAAC,UAAU,MAAM,WAAW,SAAS;AAAA;AAGjE,SAAS,cAAa,CAAC,OAAoC;AAAA,EACzD,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAAA;AAa5E,SAAS,QAAW,CAAC,OAAqC;AAAA,EACxD,IAAI;AAAA,IACF,OAAO,MAAM;AAAA,IACb,OAAO,OAAO;AAAA,IACd,OAAO,QAAQ,OAAO,KAAK;AAAA;AAAA;AAK/B,SAAS,YAAY,CAAC,QAAiE;AAAA,EACrF,MAAM,SAAS,OAAO,MAAM;AAAA,EAC5B,MAAM,QAAQ,OAAO,QAAQ,OAAO;AAAA,EACpC,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,IACzC,MAAM,YAAY,SAAS,OAAO,MAAM,mEAA8D,OAAO,+DAA+D,EAAE,OAAO,OAAO,MAAM,MAAM,SAAS,OAAO,QAAQ,CAAC;AAAA,EACnO;AAAA,EACA,OAAO,GAAG,OAAO,QAAQ,MAAM;AAAA;AAKjC,SAAS,UAAU,CAAC,QAAiF;AAAA,EACnG,QAAQ,OAAO,OAAO,UAAU;AAAA,EAChC,MAAM,YAAuB,GAAG,QAAQ,MAAM;AAAA,EAC9C,OAAO,UAAU,YAAY,YAAY,EAAE,KAAK,CAAC,OAAoB,SAAS,EAAE;AAAA;AAIlF,SAAS,cAAc,CAAC,QAA2D;AAAA,EACjF,MAAM,MAAiB,CAAC;AAAA,EACxB,YAAY,KAAK,UAAU,OAAO,QAAQ,OAAO,KAAK,GAAG;AAAA,IACvD,MAAM,aACJ,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,KACnE,OAAO,MAAM,gBAAgB,IAAI,GAAG;AAAA,IACtC,IAAI;AAAA,MAAY,OAAO,OAAO,KAAK,KAAkB;AAAA,IAChD;AAAA,UAAI,OAAO;AAAA,EAClB;AAAA,EACA,OAAO;AAAA;AAcT,SAAS,UAAU,CAAC,QAKR;AAAA,EACV,QAAQ,MAAM,OAAO,OAAO,YAAY;AAAA,EACxC,IAAI,CAAC,eAAc,KAAK;AAAA,IAAG,OAAO;AAAA,EAClC,MAAM,MAAiB,CAAC;AAAA,EACxB,MAAM,QAAqB,CAAC;AAAA,EAC5B,MAAM,YAAY,CAAC,UACjB,MAAM,QAAQ,KAAK,IACf,MAAM,IAAI,CAAC,SAAS,WAAW,EAAE,MAAM,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC,IACrE,WAAW,EAAE,MAAM,OAAO,OAAO,OAAO,QAAQ,CAAC;AAAA,EAEvD,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,IAAI,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,OAAO;AAAA,MAClD,IAAI,OAAO,UAAU,KAAK;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,IAC7C,MAAM,SAAS,aAAa,YAAY,YAAY,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,IAC7F,IAAI,aAAa,aAAa,WAAW,WAAW;AAAA,MAClD,IAAI,OAAO;AAAA,MACX;AAAA,IACF;AAAA,IACA,MAAM,SAAS,OAAO,WAAW;AAAA,IACjC,MAAM,OAAO,MAAiB,aAAa,EAAE,OAAO,QAAQ,QAAQ,CAAC;AAAA,IACrE,MAAM,YAAY,CAAC,UACjB,eAAc,KAAK,IAAI,WAAW,EAAE,MAAM,OAAO,QAAQ,OAAO,OAAO,QAAQ,CAAC,IAAI;AAAA,IACtF,MAAM,QAAqB,CAAC;AAAA,IAE5B,IAAI,SAAS,QAAQ;AAAA,MACnB,IAAI,CAAC,eAAc,KAAK,GAAG;AAAA,QACzB,IAAI,OAAO;AAAA,QACX;AAAA,MACF;AAAA,MACA,YAAY,IAAI,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,QACjD,IAAI,YAAY;AAAA,UAAW;AAAA,QAC3B,IAAI,OAAO,UAAU,OAAO,QAAQ;AAAA,UAClC,MAAM,SAAS,UAAU,OAAO;AAAA,UAChC,MAAM,KAAK,GAAG,KAAK,SAAS,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC;AAAA,QAClE,EAAO,SAAI,OAAO,SAAS;AAAA,UACzB,MAAM,SAAS,UAAU,OAAO;AAAA,UAChC,MAAM,KAAK,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,OAAO,CAAC;AAAA,QACxF,EAAO;AAAA,UACL,MAAM,KAAK,GAAG,KAAK,QAAQ,CAAC;AAAA;AAAA,MAEhC;AAAA,IACF,EAAO;AAAA,MACL,MAAM,OAAyD,CAAC;AAAA,MAChE,IAAI,UAAU,MAAM;AAAA,QAClB,KAAK,KAAK,EAAE,KAAK,MAAM,SAAS,KAAK,CAAC;AAAA,MACxC,EAAO,SAAI,eAAc,KAAK,OAAM,QAAQ,WAAS,WAAW,SAAQ;AAAA,QACtE,IAAI,QAAQ;AAAA,QACZ,YAAY,IAAI,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,UACjD,IAAI,YAAY;AAAA,YAAW;AAAA,UAC3B,IAAI,OAAO,QAAQ,OAAO;AAAA,YAAS,KAAK,KAAK,EAAE,KAAK,IAAI,QAAQ,CAAC;AAAA,UAC5D;AAAA,oBAAQ;AAAA,QACf;AAAA,QACA,IAAI,OAAO;AAAA,UACT,IAAI,OAAO;AAAA,UACX;AAAA,QACF;AAAA,MACF,EAAO,SAAI,eAAc,KAAK,GAAG;AAAA,QAC/B,KAAK,KAAK,EAAE,KAAK,MAAM,SAAS,MAAM,CAAC;AAAA,MACzC,EAAO;AAAA,QACL,IAAI,OAAO;AAAA,QACX;AAAA;AAAA,MAEF,aAAa,KAAK,aAAa,MAAM;AAAA,QACnC,IAAI,YAAY,MAAM;AAAA,UACpB,MAAM,KAAK,SAAU,QAAQ,OAAO,EAAE,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,IAAK,GAAG,MAAM,KAAK,CAAC;AAAA,QAC3F,EAAO;AAAA,UACL,MAAM,SAAS,UAAU,OAAO;AAAA,UAChC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC;AAAA;AAAA,MAErE;AAAA;AAAA,IAGF,IAAI,MAAM,WAAW,GAAG;AAAA,MACtB,IAAI,OAAO;AAAA,MACX;AAAA,IACF;AAAA,IACA,MAAM,WAAsB,CAAC;AAAA,IAC7B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,QAAQ,OAAO,KAAK,IAAI,EAAE;AAAA,MAChC,IAAI,SAAS;AAAA,QAAU,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;AAAA,MAC5C;AAAA,iBAAS,SAAS,KAAK;AAAA,IAC9B;AAAA,IACA,IAAI,OAAO;AAAA,EACb;AAAA,EAEA,IAAI,MAAM,SAAS,GAAG;AAAA,IACpB,MAAM,WAAW,IAAI,QAAQ,YAAY,CAAC,IAAI,MAAM,QAAQ,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG;AAAA,IACzF,IAAI,MAAM,CAAC,GAAG,UAAU,GAAG,KAAK;AAAA,EAClC;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,iBAAiB,CAAC,QAAyE;AAAA,EAClG,QAAQ,MAAM,OAAO,YAAY;AAAA,EACjC,WAAW,QAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO,GAAG;AAAA,IAC/D,IAAI,CAAC,eAAc,IAAI;AAAA,MAAG;AAAA,IAC1B,YAAY,MAAM,SAAS,OAAO,QAAQ,IAAI,GAAG;AAAA,MAC/C,IAAI,SAAS;AAAA,QAAW;AAAA,MACxB,MAAM,WAAW,MAAM,eAAe,IAAI,IAAI;AAAA,MAC9C,MAAM,SAAS,aAAa,YAAY,YAAY,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,MAC7F,IAAI,WAAW;AAAA,QAAW;AAAA,MAC1B,IAAI,OAAO,WAAW,WAAW;AAAA,QAC/B,MAAM,YAAY,mBAAmB,MAAM,QAAQ,gFAA2E,EAAE,OAAO,MAAM,MAAM,UAAU,KAAK,CAAC;AAAA,MACrK;AAAA,MACA,kBAAkB,EAAE,MAAM,OAAO,QAAQ,SAAS,KAAK,CAAC;AAAA,IAC1D;AAAA,EACF;AAAA;AAWF,SAAS,cAAc,CAAC,QAKV;AAAA,EACZ,QAAQ,MAAM,OAAO,MAAM,YAAY;AAAA,EACvC,MAAM,MAAiB,KAAK,KAAK;AAAA,EACjC,kBAAkB,EAAE,MAAM,OAAO,SAAS,KAAK,QAAQ,CAAC;AAAA,EACxD,WAAW,OAAO,CAAC,WAAW,QAAQ,GAAY;AAAA,IAChD,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,CAAC,eAAc,KAAK;AAAA,MAAG;AAAA,IAC3B,MAAM,OAAkB,KAAK,MAAM;AAAA,IACnC,YAAY,MAAM,SAAS,OAAO,QAAQ,KAAK,GAAG;AAAA,MAChD,IAAI,SAAS,aAAa,SAAS;AAAA,QAAO;AAAA,MAC1C,IAAI,SAAS,UAAU;AAAA,QACrB,MAAM,QAAQ,SAAS,OACnB,MAAM,UAAU,OAAO,CAAC,aAAa,SAAS,MAAM,EAAE,IAAI,CAAC,aAAa,SAAS,IAAI,IACrF,eAAc,IAAI,KAAK,eAAc,KAAK,MAAM,IAC9C,OAAO,KAAK,KAAK,MAAM,EAAE,OAAO,CAAC,QAAQ;AAAA,UACvC,MAAM,QAAS,KAAK,OAAqB;AAAA,UACzC,OAAO,UAAU,QAAQ,eAAc,KAAK;AAAA,SAC7C,IACD,CAAC;AAAA,QACP,MAAM,cAAc,eAAc,IAAI,KAAK,eAAc,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI;AAAA,QAC7F,WAAW,WAAW,OAAO;AAAA,UAC3B,MAAM,WAAW,MAAM,eAAe,IAAI,OAAO;AAAA,UACjD,MAAM,SAAS,aAAa,YAAY,YAAY,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,UAC7F,IAAI,QAAQ,WAAW,WAAW;AAAA,YAChC,MAAM,YAAY,aAAa,MAAM,QAAQ,wHAAmH,EAAE,OAAO,MAAM,MAAM,UAAU,QAAQ,CAAC;AAAA,UAC1M;AAAA,UACA,MAAM,QAAQ,cAAc;AAAA,UAC5B,IAAI,WAAW,aAAa,gBAAgB,aAAa,eAAc,KAAK,KAAK,MAAM,UAAU,WAAW;AAAA,YAC1G,YAAY,WAAW,KAAK,OAAO,OAAO,WAAW,EAAE,MAAM,OAAO,QAAQ,OAAO,MAAM,OAAO,QAAQ,CAAC,EAAE;AAAA,UAC7G;AAAA,QACF;AAAA,QACA,IAAI,gBAAgB;AAAA,UAAW,KAAK,QAAQ,KAAM,MAAoB,QAAQ,YAAY;AAAA,QAC1F;AAAA,MACF;AAAA,MACA,MAAM,WAAW,MAAM,eAAe,IAAI,IAAI;AAAA,MAC9C,IAAI,aAAa;AAAA,QAAW;AAAA,MAC5B,MAAM,SAAS,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,MACxD,IAAI,WAAW;AAAA,QAAW;AAAA,MAG1B,IAAI,SAAS,QAAQ,OAAO,WAAW;AAAA,QAAW;AAAA,MAClD,MAAM,QAAmB,SAAS,OAAO,CAAC,IAAI,KAAM,KAAmB;AAAA,MACvE,IAAI,MAAM,UAAU,WAAW;AAAA,QAC7B,MAAM,QAAQ,WAAW,EAAE,MAAM,OAAO,QAAQ,OAAO,MAAM,OAAO,QAAQ,CAAC;AAAA,MAC/E;AAAA,MACA,IAAI,OAAO,WAAW,WAAW;AAAA,QAC/B,MAAM,OAAO,aAAa,EAAE,OAAO,QAAQ,QAAQ,CAAC;AAAA,QACpD,MAAM,QAAQ,MAAM,UAAU,YAAY,OAAO,EAAE,KAAK,CAAC,MAAM,OAAO,IAAI,EAAE;AAAA,MAC9E;AAAA,MACA,KAAK,QAAQ,eAAe,EAAE,MAAM,OAAO,QAAQ,MAAM,OAAO,QAAQ,CAAC;AAAA,IAC3E;AAAA,IACA,IAAI,OAAO;AAAA,EACb;AAAA,EACA,OAAO;AAAA;AAQT,SAAS,SAAS,CAAC,QAKL;AAAA,EACZ,QAAQ,MAAM,OAAO,YAAY;AAAA,EACjC,MAAM,OAAO,kBAAkB,EAAE,OAAO,OAAO,MAAM,MAAM,cAAc,CAAC;AAAA,EAC1E,MAAM,SAAS,eAAe,EAAE,MAAM,OAAO,MAAM,QAAQ,CAAC;AAAA,EAC5D,OAAO,OAAO,UAAU,YACpB,SACA,KAAK,QAAQ,OAAO,WAAW,EAAE,MAAM,OAAO,OAAO,OAAO,OAAO,QAAQ,CAAC,EAAE;AAAA;AAGpF,IAAM,kBAAkB,CAAC,WAAW,mBAAmB,OAAO,cAAc,UAAU,cAAc,UAAU,cAAc,QAAQ;AAgBpI,SAAS,cAAc,CAAC,QAMV;AAAA,EACZ,QAAQ,MAAM,OAAO,SAAS,UAAU;AAAA,EACxC,MAAM,OAAO,kBAAkB,EAAE,OAAO,OAAO,MAAM,MAAM,cAAc,CAAC;AAAA,EAC1E,IAAI,MAAiB,KAAK,KAAK;AAAA,EAC/B,IAAI,MAAM,WAAW,WAAW;AAAA,IAC9B,MAAM,QAAQ,aAAa,EAAE,OAAO,QAAQ,CAAC,EAAE,MAAM,OAAO;AAAA,IAC5D,MAAM,QAAQ,KAAK,MAAM,OAAO;AAAA,IAChC,MAAM,WAAW,eAAc,KAAK,KAAK,SAAS,QAAQ,MAAM,MAAM;AAAA,IACtE,IAAI,aAAa,aAAa,aAAa,OAAO;AAAA,MAChD,MAAM,YACJ,GAAG,YAAY,MAAM,cAAc,MAAM,OAAO,iDAChD,EAAE,OAAO,MAAM,MAAM,OAAO,MAAM,OAAO,OAAO,MAAM,CACxD;AAAA,IACF;AAAA,IACA,IAAI,UAAU;AAAA,MAAU,IAAI,MAAM,OAAO,SAAS;AAAA,IAClD,MAAM,QAAQ,MAAM,OAAO;AAAA,IAC3B,IAAI,MAAM,UAAU,KAAK,CAAC,aAAa,SAAS,QAAQ,SAAS,KAAK,KAAK,IAAI,SAAS,UAAU,SAAS,GAAG;AAAA,MAC5G,MAAM,kBAAkB;AAAA,QAAE,MAAM;AAAA,QAAK;AAAA,QAAO;AAAA,QAC1C,OAAO,YAAY,qCAAqC,MAAM,QAAQ,4CAA4C,EAAE,OAAO,MAAM,MAAM,MAAM,CAAC;AAAA,MAChJ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,YAAY,MAAM,SAAS,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC/C,MAAM,WAAW,MAAM,eAAe,IAAI,IAAI;AAAA,IAC9C,IAAI,aAAa,aAAa,CAAC,eAAc,IAAI;AAAA,MAAG;AAAA,IACpD,MAAM,SAAS,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,IACxD,IAAI,WAAW;AAAA,MAAW;AAAA,IAC1B,IAAI,OAAO,WAAW,WAAW;AAAA,MAC/B,WAAW,QAAQ,iBAAiB;AAAA,QAClC,IAAI,KAAK,UAAU,WAAW;AAAA,UAC5B,MAAM,YACJ,UAAU,0BAA0B,OAAO,qHAC3C,EAAE,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,CAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,iBAAiB,EAAE,MAAM,QAAQ,OAAO,MAAM,QAAQ,CAAC;AAAA,IACnE,IAAI,OAAO,WAAW,WAAW;AAAA,MAC/B,MAAM,OAAO,oBAAoB,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,MAC1D,MAAM,cAAc,OAAO,OAAO;AAAA,MAGlC,KACG,KAAK,SAAS,cAAc,KAAK,SAAS,mBAC3C,KAAK,UAAU,KAAK,CAAC,WAAW,OAAO,SAAS,WAAW,GAC3D;AAAA,QACA,MAAM,QAAQ;AAAA,QACd,QAAQ,kBAAkB;AAAA,UAAE,MAAM;AAAA,UAAO;AAAA,UAAO,OAAO,aAAa,EAAE,OAAO,QAAQ,QAAQ,CAAC,EAAE;AAAA,UAC9F,OAAO,YAAY,qCAAqC,OAAO,QAAQ,4CAA4C,EAAE,OAAO,OAAO,MAAM,MAAM,CAAC;AAAA,QAClJ,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,IAAI,QAAQ;AAAA,EACd;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,gBAAgB,CAAC,QAKZ;AAAA,EACZ,QAAQ,MAAM,QAAQ,OAAO,YAAY;AAAA,EACzC,MAAM,OAAO,CAAC,KAAc,UAC1B,eAAc,GAAG,IAAI,eAAe,EAAE,MAAM,OAAO,QAAQ,MAAM,KAAK,SAAS,MAAM,CAAC,IAAI;AAAA,EAC5F,MAAM,OAAO,CAAC,OAAgB,UAC5B,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,CAAC,QAAQ,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,OAAO,KAAK;AAAA,EAEjF,MAAM,OAAO,CAAC,OAAgB,SAA6D;AAAA,IACzF,IAAI,CAAC,eAAc,KAAK;AAAA,MAAG,OAAO;AAAA,IAClC,MAAM,SAAS,KAAK,KAAK,CAAC,QAAQ,MAAM,SAAS,SAAS;AAAA,IAC1D,IAAI,CAAC;AAAA,MAAQ,OAAO,KAAK,OAAO,QAAQ;AAAA,IACxC,MAAM,OAAkB,KAAK,MAAM;AAAA,IACnC,WAAW,OAAO,MAAM;AAAA,MACtB,IAAI,MAAM,SAAS;AAAA,QAAW;AAAA,MAC9B,KAAK,OAAO,KAAK,MAAM,MAAM,QAAQ,WAAW,WAAW,QAAQ;AAAA,IACrE;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,MAAiB,KAAK,MAAM;AAAA,EAClC,IAAI,MAAM,WAAW;AAAA,IAAW,IAAI,SAAS,KAAK,MAAM,QAAQ,QAAQ;AAAA,EACxE,IAAI,MAAM,eAAe,aAAa,eAAc,MAAM,UAAU,GAAG;AAAA,IACrE,IAAI,aAAa,KAAK,MAAM,YAAY,MAAM,KAAK,MAAM,WAAW,MAAM,QAAQ,EAAE;AAAA,EACtF;AAAA,EACA,IAAI,MAAM,oBAAoB,WAAW;AAAA,IACvC,MAAM,UAAU,MAAM,QAAQ,MAAM,eAAe,IAAI,MAAM,kBAAkB,CAAC,MAAM,eAAe;AAAA,IACrG,MAAM,SAAS,QAAQ,IAAI,CAAC,UAC1B,eAAc,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,MAAM,QAAQ,QAAQ,EAAE,IAAI,KAC9E;AAAA,IACA,IAAI,kBAAkB,MAAM,QAAQ,MAAM,eAAe,IAAI,SAAS,OAAO;AAAA,EAC/E;AAAA,EACA,IAAI,MAAM,WAAW,WAAW;AAAA,IAC9B,IAAI,SAAS,MAAM,QAAQ,MAAM,MAAM,IACnC,MAAM,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,IAC/C,KAAK,MAAM,QAAQ,CAAC,MAAM,CAAC;AAAA,EACjC;AAAA,EACA,IAAI,MAAM,eAAe,WAAW;AAAA,IAClC,IAAI,aAAa,MAAM,QAAQ,MAAM,UAAU,IAC3C,MAAM,WAAW,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,IACnD,KAAK,MAAM,YAAY,CAAC,MAAM,CAAC;AAAA,EACrC;AAAA,EACA,IAAI,MAAM,WAAW,WAAW;AAAA,IAC9B,IAAI,SAAS,MAAM,QAAQ,MAAM,MAAM,IACnC,MAAM,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,UAAU,QAAQ,CAAC,CAAC,IAC3D,KAAK,MAAM,QAAQ,CAAC,UAAU,QAAQ,CAAC;AAAA,EAC7C;AAAA,EACA,OAAO;AAAA;AAKT,SAAS,cAAc,CAAC,QAMN;AAAA,EAChB,QAAQ,MAAM,OAAO,MAAM,SAAS,oBAAoB;AAAA,EACxD,MAAM,QAAQ,CAAI,QAA2D,qBAAqB,EAAE,QAAQ,iBAAiB,IAAI,CAAC;AAAA,EAClI,MAAM,SAAS,MAAM;AAAA,EACrB,MAAM,QAAQ,QAAQ,OAAO;AAAA,EAC7B,MAAM,KAAK,MAAM,WAAW,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,EAErD,MAAM,YAAY,CAAC,SAAgC;AAAA,IACjD,MAAM,SAAS,UAAU,EAAE,MAAM,OAAO,MAAM,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAAA,IACnE,OAAO,KAAK,QAAQ,OAAO,WAAW,EAAE,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,CAAC,EAAE;AAAA;AAAA,EAE7F,MAAM,cAAc,CAAC,SAA+B;AAAA,IAClD,MAAM,SAAS,UAAU,EAAE,MAAM,OAAO,MAAM,QAAQ,CAAC;AAAA,IACvD,MAAM,OAAO,eAAe,EAAE,OAAO,OAAQ,OAAO,SAAS,CAAC,EAAgB,CAAC;AAAA,IAC/E,OAAO,KAAK,QAAQ,OAAO,WAAW,EAAE,OAAO,MAAM,OAAO,OAAO,OAAO,MAAM,CAAC,EAAE;AAAA;AAAA,EAGrF,MAAM,aAAa,CAAC,UAAgC;AAAA,IAClD,MAAM,OAAO,kBAAkB,EAAE,OAAO,OAAO,MAAM,cAAc,CAAC;AAAA,IACpE,2BAA2B,EAAE,MAAM,OAAO,MAAM,MAAM,cAAc,CAAC;AAAA,IACrE,OAAO,eAAe,EAAE,MAAM,OAAO,MAAM,QAAQ,CAAC;AAAA;AAAA,EAEtD,MAAM,YAAY,CAAC,MAAe,UAChC,eAAe,EAAE,MAAM,OAAO,MAAO,QAAQ,CAAC,GAAiB,SAAS,MAAM,CAAC;AAAA,EAEjF,MAAM,cAAc,MAAc;AAAA,IAChC,YAAY,KAAK,UAAU,MAAM,iBAAiB;AAAA,MAChD,MAAM,QAAQ,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,MACpD,IAAI,MAAM,WAAW,GAAG,UAAU,MAAM,MAAM,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC;AAAA,QAAG,OAAO;AAAA,IACrF;AAAA,IACA,OAAO,GAAG,KAAK,GAAG;AAAA;AAAA,EAQpB,MAAM,WAAW,OAAU,KAAoB,MAAiB,UAAqF;AAAA,IACnJ,MAAM,SAAS,MAAO,IAAI,QAAQ,MAAM,MAAwB,UAAU;AAAA,MACxE,OAAO,YAAY,IAAI,EAAE;AAAA,MACzB,QAAQ,OAAO,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;AAAA,MACzD,MAAM;AAAA,IACR,CAAC;AAAA,IACD,IAAI,WAAW;AAAA,MAAM,OAAO;AAAA,IAC5B,MAAM,UACJ,GAAG,WAAW,IACV,GAAG,GAAG,KAAgB,OAAqB,GAAG,IAAc,IAC5D,GAAG,YAAY,IAAI,OAAO,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAO,OAAqB,KAAK,CAAC,CAAC,EAAE;AAAA,IACnG,OAAO,MAAM,KAAK,OAAO;AAAA;AAAA,EAE3B,MAAM,WAAW,CAAC,WAChB,IAAI,YAAU,EAAE,MAAM,kBAAkB,SAAS,GAAG,aAAa,MAAM,yEAAyE,MAAM,EAAE,OAAO,MAAM,MAAM,OAAO,EAAE,CAAC;AAAA,EAEvL,OAAO;AAAA,IACL,UAAU,CAAC,SAAqB,KAAK,SAAS,UAAU,IAAI,CAAC;AAAA,IAC7D,WAAW,CAAC,SAAqB,KAAK,UAAU,UAAU,IAAI,CAAC;AAAA,IAC/D,kBAAkB,CAAC,SAAqB,KAAK,iBAAiB,UAAU,IAAI,CAAC;AAAA,IAC7E,YAAY,CAAC,SAAoB,KAAK,UAAU,YAAY,IAAI,CAAC;AAAA,IACjE,mBAAmB,CAAC,SAAoB,KAAK,iBAAiB,YAAY,IAAI,CAAC;AAAA,IAG/E,QAAQ,CAAC,SACP,SAAS,MAAM,KAAK,OAAO,KAAK,WAAW,IAAI,GAAG,MAAM,UAAU,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;AAAA,IAC3F,YAAY,CAAC,SACX,SAAS,MACP,KAAK,WAAW;AAAA,SACX,WAAW,IAAI;AAAA,MAClB,OAAQ,KAAK,QAAQ,CAAC,GAAmB,IAAI,CAAC,QAAQ,UAAU,KAAK,QAAQ,CAAC;AAAA,IAChF,CAAC,CACH;AAAA,IACF,qBAAqB,CAAC,SACpB,SAAS,MACP,KAAK,oBAAoB;AAAA,SACpB,WAAW,IAAI;AAAA,MAClB,OAAQ,KAAK,QAAQ,CAAC,GAAmB,IAAI,CAAC,QAAQ,UAAU,KAAK,QAAQ,CAAC;AAAA,IAChF,CAAC,CACH;AAAA,IACF,QAAQ,CAAC,SACP,MAAM,OAAO,OAAO;AAAA,MAClB,MAAM,MAAM,GAAG,kBAAkB,YAAY,KAAK,GAAG,cAAc;AAAA,MACnE,MAAM,OAAO,UAAU,KAAK,MAAM,QAAQ;AAAA,MAC1C,MAAM,MAAM,MAAM,SAAS,KAAK,MAAM,CAAC,KAAK,YACzC,IAAI,QAAQ,MAAM,MAAwB,OAAO,KAAK,WAAW,IAAI,GAAG,MAAM,OAAO,QAAQ,CAAC,CACjG;AAAA,MACA,IAAI,QAAQ;AAAA,QAAM,MAAM,SAAS,QAAQ;AAAA,MACzC,OAAO;AAAA,KACR;AAAA,IACH,YAAY,CAAC,SACX,SAAS,MAAM,KAAK,WAAW;AAAA,SAC1B;AAAA,MACH,MAAM,UAAU,KAAK,MAAM,QAAQ;AAAA,MACnC,OAAO,WAAW;AAAA,QAChB,OAAO,WAAW,EAAE,MAAM,OAAO,OAAO,KAAK,OAAO,QAAQ,CAAC;AAAA,QAC7D,OAAO,OAAO;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH,CAAC,CAAC;AAAA,IAIJ,YAAY,MAAsB;AAAA,MAChC,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,MAC5B,CAAC;AAAA;AAAA,IAEH,qBAAqB,CAAC,SACpB,SAAS,MAAM;AAAA,MAKb,MAAM,MAAM,KAAK;AAAA,MACjB,IAAI,QAAQ,WAAW;AAAA,QACrB,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,MAAM,EAAE,OAAO,MAAM,KAAK;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,MACA,OAAO,IAAI;AAAA,WACN;AAAA,QACH,MAAM,UAAU,KAAK,MAAM,QAAQ;AAAA,QACnC,OAAO,WAAW;AAAA,UAChB,OAAO,WAAW,EAAE,MAAM,OAAO,OAAO,KAAK,OAAO,QAAQ,CAAC;AAAA,UAC7D,OAAO,OAAO;AAAA,UACd;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,KACF;AAAA,IACH,QAAQ,CAAC,SACP,MAAM,OAAO,OAAO;AAAA,MAClB,MAAM,MAAM,GAAG,kBAAkB,YAAY,KAAK,GAAG,cAAc;AAAA,MACnE,MAAM,SAAS,UAAU,KAAK,QAAQ,QAAQ;AAAA,MAC9C,MAAM,SAAS,UAAU,KAAK,QAAQ,QAAQ;AAAA,MAC9C,MAAM,aAAa,WACjB,OAAO,YACJ,CAAC,UAAU,SAAS,EAAY,QAAQ,CAAC,QAAS,KAAK,SAAS,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAE,CACvG,CACF;AAAA,MACA,MAAM,MAAM,MAAM,SAAS,KAAK,MAAM,CAAC,KAAK,YACzC,IAAI,QAAQ,MAAM,MAAwB,OAAO,KAAK,YAAY,OAAO,SAAS,MAAM,OAAO,CAAC,CACnG;AAAA,MACA,IAAI,QAAQ;AAAA,QAAM,OAAO;AAAA,MAGzB,OAAQ,MAAO,IAAI,QAAQ,MAAM,MAAwB,OAAO,KAAK,YAAY,MAAM,OAAO,CAAC;AAAA,KAChG;AAAA,IACH,QAAQ,CAAC,SACP,MAAM,OAAO,OAAO;AAAA,MAClB,MAAM,MAAM,GAAG,kBAAkB,YAAY,KAAK,GAAG,cAAc;AAAA,MACnE,MAAM,MAAM,MAAM,SAAS,KAAK,MAAM,CAAC,KAAK,YACzC,IAAI,QAAQ,MAAM,MAAwB,OAAO,KAAK,WAAW,IAAI,GAAG,OAAO,QAAQ,CAAC,CAC3F;AAAA,MACA,IAAI,QAAQ;AAAA,QAAM,MAAM,SAAS,QAAQ;AAAA,MACzC,OAAO;AAAA,KACR;AAAA,IACH,YAAY,CAAC,SACX,SAAS,MAAM,KAAK,WAAW;AAAA,SACzB,QAAQ,CAAC;AAAA,MACb,OAAO,WAAW;AAAA,QAChB,OAAO,WAAW,EAAE,MAAM,OAAO,OAAO,MAAM,OAAO,QAAQ,CAAC;AAAA,QAC9D,OAAO,OAAO;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH,CAAC,CAAC;AAAA,IACJ,OAAO,CAAC,SAAqB,KAAK,MAAM,UAAU,IAAI,CAAC;AAAA,IACvD,WAAW,CAAC,SAAoB,KAAK,UAAU,UAAU,IAAI,CAAC;AAAA,IAC9D,SAAS,CAAC,SAAoB,KAAK,QAAQ,UAAU,IAAI,CAAC;AAAA,EAC5D;AAAA;AAYF,SAAS,cAAc,CAAC,QAOoB;AAAA,EAC1C,QAAQ,MAAM,OAAO,MAAM,YAAY;AAAA,EACvC,MAAM,WAAW,CAAC,SAAgC,UAAU,EAAE,MAAM,OAAO,MAAM,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAAA,EACtG,MAAM,MAAM,CAAC,UAAgC;AAAA,IAC3C,MAAM,OAAO,OAAO,gBAAgB,QAAQ,QAAQ,kBAAkB,EAAE,OAAO,OAAO,MAAM,cAAc,CAAC;AAAA,IAC3G,IAAI,OAAO,gBAAgB;AAAA,MAAO,2BAA2B,EAAE,MAAM,OAAO,MAAM,MAAM,cAAc,CAAC;AAAA,IACvG,MAAM,SAAS,eAAe,EAAE,MAAM,OAAO,MAAM,QAAQ,CAAC;AAAA,IAC5D,OAAO,OAAO,UAAU,YACpB,SACA,KAAK,QAAQ,OAAO,WAAW,EAAE,MAAM,OAAO,OAAO,OAAO,OAAO,QAAQ,CAAC,EAAE;AAAA;AAAA,EAEpF,MAAM,UAAU,CAAC,OAAgB,UAC/B,eAAe,EAAE,MAAM,OAAO,MAAO,SAAS,CAAC,GAAiB,SAAS,MAAM,CAAC;AAAA,EAElF,MAAM,YAAqC;AAAA,IACzC,UAAU,CAAC,SAAqB,KAAK,SAAS,SAAS,IAAI,CAAC;AAAA,IAC5D,WAAW,CAAC,SAAqB,KAAK,UAAU,SAAS,IAAI,CAAC;AAAA,IAC9D,kBAAkB,CAAC,SAAqB,KAAK,iBAAiB,SAAS,IAAI,CAAC;AAAA,IAC5E,YAAY,CAAC,SAAoB,KAAK,WAAW,SAAS,IAAI,CAAC;AAAA,IAC/D,mBAAmB,CAAC,SAAoB,KAAK,kBAAkB,SAAS,IAAI,CAAC;AAAA,IAC7E,OAAO,CAAC,SAAqB,KAAK,MAAM,SAAS,IAAI,CAAC;AAAA,IACtD,WAAW,CAAC,SAAoB,KAAK,UAAU,SAAS,IAAI,CAAC;AAAA,IAC7D,SAAS,CAAC,SAAoB,KAAK,QAAQ,SAAS,IAAI,CAAC;AAAA,IACzD,QAAQ,CAAC,SAAoB,SAAS,MAAM,KAAK,OAAO,KAAK,IAAI,IAAI,GAAG,MAAM,QAAQ,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;AAAA,IAC7G,YAAY,CAAC,SACX,SAAS,MAAM,KAAK,WAAW,KAAK,IAAI,IAAI,GAAG,OAAQ,KAAK,QAAQ,CAAC,GAAmB,IAAI,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAAA,IAC7H,qBAAqB,CAAC,SACpB,SAAS,MACP,KAAK,oBAAoB,KAAK,IAAI,IAAI,GAAG,OAAQ,KAAK,QAAQ,CAAC,GAAmB,IAAI,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CACtH;AAAA,IACF,QAAQ,CAAC,SAAoB,SAAS,MAAM,KAAK,OAAO,KAAK,IAAI,IAAI,GAAG,MAAM,QAAQ,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;AAAA,IAC7G,YAAY,CAAC,SAAoB,SAAS,MAAM,KAAK,WAAW,KAAK,IAAI,IAAI,GAAG,MAAM,QAAQ,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;AAAA,IACrH,qBAAqB,CAAC,SACpB,SAAS,MAAM;AAAA,MACb,MAAM,MAAM,KAAK;AAAA,MACjB,IAAI,QAAQ,WAAW;AAAA,QACrB,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,MACA,OAAO,IAAI,KAAK,IAAI,IAAI,GAAG,MAAM,QAAQ,KAAK,MAAM,QAAQ,EAAE,CAAC;AAAA,KAChE;AAAA,IACH,QAAQ,CAAC,SACP,SAAS,MACP,KAAK,OAAO,KAAK,IAAI,IAAI,GAAG,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,GAAG,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,EAAE,CAAC,CAC9G;AAAA,IACF,YAAY,CAAC,SAAoB,SAAS,MAAM;AAAA,MAC9C,IAAI,OAAO,gBAAgB;AAAA,QAAO,OAAO,KAAK,WAAW,IAAI;AAAA,MAC7D,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,KACF;AAAA,IACD,QAAQ,CAAC,SAAoB,KAAK,OAAO,IAAI,IAAI,CAAC;AAAA,IAClD,YAAY,CAAC,SAAqB,KAAK,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC;AAAA,EACnE;AAAA,EACA,OAAO,KAAK,SAAS,UAAU;AAAA;AAIjC,SAAS,mBAAmB,CAAC,QAKD;AAAA,EAC1B,MAAM,MAA+B,CAAC;AAAA,EACtC,YAAY,KAAK,SAAS,OAAO,QAAQ,OAAO,IAAI,GAAG;AAAA,IACrD,IAAI,OAAO,OAAO;AAAA,MAAU;AAAA,IAC5B,IAAI,OAAO,SAAS,YAAY;AAAA,MAC9B,IAAI,OAAO,CAAC,SACT,KAAoC,KAAM,QAAQ,CAAC,GAAI,OAAO,WAAW,EAAE,OAAO,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC;AAAA,IACjJ,EAAO,SAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,MACpD,IAAI,OAAO,oBAAoB,EAAE,MAAM,MAAiC,UAAU,CAAC,GAAoB,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,CAAC;AAAA,IACnJ;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AASF,SAAS,YAAY,CAAC,QAAmJ;AAAA,EAC9K,QAAQ,QAAQ,SAAS;AAAA,EACzB,MAAM,OAAO,CAAC,OAAkB,aAC9B,OAAO,eAAe,EAAE,OAAO,MAAM,MAAM,SAAS,CAAC,KAAK;AAAA,EAC5D,MAAM,WAAW,eAAe,IAAI;AAAA,EACpC,IAAI,SAAS,WAAW;AAAA,IAAG;AAAA,EAE3B,MAAM,YAAY,IAAI;AAAA,EACtB,WAAW,SAAS,KAAK,QAAQ;AAAA,IAC/B,MAAM,WAAW,OAAO,QAAQ,MAAM;AAAA,IAItC,UAAU,IAAI,MAAM,MAAM,KAAK,SAAS,CAAC;AAAA,IACzC,IAAI,MAAM,WAAW,WAAW;AAAA,MAC9B,MAAM,UAAU,KAAK,OAAO,eAAe,EAAE,MAAM,OAAO,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC,GAAG,aAAa,MAAM,CAAC,CAAC;AAAA,MACnH,YAAY,KAAK,UAAU,OAAO,QAAQ,OAAO,GAAG;AAAA,QAClD,MAAM,aAAa,OAAO,yBAAyB,UAAU,GAAG;AAAA,QAChE,IAAI,YAAY,iBAAiB;AAAA,UAAM;AAAA,QACvC,OAAO,eAAe,UAAU,KAAK,KAAK,YAAY,MAAM,CAAC;AAAA,MAC/D;AAAA,MACA;AAAA,IACF;AAAA,IAGA,MAAM,QAAQ,CAAC,WAAmB,MAChC,QAAQ,OACN,YACE,SAAS,MAAM,mEAA8D,MAAM,QAAQ,+DAC3F,EAAE,OAAO,MAAM,MAAM,OAAO,CAC9B,CACF;AAAA,IAOF,MAAM,aAAa,CAAC,OAAgB,QAAyB;AAAA,MAC3D,IAAI,OAAO,UAAU;AAAA,QAAY,OAAO,MAAM,GAAG;AAAA,MACjD,IAAI,CAAC,eAAc,KAAK;AAAA,QAAG,OAAO;AAAA,MAClC,MAAM,YAAqC,CAAC;AAAA,MAC5C,WAAW,SAAS,OAAO,KAAK,KAAK,GAAG;AAAA,QACtC,UAAU,SAAS,WAAW,MAAM,QAAQ,GAAG,OAAO,OAAO;AAAA,MAC/D;AAAA,MACA,OAAO;AAAA;AAAA,IAMT,WAAW,OAAO,OAAO,KAAK,QAAQ,GAAG;AAAA,MACvC,MAAM,aAAa,OAAO,yBAAyB,UAAU,GAAG;AAAA,MAChE,IAAI,eAAe,aAAa,WAAW,iBAAiB;AAAA,QAAM;AAAA,MAClE,OAAO,eAAe,UAAU,KAAK;AAAA,QACnC,OAAO,WAAW,SAAS,MAAM,GAAG;AAAA,QACpC,YAAY,WAAW,eAAe;AAAA,QACtC,UAAU;AAAA,QACV,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,CAAC,UAAwC;AAAA,IAC3D,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AAAA,MACvE,MAAM,YAAY,8DAA8D;AAAA,IAClF;AAAA,IACA,MAAM,WAA+C,OAAO,OAAO,IAAI;AAAA,IACvE,WAAW,SAAS,UAAU;AAAA,MAC5B,MAAM,SAAS,MAAM;AAAA,MACrB,MAAM,MAAM,OAAO;AAAA,MACnB,MAAM,aAAa,OAAO,yBAAyB,OAAO,OAAO,UAAU,GAAG,IAAI,WAAW,OAAO,GAAG;AAAA,MACvG,IAAI,eAAe,aAAa,EAAE,WAAW,eAAe,WAAW,UAAU,aAAa,WAAW,UAAU,MAAM;AAAA,QACvH,MAAM,YAAY,uCAAuC,6CAA6C,MAAM,SAAS,EAAE,SAAS,IAAI,CAAC;AAAA,MACvI;AAAA,MACA,MAAM,QAAiB,WAAW;AAAA,MAClC,MAAM,QAAQ,MAAM,YAAY,IAAI,OAAO,KAAK;AAAA,MAChD,MAAM,QAAQ,UAAU,aAAa,CAAC,MAAM,WAC1C,MAAM,eAAe,WAAW,OAAO,UAAU,WACjD,MAAM,eAAe,QAAQ,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK,IACpF,MAAM,eAAe,WAAW,OAAO,UAAU,WACjD,MAAM,eAAe,WAAW,MAAM,eAAe,YAAY,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IACnH,MAAM,aAAa,QAAQ,OAAO,UAAU,YAAY,KAAK,MAAM,IAAI,MAAM,QAAQ,GAAG,SAAS,KAAK,MAAM;AAAA,MAE9G,IAAI,CAAC;AAAA,QAAO,MAAM,YAAY,yBAAyB,sCAAsC,MAAM,QAAQ,OAAO,SAAS,EAAE,SAAS,KAAK,OAAO,MAAM,MAAM,OAAO,OAAO,MAAM,CAAC;AAAA,MACnL,SAAS,OAAO;AAAA,IAClB;AAAA,IACA,MAAM,UAAyB,OAAO,OAAO,QAAQ;AAAA,IACrD,MAAM,SAAS,OAAO,OAAO,MAAM;AAAA,IACnC,MAAM,eAA8C,KAAK,OAAO,QAAQ;AAAA,IACxE,WAAW,SAAS,KAAK,QAAQ;AAAA,MAC/B,IAAI,MAAM,WAAW;AAAA,QAAW;AAAA,MAChC,MAAM,OAAO,UAAU,IAAI,MAAM,IAAI;AAAA,MACrC,IAAI,SAAS;AAAA,QAAW;AAAA,MACxB,MAAM,OAAO,KAAK,OAAO,eAAe,EAAE,MAAM,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MACvE,aAAa,MAAM,QAAQ;AAAA,MAC3B,aAAa,MAAM,cAAc;AAAA,MACjC,OAAO,eAAe,QAAQ,MAAM,YAAY,EAAE,OAAO,MAAM,YAAY,MAAM,cAAc,KAAK,CAAC;AAAA,IACvG;AAAA,IACA,WAAW,SAAS,UAAU;AAAA,MAC5B,MAAM,OAAO,UAAU,IAAI,MAAM,IAAI;AAAA,MACrC,MAAM,QAAQ,QAAQ,MAAM,QAAQ;AAAA,MACpC,MAAM,WAAW,eAAe,EAAE,MAAM,OAAO,MAAM,SAAS,iBAAiB,OAAO,CAAC;AAAA,MACvF,MAAM,OAAO,KAAK,OAAO,KAAK,aAAa,oBAAoB,EAAE,MAAM,UAAU,OAAO,MAAM,QAAQ,OAAiB,MAAM,CAAC,EAAE,CAAC;AAAA,MACjI,aAAa,MAAM,QAAQ;AAAA,MAC3B,aAAa,MAAM,cAAc;AAAA,MAGjC,OAAO,eAAe,QAAQ,MAAM,YAAY,EAAE,OAAO,MAAM,YAAY,KAAK,CAAC;AAAA,IACnF;AAAA,IACA,OAAO,eAAe,QAAQ,WAAW,EAAE,OAAO,cAAc,YAAY,KAAK,CAAC;AAAA,IAGlF,iBAAiB,EAAE,QAAQ,QAAQ,MAAM,QAAQ,aAAa,CAAC;AAAA,IAE/D,gBAAgB,EAAE,MAAM,QAAQ,IAAI,OAAO,CAAC;AAAA,IAC5C,OAAO,eAAe,QAAQ,gBAAgB;AAAA,MAC5C,OAAO,CAAC,KAAc,YACpB,OAAO,QAAQ,aACX,OAAO,aAAa,CAAC,OAAQ,IAA+C,gBAAgB,IAAI,OAAO,CAAC,GAAG,OAAgB,IAC3H,OAAO,aAAa,KAAc,OAAgB;AAAA,MACxD,YAAY;AAAA,IACd,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,EAKT,MAAM,kBAAkB,CAAC,IAAmB,YAA0C;AAAA,IACpF,MAAM,QAAQ,GAAG,kBAAkB,YAAY,KAAK,GAAG,cAAc;AAAA,IACrE,MAAM,QAAQ,OAAO,OAAO,EAAE;AAAA,IAC9B,MAAM,eAA8C,KAAK,GAAG,QAAQ;AAAA,IACpE,WAAW,SAAS,KAAK,QAAQ;AAAA,MAC/B,IAAI,MAAM,WAAW;AAAA,QAAW;AAAA,MAChC,MAAM,OAAO,MAAM,QAAQ,MAAM;AAAA,MACjC,IAAI,SAAS;AAAA,QAAW;AAAA,MACxB,MAAM,OAAO,KAAK,OAAO,eAAe,EAAE,MAAM,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MACvE,aAAa,MAAM,QAAQ;AAAA,MAC3B,aAAa,MAAM,cAAc;AAAA,MACjC,OAAO,eAAe,OAAO,MAAM,YAAY,EAAE,OAAO,MAAM,YAAY,MAAM,cAAc,KAAK,CAAC;AAAA,IACtG;AAAA,IACA,WAAW,SAAS,UAAU;AAAA,MAC5B,MAAM,OAAO,MAAM,QAAQ,MAAM;AAAA,MACjC,MAAM,WAAW,eAAe,EAAE,MAAM,OAAO,MAAM,SAAS,iBAAiB,GAAG,CAAC;AAAA,MACnF,MAAM,OAAO,KAAK,OAAO,KAAK,aAAa,oBAAoB,EAAE,MAAM,UAAU,OAAO,MAAM,QAAQ,OAAiB,OAAO,QAAQ,MAAM,QAAQ,SAAyC,CAAC,EAAE,CAAC;AAAA,MACjM,aAAa,MAAM,QAAQ;AAAA,MAC3B,aAAa,MAAM,cAAc;AAAA,MACjC,OAAO,eAAe,OAAO,MAAM,YAAY,EAAE,OAAO,MAAM,YAAY,KAAK,CAAC;AAAA,IAClF;AAAA,IACA,OAAO,eAAe,OAAO,WAAW,EAAE,OAAO,cAAc,YAAY,KAAK,CAAC;AAAA,IACjF,iBAAiB,EAAE,QAAQ,OAAO,MAAM,QAAQ,aAAa,CAAC;AAAA,IAC9D,gBAAgB,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC;AAAA,IAKvC,OAAO,eAAe,OAAO,gBAAgB;AAAA,MAC3C,OAAO,CAAC,KAAc,YACpB,OAAO,QAAQ,aACX,GAAG,aAAa,CAAC,WAAY,IAA+C,gBAAgB,QAAQ,OAAO,CAAC,GAAG,OAAgB,IAC/H,GAAG,aAAa,KAAc,OAAgB;AAAA,MACpD,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,EAGT,OAAO,eAAe,QAAQ,eAAe,EAAE,OAAO,CAAC,YAA2B,YAAY,OAAO,GAAG,YAAY,KAAK,CAAC;AAAA,EAC1H,OAAO,eAAe,QAAQ,iBAAiB;AAAA,IAC7C,OAAO,MAAqB;AAAA,MAC1B,MAAM,SAAS,OAAO,OAAO,MAAM;AAAA,MACnC,MAAM,SAAwC,KAAK,OAAO,QAAQ;AAAA,MAClE,WAAW,SAAS,KAAK,QAAQ;AAAA,QAC/B,MAAM,WAAW,UAAU,IAAI,MAAM,IAAI;AAAA,QACzC,OAAO,MAAM,QAAQ;AAAA,QACrB,OAAO,MAAM,cAAc;AAAA,QAC3B,OAAO,eAAe,QAAQ,MAAM,YAAY,EAAE,OAAO,UAAU,YAAY,KAAK,CAAC;AAAA,MACvF;AAAA,MACA,OAAO,eAAe,QAAQ,WAAW,EAAE,OAAO,QAAQ,YAAY,KAAK,CAAC;AAAA,MAC5E,iBAAiB,EAAE,QAAQ,QAAQ,MAAM,OAAO,CAAC;AAAA,MAGjD,gBAAgB,EAAE,MAAM,QAAQ,IAAI,OAAO,CAAC;AAAA,MAC5C,OAAO;AAAA;AAAA,IAET,YAAY;AAAA,EACd,CAAC;AAAA;;AG73BH,wCAA2B;AAmD3B,SAAS,OAAO,CAAC,QAKI;AAAA,EACnB,OAAO,IAAI,iBAAiB,MAAM;AAAA;AAGpC,SAAS,cAAa,CAAC,OAAkD;AAAA,EACvE,OACE,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,EAAE,iBAAiB,SACnB,EAAE,iBAAiB;AAAA;AAIvB,IAAM,yBAA4C,CAAC,UAAU,OAAO,QAAQ;AAG5E,IAAM,gBAAgB,IAAI;AAE1B,SAAS,YAAY,CAAC,QAA6E;AAAA,EACjG,MAAM,MAAM,OAAO,MAAM;AAAA,EACzB,IAAI,QAAQ;AAAA,IAAW,OAAO;AAAA,EAC9B,IAAI,QAAQ,YAAY,QAAQ;AAAA,IAAU,OAAO;AAAA,EACjD,MAAM,QAAQ;AAAA,IACZ,OAAO,OAAO;AAAA,IACd,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,mBAAmB,OAAO,kDAAkD,OAAO,GAAG;AAAA,EACjG,CAAC;AAAA;AASI,SAAS,mBAAmB,CAAC,QAGX;AAAA,EACvB,QAAQ,MAAM,WAAW;AAAA,EACzB,MAAM,QAAQ,cAAc,IAAI,MAAM,KAAK,IAAI;AAAA,EAC/C,MAAM,SAAS,MAAM,IAAI,IAAI;AAAA,EAC7B,IAAI,WAAW;AAAA,IAAW,OAAO;AAAA,EAGjC,WAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AAAA,IACrC,IAAI,CAAC,KAAK,YAAY,IAAI,GAAG,GAAG;AAAA,MAC9B,MAAM,QAAQ;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,4CAA4C;AAAA,MACvD,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,UAAoB,CAAC;AAAA,EAC3B,WAAW,SAAS,KAAK,QAAQ;AAAA,IAC/B,MAAM,QAAQ,OAAO,MAAM,SAAS,OAAO,MAAM;AAAA,IACjD,IAAI,UAAU,WAAW;AAAA,MACvB,QAAQ,KAAK,MAAM,IAAI;AAAA,MACvB;AAAA,IACF;AAAA,IACA,IAAI,UAAU,QAAQ;AAAA,MACpB,SAAS,IAAI,MAAM,MAAM,EAAE,MAAM,OAAO,CAAC;AAAA,MACzC;AAAA,IACF;AAAA,IACA,IAAI,CAAC,eAAc,KAAK,GAAG;AAAA,MACzB,MAAM,QAAQ;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,mBAAmB,MAAM;AAAA,MACpC,CAAC;AAAA,IACH;AAAA,IACA,MAAM,OAAO,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,QAAQ,MAAM,SAA+B,SAAS;AAAA,IAC9F,MAAM,SAAS,KAAK,OAAO,CAAC,QAAQ,QAAQ,YAAY,QAAQ,aAAa,QAAQ,QAAQ;AAAA,IAC7F,IAAI,OAAO,SAAS,KAAM,YAAY,UAAY,aAAa,OAAQ;AAAA,MACrE,MAAM,QAAQ;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,mBAAmB,MAAM,uEAChC,OAAO,SAAS,IAAI,0BAAqB,OAAO,WAAW,IAAI,MAAM,UAAU,OAAO,KAAK,IAAI,MAAM;AAAA,MAEzG,CAAC;AAAA,IACH;AAAA,IACA,MAAM,SAAS,aAAa,EAAE,OAAO,OAAO,MAAM,KAAK,CAAC;AAAA,IACxD,IAAI,YAAY,OAAO;AAAA,MACrB,MAAM,QAAQ,MAAM,YAAY,IAAI,OAAO,MAAM,MAAM,CAAC;AAAA,MACxD,IAAI,UAAU,WAAW;AAAA,QACvB,MAAM,QAAQ;AAAA,UACZ,OAAO,MAAM;AAAA,UACb,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,mBAAmB,MAAM,oCAAoC,OAAO,MAAM,MAAM;AAAA,QAC3F,CAAC;AAAA,MACH;AAAA,MACA,IAAI,MAAM,UAAU,MAAM,eAAe,QAAQ,CAAC,uBAAuB,SAAS,MAAM,UAAU,GAAG;AAAA,QACnG,MAAM,QAAQ;AAAA,UACZ,OAAO,MAAM;AAAA,UACb,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,mBAAmB,MAAM,gBAAgB,MAAM;AAAA,QAC1D,CAAC;AAAA,MACH;AAAA,MACA,SAAS,IAAI,MAAM,MAAM,EAAE,MAAM,UAAU,OAAO,OAAO,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,MAAM,WAAW,MAAM,eAAe,IAAI,OAAO,MAAM,OAAO,CAAC;AAAA,IAC/D,IAAI,aAAa,aAAa,SAAS,QAAQ;AAAA,MAC7C,MAAM,QAAQ;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,mBAAmB,MAAM,oDAA+C,OAAO,MAAM,OAAO,MACnG,aAAa,YAAY,mBAAmB;AAAA,MAEhD,CAAC;AAAA,IACH;AAAA,IAEA,oBAAoB,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,IAC7C,SAAS,IAAI,MAAM,MAAM,EAAE,MAAM,WAAW,UAAU,aAAa,SAAS,aAAa,OAAO,CAAC;AAAA,EACnG;AAAA,EAEA,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,MAAM,QAAQ;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,qEAAgE,QAAQ,KAAK,IAAI;AAAA,IAC5F,CAAC;AAAA,EACH;AAAA,EAGA,YAAY,MAAM,UAAU,UAAU;AAAA,IACpC,IAAI,MAAM,SAAS;AAAA,MAAW;AAAA,IAC9B,MAAM,OAAO,IAAI,IAAY,CAAC,IAAI,CAAC;AAAA,IACnC,IAAI,UAAyB;AAAA,IAC7B,OAAO,QAAQ,SAAS,WAAW;AAAA,MACjC,MAAM,WAAmB,QAAQ;AAAA,MACjC,IAAI,KAAK,IAAI,QAAQ,GAAG;AAAA,QACtB,MAAM,QAAQ;AAAA,UACZ,OAAO;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,mBAAmB,8BAA8B,CAAC,GAAG,MAAM,QAAQ,EAAE,KAAK,UAAK;AAAA,QAC1F,CAAC;AAAA,MACH;AAAA,MACA,KAAK,IAAI,QAAQ;AAAA,MACjB,MAAM,OAAO,SAAS,IAAI,QAAQ;AAAA,MAClC,IAAI,SAAS,aAAa,KAAK,SAAS,QAAQ;AAAA,QAC9C,MAAM,QAAQ;AAAA,UACZ,OAAO;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,mBAAmB,6DAAwD,gBAClF,SAAS,YAAY,iBAAiB;AAAA,QAE1C,CAAC;AAAA,MACH;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,MAAM,QAAQ;AAAA,EACxB,cAAc,IAAI,QAAQ,KAAK;AAAA,EAC/B,OAAO;AAAA;AAIT,SAAS,eAAe,CAAC,QAIhB;AAAA,EACP,QAAQ,UAAU,UAAU;AAAA,EAC5B,YAAY,MAAM,UAAU,UAAU;AAAA,IACpC,IAAI,MAAM,SAAS;AAAA,MAAU;AAAA,IAC7B,MAAM,SAAS,MAAM,MAAM;AAAA,IAC3B,MAAM,KACJ,WAAW,WACP,OAAO,UAAU,WACjB,WAAW,QACT,OAAO,UAAU,WACjB,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,IACtD,IAAI,CAAC,IAAI;AAAA,MACP,MAAM,QAAQ;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,yBAAyB,OAAO,yBAAyB,QAAQ,MAAM,MAAM,SAAS;AAAA,MACjG,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAcF,SAAS,UAAU,CAAC,QAIsB;AAAA,EACxC,QAAQ,UAAU,UAAU;AAAA,EAC5B,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,SAAS,CAAC,SAAmC;AAAA,IACjD,MAAM,QAAQ,MAAM,IAAI,IAAI;AAAA,IAC5B,IAAI,UAAU;AAAA,MAAW,OAAO;AAAA,IAChC,MAAM,QAAQ,SAAS,IAAI,IAAI;AAAA,IAC/B,MAAM,QACJ,MAAM,SAAS,SACX,OACA,MAAM,SAAS,WACb,GAAG,MAAM,MAAM,OAAO,MAAM,IAC5B,GAAG,MAAM,SAAS,OAAO,OAAO,MAAM,WAAW,EAAe;AAAA,IACxE,MAAM,IAAI,MAAM,KAAK;AAAA,IACrB,OAAO;AAAA;AAAA,EAET,WAAW,QAAQ,SAAS,KAAK;AAAA,IAAG,OAAO,IAAI;AAAA,EAC/C,OAAO;AAAA;AAGT,SAAS,OAAO,CAAC,KAAmB,OAAiC;AAAA,EACnE,OAAO,IAAI,SAAS,IAAI,MAAM,IAAI;AAAA;AAIpC,SAAS,WAAW,CAAC,QAA0E;AAAA,EAC7F,QAAQ,KAAK,OAAO,SAAS;AAAA,EAC7B,IAAI,IAAI,UAAU,MAAM;AAAA,IACtB,MAAM,QAAQ;AAAA,MACZ,OAAO,MAAM;AAAA,MACb;AAAA,MACA,QAAQ;AAAA,MACR,SAAS,6DAAwD,MAAM;AAAA,IACzE,CAAC;AAAA,EACH;AAAA,EACA,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI;AAAA;AAIjC,SAAS,WAAU,CAAC,QAAwD;AAAA,EAC1E,QAAQ,OAAO,SAAS;AAAA,EACxB,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,OAAO,EAAE,KAAK,CAAC,OAAoB,IAAI,EAAE;AAAA;AAQ3C,SAAS,iBAAiB,CAAC,QAAwD;AAAA,EACjF,QAAQ,OAAO,SAAS;AAAA,EACxB,IAAI,CAAC,eAAc,KAAK;AAAA,IAAG,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;AAAA,EAChD,MAAM,WAAW,MAAM,QAAQ,YAAY,CAAC,IAAI,MAAM,QAAQ,MAAM,GAAG,IAAI,MAAM,MAAM,CAAC,MAAM,GAAG;AAAA,EACjG,OAAO,KAAK,OAAO,KAAK,CAAC,GAAG,UAAU,IAAI,EAAE;AAAA;AAI9C,SAAS,kBAAkB,CAAC,QAA2D;AAAA,EACrF,QAAQ,OAAO,UAAU;AAAA,EACzB,IAAI,MAAM,gBAAgB,SAAS;AAAA,IAAG,OAAO;AAAA,EAC7C,MAAM,MAAiB,CAAC;AAAA,EACxB,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,eAAc,KAAK,KAAK,MAAM,gBAAgB,IAAI,GAAG;AAAA,MAAG,OAAO,OAAO,KAAK,KAAK;AAAA,IAC/E;AAAA,UAAI,OAAO;AAAA,EAClB;AAAA,EACA,OAAO;AAAA;AAUT,SAAS,gBAAgB,CAAC,QAAgF;AAAA,EACxG,QAAQ,KAAK,OAAO,aAAa;AAAA,EACjC,MAAM,cAAc,IAAI,SAAS,IAAI,SAAS,WAAW;AAAA,EACzD,IAAI,gBAAgB,aAAa,YAAY,SAAS;AAAA,IAAW,OAAO;AAAA,EACxE,MAAM,UAAU,YAAY;AAAA,EAC5B,OACE,QAAQ,gBAAgB,MAAM,SAC7B,QAAQ,gBAAgB,WAAW,SAAS,gBAAgB,SAC7D,EAAE,SAAS,UAAU,SAAS,eAAe,QAAQ,SAAS,SAAS;AAAA;AAiB3E,SAAS,SAAS,CAAC,QAKL;AAAA,EACZ,QAAQ,KAAK,OAAO,OAAO,SAAS;AAAA,EACpC,MAAM,MAAiB,CAAC;AAAA,EACxB,MAAM,QAAqB,CAAC;AAAA,EAE5B,MAAM,YAAY,CAAC,OAAgB,QAAyB;AAAA,IAC1D,MAAM,WAAW,CAAC,SAChB,eAAc,IAAI,IAAI,UAAU,EAAE,KAAK,OAAO,OAAO,MAAM,MAAM,GAAG,QAAQ,MAAM,CAAC,IAAI;AAAA,IACzF,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,QAAQ,IAAI,SAAS,KAAK;AAAA;AAAA,EAGpE,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,IAAI,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,OAAO;AAAA,MAClD,IAAI,OAAO,UAAU,OAAO,GAAG;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,IAC7C,IAAI,aAAa,WAAW;AAAA,MAC1B,IAAI,OAAO;AAAA,MACX;AAAA,IACF;AAAA,IACA,MAAM,SAAS,IAAI,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,IAC5D,MAAM,cAAc,QAAQ,KAAK,MAAM;AAAA,IACvC,MAAM,SAAS,YAAY,SAAS;AAAA,IACpC,MAAM,YAAY,GAAG,QAAQ;AAAA,IAC7B,MAAM,OAAO,MAAiB,YAAY,EAAE,KAAK,OAAO,QAAQ,MAAM,UAAU,CAAC;AAAA,IACjF,MAAM,YAAY,CAAC,OAAgB,OACjC,eAAc,KAAK,IAAI,UAAU,EAAE,KAAK,OAAO,QAAQ,OAAO,OAAO,MAAM,GAAG,aAAa,KAAK,CAAC,IAAI;AAAA,IAGvG,MAAM,QAAqB,CAAC;AAAA,IAE5B,IAAI,SAAS,QAAQ;AAAA,MACnB,IAAI,CAAC,eAAc,KAAK,GAAG;AAAA,QACzB,IAAI,OAAO;AAAA,QACX;AAAA,MACF;AAAA,MACA,YAAY,IAAI,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,QACjD,IAAI,YAAY;AAAA,UAAW;AAAA,QAC3B,IAAI,OAAO,UAAU,OAAO,QAAQ;AAAA,UAClC,MAAM,SAAS,UAAU,SAAS,EAAE;AAAA,UACpC,MAAM,KAAK,GAAG,KAAK,SAAS,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC;AAAA,QAClE,EAAO,SAAI,OAAO,SAAS;AAAA,UACzB,MAAM,SAAS,UAAU,SAAS,EAAE;AAAA,UACpC,MAAM,KAAK,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,OAAO,CAAC;AAAA,QACxF,EAAO;AAAA,UACL,MAAM,KAAK,GAAG,KAAK,QAAQ,CAAC;AAAA;AAAA,MAEhC;AAAA,IACF,EAAO;AAAA,MACL,MAAM,OAAyD,CAAC;AAAA,MAChE,IAAI,UAAU,MAAM;AAAA,QAClB,KAAK,KAAK,EAAE,KAAK,MAAM,SAAS,KAAK,CAAC;AAAA,MACxC,EAAO,SAAI,eAAc,KAAK,OAAM,QAAQ,WAAS,WAAW,SAAQ;AAAA,QACtE,IAAI,QAAQ;AAAA,QACZ,YAAY,IAAI,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,UACjD,IAAI,YAAY;AAAA,YAAW;AAAA,UAC3B,IAAI,OAAO,QAAQ,OAAO;AAAA,YAAS,KAAK,KAAK,EAAE,KAAK,IAAI,QAAQ,CAAC;AAAA,UAC5D;AAAA,oBAAQ;AAAA,QACf;AAAA,QACA,IAAI,OAAO;AAAA,UACT,IAAI,OAAO;AAAA,UACX;AAAA,QACF;AAAA,MACF,EAAO,SAAI,eAAc,KAAK,GAAG;AAAA,QAC/B,KAAK,KAAK,EAAE,KAAK,MAAM,SAAS,MAAM,CAAC;AAAA,MACzC,EAAO;AAAA,QACL,IAAI,OAAO;AAAA,QACX;AAAA;AAAA,MAEF,aAAa,KAAK,aAAa,MAAM;AAAA,QACnC,IAAI,YAAY,MAAM;AAAA,UAEpB,MAAM,KAAK,SAAU,QAAQ,OAAO,EAAE,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,IAAK,GAAG,MAAM,KAAK,CAAC;AAAA,QAC3F,EAAO;AAAA,UACL,MAAM,SAAS,UAAU,SAAS,GAAG;AAAA,UACrC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC;AAAA;AAAA,MAErE;AAAA;AAAA,IAGF,IAAI,MAAM,WAAW,GAAG;AAAA,MACtB,IAAI,OAAO;AAAA,MACX;AAAA,IACF;AAAA,IACA,MAAM,WAAsB,CAAC;AAAA,IAC7B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,QAAQ,OAAO,KAAK,IAAI,EAAE;AAAA,MAChC,IAAI,SAAS;AAAA,QAAU,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;AAAA,MAC5C;AAAA,iBAAS,SAAS,KAAK;AAAA,IAC9B;AAAA,IACA,IAAI,OAAO;AAAA,EACb;AAAA,EAEA,IAAI,MAAM,SAAS,GAAG;AAAA,IACpB,MAAM,WAAW,IAAI,QAAQ,YAAY,CAAC,IAAI,MAAM,QAAQ,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG;AAAA,IACzF,IAAI,MAAM,CAAC,GAAG,UAAU,GAAG,KAAK;AAAA,EAClC;AAAA,EACA,OAAO;AAAA;AAWT,SAAS,aAAa,CAAC,QAKd;AAAA,EACP,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EACnC,MAAM,QAAQ,QAAQ,KAAK,KAAK;AAAA,EAChC,YAAY,KAAK,SAAS,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC9C,IAAI,SAAS;AAAA,MAAW;AAAA,IACxB,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,IAC7C,IAAI,aAAa;AAAA,MAAW;AAAA,IAC5B,MAAM,SAAS,IAAI,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,IAC5D,MAAM,cAAc,QAAQ,KAAK,MAAM;AAAA,IACvC,MAAM,cAAc,MAAM,SAAS,aAAa,MAAM,SAAS,SAAS;AAAA,IACxE,IAAI,YAAY,SAAS,UAAU,CAAC,aAAa;AAAA,MAC/C,MAAM,QAAQ;AAAA,QACZ,OAAO,OAAO;AAAA,QACd,MAAM,GAAG,QAAQ;AAAA,QACjB,QAAQ;AAAA,QACR,SAAS,4BAA4B,MAAM,QAAQ,4BAA4B,OAAO;AAAA,MACxF,CAAC;AAAA,IACH;AAAA,IACA,IAAI,eAAc,IAAI,GAAG;AAAA,MACvB,cAAc,EAAE,KAAK,OAAO,QAAQ,MAAM,MAAM,MAAM,GAAG,QAAQ,MAAM,CAAC;AAAA,IAC1E;AAAA,EACF;AAAA;AAGF,SAAS,WAAW,CAAC,QAAuF;AAAA,EAC1G,QAAQ,KAAK,OAAO,SAAS,SAAS;AAAA,EACtC,MAAM,QAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAAA,EACzD,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,eAAc,IAAI;AAAA,MAAG,cAAc,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,EACnE;AAAA;AAKF,SAAS,aAAa,CAAC,QAKX;AAAA,EACV,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EACnC,MAAM,QAAQ,CAAC,aAA+B;AAAA,IAC5C,MAAM,SAAS,IAAI,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,IAC5D,MAAM,cAAc,QAAQ,KAAK,MAAM;AAAA,IACvC,IAAI,YAAY,SAAS;AAAA,MAAQ;AAAA,IACjC,IAAI,iBAAiB,EAAE,KAAK,OAAO,SAAS,CAAC;AAAA,MAAG;AAAA,IAChD,MAAM,QAAQ;AAAA,MACZ,OAAO,OAAO;AAAA,MACd,MAAM,GAAG,QAAQ,SAAS;AAAA,MAC1B,QAAQ;AAAA,MACR,SAAS,sBAAsB,MAAM,QAAQ,SAAS,oBAAoB,OAAO;AAAA,IACnF,CAAC;AAAA;AAAA,EAEH,IAAI,SAAS,MAAM;AAAA,IACjB,WAAW,YAAY,MAAM,WAAW;AAAA,MACtC,IAAI,SAAS;AAAA,QAAQ,MAAM,QAAQ;AAAA,IACrC;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,CAAC,eAAc,IAAI,KAAK,CAAC,eAAc,KAAK,MAAM;AAAA,IAAG,OAAO;AAAA,EAChE,MAAM,SAAS,KAAK,KAAK,OAAO;AAAA,EAChC,YAAY,MAAM,SAAS,OAAO,QAAQ,MAAM,GAAG;AAAA,IACjD,IAAI,SAAS,aAAa,SAAS;AAAA,MAAO;AAAA,IAC1C,MAAM,WAAW,MAAM,eAAe,IAAI,IAAI;AAAA,IAC9C,IAAI,aAAa;AAAA,MAAW;AAAA,IAC5B,MAAM,QAAQ;AAAA,IACd,IAAI,eAAc,IAAI,KAAK,eAAc,KAAK,KAAK,GAAG;AAAA,MACpD,MAAM,SAAS,IAAI,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,MAC5D,OAAO,QAAQ,KAAK,MAAM,OAAO,UAAU,EAAE,KAAK,OAAO,QAAQ,OAAO,KAAK,OAAO,MAAM,GAAG,QAAQ,aAAa,CAAC,EAAE;AAAA,IACvH;AAAA,EACF;AAAA,EACA,OAAO,KAAK,MAAM,OAAO;AAAA;AAO3B,SAAS,aAAa,CAAC,QAKd;AAAA,EACP,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EACnC,WAAW,YAAY,CAAC,WAAW,QAAQ,GAAY;AAAA,IACrD,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,CAAC,eAAc,KAAK;AAAA,MAAG;AAAA,IAC3B,MAAM,OAAkB,KAAK,MAAM;AAAA,IACnC,YAAY,MAAM,SAAS,OAAO,QAAQ,KAAK,GAAG;AAAA,MAChD,IAAI,SAAS,aAAa,SAAS;AAAA,QAAO;AAAA,MAC1C,MAAM,YAAY,GAAG,QAAQ;AAAA,MAC7B,IAAI,SAAS,UAAU;AAAA,QACrB,KAAK,QAAQ,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,GAAG,mBAAmB,CAAC;AAAA,QAC5E;AAAA,MACF;AAAA,MACA,MAAM,WAAW,MAAM,eAAe,IAAI,IAAI;AAAA,MAC9C,IAAI,aAAa;AAAA,QAAW;AAAA,MAC5B,MAAM,SAAS,IAAI,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,MAC5D,MAAM,cAAc,QAAQ,KAAK,MAAM;AAAA,MACvC,MAAM,SAAS,YAAY,SAAS;AAAA,MACpC,MAAM,YAAY,GAAG,aAAa;AAAA,MAClC,IAAI,SAAS,QAAQ,CAAC;AAAA,QAAQ;AAAA,MAC9B,MAAM,QAAmB,SAAS,OAAO,CAAC,IAAI,eAAc,IAAI,IAAI,KAAK,KAAK,IAAK;AAAA,MACnF,IAAI,CAAC,eAAc,KAAK;AAAA,QAAG;AAAA,MAC3B,MAAM,cAAc,eAAc,MAAM,KAAK,IACzC,UAAU,EAAE,KAAK,OAAO,QAAQ,OAAO,MAAM,OAAO,MAAM,GAAG,kBAAkB,CAAC,IAChF,MAAM;AAAA,MACV,IAAI,QAAQ;AAAA,QACV,MAAM,QAAQ,YAAW,EAAE,OAAO,aAAa,MAAM,YAAY,EAAE,KAAK,OAAO,QAAQ,MAAM,UAAU,CAAC,EAAE,CAAC;AAAA,MAC7G,EAAO,SAAI,gBAAgB,WAAW;AAAA,QACpC,MAAM,QAAQ;AAAA,MAChB;AAAA,MACA,IAAI,MAAM,YAAY,WAAW;AAAA,QAC/B,YAAY,EAAE,KAAK,OAAO,QAAQ,SAAS,MAAM,SAAS,MAAM,GAAG,oBAAoB,CAAC;AAAA,MAC1F;AAAA,MACA,cAAc,EAAE,KAAK,OAAO,QAAQ,MAAM,OAAO,MAAM,UAAU,CAAC;AAAA,MAClE,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,KAAK,YAAY;AAAA,EACnB;AAAA;AAKF,IAAM,mBAAqC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,aAAa,CAAC,OAAwC;AAAA,EAC7D,OAAO,MAAM,SAAS,SAAS,WAAW,MAAM;AAAA;AAIlD,SAAS,iBAAiB,CAAC,QAA2F;AAAA,EACpH,QAAQ,KAAK,OAAO,SAAS;AAAA,EAC7B,IAAI,MAAM,OAAO;AAAA,EACjB,MAAM,UAAU,CAAC,MAAiB,QAAmB,UAA6B;AAAA,IAChF,YAAY,EAAE,KAAK,OAAO,QAAQ,KAAK,CAAC;AAAA,IACxC,OAAO,kBAAkB,EAAE,MAAM,OAAO,OAAO,IAAI,OAAO,OAAO,QAAQ;AAAA,MACvE,OAAO,OAAO;AAAA,MAAM;AAAA,MAAM,QAAQ;AAAA,MAClC,SAAS,8CAA8C,OAAO,QAAQ;AAAA,IACxE,CAAC,EAAE,CAAC;AAAA;AAAA,EAEN,MAAM,QAAQ,QAAQ,KAAK,KAAK;AAAA,EAChC,IAAI,MAAM,SAAS,YAAY,MAAM,UAAU,KAAK,CAAC,aAAa,SAAS,QAAQ,SAAS,MAAM,MAAM,IAAI,KAAK,IAAI,SAAS,UAAU,SAAS,GAAG;AAAA,IAClJ,MAAM,QAAQ,KAAK,OAAO,MAAM,MAAM,IAAI;AAAA,EAC5C;AAAA,EACA,YAAY,MAAM,UAAU,OAAO,QAAQ,GAAG,GAAG;AAAA,IAC/C,MAAM,WAAW,MAAM,eAAe,IAAI,IAAI;AAAA,IAC9C,IAAI,aAAa,aAAa,CAAC,eAAc,KAAK;AAAA,MAAG;AAAA,IACrD,MAAM,SAAS,IAAI,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,IAC5D,MAAM,cAAc,QAAQ,KAAK,MAAM;AAAA,IACvC,IAAI,YAAY,SAAS;AAAA,MAAU;AAAA,IACnC,MAAM,OAAO,oBAAoB,EAAE,MAAM,IAAI,MAAM,OAAO,SAAS,CAAC;AAAA,IACpE,KACG,KAAK,SAAS,cAAc,KAAK,SAAS,mBAC3C,KAAK,UAAU,KAAK,CAAC,WAAW,OAAO,SAAS,YAAY,MAAM,IAAI,GACtE;AAAA,MACA,IAAI,QAAQ,QAAQ,OAAO,QAAQ,YAAY,MAAM,IAAI;AAAA,IAC3D;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIT,SAAS,QAAQ,CAAC,OAAgB,IAAyC;AAAA,EACzE,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,EAAE,IAAI,GAAG,KAAK;AAAA;AAaxD,SAAS,cAAc,CAAC,QAMZ;AAAA,EACV,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EACnC,IAAI,CAAC,eAAc,IAAI;AAAA,IAAG,OAAO;AAAA,EACjC,MAAM,QAAQ,QAAQ,KAAK,KAAK;AAAA,EAChC,MAAM,MAAiB,KAAK,KAAK;AAAA,EAEjC,IAAI,MAAM,SAAS,UAAU;AAAA,IAC3B,YAAY,EAAE,KAAK,OAAO,KAAK,CAAC;AAAA,IAChC,MAAM,QAAQ,IAAI,MAAM,MAAM;AAAA,IAC9B,IAAI,UAAU,aAAa,UAAU,IAAI,OAAO;AAAA,MAC9C,MAAM,QAAQ;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,MAAM,GAAG,QAAQ,MAAM,MAAM;AAAA,QAC7B,QAAQ;AAAA,QACR,SAAS,sBAAsB,MAAM,aAAa,MAAM,MAAM,WAAW,UAAU,OAAO,SAAS;AAAA,MACrG,CAAC;AAAA,IACH;AAAA,IACA,IAAI,MAAM,MAAM,QAAQ,IAAI;AAAA,EAC9B;AAAA,EAEA,IAAI,MAAM,SAAS,aAAa,OAAO,mBAAmB,MAAM;AAAA,IAC9D,YAAY,EAAE,KAAK,OAAO,KAAK,CAAC;AAAA,IAChC,MAAM,OAAO,oBAAoB,EAAE,MAAM,IAAI,MAAM,OAAO,UAAU,MAAM,SAAS,CAAC;AAAA,IAGpF,MAAM,YAAY,KAAK,WAAW,KAAK,CAAC,WAAW,IAAI,OAAO,UAAU,SAAS;AAAA,IACjF,IAAI,KAAK,SAAS,gBAAgB,cAAc,WAAW;AAAA,MACzD,MAAM,QAAQ;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,MAAM,GAAG,QAAQ,UAAU;AAAA,QAC3B,QAAQ;AAAA,QACR,SAAS,oBAAoB,MAAM,QAAQ,UAAU,6DAAwD,MAAM,SAAS;AAAA,MAC9H,CAAC;AAAA,IACH;AAAA,IACA,IAAI,IAAI,MAAM,SAAS,UAAU,WAAW;AAAA,MAC1C,MAAM,QAAQ;AAAA,QACZ,OAAO,MAAM;AAAA,QACb;AAAA,QACA,QAAQ;AAAA,QACR,SAAS,sBAAsB,MAAM,oDAA+C,MAAM,SAAS;AAAA,MACrG,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,YAAY,KAAK,UAAU,OAAO,QAAQ,GAAG,GAAG;AAAA,IAC9C,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,IAC7C,IAAI,aAAa,aAAa,CAAC,eAAc,KAAK;AAAA,MAAG;AAAA,IACrD,IAAI,OAAO,gBAAgB,EAAE,KAAK,OAAO,UAAU,OAAO,OAAO,MAAM,GAAG,QAAQ,OAAO,OAAO,SAAS,CAAC;AAAA,EAC5G;AAAA,EACA,OAAO,kBAAkB,EAAE,KAAK,OAAO,MAAM,KAAK,KAAK,CAAC;AAAA;AAI1D,SAAS,cAAc,CAAC,QAKZ;AAAA,EACV,QAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,EACnC,IAAI,CAAC,eAAc,IAAI;AAAA,IAAG,OAAO;AAAA,EACjC,MAAM,QAAQ,QAAQ,KAAK,KAAK;AAAA,EAChC,MAAM,MAAiB,KAAK,KAAK;AAAA,EAEjC,IAAI,MAAM,SAAS,UAAU;AAAA,IAC3B,MAAM,QAAQ,IAAI,MAAM,MAAM;AAAA,IAC9B,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,WAAW,eAAc,KAAK,KAAK,OAAO,KAAK,KAAK,EAAE,WAAW,IAAI,MAAM,MAAM;AAAA,MACvF,IAAI,aAAa,IAAI,OAAO;AAAA,QAC1B,MAAM,QAAQ;AAAA,UACZ,OAAO,MAAM;AAAA,UACb,MAAM,GAAG,QAAQ,MAAM,MAAM;AAAA,UAC7B,QAAQ;AAAA,UACR,SAAS,sBAAsB,MAAM,eAAe,MAAM,MAAM;AAAA,QAClE,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,WAAW;AAAA,IAC5B,MAAM,OAAO,oBAAoB,EAAE,MAAM,IAAI,MAAM,OAAO,UAAU,MAAM,SAAS,CAAC;AAAA,IAGpF,MAAM,YAAY,KAAK,WAAW,KAAK,CAAC,WAAW,IAAI,OAAO,UAAU,SAAS;AAAA,IACjF,IAAI,KAAK,SAAS,gBAAgB,cAAc,WAAW;AAAA,MACzD,MAAM,QAAQ;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,MAAM,GAAG,QAAQ,UAAU;AAAA,QAC3B,QAAQ;AAAA,QACR,SAAS,oBAAoB,MAAM,QAAQ,UAAU,6DAAwD,MAAM,SAAS;AAAA,MAC9H,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,YAAY,KAAK,UAAU,OAAO,QAAQ,GAAG,GAAG;AAAA,IAC9C,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,IAC7C,IAAI,aAAa,aAAa,CAAC,eAAc,KAAK;AAAA,MAAG;AAAA,IACrD,IAAI,OAAO,gBAAgB,EAAE,KAAK,OAAO,UAAU,OAAO,OAAO,MAAM,GAAG,QAAQ,OAAO,OAAO,SAAS,CAAC;AAAA,EAC5G;AAAA,EACA,OAAO,kBAAkB,EAAE,KAAK,OAAO,MAAM,KAAK,KAAK,CAAC;AAAA;AAmB1D,SAAS,eAAe,CAAC,QAOX;AAAA,EACZ,QAAQ,KAAK,OAAO,UAAU,OAAO,MAAM,UAAU;AAAA,EACrD,MAAM,SAAS,IAAI,KAAK,YAAY,IAAI,SAAS,WAAW;AAAA,EAC5D,MAAM,cAAc,QAAQ,KAAK,MAAM;AAAA,EACvC,MAAM,SAAS,YAAY,SAAS;AAAA,EACpC,MAAM,aAAa,QAAQ,KAAK,KAAK;AAAA,EAErC,MAAM,aAAa,UAAU,iBAAiB,EAAE,KAAK,OAAO,SAAS,CAAC;AAAA,EAEtE,MAAM,cAAc,WAAW,SAAS,aAAa,WAAW,SAAS,SAAS,SAAS;AAAA,EAC3F,MAAM,eAAe,cAAc;AAAA,EACnC,MAAM,OAAO,cAAc,WAAW;AAAA,EACtC,MAAM,MAAiB,KAAK,MAAM;AAAA,EAElC,MAAM,OAAO,CAAC,aAAgC,YAAY,EAAE,KAAK,OAAO,QAAQ,MAAM,SAAS,CAAC;AAAA,EAChG,MAAM,SAAS,CAAC,MAAc,QAAuB;AAAA,IACnD,MAAM,QAAQ;AAAA,MACZ,OAAO,OAAO;AAAA,MACd,MAAM,GAAG,QAAQ;AAAA,MACjB,QAAQ;AAAA,MACR,SAAS,oBAAoB,YAAY,MAAM,QAAQ,SAAS,SAAS,OAAO,SAAS;AAAA,IAC3F,CAAC;AAAA;AAAA,EAGH,MAAM,kBAAkB,CAAC,OAAgB,aACvC,eAAc,KAAK,IAAI,UAAU,EAAE,KAAK,OAAO,QAAQ,OAAO,MAAM,SAAS,CAAC,IAAI;AAAA,EAEpF,MAAM,cAAc,CAAC,OAAgB,aAA8B;AAAA,IACjE,MAAM,SAAS,gBAAgB,OAAO,QAAQ;AAAA,IAC9C,OAAO,SAAS,kBAAkB,EAAE,OAAO,QAAQ,MAAM,KAAK,QAAQ,EAAE,CAAC,IAAI;AAAA;AAAA,EAG/E,MAAM,cAAc,CAAC,OAAgB,aAA8B;AAAA,IACjE,MAAM,SAAS,gBAAgB,OAAO,QAAQ;AAAA,IAC9C,OAAO,SAAS,YAAW,EAAE,OAAO,UAAU,CAAC,GAAG,MAAM,KAAK,QAAQ,EAAE,CAAC,IAAI;AAAA;AAAA,EAE9E,MAAM,kBAAkB,CAAC,MAAe,aACtC,eAAe,EAAE,KAAK,OAAO,QAAQ,MAAM,MAAM,MAAM,UAAU,gBAAgB,WAAW,CAAC;AAAA,EAC/F,MAAM,kBAAkB,CAAC,MAAe,aACtC,eAAe,EAAE,KAAK,OAAO,QAAQ,MAAM,MAAM,MAAM,SAAS,CAAC;AAAA,EACnE,MAAM,OAAO,MACX,oBAAoB,EAAE,MAAM,IAAI,MAAM,OAAO,SAAS,CAAC;AAAA,EAEzD,YAAY,MAAM,YAAY,OAAO,QAAQ,KAAK,GAAG;AAAA,IACnD,IAAI,YAAY;AAAA,MAAW;AAAA,IAC3B,MAAM,WAAW,GAAG,QAAQ;AAAA,IAE5B,IAAI,SAAS,UAAU;AAAA,MACrB,IAAI,QAAQ,SAAS,SAAS,CAAC,SAAS,gBAAgB,MAAM,QAAQ,CAAC;AAAA,MACvE;AAAA,IACF;AAAA,IAEA,IAAI,UAAU,SAAS,YAAY,iBAAgB,SAAS,IAAI,GAAG;AAAA,MACjE,OAAO,MAAM,sBAAiB,OAAO,qFAAqF;AAAA,IAC5H;AAAA,IAEA,QAAQ;AAAA,WACD;AAAA,QACH,IAAI,QAAQ,SAAS,SAAS,CAAC,SAC7B,eAAc,IAAI,IAAI,YAAY,MAAM,QAAQ,IAAI,IACtD;AAAA,QACA;AAAA,WACG;AAAA,QACH,IAAI,QAAQ,SAAS,SAAS,CAAC,SAC7B,eAAc,IAAI,IACd,KAAK,MAAM,OAAO,YAAY,KAAK,OAAO,QAAQ,GAAG,QAAQ,gBAAgB,KAAK,QAAQ,QAAQ,EAAE,IACpG,IACN;AAAA,QACA;AAAA,WACG,OAAO;AAAA,QACV,IAAI,UAAU;AAAA,UAAU;AAAA,QACxB,IAAI,QAAQ;AAAA,UACV,MAAM,OAAO,KAAK,EAAE;AAAA,UACpB,IAAI,SAAS;AAAA,YAAc,OAAO,MAAM,qHAAgH;AAAA,UACxJ,IAAI,CAAC;AAAA,YAAc,OAAO,MAAM,oHAAoH;AAAA,QACtJ;AAAA,QACA,IAAI,QAAQ,SAAS,WAAW,CAAC,GAAG,CAAC,SACnC,eAAc,IAAI,IAAI,YAAY,MAAM,QAAQ,IAAI,IACtD;AAAA,QACA;AAAA,MACF;AAAA,WACK,cAAc;AAAA,QACjB,IAAI,CAAC,SAAS,QAAQ;AAAA,UACpB,IAAI,QAAQ;AAAA,YACV,MAAM,OAAO,KAAK,EAAE;AAAA,YACpB,IAAI,SAAS,cAAc;AAAA,cACzB,IAAI,aAAa;AAAA,gBACf,OAAO,MAAM,+GAA0G;AAAA,cACzH;AAAA,YAEF,EAAO,SAAI,CAAC,cAAc;AAAA,cACxB,OAAO,MAAM,sFAAiF;AAAA,YAChG;AAAA,UACF;AAAA,UACA;AAAA,QACF;AAAA,QACA,IAAI,QAAQ,SAAS,SAAS,CAAC,SAC7B,eAAc,IAAI,IAAI,YAAY,MAAM,QAAQ,IAAI,IACtD;AAAA,QACA;AAAA,MACF;AAAA,WACK,UAAU;AAAA,QACb,IAAI,CAAC,SAAS,QAAQ;AAAA,UACpB,IAAI,UAAU,CAAC,cAAc;AAAA,YAC3B,OAAO,MAAM,uFAAkF;AAAA,UACjG;AAAA,UACA;AAAA,QACF;AAAA,QACA,IAAI,QAAQ,SAAS,SAAS,CAAC,SAC7B,eAAc,IAAI,IAAI,YAAY,MAAM,QAAQ,IAAI,IACtD;AAAA,QACA;AAAA,MACF;AAAA,WACK,UAAU;AAAA,QACb,IAAI,CAAC,SAAS,QAAQ;AAAA,UACpB,IAAI,UAAU,CAAC,cAAc;AAAA,YAC3B,OAAO,MAAM,2HAAsH;AAAA,UACrI;AAAA,UACA,IAAI,QAAQ,eAAc,OAAO,IAC7B,UAAU,WAAW,eAAc,QAAQ,IAAI,IAC7C,KAAK,SAAS,MAAM,gBAAgB,QAAQ,MAAM,QAAQ,EAAE,IAC5D,gBAAgB,SAAS,QAAQ,IACnC;AAAA,UACJ;AAAA,QACF;AAAA,QACA,IAAI,QAAQ,SAAS,SAAS,CAAC,SAC7B,eAAc,IAAI,IACd,KAAK,MAAM,OAAO,YAAY,KAAK,OAAO,QAAQ,GAAG,MAAM,gBAAgB,KAAK,MAAM,QAAQ,EAAE,IAChG,IACN;AAAA,QACA;AAAA,MACF;AAAA,WACK;AAAA,QACH,IAAI,QAAQ,SAAS,SAAS,CAAC,SAC7B,eAAc,IAAI,IACd,KAAK,MAAM,OAAO,YAAY,KAAK,OAAO,QAAQ,GAAG,MAAM,gBAAgB,KAAK,MAAM,QAAQ,EAAE,IAChG,IACN;AAAA,QACA;AAAA,WACG;AAAA,QACH,IAAI,QAAQ,SAAS,SAAS,CAAC,SAAS,YAAY,MAAM,QAAQ,CAAC;AAAA,QACnE;AAAA,WACG,UAAU;AAAA,QACb,IAAI,CAAC,SAAS,QAAQ;AAAA,UACpB,IAAI,UAAU,CAAC,cAAc;AAAA,YAC3B,OAAO,MAAM,uFAAkF;AAAA,UACjG;AAAA,UACA,IAAI,QAAQ,eAAc,OAAO,IAC7B;AAAA,eACK;AAAA,YACH,QAAQ,gBAAgB,QAAQ,QAAQ,QAAQ;AAAA,YAChD,QAAQ,gBAAgB,QAAQ,QAAQ,QAAQ;AAAA,UAClD,IACA;AAAA,UACJ;AAAA,QACF;AAAA,QACA,IAAI,QAAQ,SAAS,SAAS,CAAC,SAC7B,eAAc,IAAI,IACd;AAAA,aACK;AAAA,UACH,OAAO,YAAY,KAAK,OAAO,QAAQ;AAAA,UACvC,QAAQ,gBAAgB,KAAK,QAAQ,QAAQ;AAAA,UAC7C,QAAQ,gBAAgB,KAAK,QAAQ,QAAQ;AAAA,QAC/C,IACA,IACN;AAAA,QACA;AAAA,MACF;AAAA;AAAA,QAEE;AAAA;AAAA,EAEN;AAAA,EACA,OAAO;AAAA;AAsBF,SAAS,mBAAmB,CAAC,QAIlB;AAAA,EAChB,QAAQ,MAAM,QAAQ,UAAU;AAAA,EAChC,MAAM,WAAW,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAAA,EACrD,IAAI,UAAU;AAAA,IAAM,gBAAgB,EAAE,MAAM,UAAU,MAAM,CAAC;AAAA,EAC7D,MAAM,QACJ,UAAU,OAAO,IAAI,MAAkC,WAAW,EAAE,MAAM,UAAU,MAAM,CAAC;AAAA,EAC7F,OAAO;AAAA,IACL,SAAS,CAAC,SACR,kBAAkB;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,IACb,CAAC;AAAA,EACL;AAAA;AAGF,IAAM,YAA+B,CAAC,YAAY,aAAa,oBAAoB,SAAS,aAAa,SAAS;AAO3G,SAAS,iBAAiB,CAAC,QAQV;AAAA,EACtB,QAAQ,MAAM,UAAU,OAAO,OAAO,WAAW;AAAA,EACjD,MAAM,MAAoB,EAAE,MAAM,UAAU,OAAO,MAAM;AAAA,EACzD,MAAM,QAAQ,aAAa,EAAE,MAAM,OAAO,OAAO,MAAM,CAAC;AAAA,EACxD,MAAM,QAAQ,QAAQ,KAAK,KAAK;AAAA,EAChC,MAAM,SAAS,MAAM,SAAS;AAAA,EAC9B,MAAM,OAAO,GAAG,MAAM,cAAc;AAAA,EACpC,MAAM,OAAkB,kBAAkB,EAAE,OAAO,OAAO,QAAQ,CAAC,GAAG,MAAM,UAAU,CAAC;AAAA,EACvF,2BAA2B,EAAE,MAAM,OAAO,MAAM,MAAM,UAAU,CAAC;AAAA,EACjE,MAAM,UAAU,MAAiB,YAAY,EAAE,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,EAEvE,MAAM,eAAe,CAAC,OAAgB,SACpC,eAAc,KAAK,IAAI,UAAU,EAAE,KAAK,OAAO,OAAO,KAAK,CAAC,IAAI;AAAA,EAElE,IAAI,UAAU,SAAS,MAAM,GAAG;AAAA,IAC9B,MAAM,SAAS,aAAa,KAAK,OAAO,GAAG,YAAY;AAAA,IACvD,IAAI;AAAA,MAAQ,KAAK,QAAQ,YAAW,EAAE,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAAA,IACjE,SAAI,WAAW;AAAA,MAAW,KAAK,QAAQ;AAAA,IAC5C,IAAI,KAAK,YAAY;AAAA,MAAW,YAAY,EAAE,KAAK,OAAO,SAAS,KAAK,SAAS,MAAM,GAAG,eAAe,CAAC;AAAA,IAC1G,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,IAC9C,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,EAC3C;AAAA,EAEA,QAAQ;AAAA,SACD;AAAA,SACA,qBAAqB;AAAA,MACxB,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,MAC9C,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,SAAS,aAAa,KAAK,OAAO,GAAG,YAAY;AAAA,QACvD,IAAI,WAAW;AAAA,UAAW,KAAK,QAAQ;AAAA,QACvC,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,MAC3C;AAAA,MAGA,MAAM,OAAO,eAAc,KAAK,KAAK,IACjC,mBAAmB,EAAE,OAAO,OAAO,KAAK,MAAM,CAAC,IAC9C,KAAK;AAAA,MACV,MAAM,SAAS,eAAc,IAAI,IAAI,UAAU,EAAE,KAAK,OAAO,OAAO,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI;AAAA,MACrG,KAAK,QAAQ,YAAW,EAAE,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAAA,MAC1D,OAAO;AAAA,QACL,OAAO,MAAM;AAAA,QACb,QAAQ,WAAW,eAAe,cAAc;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,SAEK,UAAU;AAAA,MACb,KAAK,OAAO,eAAe,EAAE,KAAK,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC;AAAA,MACtF,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,MAC9C,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC3C;AAAA,SAEK;AAAA,SACA,uBAAuB;AAAA,MAC1B,MAAM,OAAO,KAAK;AAAA,MAClB,KAAK,OAAO,MAAM,QAAQ,IAAI,IAC1B,KAAK,IAAI,CAAC,QAAQ,eAAe,EAAE,KAAK,OAAO,MAAM,KAAK,MAAM,GAAG,YAAY,CAAC,CAAC,IACjF,eAAe,EAAE,KAAK,OAAO,MAAM,QAAQ,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC;AAAA,MACzE,IAAI,WAAW;AAAA,QAAuB,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,MACpF,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC3C;AAAA,SAEK,UAAU;AAAA,MACb,MAAM,SAAS,aAAa,KAAK,OAAO,GAAG,YAAY;AAAA,MACvD,KAAK,QAAQ,SAAS,kBAAkB,EAAE,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC,IAAK;AAAA,MAC/E,KAAK,OAAO,eAAe,EAAE,KAAK,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC;AAAA,MACtF,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,MAC9C,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC3C;AAAA,SAEK,cAAc;AAAA,MACjB,MAAM,SAAS,aAAa,KAAK,OAAO,GAAG,YAAY;AAAA,MACvD,IAAI;AAAA,QAAQ,KAAK,QAAQ,YAAW,EAAE,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAAA,MACjE,SAAI,WAAW;AAAA,QAAW,KAAK,QAAQ;AAAA,MAC5C,KAAK,OAAO,eAAe,EAAE,KAAK,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC;AAAA,MACtF,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC3C;AAAA,SAEK,uBAAuB;AAAA,MAI1B,MAAM,SAAS,aAAa,KAAK,OAAO,GAAG,YAAY;AAAA,MACvD,IAAI;AAAA,QAAQ,KAAK,QAAQ,YAAW,EAAE,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAAA,MACjE,SAAI,WAAW;AAAA,QAAW,KAAK,QAAQ;AAAA,MAC5C,KAAK,OAAO,eAAe,EAAE,KAAK,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC;AAAA,MACtF,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,MAC9C,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC3C;AAAA,SAEK,UAAU;AAAA,MACb,MAAM,SAAS,aAAa,KAAK,OAAO,GAAG,YAAY;AAAA,MAIvD,KAAK,QAAQ,SAAS,kBAAkB,EAAE,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC,IAAK;AAAA,MAC/E,KAAK,SAAS,eAAe,EAAE,KAAK,OAAO,MAAM,KAAK,UAAU,CAAC,GAAG,MAAM,GAAG,cAAc,CAAC;AAAA,MAC5F,KAAK,SAAS,eAAe,EAAE,KAAK,OAAO,MAAM,KAAK,UAAU,CAAC,GAAG,MAAM,GAAG,cAAc,CAAC;AAAA,MAC5F,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,MAC9C,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC3C;AAAA,SAEK,UAAU;AAAA,MACb,MAAM,SAAS,aAAa,KAAK,OAAO,GAAG,YAAY;AAAA,MACvD,KAAK,QAAQ,SAAS,kBAAkB,EAAE,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC,IAAK;AAAA,MAC/E,cAAc,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,MAC9C,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC3C;AAAA,SAEK,cAAc;AAAA,MACjB,MAAM,SAAS,aAAa,KAAK,OAAO,GAAG,YAAY;AAAA,MACvD,IAAI;AAAA,QAAQ,KAAK,QAAQ,YAAW,EAAE,OAAO,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAAA,MACjE,SAAI,WAAW;AAAA,QAAW,KAAK,QAAQ;AAAA,MAC5C,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC3C;AAAA;AAAA,MAGE,OAAO,EAAE,OAAO,MAAM,MAAM,QAAQ,MAAM,OAAO,KAAK;AAAA;AAAA;AAQ5D,SAAS,eAAc,CAAC,QAIN;AAAA,EAChB,QAAQ,KAAK,OAAO,SAAS;AAAA,EAE7B,MAAM,MAAM,CAAI,QAAgB,SAA4C;AAAA,IAC1E,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,YAAY,kBAAkB;AAAA,QAC5B,MAAM,IAAI;AAAA,QACV,UAAU,IAAI;AAAA,QACd,OAAO,IAAI;AAAA,QACX,OAAO,IAAI;AAAA,QACX,OAAO,MAAM;AAAA,QACb;AAAA,QACA;AAAA,MACF,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MAGd,OAAO,QAAQ,OAAO,KAAK;AAAA;AAAA,IAE7B,MAAM,SAAS,KAAK,UAAU;AAAA,IAC9B,OAAO,OAAO,UAAU,IAAI;AAAA;AAAA,EAG9B,OAAO;AAAA,IACL,UAAU,CAAC,SAAqB,IAAI,YAAY,IAAI;AAAA,IACpD,WAAW,CAAC,SAAqB,IAAI,aAAa,IAAI;AAAA,IACtD,kBAAkB,CAAC,SAAqB,IAAI,oBAAoB,IAAI;AAAA,IACpE,YAAY,CAAC,SAAoB,IAAI,cAAc,IAAI;AAAA,IACvD,mBAAmB,CAAC,SAAoB,IAAI,qBAAqB,IAAI;AAAA,IACrE,QAAQ,CAAC,SAAoB,IAAI,UAAU,IAAI;AAAA,IAC/C,YAAY,CAAC,SAAoB,IAAiB,cAAc,IAAI;AAAA,IACpE,qBAAqB,CAAC,SAAoB,IAAI,uBAAuB,IAAI;AAAA,IACzE,QAAQ,CAAC,SAAoB,IAAI,UAAU,IAAI;AAAA,IAC/C,YAAY,CAAC,SAAoB,IAAiB,cAAc,IAAI;AAAA,IACpE,qBAAqB,CAAC,SAAoB,IAAI,uBAAuB,IAAI;AAAA,IACzE,QAAQ,CAAC,SAAoB,IAAI,UAAU,IAAI;AAAA,IAM/C,YAAY,MAAsB;AAAA,MAChC,MAAM,UAAU,EAAE,QAAQ,aAAa,CAAC;AAAA;AAAA,IAE1C,QAAQ,CAAC,SAAoB,IAAI,UAAU,IAAI;AAAA,IAC/C,YAAY,CAAC,SAAqB,IAAiB,cAAc,IAAI;AAAA,IACrE,OAAO,CAAC,SAAqB,IAAI,SAAS,IAAI;AAAA,IAC9C,WAAW,CAAC,SAAoB,IAAI,aAAa,IAAI;AAAA,IACrD,SAAS,CAAC,SAAoB,IAAI,WAAW,IAAI;AAAA,EACnD;AAAA;AAQF,SAAS,oBAAmB,CAAC,QAKD;AAAA,EAC1B,QAAQ,KAAK,OAAO,MAAM,aAAa;AAAA,EACvC,MAAM,QAAQ,QAAQ,KAAK,KAAK;AAAA,EAChC,MAAM,MAA+B,CAAC;AAAA,EACtC,YAAY,KAAK,SAAS,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC9C,IAAI,OAAO;AAAA,MAAU;AAAA,IACrB,IAAI,OAAO,SAAS,YAAY;AAAA,MAC9B,IAAI,OAAO,CAAC,SAA8B;AAAA,QACxC,IAAI;AAAA,UACF,MAAM,OAAO,GAAG,MAAM,cAAc;AAAA,UACpC,MAAM,SAAS,eAAc,MAAM,KAAK,IACpC,UAAU,EAAE,KAAK,OAAO,OAAO,KAAK,OAAO,MAAM,GAAG,aAAa,CAAC,IAClE,MAAM;AAAA,UACV,MAAM,QACJ,MAAM,SAAS,SACX,SACA,YAAW,EAAE,OAAO,QAAQ,MAAM,YAAY,EAAE,KAAK,OAAO,KAAK,CAAC,EAAE,CAAC;AAAA,UAC3E,OAAQ,KAAe,KAAM,QAAQ,CAAC,MAAQ,UAAU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAG,CAAC;AAAA,UACrF,OAAO,OAAO;AAAA,UACd,OAAO,QAAQ,OAAO,KAAK;AAAA;AAAA;AAAA,IAGjC,EAAO,SAAI,eAAc,IAAI,GAAG;AAAA,MAC9B,IAAI,OAAO,qBAAoB;AAAA,QAC7B;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,UAAU,CAAC;AAAA,MACb,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,SAAS,CAAC,QAA8C;AAAA,EAC/D,OAAO,QAAQ;AAAA,IACb,OAAO;AAAA,IACP,MAAM,OAAO;AAAA,IACb,QAAQ;AAAA,IACR,SAAS,YAAY,OAAO;AAAA,EAC9B,CAAC;AAAA;AAGH,IAAM,cAAiC,CAAC,aAAa,eAAe,aAAa,eAAe,mBAAmB,mBAAmB;AAGtI,SAAS,eAAe,CAAC,QAAqE;AAAA,EAC5F,QAAQ,KAAK,WAAW;AAAA,EACxB,MAAM,SAAS,OAAO,OAAO,MAAM;AAAA,EACnC,MAAM,eAA8C,KAAK,OAAO,QAAQ;AAAA,EAExE,WAAW,SAAS,IAAI,KAAK,QAAQ;AAAA,IACnC,MAAM,OAAO,OAAO,QAAQ,MAAM;AAAA,IAClC,MAAM,WAAW,gBAAe,EAAE,KAAK,OAAO,KAAK,CAAC;AAAA,IACpD,MAAM,YAAY,KAAK,aAAa,qBAAoB,EAAE,KAAK,OAAO,MAAM,SAAS,CAAC,EAAE;AAAA,IACxF,MAAM,OAAO,IAAI,eAAe,EAAE,OAAO,MAAM,MAAM,UAAU,UAAU,CAAC,KAAK;AAAA,IAC/E,aAAa,MAAM,QAAQ;AAAA,IAC3B,aAAa,MAAM,cAAc;AAAA,IACjC,OAAO,eAAe,QAAQ,MAAM,YAAY,EAAE,OAAO,MAAM,YAAY,KAAK,CAAC;AAAA,EACnF;AAAA,EACA,OAAO,eAAe,QAAQ,WAAW,EAAE,OAAO,cAAc,YAAY,KAAK,CAAC;AAAA,EAClF,iBAAiB,EAAE,QAAQ,QAAQ,MAAM,IAAI,MAAM,QAAQ,aAAa,CAAC;AAAA,EAGzE,gBAAgB,EAAE,MAAM,QAAQ,IAAI,OAAO,CAAC;AAAA,EAE5C,OAAO,eAAe,QAAQ,gBAAgB;AAAA,IAC5C,OAAO,CAAC,KAAc,YACpB,OAAO,QAAQ,aACX,OAAO,aACL,CAAC,OAAQ,IAA+C,gBAAgB,EAAE,KAAK,QAAQ,GAAG,CAAC,CAAC,GAC5F,OACF,IAIA,OAAO,aAAa,KAAc,OAAgB;AAAA,IACxD,YAAY;AAAA,EACd,CAAC;AAAA,EAED,WAAW,UAAU,aAAa;AAAA,IAChC,OAAO,eAAe,QAAQ,QAAQ;AAAA,MACpC,OAAO,MAAsB,QAAQ,OAAO,UAAU,EAAE,OAAO,CAAC,CAAC;AAAA,MACjE,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EACA,OAAO,eAAe,QAAQ,WAAW;AAAA,IACvC,OAAO,MAAa;AAAA,MAClB,MAAM,QAAQ;AAAA,QACZ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,MACX,CAAC;AAAA;AAAA,IAEH,YAAY;AAAA,EACd,CAAC;AAAA,EAED,OAAO;AAAA;AASF,SAAS,YAAY,CAAC,QAAmJ;AAAA,EAC9K,QAAQ,QAAQ,SAAS;AAAA,EACzB,OAAO,eAAe,QAAQ,WAAW;AAAA,IACvC,OAAO,CAAC,WAA8C;AAAA,MACpD,IAAI,CAAC,eAAc,MAAM,KAAK,CAAC,eAAc,OAAO,MAAM,GAAG;AAAA,QAC3D,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,MACA,MAAM,WAAW,KAAK,OAAO,OAAO,CAAC,UAAU,MAAM,WAAW,SAAS;AAAA,MACzE,IAAI,SAAS,SAAS,GAAG;AAAA,QACvB,MAAM,QAAQ;AAAA,UACZ,OAAO,SAAS,IAAI;AAAA,UACpB,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,4CAA4C,SAClD,IAAI,CAAC,UAAU,MAAM,IAAI,EACzB,KAAK,IAAI;AAAA,QACd,CAAC;AAAA,MACH;AAAA,MACA,MAAM,QAAQ,OAAO;AAAA,MACrB,IAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;AAAA,QACzG,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,sEAAiE,OAAO;AAAA,QACnF,CAAC;AAAA,MACH;AAAA,MACA,MAAM,WAAW,oBAAoB,EAAE,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,MACpE,IAAI,UAAU;AAAA,QAAM,gBAAgB,EAAE,MAAM,UAAU,MAAM,CAAC;AAAA,MAC7D,MAAM,QACJ,UAAU,OACN,IAAI,MACJ,WAAW,EAAE,MAAM,UAAU,MAAM,CAAC;AAAA,MAC1C,MAAM,MAAoB,EAAE,MAAM,UAAU,OAAO,UAAW,OAAO,iBAAiB,YAAY,CAAC,IAAI,EAAE,cAAc,OAAO,aAAa,EAAG;AAAA,MAC9I,OAAO,gBAAgB,EAAE,KAAK,OAAO,CAAC;AAAA;AAAA,IAExC,YAAY;AAAA,EACd,CAAC;AAAA;;AC92CH,sBAAS,2DAAgC;AAEzC,uBAAS,8BAAY;AAkErB,uDAA4B;AAM5B,SAAS,MAAM,CAAC,QAAkD;AAAA,EAChE,MAAM,QAAQ,OAAO,IAAI,OAAO;AAAA,EAChC,OAAO,OAAO,UAAU,WAAW,QAAQ;AAAA;AAG7C,SAAS,cAAc,CAAC,QAAyD;AAAA,EAC/E,MAAM,QAAQ,OAAO,IAAI,OAAO;AAAA,EAChC,OAAO,OAAO,UAAU,WAAW,QAAQ;AAAA;AAU7C,SAAS,MAAM,CAAC,QAA+D;AAAA,EAC7E,MAAM,QAAQ,OAAO,IAAI,OAAO;AAAA,EAChC,OAAO,OAAO,UAAU,YAAY,QAAQ;AAAA;AAG9C,SAAS,KAAK,CAAC,QAAyD;AAAA,EACtE,MAAM,QAAQ,OAAO,IAAI,OAAO;AAAA,EAChC,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK;AAAA,IAAG,OAAO;AAAA,EACjE,IAAI,OAAO,UAAU,YAAY,CAAC,QAAQ,KAAK,KAAK;AAAA,IAAG,OAAO;AAAA,EAC9D,OAAO,OAAO,SAAS,OAAO,EAAE;AAAA;AAGlC,SAAS,iBAAiB,CAAC,QAAoD;AAAA,EAC7E,OAAO,IAAI,YAAU;AAAA,IACnB,MAAM;AAAA,IACN,SACE,4CAA4C,OAAO,2CAA2C,OAAO,aACrG;AAAA,IACF,MAAM,EAAE,QAAQ,OAAO,IAAI;AAAA,EAC7B,CAAC;AAAA;AAcH,SAAS,aAAa,CAAC,QAAwD;AAAA,EAC7E,MAAM,QAAQ,OAAO,IAAI,OAAO;AAAA,EAChC,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO,CAAC;AAAA,EACnD,IAAI,SAAkB;AAAA,EACtB,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,IAAI;AAAA,MACF,SAAS,KAAK,MAAM,KAAK;AAAA,MACzB,OAAO,OAAO;AAAA,MACd,MAAM,kBAAkB,EAAE,KAAK,OAAO,KAAK,QAAQ,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC;AAAA;AAAA,EAEnF;AAAA,EACA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,IAC1B,MAAM,kBAAkB,EAAE,KAAK,OAAO,KAAK,QAAQ,8BAA8B,OAAO,SAAS,CAAC;AAAA,EACpG;AAAA,EACA,OAAO,OAAO,IAAI,CAAC,UAA+B;AAAA,IAChD,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AAAA,MACvE,MAAM,kBAAkB,EAAE,KAAK,OAAO,KAAK,QAAQ,8BAA8B,UAAU,OAAO,SAAS,OAAO,QAAQ,CAAC;AAAA,IAC7H;AAAA,IACA,OAAO;AAAA,GACR;AAAA;AAyDH,IAAM,0BAA4D,OAAO,OAAO,EAAE,aAAa,GAAG,CAAC;AACnG,IAAM,mBAAkI,IAAI;AAM5I,SAAS,UAAU,CAAC,QAID;AAAA,EACjB,QAAQ,MAAM,QAAQ,aAAa;AAAA,EACnC,MAAM,SAA+B,SAAS,KAAK,CAAC,YAAY,QAAQ,aAAa,MAAM,IACvF,SACA,SAAS,KAAK,CAAC,YAAY,QAAQ,aAAa,aAAa,IAC3D,gBACA,SAAS,KAAK,CAAC,YAAY,QAAQ,aAAa,MAAM,IACpD,SACA;AAAA,EACR,OAAO,EAAE,MAAM,QAAQ,QAAQ,UAAU,CAAC,GAAG,IAAI,IAAI,SAAS,IAAI,CAAC,YAAY,QAAQ,OAAO,CAAC,CAAC,EAAE;AAAA;AAIpG,SAAS,WAAW,CAAC,QAIG;AAAA,EACtB,QAAQ,SAAS,MAAM,aAAa;AAAA,EACpC,IAAI,SAAS;AAAA,IAAW,OAAO,EAAE,SAAS,UAAU,cAAc;AAAA,EAClE,OAAO,SAAS,WAAW,YAAY,EAAE,SAAS,UAAU,OAAO;AAAA;AAGrE,SAAS,OAAO,CAAC,UAAuD;AAAA,EACtE,OAAO,SAAS,OAAO,CAAC,YAAgC,YAAY,SAAS;AAAA;AAK/E,SAAS,aAAa,CAAC,QAAoC;AAAA,EACzD,OAAO,OAAO,MAAM,UAAU,OAAO,MAAM;AAAA;AAG7C,SAAS,iBAAiB,CAAC,QAAgD;AAAA,EACzE,OAAO,OAAO,OAAO,OAClB,OAAO,CAAC,UAAU,MAAM,QAAQ,aAAa,MAAM,QAAQ,aAAa,EACxE,IAAI,CAAC,WAAW,EAAE,OAAO,MAAM,MAAM,OAAO,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE;AAAA;AAG5E,SAAS,mBAAmB,CAAC,QAAwC;AAAA,EACnE,OAAO,OAAO,OAAO,OAClB,OAAO,CAAC,UAAU,MAAM,QAAQ,aAAa,EAC7C,IAAI,CAAC,UAAU,cAAc,EAAE,MAAM,CAAC,CAAC;AAAA;AAO5C,SAAS,gBAAgB,CAAC,QAAoE;AAAA,EAC5F,MAAM,UAAU,eAAc,EAAE,SAAS,OAAO,QAAQ,QAAQ,CAAC;AAAA,EACjE,IAAI,CAAC,QAAQ,aAAa,wBAAwB;AAAA,IAChD,MAAM,uBAAsB,EAAE,SAAS,QAAQ,MAAM,SAAS,yBAAyB,CAAC;AAAA,EAC1F;AAAA,EACA,IAAI,OAAO,OAAO,QAAQ,WAAW;AAAA,IACnC,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EACA,oBAAoB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAAA,EAC7C,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,QAAoC;AAAA,EAC3D,QAAQ,UAAU;AAAA,EAClB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA;AAkB9D,eAAe,gBAAgB,CAAC,QAMN;AAAA,EACxB,QAAQ,SAAS,SAAS,QAAQ,WAAW;AAAA,EAC7C,IAAI,OAAO,WAAW;AAAA,IAAG,OAAO,EAAE,WAAW,MAAM,aAAa,CAAC,EAAE;AAAA,EAEnE,OAAO,QACJ,YAAY,OAAO,OAA8B;AAAA,IAChD,MAAM,UAAU,MAAM,GAAG,QAAQ,wBAAwB,EAAE,SAAS,OAAO,iBAAiB,CAAC,CAAC;AAAA,IAC9F,MAAM,aAAa,QAAQ,OAAO,YAAY,KAAK,OAAO,EAAE,KAAK,QAAQ,IAAI,KAAK,aAAa,CAAC;AAAA,IAChG,MAAM,GAAG,QAAQ,wBAAwB,EAAE,SAAS,OAAO,iBAAiB,YAAY,GAAG,CAAC,CAAC;AAAA,IAE7F,WAAW,SAAS,OAAO,YAAY,YAAY,SAAS,CAAC,GAAG;AAAA,MAC9D,MAAM,GAAG,cAAc,oBAAoB,EAAE,SAAS,OAAO,MAAM,OAAO,QAAQ,SAAS,CAAC,CAAC;AAAA,MAC7F,MAAM,GAAG,cACP,gBAAgB;AAAA,QACd;AAAA,QACA;AAAA,QACA,OAAO,MAAM;AAAA,QACb,YAAY;AAAA,QACZ,cAAc;AAAA,MAChB,CAAC,CACH;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,MAAM,GAAG,QAAQ,wBAAwB,EAAE,SAAS,OAAO,cAAc,CAAC,CAAC;AAAA,IAExF,WAAW,SAAS,OAAO,YAAY,YAAY,SAAS,CAAC,GAAG;AAAA,MAC9D,MAAM,GAAG,cAAc,oBAAoB,EAAE,SAAS,OAAO,MAAM,OAAO,QAAQ,OAAO,CAAC,CAAC;AAAA,IAC7F;AAAA,IACA,MAAM,GAAG,QAAQ,wBAAwB,EAAE,SAAS,OAAO,iBAAiB,WAAW,CAAC,CAAC;AAAA,IAEzF,OAAO;AAAA,MACL,WAAW;AAAA,MACX,aAAa,CAAC,GAAG,KAAK,OAAO,CAAC,QAAQ,OAAO,YAAY,aAAa,IAAI,UAAU,KAAK,EAAE,IAAI,CAAC,SAAS;AAAA,QACvG,OAAO,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,QACnC,OAAO,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,QACnC,OAAO,eAAe,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,QAC3C,WAAW,eAAe,EAAE,KAAK,KAAK,YAAY,CAAC;AAAA,MACrD,EAAE,GAAG,GAAI,OAAO,WAAW,CAAC,CAAE;AAAA,IAChC;AAAA,GACD,EACA,MAAM,CAAC,WAAkC,EAAE,WAAW,OAAO,QAAQ,gBAAgB,EAAE,MAAM,CAAC,EAAE,EAAE;AAAA;AAKvG,SAAS,cAAc,CAAC,QAIH;AAAA,EACnB,QAAQ,UAAU,UAAU,gBAAgB;AAAA,EAC5C,MAAM,WAAW,aAAa;AAAA,EAE9B,MAAM,mBAA8B,CAAC;AAAA,EACrC,IAAI,gBAAgB,aAAa,SAAS,gBAAgB,aAAa;AAAA,IACrE,iBAAiB,KAAK,EAAE,SAAS,SAAS,aAAa,UAAU,OAAO,CAAC;AAAA,EAC3E;AAAA,EACA,IAAI,SAAS,gBAAgB,SAAS,aAAa;AAAA,IAKjD,iBAAiB,KAAK,EAAE,SAAS,SAAS,aAAa,UAAU,WAAW,SAAS,OAAO,CAAC;AAAA,EAC/F;AAAA,EAEA,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,WACJ,uJACA;AAAA,MACJ,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,QAAQ;AAAA,QAChB,YAAY,EAAE,SAAS,aAAa,MAAM,SAAS,WAAW,UAAU,MAAM,CAAC;AAAA,QAC/E,YAAY,EAAE,SAAS,aAAa,MAAM,SAAS,WAAW,UAAU,MAAM,CAAC;AAAA,QAC/E,YAAY,EAAE,SAAS,YAAY,MAAM,SAAS,UAAU,UAAU,MAAM,CAAC;AAAA,QAC7E,YAAY,EAAE,SAAS,cAAc,MAAM,SAAS,YAAY,UAAU,MAAM,CAAC;AAAA,MACnF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAGF,SAAS,kBAAkB,CAAC,QAAqE;AAAA,EAC/F,QAAQ,YAAY;AAAA,EACpB,IAAI,YAAY,WAAW;AAAA,IACzB,OAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,CAAC,EAAE,SAAS,YAAW,aAAa,UAAU,cAAc,CAAC;AAAA,IACzE,CAAC;AAAA,EACH;AAAA,EACA,MAAM,WAAW,QAAQ;AAAA,IACvB,YAAY,EAAE,SAAS,QAAQ,QAAQ,MAAM,QAAQ,aAAa,UAAU,MAAM,CAAC;AAAA,IACnF,YAAY,EAAE,SAAS,QAAQ,UAAU,MAAM,QAAQ,qBAAqB,UAAU,MAAM,CAAC;AAAA,EAC/F,CAAC;AAAA,EAKD,IAAI,QAAQ,WAAW;AAAA,IAAW,SAAS,KAAK,EAAE,SAAS,QAAQ,QAAQ,UAAU,cAAc,CAAC;AAAA,EAC/F,SAAI,QAAQ;AAAA,IAAQ,SAAS,KAAK,EAAE,SAAS,aAAa,QAAQ,UAAU,UAAU,OAAO,CAAC;AAAA,EAEnG,OAAO,WAAW;AAAA,IAChB,MAAM;AAAA,IACN,QACE;AAAA,IACF;AAAA,EACF,CAAC;AAAA;AAGH,SAAS,WAAW,CAAC,QAGA;AAAA,EACnB,QAAQ,oBAAoB;AAAA,EAC5B,MAAM,SAAS,IAAI,IAAI,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;AAAA,EAEnE,MAAM,YAAuB,CAAC;AAAA,EAC9B,MAAM,WAAsB,CAAC;AAAA,EAC7B,MAAM,UAAqB,CAAC;AAAA,EAC5B,MAAM,SAAoB,CAAC;AAAA,EAE3B,WAAW,SAAS,iBAAiB;AAAA,IACnC,MAAM,MAAM,OAAO,IAAI,MAAM,KAAK;AAAA,IAClC,IAAI,QAAQ,WAAW;AAAA,MAKrB,QAAQ,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,MACvD,OAAO,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,MACtD,UAAU,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,cAAc,CAAC;AAAA,MAChE,SAAS,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,cAAc,CAAC;AAAA,MAC/D;AAAA,IACF;AAAA,IACA,MAAM,MAAM,YAAY,EAAE,SAAS,MAAM,OAAO,MAAM,IAAI,aAAa,UAAU,MAAM,CAAC;AAAA,IACxF,IAAI,QAAQ;AAAA,MAAW,UAAU,KAAK,GAAG;AAAA,IACzC,MAAM,QAAQ,YAAY,EAAE,SAAS,MAAM,OAAO,MAAM,IAAI,UAAU,UAAU,MAAM,CAAC;AAAA,IACvF,IAAI,UAAU;AAAA,MAAW,SAAS,KAAK,KAAK;AAAA,IAC5C,MAAM,KAAK,YAAY,EAAE,SAAS,MAAM,OAAO,MAAM,IAAI,YAAY,UAAU,KAAK,CAAC;AAAA,IACrF,IAAI,OAAO;AAAA,MAAW,QAAQ,KAAK,EAAE;AAAA,IACrC,MAAM,QAAQ,YAAY,EAAE,SAAS,MAAM,OAAO,MAAM,IAAI,WAAW,UAAU,KAAK,CAAC;AAAA,IACvF,IAAI,UAAU;AAAA,MAAW,OAAO,KAAK,KAAK;AAAA,EAC5C;AAAA,EAEA,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QACE;AAAA,MACF,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAGF,SAAS,YAAY,CAAC,QAID;AAAA,EACnB,QAAQ,UAAU,iBAAiB,gBAAgB;AAAA,EACnD,MAAM,iBAAiB,IAAI,IAAI,gBAAgB,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC;AAAA,EAE1E,MAAM,UAAqB,CAAC;AAAA,EAC5B,MAAM,QAAmB,CAAC;AAAA,EAC1B,MAAM,aAAwB,CAAC;AAAA,EAE/B,WAAW,SAAS,iBAAiB;AAAA,IACnC,MAAM,UAAU,SAAS,OAAO,CAAC,WAAW,OAAO,UAAU,MAAM,SAAS,OAAO,SAAS,YAAW,UAAU;AAAA,IACjH,IAAI,QAAQ,WAAW,GAAG;AAAA,MACxB,QAAQ,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,IACA,WAAW,UAAU,SAAS;AAAA,MAC5B,MAAM,KACJ,GAAG,QAAQ;AAAA,QACT,YAAY,EAAE,SAAS,MAAM,OAAO,MAAM,OAAO,YAAY,UAAU,KAAK,CAAC;AAAA,QAC7E,YAAY,EAAE,SAAS,MAAM,OAAO,MAAM,OAAO,UAAU,UAAU,KAAK,CAAC;AAAA,QAC3E,YAAY,EAAE,SAAS,MAAM,OAAO,MAAM,OAAO,UAAU,UAAU,KAAK,CAAC;AAAA,QAC3E,YAAY,EAAE,SAAS,MAAM,OAAO,MAAM,OAAO,cAAc,UAAU,KAAK,CAAC;AAAA,MACjF,CAAC,CACH;AAAA,MAGA,IAAI,OAAO,YAAY;AAAA,QAAK,MAAM,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,IACnF;AAAA,EACF;AAAA,EAEA,WAAW,UAAU,UAAU;AAAA,IAI7B,IAAI,eAAe,IAAI,OAAO,KAAK,KAAK,OAAO,SAAS,YAAW,YAAY;AAAA,MAC7E,WAAW,KAAK,EAAE,SAAS,OAAO,OAAO,UAAU,OAAO,CAAC;AAAA,IAC7D;AAAA,IACA,IAAI,CAAC,eAAe,IAAI,OAAO,KAAK,KAAK,OAAO,SAAS,YAAW,cAAc,YAAY,SAAS,OAAO,KAAK,GAAG;AAAA,MACpH,WAAW,KAAK,EAAE,SAAS,OAAO,OAAO,UAAU,OAAO,CAAC;AAAA,IAC7D;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ,wDAAwD,YAAW;AAAA,MAC3E,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAAA;AAGF,SAAS,eAAe,CAAC,QAGN;AAAA,EACjB,QAAQ,OAAO,oBAAoB;AAAA,EACnC,MAAM,SACJ;AAAA,EAEF,IAAI,CAAC,MAAM,WAAW;AAAA,IACpB,OAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,GAAG,0CAAqC,MAAM;AAAA,MACtD,UAAU,gBAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,MAAM,OAAO,UAAU,cAAuB,EAAE;AAAA,IACvG,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WAAsB,CAAC;AAAA,EAC7B,WAAW,SAAS,iBAAiB;AAAA,IACnC,MAAM,OAAO,MAAM,YAAY,KAAK,CAAC,QAAQ,IAAI,UAAU,MAAM,SAAS,IAAI,UAAU,KAAK;AAAA,IAC7F,MAAM,UAAU,MAAM,YAAY,KAAK,CAAC,QAAQ,IAAI,UAAU,MAAM,SAAS,IAAI,UAAU,IAAI;AAAA,IAC/F,IAAI,YAAY,WAAW;AAAA,MAGzB,SAAS,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,cAAc,CAAC;AAAA,MAC/D;AAAA,IACF;AAAA,IACA,IAAI,SAAS,WAAW;AAAA,MACtB,SAAS,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,MACxD;AAAA,IACF;AAAA,IAGA,IAAI,KAAK,UAAU,QAAQ,KAAK,cAAc,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,cAAc,MAAM;AAAA,MAC1G,SAAS,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,MACxD;AAAA,IACF;AAAA,IACA,IAAI,KAAK,UAAU,QAAQ,SAAS,KAAK,cAAc,QAAQ,WAAW;AAAA,MACxE,SAAS,KAAK,EAAE,SAAS,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,IAC1D;AAAA,EACF;AAAA,EAEA,OAAO,WAAW,EAAE,MAAM,6BAA6B,QAAQ,SAAS,CAAC;AAAA;AAG3E,SAAS,eAAe,CAAC,QAKuD;AAAA,EAC9E,MAAM,UAAmC,CAAC;AAAA,EAC1C,MAAM,WAAsB,CAAC;AAAA,EAC7B,MAAM,iBAAiB,IAAI,IAAI,OAAO,gBAAgB,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC;AAAA,EAEjF,WAAW,OAAO,OAAO,OAAO;AAAA,IAC9B,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,KAAK,OAAO,EAAE,KAAK,KAAK,OAAO,CAAC;AAAA,IAC7E,MAAM,QAAQ,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,IAC1C,MAAM,eAAe,OAAO,EAAE,KAAK,KAAK,eAAe,CAAC;AAAA,IACxD,MAAM,UAAU,OAAO,EAAE,KAAK,KAAK,kBAAkB,CAAC;AAAA,IACtD,IAAI,iBAAiB,aAAa,YAAY,WAAW;AAAA,MACvD,SAAS,KAAK,EAAE,SAAS,MAAM,UAAU,cAAc,CAAC;AAAA,MACxD;AAAA,IACF;AAAA,IACA,IAAI,cAAc;AAAA,MAChB,QAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,IAAI,CAAC,SAAS;AAAA,MACZ,QAAQ,KAAK,EAAE,MAAM,QAAQ,MAAM,OAAO,QAAQ,iEAAiE,CAAC;AAAA,IACtH;AAAA,EACF;AAAA,EAEA,WAAW,OAAO,OAAO,UAAU;AAAA,IACjC,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,KAAK,OAAO,EAAE,KAAK,KAAK,OAAO,CAAC;AAAA,IAC7E,QAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN;AAAA,MACA,OAAO,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,MACnC,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,OAAO,OAAO,UAAU;AAAA,IACjC,MAAM,QAAQ,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,IAC1C,MAAM,OAAO,GAAG,YAAW,eAAe,SAAS,OAAO,EAAE,KAAK,KAAK,OAAO,CAAC;AAAA,IAC9E,MAAM,UAAU,OAAO,EAAE,KAAK,KAAK,kBAAkB,CAAC;AAAA,IACtD,IAAI,YAAY,WAAW;AAAA,MACzB,SAAS,KAAK,EAAE,SAAS,MAAM,UAAU,cAAc,CAAC;AAAA,MACxD;AAAA,IACF;AAAA,IACA,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,QAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN;AAAA,MACA,OAAO,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,MACnC,QAAQ,eAAe,IAAI,KAAK,IAC5B,oFACA;AAAA,IACN,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,UAAU;AAAA,IAAS,SAAS,KAAK,EAAE,SAAS,OAAO,MAAM,UAAU,OAAO,CAAC;AAAA,EACtF,OAAO,EAAE,SAAS,SAAS;AAAA;AAkB7B,eAAsB,2BAA2B,CAAC,QAOrB;AAAA,EAC3B,QAAQ,SAAS,WAAW;AAAA,EAC5B,MAAM,UAAU,iBAAiB,EAAE,SAAS,OAAO,CAAC;AAAA,EACpD,MAAM,kBAAkB,kBAAkB,EAAE,OAAO,CAAC;AAAA,EACpD,MAAM,cAAc,oBAAoB,EAAE,OAAO,CAAC;AAAA,EAKlD,MAAM,cAAc,MAAM,QAAQ,QAAQ,wBAAwB,EAAE,SAAS,OAAO,UAAU,CAAC,CAAC;AAAA,EAChG,MAAM,UAAsB,YAAY,MAAM,CAAC;AAAA,EAC/C,MAAM,cAA0B,cAAc,EAAE,KAAK,SAAS,KAAK,WAAW,CAAC,EAAE,MAAM,CAAC;AAAA,EACxF,MAAM,WAA0B;AAAA,IAC9B,aAAa,OAAO,EAAE,KAAK,aAAa,KAAK,cAAc,CAAC;AAAA,IAC5D,aAAa,OAAO,EAAE,KAAK,aAAa,KAAK,cAAc,CAAC;AAAA,IAC5D,WAAW,OAAO,EAAE,KAAK,aAAa,KAAK,QAAQ,CAAC;AAAA,IACpD,WAAW,OAAO,EAAE,KAAK,aAAa,KAAK,YAAY,CAAC;AAAA,IACxD,UAAU,OAAO,EAAE,KAAK,aAAa,KAAK,WAAW,CAAC;AAAA,IACtD,YAAY,OAAO,EAAE,KAAK,aAAa,KAAK,aAAa,CAAC;AAAA,IAC1D,kBAAkB,MAAM,EAAE,KAAK,aAAa,KAAK,mBAAmB,CAAC;AAAA,EACvE;AAAA,EAEA,MAAM,eAAe,cAAc,EAAE,KAAK,SAAS,KAAK,gBAAgB,CAAC;AAAA,EACzE,MAAM,cAAc,cAAc,EAAE,KAAK,SAAS,KAAK,gBAAgB,CAAC;AAAA,EACxE,MAAM,YAAY,cAAc,EAAE,KAAK,SAAS,KAAK,SAAS,CAAC;AAAA,EAC/D,MAAM,aAAa,cAAc,EAAE,KAAK,SAAS,KAAK,WAAW,CAAC;AAAA,EAClE,MAAM,WAAW,cAAc,EAAE,KAAK,SAAS,KAAK,QAAQ,CAAC;AAAA,EAC7D,MAAM,cAAc,cAAc,EAAE,KAAK,SAAS,KAAK,WAAW,CAAC;AAAA,EACnE,MAAM,cAAc,cAAc,EAAE,KAAK,SAAS,KAAK,WAAW,CAAC;AAAA,EAEnE,MAAM,aAAa,YAAY;AAAA,EAC/B,MAAM,UACJ,eAAe,YACX,YACA;AAAA,IACE,QAAQ,OAAO,EAAE,KAAK,YAAY,KAAK,SAAS,CAAC;AAAA,IACjD,UAAU,OAAO,EAAE,KAAK,YAAY,KAAK,WAAW,CAAC;AAAA,IACrD,aAAa,OAAO,EAAE,KAAK,YAAY,KAAK,cAAc,CAAC;AAAA,IAC3D,QAAQ,OAAO,EAAE,KAAK,YAAY,KAAK,SAAS,CAAC;AAAA,IACjD,qBAAqB,OAAO,EAAE,KAAK,YAAY,KAAK,sBAAsB,CAAC;AAAA,EAC7E;AAAA,EAEN,MAAM,SAAuB,UAAU,IAAI,CAAC,SAAS;AAAA,IACnD,OAAO,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,IACnC,YAAY,OAAO,EAAE,KAAK,KAAK,aAAa,CAAC;AAAA,IAC7C,WAAW,OAAO,EAAE,KAAK,KAAK,YAAY,CAAC;AAAA,IAC3C,OAAO,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,IACnC,aAAa,OAAO,EAAE,KAAK,KAAK,cAAc,CAAC;AAAA,IAC/C,UAAU,OAAO,EAAE,KAAK,KAAK,WAAW,CAAC;AAAA,EAC3C,EAAE;AAAA,EAEF,MAAM,WAA0B,WAAW,IAAI,CAAC,SAAS;AAAA,IACvD,OAAO,OAAO,EAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,IACnC,MAAM,OAAO,EAAE,KAAK,KAAK,OAAO,CAAC;AAAA,IACjC,YAAY,OAAO,EAAE,KAAK,KAAK,aAAa,CAAC;AAAA,IAC7C,SAAS,OAAO,EAAE,KAAK,KAAK,UAAU,CAAC;AAAA,IACvC,UAAU,OAAO,EAAE,KAAK,KAAK,WAAW,CAAC;AAAA,IACzC,UAAU,OAAO,EAAE,KAAK,KAAK,WAAW,CAAC;AAAA,IACzC,cAAc,OAAO,EAAE,KAAK,KAAK,eAAe,CAAC;AAAA,EACnD,EAAE;AAAA,EAEF,MAAM,aAAa,OAAO,EAAE,KAAK,aAAa,KAAK,aAAa,CAAC;AAAA,EAGjE,MAAM,eAAe,OAAO,EAAE,KAAK,aAAa,KAAK,QAAQ,aAAa,WAAW,kBAAkB,eAAe,CAAC;AAAA,EACvH,MAAM,aAAa,KAAK,UAAU,CAAC,YAAY,cAAc,SAAS,aAAa,SAAS,aAAa,SAAS,gBAAgB,CAAC;AAAA,EACnI,IAAI;AAAA,EACJ,IAAI,OAAO,aAAa,aAAa,eAAe,MAAM,iBAAiB,IAAI;AAAA,IAC7E,IAAI,QAAQ,iBAAiB,IAAI,OAAO,QAAQ;AAAA,IAChD,IAAI,UAAU,aAAa,MAAM,WAAW,QAAQ;AAAA,MAClD,QAAQ,EAAE,QAAQ,aAAa,IAAI,IAAM;AAAA,MACzC,iBAAiB,IAAI,OAAO,UAAU,KAAK;AAAA,IAC7C;AAAA,IACA,cAAc,MAAM;AAAA,EACtB;AAAA,EACA,MAAM,UAAU,aAAa,IAAI,UAAU;AAAA,EAC3C,MAAM,gBAAgB,OAAO,EAAE,KAAK,aAAa,KAAK,gBAAgB,CAAC;AAAA,EACvE,MAAM,QAAsB,YAAY,aAAa,kBAAkB,OACnE,EAAE,WAAW,OAAO,QAAQ,0CAA0C,IACtE,MAAM,iBAAiB,EAAE,SAAS,SAAS,QAAQ,QAAQ,oBAAqB,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAG,CAAC;AAAA,EAC/H,MAAM,SAAS,gBAAgB;AAAA,IAC7B,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV;AAAA,EACF,CAAC;AAAA,EAED,MAAM,SAA2B;AAAA,IAC/B,GAAG,eAAe,EAAE,UAAU,UAAU,QAAQ,UAAU,aAAa,OAAO,YAAY,CAAC;AAAA,IAC3F,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QACE;AAAA,MACF,UAAU,aAAa,IAAI,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,UAAU,OAAgB,EAAE;AAAA,IAC5G,CAAC;AAAA,IACD,mBAAmB,EAAE,QAAQ,CAAC;AAAA,IAC9B,GAAG,YAAY,EAAE,QAAQ,gBAAgB,CAAC;AAAA,IAC1C,GAAG,aAAa,EAAE,UAAU,iBAAiB,YAAY,CAAC;AAAA,IAC1D,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;AAAA,IAC1C,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QACE;AAAA,MACF,UAAU,OAAO;AAAA,IACnB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,WAAW,OAAO,OAAO,CAAC,UAAU,MAAM,WAAW,UAAU,MAAM,WAAW,aAAa;AAAA,EACnG,IAAI,gBAAgB,WAAW;AAAA,IAC7B,IAAI,SAAS,WAAW,KAAK,MAAM,WAAW;AAAA,MAC5C,IAAI,CAAC,YAAY,IAAI,UAAU,KAAK,YAAY,QAAQ,wBAAwB,aAAa;AAAA,QAC3F,YAAY,OAAO,YAAY,KAAK,EAAE,KAAK,EAAE,KAAM;AAAA,MACrD;AAAA,MACA,YAAY,IAAI,YAAY,MAAM,YAAY,OAAO,CAAC,QAAQ,IAAI,UAAU,IAAI,CAAC;AAAA,IACnF,EAAO;AAAA,kBAAY,OAAO,UAAU;AAAA,EACtC;AAAA,EACA,OAAO;AAAA,IACL,OAAO,SAAS,WAAW;AAAA,IAC3B,aAAa,SAAS;AAAA,IACtB,aAAa,SAAS;AAAA,IACtB,UAAU,QAAQ;AAAA,IAClB,kBAAkB,SAAS;AAAA,IAC3B,QAAQ,gBAAgB,IAAI,CAAC,UAAU,MAAM,KAAK;AAAA,IAClD;AAAA,IACA;AAAA,IACA,eAAe,OAAO;AAAA,EACxB;AAAA;AAUF,eAAsB,gBAAgB,CAAC,QAIV;AAAA,EAC3B,QAAQ,SAAS,WAAW;AAAA,EAC5B,iBAAiB,EAAE,SAAS,OAAO,CAAC;AAAA,EAEpC,MAAM,eACJ,QAAQ,aAAa,WAAW,oBAAoB,EAAE,MAAM,OAAO,YAAY,CAAC,IAAI;AAAA,EAEtF,OAAO,QAAQ,YAAY,OAAO,OAAO;AAAA,IACvC,IAAI,iBAAiB,WAAW;AAAA,MAC9B,MAAM,GAAG,cAAc,cAAc,EAAE,SAAS,eAAc,EAAE,SAAS,QAAQ,QAAQ,CAAC,GAAG,MAAM,aAAa,CAAC,CAAC;AAAA,IACpH;AAAA,IACA,OAAO,4BAA4B;AAAA,MACjC,SAAS;AAAA,MACT;AAAA,SACI,OAAO,gBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,OAAO,YAAY;AAAA,IAChF,CAAC;AAAA,GACF;AAAA;AAIH,SAAS,mBAAmB,CAAC,QAA8C;AAAA,EACzE,QAAQ,SAAS;AAAA,EACjB,IAAI,OAAO,SAAS,YAAY,KAAK,WAAW,KAAK,KAAK,SAAS,MAAI,GAAG;AAAA,IACxE,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SACE;AAAA,MACF,MAAM,EAAE,UAAU,SAAS;AAAA,IAC7B,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAQF,SAAS,oBAAoB,CAAC,QAA2C;AAAA,EAC9E,QAAQ,WAAW;AAAA,EACnB,IAAI,OAAO;AAAA,IAAO;AAAA,EAClB,MAAM,IAAI,YAAU;AAAA,IAClB,MAAM;AAAA,IACN,SAAS,4DAA4D,OAAO,SACzE,IAAI,CAAC,YAAY,GAAG,QAAQ,SAAS,QAAQ,SAAS,EACtD,KAAK,IAAI;AAAA,IACZ,MAAM;AAAA,MACJ,QAAQ,OAAO,SAAS,IAAI,CAAC,YAAY,QAAQ,IAAI;AAAA,MACrD,aAAa,OAAO;AAAA,MACpB,UAAU,OAAO;AAAA,IACnB;AAAA,EACF,CAAC;AAAA;AAII,SAAS,qBAAqB,CAAC,QAA+C;AAAA,EACnF,QAAQ,WAAW;AAAA,EACnB,MAAM,QAAkB;AAAA,IACtB,eAAe,OAAO,QAAQ,UAAU,cAAc,OAAO,cAAc,WAAW,IAAI,KAAK,KAAK,OAAO,cAAc,4EAAuE,OAAO,wBAAwB,OAAO,gBAAgB,OAAO,cAAc,OAAO,OAAO;AAAA,EAC3R;AAAA,EACA,WAAW,SAAS,OAAO,QAAQ;AAAA,IACjC,MAAM,WAAW,MAAM,SAAS,WAAW,IAAI,KAAK,KAAK,MAAM,SAAS,KAAK,IAAI;AAAA,IACjF,MAAM,KAAK,KAAK,MAAM,SAAS,MAAM,SAAS,mBAAc,MAAM,QAAQ;AAAA,EAC5E;AAAA,EACA,WAAW,UAAU,OAAO,eAAe;AAAA,IACzC,MAAM,KAAK,YAAY,OAAO,SAAS,OAAO,iBAAiB,OAAO,gBAAW,OAAO,QAAQ;AAAA,EAClG;AAAA,EACA,OAAO;AAAA;;ACv4BT;AACA,sBAAS,oCAAW;;;ACCpB;AAwBA,4BAAS,+BAAiB,oCAAW,+CAAqB;AAE1D,uEAAsD,qDAAiC,mCAAiB,mCAAe;;;ACJvH;AAAA,mBACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAMA;AAAA;AAAA;AA4BF,IAAM,cAAc;AAAA;AAgBb,MAAM,qBAAqB;AAAA,EACf,UAAkC,IAAI;AAAA,MAGnD,IAAI,GAAW;AAAA,IACjB,OAAO,KAAK,QAAQ;AAAA;AAAA,EAGtB,GAAG,CAAC,KAAoC;AAAA,IACtC,MAAM,OAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,IACjC,IAAI,SAAS;AAAA,MAAW;AAAA,IACxB,KAAK,QAAQ,OAAO,GAAG;AAAA,IACvB,KAAK,QAAQ,IAAI,KAAK,IAAI;AAAA,IAC1B,OAAO;AAAA;AAAA,EAGT,GAAG,CAAC,KAAa,MAAuB;AAAA,IACtC,IAAI,KAAK,QAAQ,IAAI,GAAG,GAAG;AAAA,MACzB,KAAK,QAAQ,OAAO,GAAG;AAAA,IACzB,EAAO,SAAI,KAAK,QAAQ,QAAQ,aAAa;AAAA,MAC3C,MAAM,SAAS,KAAK,QAAQ,KAAK,EAAE,KAAK;AAAA,MACxC,IAAI,CAAC,OAAO;AAAA,QAAM,KAAK,QAAQ,OAAO,OAAO,KAAK;AAAA,IACpD;AAAA,IACA,KAAK,QAAQ,IAAI,KAAK,IAAI;AAAA;AAE9B;AAUA,SAAS,QAAQ,CAAC,MAAY,MAAoB;AAAA,EAChD,KAAK,OAAO,OAAI,KAAK,UAAU;AAAA;AAGjC,SAAS,MAAM,CAAC,MAAY,QAAsB;AAAA,EAChD,IAAI,OAAO,UAAU;AAAA,IAAW,SAAS,MAAM,OAAO,KAAK;AAAA,EAC3D,KAAK,OAAO;AAAA,EACZ,SAAS,MAAM,OAAO,IAAI;AAAA,EAE1B,IAAI,OAAO,cAAc;AAAA,IAAW,KAAK,OAAO,OAAO,cAAc,aAAa,OAAO;AAAA,EACzF,IAAI,OAAO,aAAa;AAAA,IAAM,KAAK,OAAO;AAAA,EAE1C,IAAI,OAAO,UAAU,WAAW;AAAA,IAC9B,KAAK,OAAO;AAAA,IACZ,SAAS,MAAM,OAAO,KAAK;AAAA,EAC7B;AAAA;AAGF,SAAS,QAAQ,CAAC,MAAY,OAAuB;AAAA,EACnD,SAAS,MAAM,MAAM,IAAI;AAAA,EACzB,IAAI,MAAM,UAAU,WAAW;AAAA,IAC7B,KAAK,OAAO;AAAA,IACZ,SAAS,MAAM,MAAM,KAAK;AAAA,EAC5B;AAAA;AAGF,SAAS,MAAM,CAAC,MAAY,KAAmB;AAAA,EAC7C,KAAK,OAAO,IAAI;AAAA,EAChB,IAAI,IAAI,OAAO;AAAA,IAAY,OAAO,MAAM,IAAI,MAAM;AAAA;AAIpD,SAAS,WAAW,CAAC,MAAY,MAAc,OAAsB;AAAA,EACnE,IAAI,gBAAgB,KAAK,GAAG;AAAA,IAK1B,KAAK,OAAO;AAAA,IACZ,SAAS,MAAM,IAAI;AAAA,IACnB,KAAK,OAAO,KAAK,MAAM,IAAI;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,IAAI,eAAe,KAAK,GAAG;AAAA,IACzB,KAAK,OAAO,KAAK,MAAM;AAAA,IACvB,SAAS,MAAM,IAAI;AAAA,IACnB,KAAK,OAAO,KAAK,MAAM,KAAK;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,IAAI,cAAc,KAAK,GAAG;AAAA,IAGxB,KAAK,OAAO,MAAM,kBAAkB,IAAI,QAAQ;AAAA,IAChD,SAAS,MAAM,IAAI;AAAA,IACnB,IAAI,MAAM,kBAAkB;AAAA,MAAG,KAAK,OAAO,KAAK,MAAM,aAAa;AAAA,IACnE;AAAA,EACF;AAAA,EACA,IAAI,mBAAmB,KAAK,GAAG;AAAA,IAC7B,KAAK,OAAO,KAAK,MAAM;AAAA,IACvB,SAAS,MAAM,IAAI;AAAA,IACnB,KAAK,OAAO,KAAK,MAAM,KAAK;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,KAAK,OAAO;AAAA,EACZ,SAAS,MAAM,IAAI;AAAA,EACnB,KAAK,OAAO,KAAK,KAAK;AAAA;AAGxB,SAAS,YAAY,CAAC,MAAY,WAAgD;AAAA,EAChF,IAAI,cAAc,aAAa,UAAU,WAAW,GAAG;AAAA,IACrD,KAAK,OAAO;AAAA,IACZ;AAAA,EACF;AAAA,EACA,KAAK,OAAO;AAAA,EACZ,WAAW,QAAQ;AAAA,IAAW,SAAS,MAAM,IAAI;AAAA,EACjD,KAAK,OAAO;AAAA;AAId,SAAS,QAAQ,CAAC,MAAY,SAAqB,MAAwB;AAAA,EACzE,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,IAAI,cAAc,KAAK,KAAK,GAAG;AAAA,QAC7B,KAAK,OAAO,KAAK,KAAK,KAAK,KAAK,MAAM,kBAAkB,IAAI,MAAM;AAAA,QAClE,OAAO,MAAM,KAAK,MAAM;AAAA,QACxB,IAAI,KAAK,MAAM,kBAAkB;AAAA,UAAG,KAAK,OAAO,KAAK,KAAK,MAAM,aAAa;AAAA,QAC7E,OAAO;AAAA,MACT;AAAA,MACA,KAAK,OAAO,IAAI,KAAK;AAAA,MACrB,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,KAAK,OAAO,KAAK,KAAK,KAAK;AAAA,MAC3B,OAAO;AAAA,SAEJ;AAAA,MACH,KAAK,OAAO,IAAI,KAAK;AAAA,MACrB,OAAO,MAAM,KAAK,IAAI;AAAA,MACtB,OAAO,MAAM,KAAK,KAAK;AAAA,MACvB,OAAO;AAAA,SAEJ;AAAA,MACH,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO;AAAA,MAC1C,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,OAAO;AAAA,SAEJ,WAAW;AAAA,MACd,IAAI,KAAK,OAAO,WAAW,GAAG;AAAA,QAC5B,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO;AAAA,QAC1C,OAAO;AAAA,MACT;AAAA,MACA,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO;AAAA,MAC1C,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,IAAI,QAAQ,oBAAoB,OAAO;AAAA,QAErC,KAAK,OAAO,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC;AAAA,MACnC,EAAO;AAAA,QAEL,KAAK,OAAO,IAAI,KAAK,OAAO;AAAA,QAC5B,WAAW,SAAS,KAAK;AAAA,UAAQ,KAAK,OAAO,KAAK,KAAK;AAAA;AAAA,MAEzD,OAAO;AAAA,IACT;AAAA,SAEK,WAAW;AAAA,MAOd,IAAI,KAAK,QAAQ,WAAW;AAAA,QAAG,OAAO;AAAA,MACtC,KAAK,OAAO,KAAK,KAAK,WAAW,OAAO,MAAM,MAAM,KAAK,QAAQ,UAAU,KAAK,KAAK;AAAA,MACrF,WAAW,UAAU,KAAK;AAAA,QAAS,OAAO,MAAM,MAAM;AAAA,MACtD,KAAK,OAAO;AAAA,MAEZ,IAAI,KAAK,KAAK,WAAW;AAAA,QAAG,OAAO;AAAA,MACnC,WAAW,OAAO,KAAK,MAAM;AAAA,QAE3B,IAAI,IAAI,WAAW,KAAK,QAAQ;AAAA,UAAQ,OAAO;AAAA,QAC/C,WAAW,SAAS;AAAA,UAAK,KAAK,OAAO,KAAK,KAAK;AAAA,MACjD;AAAA,MACA,OAAO;AAAA,IACT;AAAA,SAEK;AAAA,MACH,KAAK,OAAO,IAAI,KAAK,gBAAgB,OAAO,MAAM,MAAM,KAAK,WAAW,OAAO,MAAM;AAAA,MACrF,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,KAAK,OAAO,KAAK,KAAK,OAAO;AAAA,MAC7B,OAAO;AAAA,SAEJ;AAAA,MAMH,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,WAAW,OAAO,MAAM;AAAA,MACvD,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,KAAK,OAAO,KACV,KAAK,OAAO,WACR,KAAK,QACL,mBAAmB,EAAE,UAAU,QAAQ,qBAAqB,IAAI,KAAK,IAAI,OAAO,KAAK,MAAM,CAAC,CAClG;AAAA,MACA,OAAO;AAAA,SAEJ;AAAA,SACA,MAAM;AAAA,MACT,KAAK,OAAO,GAAG,KAAK,SAAS,QAAQ,MAAM,MAAM,KAAK,SAAS;AAAA,MAC/D,WAAW,WAAW,KAAK,UAAU;AAAA,QACnC,IAAI,CAAC,SAAS,MAAM,SAAS,OAAO;AAAA,UAAG,OAAO;AAAA,MAChD;AAAA,MACA,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,SAEK;AAAA,MACH,KAAK,OAAO;AAAA,MACZ,IAAI,CAAC,SAAS,MAAM,SAAS,KAAK,OAAO;AAAA,QAAG,OAAO;AAAA,MACnD,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,SAEJ;AAAA,MACH,KAAK,OAAO,KAAK,WAAW,OAAO,QAAQ;AAAA,MAC3C,IAAI,CAAC,WAAW,MAAM,SAAS,KAAK,MAAM;AAAA,QAAG,OAAO;AAAA,MACpD,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,SAEJ;AAAA,MACH,KAAK,OAAO,IAAI,KAAK;AAAA,MACrB,OAAO,MAAM,KAAK,GAAG;AAAA,MACrB,KAAK,OAAO,KAAK,KAAK,KAAK;AAAA,MAC3B,OAAO;AAAA,SAEJ;AAAA,MACH,KAAK,OAAO,KAAK,WAAW,OAAO,OAAO;AAAA,MAC1C,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,KAAK,OAAO,KAAK,KAAK,KAAK;AAAA,MAC3B,OAAO;AAAA,SAEJ;AAAA,MACH,KAAK,OAAO;AAAA,MACZ,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,KAAK,OAAO,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC;AAAA,MACjC,OAAO;AAAA,SAEJ;AAAA,MACH,KAAK,OAAO;AAAA,MACZ,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,KAAK,OAAO,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC;AAAA,MACjC,OAAO;AAAA,SAEJ;AAAA,MACH,KAAK,OAAO,KAAK,QAAQ,OAAO;AAAA,MAChC,OAAO,MAAM,KAAK,MAAM;AAAA,MACxB,OAAO;AAAA,SAEJ;AAAA,MAGH,OAAO;AAAA,SAEJ;AAAA,SACA;AAAA,MAGH,OAAO;AAAA,SAEJ;AAAA,MAEH,KAAK,OAAO;AAAA,MACZ,SAAS,MAAM,KAAK,IAAI;AAAA,MACxB,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA;AAAA;AAKb,SAAS,cAAa,CAAC,MAAY,SAAqB,MAA0B;AAAA,EAChF,IAAI,SAAS,MAAM;AAAA,IACjB,KAAK,OAAO;AAAA,IACZ,OAAO,MAAM,KAAK,GAAG;AAAA,EACvB,EAAO,SAAI,YAAY,MAAM;AAAA,IAG3B,KAAK,OAAO;AAAA,IACZ,IAAI,CAAC,WAAW,MAAM,SAAS,KAAK,MAAM;AAAA,MAAG,OAAO;AAAA,IACpD,KAAK,OAAO;AAAA,EACd,EAAO;AAAA,IACL,OAAO,MAAM,KAAK,MAAM;AAAA,IACxB,KAAK,OAAO,KAAK,UAAU,YAAY,MAAM,KAAK,UAAU,UAAU,MAAM;AAAA;AAAA,EAE9E,KAAK,OAAO,KAAK,cAAc,QAAQ,MAAM;AAAA,EAC7C,OAAO;AAAA;AAST,SAAS,UAAU,CAAC,MAAY,SAAqB,WAAqC;AAAA,EACxF,KAAK,OAAO;AAAA,EACZ,IAAI,UAAU,eAAe,aAAa,UAAU,WAAW,SAAS,GAAG;AAAA,IACzE,KAAK,OAAO;AAAA,IACZ,WAAW,UAAU,UAAU;AAAA,MAAY,OAAO,MAAM,MAAM;AAAA,IAC9D,KAAK,OAAO;AAAA,EACd;AAAA,EACA,KAAK,OAAO;AAAA,EACZ,WAAW,UAAU,UAAU;AAAA,IAAS,OAAO,MAAM,MAAM;AAAA,EAC3D,KAAK,OAAO;AAAA,EACZ,IAAI,UAAU,eAAe,WAAW;AAAA,IACtC,IAAI,UAAU,WAAW,SAAS,OAAO;AAAA,MACvC,KAAK,OAAO;AAAA,IACd,EAAO;AAAA,MACL,KAAK,OAAO;AAAA,MACZ,IAAI,UAAU,WAAW,UAAU;AAAA,QAAW,SAAS,MAAM,UAAU,WAAW,KAAK;AAAA;AAAA,EAE3F;AAAA,EACA,IAAI,UAAU,eAAe,WAAW;AAAA,IACtC,WAAW,aAAa,UAAU,YAAY;AAAA,MAC5C,KAAK,OAAO;AAAA,MACZ,OAAO,MAAM,UAAU,GAAG;AAAA,MAC1B,SAAS,MAAM,UAAU,KAAK;AAAA,IAChC;AAAA,EACF;AAAA,EACA,IAAI,UAAU,cAAc,WAAW;AAAA,IACrC,KAAK,OAAO;AAAA,IACZ,WAAW,UAAU,UAAU,UAAU;AAAA,MAAa,OAAO,MAAM,MAAM;AAAA,IACzE,KAAK,OAAO;AAAA,IACZ,WAAW,QAAQ,UAAU,UAAU,SAAS;AAAA,MAC9C,IAAI,CAAC,eAAc,MAAM,SAAS,IAAI;AAAA,QAAG,OAAO;AAAA,IAClD;AAAA,IACA,SAAS,MAAM,UAAU,UAAU,KAAK;AAAA,IACxC,KAAK,OAAO;AAAA,EACd;AAAA,EACA,KAAK,OAAO;AAAA,EACZ,SAAS,MAAM,UAAU,KAAK;AAAA,EAC9B,IAAI,UAAU,eAAe,WAAW;AAAA,IACtC,KAAK,OAAO;AAAA,IACZ,IAAI,CAAC,WAAW,MAAM,SAAS,UAAU,UAAU;AAAA,MAAG,OAAO;AAAA,IAC7D,KAAK,OAAO;AAAA,EACd;AAAA,EACA,IAAI,UAAU,eAAe,aAAa,UAAU,WAAW,SAAS,GAAG;AAAA,IACzE,WAAW,QAAQ,UAAU,YAAY;AAAA,MACvC,KAAK,OAAO;AAAA,MACZ,SAAS,MAAM,KAAK,KAAK;AAAA,MACzB,WAAW,QAAQ,KAAK,IAAI;AAAA,QAC1B,OAAO,MAAM,KAAK,IAAI;AAAA,QACtB,KAAK,OAAO;AAAA,QACZ,OAAO,MAAM,KAAK,KAAK;AAAA,MACzB;AAAA,MACA,KAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA,EACA,IAAI,UAAU,iBAAiB,aAAa,UAAU,aAAa,SAAS,GAAG;AAAA,IAC7E,WAAW,QAAQ,UAAU,cAAc;AAAA,MACzC,KAAK,OAAO,KAAK,QAAQ,UAAU,QAAQ,KAAK,QAAQ,cAAc,QAAQ;AAAA,MAC9E,KAAK,OAAO,KAAK,cAAc,eAAe,SAAS;AAAA,MACvD,IAAI,CAAC,WAAW,MAAM,SAAS,KAAK,MAAM;AAAA,QAAG,OAAO;AAAA,MACpD,SAAS,MAAM,KAAK,WAAW;AAAA,MAC/B,SAAS,MAAM,KAAK,KAAK;AAAA,MACzB,KAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA,EACA,IAAI,UAAU,UAAU,WAAW;AAAA,IACjC,KAAK,OAAO;AAAA,IACZ,IAAI,CAAC,SAAS,MAAM,SAAS,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,EACxD;AAAA,EACA,IAAI,UAAU,YAAY,aAAa,UAAU,QAAQ,SAAS,GAAG;AAAA,IACnE,KAAK,OAAO;AAAA,IACZ,WAAW,UAAU,UAAU;AAAA,MAAS,OAAO,MAAM,MAAM;AAAA,IAC3D,KAAK,OAAO;AAAA,EACd;AAAA,EACA,IAAI,UAAU,WAAW,WAAW;AAAA,IAClC,KAAK,OAAO;AAAA,IACZ,IAAI,CAAC,SAAS,MAAM,SAAS,UAAU,MAAM;AAAA,MAAG,OAAO;AAAA,EACzD;AAAA,EACA,IAAI,UAAU,YAAY,aAAa,UAAU,QAAQ,SAAS,GAAG;AAAA,IACnE,KAAK,OAAO;AAAA,IACZ,WAAW,QAAQ,UAAU,SAAS;AAAA,MACpC,IAAI,CAAC,eAAc,MAAM,SAAS,IAAI;AAAA,QAAG,OAAO;AAAA,IAClD;AAAA,IACA,KAAK,OAAO;AAAA,EACd;AAAA,EACA,IAAI,UAAU,UAAU;AAAA,IAAW,KAAK,OAAO,IAAI,UAAU;AAAA,EAC7D,IAAI,UAAU,WAAW;AAAA,IAAW,KAAK,OAAO,IAAI,UAAU;AAAA,EAI9D,IAAI,UAAU,YAAY,WAAW;AAAA,IACnC,KAAK,OAAO,KAAK,UAAU,QAAQ,YAAY,UAAU,QAAQ;AAAA,EACnE;AAAA,EACA,KAAK,OAAO;AAAA,EACZ,OAAO;AAAA;AAIT,SAAS,UAAU,CAAC,MAAY,SAAqB,WAAqC;AAAA,EACxF,KAAK,OAAO;AAAA,EACZ,SAAS,MAAM,UAAU,KAAK;AAAA,EAC9B,KAAK,OAAO;AAAA,EACZ,WAAW,QAAQ,UAAU;AAAA,IAAS,SAAS,MAAM,IAAI;AAAA,EACzD,KAAK,OAAO,KAAK,UAAU,KAAK;AAAA,EAChC,MAAM,QAAQ,UAAU,QAAQ;AAAA,EAChC,SAAS,WAAW,EAAG,WAAW,UAAU,KAAK,QAAQ,YAAY;AAAA,IACnE,MAAM,MAAM,UAAU,KAAK;AAAA,IAE3B,IAAI,IAAI,WAAW;AAAA,MAAO,OAAO;AAAA,IACjC,SAAS,OAAO,EAAG,OAAO,IAAI,QAAQ,QAAQ;AAAA,MAC5C,MAAM,QAAQ,IAAI;AAAA,MAElB,IAAI,iBAAiB,KAAK;AAAA,QAAG,KAAK,OAAO,IAAI,YAAY;AAAA,MACpD,SAAI,gBAAgB,KAAK,GAAG;AAAA,QAE/B,KAAK,OAAO,IAAI,YAAY;AAAA,QAC5B,KAAK,OAAO,KAAK,MAAM,IAAI;AAAA,MAC7B,EAAO,SAAI,cAAc,KAAK,GAAG;AAAA,QAE/B,KAAK,OAAO,IAAI,YAAY,QAAQ,MAAM,kBAAkB,IAAI,MAAM;AAAA,QACtE,IAAI,MAAM,kBAAkB;AAAA,UAAG,KAAK,OAAO,KAAK,MAAM,aAAa;AAAA,MACrE,EAAO;AAAA,aAAK,OAAO,KAAK,KAAK;AAAA,IAC/B;AAAA,EACF;AAAA,EACA,MAAM,aAAa,UAAU;AAAA,EAC7B,IAAI,eAAe,WAAW;AAAA,IAC5B,IAAI,eAAe,YAAY;AAAA,MAC7B,KAAK,OAAO;AAAA,MACZ,IAAI,WAAW,eAAe,WAAW;AAAA,QACvC,KAAK,OAAO;AAAA,QACZ,SAAS,MAAM,WAAW,UAAU;AAAA,MACtC;AAAA,MACA,IAAI,WAAW,YAAY,WAAW;AAAA,QACpC,WAAW,QAAQ,WAAW;AAAA,UAAS,SAAS,MAAM,IAAI;AAAA,MAC5D;AAAA,MACA,IAAI,WAAW,kBAAkB,WAAW;AAAA,QAE1C,KAAK,OAAO;AAAA,QACZ,SAAS,MAAM,WAAW,aAAa;AAAA,MACzC;AAAA,MACA,KAAK,OAAO;AAAA,IACd,EAAO;AAAA,MACL,IAAI,OAAO,OAAO,WAAW,MAAM,EAAE,KAAK,cAAa;AAAA,QAAG,OAAO;AAAA,MACjE,KAAK,OAAO;AAAA,MACZ,IAAI,WAAW,eAAe,WAAW;AAAA,QACvC,KAAK,OAAO;AAAA,QACZ,SAAS,MAAM,WAAW,UAAU;AAAA,MACtC;AAAA,MACA,WAAW,QAAQ,WAAW;AAAA,QAAS,SAAS,MAAM,IAAI;AAAA,MAC1D,KAAK,OAAO;AAAA,MACZ,YAAY,MAAM,UAAU,OAAO,QAAQ,WAAW,MAAM;AAAA,QAAG,YAAY,MAAM,MAAM,KAAK;AAAA,MAC5F,IAAI,WAAW,uBAAuB,WAAW;AAAA,QAC/C,KAAK,OAAO;AAAA,QACZ,SAAS,MAAM,WAAW,kBAAkB;AAAA,MAC9C;AAAA,MACA,KAAK,OAAO;AAAA;AAAA,EAEhB;AAAA,EACA,aAAa,MAAM,UAAU,SAAS;AAAA,EACtC,KAAK,OAAO;AAAA,EACZ,OAAO;AAAA;AAIT,SAAS,UAAU,CAAC,MAAY,SAAqB,WAAqC;AAAA,EACxF,KAAK,OAAO;AAAA,EACZ,SAAS,MAAM,UAAU,KAAK;AAAA,EAC9B,YAAY,MAAM,UAAU,OAAO,QAAQ,UAAU,GAAG;AAAA,IAAG,YAAY,MAAM,MAAM,KAAK;AAAA,EACxF,IAAI,UAAU,UAAU,WAAW;AAAA,IACjC,KAAK,OAAO;AAAA,IACZ,IAAI,CAAC,SAAS,MAAM,SAAS,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,EACxD;AAAA,EACA,aAAa,MAAM,UAAU,SAAS;AAAA,EACtC,KAAK,OAAO;AAAA,EACZ,OAAO;AAAA;AAGT,SAAS,UAAU,CAAC,MAAY,SAAqB,WAAqC;AAAA,EACxF,KAAK,OAAO;AAAA,EACZ,SAAS,MAAM,UAAU,KAAK;AAAA,EAC9B,IAAI,UAAU,UAAU,WAAW;AAAA,IACjC,KAAK,OAAO;AAAA,IACZ,IAAI,CAAC,SAAS,MAAM,SAAS,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,EACxD;AAAA,EACA,aAAa,MAAM,UAAU,SAAS;AAAA,EACtC,KAAK,OAAO;AAAA,EACZ,OAAO;AAAA;AAGT,SAAS,aAAa,CAAC,MAAY,SAAqB,WAAkC;AAAA,EACxF,QAAQ,UAAU;AAAA,SACX;AAAA,MACH,OAAO,WAAW,MAAM,SAAS,SAAS;AAAA,SACvC;AAAA,MACH,OAAO,WAAW,MAAM,SAAS,SAAS;AAAA,SACvC;AAAA,MACH,OAAO,WAAW,MAAM,SAAS,SAAS;AAAA,SACvC;AAAA,MACH,OAAO,WAAW,MAAM,SAAS,SAAS;AAAA,SAKvC;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SAGA;AAAA,MACH,OAAO;AAAA;AAAA;AAWb,SAAS,UAAU,CAAC,QAA4B,UAAuC;AAAA,EACrF,IAAI,OAAO,WAAW,SAAS;AAAA,IAAQ,OAAO;AAAA,EAC9C,SAAS,QAAQ,EAAG,QAAQ,OAAO,QAAQ,SAAS;AAAA,IAClD,MAAM,IAAI,OAAO;AAAA,IACjB,MAAM,IAAI,SAAS;AAAA,IACnB,IAAI,MAAM;AAAA,MAAG;AAAA,IACb,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ;AAAA,MACjE,IAAI,QAAQ;AAAA,MACZ,SAAS,UAAU,EAAG,UAAU,EAAE,QAAQ,WAAW;AAAA,QACnD,IAAI,EAAE,aAAa,EAAE,UAAU;AAAA,UAC7B,QAAQ;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI;AAAA,QAAO;AAAA,IACb;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAUF,SAAS,qBAAqB,CAAC,QAIpB;AAAA,EAChB,QAAQ,SAAS,WAAW,UAAU;AAAA,EAEtC,MAAM,OAAa,EAAE,KAAK,IAAI,QAAQ,CAAC,EAAE;AAAA,EACzC,IAAI,CAAC,cAAc,MAAM,SAAS,SAAS,GAAG;AAAA,IAC5C,OAAO,iBAAgB,EAAE,SAAS,UAAU,CAAC;AAAA,EAC/C;AAAA,EAEA,MAAM,OAAO,MAAM,IAAI,KAAK,GAAG;AAAA,EAC/B,IAAI,SAAS,WAAW;AAAA,IACtB,IAAI,SAAS;AAAA,MAAM,OAAO,iBAAgB,EAAE,SAAS,UAAU,CAAC;AAAA,IAChE,OAAO,EAAE,MAAM,KAAK,MAAM,QAAQ,KAAK,QAAQ,WAAW,KAAK,UAAU;AAAA,EAC3E;AAAA,EAEA,MAAM,WAAW,iBAAgB,EAAE,SAAS,UAAU,CAAC;AAAA,EACvD,MAAM,IACJ,KAAK,KACL,WAAW,KAAK,QAAQ,SAAS,MAAM,IAAI,EAAE,MAAM,SAAS,MAAM,WAAW,SAAS,UAAU,IAAI,IACtG;AAAA,EACA,OAAO;AAAA;;;AChnBT,sBAAS;AAgBF,IAAM,OAAsB,OAAO,IAAI,cAAc;AAO5D,SAAS,iBAAiB,CAAC,QAAoE;AAAA,EAC7F,QAAQ,OAAO,QAAQ,SAAS;AAAA,EAChC,OAAO,IAAI,YAAU;AAAA,IACnB,MAAM;AAAA,IACN,SACE,GAAG,SAAS,mCAAmC,+CAC/C,wFACA,8DACA;AAAA,IACF,MAAM,EAAE,OAAO,QAAQ,KAAK;AAAA,EAC9B,CAAC;AAAA;AAOH,SAAS,cAAa,CAAC,OAAkD;AAAA,EACvE,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EAChF,MAAM,QAAiB,OAAO,eAAe,KAAK;AAAA,EAClD,OAAO,UAAU,OAAO,aAAa,UAAU;AAAA;AAajD,SAAS,OAAO,CAAC,QAAiF;AAAA,EAChG,QAAQ,KAAK,OAAO,QAAQ;AAAA,EAC5B,MAAM,QAAQ,MAAM,YAAY,IAAI,GAAG;AAAA,EACvC,IAAI,UAAU;AAAA,IAAW,OAAO,MAAM,eAAe,SAAS,SAAS;AAAA,EACvE,MAAM,WAAW,MAAM,eAAe,IAAI,GAAG;AAAA,EAC7C,IAAI,aAAa;AAAA,IAAW,OAAO;AAAA,EACnC,OAAO,IAAI,KAAK,YAAY,IAAI,SAAS,WAAW,KAAK;AAAA;AAG3D,SAAS,SAAS,CAAC,QAMI;AAAA,EACrB,QAAQ,KAAK,OAAO,OAAO,MAAM,WAAW;AAAA,EAC5C,IAAI,UAAU;AAAA,EACd,MAAM,MAAM,MAAM,IAAI,CAAC,MAAM,UAAU;AAAA,IACrC,MAAM,OAAO,SAAS,EAAE,KAAK,OAAO,OAAO,MAAM,MAAM,GAAG,QAAQ,UAAU,OAAO,CAAC;AAAA,IACpF,IAAI,SAAS;AAAA,MAAM,UAAU;AAAA,IAC7B,OAAO;AAAA,GACR;AAAA,EACD,OAAO,UAAU,MAAM;AAAA;AAOzB,SAAS,QAAQ,CAAC,QAAyG;AAAA,EACzH,QAAQ,KAAK,OAAO,OAAO,SAAS;AAAA,EACpC,MAAM,SAAS,OAAO,WAAW;AAAA,EACjC,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,UAAU,EAAE,KAAK,OAAO,OAAO,MAAM,OAAO,CAAC;AAAA,EAC9E,IAAI,CAAC,eAAc,KAAK;AAAA,IAAG,OAAO;AAAA,EAElC,IAAI,MAAsC;AAAA,EAC1C,WAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AAAA,IACpC,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,YAAY,GAAG,QAAQ;AAAA,IAC7B,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,kBAAkB,EAAE,OAAO,IAAI,OAAO,QAAQ,IAAI,QAAQ,MAAM,UAAU,CAAC;AAAA,IACnF;AAAA,IACA,IAAI,UAAU,MAAM;AAAA,MAClB,QAAQ,KAAK,MAAM;AAAA,MACnB,OAAO,IAAI;AAAA,MACX;AAAA,IACF;AAAA,IACA,MAAM,SAAS,QAAQ,EAAE,KAAK,OAAO,IAAI,CAAC;AAAA,IAC1C,IAAI,WAAW,QAAQ;AAAA,MAErB,IAAI,UAAU,eAAc,KAAK,GAAG;AAAA,QAClC,IAAI,WAA2C;AAAA,QAC/C,WAAW,YAAY,OAAO,KAAK,KAAK,GAAG;AAAA,UACzC,IAAI,MAAM,cAAc,WAAW;AAAA,YACjC,MAAM,kBAAkB,EAAE,OAAO,IAAI,OAAO,QAAQ,IAAI,QAAQ,MAAM,GAAG,aAAa,WAAW,CAAC;AAAA,UACpG;AAAA,UACA,IAAI,MAAM,cAAc,MAAM;AAAA,YAC5B,aAAa,KAAK,MAAM;AAAA,YACxB,OAAO,SAAS;AAAA,UAClB;AAAA,QACF;AAAA,QACA,IAAI,aAAa,MAAM;AAAA,UACrB,QAAQ,KAAK,MAAM;AAAA,UACnB,IAAI,OAAO;AAAA,QACb;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,OAAO,SAAS;AAAA,MAAE;AAAA,MAAK,OAAO;AAAA,MAAQ,OAAO;AAAA,MAAO,MAAM;AAAA,MAC9D,QAAQ,QAAQ,WAAW,QAAQ,WAAW,OAC1C,QAAQ,UAAU,QAAQ,YAAY,QAAQ,WAAW,QAAQ;AAAA,IACvE,CAAC;AAAA,IACD,IAAI,SAAS,OAAO;AAAA,MAClB,QAAQ,KAAK,MAAM;AAAA,MACnB,IAAI,OAAO;AAAA,IACb;AAAA,EACF;AAAA,EACA,OAAO,OAAO;AAAA;AAQT,SAAS,oBAAoB,CAAC,QAKG;AAAA,EACtC,QAAQ,MAAM,OAAO,QAAQ,SAAS;AAAA,EACtC,IAAI,SAAS;AAAA,IAAW;AAAA,EACxB,MAAM,MAAmB,EAAE,MAAM,OAAO,MAAM,YAAY,OAAO;AAAA,EACjE,MAAM,SAAS,SAAS,EAAE,KAAK,OAAO,OAAO,MAAM,MAAM,OAAO,CAAC;AAAA,EACjE,OAAO;AAAA;;;AC7KT;AAEA;AAUA,IAAM,oBAAoB,OAAO,OAAO;AAAA,EACtC,aAAa;AAAA,EACb,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW,CAAC;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AACR,CAAC;AAED,SAAS,WAAW,CAAC,QAA6D;AAAA,EAChF,QAAQ,MAAM,UAAU;AAAA,EACxB,QAAQ;AAAA,SACD;AAAA,MAAU,OAAO,OAAO,UAAU,YAAY,MAAM,SAAS,KAAK,CAAC,MAAM,SAAS,MAAI;AAAA,SACtF;AAAA,MAAW,OAAO,OAAO,UAAU;AAAA,SACnC;AAAA,MAAO,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,KAAK,SAAS,kBAAkB,UAAU,SAAS,kBAAkB;AAAA,SACtI;AAAA,MAAU,OAAO,OAAO,UAAU,YAAY,SAAS,kBAAkB,aAAa,SAAS,kBAAkB;AAAA,SACjH;AAAA,MAAS,OAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK;AAAA,SAClE;AAAA,MAAW,OAAO,OAAO,UAAU,YAAY,kBAAkB,QAAQ,KAAK,KAAK,KAAK,OAAO,SAAS,OAAO,KAAK,CAAC;AAAA,SACrH;AAAA,MAAY,OAAO,iBAAiB,QAAQ,OAAO,SAAS,KAAK,UAAU,QAAQ,KAAK,KAAK,CAAC;AAAA;AAAA;AAKhG,SAAS,cAAc,CAAC,QAAsF;AAAA,EACnH,QAAQ,QAAQ,SAAS,YAAY;AAAA,EACrC,IAAI,YAAY,QAAQ,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AAAA,IAC7E,MAAM,IAAI,gBAAgB,EAAE,QAAQ,UAAU,CAAC;AAAA,EACjD;AAAA,EACA,MAAM,cAAc,OAAO,IAAK;AAAA,EAChC,MAAM,SAAkC,OAAO,OAAO,IAAI;AAAA,EAC1D,MAAM,WAA0C,OAAO,OAAO,IAAI;AAAA,EAClE,WAAW,OAAO,OAAO,KAAK,WAAW,GAAG;AAAA,IAC1C,IAAI,CAAC,OAAO,OAAO,SAAS,GAAG;AAAA,MAAG,MAAM,IAAI,gBAAgB,EAAE,QAAQ,WAAW,IAAI,CAAC;AAAA,EACxF;AAAA,EACA,WAAW,OAAO,QAAQ,QAAQ,OAAO,GAAG;AAAA,IAC1C,IAAI,OAAO,QAAQ,YAAY,CAAC,OAAO,OAAO,aAAa,GAAG;AAAA,MAAG,MAAM,IAAI,gBAAgB,EAAE,QAAQ,UAAU,CAAC;AAAA,EAClH;AAAA,EACA,YAAY,KAAK,SAAS,OAAO,QAAQ,WAAW,GAAG;AAAA,IACrD,MAAM,aAAa,OAAO,yBAAyB,SAAS,GAAG;AAAA,IAC/D,IAAI,EAAE,WAAW,eAAe,WAAW,eAAe;AAAA,MAAM,MAAM,IAAI,gBAAgB,EAAE,QAAQ,WAAW,IAAI,CAAC;AAAA,IACpH,MAAM,QAAiB,WAAW;AAAA,IAClC,IAAI,UAAU,QAAQ,KAAK,UAAU;AAAA,MACnC,OAAO,OAAO;AAAA,MACd,SAAS,OAAO;AAAA,MAChB;AAAA,IACF;AAAA,IACA,IAAI,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,MAAM,CAAC;AAAA,MAAG,MAAM,IAAI,gBAAgB,EAAE,QAAQ,WAAW,IAAI,CAAC;AAAA,IAClG,MAAM,SAAS,iBAAiB,OAAO,OAAO,OAAO,IAAI,KAAK,KAAK,UAAU,QAAQ,KAAK,KAAK,CAAC,CAAC,IAAI;AAAA,IACrG,OAAO,OAAO;AAAA,IACd,MAAM,UAAU,SAAS,EAAE,SAAS,QAAQ,MAAM,MAAM,KAAK,KAAK,CAAC,EAAE,OAAO,MAAM;AAAA,IAClF,SAAS,OAAO,mBAAmB,OAAO,KAAK,UAAU,YAAY,KAAK,OAAO,IAAI,OAAO,OAAO;AAAA,EACrG;AAAA,EAEA,WAAW,SAAS,OAAO,QAAQ;AAAA,IACjC,IAAI,OAAO,MAAM,QAAQ,YAAY,EAAE,WAAW,MAAM;AAAA,MAAM;AAAA,IAC9D,YAAY,MAAM,QAAQ,OAAO,QAAQ,MAAM,IAAI,KAAK,GAAG;AAAA,MACzD,MAAM,QAAQ,MAAM,OAAO,KAAK,CAAC,cAAc,UAAU,SAAS,IAAI;AAAA,MACtE,MAAM,OAAO,oBAAoB,EAAE,SAAS,MAAM,CAAC;AAAA,MACnD,MAAM,QAAQ,OAAO,IAAI;AAAA,MACzB,IAAI,UAAU;AAAA,QAAM;AAAA,MACpB,IACG,SAAS,WAAW,OAAO,UAAU,YAAY,CAAC,kBAAkB,KAAK,KAAK,KAAK,MACnF,SAAS,cAAc,OAAO,UAAU,aAAa,QAAQ,kBAAkB,eAAe,QAAQ,kBAAkB,gBACxH,SAAS,UAAU,OAAO,UAAU,YAAY,KAAK,OAAO,KAAK,MAAM;AAAA,QACxE,MAAM,IAAI,gBAAgB,EAAE,QAAQ,WAAW,KAAK,IAAI,QAAQ,CAAC;AAAA,IACrE;AAAA,EACF;AAAA,EACA,OAAO,OAAO,OAAO,EAAE,QAAQ,OAAO,OAAO,MAAM,GAAG,UAAU,OAAO,OAAO,QAAQ,EAAE,CAAC;AAAA;;;AC/D3F,sBAAS;;;ACTT,sBAAS;AAsBF,IAAM,qBAAwC,OAAO,OAAO;AAAA,EACjE,YAAY;AAAA,EACZ,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,kBAAkB,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,MAAM,MAAM,IAAI,CAAC;AAGrF,CAAC;AAqBD,SAAS,YAAW,CAAC,QAAwE;AAAA,EAC3F,OAAO,IAAI,YAAU;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,cAAc,OAAO;AAAA,OAC1B,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,EAC3D,CAAC;AAAA;AAGH,SAAS,eAAe,CAAC,QAA+E;AAAA,EACtG,QAAQ,MAAM,OAAO,aAAa;AAAA,EAClC,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,IAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,GAAG;AAAA,IACzC,MAAM,aAAY,EAAE,SAAS,GAAG,6CAA6C,OAAO,KAAK,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,CAAC;AAAA,EACxH;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,QAA+E;AAAA,EACxG,QAAQ,MAAM,OAAO,aAAa;AAAA,EAClC,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,IAAI,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ,GAAG;AAAA,IACxC,MAAM,aAAY,EAAE,SAAS,GAAG,+CAA+C,OAAO,KAAK,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,CAAC;AAAA,EAC1H;AAAA,EACA,OAAO;AAAA;AAUF,SAAS,sBAAsB,CAAC,QAAgE;AAAA,EACrG,QAAQ,YAAY;AAAA,EACpB,IAAI,QAAQ,aAAa,aAAa,QAAQ,aAAa,QAAQ,OAAO,QAAQ,aAAa,UAAU;AAAA,IACvG,MAAM,aAAY,EAAE,SAAS,kFAA6E,CAAC;AAAA,EAC7G;AAAA,EACA,MAAM,aAAa,QAAQ,cAAc,mBAAmB;AAAA,EAC5D,IAAI,CAAC,OAAO,SAAS,UAAU,KAAK,aAAa,KAAK,aAAa,GAAG;AAAA,IACpE,MAAM,aAAY,EAAE,SAAS,gDAAgD,OAAO,UAAU,KAAK,MAAM,EAAE,QAAQ,aAAa,EAAE,CAAC;AAAA,EACrI;AAAA,EACA,MAAM,WAAW,QAAQ,YAAY,mBAAmB;AAAA,EACxD,IAAI,aAAa,eAAe,aAAa,YAAY;AAAA,IACvD,MAAM,aAAY,EAAE,SAAS,wDAAwD,KAAK,UAAU,QAAQ,KAAK,MAAM,EAAE,QAAQ,WAAW,EAAE,CAAC;AAAA,EACjJ;AAAA,EACA,OAAO;AAAA,IACL,YAAY,QAAQ,cAAc,mBAAmB;AAAA,IACrD,wBAAwB,QAAQ,0BAA0B,mBAAmB;AAAA,IAC7E,iBAAiB,QAAQ,mBAAmB,mBAAmB;AAAA,IAC/D;AAAA,OACI,QAAQ,YAAY,YAAY,CAAC,IAAI,EAAE,SAAS,QAAQ,QAAQ;AAAA,OAChE,QAAQ,YAAY,YAAY,CAAC,IAAI,EAAE,SAAS,QAAQ,QAAQ;AAAA,IACpE;AAAA,IACA,uBAAuB,gBAAgB;AAAA,MACrC,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf,UAAU,mBAAmB;AAAA,IAC/B,CAAC;AAAA,IACD,2BAA2B,gBAAgB;AAAA,MACzC,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf,UAAU,mBAAmB;AAAA,IAC/B,CAAC;AAAA,IACD,iBAAiB,kBAAkB;AAAA,MACjC,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf,UAAU,mBAAmB;AAAA,IAC/B,CAAC;AAAA,IACD,iBAAiB,kBAAkB;AAAA,MACjC,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf,UAAU,mBAAmB;AAAA,IAC/B,CAAC;AAAA,IACD,sBAAsB,mBAAmB;AAAA,IACzC,kBAAkB,mBAAmB;AAAA,EACvC;AAAA;;;AD1DF,SAAS,WAAW,CAAC,QAOF;AAAA,EACjB,QAAQ,SAAS,MAAM,YAAY,gBAAgB,kBAAkB,SAAS;AAAA,EAC9E,IAAI,YAAY;AAAA,IAAW,OAAO;AAAA,EAClC,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,IAAI,mBAAmB;AAAA,IAAG,OAAO;AAAA,EAGjC,IAAI,SAAS;AAAA,IAAe,OAAO;AAAA,EACnC,IAAI,mBAAmB;AAAA,IAAG,OAAO;AAAA,EACjC,IAAI,SAAS;AAAA,IAAoB,OAAO;AAAA,EACxC,OAAO;AAAA;AAmCT,SAAS,WAAW,CAAC,OAA2C;AAAA,EAC9D,OAAO,iBAAiB,cAAY,MAAM,OAAO;AAAA;AAKnD,SAAS,YAAY,CAAC,QAA6C;AAAA,EACjE,OAAO,EAAE,QAAQ,IAAI,MAAc,OAAO,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,OAAO,EAAE;AAAA;AAGlF,SAAS,OAAO,CAAC,WAA6B,QAA2B,OAAqB;AAAA,EAC5F,IAAI,SAAS,OAAO;AAAA,EACpB,SAAS,QAAQ,EAAG,QAAQ,OAAO,QAAQ,SAAS;AAAA,IAClD,IAAI,SAAU,OAAO,QAAmB;AAAA,MACtC,SAAS;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU,OAAO,UAAW,UAAU,OAAO,UAAqB;AAAA,EAClE,UAAU,OAAO;AAAA,EACjB,UAAU,SAAS;AAAA;AAGrB,SAAS,eAAe,CAAC,WAA6B,QAA+C;AAAA,EACnG,OAAO,EAAE,QAAQ,QAAQ,CAAC,GAAG,UAAU,MAAM,GAAG,KAAK,UAAU,KAAK,OAAO,UAAU,MAAM;AAAA;AAUtF,SAAS,uBAAuB,CAAC,QAA0D;AAAA,EAChG,MAAM,SAAS,uBAAuB,EAAE,SAAS,OAAO,QAAQ,CAAC;AAAA,EACjE,MAAM,WAA8B,OAAO,QAAQ;AAAA,EACnD,MAAM,kBAAkB,OAAO,QAAQ;AAAA,EACvC,MAAM,UAAU,OAAO;AAAA,EAEvB,MAAM,SAAS,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE;AAAA,EACrD,IAAI,WAAW;AAAA,EAEf,IAAI,oBAAoB;AAAA,EACxB,IAAI,kBAAkB;AAAA,EACtB,IAAI,mBAAmB;AAAA,EACvB,IAAI,oBAAoB;AAAA,EACxB,IAAI,kBAAkB;AAAA,EACtB,IAAI,mBAAmB;AAAA,EACvB,IAAI,YAAY;AAAA,EAChB,IAAI,YAAY;AAAA,EAChB,IAAI,oBAAoB;AAAA,EACxB,IAAI,oBAAoB;AAAA,EACxB,MAAM,mBAAmB,aAAa,OAAO;AAAA,EAC7C,MAAM,mBAAmB,aAAa,OAAO;AAAA,EAC7C,MAAM,SAAoC,CAAC;AAAA,EAG3C,MAAM,QAAQ,CAAC,OAA6B,QAA0B;AAAA,IACpE,IAAI;AAAA,MACF,IAAI;AAAA,MACJ,OAAO,OAAO;AAAA,MACd,IAAI,oBAAoB;AAAA,QAAW;AAAA,MACnC,IAAI;AAAA,QACF,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAAA,QAChC,MAAM;AAAA;AAAA;AAAA,EAOZ,MAAM,aAAa,OAAO,OAA6B,QAAmD;AAAA,IACxG,IAAI;AAAA,MACF,MAAM,IAAI;AAAA,MACV,OAAO,OAAO;AAAA,MACd,IAAI,oBAAoB;AAAA,QAAW;AAAA,MACnC,IAAI;AAAA,QACF,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAAA,QAChC,MAAM;AAAA;AAAA;AAAA,EAMZ,MAAM,aAAa,CAAC,UAAoC;AAAA,IACtD,MAAM,SAAS,SAAS;AAAA,IACxB,IAAI,WAAW;AAAA,MAAW;AAAA,IAC1B,MAAM,QAAQ,MAAM;AAAA,MAClB,OAAO,KAAK;AAAA,KACb;AAAA;AAAA,EAGH,MAAM,UAAU,CAAC,UAAyC;AAAA,IACxD,IAAI,OAAO,aAAa,YAAY;AAAA,MAClC,OAAO,KAAK,KAAK;AAAA,MACjB,IAAI,OAAO,SAAS,OAAO,uBAAuB;AAAA,QAChD,MAAM,UAAU,OAAO,SAAS,OAAO;AAAA,QACvC,OAAO,OAAO,GAAG,OAAO;AAAA,QACxB,qBAAqB;AAAA,QACrB,WAAW,EAAE,QAAQ,eAAe,OAAO,QAAQ,CAAC;AAAA,MACtD;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,cAAc,SAAS;AAAA,IAC7B,IAAI,gBAAgB;AAAA,MAAW;AAAA,IAC/B,MAAM,aAAa,MAAM;AAAA,MACvB,YAAY,KAAK;AAAA,KAClB;AAAA;AAAA,EAGH,MAAM,QAAQ,MAAY;AAAA,IACxB,IAAI,OAAO,WAAW;AAAA,MAAG;AAAA,IACzB,MAAM,UAAU,OAAO,OAAO,GAAG,OAAO,MAAM;AAAA,IAC9C,MAAM,cAAc,SAAS;AAAA,IAC7B,IAAI,gBAAgB;AAAA,MAAW;AAAA,IAC/B,WAAW,SAAS,SAAS;AAAA,MAC3B,MAAM,aAAa,MAAM;AAAA,QACvB,YAAY,KAAK;AAAA,OAClB;AAAA,IACH;AAAA;AAAA,EAGF,MAAM,iBAAiB,CAAC,OAA4B,YAA6C;AAAA,IAC/F,MAAM,UAAU,OAAO;AAAA,IACvB,IAAI,YAAY,WAAW;AAAA,MACzB,IAAI,OAAO;AAAA,MACX,MAAM,WAAW,MAAM;AAAA,QACrB,OAAO,QAAQ;AAAA,UACb,MAAM,MAAM;AAAA,UACZ,OAAO,MAAM;AAAA,UACb,QAAQ,MAAM;AAAA,aACV,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,QAC7C,CAAC;AAAA,OACF;AAAA,MACD,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,cAAc;AAAA,MAAG,OAAO;AAAA,IACnC,IAAI,OAAO,cAAc;AAAA,MAAG,OAAO;AAAA,IACnC,OAAO,KAAK,OAAO,IAAI,OAAO;AAAA;AAAA,EAGhC,MAAM,QAAQ,CAAC,UAAwD;AAAA,IACrE,YAAY;AAAA,IACZ,MAAM,KAAK,GAAG,UAAU;AAAA,IACxB,MAAM,YAAY,YAAY,IAAI;AAAA,IAElC,IAAI;AAAA,IACJ,MAAM,cAAc,OAAO;AAAA,IAC3B,IAAI,gBAAgB,WAAW;AAAA,MAC7B,MAAM,WAAW,MAAM;AAAA,QACrB,UAAU,YAAY;AAAA,OACvB;AAAA,IACH;AAAA,IAEA,MAAM,UAAU,eAAe,OAAO,OAAO;AAAA,IAC7C,IAAI;AAAA,MAAS,qBAAqB;AAAA,IAElC,MAAM,aAAwC,CAAC;AAAA,IAC/C,IAAI,iBAAiB;AAAA,IACrB,IAAI,uBAAuB;AAAA,IAC3B,IAAI,sBAAsB;AAAA,IAC1B,IAAI,WAAW;AAAA,IACf,IAAI,iBAAiB;AAAA,IACrB,IAAI,wBAAwB;AAAA,IAC5B,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,UAAU;AAAA,IACd,IAAI,oBAAoB,MAAM;AAAA,IAE9B,MAAM,WAAW,MAAY;AAAA,MAC3B,IAAI,cAAc;AAAA,QAAW;AAAA,MAC7B,YAAY,YAAY,IAAI;AAAA,MAC5B,iBAAiB,KAAK,IAAI;AAAA;AAAA,IAG5B,MAAM,YAAY,CAAC,mBAAkD;AAAA,MAEnE,mBAAmB;AAAA,MACnB,IAAI,eAAe,YAAY,WAAW;AAAA,QACxC,oBAAoB;AAAA,QACpB,wBAAwB;AAAA,MAC1B;AAAA,MACA,QAAQ,kBAAkB,SAAS,eAAe,UAAU;AAAA,MAE5D,kBAAkB;AAAA,MAClB,uBAAuB,eAAe;AAAA,MACtC,IAAI,eAAe,aAAa,WAAW;AAAA,QACzC,YAAY,eAAe;AAAA,QAC3B,iBAAiB;AAAA,MACnB;AAAA,MACA,IAAI,CAAC;AAAA,QAAS;AAAA,MACd,IAAI,WAAW,UAAU,OAAO,2BAA2B;AAAA,QACzD,yBAAyB;AAAA,QACzB,qBAAqB;AAAA,QACrB,WAAW,EAAE,QAAQ,mBAAmB,OAAO,EAAE,CAAC;AAAA,QAClD;AAAA,MACF;AAAA,MACA,MAAM,OAAO,YAAY,eAAe,KAAK;AAAA,MAC7C,MAAM,QAAiC;AAAA,QACrC,aAAa;AAAA,QACb,OAAO,WAAW;AAAA,QAClB,MAAM,eAAe;AAAA,QACrB,OAAO,eAAe;AAAA,QACtB,QAAQ,eAAe;AAAA,QACvB,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,aAAa,iBAAiB;AAAA,UAC5B,OAAO,eAAe;AAAA,UACtB,QAAQ,eAAe;AAAA,UACvB,MAAM,eAAe;AAAA,UACrB,WAAW,OAAO;AAAA,QACpB,CAAC;AAAA,QACD,SAAS,eAAe;AAAA,QACxB,YAAY,eAAe;AAAA,QAC3B,gBAAgB,eAAe,OAAO;AAAA,QACtC,eAAe,eAAe;AAAA,WAC1B,eAAe,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,eAAe,SAAS;AAAA,WACjF,SAAS,YAAY,CAAC,IAAI,EAAE,WAAW,KAAK;AAAA,WAC5C,eAAe,cAAc,OAAO,kBAAkB,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,WACxE,OAAO,aAAa,EAAE,KAAK,eAAe,KAAK,IAAI,CAAC;AAAA,WACpD,OAAO,yBAAyB,EAAE,YAAY,CAAC,GAAG,eAAe,MAAM,EAAE,IAAI,CAAC;AAAA,MACpF;AAAA,MACA,WAAW,KAAK,KAAK;AAAA,MACrB,MAAM,cAAc,SAAS;AAAA,MAC7B,IAAI,gBAAgB;AAAA,QAAW;AAAA,MAC/B,MAAM,aAAa,MAAM;AAAA,QACvB,YAAY,KAAK;AAAA,OAClB;AAAA;AAAA,IAGH,MAAM,SAAS,CAAC,gBAA4C;AAAA,MAC1D,IAAI;AAAA,QAAS;AAAA,MACb,UAAU;AAAA,MAEV,MAAM,aAAa,cAAc;AAAA,MACjC,MAAM,aAAa,cAAc,YAAY,YAAY,YAAY,IAAI,IAAI;AAAA,MAG7E,mBAAmB;AAAA,MACnB,IAAI,YAAY,YAAY;AAAA,QAAW,oBAAoB;AAAA,MAC3D,IAAI,CAAC;AAAA,QAAY,qBAAqB;AAAA,MACtC,IAAI,eAAe;AAAA,QAAW,QAAQ,kBAAkB,SAAS,UAAU;AAAA,MAC3E,IAAI,YAAY,aAAa,WAAW;AAAA,QACtC,aAAa;AAAA,QACb,aAAa,YAAY;AAAA,MAC3B;AAAA,MACA,IAAI,CAAC;AAAA,QAAS;AAAA,MAEd,MAAM,OAAO,YAAY,YAAY,KAAK;AAAA,MAC1C,MAAM,QACJ,YAAY,SACZ,YAAY;AAAA,QACV,SAAS,YAAY;AAAA,QACrB,MAAM,MAAM;AAAA,QACZ;AAAA,QACA;AAAA,QACA,kBAAkB;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,MACH,IAAI;AAAA,MACJ,IAAI,OAAO,iBAAiB;AAAA,QAC1B,MAAM,YAAY,mBAAmB,IAAI,YAAY;AAAA,QACrD,MAAM,eACJ,eAAe,YAAY,YAAY,KAAK,IAAI,GAAG,aAAa,mBAAmB;AAAA,QACrF,SAAS;AAAA,aACH,iBAAiB,EAAE,SAAS,IAAI,CAAC;AAAA,aACjC,cAAc,YAAY,CAAC,IAAI,EAAE,UAAU;AAAA,aAC3C,iBAAiB,YAAY,CAAC,IAAI,EAAE,aAAa;AAAA,QACvD;AAAA,MACF;AAAA,MAEA,MAAM,QAAiC;AAAA,QACrC,aAAa;AAAA,WACT,sBAAsB,YAAY,CAAC,IAAI,EAAE,kBAAkB;AAAA,WAC3D,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,QAC3C,MAAM,MAAM;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,QAAQ,MAAM;AAAA,QACd,SAAS,MAAM;AAAA,QACf,UAAU,MAAM;AAAA,QAChB,SAAS,YAAY;AAAA,QACrB;AAAA,QACA;AAAA,WACI,mBAAmB,YAAY,CAAC,IAAI,EAAE,WAAW,eAAe;AAAA,WAChE,eAAe,YAAY,CAAC,IAAI,EAAE,WAAW;AAAA,WAC7C,cAAc,YAAY,CAAC,IAAI,EAAE,aAAa,YAAY,UAAU;AAAA,QACxE;AAAA,WACI,mBAAmB,IAAI,CAAC,IAAI,EAAE,oBAAoB;AAAA,WAClD,YAAY,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,YAAY,SAAS;AAAA,WAC3E,SAAS,YAAY,CAAC,IAAI,EAAE,WAAW,KAAK;AAAA,WAC5C,WAAW,YAAY,CAAC,IAAI,EAAE,OAAO;AAAA,QACzC,YAAY,CAAC,GAAG,UAAU;AAAA,WACtB,0BAA0B,IAAI,CAAC,IAAI,EAAE,mBAAmB,sBAAsB;AAAA,WAC9E,eAAe,aAAa,cAAc,OAAO,kBAAkB,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,QACzF,SAAS;AAAA,MACX;AAAA,MACA,QAAQ,KAAK;AAAA;AAAA,IAGf,MAAM,WAAW,CAAC,mBAAwD;AAAA,MACxE,IAAI;AAAA,QAAS;AAAA,MACb,oBAAoB,eAAe;AAAA;AAAA,IAGrC,OAAO,EAAE,IAAI,SAAS,UAAU,UAAU,WAAW,OAAO;AAAA;AAAA,EAG9D,MAAM,QAAQ,YAA2B;AAAA,IACvC,MAAM;AAAA,IACN,MAAM,gBAAgB,SAAS;AAAA,IAC/B,IAAI,kBAAkB;AAAA,MAAW;AAAA,IACjC,MAAM,WAAW,SAAS,MAAM,cAAc,CAAC;AAAA;AAAA,EAGjD,MAAM,WAA8B;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,YAA2B;AAAA,MACnC,MAAM,MAAM;AAAA,MACZ,MAAM,mBAAmB,SAAS;AAAA,MAClC,IAAI,qBAAqB;AAAA,QAAW;AAAA,MACpC,MAAM,WAAW,YAAY,MAAM,iBAAiB,CAAC;AAAA;AAAA,IAEvD,SAAS,OAAiC;AAAA,MACxC,iBAAiB;AAAA,MACjB,YAAY,OAAO;AAAA,MACnB;AAAA,MACA,YAAY,EAAE,OAAO,iBAAiB,QAAQ,kBAAkB,SAAS,kBAAkB;AAAA,MAC3F,YAAY,EAAE,OAAO,iBAAiB,QAAQ,iBAAiB;AAAA,MAC/D,MAAM,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,MAC3C,oBAAoB,gBAAgB,kBAAkB,OAAO;AAAA,MAC7D,oBAAoB,gBAAgB,kBAAkB,OAAO;AAAA,MAC7D,SAAS,EAAE,YAAY,mBAAmB,YAAY,kBAAkB;AAAA,IAC1E;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,OAAO,QAAQ;AAAA,EAC/B,IAAI,YAAY,WAAW;AAAA,IACzB,MAAM,aAAa,MAAM;AAAA,MACvB,QAAQ,EAAE,SAAS,SAAS,SAAS,OAAO,SAAS,OAAO,UAAU,SAAS,SAAS,CAAC;AAAA,KAC1F;AAAA,EACH;AAAA,EACA,OAAO;AAAA;;;AEpaT,eAAsB,mBAAsB,CAAC,QAAiD;AAAA,EAC5F,QAAQ,OAAO,QAAQ,UAAU,QAAQ;AAAA,EACzC,IAAI,UAAU,aAAa,WAAW,aAAa,aAAa;AAAA,IAAW,OAAO,MAAM,IAAI;AAAA,EAE5F,MAAM,UAAU,YAAY,IAAI;AAAA,EAChC,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,QAAQ,MAAM,IAAI;AAAA,IAClB,OAAO,OAAO;AAAA,IACd,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,UAAmC;AAAA,QACvC,MAAM,OAAO;AAAA,QACb,OAAO,OAAO;AAAA,QACd,QAAQ,OAAO;AAAA,QACf,MAAM,OAAO;AAAA,QACb,QAAQ,OAAO;AAAA,QACf,eAAe,OAAO;AAAA,QACtB,YAAY,YAAY,IAAI,IAAI;AAAA,QAChC,SAAS;AAAA,QACT;AAAA,WACI,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,MACvE;AAAA,MACA,MAAM,UAAU,OAAO;AAAA,IACzB;AAAA,IACA,MAAM;AAAA;AAAA,EAER,MAAM,aAAa,YAAY,IAAI,IAAI;AAAA,EACvC,SAAS;AAAA,IACP,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf;AAAA,EACF,CAAC;AAAA,EACD,IAAI,UAAU,WAAW;AAAA,IACvB,MAAM,WAAW,OAAO,WAAW,KAAK;AAAA,IACxC,MAAM,UAAmC;AAAA,MACvC,MAAM,OAAO;AAAA,MACb,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,MACb,QAAQ,OAAO;AAAA,MACf,eAAe,OAAO;AAAA,MACtB;AAAA,MACA,SAAS;AAAA,SACL,aAAa,YAAY,CAAC,IAAI,EAAE,SAAS;AAAA,SACzC,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,IACvE;AAAA,IACA,MAAM,UAAU,OAAO;AAAA,EACzB;AAAA,EAGA,WAAW;AAAA,IACT,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf;AAAA,IACA,eAAe,OAAO;AAAA,IACtB,KAAK,OAAO,SAAS;AAAA,EACvB,CAAC;AAAA,EACD,OAAO;AAAA;;;AN6OT,SAAS,SAAQ,CAAC,QAAoE;AAAA,EACpF,QAAQ,OAAO,WAAW;AAAA,EAC1B,OAAO,IAAI,YAAU;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,MAAM,4CAA4C;AAAA,IAC3D,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB,CAAC;AAAA;AAUH,SAAS,2BAA2B,CAAC,QAAuC;AAAA,EAC1E,QAAQ,WAAW;AAAA,EACnB,OAAO,IAAI,YAAU;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,GAAG;AAAA,IACZ,MAAM,EAAE,QAAQ,eAAe,KAAK;AAAA,EACtC,CAAC;AAAA;AAGH,SAAS,cAAc,CAAC,QAAsD;AAAA,EAC5E,QAAQ,OAAO,WAAW;AAAA,EAC1B,OAAO,IAAI,YAAU;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,GAAG,0BAAqB;AAAA,IACjC,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB,CAAC;AAAA;AAeH,SAAS,UAAU,CAAC,QAAoE;AAAA,EACtF,QAAQ,SAAS,WAAW;AAAA,EAC5B,OAAO,OAAO,IAAI,CAAC,UAAW,MAAM,QAAQ,KAAK,IAAI,QAAQ,iBAAiB,KAAK,IAAI,KAAM;AAAA;AAU/F,SAAS,OAAO,CAAC,QAAyE;AAAA,EACxF,QAAQ,KAAK,WAAW;AAAA,EACxB,IAAI,WAAW;AAAA,IAAM,OAAO;AAAA,EAC5B,MAAM,MAAiB,CAAC;AAAA,EACxB,WAAW,SAAS;AAAA,IAAQ,IAAI,SAAS,IAAI;AAAA,EAC7C,OAAO;AAAA;AAST,SAAS,gBAAgB,CAAC,MAAoE;AAAA,EAC5F,MAAM,OAAO,CAAC,UAA6C;AAAA,IACzD,IAAI,OAAO,UAAU;AAAA,MAAW,OAAO,QAAQ,IAAI;AAAA,IACnD,IAAI,iBAAiB;AAAA,MAAM,OAAO,MAAM,QAAQ;AAAA,IAChD,OAAO;AAAA;AAAA,EAET,OAAO,CAAC,GAAG,MAAM;AAAA,IACf,WAAW,OAAO,MAAM;AAAA,MACtB,MAAM,OAAO,EAAE,IAAI;AAAA,MACnB,MAAM,QAAQ,EAAE,IAAI;AAAA,MACpB,MAAM,WAAW,SAAS,QAAQ,SAAS;AAAA,MAC3C,MAAM,YAAY,UAAU,QAAQ,UAAU;AAAA,MAC9C,IAAI,YAAY,WAAW;AAAA,QACzB,IAAI,YAAY;AAAA,UAAW;AAAA,QAC3B,OAAO,cAAc,IAAI,UAAU,WAAW,KAAK;AAAA,MACrD;AAAA,MACA,MAAM,WAAW,IAAI,UAAU,OAAO,IAAI,IAAI,KAAK,IAAI;AAAA,MACvD,MAAM,YAAY,IAAI,UAAU,OAAO,KAAK,IAAI,KAAK,KAAK;AAAA,MAC1D,IAAI,WAAW;AAAA,QAAW,OAAO,IAAI,cAAc,QAAQ,KAAK;AAAA,MAChE,IAAI,WAAW;AAAA,QAAW,OAAO,IAAI,cAAc,QAAQ,IAAI;AAAA,IACjE;AAAA,IACA,OAAO;AAAA;AAAA;AAWX,SAAS,SAAS,CAAC,QAA6D;AAAA,EAC9E,QAAQ,MAAM,SAAS;AAAA,EACvB,IAAI,MAAM;AAAA,EACV,IAAI,KAAK;AAAA,IAAa,MAAM,CAAC,GAAG,GAAG,EAAE,QAAQ;AAAA,EAC7C,IAAI,KAAK,aAAa,QAAQ,KAAK,SAAS,SAAS,GAAG;AAAA,IACtD,MAAM,CAAC,GAAG,GAAG,EAAE,KAAK,iBAAiB,KAAK,QAAQ,CAAC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA;AAKT,SAAS,OAAO,CAAC,QAAqE;AAAA,EACpF,QAAQ,OAAO,SAAS;AAAA,EACxB,IAAI,SAAS;AAAA,IAAM,OAAO;AAAA,EAC1B,OAAO,MAAM,YAAY,IAAI,IAAI,KAAK;AAAA;AAIxC,SAAS,kBAAkB,CAAC,QAMd;AAAA,EACZ,QAAQ,QAAQ,OAAO,MAAM,KAAK,SAAS;AAAA,EAC3C,WAAW,aAAa,KAAK,YAAY;AAAA,IACvC,MAAM,QAAQ,qBAAqB;AAAA,MACjC,SAAS,OAAO,QAAQ;AAAA,MACxB,KAAK,UAAU;AAAA,MACf,OAAO,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,CAAC;AAAA,MAC/C,OAAO,IAAI,UAAU;AAAA,IACvB,CAAC;AAAA,IACD,IAAI,UAAU,QAAQ,YAAY,KAAK,gBAAgB;AAAA,MACrD,KAAK,SAAS;AAAA,MACd;AAAA,IACF;AAAA,IACA,MAAM,SAAU,KAAK,UAAU,QAAgD,CAAC;AAAA,IAChF,OAAO,UAAU,SAAS,UAAU;AAAA,IACpC,KAAK,UAAU,OAAO;AAAA,EACxB;AAAA,EACA,OAAO;AAAA;AAKT,IAAM,iBAAiD,IAAI;AAkC3D,SAAS,gBAAgB,CAAC,QAAmF;AAAA,EAC3G,QAAQ,WAAW;AAAA,EACnB,SAAS,QAAQ,OAAO,SAAU,UAAU,WAAW,QAAQ,MAAM,QAAQ;AAAA,IAC3E,IAAI,CAAC,MAAM;AAAA,MAAQ,OAAO,IAAI,iBAAgB,EAAE,QAAQ,UAAU,CAAC;AAAA,EACrE;AAAA,EACA,IAAI,OAAO,mBAAmB,SAAS,OAAO,cAAc,aAAa,OAAO,YAAY,WAAW;AAAA,IACrG,OAAO,IAAI,iBAAgB,EAAE,QAAQ,UAAU,CAAC;AAAA,EAClD;AAAA,EACA;AAAA;AAGF,SAAS,kBAAkB,CAAC,QAA4D;AAAA,EACtF,MAAM,QAAQ,iBAAiB,MAAM;AAAA,EACrC,IAAI,UAAU;AAAA,IAAW,MAAM;AAAA;AAIjC,eAAe,iBAAoB,CAAC,QAKrB;AAAA,EACb,QAAQ,QAAQ,KAAK,YAAY;AAAA,EACjC,mBAAmB,EAAE,QAAQ,gBAAgB,OAAO,eAAe,CAAC;AAAA,EACpE,IAAI,SAAS,aAAa,WAAW;AAAA,IACnC,MAAM,UAAU,OAAO,QAAQ,SAAS;AAAA,IACxC,MAAM,YAAY,QAAQ,SAAS,eAAe;AAAA,IAClD,IAAI,YAAY,aAAa,YAAY,iBACtC,cAAc,+BAA+B,YAAY,6BAA8B;AAAA,MACxF,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM,EAAE,UAAU,OAAO,QAAQ,UAAU,SAAS,uBAAuB,WAAW,WAAW,WAAW,aAAa;AAAA,MAC3H,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO,OAAO,QAAQ,YAAY,OAAO,YAAY;AAAA,IACnD,MAAM,WAAgC,EAAE,QAAQ,SAAU,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,SAAS,EAAG;AAAA,IAC5H,MAAM,SAAiB,KAAK,QAAQ,SAAS,eAAe,MAAM,SAAS;AAAA,IAC3E,MAAM,UAAU,YAAwB;AAAA,MACtC,IAAI,OAAO,cAAc,aAAa,OAAO,kBAAkB,MAAM;AAAA,QACnE,IAAI,QAAQ,aAAa,UAAU;AAAA,UACjC,MAAM,QAAQ,cAAc,eAAc,EAAE,SAAS,OAAO,SAAS,MAAM,OAAO,QAAQ,UAAW,YAAa,CAAC,CAAC;AAAA,QACtH;AAAA,QACA,IAAI,OAAO,YAAY,aAAa,OAAO,KAAK,OAAO,UAAU,IAAK,OAAO,EAAE,SAAS,GAAG;AAAA,UACzF,MAAM,QAAQ,cAAc,iBAAiB,EAAE,SAAS,OAAO,SAAS,SAAS,OAAO,UAAU,IAAK,SAAS,QAAQ,OAAO,QAAQ,SAAS,CAAC,CAAC;AAAA,QACpJ;AAAA,QACA,MAAM,YAAY,MAAM,4BAA4B,EAAE,SAAS,QAAQ,OAAO,WAAW,aAAa,OAAO,QAAQ,WAAW,aAAa,UAAU,OAAO,aAAa,CAAC;AAAA,QAC5K,qBAAqB,EAAE,QAAQ,UAAU,CAAC;AAAA,MAC5C;AAAA,MACA,OAAO,IAAI,MAAM;AAAA;AAAA,IAEnB,OAAO,QAAQ,EAAE,QAAQ,MAAM;AAAA,MAAE,SAAS,SAAS;AAAA,KAAQ;AAAA,KAC1D,OAAO;AAAA;AAGZ,eAAe,gBAAmB,CAAC,QAA6E;AAAA,EAC9G,QAAQ,QAAQ,QAAQ;AAAA,EACxB,mBAAmB,EAAE,OAAO,CAAC;AAAA,EAC7B,IAAI,OAAO,cAAc,aAAa,OAAO,kBAAkB;AAAA,IAAM,OAAO,kBAAkB,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC7G,OAAO,IAAI,MAAM;AAAA;AAUnB,SAAS,UAAU,CAAC,QAA6E;AAAA,EAC/F,QAAQ,WAAW;AAAA,EACnB,MAAM,UAAU,OAAO,QAAQ;AAAA,EAC/B,IAAI,YAAY,aAAa,OAAO,UAAU,SAAS;AAAA,IAAG;AAAA,EAC1D,OAAO,CAAC,cAAqC;AAAA,IAC3C,MAAM,QAAoB;AAAA,IAC1B,UAAU,KAAK;AAAA,IACf,WAAW,YAAY,OAAO;AAAA,MAAW,SAAS,KAAK;AAAA;AAAA;AAQ3D,SAAS,aAAa,CAAC,OAAoC;AAAA,EACzD,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,MAAM;AAAA,EACvC,IAAI,UAAU;AAAA,IAAM,OAAO;AAAA,EAC3B,IAAI,OAAO,UAAU;AAAA,IAAU;AAAA,EAC/B,MAAM,QAAS,MAA8B;AAAA,EAC7C,OAAO,OAAO,UAAU,WAAW,QAAQ;AAAA;AAI7C,SAAS,cAAc,CAAC,QAKgB;AAAA,EACtC,QAAQ,QAAQ,MAAM,OAAO,WAAW;AAAA,EACxC,MAAM,WAAW,OAAO;AAAA,EACxB,IAAI,aAAa;AAAA,IAAW;AAAA,EAC5B,OAAO,SAAS,MAAM;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,OAAO,QAAQ;AAAA,IACxB,UAAU,OAAO,QAAQ;AAAA,OACrB,OAAO,cAAc,YAAY,CAAC,IAAI,EAAE,mBAAmB,OAAO,UAAU,GAAG;AAAA,EACrF,CAAC;AAAA;AAQH,SAAS,YAAe,CAAC,QAUV;AAAA,EACb,QAAQ,WAAW;AAAA,EACnB,OAAO,oBAAuB;AAAA,IAC5B,OAAO,OAAO;AAAA,IACd,QAAQ,WAAW,EAAE,OAAO,CAAC;AAAA,IAC7B,UAAU,OAAO,aAAa;AAAA,IAC9B,MAAM,OAAO;AAAA,IACb,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf,eAAe,OAAO,kBAAkB;AAAA,OACpC,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,OACjE,OAAO,aAAa,YAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,IACrE,KAAK,OAAO;AAAA,EACd,CAAC;AAAA;AAIH,SAAS,WAAW,CAAC,QAAgD;AAAA,EACnE,OAAO,OAAO,OAAO,WAAW,OAAO,oBAAoB,OAAO,YAAY,IAAI,IAAI;AAAA;AAIxF,SAAS,UAAU,CAAC,QAA6E;AAAA,EAC/F,QAAQ,OAAO,YAAY;AAAA,EAC3B,QAAQ,KACN,CAAC,UAAmB;AAAA,IAClB,MAAM,WAAW,cAAc,KAAK;AAAA,IACpC,MAAM,OAAO,EAAE,SAAS,cAAe,aAAa,YAAY,CAAC,IAAI,EAAE,SAAS,EAAG,CAAC;AAAA,KAEtF,CAAC,UAAmB;AAAA,IAClB,MAAM,OAAO,EAAE,SAAS,WAAW,MAAM,CAAC;AAAA,GAE9C;AAAA;AAsCF,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAM,gBAAgB,IAAI;AAE1B,SAAS,cAAc,CAAC,OAAgD;AAAA,EACtE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,cAAc,IAAI,KAAK;AAAA;AAAA;AAG/E,MAAM,qBAAwB,QAAW;AAAA,cAClB,OAAO,QAAQ,GAAuB;AAAA,IACzD,OAAO;AAAA;AAAA,EAGT;AAAA,EAOA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EAEX;AAAA,SAEO;AAAA,IACL,qBAAqB,aAAa;AAAA,IAClC,qBAAqB,GAAG,YAAY,MAAM;AAAA,IAC1C,yBAAyB,GAAG,OAAO,aAAa,MAAM,YAAY,EAAE,OAAO,CAAC;AAAA,IAC5E,qBAAqB,GAAG,OAAO,aAAa,MAAM,QAAQ,EAAE,OAAO,CAAC;AAAA,IACpE,oBAAoB,GAAG,YAAY,MAAM,OAAO;AAAA,IAChD,uBAAuB,GAAG,YAAY;AAAA,MAAE,MAAM,UAAU,KAAK,MAAM,SAAS,aAAa,KAAK;AAAA;AAAA;AAAA,SAIzF,OAAU,CAAC,QAME;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM,WAAW,IAAI,aAAgB,CAAC,KAAK,QAAQ;AAAA,MACjD,UAAU;AAAA,MACV,SAAS;AAAA,KACV;AAAA,IACD,cAAc,IAAI,QAAQ;AAAA,IAC1B,SAAS,UAAU,OAAO;AAAA,IAC1B,SAAS,mBAAmB,OAAO,UAAU;AAAA,IAC7C,SAAS,YAAY,OAAO;AAAA,IAC5B,SAAS,UAAU,EAAE,SAAS,OAAO;AAAA,IACrC,SAAS,SAAS,eAAe;AAAA,MAC/B,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO,QAAQ;AAAA,MACrB,OAAO,OAAO,SAAS;AAAA,MACvB,QAAQ,OAAO,UAAU;AAAA,IAC3B,CAAC;AAAA,IAGD,eAAe,MAAM;AAAA,MACnB,SAAS,OAAO;AAAA,KACjB;AAAA,IACD,OAAO;AAAA;AAAA,EAGT,MAAM,GAAS;AAAA,IACb,IAAI,KAAK;AAAA,MAAU;AAAA,IACnB,KAAK,WAAW;AAAA,IAChB,MAAM,QAAQ,KAAK;AAAA,IACnB,OAAO,SAAS;AAAA,IAChB,MAAM,SAAS,UAAU,YAAY,KAAK,UAAU,KAAK,KAAK,SAAS,WAAW,MAAM;AAAA,IACxF,MAAM,UAAU,OAAO,cAAc,aAAa,OAAO,aAAa,YAClE,KAAK,UAAU,MAAM,IACrB,iBAAiB,EAAE,QAAQ,QAAQ,KAAK,KAAK,UAAU,CAAC;AAAA,IAC5D,IAAI,UAAU;AAAA,MAAW,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,IACtD,QAAQ,KAAK,KAAK,QAAQ,SAAS,KAAK,QAAQ,MAAM;AAAA;AAAA,EAG/C,IAAoC,CAC3C,aACA,YAC8B;AAAA,IAG9B,KAAK,OAAO;AAAA,IACZ,OAAO,MAAM,KAAK,aAAa,UAAU;AAAA;AAAA,EAW3C,WAAW,CAAC,QAAyD;AAAA,IACnE,QAAQ,WAAW;AAAA,IACnB,MAAM,QAAQ,iBAAiB,EAAE,QAAQ,KAAK,QAAQ,CAAC;AAAA,IACvD,IAAI,UAAU;AAAA,MAAW,OAAO;AAAA,IAChC,IACE,KAAK,QAAQ,iBAAiB,OAAO,gBACrC,KAAK,QAAQ,aAAa,OAAO,YACjC,CAAC,WAAW,KAAK,QAAQ,SAAS,YAAY,CAAC,GAAG,OAAO,SAAS,YAAY,CAAC,CAAC;AAAA,MAChF,OAAO,IAAI,iBAAgB,EAAE,QAAQ,cAAc,CAAC;AAAA,IACtD;AAAA;AAAA,EAIF,OAAO,CAAC,QAAmC;AAAA,IACzC,IAAI,KAAK;AAAA,MAAU;AAAA,IACnB,KAAK,WAAW;AAAA,IAGhB,KAAK,QAAQ,OAAO,EAAE,SAAS,WAAW,OAAO,WAAW,OAAO,OAAO,OAAO,CAAC;AAAA,IAClF,KAAK,QAAQ,OAAO,OAAO,MAAM;AAAA,IACjC,MAAM,KAAK,WAAW,MAAM,EAAE;AAAA;AAAA,EAGhC,MAAM,GAAqB;AAAA,IACzB,IAAI,KAAK,UAAU;AAAA,MACjB,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,IACA,KAAK,WAAW;AAAA,IAChB,MAAM,QAAQ,KAAK;AAAA,IACnB,OAAO;AAAA,MACL,OAAO,CAAC,WAAqC;AAAA,QAE3C,SAAS,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,aAAa,KAAK,QAAQ,aAAa,SAAS,KAAK,QAAQ,QAAQ;AAAA,QACpH,IAAI,KAAK,QAAQ,gBAAgB;AAAA,UAAM,SAAS,KAAK,QAAQ,aAAa,KAAK;AAAA,QAG/E,IAAI,UAAU,aAAa,OAAO,cAAc,WAAW;AAAA,UACzD,MAAM,SAAS,EAAE,mBAAmB,OAAO,UAAU,GAAG,CAAC;AAAA,QAC3D;AAAA,QACA,OAAO,SAAS;AAAA,QAChB,MAAM,UAAU,iBAAiB;AAAA,UAC/B,QAAQ,UAAU,YAAY,SAAS,KAAK,QAAQ,WAAW,MAAM;AAAA,UACrE,KAAK,KAAK;AAAA,QACZ,CAAC;AAAA,QACD,IAAI,UAAU;AAAA,UAAW,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,QAGtD,QAAQ,KAAK,KAAK,QAAQ,SAAS,KAAK,QAAQ,MAAM;AAAA,QACtD,MAAM,KAAK,WAAW,MAAM,EAAE;AAAA,QAC9B,OAAO;AAAA;AAAA,MAET,OAAO,CAAC,WAA0B;AAAA,QAEhC,OAAO,OAAO,EAAE,SAAS,WAAW,OAAO,WAAW,OAAO,OAAO,CAAC;AAAA,QACrE,KAAK,QAAQ,OAAO,MAAM;AAAA,QAC1B,MAAM,KAAK,WAAW,MAAM,EAAE;AAAA;AAAA,IAElC;AAAA;AAEJ;AAOA,IAAM,kBAAuC;AAAA,EAC3C,aAAa,GAAG,YAAkB;AAAA,IAChC,IAAI,eAAe,KAAK;AAAA,MAAG,qBAAqB,EAAE,MAAM,CAAC;AAAA;AAAA,EAE3D,UAAU,CAAC,WACT,eAAe,OAAO,KAAK,IAAI,mBAAmB,EAAE,OAAO,OAAO,MAAM,CAAC,IAAI;AAAA,EAC/E,QAAQ,CAAC,WAAsD;AAAA,IAC7D,IAAI,eAAe,OAAO,KAAK;AAAA,MAAG,mBAAmB,EAAE,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,CAAC;AAAA;AAEvG;AAGA,eAAe,OAAO,CAAC,QAAmE;AAAA,EACxF,QAAQ,QAAQ,SAAS;AAAA,EACzB,MAAM,gBAAgB,YAAY,EAAE,OAAO,CAAC;AAAA,EAC5C,MAAM,WAAW,sBAAsB;AAAA,IACrC,SAAS,OAAO;AAAA,IAChB,WAAW,KAAK;AAAA,IAChB,OAAO,OAAO;AAAA,EAChB,CAAC;AAAA,EACD,MAAM,OAAO,MAAM,aAA0B;AAAA,IAC3C;AAAA,IACA,MAAM;AAAA,IACN,OAAO,KAAK,MAAM;AAAA,IAClB,QAAQ,KAAK;AAAA,IACb,MAAM,SAAS;AAAA,IACf,QAAQ,SAAS;AAAA,OACb,kBAAkB,YAAY,CAAC,IAAI,EAAE,UAAU,YAAY,IAAI,IAAI,cAAc;AAAA,IACrF,UAAU,CAAC,UAA+B,MAAM;AAAA,IAChD,KAAK,MACH,OAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,SAAS;AAAA,MACf,QAAQ,WAAW,EAAE,SAAS,OAAO,SAAS,QAAQ,SAAS,OAAO,CAAC;AAAA,IACzE,CAAC;AAAA,EACL,CAAC;AAAA,EACD,OAAO,gBAAgB,EAAE,SAAS,OAAO,QAAQ,MAAM,OAAO,KAAK,OAAO,MAAM,MAAM,OAAO,QAAQ,KAAK,CAAC;AAAA;AAe7G,eAAe,gBAAgB,CAAC,QAIP;AAAA,EACvB,QAAQ,SAAS,MAAM,WAAW;AAAA,EAClC,MAAM,QAAQ,QAAQ;AAAA,EACtB,IAAI,UAAU;AAAA,IAAW,OAAO,MAAM,MAAM,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,EAC1E,OAAO,MAAM,QAAQ,cAAc,EAAE,MAAM,OAAO,CAAC;AAAA;AAIrD,eAAe,WAAW,CAAC,QAA8D;AAAA,EACvF,QAAQ,QAAQ,SAAS;AAAA,EAGzB,IAAI,KAAK,UAAU,aAAa,KAAK,MAAM,SAAS,GAAG;AAAA,IACrD,MAAM,QAAQ,KAAK;AAAA,IACnB,OAAO,MAAM,OAAO,QAAQ,YAAY,OAAO,cAAc;AAAA,MAC3D,MAAM,WAAmB,KAAK,QAAQ,SAAS,WAAW,eAAe,KAAK;AAAA,MAC9E,IAAI,QAAQ;AAAA,MACZ,WAAW,aAAa,OAAO;AAAA,QAC7B,SAAS,MAAM,YAAY,EAAE,QAAQ,UAAU,MAAM,KAAK,MAAM,WAAW,OAAO,UAAU,EAAE,CAAC;AAAA,MACjG;AAAA,MACA,OAAO;AAAA,KACR;AAAA,EACH;AAAA,EACA,MAAM,gBAAgB,YAAY,EAAE,OAAO,CAAC;AAAA,EAC5C,MAAM,WAAW,sBAAsB;AAAA,IACrC,SAAS,OAAO;AAAA,IAChB,WAAW,KAAK;AAAA,IAChB,OAAO,OAAO;AAAA,EAChB,CAAC;AAAA,EACD,MAAM,SAAS,MAAM,aAA0B;AAAA,IAC7C;AAAA,IACA,MAAM;AAAA,IACN,OAAO,KAAK,MAAM;AAAA,IAClB,QAAQ,KAAK;AAAA,IACb,MAAM,SAAS;AAAA,IACf,QAAQ,SAAS;AAAA,OACb,kBAAkB,YAAY,CAAC,IAAI,EAAE,UAAU,YAAY,IAAI,IAAI,cAAc;AAAA,IACrF,UAAU,CAAC,UAA+B,MAAM;AAAA,IAChD,KAAK,MACH,iBAAiB;AAAA,MACf,SAAS,OAAO;AAAA,MAChB,MAAM,SAAS;AAAA,MACf,QAAQ,WAAW,EAAE,SAAS,OAAO,SAAS,QAAQ,SAAS,OAAO,CAAC;AAAA,IACzE,CAAC;AAAA,EACL,CAAC;AAAA,EACD,OAAO,OAAO;AAAA;AAIhB,IAAM,mBAA2C,OAAO,OAAO,CAAC,YAAY,aAAa,YAAY,CAAC;AAEtG,SAAS,IAAI,CAAC,QAKA;AAAA,EACZ,QAAQ,QAAQ,OAAO,WAAW;AAAA,EAClC,MAAM,OAAO,OAAO,gBAAgB,OAChC,kBAAkB,EAAE,OAAO,OAAO,MAAM,MAAM,aAAa,SAAS,MAAM,gBAAgB,EAAE,MAAM,GAAG,SAAS,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC,IAC1I,OAAO;AAAA,EACX,IAAI,SAAS,aAAa,KAAK,YAAY,WAAW;AAAA,IAIpD,IAAI,OAAO,kBAAkB,MAAM;AAAA,MACjC,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,WAAW,SAAS;AAAA,QAC7B,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,IAKA,IAAI,CAAC,iBAAiB,SAAS,MAAM,GAAG;AAAA,MACtC,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SACE,WAAW,SAAS,yCAAoC,iBAAiB,KAAK,IAAI,oBAClF;AAAA,QACF,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO,WAAW;AAAA,IAChB,MAAM,OAAO;AAAA,IACb,SAAS,OAAO;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,OACI,OAAO,QAAQ,qBAAqB,YACpC,CAAC,IACD,EAAE,yBAAyB,OAAO,QAAQ,iBAAiB;AAAA,IAC/D,eAAe;AAAA,SACT,OAAO,QAAQ,qBAAqB,YACpC,CAAC,IACD,EAAE,kBAAkB,OAAO,QAAQ,iBAAiB;AAAA,SACpD,OAAO,QAAQ,sBAAsB,YACrC,CAAC,IACD,EAAE,mBAAmB,OAAO,QAAQ,kBAAkB;AAAA,IAC5D;AAAA,EACF,CAAC;AAAA;AAOH,IAAM,mBAA4B,OAAO,OAAO,EAAE,UAAU,UAAU,MAAM,OAAO,CAAC;AAUpF,SAAS,mBAAmB,CAAC,QAA0D;AAAA,EACrF,MAAM,QAAQ,OAAO,OAAO,KAAK,KAAK;AAAA,EACtC,IAAI,UAAU,QAAQ,UAAU,KAAK,UAAU,OAAO,UAAU,UAAU,UAAU;AAAA,IAAK,OAAO;AAAA,EAChG,IAAI,UAAU,SAAS,UAAU,KAAK,UAAU,OAAO,UAAU,WAAW,UAAU;AAAA,IAAK,OAAO;AAAA,EAClG,MAAM,IAAI,YAAU;AAAA,IAClB,MAAM;AAAA,IACN,SAAS,aAAa,OAAO,gCAAgC,4CAA4C,OAAO,KAAK;AAAA,IACrH,MAAM,EAAE,QAAQ,OAAO,QAAQ,OAAO,OAAO,KAAK,EAAE;AAAA,EACtD,CAAC;AAAA;AAIH,eAAe,OAAO,CAAC,QAOO;AAAA,EAC5B,QAAQ,QAAQ,QAAQ,UAAU;AAAA,EAClC,MAAM,YAAY,OAAO;AAAA,EACzB,MAAM,WAAW,KAAK;AAAA,IACpB;AAAA,IACA,OAAO,OAAO,MAAM;AAAA,IACpB,QAAQ;AAAA,IACR,MAAM,cAAc,OAAO,EAAE,MAAM,IAAI,EAAE,OAAO,QAAQ,UAAU;AAAA,EACpE,CAAC;AAAA,EACD,MAAM,SACJ,OAAO,SAAS,OACZ,KAAK,UAAU,WAAW,KAAM,SAAS,WAA+B,SAAS,iBAAiB,EAAE,IACpG;AAAA,EACN,MAAM,OAAO,MAAM,QAAQ,EAAE,QAAQ,MAAM,OAAO,CAAC;AAAA,EACnD,OAAO,KAAK,MAAM;AAAA;AAIpB,SAAS,UAAU,CACjB,GACA,GACS;AAAA,EACT,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC3B,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC3B,IAAI,MAAM,WAAW,MAAM;AAAA,IAAQ,OAAO;AAAA,EAC1C,WAAW,OAAO,OAAO;AAAA,IACvB,MAAM,OAAO,EAAE;AAAA,IACf,MAAM,QAAQ,EAAE;AAAA,IAChB,IAAI,SAAS;AAAA,MAAO;AAAA,IACpB,IAAI,gBAAgB,QAAQ,iBAAiB,QAAQ,KAAK,QAAQ,MAAM,MAAM,QAAQ;AAAA,MAAG;AAAA,IACzF,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAWT,eAAe,gBAAgB,CAAC,QAIK;AAAA,EACnC,QAAQ,QAAQ,WAAW;AAAA,EAC3B,IAAI,OAAO,iBAAiB;AAAA,IAAM,OAAO,KAAK,OAAO,aAAa;AAAA,EAElE,MAAM,WAAW,OAAO,MAAM,WAAW;AAAA,EACzC,MAAM,kBAAkB,OAAO,QAAQ;AAAA,EACvC,IAAI,oBAAoB,QAAQ,OAAO,MAAM,WAAW,WAAW,KAAK,aAAa,WAAW;AAAA,IAC9F,MAAM,uBAAsB;AAAA,MAC1B,SAAS,OAAO,QAAQ;AAAA,MACxB,SAAS,GAAG,OAAO,aAAa,OAAO,MAAM;AAAA,MAC7C,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EACA,MAAM,WAAW,OAAO;AAAA,EAGxB,IAAK,OAAO,aAAa,YAAY,OAAO,cAAc,QAAQ,KAC7D,OAAO,aAAa,YAAY,UAAU,KAAK,QAAQ,GAAI;AAAA,IAC9D,OAAO,GAAG,SAAS,OAAO,YAAY,EAAE,SAAS,OAAO,QAAQ,MAAM,OAAO,UAAU,OAAO,SAAS,CAAC,EAAE;AAAA,EAC5G;AAAA,EACA,MAAM,SAAS,MAAM,aAA0B;AAAA,IAC7C;AAAA,IACA,MAAM;AAAA,IACN,OAAO,OAAO,MAAM;AAAA,IACpB,QAAQ,OAAO;AAAA,IACf,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,UAAU,CAAC,UAA+B,MAAM,KAAK;AAAA,IACrD,KAAK,MAA4B,OAAO,QAAQ,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAAA,EACzF,CAAC;AAAA,EACD,MAAM,KAAK,OAAO,KAAK,IAAI;AAAA,EAC3B,IAAI,OAAO,aAAa,OAAO,MAAM;AAAA,IACnC,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,6CAA6C,OAAO,MAAM;AAAA,MACnE,MAAM,EAAE,OAAO,OAAO,MAAM,KAAK;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EACA,OAAO,GAAG,SAAS,OAAO,GAAG;AAAA;AAW/B,eAAe,iBAAiB,CAAC,QAUH;AAAA,EAC5B,QAAQ,QAAQ,QAAQ,oBAAoB;AAAA,EAI5C,MAAM,YAAY,OAAO;AAAA,EAGzB,MAAM,YAAY,eAAe,YAAY,UAAU,YAAY;AAAA,EACnE,IAAI,cAAc,aAAa,UAAU,SAAS,KAAK,OAAO,QAAQ,aAAa,WAAW;AAAA,IAC5F,MAAM,OAAO,MAAM,QAAQ,EAAE,QAAQ,MAAM,OAAO,CAAC;AAAA,IACnD,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,QAAQ,WAAW;AAAA,MACrB,IAAI,OAAO,kBAAkB;AAAA,QAAM,OAAO;AAAA,MAC1C,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,IACpE;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,WAAW,sBAAsB,EAAE,SAAS,OAAO,SAAS,WAAW,OAAO,OAAO,YAAY,CAAC;AAAA,EAIxG,MAAM,eAAe,OAAO,WAAyC;AAAA,IACnE,MAAM,SAAS,MAAM,aAA0B;AAAA,MAC7C,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO,OAAO,MAAM;AAAA,MACpB,QAAQ,OAAO;AAAA,MACf,MAAM,SAAS;AAAA,MACf,QAAQ,SAAS;AAAA,MACjB,UAAU,CAAC,UAA+B,MAAM;AAAA,MAChD,KAAK,MACH,iBAAiB;AAAA,QACf,SAAS,OAAO;AAAA,QAChB,MAAM,SAAS;AAAA,QACf,QAAQ,WAAW,EAAE,SAAS,OAAO,SAAS,QAAQ,SAAS,OAAO,CAAC;AAAA,MACzE,CAAC;AAAA,IACL,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,EAGT,IAAI,iBAAiB;AAAA,IAKnB,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,UAAU;AAAA,MAAM,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,IACtF,OAAO,MAAM,OAAO,QAAQ,YAAY,OAAO,cAAc;AAAA,MAC3D,MAAM,WAAmB,KAAK,QAAQ,SAAS,WAAW,eAAe,KAAK;AAAA,MAC9E,MAAM,SAAS,MAAM,QAAQ,EAAE,QAAQ,UAAU,QAAQ,OAAO,MAAM,KAAK,CAAC;AAAA,MAC5E,IAAI,WAAW;AAAA,QAAM,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,MACvF,QAAQ,cAAc,aAAa,MAAM,aAAa,QAAQ;AAAA,MAC9D,IAAI,aAAa;AAAA,QAAG,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,MACtF,OAAO;AAAA,KACR;AAAA,EACH;AAAA,EAEA,IAAI,OAAO,iBAAiB,MAAM;AAAA,IAChC,MAAM,aAAa,OAAO;AAAA,IAE1B,IAAI,OAAO,WAAW,UAAU;AAAA,MAY9B,OAAO,MAAM,OAAO,QAAQ,YAAY,OAAO,cAAc;AAAA,QAC3D,MAAM,WAAmB,KAAK,QAAQ,SAAS,WAAW,eAAe,KAAK;AAAA,QAC9E,MAAM,aAAa,QAAQ;AAAA,QAC3B,MAAM,UAAU,MAAM,QAAQ,EAAE,QAAQ,UAAU,QAAQ,OAAO,WAAW,CAAC;AAAA,QAC7E,IAAI,YAAY;AAAA,UAAM,OAAO;AAAA,QAC7B,MAAM,YAAY,OAAO;AAAA,QACzB,IAAI,cAAc,QAAQ,CAAC,WAAW,WAAW,UAAU,GAAG;AAAA,UAC5D,MAAM,SAAS,MAAM,QAAQ,EAAE,QAAQ,UAAU,QAAQ,OAAO,UAAU,CAAC;AAAA,UAC3E,IAAI,WAAW;AAAA,YAAM,OAAO;AAAA,QAC9B;AAAA,QACA,MAAM,kBAAkB,OAAO;AAAA,QAC/B,MAAM,aACJ,gBAAgB,SAAS,YACzB,gBAAgB,eAAe,aAC/B,EAAE,eAAe,gBAAgB,eACjC,gBAAgB,WAAW,uBAAuB;AAAA,QACpD,IAAI,CAAC;AAAA,UAAY,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,QACnF,MAAM,QAAQ,MAAM,iBAAiB,EAAE,QAAQ,UAAU,QAAQ,KAAK,QAAQ,cAAc,KAAK,EAAE,CAAC;AAAA,QACpG,MAAM,QAAQ,MAAM,QAAQ,EAAE,QAAQ,UAAU,QAAQ,MAAM,CAAC;AAAA,QAC/D,IAAI,UAAU;AAAA,UAAM,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,QACtF,OAAO;AAAA,OACR;AAAA,IACH;AAAA,IAEA,IAAI,OAAO,WAAW,UAAU;AAAA,MAK9B,OAAO,MAAM,OAAO,QAAQ,YAAY,OAAO,cAAc;AAAA,QAC3D,MAAM,WAAmB,KAAK,QAAQ,SAAS,WAAW,eAAe,KAAK;AAAA,QAC9E,QAAQ,cAAc,aAAa,MAAM,aAAa,QAAQ;AAAA,QAC9D,IAAI,aAAa;AAAA,UAAG,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,QACtF,MAAM,QAAQ,MAAM,QAAQ,EAAE,QAAQ,UAAU,QAAQ,OAAO,WAAW,CAAC;AAAA,QAC3E,IAAI,UAAU;AAAA,UAAM,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,QACtF,OAAO;AAAA,OACR;AAAA,IACH;AAAA,IAGA,QAAQ,cAAc,aAAa,MAAM,aAAa,MAAM;AAAA,IAC5D,IAAI,aAAa,KAAK,OAAO,kBAAkB;AAAA,MAAM,OAAO;AAAA,IAC5D,MAAM,QAAQ,MAAM,QAAQ,EAAE,QAAQ,QAAQ,OAAO,WAAW,CAAC;AAAA,IACjE,IAAI,UAAU;AAAA,MAAM,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,IACtF,OAAO;AAAA,EACT;AAAA,EAKA,OAAO,MAAM,OAAO,QAAQ,YAAY,OAAO,cAAc;AAAA,IAC3D,MAAM,WAAmB,KAAK,QAAQ,SAAS,WAAW,eAAe,KAAK;AAAA,IAC9E,QAAQ,cAAc,UAAU,aAAa,MAAM,aAAa,QAAQ;AAAA,IACxE,IAAI,aAAa,KAAK,OAAO,kBAAkB;AAAA,MAAM,OAAO;AAAA,IAC5D,MAAM,QAAQ,MAAM,iBAAiB,EAAE,QAAQ,UAAU,QAAQ,SAAS,CAAC;AAAA,IAC3E,MAAM,QAAQ,MAAM,QAAQ,EAAE,QAAQ,UAAU,QAAQ,MAAM,CAAC;AAAA,IAC/D,IAAI,UAAU;AAAA,MAAM,MAAM,UAAS,EAAE,OAAO,OAAO,MAAM,MAAM,QAAQ,OAAO,OAAO,CAAC;AAAA,IACtF,OAAO;AAAA,GACR;AAAA;AAIH,SAAS,UAAU,CAAC,QAA6E;AAAA,EAC/F,IAAI,OAAO,QAAQ;AAAA,IAAM,MAAM,UAAS,EAAE,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,CAAC;AAAA,EACtF,OAAO,OAAO;AAAA;AAkBhB,eAAe,iBAAiB,CAAC,QAIV;AAAA,EACrB,QAAQ,QAAQ,OAAO,SAAS;AAAA,EAChC,MAAM,cAAyB,CAAC;AAAA,EAChC,IAAI,KAAK,WAAW;AAAA,IAAW,YAAY,SAAS,KAAK;AAAA,EACzD,IAAI,KAAK,SAAS;AAAA,IAAW,YAAY,OAAO,KAAK;AAAA,EACrD,IAAI,KAAK,YAAY;AAAA,IAAW,YAAY,UAAU,KAAK;AAAA,EAE3D,MAAM,cAAc,KAAK,EAAE,QAAQ,OAAO,MAAM,MAAM,QAAQ,cAAc,MAAM,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC;AAAA,EACzG,MAAM,YAAuB;AAAA,OACxB;AAAA,IACH,WAAW,KAAM,YAAY,WAA+B,SAAS,iBAAiB;AAAA,EACxF;AAAA,EACA,MAAM,eAAe,KAAK;AAAA,IACxB;AAAA,IACA,OAAO,MAAM;AAAA,IACb,QAAQ;AAAA,IACR,MAAM,KAAK,aAAa,MAAM,KAAK,OAAO;AAAA,EAC5C,CAAC;AAAA,EACD,MAAM,eAAe,KAAK;AAAA,IACxB;AAAA,IACA,OAAO,MAAM;AAAA,IACb,QAAQ;AAAA,IACR,MAAM,KAAK,aAAa,OAAO,KAAK,OAAO,MAAM,KAAK,OAAO;AAAA,EAC/D,CAAC;AAAA,EAED,OAAO,MAAM,OAAO,QAAQ,YAAY,OAAO,cAAc;AAAA,IAC3D,MAAM,WAAmB,KAAK,QAAQ,SAAS,WAAW,eAAe,KAAK;AAAA,IAC9E,MAAM,YAAY,MAAM,QAAQ,EAAE,QAAQ,UAAU,MAAM,UAAU,CAAC,GAAG;AAAA,IACxE,MAAM,SAAS,aAAa,YAAY,eAAe;AAAA,IACvD,OAAO,WAAW;AAAA,MAChB,KAAK,MAAM,kBAAkB,EAAE,QAAQ,UAAU,QAAQ,iBAAiB,MAAM,CAAC;AAAA,MACjF,OAAO,MAAM;AAAA,MACb,QAAQ;AAAA,IACV,CAAC;AAAA,GACF;AAAA;AAKH,SAAS,gBAAgB,CAAC,QAA8C;AAAA,EACtE,QAAQ,WAAW;AAAA,EACnB,OAAO,SAAS,WAAW,OAAO,aAAa;AAAA,IAC7C,IAAI,OAAO,gBAAgB,QAAQ,oBAAoB,SAAS;AAAA,MAAG,MAAM,gBAAgB,EAAE,MAAM,GAAG,SAAS,UAAU,QAAQ,MAAM,CAAC;AAAA,IACtI,MAAM,WAAW,sBAAsB,EAAE,SAAS,OAAO,SAAS,WAAW,OAAO,OAAO,YAAY,CAAC;AAAA,IACxG,OAAO,MAAM,aAA0B;AAAA,MACrC;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,MAAM,SAAS;AAAA,MACf,QAAQ,SAAS;AAAA,MACjB,UAAU,CAAC,UAA+B,MAAM;AAAA,MAChD,KAAK,MACH,OAAO,QAAQ,QAAQ;AAAA,QACrB,MAAM,SAAS;AAAA,QACf,QAAQ,WAAW,EAAE,SAAS,OAAO,SAAS,QAAQ,SAAS,OAAO,CAAC;AAAA,MACzE,CAAC;AAAA,IACL,CAAC;AAAA;AAAA;AAmBL,SAAS,mBAAmB,CAAC,QAAoC;AAAA,EAC/D,QAAQ,WAAW;AAAA,EACnB,IAAI,OAAO,kBAAkB;AAAA,IAAM,OAAO;AAAA,EAC1C,OAAO,OAAO,QAAQ,iBAAiB,eAAe;AAAA;AAIxD,eAAe,YAAY,CAAC,QAKH;AAAA,EACvB,QAAQ,QAAQ,OAAO,OAAO,SAAS;AAAA,EACvC,IAAI,MAAM,cAAc,QAAQ,KAAK,SAAS,GAAG;AAAA,IAC/C,MAAM,UAAU,iBAAiB,EAAE,OAAO,CAAC;AAAA,IAC3C,MAAM,cAAc,oBAAoB,EAAE,OAAO,CAAC;AAAA,IAClD,IAAI,MAAM,qBAAqB,QAAQ;AAAA,MACrC,MAAM,uBAAuB;AAAA,QAC3B,SAAS,OAAO;AAAA,QAChB,MAAM,OAAO;AAAA,QACb;AAAA,QACA;AAAA,QACA,WAAW,MAAM;AAAA,QACjB;AAAA,QACA,MAAM,OAAO,QAAQ;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IACH,EAAO;AAAA,MACL,MAAM,gBAAgB;AAAA,QACpB,SAAS,OAAO;AAAA,QAChB,MAAM,OAAO;AAAA,QACb;AAAA,QACA;AAAA,QACA,WAAW,MAAM;AAAA,QACjB;AAAA,QACA,MAAM,OAAO,QAAQ;AAAA,QACrB;AAAA,MACF,CAAC;AAAA;AAAA,EAEL;AAAA,EAGA,IAAI,MAAM,aAAa,QAAQ,KAAK,SAAS,GAAG;AAAA,IAC9C,oBAAoB,EAAE,OAAO,MAAM,OAAO,MAAM,SAAS,CAAC;AAAA,EAC5D;AAAA,EACA,IAAI,MAAM,iBAAiB;AAAA,IAAM,OAAO;AAAA,EACxC,OAAO,KAAK,IAAI,CAAC,QAAQ,QAAQ,EAAE,KAAK,QAAQ,MAAM,aAAa,CAAC,CAAC;AAAA;AAGvE,eAAe,WAAW,CAAC,QAKJ;AAAA,EACrB,QAAQ,QAAQ,OAAO,OAAO,QAAQ;AAAA,EACtC,MAAM,OAAO,MAAM,aAAa,EAAE,QAAQ,OAAO,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC;AAAA,EACrE,OAAO,KAAK;AAAA;AAKd,SAAS,UAAU,CAAC,QAA6C;AAAA,EAC/D,QAAQ,WAAW;AAAA,EACnB,OAAO;AAAA,IACL,QAAQ,SAAS,OAAO,QAAQ,WAC9B,WAAW;AAAA,MACT,KAAK,MAAM,kBAAkB;AAAA,QAC3B;AAAA,QACA,QAAQ,KAAK,EAAE,QAAQ,OAAO,QAAQ,KAAK,CAAC;AAAA,QAC5C,iBAAiB,WAAW;AAAA,MAC9B,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,MAAM,SAAS,OAAO,QAAQ,WAAW,MAAM,QAAQ,EAAE,QAAQ,MAAM,KAAK,EAAE,QAAQ,OAAO,QAAQ,KAAK,CAAC,EAAE,CAAC;AAAA,IAC9G,UAAU,SAAS,OAAO,QAAQ,WAChC,MAAM,YAAY,EAAE,QAAQ,MAAM,KAAK,EAAE,QAAQ,OAAO,QAAQ,KAAK,CAAC,EAAE,CAAC;AAAA,IAC3E,WAAW,SAAS,WAAW,OAAO,aAAa;AAAA,MACjD,MAAM,WAAW,sBAAsB;AAAA,QACrC,SAAS,OAAO;AAAA,QAChB;AAAA,QACA,OAAO,OAAO;AAAA,MAChB,CAAC;AAAA,MACD,OAAO,MAAM,aAA0B;AAAA,QACrC;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,MAAM,SAAS;AAAA,QACf,QAAQ,SAAS;AAAA,QACjB,UAAU,CAAC,UAA+B,MAAM;AAAA,QAChD,KAAK,MACH,OAAO,QAAQ,QAAQ;AAAA,UACrB,MAAM,SAAS;AAAA,UACf,QAAQ,WAAW,EAAE,SAAS,OAAO,SAAS,QAAQ,SAAS,OAAO,CAAC;AAAA,QACzE,CAAC;AAAA,MACL,CAAC;AAAA;AAAA,EAEL;AAAA;AAGF,SAAS,gBAAgB,CAAC,QAA0C;AAAA,EAClE,QAAQ,WAAW;AAAA,EACnB,OAAO;AAAA,IACL,MAAM,OAAO;AAAA,IACb,SAAS,OAAO;AAAA,IAChB,KAAK,WAAW,EAAE,OAAO,CAAC;AAAA,IAC1B,eAAe,CAAI,OACjB,OAAO,QAAQ,YAAY,CAAC,cAAc,GAAG,WAAW,EAAE,QAAQ,KAAK,QAAQ,SAAS,WAAW,eAAe,KAAK,EAAE,CAAC,CAAC,CAAC;AAAA,EAChI;AAAA;AAaF,SAAS,iBAAgB,CAAC,QAAmE;AAAA,EAC3F,QAAQ,UAAU,UAAU;AAAA,EAC5B,MAAM,SACJ,CAAC,WACD,YAA4B;AAAA,IAC1B,MAAM,eAAe,EAAE,OAAO,OAAO,CAAC;AAAA;AAAA,EAE1C,OAAO;AAAA,OACF;AAAA,IACH,QAAQ,OAAO,QAAQ;AAAA,IACvB,YAAY,OAAO,YAAY;AAAA,IAC/B,qBAAqB,OAAO,qBAAqB;AAAA,IACjD,QAAQ,OAAO,QAAQ;AAAA,IACvB,YAAY,OAAO,YAAY;AAAA,IAC/B,qBAAqB,OAAO,qBAAqB;AAAA,IACjD,QAAQ,OAAO,QAAQ;AAAA,IACvB,YAAY,OAAO,YAAY;AAAA,IAC/B,QAAQ,OAAO,QAAQ;AAAA,IACvB,YAAY,OAAO,YAAY;AAAA,EACjC;AAAA;AAQF,SAAS,sBAAsB,CAAC,OAAyB;AAAA,EACvD,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IAAM,OAAO;AAAA,EACxD,IAAI,MAAM,QAAQ,KAAK,KAAK,iBAAiB,QAAQ,iBAAiB;AAAA,IAAY,OAAO;AAAA,EACzF,OAAO,OAAO,OAAO,KAAK,EAAE,MAAM,CAAC,UAAU,UAAU,SAAS;AAAA;AAGlE,SAAS,cAAc,CAAC,QAA0D;AAAA,EAChF,QAAQ,QAAQ,UAAU;AAAA,EAE1B,MAAM,UAAU,CAAC,WAAmC;AAAA,IAClD,WAAW,MAAM;AAAA,IACjB,cAAc,MAAM;AAAA,IACpB,kBAAkB,MAAM;AAAA,IACxB,UAAU,MAAM;AAAA,EAClB;AAAA,EAQA,MAAM,WAAW,OAAO,QAAgB,SAA2C;AAAA,IACjF,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,YAAY,KAAK,CAAC;AAAA,IACtE,MAAM,OAAO,UAAU,EAAE,MAAM,OAAO,MAAM,MAAM,QAAQ,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC,EAAE,CAAC;AAAA,IAC5F,OAAO,MAAM,aAAa,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,KAAK,CAAC;AAAA;AAAA,EAG/F,MAAM,YAAY,OAAO,QAAgB,SAAgD;AAAA,IACvF,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,aAAa,KAAK,CAAC;AAAA,IACvE,MAAM,OAAO,UAAU,EAAE,MAAM,OAAO,MAAM,MAAM,QAAQ,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC,EAAE,CAAC;AAAA,IAC5F,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,QAAQ;AAAA,MAAW,OAAO;AAAA,IAC9B,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,IAAI,CAAC;AAAA;AAAA,EAG7F,MAAM,aAAa,OAAO,QAAgB,SAA+C;AAAA,IACvF,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,IACxE,MAAM,OAAO,MAAM,QAAQ,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAAA,IAC1D,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,QAAQ;AAAA,MAAW,OAAO;AAAA,IAC9B,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,IAAI,CAAC;AAAA;AAAA,EAG7F,MAAM,SAAS,OAAO,QAAgB,SAA+C;AAAA,IACnF,MAAM,YAAY,aAAa,EAAE,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,IAG3D,MAAM,WAAW,KAAK,eAAe;AAAA,IACrC,IAAI,gBAAgB,EAAE,OAAO,WAAW,MAAM,KAAK,KAAK,CAAC,GAAG;AAAA,MAC1D,IAAI,UAAU;AAAA,QACZ,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,mDAAmD,UAAU;AAAA,UACtE,MAAM,EAAE,OAAO,UAAU,KAAK;AAAA,QAChC,CAAC;AAAA,MACH;AAAA,MACA,MAAM,QAAQ,mBAAmB,EAAE,MAAM,OAAO,MAAM,OAAO,WAAW,QAAQ,UAAU,KAAK,CAAC;AAAA,MAChG,MAAM,MAAM,MAAM,iBAAiB;AAAA,QACjC,KAAK,iBAAiB,EAAE,QAAQ,OAAO,CAAC;AAAA,QACxC,OAAO;AAAA,QACP,MAAM,KAAK;AAAA,MACb,CAAC;AAAA,MACD,OAAO,MAAM,YAAY;AAAA,QACvB,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO,KAAK,OAAO,kBAAkB,QAAQ;AAAA,QAC7C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,UAAU,KAAK,CAAC;AAAA,IACpE,MAAM,MAAM,MAAM,kBAAkB;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,iBAAiB;AAAA,SACb,WAAW,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,IAC5C,CAAC;AAAA,IACD,IAAI,QAAQ;AAAA,MAAM,OAAO;AAAA,IACzB,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,IAAI,CAAC;AAAA;AAAA,EAG7F,MAAM,SAAS,OAAO,QAAgB,SAAwC;AAAA,IAC5E,MAAM,YAAY,aAAa,EAAE,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,IAC3D,IAAI,gBAAgB,EAAE,OAAO,WAAW,MAAM,KAAK,KAAK,CAAC,GAAG;AAAA,MAC1D,MAAM,QAAQ,mBAAmB,EAAE,MAAM,OAAO,MAAM,OAAO,WAAW,QAAQ,UAAU,KAAK,CAAC;AAAA,MAChG,MAAM,MAAM,MAAM,iBAAiB;AAAA,QACjC,KAAK,iBAAiB,EAAE,QAAQ,OAAO,CAAC;AAAA,QACxC,OAAO;AAAA,QACP,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,MACb,CAAC;AAAA,MACD,OAAO,MAAM,YAAY;AAAA,QACvB,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO,KAAK,OAAO,kBAAkB,QAAQ;AAAA,QAC7C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,UAAU,KAAK,CAAC;AAAA,IACpE,MAAM,MAAM,WAAW;AAAA,MACrB,KAAK,MAAM,kBAAkB,EAAE,QAAQ,QAAQ,QAAQ,OAAO,iBAAiB,MAAM,CAAC;AAAA,MACtF,OAAO,MAAM,MAAM;AAAA,MACnB,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,IAAI,CAAC;AAAA;AAAA,EAG7F,MAAM,aAAa,OAAO,QAAgB,SAA0C;AAAA,IAGlF,IAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,KAAK,WAAW;AAAA,MAAG,OAAO,EAAE,OAAO,EAAE;AAAA,IAC1E,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,IACxE,OAAO,EAAE,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC,EAAE;AAAA;AAAA,EAUrE,MAAM,aAAa,OAAO,QAAgB,SAA+C;AAAA,IAEvF,IAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,KAAK,WAAW;AAAA,MAAG,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE;AAAA,IAC3F,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,IACxE,MAAM,WAAW,MAAM,YAAY,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAAA,IAClE,OAAO;AAAA,MACL,OAAO,MAAM,kBAAkB;AAAA,MAC/B,cAAc,yBAAyB,EAAE,SAAS,OAAO,QAAQ,CAAC,IAAI,WAAW;AAAA,IACnF;AAAA;AAAA,EAGF,MAAM,sBAAsB,OAAO,QAAgB,SAA0C;AAAA,IAE3F,IAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,KAAK,WAAW;AAAA,MAAG,OAAO,CAAC;AAAA,IAChE,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,uBAAuB,KAAK,CAAC;AAAA,IAIjF,MAAM,OACJ,MAAM,UAAU,aAAa,MAAM,MAAM,SAAS,IAC9C,MAAM,OAAO,QAAQ,YAAY,OAAO,cAAc;AAAA,MACpD,MAAM,WAAmB,KAAK,QAAQ,SAAS,UAAU;AAAA,MACzD,MAAM,YAAyB,CAAC;AAAA,MAChC,WAAW,aAAa,MAAM,OAAkC;AAAA,QAC9D,UAAU,KACR,GAAI,MAAM,QAAQ,EAAE,QAAQ,UAAU,MAAM,KAAK,OAAO,WAAW,OAAO,UAAU,EAAE,CAAC,CACzF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,KACR,IACD,MAAM,QAAQ,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAAA,IAInD,OAAO,MAAM,aAAa,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,KAAK,CAAC;AAAA;AAAA,EAG/F,MAAM,aAAa,OAAO,QAAgB,SAA0C;AAAA,IAGlF,IAAI,uBAAuB,KAAK,IAAI;AAAA,MAAG,OAAO,EAAE,OAAO,EAAE;AAAA,IACzD,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,IACxE,OAAO,EAAE,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC,EAAE;AAAA;AAAA,EAUrE,MAAM,sBAAsB,OAAO,QAAgB,SAA0C;AAAA,IAG3F,IAAI,uBAAuB,KAAK,IAAI;AAAA,MAAG,OAAO,CAAC;AAAA,IAC/C,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,uBAAuB,KAAK,CAAC;AAAA,IACjF,MAAM,OAAO,MAAM,QAAQ,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAAA,IAC1D,OAAO,MAAM,aAAa,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,KAAK,CAAC;AAAA;AAAA,EAG/F,MAAM,SAAS,OAAO,QAAgB,SAAwC;AAAA,IAC5E,MAAM,YAAY,aAAa,EAAE,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,IAC3D,IACE,gBAAgB,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,KACvD,gBAAgB,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,GACvD;AAAA,MACA,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,yDAAyD,UAAU;AAAA,QAC5E,MAAM,EAAE,OAAO,UAAU,KAAK;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IACA,IAAI,CAAC,0BAA0B,EAAE,OAAO,WAAW,KAAsC,CAAC,GAAG;AAAA,MAC3F,IAAI,KAAK,eAAe,WAAW;AAAA,QAIjC,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,iBAAiB,UAAU;AAAA,UACpC,MAAM,EAAE,OAAO,UAAU,KAAK;AAAA,QAChC,CAAC;AAAA,MACH;AAAA,MAIA,MAAM,QAAQ,mBAAmB;AAAA,QAC/B,MAAM,OAAO;AAAA,QACb,OAAO;AAAA,QACP,QAAQ;AAAA,QACR;AAAA,MACF,CAAC;AAAA,MACD,MAAM,MAAM,MAAM,kBAAkB,EAAE,QAAQ,QAAQ,OAAO,WAAW,KAAK,CAAC;AAAA,MAC9E,OAAO,MAAM,YAAY;AAAA,QACvB,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO,KAAK,OAAO,kBAAkB,QAAQ;AAAA,QAC7C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,UAAU,KAAK,CAAC;AAAA,IACpE,MAAM,MAAM,WAAW;AAAA,MACrB,KAAK,MAAM,kBAAkB,EAAE,QAAQ,QAAQ,QAAQ,OAAO,iBAAiB,MAAM,CAAC;AAAA,MACtF,OAAO,MAAM,MAAM;AAAA,MACnB,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,IAAI,CAAC;AAAA;AAAA,EAG7F,MAAM,YAAY,OAAO,QAAgB,SAAwC;AAAA,IAC/E,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,UAAU,KAAK,CAAC;AAAA,IACpE,MAAM,MAAM,WAAW;AAAA,MACrB,KAAK,MAAM,kBAAkB,EAAE,QAAQ,QAAQ,QAAQ,OAAO,iBAAiB,KAAK,CAAC;AAAA,MACrF,OAAO,MAAM,MAAM;AAAA,MACnB,QAAQ;AAAA,IACV,CAAC;AAAA,IAGD,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,OAAO,QAAQ,KAAK,GAAG,IAAI,CAAC;AAAA;AAAA,EAG7F,MAAM,aAAa,OAAO,QAAgB,SAA2C;AAAA,IACnF,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,cAAc,KAAK,CAAC;AAAA,IACxE,OAAO,EAAE,OAAO,MAAM,YAAY,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC,EAAE;AAAA;AAAA,EAGrE,MAAM,QAAQ,OAAO,QAAgB,SAA+D;AAAA,IAClG,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,SAAS,KAAK,CAAC;AAAA,IACnE,MAAM,WAAW,sBAAsB;AAAA,MACrC,SAAS,OAAO;AAAA,MAChB,WAAW,MAAM;AAAA,MACjB,OAAO,OAAO;AAAA,IAChB,CAAC;AAAA,IACD,MAAM,OAAO,MAAM,aAA0B;AAAA,MAC3C,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,MACR,MAAM,SAAS;AAAA,MACf,QAAQ,SAAS;AAAA,MACjB,UAAU,CAAC,UAA+B,MAAM;AAAA,MAChD,KAAK,MACH,OAAO,QAAQ,QAAQ;AAAA,QACrB,MAAM,SAAS;AAAA,QACf,QAAQ,WAAW,EAAE,SAAS,OAAO,SAAS,QAAQ,SAAS,OAAO,CAAC;AAAA,MACzE,CAAC;AAAA,IACL,CAAC;AAAA,IAED,IAAI,MAAM,kBAAkB,MAAM;AAAA,MAChC,MAAM,MAAM,KAAK,MAAM,CAAC;AAAA,MACxB,MAAM,MAA8B,CAAC;AAAA,MACrC,WAAW,aAAa,MAAM,cAAc,YAAY;AAAA,QACtD,IAAI,UAAU,SAAS,OAAO,IAAI,UAAU,UAAU,CAAC;AAAA,MACzD;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,MAAM,KAAK,KAAK,MAAM,cAAc;AAAA,IAC1C,OAAO,QAAQ,aAAa,QAAQ,OAAO,IAAI,OAAO,GAAG;AAAA;AAAA,EAG3D,MAAM,YAAY,OAAO,QAAgB,SAAwC;AAAA,IAC/E,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,aAAa,KAAK,CAAC;AAAA,IACvE,MAAM,OAAO,MAAM,QAAQ,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAAA,IAG1D,OAAO,mBAAmB;AAAA,MACxB,QAAQ;AAAA,MACR,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,KAAK,KAAK,MAAM,CAAC;AAAA,MACjB,MAAM,CAAC;AAAA,IACT,CAAC;AAAA;AAAA,EAGH,MAAM,UAAU,OAAO,QAAgB,SAA0C;AAAA,IAC/E,MAAM,QAAQ,KAAK,EAAE,QAAQ,QAAQ,OAAO,QAAQ,WAAW,KAAK,CAAC;AAAA,IACrE,MAAM,OAAO,MAAM,QAAQ,EAAE,QAAQ,QAAQ,MAAM,MAAM,CAAC;AAAA,IAC1D,MAAM,KAAK,MAAM;AAAA,IACjB,MAAM,OAAO,MAAM;AAAA,IACnB,OAAO,KAAK,IAAI,CAAC,QAAQ;AAAA,MACvB,MAAM,MAAiB,CAAC;AAAA,MACxB,WAAW,QAAQ;AAAA,QAAI,IAAI,QAAQ,IAAI;AAAA,MACvC,OAAO,mBAAmB,EAAE,QAAQ,QAAQ,OAAO,MAAM,OAAO,MAAM,KAAK,MAAM,IAAI,CAAC;AAAA,KACvF;AAAA;AAAA,EAOH,MAAM,OAAO,CAAI,QAAgB,QAC/B,mBAAsB,EAAE,QAAQ,KAAK,OAAO,OAAO,CAAC;AAAA,EAEtD,MAAM,WAA0B;AAAA,IAC9B,UAAU,CAAC,SAA2C,KAAK,YAAY,CAAC,WAAW,SAAS,QAAQ,IAAI,CAAC;AAAA,IACzG,WAAW,CAAC,SAAgD,KAAK,aAAa,CAAC,WAAW,UAAU,QAAQ,IAAI,CAAC;AAAA,IACjH,YAAY,CAAC,SAA+C,KAAK,cAAc,CAAC,WAAW,WAAW,QAAQ,IAAI,CAAC;AAAA,IAEnH,kBAAkB,CAAC,SACjB,KAAK,oBAAoB,OAAO,WAAW;AAAA,MACzC,MAAM,MAAM,MAAM,UAAU,QAAQ,IAAI;AAAA,MACxC,IAAI,QAAQ;AAAA,QAAM,MAAM,UAAS,EAAE,OAAO,QAAQ,mBAAmB,CAAC;AAAA,MACtE,OAAO;AAAA,KACR;AAAA,IAEH,mBAAmB,CAAC,SAClB,KAAK,qBAAqB,OAAO,WAAW;AAAA,MAC1C,MAAM,MAAM,MAAM,WAAW,QAAQ,IAAI;AAAA,MACzC,IAAI,QAAQ;AAAA,QAAM,MAAM,UAAS,EAAE,OAAO,QAAQ,oBAAoB,CAAC;AAAA,MACvE,OAAO;AAAA,KACR;AAAA,IAEH,QAAQ,CAAC,SAA+C,KAAK,UAAU,CAAC,WAAW,OAAO,QAAQ,IAAI,CAAC;AAAA,IACvG,YAAY,CAAC,SAA0C,KAAK,cAAc,CAAC,WAAW,WAAW,QAAQ,IAAI,CAAC;AAAA,IAC9G,qBAAqB,CAAC,SACpB,KAAK,uBAAuB,CAAC,WAAW,oBAAoB,QAAQ,IAAI,CAAC;AAAA,IAC3E,QAAQ,CAAC,SAAwC,KAAK,UAAU,CAAC,WAAW,OAAO,QAAQ,IAAI,CAAC;AAAA,IAChG,YAAY,CAAC,SAA0C,KAAK,cAAc,CAAC,WAAW,WAAW,QAAQ,IAAI,CAAC;AAAA,IAC9G,qBAAqB,CAAC,SACpB,KAAK,uBAAuB,CAAC,WAAW,oBAAoB,QAAQ,IAAI,CAAC;AAAA,IAC3E,QAAQ,CAAC,SAAwC,KAAK,UAAU,CAAC,WAAW,OAAO,QAAQ,IAAI,CAAC;AAAA,IAChG,YAAY,CAAC,SACX,KAAK,cAAc,CAAC,WAAW,WAAW,QAAQ,IAAI,CAAC;AAAA,IACzD,QAAQ,CAAC,SAAwC,KAAK,UAAU,CAAC,WAAW,UAAU,QAAQ,IAAI,CAAC;AAAA,IACnG,YAAY,CAAC,SAA2C,KAAK,cAAc,CAAC,WAAW,WAAW,QAAQ,IAAI,CAAC;AAAA,IAC/G,OAAO,CAAC,SACN,KAAK,SAAS,CAAC,WAAW,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC/C,WAAW,CAAC,SAAwC,KAAK,aAAa,CAAC,WAAW,UAAU,QAAQ,IAAI,CAAC;AAAA,IACzG,SAAS,CAAC,SAA0C,KAAK,WAAW,CAAC,WAAW,QAAQ,QAAQ,IAAI,CAAC;AAAA,EACvG;AAAA,EAEA,MAAM,OAAO,aAAa,EAAE,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,EACtD,OAAO,KAAK,SAAS,kBAAiB,EAAE,UAAU,OAAO,KAAK,KAAK,CAAC,IAAI;AAAA;AAK1E,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,SAAS,mBAAmB,CAAC,QAKX;AAAA,EAChB,QAAQ,QAAQ,UAAU,OAAO,eAAe;AAAA,EAChD,MAAM,OAAO,aAAa,EAAE,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,EACtD,MAAM,UAAmC,KAAK,SAAS;AAAA,EACvD,WAAW,UAAU,eAAe;AAAA,IAClC,MAAM,WAAW,SAAS;AAAA,IAC1B,QAAQ,UAAU,CAAC,SACjB,SAAS,qBAAqB,EAAE,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,MAAM,WAAW,CAAC,CAAc;AAAA,EAC5G;AAAA,EACA,OAAO;AAAA;AAcT,SAAS,mBAAmB,CAAC,QAAmF;AAAA,EAC9G,QAAQ,QAAQ,UAAU,UAAU;AAAA,EACpC,MAAM,OAAO,aAAa,EAAE,MAAM,OAAO,MAAM,MAAM,CAAC;AAAA,EACtD,MAAM,UAAmC,KAAK,SAAS;AAAA,EACvD,YAAY,QAAQ,UAAU,OAAO,QAAQ,OAAO,GAAG;AAAA,IACrD,IAAI,OAAO,UAAU;AAAA,MAAY;AAAA,IACjC,MAAM,WAAW;AAAA,IACjB,QAAQ,UAAU,CAAC,SAAuC;AAAA,MACxD,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,UAAU,qBAAqB,EAAE,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,KAAK,CAAC;AAAA,QAC/E,OAAO,OAAO;AAAA,QACd,OAAO,QAAQ,OAAO,KAAK;AAAA;AAAA,MAE7B,OAAO,SAAS,OAAO;AAAA;AAAA,EAE3B;AAAA,EACA,OAAO;AAAA;AAST,SAAS,iBAAiB,CAAC,QAIa;AAAA,EACtC,QAAQ,SAAS,SAAS,WAAW;AAAA,EACrC,MAAM,YAAY,IAAI,eAAe,OAAO;AAAA,EAC5C,IAAI,OAAO,QAAQ,MAAM;AAAA,EACzB,SAAS,QAAQ,EAAG,QAAQ,OAAO,QAAQ,SAAS;AAAA,IAClD,QAAQ,UAAU,IAAI,OAAO,MAAM,KAAK,QAAQ,QAAQ,MAAM;AAAA,EAChE;AAAA,EACA,OAAO,EAAE,MAAM,QAAQ,UAAU,OAAO;AAAA;AAK1C,SAAS,WAAW,CAAC,QAA2C;AAAA,EAC9D,QAAQ,WAAW;AAAA,EAEnB,MAAM,SAAwC,CAAC;AAAA,EAC/C,WAAW,SAAS,OAAO,KAAK,QAAQ;AAAA,IACtC,IAAI,WAAW,eAAe,EAAE,QAAQ,OAAO,MAAM,KAAK,CAAC;AAAA,IAC3D,MAAM,aAAa,OAAO,SAAS;AAAA,IAGnC,IAAI,eAAe,aAAa,OAAO,KAAK,UAAU,EAAE,SAAS,GAAG;AAAA,MAClE,WAAW,oBAAoB,EAAE,QAAQ,UAAU,OAAO,MAAM,MAAM,WAAW,CAAC;AAAA,IACpF;AAAA,IAIA,IAAI,OAAO,SAAS,oBAAoB,OAAO;AAAA,MAC7C,WAAW,oBAAoB,EAAE,QAAQ,UAAU,OAAO,MAAM,KAAK,CAAC;AAAA,IACxE;AAAA,IACA,OAAO,MAAM,QAAQ;AAAA,IACrB,OAAO,MAAM,cAAc;AAAA,EAC7B;AAAA,EAEA,MAAM,SAAS,OACb,QACA,WACA,eACyD;AAAA,IACzD,MAAM,QAAQ,eAAe,EAAE,QAAQ,MAAM,OAAO,OAAO,MAAM,OAAO,CAAC;AAAA,IACzE,OAAO,SAAS;AAAA,IAChB,MAAM,UAAU,iBAAiB;AAAA,MAC/B,QAAQ,UAAU,YAAY,SAAS,KAAK,QAAQ,WAAW,MAAM;AAAA,MACrE,KAAK,OAAO,WAAW;AAAA,QAIrB,MAAM,SAAS,MAAM,aAA0B;AAAA,UAC7C,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,OAAO;AAAA,UACP;AAAA,UACA,MAAM,UAAU;AAAA,UAChB,QAAQ,UAAU;AAAA,UAClB,UAAU,CAAC,UACT,OAAO,WAAW,QAAQ,IAAI,MAAM,KAAK,SAAS,MAAM;AAAA,UAC1D,KAAK,MACH,UAAU,OAAO,SAAS,IACtB,OAAO,QAAQ,oBAAoB,YACjC,OAAO,QAAQ,gBAAgB,SAAS,IACxC,iBAAiB,EAAE,SAAS,OAAO,SAAS,MAAM,UAAU,MAAM,QAAQ,UAAU,OAAO,CAAC,IAC9F,OAAO,QAAQ,cAAc,SAAS;AAAA,QAC7C,CAAC;AAAA,QACD,aAAa,OAAO,IAAI;AAAA,QACxB,OAAO;AAAA;AAAA,IAEZ,CAAC;AAAA,IACD,IAAI,UAAU;AAAA,MAAW,OAAO,MAAM;AAAA,IACtC,QAAQ,KACN,CAAC,UAAuB;AAAA,MACtB,MAAM,OAAO;AAAA,QACX,SAAS;AAAA,QACT,UAAU,OAAO,WAAW,QAAQ,IAAI,MAAM,KAAK,SAAS,MAAM;AAAA,MACpE,CAAC;AAAA,OAEH,CAAC,UAAmB;AAAA,MAClB,MAAM,OAAO,EAAE,SAAS,WAAW,MAAM,CAAC;AAAA,KAE9C;AAAA,IACA,OAAO,MAAM;AAAA;AAAA,EASf,MAAM,kBAAkB,OAAO,WAGP;AAAA,IACtB,QAAQ,QAAQ,YAAY;AAAA,IAC5B,mBAAmB,EAAE,OAAO,CAAC;AAAA,IAC7B,MAAM,YAAY,oBAAoB;AAAA,MACpC,SAAS,OAAO;AAAA,MAChB;AAAA,MACA,eAAe,OAAO,kBAAkB;AAAA,MACxC;AAAA,IACF,CAAC;AAAA,IAGD,MAAM,WAAW,iBAAgB,EAAE,SAAS,OAAO,SAAS,UAAU,CAAC;AAAA,IACvE,MAAM,QAAQ,eAAe,EAAE,QAAQ,MAAM,OAAO,OAAO,MAAM,OAAO,CAAC;AAAA,IACzE,OAAO,SAAS;AAAA,IAChB,MAAM,SAAS,UAAU,YAAY,SAAS,KAAK,QAAQ,WAAW,MAAM;AAAA,IAC5E,MAAM,UAAU,aAA0B;AAAA,MACxC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP;AAAA,MACA,MAAM,SAAS;AAAA,MACf,QAAQ,SAAS;AAAA,MACjB,UAAU,CAAC,UAA+B,MAAM,KAAK;AAAA,MACrD,KAAK,MACH,iBAAiB;AAAA,QACf,SAAS,OAAO;AAAA,QAChB,MAAM,SAAS;AAAA,QACf,QAAQ,WAAW,EAAE,SAAS,OAAO,SAAS,QAAQ,SAAS,OAAO,CAAC;AAAA,MACzE,CAAC;AAAA,IACL,CAAC;AAAA,IACD,IAAI,UAAU;AAAA,MAAW,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,IACtD,MAAM,SAAS,MAAM;AAAA,IAGrB,IAAI,UAAU,SAAS;AAAA,MAAQ,OAAO;AAAA,IACtC,OAAO,oBAAoB,EAAE,QAAQ,OAAO,CAAC;AAAA;AAAA,EAY/C,MAAM,gBAAgB,CAAC,YAAgC,YAAqD;AAAA,IAC1G,MAAM,QAAQ,eAAe,EAAE,QAAQ,MAAM,eAAe,OAAO,MAAM,QAAQ,eAAe,CAAC;AAAA,IACjG,MAAM,UAA8B,CAAC;AAAA,IACrC,IAAI,aAAsB;AAAA,IAE1B,IAAI,gBAAgB,iBAAiB,EAAE,OAAO,CAAC;AAAA,IAC/C,WAAW,aAAa,YAAY;AAAA,MAClC,IAAI,kBAAkB,aAAa,eAAe,SAAS;AAAA,QAAG,gBAAgB,uBAAuB,EAAE,OAAO,WAAW,OAAO,CAAC;AAAA,IACnI;AAAA,IACA,IAAI,kBAAkB,WAAW;AAAA,MAC/B,WAAW,aAAa,YAAY;AAAA,QAClC,IAAI,eAAe,SAAS;AAAA,UAAG,mBAAmB,EAAE,OAAO,WAAW,QAAQ,cAAc,CAAC;AAAA,MAC/F;AAAA,MACA,OAAO,OAAO,EAAE,SAAS,WAAW,OAAO,WAAW,OAAO,cAAc,CAAC;AAAA,MAC5E,OAAO,QAAQ,OAAO,aAAa;AAAA,IACrC;AAAA,IACA,WAAW,aAAa,YAAY;AAAA,MAClC,IAAI,CAAE,eAAe,SAAS,GAAI;AAAA,QAChC,aAAa,IAAI,YAAU;AAAA,UACzB,MAAM;AAAA,UACN,SACE;AAAA,QACJ,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MACA,IAAI;AAAA,QACF,QAAQ,KAAK,kBAAkB,EAAE,OAAO,UAAU,CAAC,CAAC;AAAA,QACpD,OAAO,OAAO;AAAA,QACd,aAAa;AAAA,QACb;AAAA;AAAA,IAEJ;AAAA,IACA,IAAI,eAAe,MAAM;AAAA,MACvB,WAAW,SAAS;AAAA,QAAS,MAAM,MAAM,UAAU;AAAA,MACnD,WAAW,aAAa,YAAY;AAAA,QAClC,IAAI,eAAe,SAAS;AAAA,UAAG,mBAAmB,EAAE,OAAO,WAAW,QAAQ,WAAW,CAAC;AAAA,MAC5F;AAAA,MAGA,OAAO,OAAO,EAAE,SAAS,WAAW,OAAO,WAAW,OAAO,WAAW,CAAC;AAAA,MACzE,OAAO,QAAQ,OAAO,UAAU;AAAA,IAClC;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,MAAM,QAAQ,kBAAkB,EAAE,QAAQ,UAAU,YAAY,SAAS,KAAK,QAAQ,WAAW,MAAM,GAAG,SAAS,KAAK,OAAO,aAAa;AAAA,MAC1I,MAAM,UAAqB,CAAC;AAAA,MAC5B,IAAI,QAAQ;AAAA,MACZ,IAAI;AAAA,QACF,MAAO,QAAQ,QAAQ,QAAQ,SAAS;AAAA,UACtC,QAAQ,KAAK,MAAO,QAAQ,OAA4B,MAAM,QAAQ,CAAC;AAAA,QACzE;AAAA,QACA,OAAO,OAAO;AAAA,QACd,SAAS,OAAO,QAAQ,EAAG,OAAO,QAAQ,QAAQ,QAAQ;AAAA,UACvD,QAAQ,MAA2B,MAAM,KAAK;AAAA,QACjD;AAAA,QACA,MAAM;AAAA;AAAA,MAER,OAAO;AAAA,MACP,CAAC,EAAE,MAAM,CAAC,UAAmB;AAAA,MAC7B,WAAW,SAAS;AAAA,QAAS,MAAM,MAAM,KAAK;AAAA,MAC9C,MAAM;AAAA,KACP;AAAA,IACD,IAAI,UAAU;AAAA,MAAW,WAAW,EAAE,OAAO,SAAS,MAAM,CAAC;AAAA,IAC7D,OAAO;AAAA;AAAA,EAIT,MAAM,yBAAyB,CAC7B,IACA,YACe;AAAA,IACf,MAAM,QAAQ,eAAe,EAAE,QAAQ,MAAM,eAAe,OAAO,MAAM,QAAQ,eAAe,CAAC;AAAA,IACjG,IAAI,UAAU,WAAW;AAAA,MACvB,OAAO,kBAAkB,EAAE,QAAQ,KAAK,CAAC,WAAW,GAAG,YAAY,EAAE,QAAQ,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC;AAAA,IACpG;AAAA,IACA,MAAM,SAAS;AAAA,IACf,MAAM,UAAU,kBAAkB;AAAA,MAChC,QAAQ,KAAK,QAAQ,WAAW,MAAM;AAAA,MACtC,KAAK,CAAC,WAAW,GAAG,YAAY,EAAE,QAAQ,KAAK,QAAQ,WAAW,MAAM,EAAE,CAAC,CAAC;AAAA,MAC5E;AAAA,IACF,CAAC;AAAA,IAGD,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,IAC7B,OAAO;AAAA;AAAA,EAGT,MAAM,SAAwB;AAAA,IAC5B,SAAS;AAAA,IAET,KAAK,CAAC,OAAgB,aAAwD;AAAA,MAC5E,IAAI,UAAU,SAAS;AAAA,QACrB,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,yBAAyB,OAAO,KAAK;AAAA,UAC9C,MAAM,EAAE,MAAM;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,MACA,OAAO,UAAU,IAAI,QAAQ;AAAA,MAC7B,OAAO,MAAM;AAAA,QACX,OAAO,UAAU,OAAO,QAAQ;AAAA;AAAA;AAAA,IAIpC,cAAe,CACb,gBACA,YAEA,MAAM,QAAQ,cAAc,IACxB,cAAc,gBAAgB,OAAO,IACrC,uBAAuB,gBAAqD,OAAO;AAAA,IAEzF,WAAW,SAAY,OAAO,cAA+E;AAAA,MAC3G,mBAAmB,EAAE,OAAO,CAAC;AAAA,MAC7B,IAAI,YAAY,QAAQ,OAAO,YAAY,YAAY,OAAO,QAAQ,WAAW;AAAA,QAAY,MAAM,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,gDAAgD,CAAC;AAAA,MACtM,MAAM,YAAY,WAAW,EAAE,SAAS,OAAO,SAAS,MAAM,CAAC;AAAA,MAC/D,IAAI,SAAc,CAAC;AAAA,MACnB,MAAM,OAAO,aAAa,WAAW,CAAC,SAAS;AAAA,QAC7C,SAAS,KAAK,IAAI,CAAC,UAAU,QAAQ,OAAO,EAAE,OAAO,SAAS,OAAO,QAAQ,SAAU,OAAO,QAAQ,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,OAAO,QAAQ,KAAK,EAAG,CAAC,CAAC;AAAA,OAClK;AAAA,MACD,OAAO;AAAA;AAAA,IAET,aAAa,SAAS,YAAqD;AAAA,MACzE,mBAAmB,EAAE,OAAO,CAAC;AAAA,MAC7B,QAAQ,MAAM,OAAO,eAAe,WAAW,EAAE,SAAS,OAAO,SAAS,MAAM,CAAC,CAAC,GAAG;AAAA;AAAA,IAKvF,WAAW,OAAO,YAAkC,YACjD,MAAM,OAAO,aAAa,kBAAkB,EAAE,SAAS,OAAO,SAAS,SAAS,OAAO,CAAC,CAAC,GAAG;AAAA,IAE/F,aAAa,OAAO,YAAkC,YACnD,MAAM,OAAO,eAAe,kBAAkB,EAAE,SAAS,OAAO,SAAS,SAAS,OAAO,CAAC,CAAC,GAAG;AAAA,IAEjG,iBAAiB,OAAO,SAAiB,YACtC,MAAM,OAAO,mBAAmB,EAAE,MAAM,OAAO,CAAC,GAAG;AAAA,IAEtD,mBAAmB,OAAO,SAAiB,YACxC,MAAM,OAAO,qBAAqB,EAAE,MAAM,OAAO,CAAC,GAAG;AAAA,IAExD,eAAe,OAAO,YAAgD;AAAA,MACpE,MAAM,gBAAgB,EAAE,QAAQ,iBAAiB,QAAQ,CAAC;AAAA;AAAA,IAG5D,kBAAkB,CAAC,YACjB,gBAAgB,EAAE,QAAQ,oBAAoB,QAAQ,CAAC;AAAA,IAEzD,UAAU,YAA2B;AAAA,MACnC,mBAAmB,EAAE,QAAQ,gBAAgB,MAAM,CAAC;AAAA,MACpD,IAAI,OAAO,mBAAmB;AAAA,QAAM,MAAM,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,mFAAmF,MAAM,EAAE,QAAQ,6BAA6B,QAAQ,WAAW,EAAE,CAAC;AAAA,MAClP,IAAI,OAAO,kBAAkB;AAAA,QAAM,MAAM,4BAA4B,EAAE,QAAQ,WAAW,CAAC;AAAA,MAC3F,IAAI,OAAO,cAAc,WAAW;AAAA,QAClC,MAAM,OAAO,QAAQ,QAAQ;AAAA,QAC7B,MAAM,kBAAkB,EAAE,QAAQ,gBAAgB,OAAO,KAAK,OAAO,WAAW;AAAA,UAC9E,WAAW,QAAQ,OAAO,gBAAgB,CAAC,GAAG;AAAA,YAC5C,MAAM,KAAK,EAAE,SAAS,CAAC,UAAU,OAAO,QAAQ,QAAQ,EAAE,MAAM,MAAM,MAAM,QAAQ,CAAC,GAAI,MAAM,UAAU,CAAC,CAAE,EAAE,CAAC,EAAE,CAAC;AAAA,UACpH;AAAA,UACA,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,MAAM,OAAO,QAAQ,QAAQ;AAAA,MAC7B,WAAW,QAAQ,OAAO,gBAAgB,CAAC,GAAG;AAAA,QAC5C,MAAM,KAAK;AAAA,UACT,SAAS,CAAC,eACR,OAAO,QAAQ,QAAQ,EAAE,MAAM,WAAW,MAAM,QAAQ,CAAC,GAAI,WAAW,UAAU,CAAC,CAAE,EAAE,CAAC;AAAA,QAC5F,CAAC;AAAA,MACH;AAAA;AAAA,IAEF,aAAa,YAA2B;AAAA,MACtC,mBAAmB,EAAE,QAAQ,gBAAgB,MAAM,CAAC;AAAA,MACpD,IAAI,OAAO,mBAAmB;AAAA,QAAM,MAAM,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,mFAAmF,MAAM,EAAE,QAAQ,6BAA6B,QAAQ,cAAc,EAAE,CAAC;AAAA,MACrP,IAAI,OAAO,kBAAkB;AAAA,QAAM,MAAM,4BAA4B,EAAE,QAAQ,cAAc,CAAC;AAAA,MAG9F,MAAM,OAAO,aAAa,MAAM;AAAA,MAChC,MAAM,OAAO,QAAQ,WAAW;AAAA,MAIhC,MAAM,OAAO,WAAW,MAAM;AAAA;AAAA,EAElC;AAAA,EAIA,WAAW,SAAS,OAAO,KAAK,QAAQ;AAAA,IACtC,OAAO,eAAe,QAAQ,MAAM,YAAY;AAAA,MAC9C,OAAO,OAAO,MAAM;AAAA,MACpB,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,sBAAsB,EAAE,QAAQ,QAAQ,OAAO,CAAC;AAAA,EAChD,iBAAiB,EAAE,QAAQ,MAAM,OAAO,MAAM,OAAO,CAAC;AAAA,EAItD,MAAM,eAAe,OAAO,SAAS,oBAAoB,QACrD,CAAC,WAAsE,oBAAoB,EAAE,WAAW,OAAO,CAAC,IAChH;AAAA,EACJ,IAAI,OAAO,cAAc;AAAA,IAAW,aAAa,EAAE,QAAQ,MAAM,OAAO,SAAU,iBAAiB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAG,CAAC;AAAA,EAIvI,IAAI,OAAO,cAAc,WAAW;AAAA,IAClC,yBAAyB,EAAE,QAAQ,SAAS,CAAC,QAAQ,mBAAmB;AAAA,MACtE;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,KAAK,CAAC,WAAW,kBAAkB,EAAE,QAAQ,QAAQ,KAAK,CAAC,sBAAsB,IAAI,YAAY,EAAE,QAAQ,kBAAkB,CAAC,CAAC,EAAE,CAAC;AAAA,IACpI,CAAC,EAAE,CAAC;AAAA,IACJ,aAAa,EAAE,QAAQ,MAAM,OAAO,SAAU,iBAAiB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAG,CAAC;AAAA,IACnG,eAAe;AAAA,MACb;AAAA,MACA,MAAM,OAAO;AAAA,SACT,OAAO,oBAAoB,YAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,gBAAgB;AAAA,MACjF,YAAY;AAAA,IACd,CAAC;AAAA,EACH,EACK;AAAA,IACH,MAAM,eAAe,MAAa;AAAA,MAChC,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,yFAAyF,CAAC;AAAA;AAAA,IAEhJ,OAAO,iBAAiB,QAAQ;AAAA,MAC9B,cAAc,EAAE,YAAY,MAAM,OAAO,CAAC,YAA8D;AAAA,QACtG,mBAAmB,EAAE,QAAQ,gBAAgB,MAAM,CAAC;AAAA,QACpD,IAAI,OAAO;AAAA,UAAe,MAAM,IAAI,iBAAgB,EAAE,QAAQ,cAAc,CAAC;AAAA,QAC7E,OAAO,YAAY,EAAE,QAAQ,KAAK,QAAQ,SAAS,eAAe,EAAE,QAAQ,OAAO,WAAY,SAAS,OAAO,SAAS,QAAQ,CAAC,EAAE,EAAE,CAAC;AAAA,QACtI;AAAA,MACF,SAAS,EAAE,OAAO,aAAa;AAAA,MAC/B,aAAa,EAAE,OAAO,aAAa;AAAA,MACnC,eAAe,EAAE,OAAO,aAAa;AAAA,IACvC,CAAC;AAAA,IAGD,IAAI,OAAO,YAAY,WAAW;AAAA,MAChC,eAAe;AAAA,QACb;AAAA,QACA,MAAM,OAAO;AAAA,WACT,OAAO,oBAAoB,YAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,gBAAgB;AAAA,QACjF,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IACA,WAAW,YAAY,OAAO,OAAO,MAAM;AAAA,MAAG,OAAO,OAAO,QAAQ;AAAA,IACpE,OAAO,OAAO,MAAM;AAAA,IACpB,OAAO,OAAO,MAAM;AAAA;AAAA,EAGtB,qBAAqB,EAAE,QAAQ,MAAM,GAAG,QAAQ,eAAe;AAAA,IAC7D,mBAAmB,EAAE,QAAQ,gBAAgB,MAAM,CAAC;AAAA,IACpD,IAAI,OAAO,cAAc,aAAa,OAAO,KAAK,OAAO,KAAK,CAAC,UAAU,MAAM,WAAW,SAAS;AAAA,MAAG,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,UAAU,SAAS,6DAA6D,MAAM,EAAE,QAAQ,6BAA6B,UAAU,SAAS,GAAG,EAAE,CAAC;AAAA,IAChT,IAAI,SAAS,YAAY,OAAO,QAAQ;AAAA,MAAM,MAAM,IAAI,YAAU,EAAE,MAAM,+BAA+B,SAAS,UAAU,SAAS,eAAe,SAAS,qBAAqB,OAAO,QAAQ,QAAQ,MAAM,EAAE,QAAQ,kBAAkB,UAAU,SAAS,GAAG,EAAE,CAAC;AAAA,IACpQ,MAAM,WAAW,OAAO,gBAAgB,IAAI,SAAS,EAAE;AAAA,IACvD,IAAI,aAAa,cAAc,SAAS,mBAAmB,SAAS,kBAAkB,SAAS,aAAa,SAAS,YAAY,SAAS,aAAa,SAAS;AAAA,MAAW,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,UAAU,SAAS,oFAAoF,MAAM,EAAE,QAAQ,4BAA4B,UAAU,SAAS,IAAI,UAAU,SAAS,SAAS,EAAE,CAAC;AAAA,IACxa,IAAI,OAAO,eAAe,IAAI,MAAM;AAAA,IACpC,IAAI,SAAS,WAAW;AAAA,MACtB,OAAO,iBAAiB,EAAE,OAAO,CAAC;AAAA,MAClC,4BAA4B,EAAE,MAAM,OAAO,CAAC;AAAA,MAC5C,eAAe,IAAI,QAAQ,IAAI;AAAA,IACjC;AAAA,IACA,OAAO,gBAAgB,IAAI,SAAS,IAAI,QAAQ;AAAA,IAChD,QAAQ,UAAU,cAAc,YAAY,OAAO;AAAA,IACnD,OAAO,YAAY,EAAE,QAAQ,KAAK,QAAQ,MAAM,SAAS,gBAAgB,MAAM,iBAAiB,CAAC,GAAG,cAAc,CAAC,GAAG,aAAa,IAAI,qBAAuB,EAAE,CAAC;AAAA,IACjK,CAAC;AAAA,EACH,OAAO;AAAA;AAKT,SAAS,gBAAgB,CAAC,QAIA;AAAA,EACxB,QAAQ,QAAQ,WAAW,UAAU;AAAA,EACrC,OAAO;AAAA,IACL;AAAA,IACA,SAAS,OAAO;AAAA,IAChB,UAAU,OAAO,QAAQ;AAAA,IACzB,MAAM,OAAO;AAAA,IACb;AAAA,IACA,aAAa,SAAS,MAAM,QAAQ,aAAa;AAAA,MAC/C,MAAM,QAAQ,eAAe;AAAA,QAC3B;AAAA,QACA,MAAM;AAAA,QACN,OAAO,OAAO,QAAQ;AAAA,QACtB,QAAQ,UAAU;AAAA,MACpB,CAAC;AAAA,MACD,OAAO,SAAS;AAAA,MAChB,MAAM,UAAU,iBAAiB;AAAA,QAC/B,QAAQ,UAAU,YAAY,SAAS,KAAK,QAAQ,WAAW,MAAM;AAAA,QACrE,KAAK,OAAO,WAAW;AAAA,UACrB,MAAM,OAAO,MAAM,aAA0B;AAAA,YAC3C,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO,OAAO,QAAQ;AAAA,YACtB,QAAQ,UAAU;AAAA,YAClB;AAAA,YACA;AAAA,YACA,UAAU,CAAC,UAA+B,MAAM;AAAA,YAChD,KAAK,MACH,OAAO,QAAQ,QAAQ;AAAA,cACrB;AAAA,cACA,QAAQ,WAAW,EAAE,SAAS,OAAO,SAAS,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC;AAAA,YACrE,CAAC;AAAA,UACL,CAAC;AAAA,UACD,OAAO,UAAU,OACb,OACA,gBAAgB,EAAE,SAAS,OAAO,QAAQ,MAAM,OAAO,MAAM,MAAM,OAAO,QAAQ,KAAK,CAAC;AAAA;AAAA,MAEhG,CAAC;AAAA,MACD,IAAI,UAAU;AAAA,QAAW,WAAW,EAAE,OAAO,QAAQ,CAAC;AAAA,MACtD,OAAO,MAAM;AAAA;AAAA,IAEf,cAAc,GAAG,OAAO,OAAO,WAAW,cAAc;AAAA,MACtD,MAAM,SACJ,cAAc,YACV,QACA,aAAa,EAAE,MAAM,OAAO,MAAM,OAAO,UAAU,CAAC;AAAA,MAC1D,IAAI,WAAW,MAAM;AAAA,QACnB,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,cAAc;AAAA,UACvB,MAAM,EAAE,UAAU;AAAA,QACpB,CAAC;AAAA,MACH;AAAA,MACA,OAAO,aAAa;AAAA,QAClB,SAAS,OAAO;AAAA,QAChB,MAAM,OAAO;AAAA,QACb,OAAO;AAAA,QACP;AAAA,WACI,YAAY,YAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,MAC7C,CAAC;AAAA;AAAA,EAEL;AAAA;AAIF,SAAS,kBAAkB,CAAC,QAA2F;AAAA,EACrH,QAAQ,QAAQ,OAAO,UAAU;AAAA,EACjC,MAAM,WAAW,MAAM,OAAO,iBAAiB,EAAE,QAAQ,WAAW,MAAM,WAAW,MAAM,CAAC,CAAC;AAAA,EAC7F,IAAI,OAAO,cAAc;AAAA,IAAW,OAAO;AAAA,EAC3C,MAAM,OAAO,CAAC,OAAgB,SAA0C;AAAA,IACtE,IAAI,OAAO,UAAU,YAAY;AAAA,MAC/B,OAAO,IAAI,SAAsC,mBAAmB,EAAE,QAAQ,KAAK,OAAO,WAAW;AAAA,QACnG,IAAI,UAAU,MAAM,OAAO,iBAAiB,EAAE,QAAQ,QAAQ,WAAW,MAAM,WAAW,MAAM,CAAC,CAAC;AAAA,QAClG,IAAI,WAAoB;AAAA,QACxB,WAAW,OAAO,MAAM;AAAA,UACtB,WAAW;AAAA,UACX,IAAI,YAAY,QAAS,OAAO,YAAY,YAAY,OAAO,YAAY;AAAA,YAAa,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,2CAA2C,CAAC;AAAA,UACxL,UAAU,QAAQ,IAAI,SAAS,GAAG;AAAA,QACpC;AAAA,QACA,IAAI,OAAO,YAAY;AAAA,UAAY,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,2CAA2C,CAAC;AAAA,QACnI,OAAO,QAAQ,MAAM,SAAS,UAAU,IAAI;AAAA,QAC5C,CAAC;AAAA,IACL;AAAA,IACA,IAAI,UAAU,QAAQ,OAAO,UAAU;AAAA,MAAU,OAAO;AAAA,IACxD,IAAI,OAAO,eAAe,KAAK,MAAM,OAAO,aAAa,OAAO,eAAe,KAAK,MAAM,MAAM;AAAA,MAC9F,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,oEAAoE,CAAC;AAAA,IAC3H;AAAA,IACA,MAAM,SAAuC,CAAC;AAAA,IAC9C,WAAW,OAAO,QAAQ,QAAQ,KAAK,GAAG;AAAA,MACxC,MAAM,aAAa,OAAO,yBAAyB,OAAO,GAAG;AAAA,MAC7D,IAAI,EAAE,WAAW;AAAA,QAAa,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,uDAAuD,CAAC;AAAA,MAC1I,OAAO,eAAe,QAAQ,KAAK,EAAE,OAAO,KAAK,WAAW,OAAO,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,YAAY,WAAW,WAAW,CAAC;AAAA,IACzH;AAAA,IACA,OAAO,OAAO,OAAO,MAAM;AAAA;AAAA,EAE7B,OAAO,KAAK,UAAU,CAAC,CAAC;AAAA;AAQ1B,SAAS,qBAAqB,CAAC,QAItB;AAAA,EACP,QAAQ,QAAQ,QAAQ,WAAW;AAAA,EACnC,MAAM,SAAS,OAAO;AAAA,EACtB,IAAI,WAAW;AAAA,IAAW;AAAA,EAE1B,WAAW,SAAS,QAAQ;AAAA,IAC1B,IAAI,MAAM,UAAU,SAAS;AAAA,MAC3B,MAAM,QAAQ,aAAa,EAAE,MAAM,OAAO,MAAM,OAAO,MAAM,SAAS,GAAG,CAAC;AAAA,MAC1E,MAAM,WAAW,OAAO,MAAM;AAAA,MAC9B,IAAI,aAAa,aAAa,MAAM,YAAY,UAAU;AAAA,QACxD,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,cAAc,MAAM,4BAA4B,MAAM,gBAAgB,MAAM;AAAA,UACrF,MAAM,EAAE,WAAW,MAAM,WAAW,OAAO,MAAM,MAAM,UAAU,MAAM,SAAS;AAAA,QAClF,CAAC;AAAA,MACH;AAAA,MACA,MAAM,QAAQ,mBAAmB,EAAE,QAAQ,OAAO,MAAM,CAAC;AAAA,MAKzD,OAAO,eAAe,UAAU,MAAM,UAAU,EAAE,OAAO,YAAY,MAAM,cAAc,KAAK,CAAC;AAAA,MAC/F;AAAA,IACF;AAAA,IAEA,IAAI,CAAC,MAAM,SAAS,WAAW,GAAG,KAAK,MAAM,YAAY,QAAQ;AAAA,MAC/D,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,cAAc,MAAM,4CAA4C,MAAM;AAAA,QAC/E,MAAM,EAAE,WAAW,MAAM,WAAW,UAAU,MAAM,SAAS;AAAA,MAC/D,CAAC;AAAA,IACH;AAAA,IACA,MAAM,QAAQ,mBAAmB,EAAE,QAAQ,OAAO,OAAO,KAAK,CAAC;AAAA,IAC/D,OAAO,eAAe,QAAQ,MAAM,UAAU,EAAE,OAAO,YAAY,KAAK,CAAC;AAAA,EAC3E;AAAA;AAcK,SAAS,YAAY,CAAC,QAQX;AAAA,EAChB,QAAQ,QAAQ,SAAS,SAAS,YAAY,aAAa;AAAA,EAC3D,MAAM,cAAuB,QAAQ;AAAA,EAGrC,MAAM,YACJ,SAAS,cAAc,YAAY,YAAY,wBAAwB,EAAE,SAAS,QAAQ,UAAU,CAAC;AAAA,EAGvG,2BAA2B,EAAE,aAAa,SAAS,iBAAiB,YAAY,CAAC;AAAA,EAGjF,MAAM,oBAAoB,4BAA4B;AAAA,IACpD,SAAS,SAAS;AAAA,IAClB,KAAK,QAAQ,IAAI,+BAA+B;AAAA,EAClD,CAAC;AAAA,EACD,MAAM,cACJ,sBAAsB,YAClB,YACA,2BAA2B,EAAE,QAAQ,mBAAmB,SAAS,SAAS,eAAc,EAAE,SAAS,YAAY,CAAC,EAAE,CAAC;AAAA,EACzH,IACE,sBAAsB,aACtB,kBAAkB,YAAY,aAC9B,kBAAkB,eAAe,+BAA+B,oBAChE;AAAA,IACA,QAAQ,KACN,8DAA8D,kBAAkB,mIAClF;AAAA,EACF;AAAA,EACA,IAAI,OAAO,QAAQ,WAAW;AAAA,IAC5B,MAAM,UAAU,eAAc,EAAE,SAAS,YAAY,CAAC;AAAA,IACtD,IAAI,CAAC,QAAQ,aAAa;AAAA,MAAwB,MAAM,uBAAsB,EAAE,SAAS,aAAa,SAAS,yBAAyB,CAAC;AAAA,IACzI,qBAAoB,EAAE,OAAO,CAAC;AAAA,IAC9B,WAAW,SAAS,OAAO,QAAQ;AAAA,MACjC,IAAI,MAAM,QAAQ;AAAA,QAAe,iBAAgB,EAAE,SAAS,QAAQ,OAAO,MAAM,KAAK,CAAC;AAAA,IACzF;AAAA,IACA,MAAM,OAAO,SAAS,WAAW;AAAA,IACjC,IAAI,QAAQ,aAAa,UAAU;AAAA,MACjC,IAAI,OAAO,SAAS,YAAY,KAAK,WAAW,KAAK,KAAK,SAAS,MAAI;AAAA,QAAG,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,+IAA+I,CAAC;AAAA,IAChR,EAAO,SAAI,SAAS,WAAW;AAAA,MAC7B,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,6FAA6F,CAAC;AAAA,IACpJ;AAAA,EACF;AAAA,EAIA,IAAI,YAAY,aAAa,WAAW;AAAA,IACtC,wBAAwB,EAAE,UAAU,WAAW,UAAU,WAAW,WAAW,UAAU,CAAC;AAAA,EAC5F;AAAA,EAEA,IAAI,UAAU,aAAa,WAAW;AAAA,IACpC,uBAAuB,EAAE,UAAU,SAAS,UAAU,OAAO,SAAS,MAAM,CAAC;AAAA,EAC/E;AAAA,EAGA,IACE,aAAa,aACb,YAAY,aACX,QAAoC,gBAAgB,WACrD;AAAA,IACA,MAAM,IAAI,YAAU;AAAA,MAClB,MAAM;AAAA,MACN,SACE;AAAA,MACF,MAAM,CAAC;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,YAAY,YAAY,aAAa,CAAC;AAAA,EAC5C,MAAM,cACJ,UAAU,WAAW,IACjB,OACA,0BAA0B,EAAE,WAAW,SAAS,aAAa,UAAU,QAAQ,SAAS,CAAC;AAAA,EAC/F,MAAM,eACJ,UAAU,WAAW,IACjB,CAAC,IACD,kBAAkB,EAAE,WAAW,SAAS,aAAa,UAAU,QAAQ,SAAS,CAAC;AAAA,EAEvF,MAAM,WAAW,iBAAiB;AAAA,IAChC;AAAA,OACI,UAAU,UAAU,YAAY,CAAC,IAAI,EAAE,UAAU,SAAS,MAAM;AAAA,EACtE,CAAC;AAAA,EACD,MAAM,OACJ,gBAAgB,OAAO,WAAW,KAAK,UAAU,oBAAoB,YAAY;AAAA,EACnF,4BAA4B,EAAE,MAAM,OAAO,CAAC;AAAA,EAE5C,OAAO,YAAY;AAAA,IACjB,QAAQ;AAAA,MACN,cAAc,OAAO,OAAO,CAAC,CAAC;AAAA,MAC9B,iBAAiB,IAAI;AAAA,SACjB,OAAO,QAAQ,YAAY,CAAC,IAAI,EAAE,WAAW,OAAO;AAAA,MACxD;AAAA,MACA;AAAA,MACA,SAAS,eAAc,EAAE,SAAS,YAAY,CAAC;AAAA,MAC/C,SAAS,OAAO,QAAQ,YAAY,WAAW,CAAC,IAAI,OAAO,OAAO,KAAK,SAAS,WAAW,OAAO,OAAO,KAAK,SAAS,UAAU,CAAC,EAAE,CAAC;AAAA,MACrI,WAAW,IAAI;AAAA,MACf,aAAa,IAAI;AAAA,SACb,cAAc,YAAY,CAAC,IAAI,EAAE,UAAU;AAAA,SAC3C,gBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY;AAAA,SAC/C,YAAY,WAAW,YAAY,CAAC,IAAI,EAAE,iBAAiB,WAAW,OAAO;AAAA,SAC7E,aAAa,WAAW,IAAI,CAAC,IAAI,EAAE,aAAa;AAAA,IACtD;AAAA,EACF,CAAC;AAAA;;;ADvoFH,SAAS,cAAc,CAAC,QAAqC;AAAA,EAC3D,QAAQ,UAAU;AAAA,EAClB,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,MAAM,IAAI,CAAC,UAAU,eAAe,EAAE,OAAO,MAAM,CAAC,CAAC;AAAA,EACtF,IAAI,UAAU,QAAQ,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACxD,OAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,KAAK,EAAE,KAAK,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,WAAW,CAAC,KAAK,eAAe,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AAAA;AAG/J,SAAS,UAAU,CAAC,QAAkC;AAAA,EACpD,IAAI,OAAO,UAAU,QAAQ,OAAO,OAAO,UAAU,YAAY,OAAO,SAAS,OAAO,KAAK;AAAA,IAAG;AAAA,EAChG,WAAW,SAAS,OAAO,OAAO,OAAO,KAAK;AAAA,IAAG,WAAW,EAAE,MAAM,CAAC;AAAA,EACrE,OAAO,OAAO,OAAO,KAAK;AAAA;AAIrB,SAAS,oBAAoB,CAAC,QAIlB;AAAA,EACjB,WAAW,OAAO,CAAC,MAAM,YAAY,UAAU,GAAY;AAAA,IACzD,IAAI,OAAO,OAAO,SAAS,YAAY,OAAO,KAAK,KAAK,EAAE,WAAW,KAAK,OAAO,KAAK,SAAS,MAAI;AAAA,MAAG,MAAM,IAAI,YAAU,EAAE,MAAM,eAAe,SAAS,mBAAmB,sCAAsC,MAAM,EAAE,QAAQ,mBAAmB,IAAI,EAAE,CAAC;AAAA,EAC/P;AAAA,EACA,qBAAoB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAAA,EAC7C,IAAI,OAAO,OAAO,QAAQ,aAAa,OAAO,OAAO,WAAW,SAAS,KAAK,OAAO,OAAO,OAAO,KAAK,CAAC,UAAU,MAAM,WAAW,SAAS;AAAA,IAAG,MAAM,IAAI,YAAU;AAAA,MAClK,MAAM;AAAA,MAA+B,SAAS,UAAU,OAAO;AAAA,MAA8E,MAAM,EAAE,QAAQ,yBAAyB,UAAU,OAAO,GAAG;AAAA,IAC5M,CAAC;AAAA,EACD,MAAM,aAAa,KAAK,UAAU,eAAe,EAAE,OAAO,OAAO,OAAO,CAAC,CAAC;AAAA,EAC1E,MAAM,SAAS,KAAK,MAAM,UAAU;AAAA,EACpC,WAAW,EAAE,OAAO,OAAO,CAAC;AAAA,EAC5B,MAAM,WAAmC,OAAO,OAAO;AAAA,IACrD,IAAI,OAAO;AAAA,IAAI,UAAU,OAAO;AAAA,IAAU,UAAU,OAAO;AAAA,IAAU,UAAU;AAAA,IAC/E,SAAS,kBAAkB,EAAE,UAAU,OAAO,WAAW,SAAS,CAAC;AAAA,IACnE,gBAAgB,WAAW,QAAQ,EAAE,OAAO,UAAU,EAAE,OAAO,KAAK;AAAA,EACtE,CAAC;AAAA,EACD,IAAI,OAAO,aAAa,aAAa,OAAO,KAAK,QAAQ,EAAE,KAAK,CAAC,QAAQ,OAAO,SAAU,SAAyC,SAAS,IAAoC;AAAA,IAAG,MAAM,IAAI,YAAU;AAAA,MACrM,MAAM;AAAA,MAAqB,SAAS,UAAU,OAAO;AAAA,MAA4F,MAAM,EAAE,QAAQ,mBAAmB,UAAU,OAAO,IAAI,UAAU,OAAO,UAAU,UAAU,OAAO,SAAS,SAAS;AAAA,IACzQ,CAAC;AAAA,EACD,MAAM,WAAW,OAAO,OAAO,EAAE,QAAQ,SAAS,CAAC;AAAA,EACnD,MAAM,OAAQ,GAAG,SAAyD,kBAAkB,EAAE,IAAI,SAAS,CAAC;AAAA,EAC5G,OAAO,OAAO,OAAO,KAAK,UAAU,MAAM,QAAQ,GAAG,cAA2D,KAAK,EAAE,IAAI,aAAa,EAAE,QAAQ,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAAA;;AQ9BnK,sBAAS;AAuDT,SAAS,UAAU,CAAC,QAAuE;AAAA,EACzF,OAAO,IAAI,YAAU,EAAE,MAAM,mBAAmB,SAAS,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC;AAAA;AAU9F,SAAS,aAAa,CAAC,QAI6E;AAAA,EAClG,QAAQ,MAAM,QAAQ,SAAS;AAAA,EAC/B,MAAM,QAAQ,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,MAAM,IAAI;AAAA,EACnD,IAAI,WAAW,WAAW;AAAA,IACxB,MAAM,SAAS,MAAM,OAAO,CAAC,SAAS,OAAO,UAAU,IAAI;AAAA,IAC3D,IAAI,OAAO,WAAW;AAAA,MAAG,OAAO,EAAE,QAAQ,OAAO;AAAA,IACjD,MAAM,UAAmC,KAAK,OAAO;AAAA,IACrD,WAAW,QAAQ;AAAA,MAAQ,QAAQ,QAAQ;AAAA,IAC3C,OAAO,EAAE,QAAQ,SAAS,OAAO;AAAA,EACnC;AAAA,EACA,IAAI,SAAS,WAAW;AAAA,IACtB,MAAM,SAAS,MAAM,OAAO,CAAC,SAAS,KAAK,UAAU,IAAI;AAAA,IACzD,IAAI,OAAO,WAAW;AAAA,MAAG,OAAO,EAAE,MAAM,OAAO;AAAA,IAC/C,MAAM,WAAoC,KAAK,KAAK;AAAA,IACpD,WAAW,QAAQ;AAAA,MAAQ,SAAS,QAAQ;AAAA,IAC5C,OAAO,EAAE,MAAM,UAAU,OAAO;AAAA,EAClC;AAAA,EACA,OAAO,EAAE,QAAQ,CAAC,EAAE;AAAA;AAYf,SAAS,aAAa,CAAC,SAA+C;AAAA,EAC3E,QAAQ,QAAQ,MAAM,SAAS,SAAS,UAAU,WAAW;AAAA,EAC7D,IAAI,CAAC,OAAO,cAAc,QAAQ,KAAK,WAAW,KAAK,WAAW,sBAAsB;AAAA,IACtF,MAAM,WAAW;AAAA,MACf,SAAS,oDAAoD,6BAA6B,OAAO,QAAQ;AAAA,MACzG,MAAM,EAAE,OAAO,QAAQ,OAAO,UAAU,QAAQ,mBAAmB;AAAA,IACrE,CAAC;AAAA,EACH;AAAA,EACA,MAAM,QAAQ,aAAa,EAAE,MAAM,OAAO,QAAQ,MAAM,CAAC;AAAA,EACzD,MAAM,OAAO,uBAAuB;AAAA,IAClC;AAAA,IACA;AAAA,IACA,OAAO,yBAAyB,EAAE,SAAS,MAAM,OAAO,QAAQ,CAAC;AAAA,OAC7D,QAAQ,uBAAuB,YAAY,CAAC,IAAI,EAAE,oBAAoB,QAAQ,mBAAmB;AAAA,EACvG,CAAC;AAAA,EACD,MAAM,aAAa,cAAc,EAAE,MAAM,QAAQ,QAAQ,QAAQ,MAAM,QAAQ,KAAK,CAAC;AAAA,EACrF,MAAM,YACJ,QAAQ,uBAAuB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,oBAAoB,QAAQ,mBAAmB,EAAE;AAAA,EAE/G,IAAI,SAAoC,CAAC;AAAA,EACzC,IAAI,WAA0B,QAAQ,SAAS;AAAA,EAC/C,IAAI,WAA0B;AAAA,EAC9B,IAAI,UAAyB;AAAA,EAC7B,IAAI,YAAY;AAAA,EAChB,IAAI,WAAW;AAAA,EACf,IAAI,UAAU;AAAA,EACd,IAAI,QAAQ;AAAA,EACZ,IAAI,OAAyB,QAAQ,QAAQ;AAAA,EAE7C,MAAM,OAAO,MAAY;AAAA,IACvB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS,CAAC;AAAA;AAAA,EAGZ,MAAM,YAAY,YAA2B;AAAA,IAC3C,MAAM,OAAO,MAAM,OAAO,SAAS;AAAA,SAC7B,QAAQ,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,MAAM;AAAA,SAC1D,WAAW,WAAW,YAAY,CAAC,IAAI,EAAE,QAAQ,WAAW,OAAO;AAAA,SACnE,WAAW,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,WAAW,KAAK;AAAA,SAC7D,QAAQ,YAAY,YAAY,CAAC,IAAI,EAAE,SAAS,QAAQ,QAAQ;AAAA,SACjE;AAAA,MACH;AAAA,MACA,MAAM;AAAA,SACF,aAAa,OAAO,CAAC,IAAI,EAAE,OAAO,SAAS;AAAA,IACjD,CAAC;AAAA,IACD;AAAA,IAQA,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,aAAa,QAAQ,UAAU,WAAW;AAAA,MAC5C,MAAM,WAAW,iBAAiB;AAAA,QAChC,MAAM,KAAK;AAAA,QACX,KAAK,gBAAgB,EAAE,MAAM,KAAK,MAAM,CAAC;AAAA,QACzC,UAAU,kBAAkB,EAAE,MAAM,OAAO,SAAS,CAAC;AAAA,MACvD,CAAC;AAAA,MACD,IAAI,aAAa,OAAO;AAAA,QACtB,KAAK;AAAA,QACL,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SACE,wBAAwB,QAAQ,wGAChC;AAAA,UACF,MAAM,EAAE,OAAO,QAAQ,OAAO,OAAO,KAAK,WAAW,QAAQ,gCAAgC;AAAA,QAC/F,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,SAAS,CAAC,GAAG,IAAI;AAAA,IAGjB,IAAI,KAAK,SAAS;AAAA,MAAU,YAAY;AAAA;AAAA,EAG1C,MAAM,OAAO,YAA8D;AAAA,IAEzE,IAAI,YAAY,MAAM;AAAA,MACpB,WAAW;AAAA,MACX,UAAU;AAAA,IACZ;AAAA,IACA,IAAI;AAAA,MAAU,OAAO,EAAE,MAAM,MAAM,OAAO,UAAU;AAAA,IACpD,IAAI,QAAQ,YAAY,MAAM;AAAA,MAC5B,UAAU;AAAA,MACV,KAAK;AAAA,MACL,OAAO,EAAE,MAAM,MAAM,OAAO,UAAU;AAAA,IACxC;AAAA,IACA,IAAI,OAAO,WAAW,GAAG;AAAA,MACvB,IAAI,WAAW;AAAA,QACb,WAAW;AAAA,QACX,OAAO,EAAE,MAAM,MAAM,OAAO,UAAU;AAAA,MACxC;AAAA,MACA,MAAM,UAAU;AAAA,MAChB,IAAI,OAAO,WAAW,GAAG;AAAA,QACvB,WAAW;AAAA,QACX,OAAO,EAAE,MAAM,MAAM,OAAO,UAAU;AAAA,MACxC;AAAA,IACF;AAAA,IACA,MAAM,MAAM,OAAO,MAAM;AAAA,IACzB,UAAU,kBAAkB,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,IAC9C,WAAW;AAAA,IACX,IAAI,WAAW,OAAO,WAAW;AAAA,MAAG,OAAO,EAAE,MAAM,OAAO,OAAO,IAAI;AAAA,IACrE,MAAM,SAAkC,KAAK,IAAI;AAAA,IACjD,WAAW,QAAQ,WAAW;AAAA,MAAQ,OAAO,OAAO;AAAA,IACpD,OAAO,EAAE,MAAM,OAAO,OAAO,OAAO;AAAA;AAAA,EAGtC,MAAM,YAAY,CAAC,QAAgE;AAAA,IACjF,MAAM,OAAO,KAAK,KAAK,KAAK,GAAG;AAAA,IAC/B,OAAO,KAAK,KACV,MAAG;AAAA,MAAG;AAAA,OACN,MAAG;AAAA,MAAG;AAAA,KACR;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,WAA2B;AAAA,KAC9B,OAAO,cAAc,GAAmB;AAAA,MACvC,OAAO;AAAA;AAAA,IAET,MAAM,MAAwD,UAAU,IAAI;AAAA,IAC5E,QAAQ,MACN,UAAU,YAAY;AAAA,MACpB,KAAK;AAAA,MACL,OAAO,EAAE,MAAM,MAAM,OAAO,UAAU;AAAA,KACvC;AAAA,IACH,OAAO,CAAC,UACN,UAAU,YAAY;AAAA,MACpB,KAAK;AAAA,MACL,MAAM;AAAA,KACP;AAAA,IACH,YAAY,MAAqB;AAAA,IACjC,cAAc,MAAc;AAAA,IAC5B,WAAW,MAAe;AAAA,EAC5B;AAAA,EACA,OAAO;AAAA;;AC5PT,sBAAS;AA0CF,SAAS,wBAAwB,CAAC,QAGlB;AAAA,EACrB,MAAM,UAAU,IAAI,IAA0B,QAAQ,WAAW,CAAC,CAAC;AAAA,EACnE,MAAM,aAAwC,CAAC;AAAA,EAC/C,MAAM,aAAwC,CAAC;AAAA,EAC/C,MAAM,QAA8B,CAAC;AAAA,EACrC,IAAI,UAAU;AAAA,EACd,IAAI,YAAY;AAAA,EAEhB,MAAM,UAAU,CAAC,UAAsC;AAAA,IACrD,IAAI,QAAQ,IAAI,KAAK,GAAG;AAAA,MACtB,MAAM,IAAI,YAAU;AAAA,QAClB,MAAM;AAAA,QACN,SAAS,mCAAmC;AAAA,QAC5C,MAAM,EAAE,QAAQ,0CAA0C,MAAM;AAAA,MAClE,CAAC;AAAA,IACH;AAAA;AAAA,EAGF,MAAM,WAA8B;AAAA,IAClC,aAAa,CAAC,UAAyC;AAAA,MACrD,WAAW,KAAK,KAAK;AAAA,MACrB,QAAQ,WAAW;AAAA;AAAA,IAErB,aAAa,CAAC,UAAyC;AAAA,MACrD,WAAW,KAAK,KAAK;AAAA,MACrB,QAAQ,WAAW;AAAA;AAAA,IAErB,QAAQ,CAAC,UAAoC;AAAA,MAC3C,MAAM,KAAK,KAAK;AAAA,MAChB,QAAQ,MAAM;AAAA;AAAA,IAEhB,OAAO,MAAY;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ,OAAO;AAAA;AAAA,IAEjB,UAAU,MAAY;AAAA,MACpB,aAAa;AAAA,MACb,QAAQ,UAAU;AAAA;AAAA,EAEtB;AAAA,EAEA,MAAM,aAAa,CAAC,gBAClB,WAAW,OAAO,CAAC,UAAU,MAAM,sBAAsB,YAAY,WAAW;AAAA,EAElF,MAAM,QAAQ,CAAC,WAA4D;AAAA,IACzE;AAAA,IACA,UAAU,WAAW,EAAE,aAAa,MAAM,YAAY,CAAC,EAAE,IAAI,KAAK;AAAA,EACpE;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,MAAc;AAAA,IACvB,WAAW,MAAc;AAAA,IACzB,OAAO,MAAY;AAAA,MACjB,WAAW,SAAS;AAAA,MACpB,WAAW,SAAS;AAAA,MACpB,MAAM,SAAS;AAAA,MACf,UAAU;AAAA,MACV,YAAY;AAAA;AAAA,IAEd,MAAM,MAAyC;AAAA,MAC7C,MAAM,MAAM,IAAI,IAAI,WAAW,IAAI,CAAC,UAAU,MAAM,WAAW,CAAC;AAAA,MAChE,OAAO,WACJ,OAAO,CAAC,UAAU,MAAM,sBAAsB,aAAa,CAAC,IAAI,IAAI,MAAM,iBAAiB,CAAC,EAC5F,IAAI,KAAK;AAAA;AAAA,IAEd;AAAA,IACA,cAAc,CAAC,WAAoF;AAAA,MACjG,MAAM,UAAU,WAAW,OACzB,CAAC,UAAU,MAAM,WAAW,OAAO,WAAW,OAAO,UAAU,aAAa,MAAM,UAAU,OAAO,MACrG;AAAA,MACA,IAAI,QAAQ,SAAS,GAAG;AAAA,QACtB,MAAM,IAAI,YAAU;AAAA,UAClB,MAAM;AAAA,UACN,SAAS,wBAAwB,QAAQ,2BAA2B,OAAO,SAAS,OAAO,OAAO;AAAA,UAClG,MAAM;AAAA,YACJ,QAAQ;AAAA,eACJ,OAAO,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,YAC5D,QAAQ,OAAO;AAAA,YACf,SAAS,QAAQ;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,QAAQ;AAAA;AAAA,EAEnB;AAAA;",
|
|
50
|
-
"debugId": "
|
|
49
|
+
"mappings": "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",
|
|
50
|
+
"debugId": "BC9380E497613E8D64756E2164756E21",
|
|
51
51
|
"names": []
|
|
52
52
|
}
|