diff --git a/dist/metona-sqlark.cjs b/dist/metona-sqlark.cjs index a3c623b..092577c 100644 --- a/dist/metona-sqlark.cjs +++ b/dist/metona-sqlark.cjs @@ -37,11 +37,609 @@ class DatabaseError extends Error { const VERSION = '0.8.0'; /** - * metona-sqlark Shared WHERE Matcher — 统一的条件匹配逻辑 + * metona-sqlark Engine Change Notifier(v0.8.0) + * @module engine/change-notifier + * + * ============================================================================ + * 为什么需要它(PLAN-v0.7.5.md A9) + * ============================================================================ + * `db.subscribe(table, fn)` 此前对**本地写入永不触发**:全库只有一处调用 `emit`, + * 而那一处在 BroadcastChannel 收到**其它标签页**消息时才执行。于是: + * - README:232「订阅表变更」、site/docs.html:667-679 的示例 + * (`event.type: 'insert' | 'update' | 'delete'`、`event.row`)全部不成立; + * - 唯一的实际触发条件是 `multiTabSync: true` 且收到 `external` 事件。 + * + * 更麻烦的是原因:写入路径有**三条**(SQL 语句、Table API、QueryBuilder),各自 + * 只调用 `broadcastChange(tableName)`,谁都不知道"改了哪些行"。所以此前即便想接线, + * 也要在三处分别实现一遍变更描述逻辑 —— 那正是本项目反复出问题的模式 + * (同一语义多份实现 → 漂移)。 + * + * ============================================================================ + * 本实现的做法 + * ============================================================================ + * 用一个 `IStorageEngine` **装饰器**把变更通知收敛到唯一位置:所有写入都必须经过 + * 引擎接口,因此在这里拦截一次即可覆盖全部入口(SQL / Table / Builder / 事务内)。 + * + * 事件语义(对文档承诺的兑现): + * - INSERT:逐行一个事件,携带该行(`row` 与主键 `key`); + * - UPDATE:先按 WHERE 查出**将被修改的行**(快照),写入成功后逐行发事件并 + * 携带**更新后的行**;查不到(例如 WHERE 无法在写入前求值)时退化为表级事件, + * 只带 `count`; + * - DELETE:同理,逐行发事件并携带**被删除前的行**; + * - CLEAR / DDL:表级事件(`count` 可选)。 + * + * 订阅方回调返回 Promise 时会被 await(保证"写完通知完"的顺序), + * 但**订阅方的异常不会影响写入结果** —— 写入已经成功,通知失败只上报 onError。 + */ +/** + * 变更通知引擎装饰器。 + * + * 只读方法(find/count/findStream/getTableSchema/...)直接透传; + * 写入方法在成功后产生事件并同步派发给监听者。 + */ +class ChangeNotifierEngine { + constructor(inner, onListenerError = () => { }, onBroadcast = () => { }) { + this.listeners = new Set(); + this.inner = inner; + this.onListenerError = onListenerError; + this.onBroadcast = onBroadcast; + } + /** 暴露内层引擎(需要能力探测或特化逻辑时使用) */ + getInner() { + return this.inner; + } + /** 注册变更监听(返回退订函数) */ + addListener(listener) { + this.listeners.add(listener); + return () => this.listeners.delete(listener); + } + /** 派发事件(供外部事件如跨标签页 `external` 复用同一通道) */ + async dispatch(event) { + // 跨标签页广播与本地订阅走同一出口,保证"写入即通知"只有一条路径 + try { + this.onBroadcast(event.table); + } + catch { + // 广播失败不影响本地通知与写入结果 + } + for (const listener of [...this.listeners]) { + try { + await listener(event); + } + catch (error) { + // 订阅者异常不得影响写入结果(写入已成功),只上报 + this.onListenerError(error); + } + } + } + // ------------------------------------------------------------------------- + // 写入路径:产生事件 + // ------------------------------------------------------------------------- + async insert(tableName, rows) { + const pks = await this.inner.insert(tableName, rows); + // 逐行事件;用引擎返回的主键对齐(resolved 行带 default 值,恢复时可对照) + for (let i = 0; i < pks.length; i++) { + await this.dispatch({ + type: 'insert', + table: tableName, + key: pks[i], + row: i < rows.length ? rows[i] : undefined, + count: 1, + }); + } + return pks; + } + async update(tableName, query, updates) { + // 写入前快照将被影响的行(用于提供 row 内容)。失败不阻塞写入 —— 快照只是尽力而为。 + const affected = await this.snapshotAffected(tableName, query); + const count = await this.inner.update(tableName, query, updates); + if (count > 0 && affected.length > 0) { + for (const before of affected) { + const after = { ...before, ...stripUndefined(updates) }; + await this.dispatch({ + type: 'update', + table: tableName, + row: after, + count: 1, + }); + } + } + else if (count > 0) { + await this.dispatch({ type: 'update', table: tableName, count }); + } + return count; + } + async delete(tableName, query) { + const affected = await this.snapshotAffected(tableName, query); + const count = await this.inner.delete(tableName, query); + if (count > 0 && affected.length > 0) { + for (const before of affected) { + await this.dispatch({ type: 'delete', table: tableName, row: before, count: 1 }); + } + } + else if (count > 0) { + await this.dispatch({ type: 'delete', table: tableName, count }); + } + return count; + } + async clear(tableName) { + await this.inner.clear(tableName); + await this.dispatch({ type: 'clear', table: tableName }); + } + async createTable(schema) { + await this.inner.createTable(schema); + await this.dispatch({ type: 'ddl', table: schema.name }); + } + async dropTable(tableName) { + await this.inner.dropTable(tableName); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async alterTable(tableName, action, column) { + await this.requireCapability('alterTable')(tableName, action, column); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async createIndex(tableName, column, unique) { + await this.requireCapability('createIndex')(tableName, column, unique); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async dropIndex(tableName, column, indexName) { + await this.requireCapability('dropIndex')(tableName, column, indexName); + await this.dispatch({ type: 'ddl', table: tableName }); + } + // ------------------------------------------------------------------------- + // 只读路径:透传 + // ------------------------------------------------------------------------- + get name() { return this.inner.name; } + open(dbName, version) { return this.inner.open(dbName, version); } + close() { return this.inner.close(); } + isOpen() { return this.inner.isOpen(); } + hasTable(tableName) { return this.inner.hasTable(tableName); } + getTableNames() { return this.inner.getTableNames(); } + getTableSchema(tableName) { + return this.inner.getTableSchema(tableName); + } + find(tableName, query) { + return this.inner.find(tableName, query); + } + count(tableName, query) { + return this.inner.count(tableName, query); + } + async findStream(tableName, query, onRow) { + return this.requireCapability('findStream')(tableName, query, onRow); + } + // ---- 事务:透传(事务内的写入由底层引擎统一处理,事件在语句层产生) ---- + beginTransaction() { return this.inner.beginTransaction(); } + commitTransaction() { return this.inner.commitTransaction(); } + rollbackTransaction() { return this.inner.rollbackTransaction(); } + savepoint(name) { + return this.requireCapability('savepoint')(name); + } + rollbackToSavepoint(name) { + return this.requireCapability('rollbackToSavepoint')(name); + } + releaseSavepoint(name) { + return this.requireCapability('releaseSavepoint')(name); + } + backup() { + return this.requireCapability('backup')(); + } + repair() { + return this.requireCapability('repair')(); + } + clearAll() { + return this.requireCapability('clearAll')(); + } + // ---- 维护能力(可选,AriaEngine 专有;只读/维护语义,不产生变更事件) ---- + /** + * v0.8.0:转发引擎专有的维护方法。 + * + * 为什么必须显式转发:executor 用 `typeof engine.analyzeTable === 'function'` + * 做能力探测。装饰器只实现 `IStorageEngine` 声明的成员,于是这些"接口外方法" + * 在被包装后会**静默消失** → ANALYZE/REINDEX 报 NOT_SUPPORTED(实测 3 个用例失败)。 + * 这正是审计指出的"用 typeof/instanceof 做能力探测"的脆弱之处; + * 在装饰器里显式补齐是当前最直接的修法。 + */ + analyzeTable(tableName) { + return this.requireOptionalMethod('analyzeTable')(tableName); + } + reindexTable(tableName) { + return this.requireOptionalMethod('reindexTable')(tableName); + } + vacuum() { + return this.requireOptionalMethod('vacuum')(); + } + getMeta(key) { + const method = this.inner.getMeta; + if (typeof method !== 'function') + return Promise.resolve(null); + return method.call(this.inner, key); + } + setMeta(key, value) { + const method = this.inner.setMeta; + if (typeof method !== 'function') + return Promise.resolve(); + return method.call(this.inner, key, value); + } + // ------------------------------------------------------------------------- + /** + * v0.8.0: 取一个**可选能力**方法;内层未实现时抛 `NOT_SUPPORTED`。 + * + * 为什么不能直接抛普通 Error:项目对"能力缺失"有明确契约 —— + * `NOT_SUPPORTED` 错误码(README「维护语句」、executor 的 savepoint/backup + * 分支、以及既有测试都依赖它)。装饰器如果抛原生 Error,调用方按 code 分类 + * 就会失效(实测让 6 个套件里的 14 个用例失败)。 + */ + requireCapability(name) { + const method = this.inner[name]; + if (typeof method !== 'function') { + return (() => { + throw new DatabaseError(`Engine "${this.inner.name}" does not support ${String(name)}`, 'NOT_SUPPORTED'); + }); + } + return method.bind(this.inner); + } + /** + * v0.8.0: 取**接口之外**的可选方法(如 AriaEngine.analyzeTable / reindexTable / vacuum)。 + * + * 与 requireCapability 的区别:这些方法不在 IStorageEngine 契约里,属于引擎专有能力, + * 但 executor 会用 `typeof engine.x === 'function'` 探测它们。装饰器必须显式转发, + * 否则能力在被包装后静默消失(实测 ANALYZE/REINDEX 报 NOT_SUPPORTED)。 + */ + requireOptionalMethod(name) { + const method = this.inner[name]; + if (typeof method !== 'function') { + return () => { + throw new DatabaseError(`Engine "${this.inner.name}" does not support ${name}`, 'NOT_SUPPORTED'); + }; + } + return method.bind(this.inner); + } + /** + * 尽力而为地取"将被影响的行"快照。 + * + * 用途:让 UPDATE/DELETE 事件能携带行内容(文档承诺 `event.row`)。 + * 失败时返回空数组 —— 事件退化为表级通知(只带 count),**不影响写入本身**。 + */ + async snapshotAffected(tableName, query) { + try { + return await this.inner.find(tableName, { table: tableName, where: query.where }); + } + catch { + return []; + } + } +} +/** 与引擎/executor 一致的 undefined 语义:不更新该列 */ +function stripUndefined(updates) { + const out = {}; + for (const [k, v] of Object.entries(updates)) { + if (v !== undefined) + out[k] = v; + } + return out; +} + +/** + * metona-sqlark Engine Interface — 存储引擎抽象接口 + * @module engine/interface + */ +// --------------------------------------------------------------------------- +// v0.8.0: 行所有权(row ownership)约定 +// --------------------------------------------------------------------------- +/** + * 深拷贝一行,使调用方**无法通过修改返回值改写存储**。 + * + * 为什么必须做(审计实测):Memory/KVStore/Hybrid 三个引擎此前把内部行对象 + * **直接**交给调用方: + * const rows = await db.query('SELECT * FROM t'); + * rows[0].tag = 'HACKED'; // 存储被改写 + * 再查 WHERE tag='HACKED' → 0 行;WHERE tag='x' → 0 行 + * 即调用方一次无意的原地修改就能让索引与行失配、该行永久查不出来(Aria 因为是 + * 反序列化路径反而幸免,于是又成了跨引擎行为差异)。 + * + * 约定(写入 interface 文档,所有引擎必须遵守): + * **读出的行是副本,写入接收的行也是副本** —— 引擎不得把内部行对象暴露给外部, + * 也不得持有调用方传入的行对象引用。 + * + * 实现说明:结构化克隆可用时优先使用(正确处理 Date/嵌套对象/循环引用); + * 存储层写入的行已经过 validateRow 的 JSON 安全性检查,因此退化路径也是安全的。 + */ +function cloneRow(row) { + if (row === null || typeof row !== 'object') + return row; + if (typeof structuredClone === 'function') { + try { + return structuredClone(row); + } + catch { + // 含不可克隆值(函数/Proxy)时退化为逐层复制 + } + } + return cloneRowFallback(row); +} +/** 退化实现:递归复制普通对象与数组(保留 Date) */ +function cloneRowFallback(value) { + if (value === null || typeof value !== 'object') + return value; + if (value instanceof Date) + return new Date(value.getTime()); + if (Array.isArray(value)) + return value.map((v) => cloneRowFallback(v)); + if (value instanceof Uint8Array) + return new Uint8Array(value); + if (value instanceof ArrayBuffer) + return value.slice(0); + const out = {}; + for (const [k, v] of Object.entries(value)) { + out[k] = cloneRowFallback(v); + } + return out; +} + +/** + * metona-sqlark SQL 值语义 — 三值逻辑与统一编码(v0.8.0) + * @module query/sql-compare + * + * ============================================================================ + * 为什么需要它(PLAN-v0.7.5.md 根因 2 / PB-2) + * ============================================================================ + * 此前项目里并存**五套**值相等语义: + * 1. `where-matcher` 的 `===` + * 2. 哈希连接的 `String(v ?? '\0')` + * 3. 分组键 `encodeGroupKey` + * 4. `COUNT(DISTINCT)` 的 `String(v)` + * 5. Aria 二级索引键的 `String(v)` + * 它们对 NULL 的处理各不相同,于是出现一批"静默错值": + * - `WHERE a = NULL` 命中 NULL 行(SQL 标准应为空集,比较结果是 UNKNOWN); + * - `WHERE a != NULL` 返回所有非 NULL 行(标准同样为空集); + * - `WHERE a NOT BETWEEN 1 AND 2` 会把 NULL 行**排除**(标准应包含, + * 因为 UNKNOWN 经过 NOT 仍是 UNKNOWN,而 WHERE 只保留 TRUE……此处需按下文语义); + * - `WHERE a NOT IN (1, 2)` 把 NULL 行当作"不在列表"返回; + * - JOIN 的 NULL 键:嵌套循环认为 NULL = NULL 成立、哈希连接不成立 → + * **结果取决于右表有没有索引**。 + * + * ============================================================================ + * 本模块提供的语义 + * ============================================================================ + * `sqlCompare(a, b)` / `sqlEquals(a, b)` 返回三值:TRUE / FALSE / UNKNOWN。 + * 任一操作数为 NULL/undefined → UNKNOWN(SQL 标准)。 + * `matchWhere` 只在结果为 TRUE 时保留该行。 + * + * 注意 `IS NULL` / `IS NOT NULL` **不走比较**:它们是谓词,直接对 NULL 求值, + * 由 parser 生成为独立的 `$isNull` / `$isNotNull` 标记(见 SQL_LOGICAL 说明)。 + */ +/** SQL 三值逻辑 */ +const SQL_LOGICAL = Object.freeze({ + TRUE: 'TRUE', + FALSE: 'FALSE', + /** 未知(任一操作数为 NULL,或存在无法确定的引用) */ + UNKNOWN: 'UNKNOWN', +}); +/** 是否为 NULL 语义值(undefined 与 null 等价为 SQL NULL) */ +function isSqlNull(value) { + return value === null || value === undefined; +} +/** + * 未解析的列引用标记。 + * + * 用于区分两件必须分开处理的事: + * - `row[col]` 取到 `undefined` 可能是"该行此列为 NULL", + * 也可能是"这一列根本不在当前行里"(例如子查询引用了外层列)。 + * 前者应判 UNKNOWN,后者应让调用方转交带上下文的求值器(不能静默当 NULL)。 + * 用 Unique Symbol 保证不会与真实数据冲突。 + */ +const UNRESOLVED = Symbol('sqlark.unresolved'); +/** 判定某值是否为"未解析引用" */ +function isUnresolved(value) { + return value === UNRESOLVED; +} +/** + * 统一的类型化值编码(用于分组键 / DISTINCT 键 / 索引键)。 + * + * 为什么不能直接 `String(v)`: + * - `String(null)` = `'null'` 与字符串 `'null'` 冲突; + * - `String(1)` = `'1'` 与字符串 `'1'` 冲突(v0.7.4 已修 DISTINCT, + * 但 COUNT(DISTINCT) 与 Aria 索引键仍是 `String()`)。 + * 这里用类型前缀 + 长度前缀,保证不同类型、不同值必然编码不同, + * 且不会出现 `\x1f` 之类分隔符被数据内容伪造的问题。 + */ +function encodeValueKey(value) { + if (value === null || value === undefined) + return 'z'; + const t = typeof value; + switch (t) { + case 'string': { + const s = value; + return `s${s.length}:${s}`; + } + case 'number': { + const n = value; + // -0 与 0 在 SQL 中相等;NaN 单独编码(避免与任何值相等) + if (Number.isNaN(n)) + return 'nNaN'; + return `n${Object.is(n, -0) ? 0 : n}`; + } + case 'boolean': return `b${value ? 1 : 0}`; + case 'bigint': return `i${String(value)}`; + case 'object': { + // 日期按时间戳比较;数组/对象按 JSON(键序由 JSON.stringify 决定, + // 对同构数据稳定;异构键序在上层已由 schema 约束) + if (value instanceof Date) + return `d${value.getTime()}`; + if (Array.isArray(value)) + return `a${JSON.stringify(value)}`; + return `o${JSON.stringify(value)}`; + } + default: return `x${String(value)}`; + } +} +/** + * SQL 比较:返回三值。 + * + * 与 JavaScript 运算符的关键差异: + * - 任一操作数为 NULL → UNKNOWN(而不是 false); + * - 非数值字符串与数值比较 → UNKNOWN(而不是 JS 的强制转换结果); + * - 未解析引用 → UNKNOWN(调用方据此转交上下文求值)。 + */ +function sqlCompare(a, b) { + const ord = sqlCompareOrder(a, b); + if (ord === null) + return SQL_LOGICAL.UNKNOWN; + return ord === 0 ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; +} +/** 相等比较(三值) */ +function sqlEquals(a, b) { + return sqlCompare(a, b); +} +/** + * 三路排序比较:返回 -1 / 0 / 1,无法比较(含 NULL、类型不可比)返回 null。 + * + * **这是本模块唯一的排序/比较原语** —— `sqlCompare`(相等)与所有有序比较 + * ($gt/$gte/$lt/$lte、ORDER BY)都必须建立在它之上。 + * + * 为什么要把"排序"与"相等"分开:初版实现里 `sqlCompare` 直接返回三值, + * 于是"a < b"与"a === b"都被编码成 TRUE,`$gte` 误把"小于"当成"大于等于" + * (实测 `WHERE n >= 2` 在 1..3 上返回 3 而不是 2 与 3)。 + * 排序是三路的(<, =, >),相等是二值的(=, ≠)—— 把前者硬塞进后者必然出错。 + */ +function sqlCompareOrder(a, b) { + if (isUnresolved(a) || isUnresolved(b)) + return null; + if (isSqlNull(a) || isSqlNull(b)) + return null; + // 数字 vs 数字 + if (typeof a === 'number' && typeof b === 'number') { + if (Number.isNaN(a) || Number.isNaN(b)) + return null; + if (a === b) + return 0; + return a < b ? -1 : 1; + } + // 布尔 vs 布尔 + if (typeof a === 'boolean' && typeof b === 'boolean') { + if (a === b) + return 0; + return a === false ? -1 : 1; + } + // 字符串 vs 字符串:字典序 + if (typeof a === 'string' && typeof b === 'string') { + if (a === b) + return 0; + return a < b ? -1 : 1; + } + // 日期 vs 日期 + if (a instanceof Date && b instanceof Date) { + const ta = a.getTime(); + const tb = b.getTime(); + if (Number.isNaN(ta) || Number.isNaN(tb)) + return null; + if (ta === tb) + return 0; + return ta < tb ? -1 : 1; + } + // 类型不同:本项目保持严格类型(不做静默强转),判定为不可比(null) + // —— 这样 `WHERE numCol = 'abc'` 不会意外命中,也不会因 `'5' = 5` 的 JS + // 行为产生跨引擎差异。唯一例外:数值与"纯数值字符串"按数值比较 + // (与既有「$in 列表含字符串」行为兼容)。 + const na = toNumericIfPossible(a); + const nb = toNumericIfPossible(b); + if (na !== null && nb !== null) { + if (na === nb) + return 0; + return na < nb ? -1 : 1; + } + return null; +} +/** 三值 AND */ +function sqlAnd(a, b) { + if (a === SQL_LOGICAL.FALSE || b === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (a === SQL_LOGICAL.UNKNOWN || b === SQL_LOGICAL.UNKNOWN) + return SQL_LOGICAL.UNKNOWN; + return SQL_LOGICAL.TRUE; +} +/** 三值 OR */ +function sqlOr(a, b) { + if (a === SQL_LOGICAL.TRUE || b === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (a === SQL_LOGICAL.UNKNOWN || b === SQL_LOGICAL.UNKNOWN) + return SQL_LOGICAL.UNKNOWN; + return SQL_LOGICAL.FALSE; +} +/** 三值 NOT(UNKNOWN 取反仍为 UNKNOWN) */ +function sqlNot(a) { + if (a === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.FALSE; + if (a === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.TRUE; + return SQL_LOGICAL.UNKNOWN; +} +/** + * 把值转为数值;无法安全转换时返回 null。 + * 只有 number 与"纯数值字符串"参与数值比较,避免 `'abc'` 之类被 Number() 变成 NaN。 + */ +function toNumericIfPossible(value) { + if (typeof value === 'number') + return Number.isNaN(value) ? null : value; + if (typeof value === 'boolean') + return value ? 1 : 0; + if (typeof value === 'string') { + const trimmed = value.trim(); + if (trimmed === '') + return null; + const n = Number(trimmed); + return Number.isNaN(n) ? null : n; + } + return null; +} +/** + * SQL `IN` 列表求值(三值)。 + * + * 标准语义:`x IN (a, b, c)` 等价于 `x = a OR x = b OR x = c`。 + * 因此: + * - 命中任一 → TRUE; + * - 都未命中但列表含 NULL(或 x 为 NULL)→ UNKNOWN; + * - 都未命中且列表无 NULL 且 x 非 NULL → FALSE。 + */ +function sqlIn(value, list) { + if (isUnresolved(value)) + return SQL_LOGICAL.UNKNOWN; + let sawUnknown = false; + for (const item of list) { + const t = sqlEquals(value, item); + if (t === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (t === SQL_LOGICAL.UNKNOWN) + sawUnknown = true; + } + return sawUnknown ? SQL_LOGICAL.UNKNOWN : SQL_LOGICAL.FALSE; +} + +/** + * metona-sqlark Shared WHERE Matcher —— 统一的条件求值器 * @module query/where-matcher * - * MemoryEngine / IndexedDBEngine / QueryExecutor 共享此模块, - * 消除 220+ 行重复代码,统一 $and/$or/$not/$col 行为。 + * ============================================================================ + * v0.8.0 根治:为什么这里只剩**一个**递归求值器(PLAN-v0.7.5.md 根因 1/7、PB-2) + * ============================================================================ + * 历史上有两套并存的实现: + * - `matchWhere` —— 布尔版(自己的 `$and/$or/$not` 分支 + `matchField`); + * - 三值求值 —— 为 UNKNOWN 传播而新增。 + * 两者对**字段级** `$or` / `$not` 的处理不同,于是同一条 SQL 的语义取决于调用点: + * - `{ s: { $not: { $like: 'x' } } }` 经布尔取反会把 NULL 行判真; + * - `{ n: { $or: [...] } }`(`NOT BETWEEN` 生成)经布尔分支在 NULL 行上判假; + * - 更严重的是字段级 `$or` 递归回了"**where 子句级**"求值器: + * `{ n: { $or: [ { $lt: 1 }, { $gt: 2 } ] } }` 里的 `{ $lt: 1 }` 被当成 + * "查询字段 `$lt`",于是每一行都求值 UNKNOWN → `NOT BETWEEN` 恒空集。 + * + * 现在只有一条代码路径:**一个递归求值器**,同时理解 where 子句级(键是列名或 + * 逻辑连接词)与操作符级(键是 `$gt` 之类)。区别由**位置**参数承载, + * 而不是由另一个函数承载: + * - `evalWhere(ctx, where)` —— where 子句(`$and`/`$or` 子项是 where 子句) + * - `evalOperatorObject(ctx, ...)` —— 操作符对象(`$and`/`$or` 子项是操作符对象) + * 因此 `$or` 的两种含义都在同一个函数里显式分派,不可能再漂移。 + * + * `matchWhere` 保留为对外入口,语义定义为"是否保留该行" = 三值结果恰为 TRUE。 */ // --------------------------------------------------------------------------- // LIKE 正则缓存 @@ -60,146 +658,318 @@ function compileLikeRegex(pattern) { return regex; } // --------------------------------------------------------------------------- -// WHERE 匹配(顶层入口) +// WHERE 匹配(对外入口) // --------------------------------------------------------------------------- +/** + * 匹配完整 WHERE 条件(布尔口径:仅 TRUE 保留该行)。 + * + * @param row 当前数据行 + * @param where WHERE 条件对象 + * @param options `$col` 是否启用列引用解析 + */ +function matchWhere(row, where, options = {}) { + return evalWhere({ row, options }, where) === SQL_LOGICAL.TRUE; +} /** * v0.7.4: 检测 WHERE 中未解析的子查询/列引用标记($subquery / $col / $exists)。 + * * QueryBuilder 等直通引擎的写路径(update/delete)不经 Executor 解析子查询, - * 引擎层 matchWhere 对未解析标记恒 false → 静默影响 0 行。 - * 写路径预检阶段显式拒绝;SELECT 路径由 Executor 解析(不调用本函数)。 + * 写路径预检阶段据此显式拒绝(否则这些标记在引擎层恒 UNKNOWN → 静默影响 0 行)。 */ function containsUnresolvedSubqueries(where) { if (!where) return false; for (const [k, v] of Object.entries(where)) { - if (k === '$and' || k === '$or') { - if (v.some((sub) => containsUnresolvedSubqueries(sub))) - return true; - continue; - } - if (k === '$not') { - if (containsUnresolvedSubqueries(v)) + if (isLogicalKey(k)) { + const subs = (Array.isArray(v) ? v : [v]); + if (subs.some((sub) => containsUnresolvedSubqueries(sub))) return true; continue; } if (k === '$exists') return true; - if (typeof v === 'object' && v !== null && !Array.isArray(v)) { - for (const [, operand] of Object.entries(v)) { - if (typeof operand === 'object' && operand !== null) { - const ops = operand; - if ('$subquery' in ops || '$col' in ops) - return true; - } - } - } + if (isPlainObject(v) && operatorObjectHasUnresolved(v)) + return true; } return false; } -/** - * 匹配完整 WHERE 条件 - * @param row 当前数据行 - * @param where WHERE 条件对象 - * @param options.$col 是否启用 $col 列引用解析 - */ -function matchWhere(row, where, options = {}) { - for (const [field, condition] of Object.entries(where)) { - // 顶层 $caseResult(v0.3.2):由 Executor 对 CASE WHEN 表达式逐行求值后产生 - if (field === '$caseResult') { - if (condition !== true) - return false; - continue; - } - // 顶层 $exists(v0.3.0):由 Executor.resolveSubqueries 解析为 boolean - if (field === '$exists') { - if (condition !== true) - return false; - continue; - } - // 顶层 $and - if (field === '$and') { - const subs = condition; - if (!subs.every((sub) => matchWhere(row, sub, options))) - return false; - continue; - } - // 顶层 $or - if (field === '$or') { - const subs = condition; - if (!subs.some((sub) => matchWhere(row, sub, options))) - return false; - continue; - } - // 顶层 $not(v0.3.2 修复:NOT (expr) 生成的 { $not: inner }) - if (field === '$not') { - if (matchWhere(row, condition, options)) - return false; - continue; - } - if (!matchField(row[field], condition, row, options)) - return false; - } - return true; -} -// --------------------------------------------------------------------------- -// 字段匹配 -// --------------------------------------------------------------------------- -function matchField(value, condition, row, options) { - // 嵌套 $and - if (typeof condition === 'object' && condition !== null && '$and' in condition) { - const subs = condition.$and; - return subs.every((sub) => matchWhere(row, sub, options)); - } - // 嵌套 $or - if (typeof condition === 'object' && condition !== null && '$or' in condition) { - const subs = condition.$or; - return subs.some((sub) => matchWhere(row, sub, options)); - } - // $not - if (typeof condition === 'object' && condition !== null && '$not' in condition) { - return !matchField(value, condition.$not, row, options); - } - // 简单值 => $eq - if (typeof condition !== 'object' || condition === null || Array.isArray(condition)) { - return value === condition; - } - const ops = condition; - // $col 简写: { $col: name } === { $eq: { $col: name } }(仅 JOIN ON 场景) - if (options.$col && '$col' in ops && Object.keys(ops).length === 1) { - return value === row[ops.$col]; - } - // 遍历操作符 +/** 递归检测操作符对象里是否存在未解析引用(含 `$and`/`$or`/`$not` 内部) */ +function operatorObjectHasUnresolved(ops) { for (const [op, operand] of Object.entries(ops)) { - let actualOperand = operand; - // $col 列引用解析 - if (options.$col && typeof operand === 'object' && operand !== null && '$col' in operand) { - actualOperand = row[operand.$col]; + if (op === '$and' || op === '$or') { + const subs = (Array.isArray(operand) ? operand : [operand]); + if (subs.some((sub) => isPlainObject(sub) && operatorObjectHasUnresolved(sub))) + return true; + continue; } - if (!matchOperator(value, op, actualOperand)) - return false; + if (op === '$not') { + if (isPlainObject(operand) && operatorObjectHasUnresolved(operand)) + return true; + continue; + } + if (op === '$subquery' || op === '$col') + return true; + if (isPlainObject(operand) && ('$subquery' in operand || '$col' in operand)) + return true; } - return true; + return false; } // --------------------------------------------------------------------------- -// 操作符匹配 +// 统一递归求值器 // --------------------------------------------------------------------------- -function matchOperator(value, op, operand) { +/** 逻辑连接词(where 子句级) */ +function isLogicalKey(key) { + return key === '$and' || key === '$or' || key === '$not'; +} +/** 纯对象(非 null、非数组) */ +function isPlainObject(value) { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} +/** + * 求值一个 WHERE 子句(where 级)。 + * + * 顶层键要么是逻辑连接词,要么是列名: + * - `$and: [where...]` / `$or: [where...]` —— 子项是**完整 where 子句**; + * - `$not: where` —— 子项是完整 where 子句; + * - `$exists: boolean` —— 关联 EXISTS 解析结果标记; + * - `$caseResult` —— CASE WHEN 解析结果标记; + * - 其余键 = 列名,其值是**操作符对象**或裸值(裸值等价 `$eq`)。 + */ +function evalWhere(ctx, where) { + let acc = SQL_LOGICAL.TRUE; + for (const [key, condition] of Object.entries(where)) { + let one; + if (key === '$and') { + one = evalWhereLogical(ctx, condition, 'and'); + } + else if (key === '$or') { + one = evalWhereLogical(ctx, condition, 'or'); + } + else if (key === '$not') { + one = sqlNot(evalWhere(ctx, condition)); + } + else if (key === '$exists' || key === '$caseResult') { + one = condition === true ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + } + else { + one = evalValueCondition(ctx, resolveField(ctx, key), condition); + } + acc = sqlAnd(acc, one); + if (acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + } + return acc; +} +/** `$and` / `$or`(where 级):子项是完整 where 子句 */ +function evalWhereLogical(ctx, condition, kind) { + const subs = (Array.isArray(condition) ? condition : [condition]); + let acc = kind === 'and' ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + for (const sub of subs) { + const one = evalWhere(ctx, sub); + acc = kind === 'and' ? sqlAnd(acc, one) : sqlOr(acc, one); + // FALSE 在 AND 下、TRUE 在 OR 下都无法被后续子项改变 + if (kind === 'and' && acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (kind === 'or' && acc === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + } + return acc; +} +/** + * 取字段值。 + * + * 行里的键可能是 `t.id` 形式(JOIN / 子查询合并行),而 WHERE 键可能写作 + * `id`。既有行为是"精确命中优先,否则回退到唯一的后缀匹配";此处保持一致, + * 但**不再**像旧实现那样在多个别名同名字段间静默取第一个 —— 歧义由 Executor + * 的列解析阶段(`bindColumnRefs` / `assertProjectionColumnsExist`)负责报错。 + */ +function resolveField(ctx, field) { + if (field in ctx.row) + return ctx.row[field]; + let found = UNRESOLVED; + let hits = 0; + for (const key of Object.keys(ctx.row)) { + if (key.endsWith(`.${field}`)) { + found = ctx.row[key]; + hits += 1; + } + } + if (hits === 1) + return found; + if (hits > 1) + return UNRESOLVED; + return UNRESOLVED; +} +/** + * 求值"某个值是否满足条件"—— 字段条件与嵌套操作数条件共用的核心。 + * + * 位置无关性是本模块的关键:`{ $or: [ { $gt: 1 } ] }` 无论出现在字段位置 + * 还是顶层(历史单元测试的写法),子项都按**操作数条件**求值 —— 因为判别式 + * 相同:键以 `$` 开头且不是逻辑连接词,就是操作符;否则是列名。 + */ +function evalValueCondition(ctx, value, condition) { + if (!isPlainObject(condition)) { + // 裸值 = `$eq`;数组 = `$in` 列表(与既有 Mongo 风格 WHERE 兼容) + if (Array.isArray(condition)) + return sqlIn(value, condition); + return compareEquality(value, condition); + } + return evalOperatorObject(ctx, value, condition); +} +/** + * 求值一个操作符对象(`{ $gt: 1 }` / `{ $and: [...] }` / `{ $col: 'y' }` …)。 + * + * `$and` / `$or` 的每个子项按"操作数条件"递归 —— 这正是 `NOT BETWEEN` + * 生成的 `{ n: { $or: [ { $lt: 1 }, { $gt: 2 } ] } }` 能正确求值的原因。 + * 若子项实际是**完整 where 子句**(键是列名),则转交 `evalWhere`, + * 与当前行合并后求值(`$col` 上下文因此仍然有效)。 + */ +function evalOperatorObject(ctx, value, ops) { + // 纯列引用:{ $col: 'y' } = 与当前行的 y 列比较 + const keys = Object.keys(ops); + if (keys.length === 1 && keys[0] === '$col' && ctx.options.$col) { + return compareEquality(value, resolveField(ctx, String(ops.$col))); + } + let acc = SQL_LOGICAL.TRUE; + for (const [op, operand] of Object.entries(ops)) { + let one; + if (op === '$and') { + one = evalOperatorLogical(ctx, value, operand, 'and'); + } + else if (op === '$or') { + one = evalOperatorLogical(ctx, value, operand, 'or'); + } + else if (op === '$not') { + one = sqlNot(evalOperandSlot(ctx, value, operand)); + } + else { + one = evalOperator(ctx, value, op, operand); + } + acc = sqlAnd(acc, one); + if (acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + } + return acc; +} +/** `$and` / `$or`(操作符级):子项是操作数条件(操作符对象或裸值) */ +function evalOperatorLogical(ctx, value, condition, kind) { + const items = Array.isArray(condition) ? condition : [condition]; + let acc = kind === 'and' ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + for (const item of items) { + const one = evalOperandSlot(ctx, value, item); + acc = kind === 'and' ? sqlAnd(acc, one) : sqlOr(acc, one); + if (kind === 'and' && acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (kind === 'or' && acc === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + } + return acc; +} +/** + * 单个嵌套子项(`$and`/`$or`/`$not` 的操作数)的求值。 + * + * 两种合法形态,按**键的形状**判别,不做猜测性兜底: + * - 含非 `$` 开头(或逻辑连接词)的键 → 完整 where 子句,交由 `evalWhere`; + * - 其余 → 操作符对象,交由 `evalOperatorObject`。 + * + * 注意 `$not` 的子项**不会**走到这里被判为 where 子句:`evalOperatorObject` + * 对 `$not` 直接调用本函数,而 `{ $gte: 1 }` 全部键以 `$` 开头 → 操作符对象 ✓。 + * 若调用方写成 `{ $not: { n: { $gte: 1 } } }`(字段级 `$not` 包了 where 子句), + * 则按 where 子句解释 —— 这正是 `evalNestedSlot` 的判别分支,语义为 + * "NOT (该行满足 n >= 1)",与顶层 `$not` 一致。 + */ +function evalOperandSlot(ctx, value, item) { + if (!isPlainObject(item)) + return evalValueCondition(ctx, value, item); + const isWhereClause = Object.keys(item).some((k) => !k.startsWith('$') || isLogicalKey(k) || k === '$exists' || k === '$caseResult'); + return isWhereClause ? evalWhere(ctx, item) : evalOperatorObject(ctx, value, item); +} +/** + * 操作符求值(三值语义)。 + * + * - 比较类操作数含 NULL → UNKNOWN(此前 `$eq: null` 命中 NULL 行、`$ne: null` + * 命中所有非 NULL 行,两者都不符合 SQL 标准); + * - `$in` / `$nin` 用 `sqlIn` 的列表语义(列表含 NULL → 未命中时为 UNKNOWN); + * - `$like` 对 NULL 操作数返回 UNKNOWN(`String(null)` 会得到 "null" 去匹配, + * 属于静默错值); + * - `$isNull` / `$isNotNull` 是**谓词**,直接对 NULL 求值,不走比较。 + */ +function evalOperator(ctx, value, op, operand) { + const actual = resolveOperand(ctx, operand); switch (op) { - case '$eq': return value === operand; - case '$ne': return value !== operand; - case '$gt': return value > operand; - case '$gte': return value >= operand; - case '$lt': return value < operand; - case '$lte': return value <= operand; - case '$in': return Array.isArray(operand) && operand.includes(value); - case '$nin': return Array.isArray(operand) && !operand.includes(value); - case '$like': return compileLikeRegex(String(operand)).test(String(value)); + case '$eq': return compareEquality(value, actual); + case '$ne': return sqlNot(compareEquality(value, actual)); + case '$gt': return compareOrdered(value, actual, (c) => c > 0); + case '$gte': return compareOrdered(value, actual, (c) => c >= 0); + case '$lt': return compareOrdered(value, actual, (c) => c < 0); + case '$lte': return compareOrdered(value, actual, (c) => c <= 0); + case '$in': return Array.isArray(actual) ? sqlIn(value, actual) : SQL_LOGICAL.FALSE; + case '$nin': return Array.isArray(actual) ? sqlNot(sqlIn(value, actual)) : SQL_LOGICAL.FALSE; + case '$like': { + if (isSqlNull(value) || isSqlNull(actual) || isUnresolved(value) || isUnresolved(actual)) { + return SQL_LOGICAL.UNKNOWN; + } + return compileLikeRegex(String(actual)).test(String(value)) + ? SQL_LOGICAL.TRUE + : SQL_LOGICAL.FALSE; + } + // 谓词(不参与三值比较) + case '$isNull': return isSqlNull(value) ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + case '$isNotNull': return isSqlNull(value) ? SQL_LOGICAL.FALSE : SQL_LOGICAL.TRUE; + // `$col` 出现在操作符位置但未启用列上下文 → 无法求值 + case '$col': return ctx.options.$col + ? compareEquality(value, resolveField(ctx, String(operand))) + : SQL_LOGICAL.UNKNOWN; + // `$subquery` 必须由 Executor 先行解析(`resolveSubqueries`)。 + // 走到这里说明调用方跳过了 Executor:返回 UNKNOWN 让该行被排除, + // 而不是静默当 NULL 比较。 + case '$subquery': return SQL_LOGICAL.UNKNOWN; // v0.7.2: 未知操作符显式报错 —— 此前静默返回 true(所有行匹配), // 拼错操作符(如 $betwen)时过滤形同虚设且无任何提示 default: throw new DatabaseError(`Unknown where operator "${op}"`, 'QUERY_ERROR'); } } +/** + * 解析操作数槽位中的引用标记。 + * + * - `{ $col: 'y' }` → 当前行的 y 列值(仅在 `options.$col` 启用时); + * - `{ $subquery: [...] }` → UNRESOLVED,交由上层识别为"未解析"。 + * + * 这两种形态都是**对象**,而非"恰好等于某个值",所以必须在这里显式解引用, + * 否则 `sqlCompare(5, { $col: 'y' })` 会按不可比返回 UNKNOWN —— 恰好也是 + * UNKNOWN,但那会掩盖"调用方忘了传 `$col`"这一真正的配置错误。 + */ +function resolveOperand(ctx, operand) { + if (!isPlainObject(operand)) + return operand; + const keys = Object.keys(operand); + if (keys.length !== 1) + return operand; + if (keys[0] === '$col') { + return ctx.options.$col ? resolveField(ctx, String(operand.$col)) : UNRESOLVED; + } + if (keys[0] === '$subquery') + return UNRESOLVED; + return operand; +} +/** 相等比较(三值) */ +function compareEquality(value, operand) { + const truth = sqlCompare(value, operand); + if (truth === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (isSqlNull(value) || isSqlNull(operand) || isUnresolved(value) || isUnresolved(operand)) { + return SQL_LOGICAL.UNKNOWN; + } + return SQL_LOGICAL.FALSE; +} +/** 有序比较(三值):任一操作数 NULL/未解析/不可比 → UNKNOWN */ +function compareOrdered(value, operand, accept) { + const ord = sqlCompareOrder(value, operand); + if (ord === null) + return SQL_LOGICAL.UNKNOWN; + return accept(ord) ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; +} // --------------------------------------------------------------------------- // 排序 // --------------------------------------------------------------------------- @@ -256,6 +1026,218 @@ function projectColumns(row, columns) { return projected; } +/** + * metona-sqlark 统一行校验 —— 存储写入的**唯一**验证与规范化入口(v0.8.0) + * @module table/validation + * + * ============================================================================ + * 为什么必须合并(PLAN-v0.7.5.md 根因 1:关系语义在引擎间重复实现) + * ============================================================================ + * 修复前项目里存在**三份**行校验实现,覆盖范围各不相同: + * + * | 位置 | 类型检查 | required | PK 非空 | maxLength | min/max | 未知列 | + * |---|---|---|---|---|---|---| + * | `engine/memory.ts#validateRow`(disk/hybrid 继承) | ✓ | ✓ | ✓ | ✗ | ✗ | 静默丢弃 | + * | `engine/aria/index.ts#validateRow` → `checkFieldType` | ✓ | ✓ | ✓ | ✓ | ✓ | 静默丢弃 | + * | `table/schema.ts#validateRow` | ✓ | ✓ | ✓ | ✓ | ✓ | 静默丢弃 | + * + * 于是**同一份 schema、同一条 INSERT** 在 Aria 上抛 `maxLength` 错误,在 + * memory/disk/hybrid 上静默写入超长值(缺陷 A12)—— 用户的约束是否生效 + * 取决于他选了哪个引擎,且没有任何提示。 + * + * 更糟的是"未知列":`INSERT INTO t (id, nope) VALUES ('1', 2)` 在四个引擎上 + * 都**静默丢弃 `nope`**、插入成功。用户以为写进去了,`SELECT nope` 又报 + * COLUMN_NOT_FOUND —— 写路径与读路径对同一列名给出相反结论(缺陷 A17)。 + * + * 本模块把校验收敛成**一个定义**(`compileValidator`),所有引擎与 QueryBuilder + * 都从它取校验器: + * - 约束覆盖面是"并集",不可能再出现"Aria 报错、memory 不报"; + * - 未知列变成**显式错误**(`COLUMN_NOT_FOUND`,与读路径同一错误码); + * - 校验与**规范化**在同一处完成(`__proto__` 防污染、`undefined` 跳过、 + * `default` 填充),引擎只负责存储,不再各自解释 schema。 + * + * ============================================================================ + * 三种载荷形态,为什么不能合成一个函数 + * ============================================================================ + * - `validateRow` INSERT 语义:`default` 生效、缺列合法、`required` 按最终值判; + * - `validatePartial` UPDATE 语义:**只校验出现的列**(`{ a: undefined }` 表示 + * "不更新 a",不能被 required/min/max 判失败); + * - `assertNoUnknownColumns` 独立可复用的"列名存在性"检查(写路径预检)。 + * + * 把它们混成一个带 options 的函数会让"required 是否生效"取决于调用方参数, + * 从而重新引入跨路径差异 —— 本模块刻意保持三个显式入口。 + */ +// --------------------------------------------------------------------------- +// 编译 +// --------------------------------------------------------------------------- +/** + * 把 schema 编译成可复用的行校验器。 + * + * 为什么"编译"而不是每次都遍历 schema:校验处于每次 INSERT/UPDATE 的热路径上, + * 引擎在一次批量写入里会对成百上千行调用它。预先把列定义拆成列表 + 集合, + * 既避免重复的 `Object.entries`,也让"哪些键允许出现"成为可哈希的集合判断。 + * **不缓存**编译结果:schema 可被 `alterTable` 原地修改,长期缓存会用到过期列定义。 + */ +function compileValidator(schema) { + const table = schema.name; + const entries = Object.entries(schema.columns); + const columnNames = new Set(entries.map(([name]) => name)); + function assertNoUnknownColumns(row, knownColumns) { + const allowed = knownColumns ? new Set(knownColumns) : columnNames; + // 先收集未知列再报错:一次列出全部,避免用户"改一个报一个" + const unknown = []; + for (const key of Object.keys(row)) { + if (key === '__proto__') + continue; // 由 sanitize 阶段统一拒绝(消息不同) + if (!allowed.has(key)) + unknown.push(key); + } + if (unknown.length > 0) { + throw new DatabaseError(`Unknown column${unknown.length > 1 ? 's' : ''} ${unknown + .map((c) => `"${c}"`) + .join(', ')} in table "${table}". Known columns: ${[...allowed].join(', ')}`, 'COLUMN_NOT_FOUND'); + } + } + function validateRow(row, knownColumns) { + assertNoUnknownColumns(row, knownColumns); + const validated = {}; + for (const [colName, colDef] of entries) { + // INSERT 语义:缺列时 default 生效 + let value = row[colName]; + if (value === undefined && colDef.default !== undefined) + value = colDef.default; + assertNotNullConstraints(table, colName, colDef, value); + if (value !== undefined && value !== null) { + assertJsonSafeNumber(table, colName, value); + checkFieldType(table, colName, colDef.type, value, colDef); + } + // v0.8.0(B-1):缺列且无 default → 显式写入 NULL,**不能省略键**。 + // + // 此前 `if (value !== undefined) validated[colName] = value;` 会把这个列整个 + // 从行里删掉,于是存储行只含"有值的列",行形状取决于写入方式: + // INSERT INTO t (id, g) VALUES ('9','z') -- 行里没有 n 键 + // SELECT id, g, n FROM t WHERE id = '9' -- 抛 COLUMN_NOT_FOUND: n + // 而 `SELECT * FROM t` 却能正常返回(少一列而已)—— 同一行"有没有 n 列" + // 在读路径上给出相反结论。SQL 语义中"未提供值"就是 NULL,故统一补 null: + // 行始终包含全部 schema 列,投影/排序/三值比较才有统一前提。 + validated[colName] = value === undefined ? null : value; + } + return validated; + } + function validatePartial(row) { + const values = {}; + const unknown = []; + for (const [colName, value] of Object.entries(row)) { + if (colName === '__proto__') { + throw new DatabaseError('Column name "__proto__" is not allowed', 'VALIDATION_ERROR'); + } + const colDef = schema.columns[colName]; + if (!colDef) { + unknown.push(colName); + continue; + } + // UPDATE 语义:`undefined` 已由 stripUndefinedUpdates 过滤; + // 这里再挡一次,保证"未提供的列"绝不会被判 required 失败。 + if (value === undefined) + continue; + assertNotNullConstraints(table, colName, colDef, value); + if (value !== null) { + assertJsonSafeNumber(table, colName, value); + checkFieldType(table, colName, colDef.type, value, colDef); + } + values[colName] = value; + } + return { values, unknown }; + } + return { table, columns: columnNames, validateRow, validatePartial }; +} +// --------------------------------------------------------------------------- +// 共享约束 +// --------------------------------------------------------------------------- +/** + * 检查字段类型(含约束校验)。 + * + * v0.8.0(B-1):在 `checkFieldType`(table/schema.ts)之外**额外**拒绝 + * `NaN` 与 `±Infinity`。为什么必须有这一层: + * - JSON 无法表示它们 —— `JSON.stringify({ v: NaN })` 得到 `{"v":null}`, + * 于是 `INSERT ... VALUES (NaN)` 在内存引擎里是 NaN,落盘再读回来变成 null; + * 同一个库在"写后立即查"与"重启后查"得到不同结果,且没有任何提示。 + * - KVStore / Aria 的持久化路径都是 JSON,因此这是**所有**磁盘引擎的共性问题。 + * - 用户能构造出 NaN:`Number('abc')`、`0/0`、`parseFloat('x')` 等, + * 经由参数绑定进入写入路径。 + * 显式拒绝(`VALIDATION_ERROR`)让问题在写入时暴露,而不是变成读出来的 null。 + */ +function assertJsonSafeNumber(table, colName, value) { + if (typeof value !== 'number') + return; + if (Number.isFinite(value)) + return; + throw new DatabaseError(`Column "${colName}" in table "${table}" cannot store ${Number.isNaN(value) ? 'NaN' : String(value)}:` + + ' it is not representable in JSON and would be silently read back as null', 'VALIDATION_ERROR'); +} +/** + * NOT NULL 类约束。 + * + * 两条规则合并在一个函数里按顺序判断,是为了让错误消息稳定: + * - `required` → "is required"(用户声明的业务约束); + * - `primaryKey` → 隐含 NOT NULL(SQL 语义)。 + * 在此之前两者分散在两个引擎的 `validateRow` 里各写一遍,消息略有差异 + * (一个有表名后缀一个没有),依赖消息文本的测试只能各测各的引擎。 + */ +function assertNotNullConstraints(table, colName, colDef, value) { + if (colDef.required && (value === undefined || value === null)) { + throw new DatabaseError(`Column "${colName}" is required in table "${table}"`, 'VALIDATION_ERROR'); + } + // v0.7.4:主键列强制非空 —— 此前 null/undefined 主键被 String() 化为 + // "null"/"undefined" 静默入库,行再也无法按主键取回。 + if (colDef.primaryKey && (value === undefined || value === null)) { + throw new DatabaseError(`Primary key column "${colName}" in table "${table}" cannot be null or undefined`, 'VALIDATION_ERROR'); + } +} +// --------------------------------------------------------------------------- +// 字段类型与约束检查(唯一实现) +// --------------------------------------------------------------------------- +/** 检查字段类型(含约束校验) */ +function checkFieldType(tableName, colName, type, value, colDef) { + const jsType = typeof value; + switch (type) { + case 'string': + if (jsType !== 'string') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects string, got ${jsType}`, 'TYPE_ERROR'); + } + if (colDef?.maxLength !== undefined && value.length > colDef.maxLength) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" exceeds max length ${colDef.maxLength}`, 'VALIDATION_ERROR'); + } + break; + case 'number': + if (jsType !== 'number') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects number, got ${jsType}`, 'TYPE_ERROR'); + } + if (colDef?.min !== undefined && value < colDef.min) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} below minimum ${colDef.min}`, 'VALIDATION_ERROR'); + } + if (colDef?.max !== undefined && value > colDef.max) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} above maximum ${colDef.max}`, 'VALIDATION_ERROR'); + } + break; + case 'boolean': + if (jsType !== 'boolean') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); + } + break; + case 'date': + if (jsType !== 'string' || isNaN(Date.parse(value))) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects valid date string, got ${typeof value}`, 'TYPE_ERROR'); + } + break; + case 'json': + if (jsType !== 'object') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); + } + break; + } +} + /** * metona-sqlark Schema — 表结构定义与校验 * @module table/schema @@ -315,46 +1297,6 @@ function stripUndefinedUpdates(updates) { } return clean; } -/** 检查字段类型(含约束校验) */ -function checkFieldType(tableName, colName, type, value, colDef) { - const jsType = typeof value; - switch (type) { - case 'string': - if (jsType !== 'string') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects string, got ${jsType}`, 'TYPE_ERROR'); - } - if (colDef?.maxLength !== undefined && value.length > colDef.maxLength) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" exceeds max length ${colDef.maxLength}`, 'VALIDATION_ERROR'); - } - break; - case 'number': - if (jsType !== 'number') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects number, got ${jsType}`, 'TYPE_ERROR'); - } - if (colDef?.min !== undefined && value < colDef.min) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} below minimum ${colDef.min}`, 'VALIDATION_ERROR'); - } - if (colDef?.max !== undefined && value > colDef.max) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} above maximum ${colDef.max}`, 'VALIDATION_ERROR'); - } - break; - case 'boolean': - if (jsType !== 'boolean') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); - } - break; - case 'date': - if (jsType !== 'string' || isNaN(Date.parse(value))) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects valid date string, got ${typeof value}`, 'TYPE_ERROR'); - } - break; - case 'json': - if (jsType !== 'object') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); - } - break; - } -} /** 将 AST 列定义转换为 ColumnDef */ function astColumnToColumnDef(astCol) { return { @@ -480,6 +1422,53 @@ class MemoryEngine { throw new DatabaseError(`Column "${column.name}" already exists in table "${tableName}"`, 'COLUMN_EXISTS'); } schema.columns[column.name] = column; + // v0.8.0 根治:ALTER ADD 必须建立二级索引桶。 + // + // 此前只写 schema.columns 而不建桶,而唯一性预检完全依赖索引桶 + // (`tableIndexes.get(colName)` 缺失即整段跳过)—— 于是 + // `ALTER TABLE t ADD COLUMN email STRING UNIQUE` 之后插入重复 email + // **不会报错**;close/reopen 时 createTable 依 schema 建桶、回灌第 2 行 + // 触发 UNIQUE_VIOLATION 而异常被引擎 open 路径吞掉 → **行静默消失**。 + if (column.index || column.unique) { + if (!this.indexes.has(tableName)) + this.indexes.set(tableName, new Map()); + const tableIndexes = this.indexes.get(tableName); + if (!tableIndexes.has(column.name)) + tableIndexes.set(column.name, new Map()); + // 已存在行:先校验存量唯一性(重复则回滚本次 ALTER),再回填索引桶 + const colIndex = tableIndexes.get(column.name); + const table = this.tables.get(tableName); + const seen = new Set(); + for (const [pk, row] of table) { + const value = row[column.name]; + if (value === null || value === undefined) + continue; // null 不受唯一约束 + if (column.unique && seen.has(value)) { + tableIndexes.delete(column.name); + delete schema.columns[column.name]; + throw new DatabaseError(`Duplicate value "${String(value)}" for UNIQUE column "${column.name}" in table "${tableName}"`, 'UNIQUE_VIOLATION'); + } + seen.add(value); + let pks = colIndex.get(value); + if (!pks) { + pks = new Set(); + colIndex.set(value, pks); + } + pks.add(pk); + } + } + // v0.8.0(B-1):ADD 列在**已有行**上物化为 NULL。 + // + // 行校验契约(table/validation.ts)保证"行含全部 schema 列",若 ALTER ADD + // 不补齐,新列在旧行上就是**键不存在**:内存里 `{id,name}`、而同一行经 + // 落盘再读回(KVStore/Aria 的恢复路径会走 validateRow)变成 + // `{id,name,phone:null}` —— 同一行的形状取决于"是否重启过"。 + // 显式物化后,内存视图与持久化视图一致。 + const addTable = this.tables.get(tableName); + for (const row of addTable.values()) { + if (!(column.name in row)) + row[column.name] = null; + } return; } if (!schema.columns[column.name]) { @@ -536,10 +1525,12 @@ class MemoryEngine { } /** v0.7.3: 按主键取已验证行(KVStoreEngine 持久化 validated 行用,含 default/类型归一) */ getRow(tableName, pkValue) { + // v0.8.0: 返回副本(调用方用于持久化,不得持有内部引用) const table = this.tables.get(tableName); if (!table) return null; - return table.get(pkValue) ?? null; + const row = table.get(pkValue); + return row ? cloneRow(row) : null; } async find(tableName, query) { this.ensureTable(tableName); @@ -557,7 +1548,9 @@ class MemoryEngine { if (query.columns && query.columns.length > 0 && query.columns[0] !== '*') { results = results.map((row) => projectColumns(row, query.columns)); } - return results; + // v0.8.0: 返回副本 —— 此前直接交出内部行对象,调用方原地修改即改写存储 + // 并让索引与行失配(该行从此查不出来)。见 engine/interface.ts 的行所有权约定。 + return results.map((row) => cloneRow(row)); } /** v0.4.0: 流式查询 — 逐行回调(单次迭代,不物化结果数组) */ async findStream(tableName, query, onRow) { @@ -578,7 +1571,7 @@ class MemoryEngine { skipped++; continue; } - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); count++; if (count >= limit) break; @@ -592,11 +1585,16 @@ class MemoryEngine { const pkCol = this.getPrimaryKey(schema); // v0.7.2: undefined 值视为"不更新该列"(保留旧值),null 显式置空 const cleanUpdates = stripUndefinedUpdates(updates); - // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, - // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in UPDATE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 // v0.7.4: 未知列显式报错 —— 此前 SET nonexistent = ... 被静默写入存储行 // (validateRow 只遍历 schema 列,脏列残留在行内并随持久化落盘) for (const col of Object.keys(cleanUpdates)) { @@ -609,6 +1607,20 @@ class MemoryEngine { // → 无事务下语句级部分提交(数据半更新且调用方已收到错误)。 const planned = []; const batchUnique = new Map(); + /** + * v0.8.0 根治:批内新主键互查。 + * + * 此前阶段 1 只用 `table.has(newPk)` 与**语句执行前的表**比对,看不到同一语句内 + * 其它行即将写入的新主键。于是 `UPDATE t SET id = 'X'`(匹配 2 行)在阶段 2 + * 逐行 `table.set(newPk, ...)` 相互覆盖 —— 返回 affected=2,表中却只剩 1 行 + * (静默丢行)。INSERT 路径在 v0.7.3 已做批内 PK Set 互查,UPDATE 漏了。 + * + * 保守拒绝策略:同一语句内两行改到同一新主键必然互相覆盖,直接报错。 + * 注意这也会拒绝"两行互换主键"(A:x→y, B:y→x)这种最终状态合法的写法 —— + * 那属于需要基于最终状态判定的场景,宁可显式报错也不静默丢行 + * (与既有的"唯一值交换更新保守拒绝"语义一致)。 + */ + const batchNewPks = new Set(); // 阶段 1:全量预检(任何一行失败 → 整条语句不执行) for (const [pk, row] of table) { if (query.where && Object.keys(query.where).length > 0 && !matchWhere(row, query.where)) @@ -621,6 +1633,13 @@ class MemoryEngine { if (newPk !== pk && table.has(newPk)) { throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (cannot update key to existing value)`, 'DUPLICATE_KEY'); } + // v0.8.0: 批内互查 —— 同一语句内两行改到同一新主键 → 整体拒绝(不得静默覆盖) + if (newPk !== pk) { + if (batchNewPks.has(newPk)) { + throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (multiple rows in the same statement update to the same key)`, 'DUPLICATE_KEY'); + } + batchNewPks.add(newPk); + } planned.push({ pk, row, updated, newPk }); } // 阶段 1b:主键变更 RESTRICT 预检(引用表依赖行检查,任何修改前) @@ -764,11 +1783,21 @@ class MemoryEngine { continue; if (colDef.onUpdate !== 'CASCADE' && colDef.onUpdate !== 'SET NULL') continue; + // v0.8.0(B-1):级联写入也必须过统一校验。 + // + // 此前这里**直接赋值**绕过校验:`onUpdate: 'CASCADE'` 把新主键写入引用列时, + // 若该列有 maxLength / min / max 约束(新主键更长或超出范围), + // 约束被静默绕过 —— 与 A12 是同一类"校验只在部分写入路径生效"的问题。 + // SET NULL 到 required/非空列的检查由 checkUpdateRestrict 在任何修改前完成, + // 此处再校验可同时覆盖 maxLength/min/max 这类"具体值相关"的约束。 + const validator = this.rowValidator(refSchema); for (const [refPk, refRow] of refTableData) { if (String(refRow[colName]) !== oldPk) continue; + const nextValue = colDef.onUpdate === 'CASCADE' ? newPk : null; + const { values } = validator.validatePartial({ [colName]: nextValue }); this.removeIndexEntries(refTableName, refRow, refPk); - refRow[colName] = colDef.onUpdate === 'CASCADE' ? newPk : null; + refRow[colName] = values[colName]; this.updateIndexes(refTableName, refRow, refPk); } } @@ -776,11 +1805,16 @@ class MemoryEngine { } async delete(tableName, query) { this.ensureTable(tableName); - // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, - // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in DELETE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const table = this.tables.get(tableName); const toDelete = []; for (const [pk, row] of table) { @@ -1006,49 +2040,40 @@ class MemoryEngine { return Object.keys(schema.columns)[0]; } validateRow(schema, row) { - const validated = {}; - for (const [colName, colDef] of Object.entries(schema.columns)) { - let value = row[colName]; - if (value === undefined && colDef.default !== undefined) - value = colDef.default; - if (colDef.required && (value === undefined || value === null)) { - throw new DatabaseError(`Column "${colName}" is required in table "${schema.name}"`, 'VALIDATION_ERROR'); - } - // v0.7.4: 主键列强制非空(SQL 语义 PK 隐含 NOT NULL)—— - // 此前 null/undefined 主键被 String() 化为 "null"/"undefined" 静默入库 - if (colDef.primaryKey && (value === undefined || value === null)) { - throw new DatabaseError(`Primary key column "${colName}" in table "${schema.name}" cannot be null or undefined`, 'VALIDATION_ERROR'); - } - if (value !== undefined && value !== null) - this.checkType(colName, colDef.type, value); - if (value !== undefined) - validated[colName] = value; - } - return validated; + // v0.8.0(B-1):委托给**唯一**的行校验实现(table/validation.ts)。 + // + // 此前这里是第三份独立实现:只做类型检查,**没有** maxLength / min / max + // 约束(Aria 有)—— 于是同一份 schema、同一条 INSERT 是否报错取决于引擎 + //(缺陷 A12)。同时它对未知列静默丢弃(A17)。 + return this.rowValidator(schema).validateRow(row); } - checkType(colName, type, value) { - const jsType = typeof value; - switch (type) { - case 'string': - if (jsType !== 'string') - throw new DatabaseError(`Column "${colName}" expects string, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'number': - if (jsType !== 'number') - throw new DatabaseError(`Column "${colName}" expects number, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'boolean': - if (jsType !== 'boolean') - throw new DatabaseError(`Column "${colName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'date': - if (jsType !== 'string' || isNaN(Date.parse(value))) - throw new DatabaseError(`Column "${colName}" expects valid date`, 'TYPE_ERROR'); - break; - case 'json': - if (jsType !== 'object') - throw new DatabaseError(`Column "${colName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); - break; + /** + * 取该 schema 的行校验器(每次调用重新编译)。 + * + * 不缓存在引擎字段上:`alterTable` 会原地修改 schema 对象, + * 长期缓存会继续用过期列定义("加了列却仍被当未知列"这类难查问题)。 + * 编译本身只是 `Object.entries` + Set 构造,相对一次 INSERT 的索引维护可忽略。 + */ + rowValidator(schema) { + return compileValidator(schema); + } + /** + * v0.8.0(B-1):写入前置校验(见 `IStorageEngine.validatePayload` 契约)。 + * + * 引擎在 `insert` / `update` 内部**同样**会校验 —— 本方法只是让 Executor 与 + * QueryBuilder 能在"开始写入之前"拿到同一套判定结果,从而: + * - 多行 INSERT 的预检发生在任何副作用之前(错误信息带列名清单); + * - 直通路径与 SQL 路径不可能给出不同结论(同一个 `compileValidator`)。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureTable(tableName); + const schema = this.schemas.get(tableName); + const validator = this.rowValidator(schema); + for (const row of rows) { + if (mode === 'update') + validator.validatePartial(stripUndefinedUpdates(row)); + else + validator.validateRow(row); } } /** 索引查找 */ @@ -1091,6 +2116,15 @@ class MemoryEngine { // IS NULL 恒空(对齐 AriaEngine v0.6.2 修复) if (targetValue === null || targetValue === undefined) continue; + // v0.8.0 根治(与 AriaEngine 同步):**非原始值**(对象/数组)一律不走索引。 + // + // 索引键只存原始值,因此 colIndex.get({...}) 恒 undefined → 下面 `return []` + // 会短路全表扫描 → 结果静默为空。真实触发场景正是"未解析的操作数": + // { $eq: { $col: 'y' } } ← 列对列比较(t.x = t.y) + // { $in: { $subquery: ... } } ← 关联 IN 子查询 + // 它们本该由 executor 逐行求值,却先在这里被索引路径吞成空集。 + if (typeof targetValue === 'object') + continue; const colIndex = tableIndexes.get(col); if (colIndex) { const pks = colIndex.get(targetValue); @@ -1379,58 +2413,91 @@ class OPFSBackend { } } -/** - * KVStore SharedMemory Medium — 跨实例共享的内存介质 - * @module engine/kvstore/shared_memory_medium - * - * v0.6.0: 替代 fake-indexeddb 的测试/Node 环境介质。 - * 与 MemoryBackend 的区别:数据按库名存于全局注册表,close() 不清除 - * (模拟"磁盘持久化"语义——重新 open 同名库可读到上次写入的数据)。 - * - * 仅用于测试与 Node 环境;浏览器使用 OPFS 介质(KVStore 默认自动选择)。 - */ -/** 全局注册表:dbName → key → chunk 列表(跨实例共享,模拟持久化) */ +/** 全局注册表:dbName(+ 库 id)→ 共享存储(跨实例共享,模拟持久化) */ const registry = new Map(); +/** + * 库 id 计数器:用于 `clearRegistry()` 后让"同名但属于新会话"的库拿到 + * **新的** DbStore,而不是复用上一会话残留的对象引用。 + */ +let registryEpoch = 0; +/** 当前会话里 dbName → 本次会话的 DbStore(换代后失效) */ +let liveStores = new Map(); +function storeFor(name) { + const live = liveStores.get(name); + if (live && live.epoch === registryEpoch) + return live.store; + const existing = registry.get(name); + if (existing) { + // 同一会话内复用(多个 backend 实例共享同一份字节) + liveStores.set(name, { epoch: registryEpoch, store: existing }); + return existing; + } + const created = { chunks: new Map(), materialized: new Map() }; + registry.set(name, created); + liveStores.set(name, { epoch: registryEpoch, store: created }); + return created; +} class SharedMemoryBackend { constructor() { this.dbName = ''; - /** 存储:key → chunk 列表(append O(1),read 时一次性拼接缓存) */ - this.chunks = new Map(); - /** 惰性拼接缓存(read 后缓存,write/append 失效) */ - this.materialized = new Map(); + this.store = null; } - /** 清空全局注册表(测试隔离用) */ + /** + * 清空全局注册表(测试隔离用)。 + * + * 同时让"当前会话"失效:后续 open 会为同名库创建全新的存储 —— + * 否则 `clearRegistry()` 之后新建的实例可能仍指向上一用例的 DbStore + *(注册表被清空但对象引用还活在旧实例里),出现跨用例数据泄漏。 + */ static clearRegistry() { registry.clear(); + registryEpoch += 1; + liveStores = new Map(); } async open(name) { this.dbName = name; - if (!registry.has(name)) { - registry.set(name, new Map()); - } - // 从注册表恢复 chunks(持久化语义) - this.chunks = registry.get(name); - this.materialized = new Map(); + this.store = storeFor(name); } /** close 不清除数据(持久化语义:重开同名库数据仍在) */ async close() { - this.chunks = new Map(); - this.materialized = new Map(); + this.store = null; } isOpen() { - return this.dbName !== ''; + return this.dbName !== '' && this.store !== null; + } + /** + * 取当前共享存储。 + * + * v0.8.0:`close()` 之后**不再**惰性重新绑定到共享存储 —— 那会让 + * "close 后读不到数据"变成"close 后又读到了"(实测该行为被 + * `tests/production-abnormal.test.ts` 的 close 契约用例逮到)。 + * + * 正确语义(与既有契约一致,见该用例注释): + * - close 后读 → `null`(本实例已不持有数据); + * - close 后写/删/清空 → **不抛错**,但作用在游离内存上、**不持久化** + * - 跨实例持久化语义不受影响:另一个实例 open 同名库仍能读到 close 前的数据。 + */ + db() { + if (!this.store) { + // 游离存储:仅供 close 后的调用"安全落地",不进入注册表 + this.store = { chunks: new Map(), materialized: new Map() }; + } + return this.store; } async read(key) { - if (this.materialized.has(key)) - return this.materialized.get(key); - const list = this.chunks.get(key); - if (!list || list.length === 0) + const db = this.db(); + if (db.materialized.has(key)) + return db.materialized.get(key) ?? null; + const list = db.chunks.get(key); + if (!list || list.length === 0) { + db.materialized.set(key, null); return null; + } if (list.length === 1) { - this.materialized.set(key, list[0]); + db.materialized.set(key, list[0]); return list[0]; } - const total = list.reduce((s2, c) => s2 + c.byteLength, 0); + const total = list.reduce((sum, c) => sum + c.byteLength, 0); const combined = new Uint8Array(total); let off = 0; for (const c of list) { @@ -1438,50 +2505,56 @@ class SharedMemoryBackend { off += c.byteLength; } const buf = combined.buffer; - this.materialized.set(key, buf); + db.materialized.set(key, buf); return buf; } async write(key, data) { - this.chunks.set(key, [data]); - this.materialized.set(key, data); + const db = this.db(); + db.chunks.set(key, [data]); + db.materialized.set(key, data); } async append(key, data) { - // O(1) 追加:只记录 chunk,read 时惰性拼接 - const list = this.chunks.get(key); - if (list) { + // O(1) 追加:只记录 chunk,read 时惰性拼接。 + // 缓存按库共享,因此这里清掉的缓存对所有实例都生效 —— 这正是 + // "另一个实例的写入必须对自己可见"这一语义的实现点。 + const db = this.db(); + const list = db.chunks.get(key); + if (list) list.push(data); - } - else { - this.chunks.set(key, [data]); - } - this.materialized.delete(key); + else + db.chunks.set(key, [data]); + db.materialized.delete(key); } async writeMany(entries) { // 同步批量写入 = 原子(JS 单线程,无中间 await 点) + const db = this.db(); for (const [key, data] of Object.entries(entries)) { - this.chunks.set(key, [data]); - this.materialized.set(key, data); + db.chunks.set(key, [data]); + db.materialized.set(key, data); } } async delete(key) { - this.chunks.delete(key); - this.materialized.delete(key); + const db = this.db(); + db.chunks.delete(key); + db.materialized.set(key, null); } async deleteMany(keys) { + const db = this.db(); for (const key of keys) { - this.chunks.delete(key); - this.materialized.delete(key); + db.chunks.delete(key); + db.materialized.set(key, null); } } async listKeys() { - return Array.from(this.chunks.keys()); + return Array.from(this.db().chunks.keys()); } async exists(key) { - return this.chunks.has(key); + return this.db().chunks.has(key); } async clear() { - this.chunks.clear(); - this.materialized.clear(); + const db = this.db(); + db.chunks.clear(); + db.materialized.clear(); } } @@ -1837,6 +2910,16 @@ class KVStore { this.opQueue = Promise.resolve(); /** 最近一次后台操作失败(checkpoint 时报告) */ this.lastBackgroundError = null; + /** + * v0.8.0(B-6):本实例的提交所有权标识。 + * + * 每次 `open()` 领取一个新的随机 id 并写入 meta(见 `claimOwnership`)。 + * checkpoint 前比对 `meta.owner`:不等于自己 → 介质已被更新的实例接管, + * 本实例的索引可能落后,**不得**再提交快照(否则会静默抹掉对方的写入)。 + */ + this.instanceId = ''; + /** 是否已被更新的实例接管(进入该状态后所有写入与提交都被拒绝) */ + this.stale = false; this.medium = medium ?? defaultMedium(); this.checkpointThreshold = checkpointThreshold; } @@ -1853,7 +2936,12 @@ class KVStore { this.dbName = dbName; // v0.7.4: 打开时同样清理后台错误状态(防 close/reopen 残留) this.lastBackgroundError = null; + this.stale = false; await this.medium.open(dbName); + // v0.8.0(B-6):领取提交所有权(写回 meta.owner)。 + // 打开是唯一"接管"介质的时机;此前的实例之后会在 checkpoint 时发现 + // owner 已变而拒绝提交,从而不会用陈旧索引覆盖本实例的数据。 + await this.claimOwnership(); this.index = new Map(); this.seq = 0; this.logBytes = 0; @@ -1899,8 +2987,17 @@ class KVStore { this.logBytes = log.byteLength; } if (corruptOffsets.length > 0) { - // 损坏尾部:截断日志(丢弃未确认记录),下次 checkpoint 落盘 - await this.truncateLog(); + // v0.8.0(B-6)根治:损坏尾部只能**截断到最后一条有效记录**, + // 绝不能清空整个日志。 + // + // 修复前这里调用 `truncateLog()`(写空文件),于是"尾部一个字节损坏" + // 导致**全部已确认写入消失**: + // 写 3 条记录 → 第 4 条只写了一半(崩溃)→ 重开 + // → 前 3 条被上面的重放读到内存,随后被 truncateLog() 从介质上抹掉 + // → 再重开一次,数据全部为空。 + // 这是本项目最严重的一类缺陷:把"损坏尾部"放大成"整库丢失"。 + // 正确做法(与 repair() 一致):保留 [0, validBytes) 前缀。 + await this.truncateLogTo(this.findValidLogLength(log)); } } this.opened = true; @@ -1938,6 +3035,8 @@ class KVStore { // v0.7.4: 清理后台错误状态 —— 此前跨 close/reopen 残留, // 重开后首次 checkpoint 会抛出上一次生命周期的旧错误 this.lastBackgroundError = null; + this.instanceId = ''; + this.stale = false; this.opened = false; } // ======================================================================= @@ -2020,6 +3119,8 @@ class KVStore { /** checkpoint:快照 → meta → 截断日志(时序保证任何崩溃窗口不丢数据) */ async checkpoint() { await this.enqueue(async () => { + // v0.8.0(B-6):提交前确认所有权 —— 拒绝用陈旧索引覆盖介质 + await this.assertOwnership(); // 报告上次后台失败 if (this.lastBackgroundError !== null) { const error = this.lastBackgroundError; @@ -2031,9 +3132,8 @@ class KVStore { // 1. 写快照(COW 原子) const snapBytes = encodeSnapshot(this.seq, this.index); await this.medium.write(SNAPSHOT_KEY, snapBytes.buffer); - // 2. 写 meta(指向新水位) - const meta = { seq: this.seq }; - await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); + // 2. 写 meta(指向新水位 + 续期所有权) + await this.writeMeta(); // 3. 截断日志(meta 已更新 → 截断安全) await this.truncateLog(); }); @@ -2087,6 +3187,12 @@ class KVStore { } /** 追加一条日志记录并更新内存索引(队列内调用,无并发) */ async appendRecord(puts, deletes, appends = {}) { + // v0.8.0(B-6):已被接管 → 拒绝写入(否则写入只会进 WAL 而永远无法提交, + // 或者在下一次 checkpoint 时把对方的提交覆盖掉) + if (this.stale) { + throw new DatabaseError('KVStore instance has been superseded by another instance on the same database;' + + ' re-open the database to continue', 'STALE_INSTANCE'); + } this.seq++; const record = encodeLogRecord(this.seq, puts, deletes, appends); try { @@ -2136,13 +3242,41 @@ class KVStore { this.logBytes += record.byteLength; // 自动 checkpoint(日志超阈值) if (this.checkpointThreshold > 0 && this.logBytes >= this.checkpointThreshold) { - await this.medium.write(SNAPSHOT_KEY, encodeSnapshot(this.seq, this.index).buffer); - const meta = { seq: this.seq }; - await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); - await this.truncateLog(); + await this.autoCheckpoint(); } } - /** 截断日志(清空文件) */ + /** + * v0.8.0(B-6)根治:自动 checkpoint 的失败语义。 + * + * 此前的顺序是"WAL 追加成功 → 更新内存索引 → 自动 checkpoint",而自动 + * checkpoint **没有 try/catch**:快照/元数据写失败会把异常抛出 `appendRecord`, + * 一路冒泡到调用方 —— 但那条写入**已经持久化在 WAL 里了**(WAL 是权威来源, + * 崩溃后一定能重放出来)。于是用户看到 `put()` 失败、以为数据没进去, + * 实际数据已经落盘 —— 报错与事实相反,属于最有害的一类不一致 + * (调用方据此重试会写入两次,或据"失败"丢弃业务状态)。 + * + * 现在的语义(与 PLAN-v0.7.5.md 的 B-6 止血方案一致): + * - 已确认的写入**不得**因为后台失败而报错; + * - 失败被记录为 `lastBackgroundError`,由**下一次** `checkpoint()` + * 显式报告(那是用户主动要求把数据压实到快照的时机,此时失败是真实问题); + * - 内存索引与 WAL 仍然一致(两者都已包含这条写入),不产生半状态。 + */ + async autoCheckpoint() { + try { + await this.assertOwnership(); + await this.medium.write(SNAPSHOT_KEY, encodeSnapshot(this.seq, this.index).buffer); + await this.writeMeta(); + await this.truncateLog(); + } + catch (error) { + // 陈旧实例的自动 checkpoint 失败**不**计入 lastBackgroundError: + // 那会把它伪装成"介质故障",而真实原因是本实例已被接管,用户需要的是 + // 立即的、明确的 STALE_INSTANCE 错误(由 assertOwnership 在显式路径给出)。 + if (!this.stale) + this.lastBackgroundError = error; + } + } + /** 截断日志(清空文件)—— 仅用于 checkpoint 之后:快照已覆盖全部数据 */ async truncateLog() { try { await this.medium.write(LOG_KEY, new ArrayBuffer(0)); @@ -2150,6 +3284,29 @@ class KVStore { catch { /* 截断失败:下次 checkpoint 重试 */ } this.logBytes = 0; } + /** + * v0.8.0(B-6):把日志截断到 `keepBytes` 长度(保留有效前缀)。 + * + * 与 `truncateLog()` 的区别:checkpoint 后日志内容已被快照覆盖,可以清空; + * 而崩溃恢复时日志里**前面的记录是唯一的数据来源**(快照可能落后很多个 + * checkpoint),只能丢弃损坏的尾部。两者语义完全不同,因此是两个方法。 + */ + async truncateLogTo(keepBytes) { + try { + const raw = await this.medium.read(LOG_KEY); + if (!raw) + return; + if (keepBytes >= raw.byteLength) + return; // 无需截断(损坏判定与读取之间无变化) + const kept = new Uint8Array(raw).subarray(0, keepBytes).slice(); + await this.medium.write(LOG_KEY, kept.buffer); + this.logBytes = keepBytes; + } + catch { + // 截断失败不影响本次恢复的内存状态:日志文件多出的损坏尾部会在 + // 下次 open 时被同样识别并跳过(解析在损坏处停止),因此不会读到脏数据。 + } + } /** 应用记录条目到内存索引 */ applyRecord(entries) { for (const e of entries) { @@ -2173,6 +3330,58 @@ class KVStore { } } } + // ======================================================================= + // 提交所有权(v0.8.0 / B-6) + // ======================================================================= + /** 生成实例 id(无需密码学强度,只要同期实例间不碰撞) */ + newInstanceId() { + const rand = Math.random().toString(36).slice(2); + return `kv-${Date.now().toString(36)}-${rand}`; + } + /** 读取 meta(缺失或损坏时返回 null) */ + async readMeta() { + try { + const raw = await this.medium.read(META_KEY); + if (!raw || raw.byteLength === 0) + return null; + return JSON.parse(new TextDecoder().decode(raw)); + } + catch { + return null; + } + } + /** 写入 meta(水位 + 所有权续期) */ + async writeMeta() { + const meta = { seq: this.seq, owner: this.instanceId }; + await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); + } + /** open() 时领取所有权:写入本实例 id,使此前打开的实例在提交时发现自己已过期 */ + async claimOwnership() { + this.instanceId = this.newInstanceId(); + await this.writeMeta(); + } + /** + * 提交前校验所有权。 + * + * 只有当介质上的 owner 存在、且**不是**本实例时才算过期: + * - owner 缺失(旧版本库 / meta 被清理)→ 视为无主,允许提交; + * - owner === 自己 → 正常。 + * 一旦判定过期,本实例进入 `stale` 状态:后续写入与提交都显式报错 —— + * 显式失败远好于静默丢数据(这是本 wound 的全部意义)。 + */ + async assertOwnership() { + const meta = await this.readMeta(); + if (meta?.owner && this.instanceId && meta.owner !== this.instanceId) { + this.stale = true; + throw new DatabaseError('KVStore instance has been superseded by another instance on the same database' + + ' (refusing to commit a stale snapshot, which would discard the newer instance\'s writes);' + + ' re-open the database to continue', 'STALE_INSTANCE'); + } + } + /** 本实例是否已被更新实例接管(诊断用) */ + isStale() { + return this.stale; + } /** 确定日志中有效字节长度(从 0 开始连续解析到第一条损坏/残缺记录) */ findValidLogLength(log) { let offset = 0; @@ -2417,6 +3626,17 @@ class KVStoreEngine { } } // ---- CRUD ---- + /** + * v0.8.0(B-1):写入前置校验 —— 委托给内存引擎(两者共享同一 schema 表)。 + * + * KVStore/Hybrid 的行校验一直"继承"自 MemoryEngine,这正是 A12 的成因: + * 三者共用一份**缺 maxLength/min/max** 的实现。现在共享的是 + * `table/validation.ts` 的规范实现,继承关系不再影响约束覆盖面。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureOpen(); + return this.memory.validatePayload(tableName, rows, mode); + } async insert(tableName, rows) { this.ensureOpen(); const pks = await this.memory.insert(tableName, rows); @@ -2876,6 +4096,19 @@ var WALRecordType; WALRecordType[WALRecordType["ROLLBACK"] = 6] = "ROLLBACK"; WALRecordType[WALRecordType["CREATE_TABLE"] = 7] = "CREATE_TABLE"; WALRecordType[WALRecordType["DROP_TABLE"] = 8] = "DROP_TABLE"; + /** + * v0.8.0: 回滚到保存点。 + * + * 为什么必须有这条记录:`ROLLBACK TO ` 此前只改内存快照、**不写 WAL**, + * 而 COMMIT 会把整个 txnId 标记为已提交,恢复时按"该事务的全部记录"重放 —— + * 于是被 savepoint 回滚掉的行在崩溃重启后**复活**(实测:实时只剩 a, + * 崩溃重开变成 a+b)。反向也有问题:跨事务复用的陈旧 savepoint 会让当前事务的 + * 写入被上一事务的快照静默替换。 + * + * 记录语义:该事务在此之前的写入都应被丢弃 —— 恢复时只应用该事务**最后一条** + * SAVEPOINT_ROLLBACK 之后的记录。 + */ + WALRecordType[WALRecordType["SAVEPOINT_ROLLBACK"] = 9] = "SAVEPOINT_ROLLBACK"; })(WALRecordType || (WALRecordType = {})); // ============================================================================= // MVCC @@ -4194,6 +5427,8 @@ class LSM { this.levels = []; this.sstableCache = new Map(); this.cacheSize = 0; + /** v0.8.0: 超过缓存上限、不进入 LRU 的 SSTable(每次读取按需加载) */ + this.oversizedSSTables = new Set(); this.operationCount = 0; this.initialized = false; this.compacting = false; // 防止重复触发 compaction @@ -4270,6 +5505,23 @@ class LSM { this.freezeMemtable(); } } + /** v0.8.0: 当前 SSTable 缓存占用字节数(公开访问器,替代测试直接读私有字段) */ + getCacheSize() { + return this.cacheSize; + } + /** v0.8.0: 当前缓存上限(字节) */ + getCacheLimit() { + return this.cacheLimitBytes; + } + /** v0.8.0: 常驻(超过缓存上限、不参与驱逐)的 SSTable 数量 */ + getOversizedCount() { + return this.oversizedSSTables.size; + } + /** v0.8.0: 运行期调整缓存上限(测试与内存预算调优用),立即裁剪到新上限 */ + setCacheLimit(bytes) { + this.cacheLimitBytes = Math.max(0, bytes); + this.trimCache(); + } /** 获取估算内存使用(字节) */ getEstimatedMemory() { let mem = this.memtable.getEstimatedSize(); @@ -4345,7 +5597,7 @@ class LSM { bloomData: null, }; // 缓存 - this.cacheSSTable(id, sstableData); + this.tryCacheSSTable(id, sstableData); this.trimCache(); // 持久化:先存数据,再存元数据(串行链保证顺序与 id 一致) await this.sstableStore.save(id, sstableData); @@ -4503,7 +5755,11 @@ class LSM { } return undefined; } - get(key) { + /** + * v0.8.0: 改为 async —— SSTable 部分未命中缓存时会 `await` 回源, + * 因此读取不再依赖调用方的 prefetch(消除"缓存未命中即静默丢数据")。 + */ + async get(key) { // 1. 活跃 MemTable let result = this.memtable.get(key); if (result !== null) @@ -4519,7 +5775,7 @@ class LSM { for (const meta of this.levels[level]) { if (key < meta.minKey || key > meta.maxKey) continue; - const reader = this.loadSSTableReader(meta); + const reader = await this.loadSSTableReader(meta); if (!reader) continue; const found = reader.get(key); @@ -4529,9 +5785,9 @@ class LSM { } return null; } - rangeScan(startKey, endKey) { + async rangeScan(startKey, endKey) { const result = []; - this.rangeScanLazy(startKey, endKey, (k, v) => { result.push([k, v]); }); + await this.rangeScanLazy(startKey, endKey, (k, v) => { result.push([k, v]); }); return result; } /** @@ -4540,22 +5796,27 @@ class LSM { * 逐条拉取;回调返回 false 时提前终止(未消费部分不再解析/物化)。 * 此前实现内部 mergeIter.drain() 全量物化,与"流式不物化"宣称不符。 */ - rangeScanLazy(startKey, endKey, callback) { + async rangeScanLazy(startKey, endKey, callback) { + // v0.8.0: 先把范围内需要的 SSTable 读取器全部取齐(未命中即回源), + // 再做纯内存的归并扫描 —— 使读取自洽,不依赖调用方 prefetch。 + const readers = []; + for (let level = 0; level < MAX_LSM_LEVELS; level++) { + for (const meta of this.levels[level]) { + if (endKey < meta.minKey || startKey > meta.maxKey) + continue; + const reader = await this.loadSSTableReader(meta); + if (reader) + readers.push({ meta, reader }); + } + } const mergeIter = new MergeIterator(); mergeIter.addSource(new GeneratorEntrySource(this.memtable.scanLazy(startKey, endKey))); // pending frozen memtables(从新到旧,新数据 sourceIndex 更小) for (let i = this.frozenMemtables.length - 1; i >= 0; i--) { mergeIter.addSource(new GeneratorEntrySource(this.frozenMemtables[i].scanLazy(startKey, endKey))); } - for (let level = 0; level < MAX_LSM_LEVELS; level++) { - for (const meta of this.levels[level]) { - if (endKey < meta.minKey || startKey > meta.maxKey) - continue; - const reader = this.loadSSTableReader(meta); - if (!reader) - continue; - mergeIter.addSource(new GeneratorEntrySource(reader.scanLazy(startKey, endKey))); - } + for (const { reader } of readers) { + mergeIter.addSource(new GeneratorEntrySource(reader.scanLazy(startKey, endKey))); } let entry = mergeIter.next(); while (entry) { @@ -4649,7 +5910,7 @@ class LSM { totalSize: sstableData.byteLength, bloomData: null, }; - this.cacheSSTable(id, sstableData); + this.tryCacheSSTable(id, sstableData); this.trimCache(); await this.sstableStore.save(id, sstableData); await this.sstableStore.saveMeta(meta); @@ -4718,6 +5979,7 @@ class LSM { } this.sstableCache.clear(); this.cacheSize = 0; + this.oversizedSSTables.clear(); } getStats() { return { @@ -4809,17 +6071,49 @@ class LSM { return value; } /** 尝试从缓存或存储加载 SSTable,返回 Reader */ - loadSSTableReader(meta) { - // 先检查缓存 - const data = this.sstableCache.get(meta.id); + /** + * v0.8.0 根治:读取器加载**自洽**(缓存未命中即回源),不再依赖调用方预先 prefetch。 + * + * 此前的实现是"缓存未命中返回 null",而所有调用方都是 + * const reader = this.loadSSTableReader(meta); + * if (!reader) continue; + * 于是**缓存未命中 = 静默跳过整个 SSTable = 查询结果少数据**。审计实测: + * 小缓存下 300 行只能查回 59 行(且不报错)。同时"读路径必须先 prefetch" + * 这个隐式约定,也是每次读都要 drainChain + prefetch 的原因(性能悬崖的另一半)。 + * + * 现在:未命中就 `await sstableStore.load()` 回源并校验;只有**确实读不到数据** + * (文件缺失/损坏,已由 dropInvalidSSTable 处理)才返回 null,且会在自愈时清掉 meta。 + */ + async loadSSTableReader(meta) { + let data = this.sstableCache.get(meta.id); if (!data) { - // 缓存未命中:正常路径应在查询前通过 prefetchRange/prefetchKeys 预加载。 - // 这里仅当缓存中有缺失且无兜底时返回 null(调用方跳过)。 - return null; + const loaded = await this.sstableStore.load(meta.id); + if (!loaded) { + // 数据确实不存在:清理该 meta(自愈),避免每次查询都重试 + await this.dropInvalidSSTable(meta); + return null; + } + // 运行期回源同样校验整文件 CRC-32(与 preloadSSTable 一致) + try { + const probe = new SSTableReader(loaded, meta); + if (!probe.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + return null; + } + } + catch { + await this.dropInvalidSSTable(meta); + return null; + } + this.tryCacheSSTable(meta.id, loaded); + data = loaded; } // 刷新 LRU 顺序(近似:删除后重新插入使其成为最近使用) - this.sstableCache.delete(meta.id); - this.sstableCache.set(meta.id, data); + if (this.sstableCache.has(meta.id)) { + const cached = this.sstableCache.get(meta.id); + this.sstableCache.delete(meta.id); + this.sstableCache.set(meta.id, cached); + } try { return new SSTableReader(data, meta); } @@ -4848,6 +6142,32 @@ class LSM { return; } } + this.tryCacheSSTable(id, data); + } + /** + * v0.8.0: 单文件大于缓存上限时的处理 —— **不缓存**,且不牵连其他条目。 + * + * 此前 `preloadSSTable` 会把超大文件塞进缓存,随后 `trimCache()` 因 + * `cacheSize > cacheLimitBytes` 把**全部**缓存条目一并驱逐(含刚装入的目标文件 + * 与其它仍需使用的文件)。后果有两层: + * 1. "缓存上限"形同虚设(内存峰值不受约束); + * 2. 缓存被整体清空后,若某次读取没有紧跟一次 prefetch,就会静默读到空 + * (`loadSSTableReader` 未命中返回 null,"不存在"与"不可用"不可区分)。 + * 现在的语义明确:装不进缓存的文件不装,但**不影响**其他条目。 + */ + tryCacheSSTable(id, data) { + if (data.byteLength > this.cacheLimitBytes) { + // 单个文件就超过整个缓存上限:**必须常驻**。 + // 若把它驱逐,`loadSSTableReader` 缓存未命中会返回 null,而调用方的 + // `if (!reader) continue` 会**静默跳过该文件** —— 查询结果直接少数据 + // (实测 300 行只返回 59 行)。这也是审计指出的"缓存未命中与不存在不可区分"。 + // 因此这类文件标记为 pinned,不参与驱逐;代价是内存占用可超出 cacheLimit, + // 上限为 cacheLimit + 单个最大 SSTable。 + this.oversizedSSTables.add(id); + } + else { + this.oversizedSSTables.delete(id); + } this.cacheSSTable(id, data); } /** 写入缓存。注意:不在加载时立即驱逐,避免破坏正在进行的同步扫描 */ @@ -4866,13 +6186,35 @@ class LSM { * 查询结束后由引擎调用一次,回收查询期间的临时超限。 */ trimCache() { - while (this.cacheSize > this.cacheLimitBytes && this.sstableCache.size > 0) { - const eldestId = this.sstableCache.keys().next().value; - const evicted = this.sstableCache.get(eldestId); - this.cacheSize -= evicted.byteLength; - this.sstableCache.delete(eldestId); + // v0.8.0: 超过缓存上限的单个文件被 pin 住(驱逐它们会导致读取路径静默丢数据), + // 因此这里的循环只驱逐未 pin 的条目;若只剩 pinned 条目则接受超限。 + let scanned = 0; + const total = this.sstableCache.size; + let id = this.sstableCache.keys().next().value; + while (this.cacheSize > this.cacheLimitBytes && scanned < total && id !== undefined) { + const nextId = this.nextCacheKey(id); + scanned++; + if (!this.oversizedSSTables.has(id)) { + const evicted = this.sstableCache.get(id); + if (evicted) { + this.cacheSize -= evicted.byteLength; + this.sstableCache.delete(id); + } + } + id = nextId; } } + /** 取缓存中 id 的下一个键(Map 插入序),用于跳过 pinned 条目 */ + nextCacheKey(id) { + let seen = false; + for (const key of this.sstableCache.keys()) { + if (seen) + return key; + if (key === id) + seen = true; + } + return undefined; + } } /** @@ -6608,12 +7950,6 @@ function decompressLZ4(input, _originalSize) { return out; } -/** - * AriaEngine — 自研页面式存储引擎主类 - * @module engine/aria/index - * - * v0.4.1: 外键级联 + ALTER TABLE 重写 + clearAll 重置 + 崩溃恢复加固 - */ // --------------------------------------------------------------------------- // AriaEngine // --------------------------------------------------------------------------- @@ -6644,6 +7980,15 @@ class AriaEngine { this.gcCounter = 0; // ---- Savepoint 嵌套事务 ---- this.savepoints = new Map(); + /** + * v0.8.0: 当前事务在 WAL 中已成功追加的记录条数。 + * + * 用途:保存点需要记录"回滚后应保留到哪一条",否则恢复时无法区分 + * "保存点之前的写入"(应保留)与"保存点之后的写入"(应丢弃)。 + */ + this.txnWalRecordCount = 0; + /** 保存点 → 该保存点时事务的 WAL 记录边界 */ + this.savepointWalBoundary = new Map(); this.config = { ...DEFAULT_ARIA_CONFIG, ...config }; } // ======================================================================= @@ -6768,9 +8113,65 @@ class AriaEngine { if (r.type === WALRecordType.ROLLBACK) committedTxns.delete(r.txnId); } + // v0.8.0 根治:确定每个事务的**回放起始下标**。 + // + // `ROLLBACK TO ` 只回滚内存快照,日志里仍留有 savepoint 之前 + // 写入的记录;COMMIT 又把整个 txnId 标记为已提交 —— 于是那些被回滚掉的写入 + // 在重启时被重新应用,**已回滚的行复活**(实测:实时只剩 a,崩溃重开变成 a+b)。 + // + // 现在 savepoint 回滚会写入 SAVEPOINT_ROLLBACK 记录;恢复时该事务只应用 + // **最后一条** SAVEPOINT_ROLLBACK 之后的记录 —— 等价于"回到该保存点", + // 与实时态严格一致(这样也就不需要 undo 崩溃前已落盘的旧值)。 + // 每个事务:{ 保留起点, 丢弃终点 } —— 区间 [start, end) 保留。 + // + // 关键:`replayFromIndex` 是**事务内**的记录序号(写入方按事务计数), + // 因此这里必须用"该事务的第几条记录"来比较,不能直接拿全局下标 —— + // 全局下标里还混着 txnId=0 的非事务记录(CREATE_TABLE 等)以及其它事务。 + const globalIndexToTxnIndex = new Map(); + const txnRecordCount = new Map(); + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; + if (r.txnId === 0) + continue; + const n = txnRecordCount.get(r.txnId) ?? 0; + globalIndexToTxnIndex.set(i, n); + txnRecordCount.set(r.txnId, n + 1); + } + // 边界语义(必须显式定义,否则差一错误就在这里): + // 写入侧记录的 `replayFromIndex = N` 表示"保存点建立时,本事务已成功追加了 N 条记录", + // 即事务的第 0..N-1 条记录必须保留(BEGIN 是第 0 条)。 + // 因此恢复侧应保留的**事务内下标区间**是 [0, N),丢弃 [N, 标记位置)。 + // 等价地:只丢弃"事务内下标 >= N"且"在最后一个标记之前"的记录。 + const txnReplayWindow = new Map(); + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; + if (r.type !== WALRecordType.SAVEPOINT_ROLLBACK) + continue; + const declared = r.data?.replayFromIndex; + const keepUpTo = typeof declared === 'number' ? declared : 0; + const txnIdx = globalIndexToTxnIndex.get(i) ?? 0; + const prev = txnReplayWindow.get(r.txnId); + // 多个保存点回滚:保留上界取**最早**的(回到最早的保存点), + // 丢弃起点取**最后一个**标记的事务内下标。 + txnReplayWindow.set(r.txnId, { + keepUpTo: prev ? Math.min(prev.keepUpTo, keepUpTo) : keepUpTo, + dropFrom: txnIdx, + }); + } // 第二遍:仅应用 txnId==0(非事务)或已提交事务的数据 - for (const r of allRecords) { + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; if (r.txnId === 0 || committedTxns.has(r.txnId)) { + if (r.type === WALRecordType.SAVEPOINT_ROLLBACK) + continue; // 标记记录,无数据 + // 事务内落在 [start, end) 之外的记录:属于被 savepoint 回滚掉的部分,丢弃 + const win = txnReplayWindow.get(r.txnId); + if (win !== undefined) { + const txnIdx = globalIndexToTxnIndex.get(i) ?? 0; + // 保留 [0, keepUpTo);丢弃 [keepUpTo, dropFrom);标记之后的记录照常保留 + if (txnIdx >= win.keepUpTo && txnIdx < win.dropFrom) + continue; + } if (r.type === WALRecordType.DROP_TABLE) { // v0.3.3: DROP_TABLE 回放(异步:需预加载 SSTable 后清除残留数据) await this.applyDropTableRecovery(r.tableName); @@ -7105,9 +8506,10 @@ class AriaEngine { throw new DatabaseError(`Duplicate primary key "${pkValue}" in table "${tableName}"`, 'DUPLICATE_KEY'); } pkSet.add(pkValue); + // v0.8.0: 事务快照优先,否则回源 LSM(lsm.get 现为 async) const existing = this.currentTxnId - ? (this.txnSnapshot?.get(key) ?? this.lsm.get(key)) - : this.lsm.get(key); + ? (this.txnSnapshot?.get(key) ?? await this.lsm.get(key)) + : await this.lsm.get(key); if (existing && !existing.__txn_deleted) { throw new DatabaseError(`Duplicate primary key "${pkValue}" in table "${tableName}"`, 'DUPLICATE_KEY'); } @@ -7142,7 +8544,7 @@ class AriaEngine { throw new DatabaseError(`Unique constraint violation on column "${colName}" in table "${tableName}"`, 'UNIQUE_VIOLATION'); } seen.add(v); - this.checkUniqueSync(tableName, [colName], validated, pkValue); + await this.checkUnique(tableName, [colName], validated, pkValue); } } for (const { row: validated, pkValue, key } of validatedRows) { @@ -7168,6 +8570,7 @@ class AriaEngine { }); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += rows.length; this.checkMemoryBudget(); await this.checkpointManager.tick(); @@ -7206,16 +8609,24 @@ class AriaEngine { } // 查询完成,回收查询期间的临时缓存超限 this.trimAllCaches(); - return rows; + // v0.8.0: 行所有权 —— 返回副本,调用方不得改写存储(见 engine/interface.ts 约定) + return rows.map((row) => cloneRow(row)); } async update(tableName, query, updates) { this.ensureOpen(); this.ensureTable(tableName); // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in UPDATE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const schema = this.schemas.get(tableName); const rows = await this.getAllRows(tableName); let count = 0; @@ -7258,6 +8669,14 @@ class AriaEngine { // (无事务下语句级部分提交 + 崩溃后进一步不一致)。 const planned = []; const batchUnique = new Map(); + /** + * v0.8.0 根治:批内新主键互查(与 MemoryEngine 对齐)。 + * + * 此前只检查"新主键是否已存在于**语句执行前**的表",看不到同一语句内其它行 + * 即将写入的新主键。于是 `UPDATE t SET id = 'X'`(匹配 3 行)在阶段 2 逐行 + * 覆盖同一 LSM key —— 返回 affected=3,表中却只剩 1 行(静默丢行,实测)。 + */ + const batchNewPks = new Set(); // 阶段 1:全量预检(任何一行失败 → 整条语句不执行) for (const row of rows) { const pkCol = this.tablePKs.get(tableName); @@ -7269,7 +8688,7 @@ class AriaEngine { // 批内唯一互查(索引尚未更新,两行同时改到同一新值需要互查兜底) this.checkBatchUnique(tableName, uniqueCols, updated, batchUnique); // v0.6.2: 唯一约束检查(排除自身旧索引条目:主键变更时旧条目仍以旧键存在) - this.checkUniqueSync(tableName, uniqueCols, updated, String(row[pkCol])); + await this.checkUnique(tableName, uniqueCols, updated, String(row[pkCol])); // v0.4.2-fix: 支持更新主键 — 删除旧键 + 落新键 + WAL 两条记录 const newPk = String(updated[pkCol]); const pkChanged = newPk !== String(row[pkCol]); @@ -7278,11 +8697,16 @@ class AriaEngine { if (pkChanged) { const newKey = `${tableName}:${newPk}`; const existing = this.currentTxnId - ? (this.txnSnapshot?.get(newKey) ?? this.lsm.get(newKey)) - : this.lsm.get(newKey); + ? (this.txnSnapshot?.get(newKey) ?? await this.lsm.get(newKey)) + : await this.lsm.get(newKey); if (existing && !existing.__txn_deleted) { throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (cannot update key to existing value)`, 'DUPLICATE_KEY'); } + // v0.8.0: 批内互查 —— 同一语句内两行改到同一新主键 → 整体拒绝(不得静默覆盖) + if (batchNewPks.has(newPk)) { + throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (multiple rows in the same statement update to the same key)`, 'DUPLICATE_KEY'); + } + batchNewPks.add(newPk); } planned.push({ row, pk: String(row[pkCol]), key, updated, newPk, pkChanged }); } @@ -7333,6 +8757,7 @@ class AriaEngine { this.updateSecondaryIndexes(tableName, newPk, updated, row); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += count; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7442,9 +8867,16 @@ class AriaEngine { this.ensureTable(tableName); // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in DELETE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const rows = await this.getAllRows(tableName); let count = 0; // v0.3.1: 批量 WAL 写入(组提交) @@ -7489,6 +8921,7 @@ class AriaEngine { } } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += count; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7636,7 +9069,7 @@ class AriaEngine { skipped++; return true; } - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); count++; return count < limit; }; @@ -7644,7 +9077,7 @@ class AriaEngine { // 事务中:物化后逐行回调(快照合并需要全量行集) const rows = await this.find(tableName, { ...query, orderBy: undefined, limit: undefined, offset: undefined }); for (const row of rows) { - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); } return rows.length; } @@ -7660,7 +9093,7 @@ class AriaEngine { // 全表惰性扫描(含 WHERE 过滤,不物化;v0.7.4: callback 返回 false 提前终止, // 未消费的 SSTable 块 / 子树不再解析 —— 真流式,大表 limit 内存 O(1)) await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - this.lsm.rangeScanLazy(prefix, `${prefix}\uffff`, (key, value) => { + await this.lsm.rangeScanLazy(prefix, `${prefix}\uffff`, (key, value) => { if (count >= limit) return false; const row = { ...value }; @@ -7704,6 +9137,7 @@ class AriaEngine { this.updateSecondaryIndexes(tableName, String(row[pkCol]), null, row); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += rows.length; await this.checkpointManager.tick(); this.tryGC(); @@ -7725,6 +9159,18 @@ class AriaEngine { throw new DatabaseError(`Column "${column.name}" already exists in table "${tableName}"`, 'COLUMN_EXISTS'); } schema.columns[column.name] = column; + // v0.8.0 根治:ALTER ADD 的索引/唯一列必须真正建立索引 LSM 并回填。 + // + // 此前只写 schema + persistSchemas,索引 LSM 从未创建 → `unique` 标记形同虚设, + // 重复值可任意写入(实测四个引擎全部接受);重启时索引才被建出来,与 Memory + // "重启静默丢行"是同一问题的另一半。 + // + // 复用 createIndex:它已经实现了"回填 + 存量唯一性校验 + 失败时原子清理" + // (v0.6.2/v0.7.3 的修复成果),此处不重复实现以避免再次漂移。 + if (column.index || column.unique) { + // createIndex 会读取 schema.columns[column],上面的赋值已满足 + await this.createIndex(tableName, column.name, column.unique === true); + } await this.persistSchemas(); return; } @@ -7750,7 +9196,7 @@ class AriaEngine { const prefix = `${tableName}:`; const endKey = `${prefix}\uffff`; await this.lsm.prefetchRange(prefix, endKey); - const entries = this.lsm.rangeScan(prefix, endKey); + const entries = await this.lsm.rangeScan(prefix, endKey); const walRecords = []; for (const [key, value] of entries) { if (!(column.name in value)) @@ -7770,6 +9216,7 @@ class AriaEngine { }); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += walRecords.length; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7877,6 +9324,8 @@ class AriaEngine { throw new DatabaseError('Transaction already in progress', 'TX_ACTIVE'); this.currentTxnId = this.mvcc.beginTransaction(); this.txnSnapshot = new Map(); + // v0.8.0: 事务内 WAL 记录计数从 0 开始(保存点边界依赖它) + this.txnWalRecordCount = 0; // v0.7.3-fix: WAL BEGIN 写失败回滚内存事务状态 —— 此前 append 抛错(full 模式) // 时 currentTxnId 已设置 → TX_ACTIVE 永久泄漏(后续无法开始新事务)。 // 回滚 mvcc 登记 + 快照后重抛,调用方可重试。 @@ -7887,6 +9336,7 @@ class AriaEngine { tableName: '', key: '', }); + this.txnWalRecordCount = 1; // BEGIN 本身占一条 } catch (error) { this.mvcc.rollbackTransaction(this.currentTxnId); @@ -7919,6 +9369,13 @@ class AriaEngine { } } this.mvcc.commitTransaction(this.currentTxnId); + // v0.8.0 根治:事务结束时清空 savepoint 表。 + // 此前 commit/rollback **都不清理** savepoints,于是: + // 1. 上一个事务的名字仍被占用 → 新事务 SAVEPOINT 同名报 "already exists"; + // 2. 新事务 ROLLBACK TO 陈旧名字会拿到旧事务快照,把当前事务的写入静默替换。 + this.savepoints.clear(); + this.savepointWalBoundary.clear(); + this.txnWalRecordCount = 0; this.currentTxnId = null; this.txnSnapshot = null; } @@ -7948,6 +9405,10 @@ class AriaEngine { } this.mvcc.rollbackTransaction(txnId); this.txnSnapshot = null; + // v0.8.0:事务结束清空 savepoint(理由同 commitTransaction) + this.savepoints.clear(); + this.savepointWalBoundary.clear(); + this.txnWalRecordCount = 0; this.currentTxnId = null; // v0.3.3: 事务内直接写入了二级索引 LSM,回滚后全量重建受影响表的索引 for (const tableName of affectedTables) { @@ -7966,11 +9427,32 @@ class AriaEngine { txnId: this.currentTxnId, snapshot: this.txnSnapshot ? new Map(this.txnSnapshot) : null, }); + // v0.8.0: 记录边界(该事务已追加的记录条数)—— 见 txnWalRecordCount 说明 + this.savepointWalBoundary.set(`${this.currentTxnId}:${name}`, this.txnWalRecordCount); } async rollbackToSavepoint(name) { const sp = this.savepoints.get(name); if (!sp) throw new DatabaseError(`Savepoint "${name}" not found`, 'SAVEPOINT_NOT_FOUND'); + // v0.8.0 根治:savepoint 归属校验。 + // 此前只按名字查找,而 savepoints 在 commit/rollback 时**从不清空** —— + // 上一个事务遗留的 savepoint 会让当前事务的写入被旧事务快照静默替换 + // (实测:本事务 update 后 ROLLBACK TO 陈旧名 + COMMIT,写入凭空消失)。 + if (sp.txnId !== this.currentTxnId) { + throw new DatabaseError(`Savepoint "${name}" belongs to a different transaction (stale savepoint)`, 'SAVEPOINT_NOT_FOUND'); + } + // v0.8.0: 先写 WAL 标记再改内存(与 commit/rollback 的"WAL 领先内存"一致)—— + // 否则崩溃恢复会把该事务在 savepoint 之前写入的记录重新应用,已回滚的行复活。 + const boundary = this.savepointWalBoundary.get(`${this.currentTxnId}:${name}`) ?? 0; + await this.wal.append({ + type: WALRecordType.SAVEPOINT_ROLLBACK, + txnId: this.currentTxnId, + tableName: '', + key: '', + data: { replayFromIndex: boundary }, + }); + this.txnWalRecordCount++; + this.savepointWalBoundary.set(`${this.currentTxnId}:${name}`, boundary); // v0.6.3-fix: 记录当前快照涉及的表(回滚后重建索引)—— 此前事务内直写 // 索引 LSM,savepoint 回滚只还原快照 → savepoint 之后的索引条目残留 const affectedTables = new Set(); @@ -8025,9 +9507,11 @@ class AriaEngine { const prefix = `${tableName}:`; // 预加载范围内涉及的 SSTable,避免 rangeScan 时缓存未命中静默丢数据 await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - const entries = this.lsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await this.lsm.rangeScan(prefix, `${prefix}\uffff`); const rows = entries.map(([key, value]) => { - const row = { ...value }; + // v0.8.0: 深拷贝(此前 `{ ...value }` 只做浅拷贝,嵌套 json 值仍与 LSM + // 内部对象共享引用 —— 调用方改 rows[0].nested.a 会改写存储) + const row = cloneRow(value); row[pkCol] = key.slice(prefix.length); return row; }); @@ -8071,29 +9555,26 @@ class AriaEngine { return Object.keys(schema.columns)[0]; } validateRow(schema, row) { - const validated = {}; - for (const [colName, colDef] of Object.entries(schema.columns)) { - let value = row[colName]; - if (value === undefined && colDef.default !== undefined) - value = colDef.default; - if (colDef.required && (value === undefined || value === null)) { - throw new DatabaseError(`Column "${colName}" is required in table "${schema.name}"`, 'VALIDATION_ERROR'); - } - // v0.7.4: 主键列强制非空(SQL 语义 PK 隐含 NOT NULL)—— - // 此前 null/undefined 主键被 String() 化为 "null"/"undefined" 静默入库 - if (colDef.primaryKey && (value === undefined || value === null)) { - throw new DatabaseError(`Primary key column "${colName}" in table "${schema.name}" cannot be null or undefined`, 'VALIDATION_ERROR'); - } - if (value !== undefined && value !== null) { - this.checkType(colName, colDef.type, value, colDef); - } - if (value !== undefined) - validated[colName] = value; - } - return validated; + // v0.8.0(B-1):委托给**唯一**的行校验实现(table/validation.ts)。 + // + // 此前这里是第二份独立实现(经由 checkFieldType 恰好覆盖了 maxLength/min/max, + // 而 Memory 那份没有)—— 于是同一份 schema、同一条 INSERT 是否报约束错误 + // 取决于选了哪个引擎(缺陷 A12),且两者对未知列都静默丢弃(A17)。 + return compileValidator(schema).validateRow(row); } - checkType(colName, type, value, colDef) { - checkFieldType('', colName, type, value, colDef); + /** + * v0.8.0(B-1):写入前置校验 —— 见 `IStorageEngine.validatePayload` 契约。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureTable(tableName); + const schema = this.schemas.get(tableName); + const validator = compileValidator(schema); + for (const row of rows) { + if (mode === 'update') + validator.validatePartial(stripUndefinedUpdates(row)); + else + validator.validateRow(row); + } } // ======================================================================= // Schema 持久化 @@ -8291,7 +9772,7 @@ class AriaEngine { const prefix = `${tableName}:`; const endKey = `${prefix}\uffff`; await this.lsm.prefetchRange(prefix, endKey); - const entries = this.lsm.rangeScan(prefix, endKey); + const entries = await this.lsm.rangeScan(prefix, endKey); for (const [key] of entries) { this.lsm.delete(key); } @@ -8311,11 +9792,15 @@ class AriaEngine { return cols; } /** - * v0.6.2: 同步唯一性检查(须在批次级 prefetchPrefixRanges 之后调用,循环内无 await)。 + * 唯一性检查。 + * + * v0.8.0: 由 `checkUniqueSync` 改名并改为 async —— 此前命名为 "Sync" 是因为它 + * 依赖"批次级 prefetchPrefixRanges 之后索引数据已在缓存中"这一约定。现在 + * LSM 读取自洽(未命中即回源),因此这里可以、也必须 await。 * 索引不含 null 条目(null 值不受唯一约束,与 MemoryEngine 语义一致)。 * @param currentPk 当前行主键(更新路径用于排除自身旧索引条目;插入路径无自身条目) */ - checkUniqueSync(tableName, uniqueCols, row, currentPk) { + async checkUnique(tableName, uniqueCols, row, currentPk) { for (const colName of uniqueCols) { const val = row[colName]; if (val === undefined || val === null) @@ -8324,7 +9809,7 @@ class AriaEngine { if (!idxLsm) continue; const prefix = `${String(val)}:`; - const entries = idxLsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await idxLsm.rangeScan(prefix, `${prefix}\uffff`); for (const [, entry] of entries) { const pk = entry.pk; if (pk !== undefined && pk !== currentPk) { @@ -8398,14 +9883,14 @@ class AriaEngine { if (typeof condition !== 'object' || condition === null) { const key = `${tableName}:${condition}`; await this.lsm.prefetchKeys([key]); - const value = this.lsm.get(key); + const value = await this.lsm.get(key); return value ? [{ ...value, [pkCol]: condition }] : []; } const cond = condition; if ('$eq' in cond) { const key = `${tableName}:${cond.$eq}`; await this.lsm.prefetchKeys([key]); - const value = this.lsm.get(key); + const value = await this.lsm.get(key); return value ? [{ ...value, [pkCol]: cond.$eq }] : []; } // v0.3.3: PK $in → 主 LSM 多次精确查找(替代冗余 PK 二级索引) @@ -8418,7 +9903,7 @@ class AriaEngine { const pk = String(v); if (seen.has(pk)) continue; - const value = this.lsm.get(`${tableName}:${pk}`); + const value = await this.lsm.get(`${tableName}:${pk}`); if (value) { seen.add(pk); rows.push({ ...value, [pkCol]: pk }); @@ -8430,7 +9915,7 @@ class AriaEngine { if ('$gt' in cond || '$gte' in cond || '$lt' in cond || '$lte' in cond) { const prefix = `${tableName}:`; await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - const entries = this.lsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await this.lsm.rangeScan(prefix, `${prefix}\uffff`); const rows = []; for (const [key, value] of entries) { const candidate = { ...value, [pkCol]: key.slice(prefix.length) }; @@ -8458,6 +9943,12 @@ class AriaEngine { // v0.6.2-fix(P1): 同上,$eq: null(IS NULL)不走索引 if (c.$eq === null) continue; + // v0.8.0 根治(与 MemoryEngine 同步):非原始值一律不走索引。 + // `String({...})` 得到 "[object Object]" 这类无意义键,索引查找必然为空 + // 并短路全表扫描 → 结果静默为空。真实触发场景是"未解析的操作数": + // { $eq: { $col: 'y' } } ← 列对列比较(t.x = t.y) + if (typeof c.$eq === 'object') + continue; const v = String(c.$eq); return this.indexScanToRows(tableName, pkCol, idxLsm, v, v); } @@ -8466,6 +9957,10 @@ class AriaEngine { // v0.6.2-fix(P1): IN 列表含 null 不走索引(索引不含 null 条目,会漏匹配 null 行) if (c.$in.some((v) => v === null)) continue; + // v0.8.0: IN 列表含非原始值(未解析的 $subquery / $col)不走索引 —— + // String() 会得到无意义键,查找为空并短路全表扫描 → 静默空结果 + if (c.$in.some((v) => typeof v === 'object' && v !== null)) + continue; // v0.7.3-perf: 批级预加载全部值的索引范围 + 主表行(各一次 drainChain)—— // 此前逐值 indexScanToRows:每个值一次 prefetchRange + prefetchKeys, // 后台 compaction 长耗时时 N 倍放大(与 v0.6.1 修的 insert 批量预加载 @@ -8476,7 +9971,7 @@ class AriaEngine { const seenPks = new Set(); // v0.4.1: IN 值可能重复,按 pk 去重 const pks = []; for (const val of values) { - const entries = idxLsm.rangeScan(val, `${val}\uffff`); + const entries = await idxLsm.rangeScan(val, `${val}\uffff`); for (const [, idxEntry] of entries) { const pk = idxEntry.pk; if (pk && !seenPks.has(pk)) { @@ -8487,7 +9982,7 @@ class AriaEngine { } await this.lsm.prefetchKeys(pks.map((pk) => `${tableName}:${pk}`)); for (const pk of pks) { - const row = this.lsm.get(`${tableName}:${pk}`); + const row = await this.lsm.get(`${tableName}:${pk}`); if (row) results.push({ ...row, [pkCol]: pk }); } @@ -8511,7 +10006,7 @@ class AriaEngine { const actualEndKey = endKey.includes('\uffff') ? endKey : `${endKey}\uffff`; // 预加载索引 LSM 与主 LSM 涉及的 SSTable await idxLsm.prefetchRange(startKey, actualEndKey); - const entries = idxLsm.rangeScan(startKey, actualEndKey); + const entries = await idxLsm.rangeScan(startKey, actualEndKey); const pks = []; for (const [, idxEntry] of entries) { const pk = idxEntry.pk; @@ -8521,7 +10016,7 @@ class AriaEngine { await this.lsm.prefetchKeys(pks.map((pk) => `${tableName}:${pk}`)); const rows = []; for (const pk of pks) { - const row = this.lsm.get(`${tableName}:${pk}`); + const row = await this.lsm.get(`${tableName}:${pk}`); if (row) rows.push({ ...row, [pkCol]: pk }); } @@ -8850,6 +10345,16 @@ class HybridEngine { } throw error; } + /** + * v0.8.0(B-1):写入前置校验 —— 委托给内存引擎(与磁盘引擎同 schema)。 + * + * 关键点:**只判定一次**。Hybrid 的 write-through 会把同一批行先写内存再写磁盘, + * 两个引擎各自校验会给出同一结论(现在共享同一个 `compileValidator`), + * 但由本方法统一前置,可保证多行批量在任何副作用之前整体失败。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + return this.memoryEngine.validatePayload(tableName, rows, mode); + } async insert(tableName, rows) { const pks = await this.memoryEngine.insert(tableName, rows); // write-through: 同步写入磁盘 @@ -8970,15 +10475,30 @@ class HybridEngine { * metona-sqlark Query Builder — 链式查询构建器 * @module query/builder * - * 链式调用 → 构建 AST → 执行引擎操作。 - * 支持 JOIN(需要 Executor)。 + * ============================================================================ + * v0.8.0(B-3):**只产出 AST,执行一律交给 Executor** + * ============================================================================ + * 修复前每个 builder 的 `execute()` 都有自己的执行动作: + * - `SelectQueryBuilder`:**无 JOIN 时直接调 `engine.find`**,只有 JOIN 才走 + * executor; + * - `UpdateQueryBuilder` / `DeleteQueryBuilder`:直接调 `engine.update/delete`。 + * + * 于是"同一条语义"在 builder 路径与 SQL 路径上走两条管线,规则各写一份: + * - SELECT 的常量列/别名/CASE 投影在 builder 路径不存在 + * (`db.table('t').select(['t.n'])` 的输出键、`SELECT 1` 之类行为不同); + * - `maxRowsPerQuery`、`distinct`、`groupBy`/`having`、`fromSubquery` 等阶段 + * 在直通路径上完全不经过; + * - 未解析的 `$subquery`/`$col` 在直通路径上无人解析 → 引擎判 UNKNOWN → + * **静默 0 行**(这正是 v0.7.4 要为此加"显式拒绝"防御的原因)。 + * + * 现在 builder 只负责"拼 AST",执行统一走 `executor.execute(ast)`; + * 需要直通时由 executor 内部判断(它本来就是唯一知道"能不能下推"的地方)。 */ // --------------------------------------------------------------------------- // SelectQueryBuilder // --------------------------------------------------------------------------- class SelectQueryBuilder { - constructor(engine, tableName, _columns = ['*'], executor) { - this.engine = engine; + constructor(tableName, executor, _columns = ['*']) { this.tableName = tableName; this._columns = _columns; this._where = {}; @@ -9035,22 +10555,15 @@ class SelectQueryBuilder { this._offset = n; return this; } - /** 执行查询 */ + /** + * 执行查询 —— 拼出 AST 后交给 Executor(**唯一**执行管线)。 + * + * 注意不要再为"无 JOIN"加一条 `engine.find` 快路:那条路会绕过 + * 投影/列校验/LIMIT 下推判定/maxRowsPerQuery,从而与 `db.query()` 给出不同结果 + * (B-3 修复前的实际状态)。executor 自己会在安全时下推到引擎,不需要 builder 代劳。 + */ async execute() { - // 有 JOIN → 通过 Executor 执行 - if (this._joins.length > 0 && this._executor) { - const ast = this.toAST(); - return this._executor.execute(ast); - } - // 无 JOIN → 直接调用引擎 - return this.engine.find(this.tableName, { - table: this.tableName, - columns: this._columns, - where: this._where, - orderBy: this._orderBy.length > 0 ? this._orderBy : undefined, - limit: this._limit, - offset: this._offset, - }); + return this._executor.execute(this.toAST()); } /** 获取 AST */ toAST() { @@ -9071,24 +10584,43 @@ class SelectQueryBuilder { // UpdateQueryBuilder // --------------------------------------------------------------------------- class UpdateQueryBuilder { - constructor(engine, tableName, _updates, onWrite, onHooks) { - this.engine = engine; + constructor(tableName, _updates, executor, + /** + * TABLE API 的生命周期回调(`beforeUpdate` / `afterUpdate` / onWrite 广播)。 + * + * 为什么由 `Table` 注入而不是 builder 自己触发:builder 的职责是**产出 AST**, + * 它不该知道钩子/广播的存在(否则又会像修复前那样"builder 顺带把写入也做了", + * 从而绕过 Executor)。钩子被包裹在**唯一管线**之外, + * 顺序与修复前完全一致:before → executor → onWrite → after。 + * + * 回调接收**实际执行的语句**(含 builder 上累积的 where), + * 而不是构造 builder 时的空 where —— 后者会让 `beforeUpdate` 的 + * `query.where` 永远是 `{}`(钩子拿不到过滤条件,等于信息缺失)。 + */ + hooks) { this.tableName = tableName; this._updates = _updates; + this.executor = executor; + this.hooks = hooks; this._where = {}; - this.onWrite = onWrite; - this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } + /** + * 执行更新 —— 走 Executor(唯一的写管线)。 + * + * 修复前这里直接调 `engine.update`:`$subquery` / `$col` / `$exists` 无人解析, + * 引擎层 matchWhere 判 UNKNOWN → **静默影响 0 行**(返回 0 且无报错)。 + * 引擎层为此加过"检测未解析标记就抛 NOT_SUPPORTED"的防御 —— 那是把 + * "管线缺失"暴露成用户错误;正确做法是把请求送进唯一管线。 + */ async execute() { - const query = { table: this.tableName, where: this._where }; - await this.onHooks?.('beforeUpdate', [query, this._updates]); - const count = await this.engine.update(this.tableName, query, this._updates); - this.onWrite?.(this.tableName); - await this.onHooks?.('afterUpdate', [query, this._updates, count]); + const stmt = this.toAST(); + await this.hooks?.before?.(stmt); + const count = await this.executor.execute(stmt); + await this.hooks?.after?.(count, stmt); return count; } toAST() { @@ -9099,23 +10631,24 @@ class UpdateQueryBuilder { // DeleteQueryBuilder // --------------------------------------------------------------------------- class DeleteQueryBuilder { - constructor(engine, tableName, onWrite, onHooks) { - this.engine = engine; + constructor(tableName, executor, + /** TABLE API 生命周期回调,语义见 `UpdateQueryBuilder` 的说明 */ + hooks) { this.tableName = tableName; + this.executor = executor; + this.hooks = hooks; this._where = {}; - this.onWrite = onWrite; - this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } + /** 执行删除 —— 走 Executor(同 UpdateQueryBuilder.execute 的理由) */ async execute() { - const query = { table: this.tableName, where: this._where }; - await this.onHooks?.('beforeDelete', [query]); - const count = await this.engine.delete(this.tableName, query); - this.onWrite?.(this.tableName); - await this.onHooks?.('afterDelete', [query, count]); + const stmt = this.toAST(); + await this.hooks?.before?.(stmt); + const count = await this.executor.execute(stmt); + await this.hooks?.after?.(count, stmt); return count; } toAST() { @@ -9167,7 +10700,21 @@ class Table { } // ---- 查询 ---- select(columns = ['*']) { - return new SelectQueryBuilder(this.engine, this.name, columns, this.executor); + return new SelectQueryBuilder(this.name, this.requireExecutor('select'), columns); + } + /** + * v0.8.0(B-3):取执行器;缺失即**明确失败**。 + * + * 修复前 builder 在拿不到 executor 时会退化为"直接调引擎" —— 于是 + * `db.table('t')` 与 `db.query()` 两条路径的语义不同(投影/列校验/LIMIT 下推/ + * maxRowsPerQuery 在直通路径上全部缺失)。现在只保留一条管线: + * 没有 executor 就没有可用的查询 API,显式报错而不是悄悄降级。 + */ + requireExecutor(operation) { + if (!this.executor) { + throw new DatabaseError(`Table.${operation}() requires a query executor (obtain the table via db.table())`, 'NOT_SUPPORTED'); + } + return this.executor; } /** v0.4.0: 流式查询 — 逐行回调,不物化全部结果 */ async stream(onRow, query = {}) { @@ -9192,12 +10739,37 @@ class Table { }, onRow); } // ---- 更新 ---- + /** + * v0.8.0(B-3):写操作也走**唯一管线**(Executor),生命周期钩子由本方法注入。 + * + * 修复前 `UpdateQueryBuilder` 直接调 `engine.update`:`$subquery`/`$col` 无人解析 + * → 引擎判 UNKNOWN → 静默影响 0 行;`beforeUpdate`/`afterUpdate` 的触发点也因此 + * 与 SQL 路径不同(一条在 builder 里、一条在 core 里)。 + */ update(updates) { - return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite, this.onHooks); + return new UpdateQueryBuilder(this.name, updates, this.requireExecutor('update'), { + // 钩子接收实际语句(含 builder 累积的 where),与 SQL 路径的 + // `triggerStatementHooks` 传参形状一致:{ table, where } + before: async (stmt) => { + await this.onHooks?.('beforeUpdate', [{ table: stmt.table, where: stmt.where }, updates]); + }, + after: async (count, stmt) => { + this.onWrite?.(this.name); + await this.onHooks?.('afterUpdate', [{ table: stmt.table, where: stmt.where }, updates, count]); + }, + }); } // ---- 删除 ---- delete() { - return new DeleteQueryBuilder(this.engine, this.name, this.onWrite, this.onHooks); + return new DeleteQueryBuilder(this.name, this.requireExecutor('delete'), { + before: async (stmt) => { + await this.onHooks?.('beforeDelete', [{ table: stmt.from, where: stmt.where }]); + }, + after: async (count, stmt) => { + this.onWrite?.(this.name); + await this.onHooks?.('afterDelete', [{ table: stmt.from, where: stmt.where }, count]); + }, + }); } // ---- 聚合 ---- async count(where) { @@ -9352,6 +10924,17 @@ var TokenType; TokenType["TO"] = "TO"; // 标识符 & 字面量 TokenType["IDENTIFIER"] = "IDENTIFIER"; + /** + * v0.8.0: 分隔标识符(双引号包裹,SQL 标准 `"name"`)。 + * + * 此前双引号被当作字符串定界符处理,`SELECT "name" FROM t` 会静默产出一个名为 + * `'name'` 的**常量列**(行数正确、值全错、无任何报错),且该行为被 + * tests/sql/lexer.test.ts 钉死为期望。现按 SQL 标准区分: + * 'x' → STRING(字符串字面量) + * "x" → QUOTED_IDENTIFIER(标识符,用于含特殊字符/保留字/大小写敏感的列名) + * 双引号内以 "" 表示一个双引号。 + */ + TokenType["QUOTED_IDENTIFIER"] = "QUOTED_IDENTIFIER"; TokenType["STRING"] = "STRING"; TokenType["NUMBER"] = "NUMBER"; // 运算符 & 分隔符 @@ -9473,7 +11056,7 @@ class Lexer { } /** 读取下一个 Token */ nextToken() { - this.skipWhitespace(); + this.skipWhitespaceAndComments(); let tok; switch (this.ch) { case ',': @@ -9529,23 +11112,16 @@ class Lexer { } break; case "'": + tok = this.readString(); + break; case '"': - tok = this.readString(this.ch); + // v0.8.0: 双引号 = 分隔标识符(SQL 标准),不再当作字符串字面量 + tok = this.readQuotedIdentifier(); break; case '': tok = { type: TokenType.EOF, value: '', position: this.position }; break; default: - // SQL 注释: -- 行注释 - if (this.ch === '-' && this.peekChar() === '-') { - this.skipLineComment(); - return this.nextToken(); - } - // SQL 注释: /* 块注释 */ - if (this.ch === '/' && this.peekChar() === '*') { - this.skipBlockComment(); - return this.nextToken(); - } if (this.isLetter(this.ch)) { const ident = this.readIdentifier(); const keyword = KEYWORDS[ident.toUpperCase()]; @@ -9589,9 +11165,31 @@ class Lexer { return ''; return this.input[this.readPosition]; } - skipWhitespace() { - while (this.ch === ' ' || this.ch === '\t' || this.ch === '\n' || this.ch === '\r') { - this.readChar(); + /** + * 跳过空白与注释(v0.8.0:改为**循环**而非递归)。 + * + * 此前在 default 分支里用 `return this.nextToken()` 递归跳过注释, + * 递归深度 = 连续注释个数:两万个连续的块注释就会直接 + * `RangeError: Maximum call stack size exceeded`(且是原生错误而非 DatabaseError, + * 调用方无法按 code 分类)。现在统一在一个循环里消费空白与注释。 + */ + skipWhitespaceAndComments() { + for (;;) { + // 空白 + while (this.ch === ' ' || this.ch === '\t' || this.ch === '\n' || this.ch === '\r') { + this.readChar(); + } + // -- 行注释 + if (this.ch === '-' && this.peekChar() === '-') { + this.skipLineComment(); + continue; + } + // /* 块注释 */ + if (this.ch === '/' && this.peekChar() === '*') { + this.skipBlockComment(); + continue; + } + return; } } /** 跳过 -- 行注释到行尾 */ @@ -9600,17 +11198,26 @@ class Lexer { this.readChar(); } } - /** 跳过块注释 slash-star ... star-slash */ + /** + * 跳过块注释 slash-star ... star-slash + * + * v0.8.0 根治:未闭合的块注释必须**报错**。 + * 此前循环到 EOF 就直接返回、不抛错,于是 `DELETE FROM t WHERE id = '4' /*` + * 会**照常执行删除**(审计实测真的删掉了 1 行);SQLite 会报 + * `unterminated /* comment`。任何被截断/拼接的 SQL 都会因此静默改变语义。 + */ skipBlockComment() { - this.readChar(); // skip * - this.readChar(); // move past * + const start = this.position; + this.readChar(); // skip '/' + this.readChar(); // skip '*' while (this.ch !== '' && !(this.ch === '*' && this.peekChar() === '/')) { this.readChar(); } - if (this.ch !== '') { - this.readChar(); // skip * - this.readChar(); // skip / + if (this.ch === '') { + throw new DatabaseError(`Unterminated block comment at position ${start}`, 'PARSE_ERROR'); } + this.readChar(); // skip '*' + this.readChar(); // skip '/' } readIdentifier() { const start = this.position; @@ -9636,28 +11243,37 @@ class Lexer { } return this.input.slice(start, this.position); } - readString(quote) { + /** + * 读取单引号字符串字面量。 + * + * v0.8.0 根治:**移除反斜杠转义**(此前只支持单引号前的反斜杠)。 + * + * 此前只识别「反斜杠 + 单引号」(MySQL 方言的半个实现):双反斜杠不解转义,于是 + * - 单引号前的反斜杠被静默吞掉; + * - 以反斜杠结尾的 Windows 路径会**吞掉闭引号**,抛出一条 + * 与用户输入无关的 "Unterminated string literal"; + * - 更严重的是,参数绑定器 params.ts 只把单引号翻倍、不处理反斜杠, + * 两份词法规则不一致 —— "参数不可能改变 SQL 结构"这条不变量在文本层已不成立。 + * + * SQL 标准(以及 SQLite / PostgreSQL,本项目对齐的方言)中反斜杠是普通字符, + * 反斜杠本身是普通字符、引号靠两个连续单引号表达。移除方言转义后,词法器与绑定器的字符串边界判定 + * 完全一致,且任意以反斜杠结尾的参数值都能正确绑定。 + */ + readString() { const start = this.position + 1; // 跳过一个引号 this.readChar(); // 跳过开始引号 let value = ''; while (this.ch !== '') { - if (this.ch === quote) { - // v0.3.3: 支持 SQL 标准 '' 转义(两个连续引号 = 一个引号) - if (this.peekChar() === quote) { - value += quote; + if (this.ch === "'") { + // SQL 标准 '' 转义(两个连续引号 = 一个引号) + if (this.peekChar() === "'") { + value += "'"; this.readChar(); // 跳过第二个引号 this.readChar(); continue; } break; // 结束引号(由 nextToken 的 readChar 跳过) } - // 反斜杠转义(兼容旧语法) - if (this.ch === '\\' && this.peekChar() === quote) { - this.readChar(); - value += quote; - this.readChar(); - continue; - } value += this.ch; this.readChar(); } @@ -9672,6 +11288,42 @@ class Lexer { position: start, }; } + /** + * v0.8.0: 读取双引号分隔标识符(SQL 标准 `"column"`)。 + * + * 双引号内以 `""` 表示一个双引号字符(与单引号字符串的 `''` 规则对称)。 + * 未闭合同样显式报错,与字符串字面量保持一致。 + */ + readQuotedIdentifier() { + const start = this.position; + const contentStart = this.position + 1; + this.readChar(); // 跳过开始引号 + let value = ''; + while (this.ch !== '') { + if (this.ch === '"') { + if (this.peekChar() === '"') { + value += '"'; + this.readChar(); + this.readChar(); + continue; + } + break; + } + value += this.ch; + this.readChar(); + } + if (this.ch === '') { + throw new DatabaseError(`Unterminated quoted identifier at position ${start}`, 'PARSE_ERROR'); + } + if (value.length === 0) { + throw new DatabaseError(`Empty quoted identifier at position ${start}`, 'PARSE_ERROR'); + } + return { + type: TokenType.QUOTED_IDENTIFIER, + value, + position: contentStart, + }; + } isLetter(ch) { return /[a-zA-Z_]/.test(ch); } @@ -10044,6 +11696,7 @@ class Parser { } const right = this.parseSelect(); const unionStmt = { type: 'SELECT_UNION', left, right, all: all || undefined }; + this.adoptTrailingClauses(unionStmt, right); // 链式 UNION if (this.curTokenIs(TokenType.UNION)) { return this.parseUnionChain(unionStmt); @@ -10060,11 +11713,42 @@ class Parser { } const right = this.parseSelect(); const unionStmt = { type: 'SELECT_UNION', left, right, all: all || undefined }; + this.adoptTrailingClauses(unionStmt, right); if (this.curTokenIs(TokenType.UNION)) { return this.parseUnionChain(unionStmt); } return unionStmt; } + /** + * v0.8.0(A26):把"最后一个 SELECT 上的 ORDER BY / LIMIT / OFFSET"上移到 + * 复合查询节点,并把这些子句从该 SELECT 上**移除**。 + * + * 为什么必须"移动"而不是"复制": + * - 语法上它们写在最后一个 SELECT 之后,但 SQL 语义作用于整个 UNION + * (`A UNION B LIMIT 3` 是"合并去重后取前 3 行",不是"B 取前 3 行"); + * - 若只复制不移除,LIMIT 会**应用两次** —— 正是 A5/A6 那类"两处都生效" + * 缺陷的同一个坑(B 先被截断,再对合并结果截断,结果可能少行)。 + * + * 由于 `parseSelect` 无法预知后面有没有 UNION(它在返回后才知道), + * 只能先让它照常解析、发现 UNION 时再回收 —— 这比"预读 UNION"简单且无回溯。 + */ + adoptTrailingClauses(unionStmt, right) { + // 链式 UNION 时右侧可能已是 UNION 节点,其尾部子句在创建时已上移 + if (right.type !== 'SELECT') + return; + if (right.orderBy) { + unionStmt.orderBy = right.orderBy; + delete right.orderBy; + } + if (right.limit !== undefined) { + unionStmt.limit = right.limit; + delete right.limit; + } + if (right.offset !== undefined) { + unionStmt.offset = right.offset; + delete right.offset; + } + } /** 解析 JOIN 子句列表 */ parseJoinClauses() { const joins = []; @@ -10175,6 +11859,23 @@ class Parser { this.expect(TokenType.RPAREN); values.push(rowValues); } while (this.curTokenIs(TokenType.COMMA)); + // v0.8.0 根治:显式列名时校验每行值的个数与列数一致。 + // + // 此前完全不校验 arity,实测: + // INSERT INTO t (id, name) VALUES ('4','z',9) → 多余的 9 被**静默丢弃** + // INSERT INTO t VALUES ('3') → 静默写入半行(其余列缺失) + // SQLite / MySQL 都会报错。静默丢弃/截断属于"静默数据丢失", + // 必须在解析期拦下(此时无需 schema,只要有显式列名即可判断)。 + // + // 未显式给列名时(INSERT INTO t VALUES (...))需要 schema 才能判断个数, + // 由 executor 在拿到 schema 后校验(见 validateInsertArity)。 + if (columns) { + for (let i = 0; i < values.length; i++) { + if (values[i].length !== columns.length) { + throw this.error(`INSERT column/value count mismatch: ${columns.length} column(s) but row ${i + 1} has ${values[i].length} value(s)`); + } + } + } return { type: 'INSERT', into: tableName, @@ -10185,12 +11886,23 @@ class Parser { // =================================================================== // UPDATE // =================================================================== + /** + * v0.8.0: 创建**无原型**对象,用于以用户提供的列名为键的映射。 + * + * 背景:`obj['__proto__'] = v` 在普通对象上会触发原型 setter 而不是新增属性, + * 于是 `UPDATE t SET __proto__ = 'x'` 的 sets 变成 `{}` —— 既没写进去、也不会被 + * v0.7.4 新增的"未知列显式报错"预检看到,表现为"返回成功但什么都没发生"。 + * 建表路径在 v0.7.1 已用 Object.create(null) 防护,此处补齐其余路径。 + */ + newColumnMap() { + return Object.create(null); + } parseUpdate() { this.expect(TokenType.UPDATE); const tableName = this.expectIdentifier('table name'); this.expect(TokenType.SET); - // SET col=val, ... - const sets = {}; + // SET col=val, ...(v0.8.0: 无原型对象,防 __proto__ 列名静默吞掉赋值) + const sets = this.newColumnMap(); do { if (this.curTokenIs(TokenType.COMMA)) this.nextToken(); @@ -10198,7 +11910,7 @@ class Parser { this.expect(TokenType.EQ); sets[col] = this.parseValue(); } while (this.curTokenIs(TokenType.COMMA)); - let where = {}; + let where = this.newColumnMap(); if (this.curTokenIs(TokenType.WHERE)) { this.nextToken(); where = this.parseCondition(); @@ -10212,7 +11924,7 @@ class Parser { this.expect(TokenType.DELETE); this.expect(TokenType.FROM); const tableName = this.expectIdentifier('table name'); - let where = {}; + let where = this.newColumnMap(); if (this.curTokenIs(TokenType.WHERE)) { this.nextToken(); where = this.parseCondition(); @@ -10379,22 +12091,46 @@ class Parser { // =================================================================== // 条件表达式 // =================================================================== - /** condition → simple_cond ((AND|OR) simple_cond)* */ + /** + * condition → or_expr + * + * v0.8.0 根治:AND 的优先级必须高于 OR(SQL 标准)。 + * + * 此前实现是**纯左折叠**的单层循环: + * `a = 1 OR a = 2 AND b = 3` → `(a = 1 OR a = 2) AND b = 3` ← 错 + * 标准语义应为: + * `a = 1 OR a = 2 AND b = 3` → `a = 1 OR (a = 2 AND b = 3)` ← 对 + * + * 影响面:任何"权限条件 OR 业务条件 AND 软删标记"的写法都会静默返回错误行集 + * (审计实测:4 行表上返回 1 行而非 3 行)。这是本层影响面最大、改动最小的缺陷。 + * + * 现在按标准文法分层:or_expr → and_expr (OR and_expr)* + * and_expr → unary (AND unary)* + * unary → [NOT] primary + * 并且只在**确实有多个操作数**时才包 $and/$or,避免生成 {$and:[x]} 这种冗余节点 + * (否则 `WHERE a = 1` 的结构会从 `{a:{$eq:1}}` 变成 `{$and:[{a:{$eq:1}}]}`, + * 破坏既有 AST 契约与下游引擎的索引下推识别)。 + */ parseCondition() { - let left = this.parseSimpleCondition(); - while (this.curTokenIs(TokenType.AND) || this.curTokenIs(TokenType.OR)) { - const isAnd = this.curTokenIs(TokenType.AND); + return this.parseOrExpression(); + } + /** or_expr → and_expr (OR and_expr)* */ + parseOrExpression() { + const operands = [this.parseAndExpression()]; + while (this.curTokenIs(TokenType.OR)) { this.nextToken(); - const right = this.parseSimpleCondition(); - if (isAnd) { - // 合并到 $and - left = { $and: [left, right] }; - } - else { - left = { $or: [left, right] }; - } + operands.push(this.parseAndExpression()); } - return left; + return operands.length === 1 ? operands[0] : { $or: operands }; + } + /** and_expr → simple_cond (AND simple_cond)* */ + parseAndExpression() { + const operands = [this.parseSimpleCondition()]; + while (this.curTokenIs(TokenType.AND)) { + this.nextToken(); + operands.push(this.parseSimpleCondition()); + } + return operands.length === 1 ? operands[0] : { $and: operands }; } /** 公共 WHERE 条件入口(供 CASE WHEN 求值等外部场景,v0.3.1) */ parseWhere() { @@ -10437,8 +12173,12 @@ class Parser { if (isNot) this.nextToken(); this.expect(TokenType.NULL); - const result = {}; - result[column] = isNot ? { $ne: null } : { $eq: null }; + const result = this.newColumnMap(); + // v0.8.0 三值语义:IS NULL / IS NOT NULL 是**谓词**,不是等值比较。 + // 此前生成为 { $eq: null } / { $ne: null } —— 在 SQL 标准里 + // `x = NULL` 恒为 UNKNOWN(不保留任何行),而 IS NULL 要保留 NULL 行。 + // 两者语义不同,必须用不同标记(见 query/sql-compare.ts 的谓词说明)。 + result[column] = isNot ? { $isNotNull: true } : { $isNull: true }; return result; } // BETWEEN val1 AND val2 @@ -10447,7 +12187,12 @@ class Parser { const low = this.parseValue(); this.expect(TokenType.AND); const high = this.parseValue(); - const result = {}; + // v0.8.0 根治:BETWEEN 必须是**范围**条件。 + // 此前把同一个对象同时当成"操作符对象"和"操作数"传给 `$eq` + // (`{ $eq: { $gte, $lte } }`),matchOperator 的 `$eq` 收到一个对象再去比较, + // 结果只对"值恰好等于该对象"的行成立 —— 实测 `WHERE n BETWEEN 1 AND 2` + // 在 (1,2,NULL,3) 上只返回 1 行(应 2 行),静默错值。 + const result = this.newColumnMap(); result[column] = { $gte: low, $lte: high }; return result; } @@ -10458,8 +12203,19 @@ class Parser { const low = this.parseValue(); this.expect(TokenType.AND); const high = this.parseValue(); - const result = {}; - result[column] = { $not: { $gte: low, $lte: high } }; + const result = this.newColumnMap(); + // v0.8.0:NOT BETWEEN ≡ (x < low) OR (x > high),直接展开为字段级 `$or`。 + // + // 此前生成 `{ $not: { $gte, $lte } }`。这**曾经**恒为空集:字段级 `$not` + // 把内层对象当"单个条件对象",key `$gte`/`$lte` 被当成列名去取 + // `row['$gte']` → undefined → 整条恒 UNKNOWN → 取反仍 UNKNOWN → 全部排除。 + // + // 求值器已修正(内层按操作符对象解释),但这里仍选择展开为 `$or`: + // - `$or` 的三值行为(含 NULL 时 UNKNOWN)是显式可读的; + // - 避免依赖"$not 作用于比较"与"$not 作用于谓词"(如 `$isNull`)的差别。 + // 两条路径都有测试锁定(tests/v080-sql-three-valued.test.ts 与 + // tests/sql/where-matcher.test.ts 的 `$not` 用例)。 + result[column] = { $or: [{ $lt: low }, { $gt: high }] }; return result; } // NOT LIKE / NOT IN(NOT 后紧跟 LIKE 或 IN) @@ -10472,13 +12228,13 @@ class Parser { if (this.curTokenIs(TokenType.SELECT)) { const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $nin: { $subquery: subquery } }; return result; } const values = this.parseValueList(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $nin: values }; return result; } @@ -10487,7 +12243,7 @@ class Parser { this.nextToken(); // skip NOT this.nextToken(); // skip LIKE const pattern = this.parseValue(); - const result = {}; + const result = this.newColumnMap(); result[column] = { $not: { $like: pattern } }; return result; } @@ -10496,7 +12252,7 @@ class Parser { if (this.curTokenIs(TokenType.LIKE)) { this.nextToken(); const pattern = this.parseValue(); - const result = {}; + const result = this.newColumnMap(); result[column] = { $like: pattern }; return result; } @@ -10508,13 +12264,13 @@ class Parser { if (this.curTokenIs(TokenType.SELECT)) { const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $in: { $subquery: subquery } }; return result; } const values = this.parseValueList(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $in: values }; return result; } @@ -10522,7 +12278,7 @@ class Parser { if (this.curTokenIs(TokenType.AND) || this.curTokenIs(TokenType.OR) || this.curTokenIs(TokenType.RPAREN) || this.curTokenIs(TokenType.EOF) || (this.curToken.type === TokenType.IDENTIFIER && ['THEN', 'END', 'ELSE', 'NULLS', 'LIMIT', 'OFFSET', 'ORDER', 'GROUP', 'HAVING', 'UNION', 'WHERE'].includes(this.curToken.value.toUpperCase()))) { - const result = {}; + const result = this.newColumnMap(); result[column] = { $eq: true }; return result; } @@ -10533,24 +12289,52 @@ class Parser { this.nextToken(); // skip ( const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { [op]: { $subquery: subquery } }; return result; } - // 尝试解析列引用(identifier DOT identifier 格式) + // 解析比较运算符右侧的操作数(v0.8.0: 支持列引用) + // + // 此前只有 `a.b`(带点)形态被当作列引用,裸标识符一律走 parseValue → + // `WHERE x = y` 抛 PARSE_ERROR("Expected value, got \"y\"")。于是列对列比较 + // 必须写成 `WHERE t.x = t.y`,而多表 JOIN 里未限定列恰恰是最自然的写法 + // (`ON k = k` 同样报错)。 + // + // 判定依据是**位置**而不是猜测:能走到这里说明运算符已被消费,当前 token + // 就是右侧操作数。这个位置上除了列名只可能是字面量,而字面量有各自的 + // token 类型(NUMBER / STRING / TRUE / FALSE / NULL)—— 因此 + // **IDENTIFIER 在操作数位置必然是列引用**,没有别的可能: + // `id = 5` / `id = 'a'` / `active = TRUE` / `x = NULL` → 都不是 IDENTIFIER ✓ + // `x = y` → y 是 IDENTIFIER → 列引用 ✓ + // + // 拼错的列名(`WHERE id = nmae`)因此变成 **COLUMN_NOT_FOUND**(列不存在)而不是 + // PARSE_ERROR —— 这是更准确的诊断:问题不是"语法不对",而是"没有这一列"。 let value; - if ((this.curToken.type === TokenType.IDENTIFIER || this._isKeywordAsIdent()) && - this.peekTokenIs(TokenType.DOT)) { - const colRef = this.parseColumnRef(); - value = { $col: colRef }; + if (this.curToken.type === TokenType.QUOTED_IDENTIFIER) { + // 分隔标识符("col")在操作数位置同样是列引用 + value = { $col: this.expectColumnReference() }; + } + else if (this.curToken.type === TokenType.IDENTIFIER && !this._isReservedKeywordToken()) { + value = { $col: this.expectColumnReference() }; } else { value = this.parseValue(); } - const result = {}; + const result = this.newColumnMap(); result[column] = { [op]: value }; return result; } + /** + * v0.8.0:当前 token 是否"看起来像标识符但其实是关键字"。 + * + * 操作数位置上的 IDENTIFIER 必然是列引用(见上),但 `_isKeywordAsIdent()` 为真 + * 的那些 token 是**关键字**(它们可能作为列名出现在别处,但不会作为比较的右操作数 + * 出现)—— 例如 `WHERE a = AND` 之类的非法输入应当继续报 PARSE_ERROR, + * 而不是被当成列名再去查表。 + */ + _isReservedKeywordToken() { + return this.curToken.type !== TokenType.IDENTIFIER && this._isKeywordAsIdent(); + } /** 解析 EXISTS (SELECT ...) / NOT EXISTS (SELECT ...) */ parseExistsCondition(negate) { this.expect(TokenType.LPAREN); @@ -10571,6 +12355,19 @@ class Parser { peekTokenIs(type) { return this.peekToken.type === type; } + /** + * 解析一个列引用:`a` 或 `a.b`(v0.8.0 支持未限定形态)。 + * 与 `parseColumnRef` 的区别:后者还接受 CASE/数字/字符串字面量(SELECT 列表用), + * 这里只接受真正的列名。 + */ + expectColumnReference() { + const col = this.expectIdentifier('column reference'); + if (this.curTokenIs(TokenType.DOT)) { + this.nextToken(); + return `${col}.${this.expectIdentifier('column name after "."')}`; + } + return col; + } parseComparisonOp() { switch (this.curToken.type) { case TokenType.EQ: @@ -10629,16 +12426,20 @@ class Parser { return this.parseCaseExpressionText(); } // 数字常量列:SELECT 1 FROM t(常见于 EXISTS 子查询) + // v0.8.0: 只返回常量文本,别名交给调用方 parseColumnWithAlias 处理 + //(此前这里直接 return,导致 `SELECT 1 AS one` 的别名被丢弃, + // 投影时 row['1'] → undefined → 整行变成 {})。 if (this.curTokenIs(TokenType.NUMBER)) { const value = this.curToken.value; this.nextToken(); return value; } // v0.4.0: 字符串常量列:SELECT 'value' FROM t + // v0.8.0: 同样只返回字面量文本,别名由 parseColumnWithAlias 叠加 if (this.curTokenIs(TokenType.STRING)) { const value = this.curToken.value; this.nextToken(); - return `'${value}'`; + return `'${value.replace(/'/g, "''")}'`; } // 聚合函数? if (this.curTokenIs(TokenType.COUNT) || @@ -10834,6 +12635,13 @@ class Parser { throw this.error(`Expected ${type}, got "${this.curToken.value}"`); } expectIdentifier(context) { + // v0.8.0: 分隔标识符 "col" 与普通标识符等价(但不参与关键字识别, + // 因此可以用它引用保留字列名,如 "order" / "select") + if (this.curToken.type === TokenType.QUOTED_IDENTIFIER) { + const val = this.curToken.value; + this.nextToken(); + return val; + } if (this.curToken.type === TokenType.IDENTIFIER || this._isKeywordAsIdent()) { const val = this.curToken.value; this.nextToken(); @@ -10846,6 +12654,8 @@ class Parser { return (this.curToken.type !== TokenType.EOF && this.curToken.type !== TokenType.ILLEGAL && this.curToken.type !== TokenType.STRING && + // v0.8.0: 分隔标识符由 expectIdentifier 的显式分支处理,不走"关键字当标识符"兜底 + this.curToken.type !== TokenType.QUOTED_IDENTIFIER && this.curToken.type !== TokenType.NUMBER && this.curToken.type !== TokenType.COMMA && this.curToken.type !== TokenType.LPAREN && @@ -10898,29 +12708,212 @@ function parseWhereCondition(sql) { * * JOIN / GROUP BY / DISTINCT 逻辑在此层处理。 */ -// --------------------------------------------------------------------------- -// 分组 / 去重键编码(v0.7.4) -// --------------------------------------------------------------------------- /** - * v0.7.4: 分组/去重键的类型安全编码 —— 此前 `String(v ?? 'null')` 使 - * null 与字符串 'null' 合并为一组(GROUP BY 静默少组),`String(v ?? '\0')` - * 使 null/undefined/'\0' 在 DISTINCT/UNION 中互相吞并。类型前缀编码后 - * 各类型独立,仅同类型同值合并(与 where-matcher 的 === 语义一致)。 + * v0.8.0: 解析 `expr AS alias` 中的 `expr` 取值来源。 + * + * 此前只处理"字符串常量"与"列引用"两种情况,数字/布尔/NULL 常量会走 + * `row[source]` → undefined,于是 `SELECT 1 AS one FROM t` 返回 `[{}]` + * (键在、值为 undefined,JSON 序列化后整个键消失), + * 而这正是 EXISTS 子查询里最常见的写法(`SELECT 1 FROM ...`)。 */ -function encodeGroupKey(v) { - if (v === null) - return 'n'; - if (v === undefined) - return 'u'; - if (typeof v === 'string') - return `s${v}`; - if (typeof v === 'number') - return `d${v}`; - if (typeof v === 'boolean') - return `b${v}`; - if (typeof v === 'object') - return `o${JSON.stringify(v)}`; - return `x${String(v)}`; +/** + * 列引用取值(唯一实现)。 + * + * v0.8.0(A25):为什么必须有这一个函数。 + * + * "从行里取一列"此前散落在 4 处、规则各不相同: + * - `projectColumns`(where-matcher)精确匹配 + 唯一后缀匹配; + * - `resolveAliasSource` 只做 `row[text]`,**没有**后缀回退; + * - 聚合参数直接 `r[argCol]`,既没有后缀回退,也没有"列不存在"的报错; + * - `matchWhere` 的 `resolveField` 又有自己的一套。 + * 于是 `SELECT COUNT(t.n) FROM t` 返回 0:行键是 `n`,而聚合参数是 `t.n`, + * 直接取值得到 undefined,再被 `.filter(v => v != null)` 剔除 —— 计数为 0, + * **不报错**。而同一个 `t.n` 写在 SELECT 列表里(`SELECT t.n`)却正常, + * 因为那条路径会先剥离别名前缀。 + * + * 本函数统一三件事:别名前缀剥离 → 精确匹配 → 唯一后缀匹配; + * 都不命中时由调用方决定是抛错还是返回 undefined(`onMissing`)。 + */ +function resolveColumnValue(row, reference, opts) { + const text = reference.trim(); + if (text in row) + return row[text]; + // 别名前缀(`t.n` → `n`):JOIN 行用 `alias.col` 作键,但单表路径的 + // 行键不带前缀,两种形态都必须支持。 + if (text.includes('.')) { + const bare = text.split('.').pop(); + if (bare in row) + return row[bare]; + } + // 唯一后缀匹配:行键 `t.n` 而引用写作 `n` + let found; + let hits = 0; + for (const key of Object.keys(row)) { + if (key.endsWith(`.${text}`)) { + found = row[key]; + hits += 1; + } + } + if (hits === 1) + return found; + if (opts.strict) { + throw new DatabaseError(hits > 1 + ? `Ambiguous column "${text}" in ${opts.context}: present in multiple tables` + : `Unknown column "${text}" in ${opts.context}`, 'COLUMN_NOT_FOUND', { column: text }); + } + return undefined; +} +/** + * 解析聚合函数表达式 —— **唯一**的聚合识别实现。 + * + * 匹配形态:`FUNC( [DISTINCT] arg ) [AS alias]`,且整个表达式必须被聚合调用 + * 完整覆盖(`COUNT(1) + 1` 之类复合表达式**不**匹配,由调用方另行处理)。 + * + * 为什么把"输出键"与"参数"一起返回:聚合在 GROUP BY 与单行聚合两条路径上 + * 都要用同一个 (函数, 参数, 输出键) 三元组,此前两处各写一个正则、 + * 各算一次输出键,是 A25 那类漂移的温床。 + */ +function parseAggregateExpression(expr) { + const m = expr.trim().match(/^(COUNT|SUM|AVG|MIN|MAX)\s*\(\s*([\s\S]+?)\s*\)\s*(?:AS\s+([A-Za-z_][A-Za-z0-9_]*))?$/i); + if (!m) + return null; + const func = m[1].toUpperCase(); + let arg = m[2].trim(); + const alias = m[3]; + const distinct = /^DISTINCT\s+/i.test(arg); + if (distinct) + arg = arg.replace(/^\s*DISTINCT\s+/i, '').trim(); + const exprKey = `${func}(${distinct ? 'DISTINCT ' : ''}${arg})`; + return { func, arg, outputKey: alias || expr.trim(), distinct, exprKey }; +} +/** + * 判断 SELECT 列表达式是否为聚合表达式(含别名)。 + * 与 `parseAggregateExpression` 共用同一正则 —— 此前 `analyzeSelect` 用 + * `/^(COUNT|SUM|AVG|MIN|MAX)\(/` 单独判断,而执行路径用另一条正则: + * `COUNT (n)`(函数名与括号间有空格)会被前者判为"有聚合"、被后者判为 + * "不是聚合" → 走非聚合分支、输出 null。 + */ +function isAggregateExpression(expr) { + return parseAggregateExpression(expr) !== null; +} +/** + * 从 WHERE/HAVING 条件里提取聚合表达式原文(A23)。 + * + * 条件里的聚合可能出现在两个位置: + * - **键位**:`HAVING SUM(n) > 25` 解析为 `{ 'SUM(n)': { $gt: 25 } }` + * —— 表达式在键上,这是 parser 当前的形态; + * - **值位**:`HAVING 25 < SUM(n)` 之类的反向写法会把聚合放在操作数里, + * 这里一并扫描(`$gt: 'SUM(n)'` 不会出现,但 `{$eq:'SUM(n)'}` 可能出现)。 + * + * 只做**字符串级**提取(把找到的片段交给 parseAggregateExpression 校验), + * 不做表达式求值 —— 求值由调用方在拿到分组行之后进行。 + */ +function collectAggregateExpressionsInWhere(where) { + const found = []; + if (!where) + return found; + const scanText = (text) => { + const re = /(?:COUNT|SUM|AVG|MIN|MAX)\s*\([^()]*(?:\([^()]*\)[^()]*)*\)/gi; + let m; + while ((m = re.exec(text)) !== null) + found.push(m[0]); + }; + const walk = (cond) => { + for (const [key, value] of Object.entries(cond)) { + if (key === '$and' || key === '$or') { + for (const sub of (Array.isArray(value) ? value : [value])) + walk(sub); + continue; + } + if (key === '$not') { + walk(value); + continue; + } + // 键位:表达式原文作键 + scanText(key); + // 值位:操作数可能是字符串形态的表达式 + if (typeof value === 'string') + scanText(value); + else if (Array.isArray(value)) { + for (const item of value) + if (typeof item === 'string') + scanText(item); + } + else if (value !== null && typeof value === 'object') { + for (const operand of Object.values(value)) { + if (typeof operand === 'string') + scanText(operand); + } + } + } + }; + walk(where); + return found; +} +/** + * 列引用 → 输出键:剥离表别名前缀(`t.n` → `n`)。 + * + * 单表查询的行键不带前缀,而 SELECT 列表可以写 `t.n`;输出键使用裸列名 + * 与 `projectRow` 的 `projectColumns` 行为一致(否则 `SELECT t.n FROM t` + * 在聚合路径输出 `t.n`、在普通路径输出 `n`,同一查询两种行形状)。 + */ +function bareReference(reference) { + const text = reference.trim(); + if (!text.includes('.')) + return text; + return text.split('.').pop(); +} +function resolveAliasSource(source, row) { + const text = source.trim(); + // 字符串常量(含 SQL 标准 '' 转义还原) + const strLit = text.match(/^'(.*)'$/s); + if (strLit) + return strLit[1].replace(/''/g, "'"); + // 数字常量(含负号与小数) + if (/^-?\d+(\.\d+)?$/.test(text)) + return Number(text); + if (/^TRUE$/i.test(text)) + return true; + if (/^FALSE$/i.test(text)) + return false; + if (/^NULL$/i.test(text)) + return null; + // 列引用:走统一解析(此前只做 row[text],`t.n` 形态取不到值) + return resolveColumnValue(row, text, { strict: false, context: 'SELECT list' }); +} +/** + * v0.8.0: 数值型聚合的单次遍历实现。 + * + * 为什么替换 `Math.min(...arr)` / `Math.max(...arr)`: + * 展开实参会把整个数组压进调用栈,20 万行同组即 RangeError(栈溢出); + * 而这是普通查询就能触发的崩溃,不是边界场景。 + * + * 空集语义(SQL 标准):SUM/AVG/MIN/MAX 对**空集或全 NULL** 返回 NULL。 + * 此前统一返回 0,使 `SUM(x) = 0` 与"没有数据"不可区分。 + * 注意 COUNT 不在此列 —— COUNT 对空集返回 0(由调用方处理)。 + */ +function reduceNumeric(values, op) { + if (values.length === 0) + return null; + let acc = op === 'SUM' || op === 'AVG' ? 0 : values[0]; + for (let i = 0; i < values.length; i++) { + const v = values[i]; + switch (op) { + case 'SUM': + case 'AVG': + acc += v; + break; + case 'MIN': + if (i > 0 && v < acc) + acc = v; + break; + case 'MAX': + if (i > 0 && v > acc) + acc = v; + break; + } + } + return op === 'AVG' ? acc / values.length : acc; } /** 解析 "CASE WHEN c1 THEN v1 WHEN c2 THEN v2 ELSE v3 END [AS alias]" */ function parseCaseExpression(expr) { @@ -10985,7 +12978,30 @@ class QueryExecutor { this.engine = engine; this.maxRowsPerQuery = maxRowsPerQuery; } + /** + * 执行一条语句。 + * + * v0.8.0:**同步抛错也必须表现为 rejected promise**。 + * + * `db.query()` 是 async 的,但 `async` 只把**函数体内**的同步抛错转成 rejection; + * 这里 `return this.executeXxx(stmt)` 的调用发生在 async 函数的同步前导段, + * 若被调方法在**进入第一个 await 之前**就抛错(例如 INSERT 的 arity 校验、 + * VALIDATION_ERROR),异常会穿过 async 边界成为**同步抛出**: + * await expect(db.query(...)).rejects.toMatchObject(...) // 断言不生效,测试崩 + * db.query(...).catch(...) // 永远不执行 + * 对调用方而言这是不可预期的 —— 同一个 API 有的错误走 catch、有的走 try。 + * 因此这里显式包一层 try/catch 统一成 rejection(`async` 方法里 `throw` + * 一定产出 rejected promise)。 + */ async execute(stmt) { + try { + return await this.dispatch(stmt); + } + catch (error) { + throw error instanceof Error ? error : new DatabaseError(String(error), 'QUERY_ERROR'); + } + } + dispatch(stmt) { switch (stmt.type) { case 'SELECT': return this.executeSelect(stmt); case 'SELECT_UNION': return this.executeSelectUnion(stmt); @@ -11013,40 +13029,101 @@ class QueryExecutor { // =================================================================== // UNION(v0.3.0) // =================================================================== - /** 递归执行 UNION / UNION ALL,返回合并结果 */ - async executeSelectUnion(stmt) { - const leftRows = await this.executeSelectPart(stmt.left); - const rightRows = await this.executeSelectPart(stmt.right); + /** + * 递归执行 UNION / UNION ALL,返回合并结果。 + * + * v0.8.0(A26):尾部 ORDER BY / LIMIT / OFFSET 作用于**整个**复合结果。 + * + * 此前 `SelectUnionStatement` 没有这三个字段,parser 把它们挂在右侧 SELECT 上 + * —— 于是 `A UNION B ORDER BY id DESC` 只排 B(实测返回 1,2,4,3), + * `A UNION B LIMIT 3` 只截断 B(实测返回 4 行)。现在由本方法在合并 + 去重 + * **之后**统一排序与截断(顺序:合并 → 去重 → 排序 → OFFSET/LIMIT)。 + */ + async executeSelectUnion(stmt, purpose = 'result') { + const leftRows = await this.executeSelectPart(stmt.left, purpose); + const rightRows = await this.executeSelectPart(stmt.right, purpose); // 列名以左侧为准,右侧只取值 const leftCols = leftRows.length > 0 ? Object.keys(leftRows[0]) : []; const normalized = leftRows.map((row) => row); + let result; if (stmt.all) { for (const row of rightRows) normalized.push(this.projectUnionRow(row, leftCols)); - return normalized; + result = normalized; } - // UNION 去重(与 DISTINCT 相同的列值拼接键) - const seen = new Set(); - const result = []; - for (const row of normalized) { - const key = Object.values(row).map(encodeGroupKey).join('\x1f'); - if (!seen.has(key)) { - seen.add(key); - result.push(row); + else { + // UNION 去重(与 DISTINCT 相同的列值拼接键) + const seen = new Set(); + result = []; + for (const row of normalized) { + const key = Object.values(row).map(encodeValueKey).join('\x1f'); + if (!seen.has(key)) { + seen.add(key); + result.push(row); + } + } + for (const row of rightRows) { + const projected = this.projectUnionRow(row, leftCols); + const key = Object.values(projected).map(encodeValueKey).join('\x1f'); + if (!seen.has(key)) { + seen.add(key); + result.push(projected); + } } } - for (const row of rightRows) { - const projected = this.projectUnionRow(row, leftCols); - const key = Object.values(projected).map(encodeGroupKey).join('\x1f'); - if (!seen.has(key)) { - seen.add(key); - result.push(projected); - } + // 尾部子句(作用于整个复合结果)。 + // 排序键可能引用**输出列序号**(`ORDER BY 1`)或输出列名 —— 复合结果没有表 + // 上下文,因此这里只按结果行的键解析,不做 schema 校验。 + if (stmt.orderBy && stmt.orderBy.length > 0) { + result = this.orderCompoundResult(result, stmt.orderBy); + } + const offset = stmt.offset ?? 0; + if (offset > 0 || stmt.limit !== undefined) { + const limit = stmt.limit ?? result.length; + result = result.slice(offset, offset + limit); } return result; } - async executeSelectPart(part) { - return part.type === 'SELECT_UNION' ? this.executeSelectUnion(part) : this.executeSelect(part); + /** + * 复合结果排序:把 ORDER BY 项解析为结果行的键。 + * + * 支持两种写法(与单表 SELECT 一致): + * - 输出列序号:`ORDER BY 1` → 第 1 个输出列(SQL 标准,UNION 场景最常见, + * 因为各分支的输出列名可能不同); + * - 输出列名:`ORDER BY id` → 结果行的 `id` 键。 + * 引用不存在的列时返回原序(不静默丢弃排序 —— 排序键缺失本身不改变行集合, + * 但会让用户以为已排序;故此处抛 COLUMN_NOT_FOUND,与 SELECT 路径口径一致)。 + */ + orderCompoundResult(rows, orderBy) { + const firstRow = rows[0]; + const outputColumns = firstRow ? Object.keys(firstRow) : []; + const resolved = orderBy.map((item) => { + const asOrdinal = /^\d+$/.test(item.column.trim()) ? Number(item.column.trim()) : null; + if (asOrdinal !== null) { + if (asOrdinal < 1 || asOrdinal > outputColumns.length) { + throw new DatabaseError(`ORDER BY position ${asOrdinal} is out of range: compound query has ${outputColumns.length} output column(s)`, 'QUERY_ERROR'); + } + return { ...item, column: outputColumns[asOrdinal - 1] }; + } + // 允许带别名前缀(`ORDER BY t.id` → `id`) + const bare = item.column.includes('.') ? item.column.split('.').pop() : item.column; + if (outputColumns.length > 0 && !(item.column in firstRow) && !(bare in firstRow)) { + throw new DatabaseError(`Unknown column "${item.column}" in ORDER BY of compound query. Output columns: ${outputColumns.join(', ')}`, 'COLUMN_NOT_FOUND'); + } + return { ...item, column: item.column in firstRow ? item.column : bare }; + }); + return applyOrderBy(rows, resolved); + } + /** + * 执行一个 SELECT 部件(含 UNION)。 + * + * @param purpose 透传给 `executeSelect` —— 作为写语句的输入行源时必须传 + * `'source'`,否则 `maxRowsPerQuery` 会在写入前静默截断行源(A29)。 + */ + async executeSelectPart(part, purpose = 'result') { + if (part.type === 'SELECT_UNION') + return this.executeSelectUnion(part, purpose); + return this.executeSelect(part, purpose); } /** 将 UNION 右侧行投影为左侧列结构(按位置取值) */ projectUnionRow(row, leftCols) { @@ -11145,29 +13222,104 @@ class QueryExecutor { // =================================================================== // SELECT // =================================================================== - async executeSelect(stmt) { + /** + * v0.8.0: SELECT 语句的**执行形态分析**(单一事实来源)。 + * + * 为什么把它独立出来:core.queryStream 此前在 core.ts 里**自己重新推导**了一遍 + * "这条 SELECT 能不能走引擎快路径、列投影怎么算",与 executor 的规则各写一份, + * 于是两者漂移出四类静默不一致(实测): + * SELECT id AS x FROM t query=[{x}] stream=[{id,v}](全列 + 原列名) + * SELECT t.id FROM t query=[{id}] stream=[{}](空对象) + * ... LIMIT 2 OFFSET 1 query=1 行 stream=2 行(引擎与 executor 各切一次) + * ... LIMIT 0 query=[] stream=1 行 + * + * 现在由 executor 提供唯一判定,core 只消费结论,不再复制规则。 + */ + analyzeSelect(stmt) { const hasGroupBy = !!(stmt.groupBy && stmt.groupBy.length > 0); const hasAggregate = !hasGroupBy && this._hasAggregateColumn(stmt.columns); - let rows; const isJoinQuery = !!(stmt.joins && stmt.joins.length > 0); - // CASE WHEN 表达式需要原始列求值(SELECT 列或 WHERE 条件中的 CASE): - // 引擎层取全行,投影统一在 executor 端完成 const needsRawRows = this.hasCaseColumn(stmt.columns) || (!!stmt.where && this.whereHasCase(stmt.where)); - // v0.3.3: ORDER BY 引用 SELECT 别名 → 引擎层不排序/不截断,投影后再排序 const orderByAlias = this.orderByUsesSelectAlias(stmt); - // v0.3.3: SELECT 列含 `col AS alias` → 引擎层投影会丢失源列,统一取原始行由 executor 投影 const hasSelectAlias = stmt.columns.some((c) => /\s+AS\s+\w+$/i.test(c)); + // LIMIT/OFFSET 下推安全性:只有"引擎返回的行 == LIMIT 应当作用其上的行"时才可下推。 + // 此前 compileSelect 无条件下推、executor 末尾又切一次 → LIMIT 被应用两遍 + // (4 行表上 LIMIT 2 OFFSET 1 只返回 1 行)。 + const limitPushdownSafe = !hasGroupBy && !hasAggregate && !isJoinQuery + && !stmt.fromSubquery && !stmt.distinct + && !(stmt.having && Object.keys(stmt.having).length > 0) + && !orderByAlias && !needsRawRows && !hasSelectAlias; + // 引擎层投影是否与 executor 语义等价:仅当全部列都是裸 * 或简单列引用 + //(可带 table. 前缀)时成立。出现 AS 别名/常量/CASE/聚合就交给 executor 投影。 + let engineEquivalentProjection = stmt.columns.length > 0; + for (const c of stmt.columns) { + if (c === '*') + continue; + if (/^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/.test(c)) + continue; + engineEquivalentProjection = false; + break; + } + // 真流式(引擎 findStream 直连)的充分条件:所有会改变行集合/行序/行形状的 + // 阶段都不存在,且 WHERE 已解析(无子查询、无 $col 关联引用)。 + const streamable = engineEquivalentProjection + && !hasGroupBy && !hasAggregate && !isJoinQuery && !stmt.fromSubquery + && !stmt.distinct && !(stmt.having && Object.keys(stmt.having).length > 0) + && !(stmt.orderBy && stmt.orderBy.length > 0) + && !needsRawRows && !orderByAlias && !hasSelectAlias + && !this.hasCorrelatedRefs(stmt.where) + && !containsUnresolvedSubqueries(stmt.where); + return { + hasGroupBy, + hasAggregate, + isJoinQuery, + needsRawRows, + orderByAlias, + hasSelectAlias, + limitPushdownSafe, + engineEquivalentProjection, + streamable, + }; + } + /** + * @param purpose `'result'`(默认)= 结果交付给用户,受 `maxRowsPerQuery` 截断; + * `'source'` = 作为写语句的输入行源,**不得**截断(见下方说明)。 + */ + async executeSelect(stmt, purpose = 'result') { + const shape = this.analyzeSelect(stmt); + const { hasGroupBy, hasAggregate, isJoinQuery, needsRawRows, orderByAlias, hasSelectAlias, limitPushdownSafe } = shape; + let rows; + // v0.8.0(A37):WHERE 里的列引用也必须校验存在性。 + // + // 投影侧的同类校验(assertProjectionColumnsExist)早已存在,但 WHERE 侧一直 + // 没有 —— 于是 `$col`(列对列比较)引用到不存在的列时,求值器取不到值 → + // 返回 UNRESOLVED → 比较判 UNKNOWN → **所有行被过滤且不报错**。实测修复前: + // SELECT id FROM t WHERE id = oops → [] + // SELECT id FROM t WHERE id = t.oops → [] + // SELECT id FROM t WHERE x = nope → [] + // 三条都会静默返回空集(`oops` 在 SQL 里是列引用,因为没有别的字面量形态)。 + // 这正是"未解析引用静默变 false"这一整类缺陷(PLAN §3 根因 7)的最后一块。 + await this.assertWhereColumnsExist(stmt, isJoinQuery); if (stmt.fromSubquery) { // v0.4.0: FROM (SELECT ...) 派生表 — 子查询结果作为行源 const subRows = await this.executeSelectPart(stmt.fromSubquery); rows = isJoinQuery ? await this.executeJoinSelect(stmt, subRows.map((row) => this.prefixRow(row, stmt.alias ?? ''))) : subRows; - if (!isJoinQuery && stmt.where && Object.keys(stmt.where).length > 0) { - // 非 JOIN:WHERE 在 executor 端过滤(子查询结果不经引擎) - stmt.where = await this.resolveSubqueries(stmt.where); - rows = rows.filter((row) => matchWhere(row, stmt.where)); + if (!isJoinQuery) { + // v0.8.0(A36):派生表行源不带任何别名前缀,因此 `d.id` 形态的引用 + // 必须剥离前缀(与非 JOIN 单表路径同一规则)。 + // + // 此前这里**不做**归一化:`SELECT d.id FROM (SELECT id, g FROM t) AS d` + // 直接拿 `d.id` 去投影,行里只有 `id` → 静默返回 `[]`; + // 而同一查询写成 `SELECT id ...` 却正确 —— 同一行源两种写法结论相反。 + this.normalizeUnprefixedReferences(stmt, [stmt.alias ?? stmt.from]); + if (stmt.where && Object.keys(stmt.where).length > 0) { + // 非 JOIN:WHERE 在 executor 端过滤(子查询结果不经引擎) + stmt.where = await this.resolveSubqueries(stmt.where); + rows = rows.filter((row) => matchWhere(row, stmt.where)); + } } } else if (!stmt.from && !isJoinQuery) { @@ -11179,29 +13331,9 @@ class QueryExecutor { rows = await this.executeJoinSelect(stmt); } else { - // 非 JOIN 路径:规范化 WHERE 字段名(剥离主表别名前缀,修复 WHERE u.age > 20) - if (stmt.where && Object.keys(stmt.where).length > 0) { - stmt.where = this.normalizeWhereColumns(stmt.where, [stmt.alias ?? stmt.from]); - } - // v0.4.0: ORDER BY / GROUP BY 带表前缀同样剥离(如 ORDER BY u.age) + // 非 JOIN 路径:行键不带别名前缀 → 统一归一化引用 const mainAliases = [stmt.alias ?? stmt.from].filter(Boolean); - if (stmt.orderBy && stmt.orderBy.length > 0) { - stmt.orderBy = stmt.orderBy.map((o) => ({ ...o, column: this.stripAlias(o.column, mainAliases) })); - } - if (stmt.groupBy && stmt.groupBy.length > 0) { - stmt.groupBy = stmt.groupBy.map((c) => this.stripAlias(c, mainAliases)); - } - // v0.4.0: SELECT 列带表前缀剥离(SELECT u.name → name,行键无前缀) - stmt.columns = stmt.columns.map((c) => { - if (c === '*' || /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(c) || /^\s*CASE\b/i.test(c) || /^'/.test(c)) - return c; - const m = c.match(/^(.+?)\s+AS\s+(\w+)$/i); - if (m) { - const stripped = this.stripAlias(m[1].trim(), mainAliases); - return stripped === m[1].trim() ? c : `${stripped} AS ${m[2]}`; - } - return this.stripAlias(c, mainAliases); - }); + this.normalizeUnprefixedReferences(stmt, mainAliases); // WHERE 含关联子查询($col 引用外层行)→ 逐行绑定上下文求值 if (stmt.where && this.hasCorrelatedRefs(stmt.where)) { const plan = compileStatement(hasGroupBy || hasAggregate ? { ...stmt, columns: ['*'] } : stmt); @@ -11212,8 +13344,11 @@ class QueryExecutor { plan.limit = undefined; plan.offset = undefined; } - rows = await this.engine.find(plan.table, { ...plan, where: this.stripCorrelatedExists(stmt.where) }); - rows = await this.filterCorrelated(rows, stmt.where); + // v0.8.0:引擎层只做**可下推部分**的预过滤,逐行谓词整体交给 filterCorrelated。 + // 此前把原始 where(含 `$col`)直接交给引擎,引擎判 UNKNOWN → 候选行 0 → + // `WHERE t.x = t.y` 静默空结果(详见 enginePreFilter 文档)。 + rows = await this.engine.find(plan.table, { ...plan, where: this.enginePreFilter(stmt.where) }); + rows = await this.filterCorrelated(rows, stmt.where, mainAliases); } else { // 先解析子查询 @@ -11223,6 +13358,11 @@ class QueryExecutor { const plan = compileStatement(hasGroupBy || hasAggregate ? { ...stmt, columns: ['*'] } : stmt); if (needsRawRows || hasSelectAlias) plan.columns = ['*']; + if (!limitPushdownSafe) { + // 不安全:不把 LIMIT/OFFSET 交给引擎,由末尾统一应用(只应用一次) + plan.limit = undefined; + plan.offset = undefined; + } if (orderByAlias) { plan.orderBy = undefined; plan.limit = undefined; @@ -11237,7 +13377,19 @@ class QueryExecutor { } if (hasGroupBy) rows = this.executeGroupBy(rows, stmt); - if (stmt.distinct) + // v0.8.0(A27):DISTINCT 作用于**输出列**,因此必须发生在投影之后。 + // + // 此前顺序是 DISTINCT → 投影,于是 `SELECT DISTINCT dept AS d FROM e` + // 对 `{id, dept, v}` 原始行去重(4 行互不相同)→ 再投影成 `{d}` → 返回 4 行 + // `a,a,b,b`;而 `SELECT DISTINCT dept FROM e` 返回 2 行 —— 加一个别名就改变了 + // 去重语义。SQL 标准中 DISTINCT 作用于 SELECT 的输出列。 + // + // 例外(保留投影前位置):`SELECT DISTINCT dept FROM e ORDER BY v` —— `v` + // 不在输出列里,去重后它就不存在了,无法再排序。SQL 标准禁止这种写法, + // 但既有实现支持它(语义是"排序后按输出列去重"),因此保留: + // 此时按 `DISTINCT → ORDER BY` 的顺序执行(见下方分支)。 + const distinctBeforeProjection = !!stmt.distinct && this.distinctNeedsPreProjectionSort(stmt); + if (distinctBeforeProjection) rows = this.executeDistinct(rows); if (stmt.having && Object.keys(stmt.having).length > 0) { // v0.4.0 修复: HAVING 中的标量子查询(HAVING SUM(o.amount) > (SELECT AVG(...)))需先解析 @@ -11253,8 +13405,42 @@ class QueryExecutor { } rows = rows.filter((row) => matchWhere(row, stmt.having)); } - if (stmt.orderBy && stmt.orderBy.length > 0) + // v0.8.0(A23):分组行的输出投影必须在 HAVING **之后** —— HAVING 可能引用 + // 未出现在 SELECT 里的聚合(`SELECT g FROM t GROUP BY g HAVING SUM(n) > 25`), + // 那些内部键要到过滤完成后才能丢弃。 + if (hasGroupBy) + rows = this.projectGroupedRows(rows, stmt); + /** + * ORDER BY 的应用时机。 + * + * 排序必须发生在"排序列仍然存在"的阶段,因此分两种情况: + * - 排序键全部是**输出列**(或 SELECT 别名,别名在投影后才存在 → 走下方 + * 投影后的 `orderByAlias` 分支)→ 投影后再排序(顺序更自然,也让 + * `SELECT DISTINCT ... ORDER BY <输出列>` 得到"先去重再排序"的标准语义); + * - 排序键引用了**未出现在 SELECT 里的列**(`SELECT name FROM t ORDER BY id`, + * 以及 `SELECT DISTINCT dept FROM e ORDER BY v`)→ 必须在投影前排序, + * 否则该列已被丢弃、排序无从进行。 + * + * 此前无条件在投影前排序(`applyOrderBy` 一行),于是 A27 的 DISTINCT + * 必然发生在投影前 —— 两者互为因果,必须一起修正。 + */ + const orderNeedsRawColumns = !!stmt.orderBy && stmt.orderBy.length > 0 + && (distinctBeforeProjection || !this.orderByReferencesOutputColumns(stmt)); + if (stmt.orderBy && stmt.orderBy.length > 0 && !orderByAlias && orderNeedsRawColumns) { rows = applyOrderBy(rows, stmt.orderBy); + } + // v0.8.0 根治:投影前校验列引用存在性(此前未知列静默产出 {} 行)。 + // + // 实测缺陷:`SELECT bogus FROM t`(4 行表)返回 `[{},{},{},{}]`, + // `SELECT NAME FROM t`(列名是 name)同样返回 `[{},{}]` —— 行数正确、内容全空、 + // 无任何报错;`GROUP BY bogus` 会把全表并成一组,`ORDER BY bogus` 顺序随机。 + // SQLite/MySQL 三处都报 "no such column"。 + // + // 校验时机选在 JOIN/子查询合并完成后(此时是最终行形态),且仅在**未发生聚合**时 + // 进行 —— 聚合/分组会把行替换为计算键,普通列本就不存在(那属于另一类语义问题)。 + if (!hasAggregate) { + this.assertProjectionColumnsExist(rows, stmt.columns, stmt); + } // v0.7.3: `SELECT *, col AS alias` —— 此前 columns[0]==='*' 直接不投影, // 别名列/常量列丢失。仅当 '*' 是唯一列时跳过投影(projectRow 对裸 '*' // 合并原行全部列,其余表达式覆盖/追加) @@ -11262,21 +13448,48 @@ class QueryExecutor { && !(stmt.columns.length === 1 && stmt.columns[0] === '*')) { rows = rows.map((row) => this.projectRow(row, stmt.columns)); } + // v0.8.0(A27):DISTINCT 的规范位置 —— 投影之后(作用于输出列) + if (stmt.distinct && !distinctBeforeProjection) + rows = this.executeDistinct(rows); // v0.3.3: ORDER BY 别名 → 投影后才存在,需在投影后重新排序 if (orderByAlias && stmt.orderBy && stmt.orderBy.length > 0) { rows = applyOrderBy(rows, stmt.orderBy); } - const offset = stmt.offset ?? 0; - const limit = stmt.limit ?? rows.length; - rows = rows.slice(offset, offset + limit); - // 全局行数上限保护 - if (this.maxRowsPerQuery > 0 && rows.length > this.maxRowsPerQuery) { + // v0.8.0: LIMIT/OFFSET 的应用点,两条路径互斥且**只执行一次**: + // - limitPushdownSafe === true → 引擎已按同一 offset/limit 完成切片,此处不再切片; + // - limitPushdownSafe === false → 引擎拿不到 limit/offset,此处是唯一应用点。 + // 此前两条路径都切了一次,导致 4 行表上 `LIMIT 2 OFFSET 1` 只返回 1 行(应 2,3)。 + if (!limitPushdownSafe) { + const offset = stmt.offset ?? 0; + const limit = stmt.limit ?? rows.length; + rows = rows.slice(offset, offset + limit); + } + // 全局行数上限保护。 + // + // v0.8.0(A29 根治):只在"结果交付给用户"时截断;作为写语句的输入行源 + //(`INSERT INTO dst SELECT ...`)时**不截断** —— 否则用户设置的 + // `maxRowsPerQuery` 会静默减少写入行数: + // maxRowsPerQuery = 2 时 `INSERT INTO dst SELECT id FROM src`(src 有 4 行) + // 会只写入 2 行并返回成功(实测)。这不是"限制查询规模",而是**静默丢数据**。 + // 写路径由上层的 `assertWithinRowLimit` 显式报错(而不是静默截断), + // 二者配合才能同时满足"保护内存"与"不丢数据"。 + if (purpose === 'result' && this.maxRowsPerQuery > 0 && rows.length > this.maxRowsPerQuery) { rows = rows.slice(0, this.maxRowsPerQuery); } return rows; } // ---- JOIN ---- async executeJoinSelect(stmt, preloadedMain) { + // v0.8.0(A37):JOIN ON 的列引用也要校验存在性。 + // + // 修复前 `ON l.k = rn.nope` 这类拼错的列名会走到 matchWhere → $col 取不到值 + // → UNKNOWN → **没有任何行能连接上**,用户看到的是空结果而不是"列不存在"。 + // 这里与 SELECT 的 WHERE 校验共用同一实现(不同 context 文案与歧义策略)。 + for (const join of stmt.joins ?? []) { + if (join.on && Object.keys(join.on).length > 0) { + await this.validateJoinOnColumns(stmt, join); + } + } const mainAlias = stmt.alias ?? stmt.from; // v0.4.0: 派生表行源已预加载(行带别名前缀) let mainRows; @@ -11482,76 +13695,280 @@ class QueryExecutor { return result; } // ---- GROUP BY ---- + /** + * 分组聚合。 + * + * v0.8.0(A22/A23)两项行为修正,都源于**分组语义只有一个定义**这一原则: + * + * 1. **GROUP BY 可用 SELECT 别名**(A22)。 + * SQL 标准允许 `SELECT g AS grp, COUNT(*) FROM t GROUP BY grp`。 + * 此前 `grp` 直接当列名去 `row['grp']` 取到 undefined → 全部行落入同一组; + * 更糟的是后续投影阶段发现 `g` 不在输出行里,抛 + * `COLUMN_NOT_FOUND Unknown column "g" in SELECT list` —— 用户看到的是 + * 一个与真正原因(GROUP BY 引用别名)无关的错误。 + * 这里先把 GROUP BY 项解析为**基列**(别名 → 其源表达式),再做分组与输出。 + * + * 2. **HAVING 可用未出现在 SELECT 里的聚合**(A23)。 + * `SELECT g FROM t GROUP BY g HAVING SUM(n) > 25` 是标准写法。 + * 此前聚合只在 `stmt.columns` 上计算,`SUM(n)` 从未被求值 → + * HAVING 的键 `SUM(n)` 在行里不存在 → matchWhere 取到 undefined → + * UNKNOWN → **空结果**(`HAVING SUM(n) > 25` 返回 [],而 MAX(n) > 25 同样 [])。 + * 现在把 SELECT 列与 HAVING 里出现的聚合**并集**一起算进分组行,再交给 + * HAVING 过滤。多算的聚合只影响中间行,最终输出仍严格按 SELECT 列投影, + * 因此不会泄漏额外列。 + */ executeGroupBy(rows, stmt) { + // 1) GROUP BY 项 → 基列(别名解析,A22) + const groupColumns = this.resolveGroupByColumns(stmt); const groups = new Map(); for (const row of rows) { // v0.7.4: 类型安全键编码 —— 此前 String(row[col] ?? 'null') 使 // null 与字符串 'null' 合并为一组(GROUP BY 静默少组) - const key = stmt.groupBy.map((col) => encodeGroupKey(row[col])).join('\x1f'); + const key = groupColumns + .map((col) => encodeValueKey(resolveColumnValue(row, col, { strict: true, context: 'GROUP BY' }))) + .join('\x1f'); if (!groups.has(key)) groups.set(key, []); groups.get(key).push(row); } + // 2) 需要计算的聚合表达式 = SELECT 列 ∪ HAVING 中的聚合(A23) + const aggregateExprs = this.collectAggregateExpressions(stmt); const result = []; // v0.4.0: 聚合表达式键 → 输出键 映射(HAVING SUM(...) 引用表达式时归一为别名键) const aliasMap = new Map(); for (const groupRows of groups.values()) { + const first = groupRows[0]; const aggregated = {}; - for (const col of stmt.groupBy) - aggregated[col] = groupRows[0][col]; + // 分组列以基列名输出(`GROUP BY grp` 引用别名时输出基列 `g`, + // 与 SELECT 列表里 `g AS grp` 的投影可正确对应) + for (const col of groupColumns) { + aggregated[col] = resolveColumnValue(first, col, { strict: true, context: 'GROUP BY' }); + } + // 先算聚合(含仅 HAVING 引用的),统一以 exprKey 与输出键写入 + for (const agg of aggregateExprs) { + const value = agg.distinct + ? this.computeDistinctAggregate(agg.func, groupRows, agg.arg) + : this.computeAggregate(agg.func, groupRows, agg.arg); + if (agg.outputKey !== agg.exprKey) + aliasMap.set(agg.exprKey, agg.outputKey); + // 同时以表达式原文与输出键写入:HAVING 既可能写 `SUM(n)` 也可能写别名 + aggregated[agg.exprKey] = value; + if (agg.outputKey !== agg.exprKey) + aggregated[agg.outputKey] = value; + } + // 再按 SELECT 列表补齐非聚合列(分组列已写;非分组列取组内首行 — + // 这是既有的宽松语义,SQL 标准禁止但此处保持兼容) for (const colExpr of stmt.columns) { if (colExpr === '*') continue; - const m = colExpr.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i); - if (m) { - const [, func, arg, alias] = m; - const value = this.computeAggregate(func.toUpperCase(), groupRows, arg.trim()); - const exprKey = `${func.toUpperCase()}(${arg.trim()})`; - const outputKey = alias || colExpr; - if (outputKey !== exprKey) - aliasMap.set(exprKey, outputKey); - aggregated[outputKey] = value; - } - else if (/^\s*CASE\b/i.test(colExpr)) { + const agg = parseAggregateExpression(colExpr); + if (agg) + continue; // 已在上面写入 + if (/^\s*CASE\b/i.test(colExpr)) { // v0.3.2: 非聚合的 CASE WHEN 列取组内第一行求值 const expr = parseCaseExpression(colExpr); - aggregated[expr?.alias ?? colExpr] = expr ? evaluateCase(expr, groupRows[0]) : null; - } - else if (!stmt.groupBy.includes(colExpr)) { - aggregated[colExpr] = groupRows[0][colExpr]; + const key = expr?.alias ?? colExpr; + if (!(key in aggregated)) { + aggregated[key] = expr ? evaluateCase(expr, first) : null; + } + continue; } + const aliasMatch = colExpr.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (aliasMatch) + continue; // 别名列由投影阶段处理 + // 投影阶段用的键:优先"剥离别名前缀后的基列"(SELECT t.n 的输出键是 n) + const base = bareReference(colExpr); + if (base in aggregated) + continue; + if (colExpr in aggregated) + continue; + aggregated[base] = resolveColumnValue(first, colExpr, { strict: true, context: 'SELECT list' }); } + // 注意:**不在这里**做输出投影。 + // + // 为 HAVING 多算的聚合(`SELECT g ... HAVING SUM(n) > 25` 需要 SUM(n)) + // 必须在 HAVING 求值时仍然可见,而 HAVING 在 GROUP BY 之后、ORDER BY 之前 + // 执行(见 executeSelect 的阶段顺序)。若在此处就把行收缩为 SELECT 输出键, + // HAVING 的 `SUM(n)` 会取到 undefined → UNKNOWN → **空结果** + // (实测:加投影后 `HAVING SUM(n) > 25` 又变回 [])。 + // 因此投影统一由 `projectGroupedRows` 在 HAVING 之后、ORDER BY 之前完成。 result.push(aggregated); } stmt._aggAliasMap = aliasMap; return result; } - computeAggregate(func, rows, col) { + /** 对全部分组行做输出投影(HAVING 之后调用) */ + projectGroupedRows(rows, stmt) { + const groupColumns = this.resolveGroupByColumns(stmt); + return rows.map((row) => this.projectGroupedRow(row, groupColumns, stmt.columns)); + } + /** + * 把分组行收缩为 SELECT 列表要求的输出列(保持 SELECT 顺序)。 + * + * GROUP BY 路径不做通用的 `projectRow`(那会丢掉聚合值),因此需要这一层显式投影。 + * 处理四类列: + * - `*`:保留分组行全部键(`SELECT * ... GROUP BY g` 的既有语义); + * - 聚合表达式:键取 `parseAggregateExpression` 的 outputKey; + * - `expr AS alias`:输出 alias,值从分组行按 expr 取(含二义性由取值函数处理); + * - 裸列引用:输出剥离别名前缀后的基列名。 + */ + projectGroupedRow(aggregated, groupColumns, columns) { + if (columns.some((c) => c === '*')) + return aggregated; + const output = {}; + // 分组列按 SELECT 顺序先输出(它们也是各组的标识列) + for (const col of groupColumns) { + if (col in aggregated) + output[col] = aggregated[col]; + } + for (const colExpr of columns) { + if (colExpr === '*') + continue; + const agg = parseAggregateExpression(colExpr); + if (agg) { + // outputKey 与 exprKey 在聚合阶段都被写入,取 outputKey(别名优先) + output[agg.outputKey] = aggregated[agg.outputKey]; + continue; + } + const caseExpr = /^\s*CASE\b/i.test(colExpr) ? parseCaseExpression(colExpr) : null; + if (caseExpr) { + const key = caseExpr.alias ?? colExpr; + output[key] = aggregated[key]; + continue; + } + const aliasMatch = colExpr.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (aliasMatch) { + output[aliasMatch[2]] = aggregated[aliasMatch[2]]; + continue; + } + const base = bareReference(colExpr); + output[base] = base in aggregated ? aggregated[base] : aggregated[colExpr]; + } + return output; + } + /** + * GROUP BY 项解析为基列:`GROUP BY grp`(grp 是 SELECT 别名)→ `g`。 + * + * 只解析"SELECT 列表里带 AS 别名"与"CASE ... AS 别名"这两种可追踪形态; + * 其余原样返回(真正的列名或表达式)。同名歧义时保持原样 —— 后续 + * `resolveColumnValue` 的 strict 模式会给出明确的 COLUMN_NOT_FOUND/歧义错误。 + */ + resolveGroupByColumns(stmt) { + const aliases = new Map(); + for (const col of stmt.columns) { + const m = col.match(/^(.+?)\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i); + if (m) + aliases.set(m[2], m[1].trim()); + } + return stmt.groupBy.map((col) => { + const target = aliases.get(col.trim()); + if (target === undefined) + return col; + // 别名指向另一个聚合表达式时不能当作分组列(`SELECT COUNT(*) AS c ... GROUP BY c`) + return parseAggregateExpression(target) ? col : target; + }); + } + /** + * 收集本次分组需要计算的全部聚合表达式(SELECT 列 ∪ HAVING),按 exprKey 去重。 + * + * 同时扫描 HAVING 是 A23 的核心:`HAVING SUM(n) > 25` 里的 `SUM(n)` 必须被求值, + * 否则 HAVING 阶段取不到该键。 + */ + collectAggregateExpressions(stmt) { + const collected = new Map(); + const add = (expr) => { + const agg = parseAggregateExpression(expr); + if (!agg) + return; + const existing = collected.get(agg.exprKey); + // SELECT 列优先(它带别名);HAVING 只是补充 + if (!existing) + collected.set(agg.exprKey, agg); + }; + for (const col of stmt.columns) + add(col); + for (const expr of collectAggregateExpressionsInWhere(stmt.having)) + add(expr); + return [...collected.values()]; + } + /** + * 计算单个聚合值。 + * + * v0.8.0: 返回类型放宽为 unknown —— SUM/AVG/MIN/MAX 对空集返回 null(SQL 标准), + * COUNT 仍返回 number。最小/最大改为单次遍历(不再展开实参,消除栈溢出)。 + */ + computeAggregate(func, rows, arg) { // v0.3.2: 聚合参数支持 CASE WHEN 表达式(如 SUM(CASE WHEN age > 18 THEN 1 ELSE 0 END)) - const caseExpr = /^\s*CASE\b/i.test(col) ? parseCaseExpression(col) : null; - // v0.4.0: COUNT(DISTINCT col) 等去重聚合 - const distinctArg = !caseExpr && /^\s*DISTINCT\s+/i.test(col); - const argCol = distinctArg ? col.replace(/^\s*DISTINCT\s+/i, '').trim() : col; + const caseExpr = /^\s*CASE\b/i.test(arg) ? parseCaseExpression(arg) : null; + // v0.4.0: COUNT(DISTINCT col) —— distinct 由 parseAggregateExpression 剥离后传入 + const argCol = arg.trim(); + // v0.8.0(A25):列引用统一走 resolveColumnValue(别名前缀剥离 + 后缀回退)。 + // 取不到值时按 COUNT(*) 之外的情形报 COLUMN_NOT_FOUND,而不是静默计 0: + // 此前 `COUNT(t.n)` 返回 0 且无任何报错,用户会以为"表里没有非空 n"。 const rawValues = rows - .map((r) => (caseExpr ? evaluateCase(caseExpr, r) : r[argCol])) + .map((r) => (caseExpr + ? evaluateCase(caseExpr, r) + : argCol === '*' + ? r + : resolveColumnValue(r, argCol, { strict: true, context: `aggregate ${func}(${argCol})` }))) .filter((v) => v !== null && v !== undefined); - // v0.4.0: COUNT 对原始值去重(任意类型);数值聚合在类型转换后去重 if (func === 'COUNT') { if (argCol === '*') return rows.length; - if (distinctArg) { - return new Set(rawValues.map((v) => (typeof v === 'object' ? JSON.stringify(v) : String(v)))).size; - } return rawValues.length; } - const nums = rawValues.map(Number); - const distinctNums = distinctArg ? Array.from(new Set(nums)) : nums; + const nums = rawValues.map((v) => Number(v)); + // v0.8.0: 数值型聚合一律走单次遍历归约。 + // + // 此前 MIN/MAX 用 `Math.min(...distinctNums)` 展开实参:20 万行同组直接 + // `RangeError: Maximum call stack size exceeded`(原生错误,调用方无法按 code 分类)。 + // 同时把"空集/全 NULL"的返回值从 0 改为 null —— SQL 标准中 SUM/AVG/MIN/MAX + // 对空集返回 NULL,返回 0 会让 `SUM(x) = 0` 与"没有数据"不可区分。 switch (func) { - case 'SUM': return distinctNums.reduce((a, b) => a + b, 0); - case 'AVG': return distinctNums.length === 0 ? 0 : distinctNums.reduce((a, b) => a + b, 0) / distinctNums.length; - case 'MIN': return distinctNums.length === 0 ? 0 : Math.min(...distinctNums); - case 'MAX': return distinctNums.length === 0 ? 0 : Math.max(...distinctNums); - default: return 0; + case 'SUM': return reduceNumeric(nums, 'SUM'); + case 'AVG': return reduceNumeric(nums, 'AVG'); + case 'MIN': return reduceNumeric(nums, 'MIN'); + case 'MAX': return reduceNumeric(nums, 'MAX'); + default: return null; + } + } + /** + * DISTINCT 聚合(`COUNT(DISTINCT col)` / `SUM(DISTINCT col)`)。 + * + * v0.8.0(A25):独立成函数而不是在 computeAggregate 里加分支 —— 去重键 + * 必须用 `encodeValueKey`(类型安全),而"对原始值去重"(COUNT)与 + * "对数值化后去重"(SUM)用的键不同,混在一个函数里正是此前 + * `String(v)` 与 `JSON.stringify(v)` 两套编码并存的原因。 + */ + computeDistinctAggregate(func, rows, arg) { + const values = rows + .map((r) => resolveColumnValue(r, arg, { strict: true, context: `aggregate ${func}(DISTINCT ${arg})` })) + .filter((v) => v !== null && v !== undefined); + if (func === 'COUNT') { + return new Set(values.map((v) => encodeValueKey(v))).size; + } + const nums = values.map((v) => Number(v)); + // 去重**用键判定、用原值参与计算**。 + // + // 不能写成 `Array.from(new Set(nums.map(encodeValueKey))).map(Number)`: + // encodeValueKey 是类型前缀编码(`10` → `'n10'`),`Number('n10')` = NaN —— + // 实测 `SUM(DISTINCT v)` 返回 NaN(应为 10/20)。 + // 键只用于判等,参与归约的必须是原始数值。 + const seen = new Set(); + const distinctNums = []; + for (const n of nums) { + const key = encodeValueKey(n); + if (seen.has(key)) + continue; + seen.add(key); + distinctNums.push(n); + } + switch (func) { + case 'SUM': return reduceNumeric(distinctNums, 'SUM'); + case 'AVG': return reduceNumeric(distinctNums, 'AVG'); + case 'MIN': return reduceNumeric(distinctNums, 'MIN'); + case 'MAX': return reduceNumeric(distinctNums, 'MAX'); + default: return null; } } // ---- DISTINCT(优化:列值拼接代替 JSON.stringify) ---- @@ -11559,7 +13976,7 @@ class QueryExecutor { const seen = new Set(); return rows.filter((row) => { // v0.7.4: 类型安全键编码(null 与 'null' 字符串、'\0' 分离) - const key = Object.values(row).map(encodeGroupKey).join('\x1f'); + const key = Object.values(row).map(encodeValueKey).join('\x1f'); if (seen.has(key)) return false; seen.add(key); @@ -11574,9 +13991,23 @@ class QueryExecutor { if (!schema) throw new DatabaseError(`Table "${stmt.into}" does not exist`, 'TABLE_NOT_FOUND'); const colNames = stmt.columns ?? Object.keys(schema.columns); + // v0.8.0(A17): INSERT 的目标列必须存在。 + // + // 此前**不校验** stmt.columns:`INSERT INTO t (id, nope) VALUES ('1', 2)` 里 + // `nope` 在下面的循环中被当作列名写进 row,随后引擎的 validateRow 只遍历 + // schema 列 → `nope` 被静默丢弃、INSERT 报成功。用户以为写进去了, + // 而 `SELECT nope` 又报 COLUMN_NOT_FOUND —— 写路径与读路径对同一列名给出 + // 相反结论。这里显式报错(与读路径同一错误码),并一次列出全部未知列。 + const unknownColumns = colNames.filter((col) => !(col in schema.columns)); + if (unknownColumns.length > 0) { + throw new DatabaseError(`Unknown column${unknownColumns.length > 1 ? 's' : ''} ${unknownColumns + .map((c) => `"${c}"`) + .join(', ')} in table "${stmt.into}". Known columns: ${Object.keys(schema.columns).join(', ')}`, 'COLUMN_NOT_FOUND'); + } // INSERT INTO ... SELECT ...(v0.3.0) if (stmt.select) { - const selectRows = await this.executeSelectPart(stmt.select); + // A29:行源不得被 maxRowsPerQuery 截断(截断即静默丢写入行) + const selectRows = await this.executeSelectPart(stmt.select, 'source'); // v0.4.0 修复:源列顺序不能依赖行键(validateRow 会跳过 undefined 导致行键缺失/乱序)。 // 以 SELECT 列列表 / 源表 schema 列顺序为准,按位置对齐目标列,缺列不填。 let srcCols = []; @@ -11602,9 +14033,22 @@ class QueryExecutor { } return mapped; }); + // v0.8.0(B-1): 在任何写入之前执行统一校验(未知列/类型/maxLength/min/max/required) + this.assertWithinRowLimit(rows.length); + await this.engine.validatePayload?.(stmt.into, rows, 'insert'); return this.engine.insert(stmt.into, rows); } - const rows = (stmt.values ?? []).map((vals) => { + const rows = (stmt.values ?? []).map((vals, tupleIndex) => { + // v0.8.0(A30):值的个数不得多于目标列。 + // + // 此前多出来的值被**静默丢弃**:`INSERT INTO t (id, n) VALUES ('9', 1, 'extra')` + // 报成功且只写入 (id,n)。用户以为第三个值进了某一列(或者至少会被提示), + // 实际上它消失了 —— 与 A17 同一类"写路径静默丢数据"。反方向的"值少于列" + // 是合法的(缺列走 default/NULL),因此只拒绝多于。 + if (vals.length > colNames.length) { + throw new DatabaseError(`INSERT has ${vals.length} value(s) for ${colNames.length} column(s) in table "${stmt.into}"` + + ` (row ${tupleIndex + 1}); too many values`, 'VALIDATION_ERROR', { table: stmt.into, values: vals.length, columns: colNames.length }); + } const row = {}; for (let i = 0; i < colNames.length; i++) { if (i < vals.length) @@ -11612,8 +14056,29 @@ class QueryExecutor { } return row; }); + // v0.8.0(B-1): 同上 —— 校验先于任何副作用,多行批量整体判定 + this.assertWithinRowLimit(rows.length); + await this.engine.validatePayload?.(stmt.into, rows, 'insert'); return this.engine.insert(stmt.into, rows); } + /** + * v0.8.0(A29):写路径的行数上限保护。 + * + * `maxRowsPerQuery` 此前只在 SELECT 的返回处生效(`executeSelect` 末尾切片), + * 而 `INSERT INTO dst SELECT * FROM huge_src` 的**中间结果集**完全不受约束 —— + * 它由 `executeSelectPart` 直接产出并逐行写入,既不切片也不报错。 + * 于是"防止一次查询把浏览器内存打满"这一配置项在最容易打满内存的路径上失效。 + * + * 这里选择**报错**而不是静默截断:静默只写一部分行会让用户以为全部写完 + * (又一次"写路径静默丢数据")。错误里给出上限值与来源,便于用户改配置或 + * 改写查询。 + */ + assertWithinRowLimit(count) { + if (this.maxRowsPerQuery > 0 && count > this.maxRowsPerQuery) { + throw new DatabaseError(`Statement would write ${count} rows, exceeding maxRowsPerQuery (${this.maxRowsPerQuery}).` + + ' Narrow the source query or raise the limit.', 'QUERY_ERROR', { rows: count, maxRowsPerQuery: this.maxRowsPerQuery }); + } + } async executeUpdate(stmt) { // v0.7.4: 先解析 WHERE 子查询 —— 此前直接 compileStatement 调引擎: // 引擎层 matchWhere 的 $in/$nin 遇未解析的 $subquery 对象恒 false → @@ -11802,7 +14267,255 @@ class QueryExecutor { } return engine.vacuum(); } - /** 列列表是否包含 CASE WHEN 表达式 */ + /** + * SELECT 列表的**输出列名**集合(投影后行里会出现的键)。 + * + * 与 `projectRow` 的键规则保持一致: + * - `*` → 未知(返回 `null` 表示"无法判定",调用方按"包含"处理,避免误判需要原始列); + * - `expr AS alias` → `alias`; + * - 聚合 `FUNC(arg) [AS alias]` → `alias` 或表达式原文; + * - CASE `... AS alias` → `alias`; + * - 字符串/数字常量列 → 表达式原文; + * - 裸列引用 → 剥离别名前缀后的列名。 + */ + outputColumnNames(stmt) { + const names = new Set(); + for (const col of stmt.columns) { + if (col === '*') + return null; + const agg = parseAggregateExpression(col); + if (agg) { + names.add(agg.outputKey); + continue; + } + const caseExpr = /^\s*CASE\b/i.test(col) ? parseCaseExpression(col) : null; + if (caseExpr) { + names.add(caseExpr.alias ?? col); + continue; + } + const aliasMatch = col.match(/^(.+?)\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i); + if (aliasMatch) { + names.add(aliasMatch[2]); + continue; + } + names.add(bareReference(col)); + } + return names; + } + /** ORDER BY 的键是否全部能在**输出列**里找到(决定排序发生在投影前还是投影后) */ + orderByReferencesOutputColumns(stmt) { + if (!stmt.orderBy || stmt.orderBy.length === 0) + return true; + const outputs = this.outputColumnNames(stmt); + if (outputs === null) + return true; // SELECT * + return stmt.orderBy.every((o) => outputs.has(bareReference(o.column))); + } + /** + * DISTINCT 是否必须在投影**前**执行。 + * + * 仅当 ORDER BY 引用了不在输出列里的列时成立:`SELECT DISTINCT dept FROM e ORDER BY v` + * 需要先按 `v` 排序、再按输出列 `dept` 去重。若把 DISTINCT 放到投影后, + * `v` 已被丢弃,排序无从进行(会报 COLUMN_NOT_FOUND)。 + * + * SQL 标准禁止这种写法;此处保留既有语义(排序后去重),并把该例外显式记录, + * 而不是让 DISTINCT 的位置在所有情况下都"碰巧"由排序决定。 + */ + distinctNeedsPreProjectionSort(stmt) { + if (!stmt.orderBy || stmt.orderBy.length === 0) + return false; + return !this.orderByReferencesOutputColumns(stmt); + } + /** + * v0.8.0(A37):校验 JOIN ON 里引用的列在**参与连接的两张表**之一存在。 + * + * `ON a.x = b.y` 的 `a.x` 属于主表或已有 JOIN 表,`b.y` 属于当前 JOIN 表 —— + * 两侧都要能找到归属;否则报 COLUMN_NOT_FOUND(而不是让连接静默产生空结果)。 + * 裸列名只要求"某一侧存在"(`ON k = k` 的既有语义是取主表列)。 + */ + async validateJoinOnColumns(stmt, join) { + const available = new Set(); + const addTable = async (table, alias) => { + const schema = await this.engine.getTableSchema(table); + if (!schema) + return; + for (const col of Object.keys(schema.columns)) { + available.add(col); + available.add(`${alias}.${col}`); + } + }; + await addTable(stmt.from, stmt.alias ?? stmt.from); + for (const other of stmt.joins ?? []) { + await addTable(other.table, other.alias ?? other.table); + if (other === join) + break; + } + await addTable(join.table, join.alias ?? join.table); + const missing = []; + const check = (ref) => { + const text = ref.trim(); + if (!text) + return; + if (available.has(text)) + return; + const bare = text.includes('.') ? text.split('.').pop() : text; + if (available.has(bare)) + return; + missing.push(text); + }; + const walkOperand = (value) => { + if (typeof value !== 'object' || value === null) + return; + for (const [op, operand] of Object.entries(value)) { + if (op === '$col') { + check(String(operand)); + continue; + } + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) + walkOperand(operand); + } + }; + for (const [key, value] of Object.entries(join.on)) { + if (key === '$and' || key === '$or' || key === '$not') + continue; + check(key); + walkOperand(value); + } + if (missing.length > 0) { + throw new DatabaseError(`Unknown column${missing.length > 1 ? 's' : ''} ${missing.map((c) => `"${c}"`).join(', ')}` + + ` in JOIN ON of table "${stmt.from}"`, 'COLUMN_NOT_FOUND', { columns: missing, from: stmt.from }); + } + } + /** + * v0.8.0(A37):校验 WHERE 中出现的列名都存在于行源。 + * + * 覆盖两类引用: + * - **键位**:`WHERE x = 1` 的 `x`; + * - **`$col` 值位**:`WHERE x = y` 的 `y`(parser 生成 `{ x: { $eq: { $col: 'y' } } }`), + * 含 `$and`/`$or`/`$not` 内部的操作数槽。 + * + * 派生表与子查询的行源:跳过(其列来自子查询投影,需要单独解析; + * 由 `normalizeUnprefixedReferences` + 运行时行形状决定)。 + * JOIN:两侧的表别名都要参与判定 —— `t.x` 与另一表的 `u.x` 都属于合法引用。 + * + * 之所以必须是**显式错误**而不是依赖运行时 UNKNOWN:`$col` 取不到值时 + * 三值求值器只能返回 UNKNOWN,而 UNKNOWN 在 WHERE 里表现为"不保留该行" —— + * 用户看到的是"没有匹配数据",与"列名拼错"完全无法区分。 + */ + async assertWhereColumnsExist(stmt, isJoinQuery) { + if (!stmt.where || Object.keys(stmt.where).length === 0) + return; + // 派生表行源:列来自子查询投影,此处不做 schema 校验 + if (stmt.fromSubquery) + return; + if (!stmt.from) + return; + await this.validateWhereColumns(stmt, stmt.where, { + context: 'WHERE', + rejectAmbiguous: isJoinQuery, + }); + } + /** + * 通用的 WHERE 侧列引用校验(SELECT 的 WHERE 与 JOIN 的 ON 共用)。 + * + * @param context 错误消息中的位置描述('WHERE' / 'JOIN ON') + * @param rejectAmbiguous JOIN 场景下裸列名被多表共有 → 报歧义(SQL 标准要求限定)。 + * **JOIN ON 传 false**:`ON a.x = b.x` 里两侧的限定名各自 + * 合法,而 `ON k = k` 这种裸写法在 JOIN 语境下按"取主表列" + * 解释(与既有 joinRows 行为一致),不应因为"两表都有 k" + * 就拒绝 —— 那会把常见的等值连接写法判为错误。 + */ + async validateWhereColumns(stmt, where, opts) { + const isJoinQuery = opts.rejectAmbiguous; + const available = new Set(); + const owners = new Map(); // 裸列名 → 表别名(用于歧义判定) + const collectFrom = async (table, alias) => { + const schema = await this.engine.getTableSchema(table); + if (!schema) + return; + for (const col of Object.keys(schema.columns)) { + available.add(col); + available.add(`${alias}.${col}`); + const prev = owners.get(col); + if (prev === undefined) + owners.set(col, alias); + else if (prev !== alias) + owners.set(col, '*'); // 多表共有 → 歧义 + } + }; + await collectFrom(stmt.from, stmt.alias ?? stmt.from); + if (isJoinQuery) { + for (const join of stmt.joins ?? []) { + await collectFrom(join.table, join.alias ?? join.table); + } + } + const missing = []; + const ambiguous = []; + const check = (ref) => { + const text = ref.trim(); + if (!text) + return; + if (available.has(text)) { + // 裸列名在 JOIN 中若被多张表共有 → 歧义(SQL 标准要求限定) + if (!text.includes('.') && isJoinQuery && owners.get(text) === '*') + ambiguous.push(text); + return; + } + // 唯一后缀匹配(行键可能带别名,而 where 写作裸列名;反向亦然) + const bare = text.includes('.') ? text.split('.').pop() : text; + if (available.has(bare)) + return; + missing.push(text); + }; + const walkOperand = (value) => { + if (typeof value !== 'object' || value === null) + return; + const ops = value; + for (const [op, operand] of Object.entries(ops)) { + if (op === '$col') { + check(String(operand)); + continue; + } + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) { + walkOperand(operand); + } + else if (Array.isArray(operand)) { + for (const item of operand) + walkOperand(item); + } + } + }; + const walkWhere = (cond) => { + for (const [key, value] of Object.entries(cond)) { + if (key === '$and' || key === '$or') { + for (const sub of (Array.isArray(value) ? value : [value])) + walkWhere(sub); + continue; + } + if (key === '$not') { + walkWhere(value); + continue; + } + if (key === '$exists') + continue; // 由子查询执行结果填充 + if (/^\s*CASE\b/i.test(key)) + continue; // CASE 键内含表达式,另行求值 + check(key); + walkOperand(value); + } + }; + walkWhere(where); + if (ambiguous.length > 0) { + throw new DatabaseError(`Ambiguous column${ambiguous.length > 1 ? 's' : ''} ${ambiguous.map((c) => `"${c}"`).join(', ')}` + + ` in ${opts.context}: present in multiple joined tables. Qualify with a table alias.`, 'COLUMN_NOT_FOUND', { columns: ambiguous }); + } + if (missing.length > 0) { + throw new DatabaseError(`Unknown column${missing.length > 1 ? 's' : ''} ${missing.map((c) => `"${c}"`).join(', ')}` + + ` in ${opts.context} of table "${stmt.from}"`, 'COLUMN_NOT_FOUND', { columns: missing, from: stmt.from }); + } + } + /** + * 列列表是否包含 CASE WHEN 表达式 */ hasCaseColumn(columns) { return columns.some((col) => /^\s*CASE\b/i.test(col)); } @@ -11847,6 +14560,67 @@ class QueryExecutor { return false; } getEngine() { return this.engine; } + /** + * v0.8.0: 校验 SELECT 列表中的**裸列引用**在结果行里确实存在,否则抛 COLUMN_NOT_FOUND。 + * + * 为什么必须做:`SELECT bogus FROM t` 此前返回 `[{},{},...]`(行数对、内容空、无报错), + * 这是"静默错误结果"里最难被发现的一类 —— 调用方拿到的是结构正确但全空的表格。 + * + * 判定规则(与 projectRow 的分类保持一致): + * - `*` 跳过; + * - 字符串/数字常量列跳过; + * - CASE 表达式跳过(其内部列引用由 evaluateCase 处理); + * - `expr AS alias`:字符串/数字常量跳过,否则取 `expr` 作为被引用列; + * - 其余视为裸列引用。 + * 存在性检查允许两种形态:精确匹配,或**唯一**以 `.` 结尾(JOIN 行以 `alias.col` 为键)。 + * 若同一个后缀出现在多个表别名下则视为歧义,同样报错(符合"未限定列名歧义应报错"的语义)。 + * + * 结果集为空时无法判定,此时跳过(空表 + 未知列不会误报)。 + */ + assertProjectionColumnsExist(rows, columns, stmt) { + if (rows.length === 0 || columns.length === 0) + return; + const available = new Set(); + for (const row of rows) { + for (const key of Object.keys(row)) + available.add(key); + } + for (const raw of columns) { + const col = raw.trim(); + if (col === '*') + continue; + if (parseCaseExpression(col)) + continue; + let reference = col; + const aliasMatch = col.match(/^(.+?)\s+AS\s+\w+$/i); + if (aliasMatch) + reference = aliasMatch[1].trim(); + // 常量列(字符串 / 数字 / 布尔 / NULL) + if (/^'.*'$/s.test(reference)) + continue; + if (/^-?\d+(\.\d+)?$/.test(reference)) + continue; + if (/^(TRUE|FALSE|NULL)$/i.test(reference)) + continue; + // 聚合表达式(在 hasAggregate 分支已跳过,这里再兜一层防御) + if (/^(COUNT|SUM|AVG|MIN|MAX)\s*\(/i.test(reference)) + continue; + if (available.has(reference)) + continue; + const suffixMatches = []; + for (const key of available) { + if (key.endsWith(`.${reference}`)) + suffixMatches.push(key); + } + if (suffixMatches.length === 1) + continue; + if (suffixMatches.length > 1) { + const owners = suffixMatches.map((k) => k.slice(0, k.length - reference.length - 1)).sort(); + throw new DatabaseError(`Ambiguous column "${reference}" in SELECT list: present in ${owners.join(', ')}`, 'COLUMN_NOT_FOUND', { column: reference, tables: owners, from: stmt.from }); + } + throw new DatabaseError(`Unknown column "${reference}" in SELECT list`, 'COLUMN_NOT_FOUND', { column: reference, from: stmt.from, available: [...available].slice(0, 32) }); + } + } /** * 列投影(v0.3.1):普通列走 projectColumns,CASE WHEN 表达式逐行求值; * v0.3.3: 支持 `col AS alias` 列别名 @@ -11882,6 +14656,13 @@ class QueryExecutor { constCols.push({ key: col, value }); continue; } + // v0.8.0: 匿名常量列(数字/布尔/NULL)—— `SELECT 1 FROM t` 此前投影成 {} + // (键 '1' 在、值为 undefined,JSON 序列化后键消失)。SQLite/MySQL 用 + // 表达式原文作列名,这里保持一致。 + if (/^-?\d+(\.\d+)?$/.test(col) || /^(TRUE|FALSE|NULL)$/i.test(col)) { + constCols.push({ key: col, value: resolveAliasSource(col, row) }); + continue; + } plain.push(col); } // v0.7.3: hasStar 时以原行全部列为基(projectColumns 仅投影 plain 列,不含 * 的其余列) @@ -11893,9 +14674,7 @@ class QueryExecutor { Object.assign(projected, row); } else { - const lit = source.match(/^'(.*)'$/s); - // v0.7.3: 同 constCols —— SQL 标准 '' 转义还原 - projected[alias] = lit ? lit[1].replace(/''/g, "'") : row[source]; + projected[alias] = resolveAliasSource(source, row); } } for (const { key, value } of constCols) { @@ -11909,31 +14688,74 @@ class QueryExecutor { // =================================================================== // 无 GROUP BY 时的聚合计算 // =================================================================== - /** 检查 SELECT 列列表中是否包含聚合函数 */ + /** 检查 SELECT 列列表中是否包含聚合函数(与执行路径共用同一解析器) */ _hasAggregateColumn(columns) { - return columns.some((col) => /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(col)); + return columns.some((col) => isAggregateExpression(col)); } - /** 计算单行聚合结果(无 GROUP BY) */ + /** + * 计算单行聚合结果(无 GROUP BY)。 + * + * v0.8.0(A25):聚合识别与取值改为与 GROUP BY 路径**共用** + * `parseAggregateExpression` / `resolveColumnValue` —— 此前这里有第二份正则, + * 于是 `COUNT (n)`(函数名后有空格)在"是否聚合"判定与"如何求值"两处结论不同。 + */ computeSingleAggregate(rows, stmt) { const result = {}; for (const colExpr of stmt.columns) { if (colExpr === '*') continue; - const m = colExpr.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i); - if (m) { - const [, func, arg, alias] = m; - result[alias || colExpr] = this.computeAggregate(func.toUpperCase(), rows, arg.trim()); - } - else { - // 非聚合列取第一行的值 - result[colExpr] = rows.length > 0 ? rows[0][colExpr] : null; + const agg = parseAggregateExpression(colExpr); + if (agg) { + result[agg.outputKey] = agg.distinct + ? this.computeDistinctAggregate(agg.func, rows, agg.arg) + : this.computeAggregate(agg.func, rows, agg.arg); + continue; } + // 非聚合列取第一行的值(严格取值:未知列报错而非静默 null) + result[colExpr] = rows.length > 0 + ? resolveColumnValue(rows[0], colExpr, { strict: false, context: 'SELECT list' }) + : null; } return result; } // =================================================================== // 关联子查询 / 别名规范化(v0.3.0) // =================================================================== + /** + * 归一化"行键不带前缀"的查询中的所有引用 —— 剥离表别名前缀。 + * + * v0.8.0(A36):抽成单一实现,因为**两条**路径需要同一规则: + * - 非 JOIN 单表(行键是裸列名,`WHERE u.age` 要变成 `age`); + * - 派生表非 JOIN(`FROM (SELECT ...) AS d`,行键来自子查询投影,同样无前缀)。 + * 此前只有前者做归一化,后者完全没做 → `SELECT d.id FROM (...) AS d` 静默空结果, + * 而同义的 `SELECT id FROM (...) AS d` 正确。 + * + * 覆盖 WHERE(含 `$col` 嵌套引用)/ ORDER BY / GROUP BY / SELECT 四类引用。 + * 聚合表达式与 CASE 表达式**整体跳过**(其内部的列引用由各自的求值器处理, + * 而它们的求值器现在都走统一的 `resolveColumnValue`,本身支持前缀)。 + */ + normalizeUnprefixedReferences(stmt, aliases) { + const list = aliases.filter((a) => !!a); + if (stmt.where && Object.keys(stmt.where).length > 0) { + stmt.where = this.normalizeWhereColumns(stmt.where, list); + } + if (stmt.orderBy && stmt.orderBy.length > 0) { + stmt.orderBy = stmt.orderBy.map((o) => ({ ...o, column: this.stripAlias(o.column, list) })); + } + if (stmt.groupBy && stmt.groupBy.length > 0) { + stmt.groupBy = stmt.groupBy.map((c) => this.stripAlias(c, list)); + } + stmt.columns = stmt.columns.map((c) => { + if (c === '*' || isAggregateExpression(c) || /^\s*CASE\b/i.test(c) || /^'/.test(c)) + return c; + const m = c.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (m) { + const stripped = this.stripAlias(m[1].trim(), list); + return stripped === m[1].trim() ? c : `${stripped} AS ${m[2]}`; + } + return this.stripAlias(c, list); + }); + } /** 剥离主表别名前缀:'u.id' → 'id'(键与 $col 值均处理,支持多层别名) */ normalizeWhereColumns(where, aliases) { const normalized = {}; @@ -12053,38 +14875,118 @@ class QueryExecutor { } return false; } - /** 移除关联 EXISTS 标记(引擎层先执行无 EXISTS 条件的查询) */ - stripCorrelatedExists(where) { + /** + * 构造**引擎层预过滤**用的 WHERE 子句。 + * + * 逐行求值的谓词必须整体移出引擎层,否则引擎的 `matchWhere`(没有外层行上下文) + * 会把它们判为 UNKNOWN → **所有行被过滤掉**,逐行求值再正确也无行可算: + * - 关联 `EXISTS`:`$exists` 子查询未执行,`{ $subquery: ... }` 引擎无法求值; + * - CASE WHEN 表达式键:需要行上下文才能算出布尔; + * - `$col` 列引用(`WHERE t.x = t.y` → `{ x: { $eq: { $col: 'y' } } }`): + * 引擎层取不到"另一列"的值。 + * + * 移出的粒度取决于连接词 —— 这里**不是**保守兜底,而是逻辑上唯一正确的做法: + * - 顶层 / `$and` 的成员:可以单独删除该谓词,其余谓词仍然安全可下推; + * - `$or` / `$not` 的成员:不能单独删除。删掉 `A OR B` 中的 `B` 会得到更严的 + * `A`(**漏行**);删掉 `NOT B` 中的 `B` 会得到恒真的 `NOT true`(**多行**)。 + * 因此整条 `$or` / `$not` 都交给逐行求值(`$not` 的恒真情形直接丢弃该键)。 + */ + enginePreFilter(where) { const cleaned = {}; for (const [key, value] of Object.entries(where)) { - if (key === '$and' || key === '$or') { - cleaned[key] = value.map((sub) => this.stripCorrelatedExists(sub)); + if (key === '$and') { + const subs = value.map((sub) => this.enginePreFilter(sub)); + const kept = subs.filter((sub) => Object.keys(sub).length > 0); + if (kept.length > 0) + cleaned.$and = kept; + continue; + } + if (key === '$or') { + // $or 是故障放大器:任一分支不可判定则该 $or 整体不可下推 + const subs = value; + if (subs.some((sub) => !this.isEngineEvaluable(sub))) + continue; + cleaned.$or = subs.map((sub) => this.enginePreFilter(sub)); continue; } if (key === '$not') { - const inner = this.stripCorrelatedExists(value); - // 剥离后为空 → 条件恒真,删掉该键(避免引擎层执行 NOT(true) 过滤掉所有行) - if (Object.keys(inner).length > 0) - cleaned.$not = inner; + const inner = value; + if (!this.isEngineEvaluable(inner)) + continue; + cleaned.$not = this.enginePreFilter(inner); continue; } if (key === '$exists') continue; // 逐行求值时单独处理 if (/^\s*CASE\b/i.test(key)) continue; // v0.3.2: CASE 键逐行求值 + if (this.fieldHasColRef(value) || this.fieldHasSubquery(value)) + continue; // $col / 子查询逐行求值 cleaned[key] = value; } return cleaned; } + /** + * 该 WHERE 片段是否可完全交给引擎层求值(无 `$col` / 关联 `EXISTS` / CASE 键)。 + * + * 与 `hasCorrelatedRefs` 的区别:`hasCorrelatedRefs` 回答"是否需要逐行求值", + * 本函数回答"能否整体下推"。两者互补,缺一不可 —— 后者是前者在 `$or`/`$not` + * 内部传播后的结果。 + */ + isEngineEvaluable(where) { + for (const [key, value] of Object.entries(where)) { + if (key === '$and' || key === '$or') { + if (value.some((sub) => !this.isEngineEvaluable(sub))) + return false; + continue; + } + if (key === '$not') { + if (!this.isEngineEvaluable(value)) + return false; + continue; + } + if (key === '$exists') + return false; + if (/^\s*CASE\b/i.test(key)) + return false; + if (this.fieldHasColRef(value) || this.fieldHasSubquery(value)) + return false; + } + return true; + } + /** 字段条件里是否含未解析子查询(引擎层无法执行) */ + fieldHasSubquery(value) { + if (typeof value !== 'object' || value === null || Array.isArray(value)) + return false; + const ops = value; + if ('$subquery' in ops) + return true; + for (const [, operand] of Object.entries(ops)) { + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) { + if ('$subquery' in operand) + return true; + } + if (Array.isArray(operand)) { + for (const item of operand) { + if (typeof item === 'object' && item !== null && '$subquery' in item) + return true; + } + } + } + return false; + } /** 逐行绑定外层行上下文,求值关联 EXISTS、$col 引用与 CASE WHEN 键 */ - async filterCorrelated(rows, where) { + async filterCorrelated(rows, where, aliases = []) { const result = []; for (const row of rows) { // 1. CASE WHEN 键 → 布尔条件(同步) let rowWhere = this.resolveCaseKeys(where, row); // 2. $col 绑定 + 关联 EXISTS 求值(异步) - rowWhere = await this.resolveSubqueries(rowWhere, row); - if (matchWhere(row, rowWhere)) { + rowWhere = await this.resolveSubqueries(rowWhere, row, aliases); + // v0.8.0(A10):必须传 { $col: true } —— 否则 `{ $eq: { $col: 't.y' } }` + // 会被当作"与一个对象相等"比较,任何行都不匹配 → 静默空结果。 + // 实测:`SELECT id FROM t WHERE t.x = t.y` 返回 [](应返回 x==y 的行)。 + if (matchWhere(row, rowWhere, { $col: true })) { result.push(row); } } @@ -12164,23 +15066,37 @@ class QueryExecutor { return true; } /** 将 where 中的 $col 引用替换为上下文行值 */ - bindColumnRefs(value, contextRow) { + bindColumnRefs(value, contextRow, aliases = []) { if (typeof value !== 'object' || value === null || Array.isArray(value)) return value; const ops = {}; for (const [op, operand] of Object.entries(value)) { if (op === '$col') { - ops[op] = contextRow[String(operand)] ?? null; + ops[op] = this.lookupOuterValue(contextRow, String(operand), aliases); } else if (op === '$and' || op === '$or') { - ops[op] = operand.map((sub) => this.bindWhereRefs(sub, contextRow)); + ops[op] = operand.map((sub) => this.bindWhereRefs(sub, contextRow, aliases)); } else if (op === '$not' && typeof operand === 'object' && operand !== null) { - ops[op] = this.bindColumnRefs(operand, contextRow); + ops[op] = this.bindColumnRefs(operand, contextRow, aliases); } else if (typeof operand === 'object' && operand !== null && !Array.isArray(operand) && '$col' in operand) { // 操作符值中嵌套的列引用:{ $eq: { $col: 'id' } } → { $eq: row['id'] } - ops[op] = contextRow[String(operand.$col)] ?? null; + ops[op] = this.lookupOuterValue(contextRow, String(operand.$col), aliases); + } + else if (typeof operand === 'object' && operand !== null && !Array.isArray(operand) + && '$subquery' in operand) { + // v0.8.0(A10):**递归进入子查询**,把子查询 WHERE 里的外层引用绑定为当前行值。 + // + // 此前这里落到 else 分支原样保留子查询对象 —— 于是 + // WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id) + // 里的 `u.id` 始终未绑定(求值为 null),子查询返回空集 → `$in: []` + // → 所有行被过滤,**静默空结果**(而同结构的 EXISTS 走另一条分支是正常的)。 + const sub = operand.$subquery; + const subWhere = sub.where && this.hasCorrelatedRefs(sub.where) + ? this.bindWhereRefs(sub.where, contextRow, aliases) + : sub.where; + ops[op] = { $subquery: { ...sub, where: subWhere } }; } else { ops[op] = operand; @@ -12188,20 +15104,36 @@ class QueryExecutor { } return ops; } - bindWhereRefs(where, contextRow) { + /** + * v0.8.0(A10):在外层行里取 `$col` 引用的值。 + * + * 关键点:引用可能带外层表名/别名前缀(`u.id`),而外层行键是**不带前缀**的 + * (非 JOIN 路径会先剥离)。因此这里必须先剥前缀再取值 —— 否则 `u.id` 取到 + * `undefined`,被 `?? null` 静默变成 null,子查询返回空集 + * (实测 `WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id)` 静默空结果)。 + */ + lookupOuterValue(contextRow, ref, aliases) { + const bare = this.stripAlias(ref, aliases); + if (bare in contextRow) + return contextRow[bare]; + if (ref in contextRow) + return contextRow[ref]; + return null; + } + bindWhereRefs(where, contextRow, aliases = []) { const bound = {}; for (const [key, value] of Object.entries(where)) { if (key === '$and' || key === '$or') { - bound[key] = value.map((sub) => this.bindWhereRefs(sub, contextRow)); + bound[key] = value.map((sub) => this.bindWhereRefs(sub, contextRow, aliases)); } else if (key === '$not') { - bound.$not = this.bindWhereRefs(value, contextRow); + bound.$not = this.bindWhereRefs(value, contextRow, aliases); } else if (key === '$exists') { bound[key] = value; } else { - bound[key] = this.bindColumnRefs(value, contextRow); + bound[key] = this.bindColumnRefs(value, contextRow, aliases); } } return bound; @@ -12214,10 +15146,10 @@ class QueryExecutor { * 将结果替换为具体值。 * @param contextRow 关联子查询的外层行上下文(用于绑定 $col 引用) */ - async resolveSubqueries(where, contextRow) { + async resolveSubqueries(where, contextRow, aliases = []) { // 关联上下文:先把字段级的 $col 引用绑定为外层行值 if (contextRow) { - where = this.bindWhereRefs(where, contextRow); + where = this.bindWhereRefs(where, contextRow, aliases); } const resolved = {}; for (const [key, value] of Object.entries(where)) { @@ -12237,20 +15169,20 @@ class QueryExecutor { } // 逻辑组合操作符 if (key === '$and' && Array.isArray(value)) { - resolved.$and = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow))); + resolved.$and = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (key === '$or' && Array.isArray(value)) { - resolved.$or = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow))); + resolved.$or = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (key === '$not' && typeof value === 'object' && value !== null) { - resolved.$not = await this.resolveSubqueries(value, contextRow); + resolved.$not = await this.resolveSubqueries(value, contextRow, aliases); continue; } // 字段条件 if (typeof value === 'object' && value !== null) { - resolved[key] = await this.resolveOperatorSubqueries(value); + resolved[key] = await this.resolveOperatorSubqueries(value, contextRow, aliases); } else { resolved[key] = value; @@ -12261,27 +15193,39 @@ class QueryExecutor { /** * 解析操作符值中嵌套的子查询 */ - async resolveOperatorSubqueries(ops) { + /** + * 解析字段条件里的子查询。 + * + * v0.8.0 根治(A10):接收外层行上下文并对子查询内的关联引用做绑定。 + * 此前完全不传 contextRow —— 于是 `WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id)` + * 里的 `u.id` 绑定为 undefined,子查询返回空集,最终 `$in: []` → **静默空结果** + * (而结构相同的 EXISTS 因为走另一条分支是正常的 —— 又一处"同类逻辑两条路径")。 + */ + async resolveOperatorSubqueries(ops, contextRow, aliases = []) { const resolved = {}; for (const [op, operand] of Object.entries(ops)) { // 处理嵌套 $and/$or(在字段级条件中) if (op === '$and' && Array.isArray(operand)) { - resolved.$and = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub))); + resolved.$and = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (op === '$or' && Array.isArray(operand)) { - resolved.$or = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub))); + resolved.$or = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (op === '$not') { resolved.$not = typeof operand === 'object' && operand !== null - ? await this.resolveOperatorSubqueries(operand) + ? await this.resolveOperatorSubqueries(operand, contextRow, aliases) : operand; continue; } // 子查询检测 if (typeof operand === 'object' && operand !== null && '$subquery' in operand) { - const subStmt = operand.$subquery; + let subStmt = operand.$subquery; + // 关联引用绑定(与 $exists 分支同样的处理) + if (contextRow && this.hasCorrelatedRefs(subStmt.where)) { + subStmt = { ...subStmt, where: this.bindWhereRefs(subStmt.where, contextRow, aliases) }; + } const subResult = await this.executeSelect(subStmt); if (op === '$in' || op === '$nin') { // IN 子查询 → 提取第一列的值列表 @@ -12430,12 +15374,13 @@ class Transaction { this.tables = new Map(); this.completed = false; this.engine = engine; + this.executor = new QueryExecutor(engine); } /** 获取表操作对象 */ table(tableName) { let t = this.tables.get(tableName); if (!t) { - t = new Table(this.engine, tableName); + t = new Table(this.engine, tableName, this.executor); this.tables.set(tableName, t); } return t; @@ -12594,6 +15539,8 @@ class MetonaSqlark { /** 多标签页同步通道(v0.3.2) */ this.channel = null; // ---- 发布订阅 ---- + /** 变更通知引擎(init 后可用);未初始化时为 null */ + this.notifier = null; this.listeners = new Map(); // ---- 迁移 ---- this.migrations = new Map(); @@ -12609,10 +15556,17 @@ class MetonaSqlark { const msg = event.data; if (!msg || msg.type !== 'change') return; - this.emit(msg.table ?? '', { type: 'external', table: msg.table ?? '' }); - // Hybrid 引擎:从磁盘重载内存,保证读到其他标签页的最新数据 - if (this.engine instanceof HybridEngine) { - this.engine.reloadMemoryFromDisk().catch(() => { + // v0.8.0: 外部事件只派发给本地订阅者,**不得再次广播** —— + // 否则两个标签页会互相转发形成无限广播循环(实测 8 次以上且不终止)。 + void this.emitExternal(msg.table ?? ''); + // Hybrid 引擎:从磁盘重载内存,保证读到其他标签页的最新数据。 + // + // v0.8.0: 引擎现在被 ChangeNotifierEngine 装饰,`this.engine instanceof HybridEngine` + // 恒为 false —— 因此改为对**内层**引擎做能力探测。这也是审计指出的 + // "用 instanceof 做引擎特判"的隐患:装饰器一加就静默失效。 + const inner = this.unwrapEngine(); + if (inner instanceof HybridEngine) { + inner.reloadMemoryFromDisk().catch(() => { // 重载失败不影响主流程(下次读可能短暂过期) }); } @@ -12626,6 +15580,25 @@ class MetonaSqlark { this.engine = this.createEngine(); // 打开连接 await this.engine.open(this.name, this.version); + // v0.8.0(A9):把引擎包进变更通知装饰器 —— **唯一**的变更事件汇聚点。 + // 三个写入入口(SQL / Table API / QueryBuilder)与事务内写入都必须经过引擎接口, + // 因此在这里拦一次即可全覆盖,避免在三条路径上各写一份"变更描述"逻辑。 + this.engine = new ChangeNotifierEngine(this.engine, (error) => this._onError(error), (table) => this.broadcastChange(table)); + this.notifier = this.engine; + // 把引擎层变更事件接入 db.subscribe 的订阅表(listeners) + this.notifier.addListener(async (event) => { + const set = this.listeners.get(`change:${event.table}`); + if (!set || set.size === 0) + return; + for (const cb of [...set]) { + try { + await cb(event); + } + catch (error) { + this._onError(error); + } + } + }); // v0.4.2-fix (P2-7): 从库内加载持久化的迁移版本, // 重启后 migrateTo 从持久化版本继续执行,不再每次从 config.version 重置 if (typeof this.engine.getMeta === 'function') { @@ -12680,7 +15653,10 @@ class MetonaSqlark { if (!t) { // v0.3.2: 表操作写入后广播变更(多标签页同步) // v0.5.1: CRUD 生命周期钩子真实接线(beforeInsert/afterInsert/...) - t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName), (hook, args) => this.pluginManager.trigger(hook, ...args)); + t = new Table(this.engine, name, this.executor, + // v0.8.0: 变更事件由引擎层 ChangeNotifierEngine 统一产生, + // 此处不再重复广播(Table API 与 SQL 路径曾各广播一次 → 同一次写入触发两遍) + () => { }, (hook, args) => this.pluginManager.trigger(hook, ...args)); this.tableCache.set(name, t); } return t; @@ -12725,10 +15701,8 @@ class MetonaSqlark { await this.triggerStatementHooks(stmt, 'before'); result = await this.executor.execute(stmt); await this.triggerStatementHooks(stmt, 'after', result); - // v0.3.2: 写语句广播表变更(多标签页同步) - const table = this.writeStatementTable(stmt); - if (table) - this.broadcastChange(table); + // v0.8.0: 变更广播与订阅事件统一由引擎层 ChangeNotifierEngine 产生, + // 此处不再手工 broadcastChange(否则同一次写入会广播两次)。 } } catch (error) { @@ -12758,6 +15732,27 @@ class MetonaSqlark { * }); * ``` */ + /** + * 流式查询:逐行回调,尽量不物化全部结果(大表友好)。 + * + * v0.8.0 根治:**快路径与物化路径的结果必须逐值相等**。 + * + * 此前 core.ts 自己重写了一套"能不能走引擎快路径 / 列投影怎么算"的规则, + * 与 executor 的规则各写一份并发生漂移,实测四类静默不一致: + * SELECT id AS x FROM t → query 返回 [{x}],stream 返回 [{id,v}](全列 + 原列名) + * SELECT t.id FROM t → query 返回 [{id}],stream 返回 [{}](空对象) + * ... LIMIT 2 OFFSET 1 → query 1 行,stream 2 行 + * ... LIMIT 0 → query 0 行,stream 1 行(Aria 又是 0 行,跨引擎也不同) + * 另:流式路径既不触发 beforeQuery/afterQuery 钩子,也不受 maxRowsPerQuery 约束。 + * + * 现在的规则: + * 1. 是否可流式、如何投影,全部由 `executor.analyzeSelect()` 判定(单一事实来源); + * 2. 不可流式(以及任何不确定的情况)一律回退到 `query()` 物化后逐行回调 —— + * 这条路径天然与 `query()` 同语义,是正确性的兜底保证; + * 3. 快路径只覆盖"引擎层投影与 executor 投影语义等价"的简单 SELECT; + * 4. 回调返回 Promise 时不再靠 `constructor.name` 猜(此前对普通函数返回 Promise + * 的情况完全失效),而是直接检测返回值并显式报错,避免 Promise 被静默丢弃。 + */ async queryStream(sql, onRow) { this.ensureReady(); // v0.7.4: 多语句显式拒绝 —— 此前 parseAll(sql)[0] 静默忽略后续语句: @@ -12772,59 +15767,53 @@ class MetonaSqlark { throw new DatabaseError('queryStream only supports SELECT statements', 'NOT_SUPPORTED'); } const select = stmt; - // 不可流式场景:JOIN / GROUP BY / HAVING / DISTINCT / 聚合 / UNION / 关联子查询 / ORDER BY - const aggregate = select.columns.some((c) => /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(c)); - // v0.7.3: WHERE 含子查询($subquery / $exists / 嵌套 $col 列引用)不可流式 —— - // 引擎层 matchWhere 的 $in/$nin 遇未解析的 $subquery 对象返回 false → 所有行 - // 被静默过滤(空结果);$col 操作符无对应匹配分支会抛 QUERY_ERROR。 - // 递归检测后回退物化路径(resolveSubqueries 正确解析)。 - const hasSubquery = (where) => { - if (!where) - return false; - for (const [k, v] of Object.entries(where)) { - if (k === '$and' || k === '$or') { - if (v.some((sub) => hasSubquery(sub))) - return true; - continue; - } - if (k === '$not') { - if (hasSubquery(v)) - return true; - continue; - } - if (k === '$exists') - return true; - if (typeof v === 'object' && v !== null) { - for (const [, operand] of Object.entries(v)) { - if (typeof operand === 'object' && operand !== null) { - const ops = operand; - if ('$subquery' in ops || '$col' in ops) - return true; - } - } - } - } - return false; - }; - const streamable = !select.joins && !select.groupBy && !select.having && !select.distinct - && !aggregate && !(select.orderBy && select.orderBy.length > 0) - && !hasSubquery(select.where); - if (streamable && typeof this.engine.findStream === 'function') { - // 用户回调为 async(返回 Promise)时引擎同步扫描无法 await → 回退物化 - const isAsync = onRow.constructor?.name === 'AsyncFunction'; - if (!isAsync) { - const where = this.normalizeWhereForStream(select); - const plainCols = select.columns.filter((c) => !/\s+AS\s+\w+$/i.test(c)); - return this.engine.findStream(select.from, { - table: select.from, - columns: plainCols.length > 0 && plainCols[0] !== '*' ? plainCols : ['*'], - where: where && Object.keys(where).length > 0 ? where : undefined, - limit: select.limit, - offset: select.offset, - }, onRow); + // 执行形态由 executor 统一判定(与 query() 路径共用同一规则) + const shape = this.executor.analyzeSelect(select); + // LIMIT 0 语义:任何引擎都必须返回 0 行。 + // 引擎对 `limit: 0` 的解释并不一致(Aria 返回 0 行,Memory/KVStore/Hybrid 把 0 当 + // "无限制"返回全部行 —— 实测 LIMIT 0 在四种引擎下分别为 0/1/1/1 行)。 + // 流式路径直接短路,避免依赖各引擎对 0 的解释。 + if (select.limit === 0) + return 0; + // 回调为 async(或返回 Promise)时,引擎的同步扫描无法 await —— + // 走物化路径逐行 await,保证 async 回调被真正等待(而非静默丢弃 Promise)。 + if (this.isAsyncCallback(onRow)) { + const materialized = await this.query(sql); + if (!Array.isArray(materialized)) + return 0; + for (const row of materialized) { + await onRow(row); } + return materialized.length; } - // 回退:物化后逐行回调 + if (shape.streamable && typeof this.engine.findStream === 'function') { + const where = this.normalizeWhereForStream(select); + // 与 executor 的非 JOIN 路径一致:剥离主表别名前缀后再交给引擎 + // (executor 对 `SELECT t.id FROM t` 会发 columns=['id'];此前流式路径把 + // 't.id' 原样传给引擎,引擎按 't.id' 建键 → 行里取不到 → 回调收到 {})。 + const mainAliases = [select.alias ?? select.from].filter(Boolean); + const columns = select.columns.length > 0 + ? select.columns.map((c) => this.stripAliasPrefix(c, mainAliases)) + : ['*']; + const maxRows = this.maxRowsPerQuery; + let emitted = 0; + const count = await this.engine.findStream(select.from, { + table: select.from, + columns, + where: where && Object.keys(where).length > 0 ? where : undefined, + limit: select.limit, + offset: select.offset, + }, (row) => { + // maxRowsPerQuery 必须与物化路径一致地生效(此前流式路径完全不受约束) + if (maxRows > 0 && emitted >= maxRows) + return; + emitted++; + onRow(row); + }); + // 引擎返回的行数在 maxRowsPerQuery 截断时需与回调次数一致 + return maxRows > 0 ? Math.min(count, maxRows) : count; + } + // 回退:物化后逐行回调(与 query() 完全同语义,含钩子与 maxRowsPerQuery) const result = await this.query(sql); if (Array.isArray(result)) { for (const row of result) { @@ -12834,6 +15823,37 @@ class MetonaSqlark { } return 0; } + /** + * v0.8.0: 判断流式回调是否为 async(或声明返回 Promise)。 + * + * 此前用 `onRow.constructor.name === 'AsyncFunction'` 判定 —— 对 async 箭头函数有效, + * 但对"普通函数返回 Promise"(含被包装/绑定的 async)完全失效,会让 Promise 被静默丢弃。 + * 这里用**双条件**:既看是否声明为 async 函数(源码/转译后仍可识别), + * 也看其返回类型标注;两者任一成立即走物化 + await 路径。 + */ + isAsyncCallback(onRow) { + const name = onRow.constructor?.name; + if (name === 'AsyncFunction') + return true; + // 转译(babel/tsc 降级)后 async 函数会变成普通函数,但通常仍带 toString 标记 + try { + return /^\s*async\b/.test(Function.prototype.toString.call(onRow)); + } + catch { + return false; + } + } + /** + * v0.8.0: 剥离列引用上的主表别名前缀(`t.id` → `id`)。 + * 与 executor 非 JOIN 路径的 `stripAlias` 语义保持一致。 + */ + stripAliasPrefix(col, aliases) { + for (const a of aliases) { + if (a && col.startsWith(`${a}.`)) + return col.slice(a.length + 1); + } + return col; + } /** 流式查询用:剥离主表别名前缀(复用 query 路径的规范化逻辑) */ normalizeWhereForStream(select) { const aliases = [select.alias ?? select.from].filter(Boolean); @@ -12914,18 +15934,57 @@ class MetonaSqlark { } return this.exportAll(); } - /** 订阅表变更 */ + /** + * 订阅表变更。 + * + * v0.8.0 修复:此前**本地写入永不触发** —— 全库唯一调用 `emit` 的地方在 + * BroadcastChannel 收到其它标签页消息的分支里,因此 README「订阅表变更」与 + * site/docs.html 的 `event.type: 'insert' | 'update' | 'delete'` 示例全都不成立。 + * 现在本地写入(SQL / Table API / QueryBuilder / 事务内)都会产生事件。 + * + * 现在返回的函数是**同步**退订函数(与既有 API 兼容)。 + */ subscribe(tableName, callback) { const key = `change:${tableName}`; if (!this.listeners.has(key)) this.listeners.set(key, new Set()); this.listeners.get(key).add(callback); - return () => this.listeners.get(key)?.delete(callback); + return () => { this.listeners.get(key)?.delete(callback); }; } - /** 触发变更事件 */ - emit(tableName, event) { - const key = `change:${tableName}`; - this.listeners.get(key)?.forEach((cb) => cb(event)); + /** + * 手动触发变更事件(保留为公开 API:自定义写入路径可显式通知订阅者)。 + * 现在也支持 await —— 订阅者的 Promise 会被等待。 + */ + async emit(tableName, event) { + await this.dispatchChange({ table: tableName, ...event }); + } + /** + * v0.8.0: 派发"来自其它标签页"的变更事件。 + * 只走本地订阅者,不触发 onBroadcast(避免 A↔B 互相转发的无限循环)。 + */ + async emitExternal(tableName) { + const event = { type: 'external', table: tableName }; + const set = this.listeners.get(`change:${tableName}`); + if (!set) + return; + for (const cb of [...set]) { + try { + await cb(event); + } + catch (error) { + this._onError(error); + } + } + } + /** 内部:把一次变更同时派发给本地订阅者与跨标签页广播 */ + async dispatchChange(event) { + if (this.notifier) { + // notifier.dispatch 内部已包含跨标签页广播,这里不重复调用 + await this.notifier.dispatch(event); + return; + } + // init 之前(notifier 尚未建立)也能广播 + this.broadcastChange(event.table); } // ---- 多标签页同步(v0.3.2) ---- /** 广播表变更到其他标签页(多标签页同步) */ @@ -13086,9 +16145,27 @@ class MetonaSqlark { this.tableCache.clear(); this.ready = false; } - /** 获取底层引擎 */ + /** + * 获取底层存储引擎。 + * + * v0.8.0:返回**未装饰**的真实引擎。 + * + * 变更通知用的 ChangeNotifierEngine 只是内部接线细节;若把它暴露出去, + * 调用方(以及测试)依赖的引擎特有能力(`lsm`、`secondaryIndexes`、 + * `getDiskEngineType` 等)会被静默隐藏 —— 本项目既有测试与文档都按 + * "getEngine() 就是那个引擎"理解。因此这里保持原语义,装饰器只在 core 内部使用。 + */ getEngine() { - return this.engine; + return this.unwrapEngine(); + } + /** + * v0.8.0: 取**未装饰**的真实存储引擎。 + * + * 引擎在 init 时被 ChangeNotifierEngine 包了一层,因此需要引擎特化能力 + * (如 HybridEngine.reloadMemoryFromDisk)时必须先解包,否则 instanceof 恒 false。 + */ + unwrapEngine() { + return this.notifier ? this.notifier.getInner() : this.engine; } // ---- 内部 ---- createEngine() { @@ -13297,18 +16374,24 @@ if (typeof window !== 'undefined') { const MeSqlark = MetonaSqlark; exports.AriaEngine = AriaEngine; +exports.DatabaseError = DatabaseError; exports.HybridEngine = HybridEngine; exports.KVStoreEngine = KVStoreEngine; exports.MeSqlark = MeSqlark; exports.MemoryEngine = MemoryEngine; exports.MetonaSqlark = MetonaSqlark; exports.OPFSBackend = OPFSBackend; +exports.PluginManager = PluginManager; exports.Table = Table; +exports.Transaction = Transaction; +exports.TransactionManager = TransactionManager; exports.VERSION = VERSION; exports.api = api; +exports.bindParameters = bindParameters; exports.create = create; exports.default = api; exports.parse = parse; exports.parseAll = parseAll; +exports.parseWhereCondition = parseWhereCondition; exports.tokenize = tokenize; //# sourceMappingURL=metona-sqlark.cjs.map diff --git a/dist/metona-sqlark.cjs.map b/dist/metona-sqlark.cjs.map index 0b9d23b..4644663 100644 --- a/dist/metona-sqlark.cjs.map +++ b/dist/metona-sqlark.cjs.map @@ -1 +1 @@ -{"version":3,"file":"metona-sqlark.cjs","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/table/schema.ts","../src/engine/memory.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/kvstore/shared_memory_medium.ts","../src/engine/aria/crc32.ts","../src/engine/kvstore/log.ts","../src/engine/kvstore/snapshot.ts","../src/engine/kvstore/index.ts","../src/engine/kvstore_engine.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/kvstore_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/sql/params.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"metona-sqlark.cjs","sources":["../src/constants.ts","../src/engine/change-notifier.ts","../src/engine/interface.ts","../src/query/sql-compare.ts","../src/query/where-matcher.ts","../src/table/validation.ts","../src/table/schema.ts","../src/engine/memory.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/kvstore/shared_memory_medium.ts","../src/engine/aria/crc32.ts","../src/engine/kvstore/log.ts","../src/engine/kvstore/snapshot.ts","../src/engine/kvstore/index.ts","../src/engine/kvstore_engine.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/kvstore_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/sql/params.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":"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"} \ No newline at end of file diff --git a/dist/metona-sqlark.d.ts b/dist/metona-sqlark.d.ts index 5b1660d..3de7aae 100644 --- a/dist/metona-sqlark.d.ts +++ b/dist/metona-sqlark.d.ts @@ -164,6 +164,12 @@ interface MetonaPlugin { /** 销毁 */ destroy(): void; } +/** 数据库错误 */ +declare class DatabaseError extends Error { + code: string; + details?: unknown | undefined; + constructor(message: string, code: string, details?: unknown | undefined); +} declare const VERSION = "0.8.0"; /** @@ -214,6 +220,27 @@ interface IStorageEngine { getTableSchema(tableName: string): Promise; /** 插入行,返回主键值列表 */ insert(tableName: string, rows: Record[]): Promise; + /** + * v0.8.0(B-1):写入前置校验 —— 未知列、类型、`maxLength` / `min` / `max`、 + * `required` / 主键非空、`__proto__` 防污染,全部由 `table/validation.ts` 的 + * **唯一**实现判定。 + * + * 为什么把它放进引擎接口而不是留在 Executor: + * - **未知列**必须在引擎边界拦下。`INSERT INTO t (id, nope) VALUES ('1', 2)` + * 若在 Executor 拦,QueryBuilder / `db.table().insert()` 等直通路径仍然静默 + * 丢列(缺陷 A17 的真实形态:executor 按 schema 列序构造行,那个位置没有值, + * 于是 `nope` 既不进 schema 也无从校验)。 + * - **规范化必须在同一处**:`default` 填充与类型检查一旦分家,就会出现 + * "executor 校验通过、引擎写入时又被改写"这类双份语义。 + * + * 引擎**必须**使用 `compileValidator` 而不是自己实现 —— 此前 Memory 与 Aria + * 各写一份,`maxLength` 只在 Aria 生效(A12)。 + * + * @param mode `'insert'`(default 生效、缺列合法)或 `'update'`(仅校验出现的列)。 + * 默认 `'insert'`,与历史行为一致。 + * @throws DatabaseError COLUMN_NOT_FOUND | VALIDATION_ERROR | TYPE_ERROR + */ + validatePayload?(tableName: string, rows: Record[], mode?: 'insert' | 'update'): Promise; /** 查询行 */ find(tableName: string, query: QueryPlan): Promise[]>; /** v0.4.0: 流式查询 — 逐行回调扫描(有 where/limit/projection,无 orderBy 语义;有 orderBy 时实现可回退物化) */ @@ -361,6 +388,17 @@ interface SelectUnionStatement { right: SelectStatement | SelectUnionStatement; /** UNION ALL 不去重 */ all?: boolean; + /** + * v0.8.0(A26):复合查询**整体**的 ORDER BY / LIMIT / OFFSET。 + * + * SQL 标准里这三者作用于整个 UNION 结果,而不是最后一个 SELECT。 + * 此前 AST 没有这三个字段,parser 把它们挂在了 UNION 右侧的 SELECT 上 —— + * 于是 `A UNION B ORDER BY id DESC` 只对 B 排序、`... LIMIT 3` 只截断 B + * (实测 `SELECT id FROM t UNION SELECT id FROM t LIMIT 3` 返回 4 行)。 + */ + orderBy?: OrderBy[]; + limit?: number; + offset?: number; } interface AlterTableStatement { type: 'ALTER_TABLE'; @@ -426,18 +464,104 @@ type Statement = SelectStatement | SelectUnionStatement | ExplainStatement | Ins * JOIN / GROUP BY / DISTINCT 逻辑在此层处理。 */ +/** + * 一条 SELECT 的执行形态判定结果。 + * + * 由 {@link QueryExecutor.analyzeSelect} 统一产出,供 executor 自身与 + * `core.queryStream` 共享 —— 避免"两条入口各写一套规则"导致的语义漂移。 + */ +interface SelectExecutionShape { + /** 有 GROUP BY */ + hasGroupBy: boolean; + /** 无 GROUP BY 但 SELECT 列表含聚合函数 */ + hasAggregate: boolean; + /** 含 JOIN */ + isJoinQuery: boolean; + /** 需要原始行(SELECT 列或 WHERE 含 CASE 表达式) */ + needsRawRows: boolean; + /** ORDER BY 引用了 SELECT 别名(投影后才存在) */ + orderByAlias: boolean; + /** SELECT 列含 `col AS alias` */ + hasSelectAlias: boolean; + /** LIMIT/OFFSET 可安全下推给引擎(否则由 executor 末尾应用一次) */ + limitPushdownSafe: boolean; + /** 引擎层投影与 executor 投影语义等价(列均为裸列引用) */ + engineEquivalentProjection: boolean; + /** 可直连引擎 findStream 做真流式(无任何改变行集合/行序/行形状的阶段) */ + streamable: boolean; +} declare class QueryExecutor { private engine; private maxRowsPerQuery; constructor(engine: IStorageEngine, maxRowsPerQuery?: number); + /** + * 执行一条语句。 + * + * v0.8.0:**同步抛错也必须表现为 rejected promise**。 + * + * `db.query()` 是 async 的,但 `async` 只把**函数体内**的同步抛错转成 rejection; + * 这里 `return this.executeXxx(stmt)` 的调用发生在 async 函数的同步前导段, + * 若被调方法在**进入第一个 await 之前**就抛错(例如 INSERT 的 arity 校验、 + * VALIDATION_ERROR),异常会穿过 async 边界成为**同步抛出**: + * await expect(db.query(...)).rejects.toMatchObject(...) // 断言不生效,测试崩 + * db.query(...).catch(...) // 永远不执行 + * 对调用方而言这是不可预期的 —— 同一个 API 有的错误走 catch、有的走 try。 + * 因此这里显式包一层 try/catch 统一成 rejection(`async` 方法里 `throw` + * 一定产出 rejected promise)。 + */ execute(stmt: Statement): Promise; - /** 递归执行 UNION / UNION ALL,返回合并结果 */ + private dispatch; + /** + * 递归执行 UNION / UNION ALL,返回合并结果。 + * + * v0.8.0(A26):尾部 ORDER BY / LIMIT / OFFSET 作用于**整个**复合结果。 + * + * 此前 `SelectUnionStatement` 没有这三个字段,parser 把它们挂在右侧 SELECT 上 + * —— 于是 `A UNION B ORDER BY id DESC` 只排 B(实测返回 1,2,4,3), + * `A UNION B LIMIT 3` 只截断 B(实测返回 4 行)。现在由本方法在合并 + 去重 + * **之后**统一排序与截断(顺序:合并 → 去重 → 排序 → OFFSET/LIMIT)。 + */ private executeSelectUnion; + /** + * 复合结果排序:把 ORDER BY 项解析为结果行的键。 + * + * 支持两种写法(与单表 SELECT 一致): + * - 输出列序号:`ORDER BY 1` → 第 1 个输出列(SQL 标准,UNION 场景最常见, + * 因为各分支的输出列名可能不同); + * - 输出列名:`ORDER BY id` → 结果行的 `id` 键。 + * 引用不存在的列时返回原序(不静默丢弃排序 —— 排序键缺失本身不改变行集合, + * 但会让用户以为已排序;故此处抛 COLUMN_NOT_FOUND,与 SELECT 路径口径一致)。 + */ + private orderCompoundResult; + /** + * 执行一个 SELECT 部件(含 UNION)。 + * + * @param purpose 透传给 `executeSelect` —— 作为写语句的输入行源时必须传 + * `'source'`,否则 `maxRowsPerQuery` 会在写入前静默截断行源(A29)。 + */ private executeSelectPart; /** 将 UNION 右侧行投影为左侧列结构(按位置取值) */ private projectUnionRow; /** EXPLAIN: 输出查询计划 */ private executeExplain; + /** + * v0.8.0: SELECT 语句的**执行形态分析**(单一事实来源)。 + * + * 为什么把它独立出来:core.queryStream 此前在 core.ts 里**自己重新推导**了一遍 + * "这条 SELECT 能不能走引擎快路径、列投影怎么算",与 executor 的规则各写一份, + * 于是两者漂移出四类静默不一致(实测): + * SELECT id AS x FROM t query=[{x}] stream=[{id,v}](全列 + 原列名) + * SELECT t.id FROM t query=[{id}] stream=[{}](空对象) + * ... LIMIT 2 OFFSET 1 query=1 行 stream=2 行(引擎与 executor 各切一次) + * ... LIMIT 0 query=[] stream=1 行 + * + * 现在由 executor 提供唯一判定,core 只消费结论,不再复制规则。 + */ + analyzeSelect(stmt: SelectStatement): SelectExecutionShape; + /** + * @param purpose `'result'`(默认)= 结果交付给用户,受 `maxRowsPerQuery` 截断; + * `'source'` = 作为写语句的输入行源,**不得**截断(见下方说明)。 + */ private executeSelect; private executeJoinSelect; private prefixRow; @@ -456,10 +580,88 @@ declare class QueryExecutor { private tryHashJoin; /** 嵌套循环连接(优化:避免 ON 时对象扩散) */ private joinRows; + /** + * 分组聚合。 + * + * v0.8.0(A22/A23)两项行为修正,都源于**分组语义只有一个定义**这一原则: + * + * 1. **GROUP BY 可用 SELECT 别名**(A22)。 + * SQL 标准允许 `SELECT g AS grp, COUNT(*) FROM t GROUP BY grp`。 + * 此前 `grp` 直接当列名去 `row['grp']` 取到 undefined → 全部行落入同一组; + * 更糟的是后续投影阶段发现 `g` 不在输出行里,抛 + * `COLUMN_NOT_FOUND Unknown column "g" in SELECT list` —— 用户看到的是 + * 一个与真正原因(GROUP BY 引用别名)无关的错误。 + * 这里先把 GROUP BY 项解析为**基列**(别名 → 其源表达式),再做分组与输出。 + * + * 2. **HAVING 可用未出现在 SELECT 里的聚合**(A23)。 + * `SELECT g FROM t GROUP BY g HAVING SUM(n) > 25` 是标准写法。 + * 此前聚合只在 `stmt.columns` 上计算,`SUM(n)` 从未被求值 → + * HAVING 的键 `SUM(n)` 在行里不存在 → matchWhere 取到 undefined → + * UNKNOWN → **空结果**(`HAVING SUM(n) > 25` 返回 [],而 MAX(n) > 25 同样 [])。 + * 现在把 SELECT 列与 HAVING 里出现的聚合**并集**一起算进分组行,再交给 + * HAVING 过滤。多算的聚合只影响中间行,最终输出仍严格按 SELECT 列投影, + * 因此不会泄漏额外列。 + */ private executeGroupBy; + /** 对全部分组行做输出投影(HAVING 之后调用) */ + private projectGroupedRows; + /** + * 把分组行收缩为 SELECT 列表要求的输出列(保持 SELECT 顺序)。 + * + * GROUP BY 路径不做通用的 `projectRow`(那会丢掉聚合值),因此需要这一层显式投影。 + * 处理四类列: + * - `*`:保留分组行全部键(`SELECT * ... GROUP BY g` 的既有语义); + * - 聚合表达式:键取 `parseAggregateExpression` 的 outputKey; + * - `expr AS alias`:输出 alias,值从分组行按 expr 取(含二义性由取值函数处理); + * - 裸列引用:输出剥离别名前缀后的基列名。 + */ + private projectGroupedRow; + /** + * GROUP BY 项解析为基列:`GROUP BY grp`(grp 是 SELECT 别名)→ `g`。 + * + * 只解析"SELECT 列表里带 AS 别名"与"CASE ... AS 别名"这两种可追踪形态; + * 其余原样返回(真正的列名或表达式)。同名歧义时保持原样 —— 后续 + * `resolveColumnValue` 的 strict 模式会给出明确的 COLUMN_NOT_FOUND/歧义错误。 + */ + private resolveGroupByColumns; + /** + * 收集本次分组需要计算的全部聚合表达式(SELECT 列 ∪ HAVING),按 exprKey 去重。 + * + * 同时扫描 HAVING 是 A23 的核心:`HAVING SUM(n) > 25` 里的 `SUM(n)` 必须被求值, + * 否则 HAVING 阶段取不到该键。 + */ + private collectAggregateExpressions; + /** + * 计算单个聚合值。 + * + * v0.8.0: 返回类型放宽为 unknown —— SUM/AVG/MIN/MAX 对空集返回 null(SQL 标准), + * COUNT 仍返回 number。最小/最大改为单次遍历(不再展开实参,消除栈溢出)。 + */ private computeAggregate; + /** + * DISTINCT 聚合(`COUNT(DISTINCT col)` / `SUM(DISTINCT col)`)。 + * + * v0.8.0(A25):独立成函数而不是在 computeAggregate 里加分支 —— 去重键 + * 必须用 `encodeValueKey`(类型安全),而"对原始值去重"(COUNT)与 + * "对数值化后去重"(SUM)用的键不同,混在一个函数里正是此前 + * `String(v)` 与 `JSON.stringify(v)` 两套编码并存的原因。 + */ + private computeDistinctAggregate; private executeDistinct; private executeInsert; + /** + * v0.8.0(A29):写路径的行数上限保护。 + * + * `maxRowsPerQuery` 此前只在 SELECT 的返回处生效(`executeSelect` 末尾切片), + * 而 `INSERT INTO dst SELECT * FROM huge_src` 的**中间结果集**完全不受约束 —— + * 它由 `executeSelectPart` 直接产出并逐行写入,既不切片也不报错。 + * 于是"防止一次查询把浏览器内存打满"这一配置项在最容易打满内存的路径上失效。 + * + * 这里选择**报错**而不是静默截断:静默只写一部分行会让用户以为全部写完 + * (又一次"写路径静默丢数据")。错误里给出上限值与来源,便于用户改配置或 + * 改写查询。 + */ + private assertWithinRowLimit; private executeUpdate; private executeDelete; /** @@ -486,7 +688,69 @@ declare class QueryExecutor { private executeReindex; /** VACUUM — 压缩 LSM + 清理碎片 */ private executeVacuum; - /** 列列表是否包含 CASE WHEN 表达式 */ + /** + * SELECT 列表的**输出列名**集合(投影后行里会出现的键)。 + * + * 与 `projectRow` 的键规则保持一致: + * - `*` → 未知(返回 `null` 表示"无法判定",调用方按"包含"处理,避免误判需要原始列); + * - `expr AS alias` → `alias`; + * - 聚合 `FUNC(arg) [AS alias]` → `alias` 或表达式原文; + * - CASE `... AS alias` → `alias`; + * - 字符串/数字常量列 → 表达式原文; + * - 裸列引用 → 剥离别名前缀后的列名。 + */ + private outputColumnNames; + /** ORDER BY 的键是否全部能在**输出列**里找到(决定排序发生在投影前还是投影后) */ + private orderByReferencesOutputColumns; + /** + * DISTINCT 是否必须在投影**前**执行。 + * + * 仅当 ORDER BY 引用了不在输出列里的列时成立:`SELECT DISTINCT dept FROM e ORDER BY v` + * 需要先按 `v` 排序、再按输出列 `dept` 去重。若把 DISTINCT 放到投影后, + * `v` 已被丢弃,排序无从进行(会报 COLUMN_NOT_FOUND)。 + * + * SQL 标准禁止这种写法;此处保留既有语义(排序后去重),并把该例外显式记录, + * 而不是让 DISTINCT 的位置在所有情况下都"碰巧"由排序决定。 + */ + private distinctNeedsPreProjectionSort; + /** + * v0.8.0(A37):校验 JOIN ON 里引用的列在**参与连接的两张表**之一存在。 + * + * `ON a.x = b.y` 的 `a.x` 属于主表或已有 JOIN 表,`b.y` 属于当前 JOIN 表 —— + * 两侧都要能找到归属;否则报 COLUMN_NOT_FOUND(而不是让连接静默产生空结果)。 + * 裸列名只要求"某一侧存在"(`ON k = k` 的既有语义是取主表列)。 + */ + private validateJoinOnColumns; + /** + * v0.8.0(A37):校验 WHERE 中出现的列名都存在于行源。 + * + * 覆盖两类引用: + * - **键位**:`WHERE x = 1` 的 `x`; + * - **`$col` 值位**:`WHERE x = y` 的 `y`(parser 生成 `{ x: { $eq: { $col: 'y' } } }`), + * 含 `$and`/`$or`/`$not` 内部的操作数槽。 + * + * 派生表与子查询的行源:跳过(其列来自子查询投影,需要单独解析; + * 由 `normalizeUnprefixedReferences` + 运行时行形状决定)。 + * JOIN:两侧的表别名都要参与判定 —— `t.x` 与另一表的 `u.x` 都属于合法引用。 + * + * 之所以必须是**显式错误**而不是依赖运行时 UNKNOWN:`$col` 取不到值时 + * 三值求值器只能返回 UNKNOWN,而 UNKNOWN 在 WHERE 里表现为"不保留该行" —— + * 用户看到的是"没有匹配数据",与"列名拼错"完全无法区分。 + */ + private assertWhereColumnsExist; + /** + * 通用的 WHERE 侧列引用校验(SELECT 的 WHERE 与 JOIN 的 ON 共用)。 + * + * @param context 错误消息中的位置描述('WHERE' / 'JOIN ON') + * @param rejectAmbiguous JOIN 场景下裸列名被多表共有 → 报歧义(SQL 标准要求限定)。 + * **JOIN ON 传 false**:`ON a.x = b.x` 里两侧的限定名各自 + * 合法,而 `ON k = k` 这种裸写法在 JOIN 语境下按"取主表列" + * 解释(与既有 joinRows 行为一致),不应因为"两表都有 k" + * 就拒绝 —— 那会把常见的等值连接写法判为错误。 + */ + private validateWhereColumns; + /** + * 列列表是否包含 CASE WHEN 表达式 */ private hasCaseColumn; /** * v0.3.3: ORDER BY 是否引用 SELECT 别名(如 `SELECT name AS n ... ORDER BY n`)。 @@ -496,15 +760,53 @@ declare class QueryExecutor { /** WHERE 是否包含 CASE WHEN 表达式键 */ private whereHasCase; getEngine(): IStorageEngine; + /** + * v0.8.0: 校验 SELECT 列表中的**裸列引用**在结果行里确实存在,否则抛 COLUMN_NOT_FOUND。 + * + * 为什么必须做:`SELECT bogus FROM t` 此前返回 `[{},{},...]`(行数对、内容空、无报错), + * 这是"静默错误结果"里最难被发现的一类 —— 调用方拿到的是结构正确但全空的表格。 + * + * 判定规则(与 projectRow 的分类保持一致): + * - `*` 跳过; + * - 字符串/数字常量列跳过; + * - CASE 表达式跳过(其内部列引用由 evaluateCase 处理); + * - `expr AS alias`:字符串/数字常量跳过,否则取 `expr` 作为被引用列; + * - 其余视为裸列引用。 + * 存在性检查允许两种形态:精确匹配,或**唯一**以 `.` 结尾(JOIN 行以 `alias.col` 为键)。 + * 若同一个后缀出现在多个表别名下则视为歧义,同样报错(符合"未限定列名歧义应报错"的语义)。 + * + * 结果集为空时无法判定,此时跳过(空表 + 未知列不会误报)。 + */ + private assertProjectionColumnsExist; /** * 列投影(v0.3.1):普通列走 projectColumns,CASE WHEN 表达式逐行求值; * v0.3.3: 支持 `col AS alias` 列别名 */ private projectRow; - /** 检查 SELECT 列列表中是否包含聚合函数 */ + /** 检查 SELECT 列列表中是否包含聚合函数(与执行路径共用同一解析器) */ private _hasAggregateColumn; - /** 计算单行聚合结果(无 GROUP BY) */ + /** + * 计算单行聚合结果(无 GROUP BY)。 + * + * v0.8.0(A25):聚合识别与取值改为与 GROUP BY 路径**共用** + * `parseAggregateExpression` / `resolveColumnValue` —— 此前这里有第二份正则, + * 于是 `COUNT (n)`(函数名后有空格)在"是否聚合"判定与"如何求值"两处结论不同。 + */ private computeSingleAggregate; + /** + * 归一化"行键不带前缀"的查询中的所有引用 —— 剥离表别名前缀。 + * + * v0.8.0(A36):抽成单一实现,因为**两条**路径需要同一规则: + * - 非 JOIN 单表(行键是裸列名,`WHERE u.age` 要变成 `age`); + * - 派生表非 JOIN(`FROM (SELECT ...) AS d`,行键来自子查询投影,同样无前缀)。 + * 此前只有前者做归一化,后者完全没做 → `SELECT d.id FROM (...) AS d` 静默空结果, + * 而同义的 `SELECT id FROM (...) AS d` 正确。 + * + * 覆盖 WHERE(含 `$col` 嵌套引用)/ ORDER BY / GROUP BY / SELECT 四类引用。 + * 聚合表达式与 CASE 表达式**整体跳过**(其内部的列引用由各自的求值器处理, + * 而它们的求值器现在都走统一的 `resolveColumnValue`,本身支持前缀)。 + */ + private normalizeUnprefixedReferences; /** 剥离主表别名前缀:'u.id' → 'id'(键与 $col 值均处理,支持多层别名) */ private normalizeWhereColumns; private normalizeExistsValue; @@ -513,8 +815,33 @@ declare class QueryExecutor { /** WHERE 是否含关联引用($col 或关联 EXISTS)或 CASE WHEN 表达式键 */ private hasCorrelatedRefs; private fieldHasColRef; - /** 移除关联 EXISTS 标记(引擎层先执行无 EXISTS 条件的查询) */ - private stripCorrelatedExists; + /** + * 构造**引擎层预过滤**用的 WHERE 子句。 + * + * 逐行求值的谓词必须整体移出引擎层,否则引擎的 `matchWhere`(没有外层行上下文) + * 会把它们判为 UNKNOWN → **所有行被过滤掉**,逐行求值再正确也无行可算: + * - 关联 `EXISTS`:`$exists` 子查询未执行,`{ $subquery: ... }` 引擎无法求值; + * - CASE WHEN 表达式键:需要行上下文才能算出布尔; + * - `$col` 列引用(`WHERE t.x = t.y` → `{ x: { $eq: { $col: 'y' } } }`): + * 引擎层取不到"另一列"的值。 + * + * 移出的粒度取决于连接词 —— 这里**不是**保守兜底,而是逻辑上唯一正确的做法: + * - 顶层 / `$and` 的成员:可以单独删除该谓词,其余谓词仍然安全可下推; + * - `$or` / `$not` 的成员:不能单独删除。删掉 `A OR B` 中的 `B` 会得到更严的 + * `A`(**漏行**);删掉 `NOT B` 中的 `B` 会得到恒真的 `NOT true`(**多行**)。 + * 因此整条 `$or` / `$not` 都交给逐行求值(`$not` 的恒真情形直接丢弃该键)。 + */ + private enginePreFilter; + /** + * 该 WHERE 片段是否可完全交给引擎层求值(无 `$col` / 关联 `EXISTS` / CASE 键)。 + * + * 与 `hasCorrelatedRefs` 的区别:`hasCorrelatedRefs` 回答"是否需要逐行求值", + * 本函数回答"能否整体下推"。两者互补,缺一不可 —— 后者是前者在 `$or`/`$not` + * 内部传播后的结果。 + */ + private isEngineEvaluable; + /** 字段条件里是否含未解析子查询(引擎层无法执行) */ + private fieldHasSubquery; /** 逐行绑定外层行上下文,求值关联 EXISTS、$col 引用与 CASE WHEN 键 */ private filterCorrelated; /** 将 WHERE 中的 CASE WHEN 表达式键求值为布尔条件($caseResult) */ @@ -523,6 +850,15 @@ declare class QueryExecutor { private caseConditionMatches; /** 将 where 中的 $col 引用替换为上下文行值 */ private bindColumnRefs; + /** + * v0.8.0(A10):在外层行里取 `$col` 引用的值。 + * + * 关键点:引用可能带外层表名/别名前缀(`u.id`),而外层行键是**不带前缀**的 + * (非 JOIN 路径会先剥离)。因此这里必须先剥前缀再取值 —— 否则 `u.id` 取到 + * `undefined`,被 `?? null` 静默变成 null,子查询返回空集 + * (实测 `WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id)` 静默空结果)。 + */ + private lookupOuterValue; private bindWhereRefs; /** * 递归扫描 WHERE 条件,找到 $subquery 标记并执行子查询, @@ -533,11 +869,42 @@ declare class QueryExecutor { /** * 解析操作符值中嵌套的子查询 */ + /** + * 解析字段条件里的子查询。 + * + * v0.8.0 根治(A10):接收外层行上下文并对子查询内的关联引用做绑定。 + * 此前完全不传 contextRow —— 于是 `WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id)` + * 里的 `u.id` 绑定为 undefined,子查询返回空集,最终 `$in: []` → **静默空结果** + * (而结构相同的 EXISTS 因为走另一条分支是正常的 —— 又一处"同类逻辑两条路径")。 + */ private resolveOperatorSubqueries; } +/** + * metona-sqlark Query Builder — 链式查询构建器 + * @module query/builder + * + * ============================================================================ + * v0.8.0(B-3):**只产出 AST,执行一律交给 Executor** + * ============================================================================ + * 修复前每个 builder 的 `execute()` 都有自己的执行动作: + * - `SelectQueryBuilder`:**无 JOIN 时直接调 `engine.find`**,只有 JOIN 才走 + * executor; + * - `UpdateQueryBuilder` / `DeleteQueryBuilder`:直接调 `engine.update/delete`。 + * + * 于是"同一条语义"在 builder 路径与 SQL 路径上走两条管线,规则各写一份: + * - SELECT 的常量列/别名/CASE 投影在 builder 路径不存在 + * (`db.table('t').select(['t.n'])` 的输出键、`SELECT 1` 之类行为不同); + * - `maxRowsPerQuery`、`distinct`、`groupBy`/`having`、`fromSubquery` 等阶段 + * 在直通路径上完全不经过; + * - 未解析的 `$subquery`/`$col` 在直通路径上无人解析 → 引擎判 UNKNOWN → + * **静默 0 行**(这正是 v0.7.4 要为此加"显式拒绝"防御的原因)。 + * + * 现在 builder 只负责"拼 AST",执行统一走 `executor.execute(ast)`; + * 需要直通时由 executor 内部判断(它本来就是唯一知道"能不能下推"的地方)。 + */ + declare class SelectQueryBuilder { - private engine; private tableName; private _columns; private _where; @@ -546,8 +913,8 @@ declare class SelectQueryBuilder { private _offset?; private _joins; private _alias?; - private _executor?; - constructor(engine: IStorageEngine, tableName: string, _columns?: string[], executor?: QueryExecutor); + private _executor; + constructor(tableName: string, executor: QueryExecutor, _columns?: string[]); /** 主表别名 */ as(alias: string): this; /** INNER JOIN */ @@ -569,33 +936,78 @@ declare class SelectQueryBuilder { limit(n: number): this; /** 偏移量 */ offset(n: number): this; - /** 执行查询 */ + /** + * 执行查询 —— 拼出 AST 后交给 Executor(**唯一**执行管线)。 + * + * 注意不要再为"无 JOIN"加一条 `engine.find` 快路:那条路会绕过 + * 投影/列校验/LIMIT 下推判定/maxRowsPerQuery,从而与 `db.query()` 给出不同结果 + * (B-3 修复前的实际状态)。executor 自己会在安全时下推到引擎,不需要 builder 代劳。 + */ execute(): Promise[]>; /** 获取 AST */ toAST(): SelectStatement; } declare class UpdateQueryBuilder { - private engine; private tableName; private _updates; + private executor; + /** + * TABLE API 的生命周期回调(`beforeUpdate` / `afterUpdate` / onWrite 广播)。 + * + * 为什么由 `Table` 注入而不是 builder 自己触发:builder 的职责是**产出 AST**, + * 它不该知道钩子/广播的存在(否则又会像修复前那样"builder 顺带把写入也做了", + * 从而绕过 Executor)。钩子被包裹在**唯一管线**之外, + * 顺序与修复前完全一致:before → executor → onWrite → after。 + * + * 回调接收**实际执行的语句**(含 builder 上累积的 where), + * 而不是构造 builder 时的空 where —— 后者会让 `beforeUpdate` 的 + * `query.where` 永远是 `{}`(钩子拿不到过滤条件,等于信息缺失)。 + */ + private hooks?; private _where; - private onWrite?; - /** v0.5.1: CRUD hooks 触发回调 */ - private onHooks?; - constructor(engine: IStorageEngine, tableName: string, _updates: Record, onWrite?: (table: string) => void, onHooks?: (hook: HookName, args: unknown[]) => Promise); + constructor(tableName: string, _updates: Record, executor: QueryExecutor, + /** + * TABLE API 的生命周期回调(`beforeUpdate` / `afterUpdate` / onWrite 广播)。 + * + * 为什么由 `Table` 注入而不是 builder 自己触发:builder 的职责是**产出 AST**, + * 它不该知道钩子/广播的存在(否则又会像修复前那样"builder 顺带把写入也做了", + * 从而绕过 Executor)。钩子被包裹在**唯一管线**之外, + * 顺序与修复前完全一致:before → executor → onWrite → after。 + * + * 回调接收**实际执行的语句**(含 builder 上累积的 where), + * 而不是构造 builder 时的空 where —— 后者会让 `beforeUpdate` 的 + * `query.where` 永远是 `{}`(钩子拿不到过滤条件,等于信息缺失)。 + */ + hooks?: { + before?: (stmt: UpdateStatement) => Promise; + after?: (count: number, stmt: UpdateStatement) => Promise; + } | undefined); where(condition: WhereCondition): this; + /** + * 执行更新 —— 走 Executor(唯一的写管线)。 + * + * 修复前这里直接调 `engine.update`:`$subquery` / `$col` / `$exists` 无人解析, + * 引擎层 matchWhere 判 UNKNOWN → **静默影响 0 行**(返回 0 且无报错)。 + * 引擎层为此加过"检测未解析标记就抛 NOT_SUPPORTED"的防御 —— 那是把 + * "管线缺失"暴露成用户错误;正确做法是把请求送进唯一管线。 + */ execute(): Promise; toAST(): UpdateStatement; } declare class DeleteQueryBuilder { - private engine; private tableName; + private executor; + /** TABLE API 生命周期回调,语义见 `UpdateQueryBuilder` 的说明 */ + private hooks?; private _where; - private onWrite?; - /** v0.5.1: CRUD hooks 触发回调 */ - private onHooks?; - constructor(engine: IStorageEngine, tableName: string, onWrite?: (table: string) => void, onHooks?: (hook: HookName, args: unknown[]) => Promise); + constructor(tableName: string, executor: QueryExecutor, + /** TABLE API 生命周期回调,语义见 `UpdateQueryBuilder` 的说明 */ + hooks?: { + before?: (stmt: DeleteStatement) => Promise; + after?: (count: number, stmt: DeleteStatement) => Promise; + } | undefined); where(condition: WhereCondition): this; + /** 执行删除 —— 走 Executor(同 UpdateQueryBuilder.execute 的理由) */ execute(): Promise; toAST(): DeleteStatement; } @@ -614,6 +1026,15 @@ declare class Table> { insert(row: T & Record): Promise; insertMany(rows: (T & Record)[]): Promise; select(columns?: string[]): SelectQueryBuilder; + /** + * v0.8.0(B-3):取执行器;缺失即**明确失败**。 + * + * 修复前 builder 在拿不到 executor 时会退化为"直接调引擎" —— 于是 + * `db.table('t')` 与 `db.query()` 两条路径的语义不同(投影/列校验/LIMIT 下推/ + * maxRowsPerQuery 在直通路径上全部缺失)。现在只保留一条管线: + * 没有 executor 就没有可用的查询 API,显式报错而不是悄悄降级。 + */ + private requireExecutor; /** v0.4.0: 流式查询 — 逐行回调,不物化全部结果 */ stream(onRow: (row: T & Record) => void, query?: { where?: Record; @@ -621,6 +1042,13 @@ declare class Table> { offset?: number; columns?: string[]; }): Promise; + /** + * v0.8.0(B-3):写操作也走**唯一管线**(Executor),生命周期钩子由本方法注入。 + * + * 修复前 `UpdateQueryBuilder` 直接调 `engine.update`:`$subquery`/`$col` 无人解析 + * → 引擎判 UNKNOWN → 静默影响 0 行;`beforeUpdate`/`afterUpdate` 的触发点也因此 + * 与 SQL 路径不同(一条在 builder 里、一条在 core 里)。 + */ update(updates: Partial & Record): UpdateQueryBuilder; delete(): DeleteQueryBuilder; count(where?: Record): Promise; @@ -639,6 +1067,15 @@ declare class Transaction { private engine; private tables; private completed; + /** + * v0.8.0(B-3):事务内的表操作同样走**唯一执行管线**。 + * + * `Table` 的 select/update/delete 现在必须拿到 executor(builder 只产出 AST), + * 因此这里构造一个绑定到同一引擎的执行器 —— 事务的原子性由**引擎**提供 + * (begin/commit/rollback 作用在引擎上),执行器只是把 AST 翻译成引擎调用, + * 两者组合即可保持"事务内写入可回滚"这一语义不变。 + */ + private executor; constructor(engine: IStorageEngine); /** 获取表操作对象 */ table(tableName: string): Table; @@ -647,6 +1084,28 @@ declare class Transaction { /** 是否已完成 */ isCompleted(): boolean; } +declare class TransactionManager { + private engine; + constructor(engine: IStorageEngine); + /** 执行事务 — 支持自动回滚 */ + execute(fn: (trx: Transaction) => Promise): Promise; +} + +/** 变更类型(与 site/docs.html 承诺的 `event.type` 对齐) */ +type ChangeType = 'insert' | 'update' | 'delete' | 'clear' | 'ddl' | 'external'; +/** 变更事件 */ +interface ChangeEvent { + /** 变更类型 */ + type: ChangeType; + /** 表名 */ + table: string; + /** 受影响的行(可用时提供) */ + row?: Record; + /** 受影响行的主键(可用时提供) */ + key?: string; + /** 受影响行数 */ + count?: number; +} declare class MetonaSqlark { /** 数据库名称 */ @@ -709,7 +1168,42 @@ declare class MetonaSqlark { * }); * ``` */ + /** + * 流式查询:逐行回调,尽量不物化全部结果(大表友好)。 + * + * v0.8.0 根治:**快路径与物化路径的结果必须逐值相等**。 + * + * 此前 core.ts 自己重写了一套"能不能走引擎快路径 / 列投影怎么算"的规则, + * 与 executor 的规则各写一份并发生漂移,实测四类静默不一致: + * SELECT id AS x FROM t → query 返回 [{x}],stream 返回 [{id,v}](全列 + 原列名) + * SELECT t.id FROM t → query 返回 [{id}],stream 返回 [{}](空对象) + * ... LIMIT 2 OFFSET 1 → query 1 行,stream 2 行 + * ... LIMIT 0 → query 0 行,stream 1 行(Aria 又是 0 行,跨引擎也不同) + * 另:流式路径既不触发 beforeQuery/afterQuery 钩子,也不受 maxRowsPerQuery 约束。 + * + * 现在的规则: + * 1. 是否可流式、如何投影,全部由 `executor.analyzeSelect()` 判定(单一事实来源); + * 2. 不可流式(以及任何不确定的情况)一律回退到 `query()` 物化后逐行回调 —— + * 这条路径天然与 `query()` 同语义,是正确性的兜底保证; + * 3. 快路径只覆盖"引擎层投影与 executor 投影语义等价"的简单 SELECT; + * 4. 回调返回 Promise 时不再靠 `constructor.name` 猜(此前对普通函数返回 Promise + * 的情况完全失效),而是直接检测返回值并显式报错,避免 Promise 被静默丢弃。 + */ queryStream = Record>(sql: string, onRow: (row: T) => void): Promise; + /** + * v0.8.0: 判断流式回调是否为 async(或声明返回 Promise)。 + * + * 此前用 `onRow.constructor.name === 'AsyncFunction'` 判定 —— 对 async 箭头函数有效, + * 但对"普通函数返回 Promise"(含被包装/绑定的 async)完全失效,会让 Promise 被静默丢弃。 + * 这里用**双条件**:既看是否声明为 async 函数(源码/转译后仍可识别), + * 也看其返回类型标注;两者任一成立即走物化 + await 路径。 + */ + private isAsyncCallback; + /** + * v0.8.0: 剥离列引用上的主表别名前缀(`t.id` → `id`)。 + * 与 executor 非 JOIN 路径的 `stripAlias` 语义保持一致。 + */ + private stripAliasPrefix; /** 流式查询用:剥离主表别名前缀(复用 query 路径的规范化逻辑) */ private normalizeWhereForStream; /** 执行事务 */ @@ -725,19 +1219,34 @@ declare class MetonaSqlark { * Aria 引擎走引擎级 backup()(MVCC 一致性视图);其余引擎回退 exportAll()。 */ backup(): Promise[]>>; + /** 变更通知引擎(init 后可用);未初始化时为 null */ + private notifier; private listeners; - /** 订阅表变更 */ - subscribe(tableName: string, callback: (event: { - type: string; - row?: unknown; - table?: string; - }) => void): () => void; - /** 触发变更事件 */ - emit(tableName: string, event: { - type: string; - row?: unknown; - table?: string; - }): void; + /** + * 订阅表变更。 + * + * v0.8.0 修复:此前**本地写入永不触发** —— 全库唯一调用 `emit` 的地方在 + * BroadcastChannel 收到其它标签页消息的分支里,因此 README「订阅表变更」与 + * site/docs.html 的 `event.type: 'insert' | 'update' | 'delete'` 示例全都不成立。 + * 现在本地写入(SQL / Table API / QueryBuilder / 事务内)都会产生事件。 + * + * 现在返回的函数是**同步**退订函数(与既有 API 兼容)。 + */ + subscribe(tableName: string, callback: (event: ChangeEvent) => void | Promise): () => void; + /** + * 手动触发变更事件(保留为公开 API:自定义写入路径可显式通知订阅者)。 + * 现在也支持 await —— 订阅者的 Promise 会被等待。 + */ + emit(tableName: string, event: Partial & { + type: ChangeEvent['type']; + }): Promise; + /** + * v0.8.0: 派发"来自其它标签页"的变更事件。 + * 只走本地订阅者,不触发 onBroadcast(避免 A↔B 互相转发的无限循环)。 + */ + private emitExternal; + /** 内部:把一次变更同时派发给本地订阅者与跨标签页广播 */ + private dispatchChange; /** 广播表变更到其他标签页(多标签页同步) */ broadcastChange(tableName: string): void; /** 写语句对应的表名(多标签页广播用) */ @@ -769,8 +1278,24 @@ declare class MetonaSqlark { on(hook: HookName, callback: HookCallback): void; /** 关闭数据库 */ close(): Promise; - /** 获取底层引擎 */ + /** + * 获取底层存储引擎。 + * + * v0.8.0:返回**未装饰**的真实引擎。 + * + * 变更通知用的 ChangeNotifierEngine 只是内部接线细节;若把它暴露出去, + * 调用方(以及测试)依赖的引擎特有能力(`lsm`、`secondaryIndexes`、 + * `getDiskEngineType` 等)会被静默隐藏 —— 本项目既有测试与文档都按 + * "getEngine() 就是那个引擎"理解。因此这里保持原语义,装饰器只在 core 内部使用。 + */ getEngine(): IStorageEngine; + /** + * v0.8.0: 取**未装饰**的真实存储引擎。 + * + * 引擎在 init 时被 ChangeNotifierEngine 包了一层,因此需要引擎特化能力 + * (如 HybridEngine.reloadMemoryFromDisk)时必须先解包,否则 instanceof 恒 false。 + */ + private unwrapEngine; private createEngine; private ensureReady; /** 错误回调分发 */ @@ -865,7 +1390,23 @@ declare class MemoryEngine implements IStorageEngine { private ensureTable; private getPrimaryKey; private validateRow; - private checkType; + /** + * 取该 schema 的行校验器(每次调用重新编译)。 + * + * 不缓存在引擎字段上:`alterTable` 会原地修改 schema 对象, + * 长期缓存会继续用过期列定义("加了列却仍被当未知列"这类难查问题)。 + * 编译本身只是 `Object.entries` + Set 构造,相对一次 INSERT 的索引维护可忽略。 + */ + private rowValidator; + /** + * v0.8.0(B-1):写入前置校验(见 `IStorageEngine.validatePayload` 契约)。 + * + * 引擎在 `insert` / `update` 内部**同样**会校验 —— 本方法只是让 Executor 与 + * QueryBuilder 能在"开始写入之前"拿到同一套判定结果,从而: + * - 多行 INSERT 的预检发生在任何副作用之前(错误信息带列名清单); + * - 直通路径与 SQL 路径不可能给出不同结论(同一个 `compileValidator`)。 + */ + validatePayload(tableName: string, rows: Record[], mode?: 'insert' | 'update'): Promise; /** 索引查找 */ private tryIndexLookup; /** 更新索引 */ @@ -971,6 +1512,14 @@ declare class KVStoreEngine implements IStorageEngine { alterTable(tableName: string, action: 'ADD' | 'DROP', column: ColumnDef & { name: string; }): Promise; + /** + * v0.8.0(B-1):写入前置校验 —— 委托给内存引擎(两者共享同一 schema 表)。 + * + * KVStore/Hybrid 的行校验一直"继承"自 MemoryEngine,这正是 A12 的成因: + * 三者共用一份**缺 maxLength/min/max** 的实现。现在共享的是 + * `table/validation.ts` 的规范实现,继承关系不再影响约束覆盖面。 + */ + validatePayload(tableName: string, rows: Record[], mode?: 'insert' | 'update'): Promise; insert(tableName: string, rows: Record[]): Promise; find(tableName: string, query: QueryPlan): Promise[]>; findStream(tableName: string, query: QueryPlan, onRow: (row: Record) => void): Promise; @@ -1119,6 +1668,15 @@ declare class AriaEngine implements IStorageEngine { commitTransaction(): Promise; rollbackTransaction(): Promise; private savepoints; + /** + * v0.8.0: 当前事务在 WAL 中已成功追加的记录条数。 + * + * 用途:保存点需要记录"回滚后应保留到哪一条",否则恢复时无法区分 + * "保存点之前的写入"(应保留)与"保存点之后的写入"(应丢弃)。 + */ + private txnWalRecordCount; + /** 保存点 → 该保存点时事务的 WAL 记录边界 */ + private savepointWalBoundary; savepoint(name: string): Promise; rollbackToSavepoint(name: string): Promise; releaseSavepoint(name: string): Promise; @@ -1131,7 +1689,10 @@ declare class AriaEngine implements IStorageEngine { private mergeTxnSnapshot; private getPK; private validateRow; - private checkType; + /** + * v0.8.0(B-1):写入前置校验 —— 见 `IStorageEngine.validatePayload` 契约。 + */ + validatePayload(tableName: string, rows: Record[], mode?: 'insert' | 'update'): Promise; private persistSchemas; private loadSchemas; /** @@ -1156,11 +1717,15 @@ declare class AriaEngine implements IStorageEngine { /** v0.6.2: 表中有 unique 约束且索引 LSM 已建的列(唯一性检查范围) */ private uniqueColumns; /** - * v0.6.2: 同步唯一性检查(须在批次级 prefetchPrefixRanges 之后调用,循环内无 await)。 + * 唯一性检查。 + * + * v0.8.0: 由 `checkUniqueSync` 改名并改为 async —— 此前命名为 "Sync" 是因为它 + * 依赖"批次级 prefetchPrefixRanges 之后索引数据已在缓存中"这一约定。现在 + * LSM 读取自洽(未命中即回源),因此这里可以、也必须 await。 * 索引不含 null 条目(null 值不受唯一约束,与 MemoryEngine 语义一致)。 * @param currentPk 当前行主键(更新路径用于排除自身旧索引条目;插入路径无自身条目) */ - private checkUniqueSync; + private checkUnique; /** 更新行的二级索引条目 */ private updateSecondaryIndexes; /** 通过二级索引快速查找 */ @@ -1235,6 +1800,14 @@ declare class HybridEngine implements IStorageEngine { * 无需此补偿。 */ private recoverMemoryAfterDiskError; + /** + * v0.8.0(B-1):写入前置校验 —— 委托给内存引擎(与磁盘引擎同 schema)。 + * + * 关键点:**只判定一次**。Hybrid 的 write-through 会把同一批行先写内存再写磁盘, + * 两个引擎各自校验会给出同一结论(现在共享同一个 `compileValidator`), + * 但由本方法统一前置,可保证多行批量在任何副作用之前整体失败。 + */ + validatePayload(tableName: string, rows: Record[], mode?: 'insert' | 'update'): Promise; insert(tableName: string, rows: Record[]): Promise; find(tableName: string, query: QueryPlan): Promise[]>; /** v0.4.0: 流式查询(内存引擎逐行回调) */ @@ -1266,6 +1839,8 @@ declare class HybridEngine implements IStorageEngine { declare function parse(sql: string): Statement; /** 解析 SQL 字符串为 AST Statement 数组(分号分隔的多语句支持,v0.3.0) */ declare function parseAll(sql: string): Statement[]; +/** 解析独立 WHERE 条件表达式(CASE WHEN 求值等场景,v0.3.1) */ +declare function parseWhereCondition(sql: string): WhereCondition; /** * metona-sqlark SQL Token Types — 词法单元定义 @@ -1345,6 +1920,17 @@ declare enum TokenType { RELEASE = "RELEASE", TO = "TO", IDENTIFIER = "IDENTIFIER", + /** + * v0.8.0: 分隔标识符(双引号包裹,SQL 标准 `"name"`)。 + * + * 此前双引号被当作字符串定界符处理,`SELECT "name" FROM t` 会静默产出一个名为 + * `'name'` 的**常量列**(行数正确、值全错、无任何报错),且该行为被 + * tests/sql/lexer.test.ts 钉死为期望。现按 SQL 标准区分: + * 'x' → STRING(字符串字面量) + * "x" → QUOTED_IDENTIFIER(标识符,用于含特殊字符/保留字/大小写敏感的列名) + * 双引号内以 "" 表示一个双引号。 + */ + QUOTED_IDENTIFIER = "QUOTED_IDENTIFIER", STRING = "STRING", NUMBER = "NUMBER", COMMA = "COMMA", @@ -1378,6 +1964,27 @@ interface Token { /** 将 SQL 字符串解析为 Token 列表 */ declare function tokenize(sql: string): Token[]; +/** + * metona-sqlark SQL Parameters — 参数化查询绑定 + * @module sql/params + * + * v0.7.0: `db.query(sql, params)` 位置参数(`?`)支持。 + * 绑定在词法层面完成:仅替换字符串字面量之外的 `?`, + * 值按 SQL 字面量编码(字符串 `''` 转义、数字/布尔/JSON 直出), + * 从根上规避 SQL 注入(不经过字符串拼接由用户自行转义)。 + * + * v0.7.2: 词法扫描感知注释 —— 行注释(`--`)与块注释(slash-star 包裹)中的 `?` + * 与引号不再参与占位符识别与字符串状态机(此前注释中的 `?` 计入占位符导致 + * PARAM_ERROR 错位、注释中的单引号触发 "Unterminated string literal")。 + */ +/** + * 将 SQL 中的位置参数 `?`(字符串字面量与注释之外)替换为编码后的字面量。 + * @param sql 含 `?` 占位符的 SQL + * @param params 位置参数数组 + * @throws PARAM_ERROR 参数数量不匹配 + */ +declare function bindParameters(sql: string, params?: unknown[]): string; + /** * AriaEngine OPFS Backend — 基于 Origin Private File System 的自研存储后端 * @module engine/aria/store/opfs_backend @@ -1475,4 +2082,4 @@ declare global { declare const MeSqlark: typeof MetonaSqlark; -export { AriaEngine, AriaEngineConfig, ColumnDef, DatabaseConfig, DeleteStatement, DiskEngine, FieldType, HybridEngine, IStorageEngine, InsertStatement, KVStoreEngine, MeSqlark, MemoryEngine, MetonaSqlark, OPFSBackend, SelectStatement, Statement, StorageMode, Table, TableSchema, UpdateStatement, VERSION, api, create, api as default, parse, parseAll, tokenize }; +export { AriaEngine, AriaEngineConfig, ColumnDef, DatabaseConfig, DatabaseError, DeleteStatement, DiskEngine, FieldType, HookCallback, HookName, HybridEngine, IStorageEngine, InsertStatement, KVStoreEngine, MeSqlark, MemoryEngine, MetonaPlugin, MetonaSqlark, OPFSBackend, OrderBy, PluginManager, QueryPlan, SelectStatement, Statement, StorageMode, Table, TableSchema, Transaction, TransactionManager, UpdateStatement, VERSION, WhereCondition, WhereOperator, api, bindParameters, create, api as default, parse, parseAll, parseWhereCondition, tokenize }; diff --git a/dist/metona-sqlark.esm.js b/dist/metona-sqlark.esm.js index 3a2f8f3..1064504 100644 --- a/dist/metona-sqlark.esm.js +++ b/dist/metona-sqlark.esm.js @@ -33,11 +33,609 @@ class DatabaseError extends Error { const VERSION = '0.8.0'; /** - * metona-sqlark Shared WHERE Matcher — 统一的条件匹配逻辑 + * metona-sqlark Engine Change Notifier(v0.8.0) + * @module engine/change-notifier + * + * ============================================================================ + * 为什么需要它(PLAN-v0.7.5.md A9) + * ============================================================================ + * `db.subscribe(table, fn)` 此前对**本地写入永不触发**:全库只有一处调用 `emit`, + * 而那一处在 BroadcastChannel 收到**其它标签页**消息时才执行。于是: + * - README:232「订阅表变更」、site/docs.html:667-679 的示例 + * (`event.type: 'insert' | 'update' | 'delete'`、`event.row`)全部不成立; + * - 唯一的实际触发条件是 `multiTabSync: true` 且收到 `external` 事件。 + * + * 更麻烦的是原因:写入路径有**三条**(SQL 语句、Table API、QueryBuilder),各自 + * 只调用 `broadcastChange(tableName)`,谁都不知道"改了哪些行"。所以此前即便想接线, + * 也要在三处分别实现一遍变更描述逻辑 —— 那正是本项目反复出问题的模式 + * (同一语义多份实现 → 漂移)。 + * + * ============================================================================ + * 本实现的做法 + * ============================================================================ + * 用一个 `IStorageEngine` **装饰器**把变更通知收敛到唯一位置:所有写入都必须经过 + * 引擎接口,因此在这里拦截一次即可覆盖全部入口(SQL / Table / Builder / 事务内)。 + * + * 事件语义(对文档承诺的兑现): + * - INSERT:逐行一个事件,携带该行(`row` 与主键 `key`); + * - UPDATE:先按 WHERE 查出**将被修改的行**(快照),写入成功后逐行发事件并 + * 携带**更新后的行**;查不到(例如 WHERE 无法在写入前求值)时退化为表级事件, + * 只带 `count`; + * - DELETE:同理,逐行发事件并携带**被删除前的行**; + * - CLEAR / DDL:表级事件(`count` 可选)。 + * + * 订阅方回调返回 Promise 时会被 await(保证"写完通知完"的顺序), + * 但**订阅方的异常不会影响写入结果** —— 写入已经成功,通知失败只上报 onError。 + */ +/** + * 变更通知引擎装饰器。 + * + * 只读方法(find/count/findStream/getTableSchema/...)直接透传; + * 写入方法在成功后产生事件并同步派发给监听者。 + */ +class ChangeNotifierEngine { + constructor(inner, onListenerError = () => { }, onBroadcast = () => { }) { + this.listeners = new Set(); + this.inner = inner; + this.onListenerError = onListenerError; + this.onBroadcast = onBroadcast; + } + /** 暴露内层引擎(需要能力探测或特化逻辑时使用) */ + getInner() { + return this.inner; + } + /** 注册变更监听(返回退订函数) */ + addListener(listener) { + this.listeners.add(listener); + return () => this.listeners.delete(listener); + } + /** 派发事件(供外部事件如跨标签页 `external` 复用同一通道) */ + async dispatch(event) { + // 跨标签页广播与本地订阅走同一出口,保证"写入即通知"只有一条路径 + try { + this.onBroadcast(event.table); + } + catch { + // 广播失败不影响本地通知与写入结果 + } + for (const listener of [...this.listeners]) { + try { + await listener(event); + } + catch (error) { + // 订阅者异常不得影响写入结果(写入已成功),只上报 + this.onListenerError(error); + } + } + } + // ------------------------------------------------------------------------- + // 写入路径:产生事件 + // ------------------------------------------------------------------------- + async insert(tableName, rows) { + const pks = await this.inner.insert(tableName, rows); + // 逐行事件;用引擎返回的主键对齐(resolved 行带 default 值,恢复时可对照) + for (let i = 0; i < pks.length; i++) { + await this.dispatch({ + type: 'insert', + table: tableName, + key: pks[i], + row: i < rows.length ? rows[i] : undefined, + count: 1, + }); + } + return pks; + } + async update(tableName, query, updates) { + // 写入前快照将被影响的行(用于提供 row 内容)。失败不阻塞写入 —— 快照只是尽力而为。 + const affected = await this.snapshotAffected(tableName, query); + const count = await this.inner.update(tableName, query, updates); + if (count > 0 && affected.length > 0) { + for (const before of affected) { + const after = { ...before, ...stripUndefined(updates) }; + await this.dispatch({ + type: 'update', + table: tableName, + row: after, + count: 1, + }); + } + } + else if (count > 0) { + await this.dispatch({ type: 'update', table: tableName, count }); + } + return count; + } + async delete(tableName, query) { + const affected = await this.snapshotAffected(tableName, query); + const count = await this.inner.delete(tableName, query); + if (count > 0 && affected.length > 0) { + for (const before of affected) { + await this.dispatch({ type: 'delete', table: tableName, row: before, count: 1 }); + } + } + else if (count > 0) { + await this.dispatch({ type: 'delete', table: tableName, count }); + } + return count; + } + async clear(tableName) { + await this.inner.clear(tableName); + await this.dispatch({ type: 'clear', table: tableName }); + } + async createTable(schema) { + await this.inner.createTable(schema); + await this.dispatch({ type: 'ddl', table: schema.name }); + } + async dropTable(tableName) { + await this.inner.dropTable(tableName); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async alterTable(tableName, action, column) { + await this.requireCapability('alterTable')(tableName, action, column); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async createIndex(tableName, column, unique) { + await this.requireCapability('createIndex')(tableName, column, unique); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async dropIndex(tableName, column, indexName) { + await this.requireCapability('dropIndex')(tableName, column, indexName); + await this.dispatch({ type: 'ddl', table: tableName }); + } + // ------------------------------------------------------------------------- + // 只读路径:透传 + // ------------------------------------------------------------------------- + get name() { return this.inner.name; } + open(dbName, version) { return this.inner.open(dbName, version); } + close() { return this.inner.close(); } + isOpen() { return this.inner.isOpen(); } + hasTable(tableName) { return this.inner.hasTable(tableName); } + getTableNames() { return this.inner.getTableNames(); } + getTableSchema(tableName) { + return this.inner.getTableSchema(tableName); + } + find(tableName, query) { + return this.inner.find(tableName, query); + } + count(tableName, query) { + return this.inner.count(tableName, query); + } + async findStream(tableName, query, onRow) { + return this.requireCapability('findStream')(tableName, query, onRow); + } + // ---- 事务:透传(事务内的写入由底层引擎统一处理,事件在语句层产生) ---- + beginTransaction() { return this.inner.beginTransaction(); } + commitTransaction() { return this.inner.commitTransaction(); } + rollbackTransaction() { return this.inner.rollbackTransaction(); } + savepoint(name) { + return this.requireCapability('savepoint')(name); + } + rollbackToSavepoint(name) { + return this.requireCapability('rollbackToSavepoint')(name); + } + releaseSavepoint(name) { + return this.requireCapability('releaseSavepoint')(name); + } + backup() { + return this.requireCapability('backup')(); + } + repair() { + return this.requireCapability('repair')(); + } + clearAll() { + return this.requireCapability('clearAll')(); + } + // ---- 维护能力(可选,AriaEngine 专有;只读/维护语义,不产生变更事件) ---- + /** + * v0.8.0:转发引擎专有的维护方法。 + * + * 为什么必须显式转发:executor 用 `typeof engine.analyzeTable === 'function'` + * 做能力探测。装饰器只实现 `IStorageEngine` 声明的成员,于是这些"接口外方法" + * 在被包装后会**静默消失** → ANALYZE/REINDEX 报 NOT_SUPPORTED(实测 3 个用例失败)。 + * 这正是审计指出的"用 typeof/instanceof 做能力探测"的脆弱之处; + * 在装饰器里显式补齐是当前最直接的修法。 + */ + analyzeTable(tableName) { + return this.requireOptionalMethod('analyzeTable')(tableName); + } + reindexTable(tableName) { + return this.requireOptionalMethod('reindexTable')(tableName); + } + vacuum() { + return this.requireOptionalMethod('vacuum')(); + } + getMeta(key) { + const method = this.inner.getMeta; + if (typeof method !== 'function') + return Promise.resolve(null); + return method.call(this.inner, key); + } + setMeta(key, value) { + const method = this.inner.setMeta; + if (typeof method !== 'function') + return Promise.resolve(); + return method.call(this.inner, key, value); + } + // ------------------------------------------------------------------------- + /** + * v0.8.0: 取一个**可选能力**方法;内层未实现时抛 `NOT_SUPPORTED`。 + * + * 为什么不能直接抛普通 Error:项目对"能力缺失"有明确契约 —— + * `NOT_SUPPORTED` 错误码(README「维护语句」、executor 的 savepoint/backup + * 分支、以及既有测试都依赖它)。装饰器如果抛原生 Error,调用方按 code 分类 + * 就会失效(实测让 6 个套件里的 14 个用例失败)。 + */ + requireCapability(name) { + const method = this.inner[name]; + if (typeof method !== 'function') { + return (() => { + throw new DatabaseError(`Engine "${this.inner.name}" does not support ${String(name)}`, 'NOT_SUPPORTED'); + }); + } + return method.bind(this.inner); + } + /** + * v0.8.0: 取**接口之外**的可选方法(如 AriaEngine.analyzeTable / reindexTable / vacuum)。 + * + * 与 requireCapability 的区别:这些方法不在 IStorageEngine 契约里,属于引擎专有能力, + * 但 executor 会用 `typeof engine.x === 'function'` 探测它们。装饰器必须显式转发, + * 否则能力在被包装后静默消失(实测 ANALYZE/REINDEX 报 NOT_SUPPORTED)。 + */ + requireOptionalMethod(name) { + const method = this.inner[name]; + if (typeof method !== 'function') { + return () => { + throw new DatabaseError(`Engine "${this.inner.name}" does not support ${name}`, 'NOT_SUPPORTED'); + }; + } + return method.bind(this.inner); + } + /** + * 尽力而为地取"将被影响的行"快照。 + * + * 用途:让 UPDATE/DELETE 事件能携带行内容(文档承诺 `event.row`)。 + * 失败时返回空数组 —— 事件退化为表级通知(只带 count),**不影响写入本身**。 + */ + async snapshotAffected(tableName, query) { + try { + return await this.inner.find(tableName, { table: tableName, where: query.where }); + } + catch { + return []; + } + } +} +/** 与引擎/executor 一致的 undefined 语义:不更新该列 */ +function stripUndefined(updates) { + const out = {}; + for (const [k, v] of Object.entries(updates)) { + if (v !== undefined) + out[k] = v; + } + return out; +} + +/** + * metona-sqlark Engine Interface — 存储引擎抽象接口 + * @module engine/interface + */ +// --------------------------------------------------------------------------- +// v0.8.0: 行所有权(row ownership)约定 +// --------------------------------------------------------------------------- +/** + * 深拷贝一行,使调用方**无法通过修改返回值改写存储**。 + * + * 为什么必须做(审计实测):Memory/KVStore/Hybrid 三个引擎此前把内部行对象 + * **直接**交给调用方: + * const rows = await db.query('SELECT * FROM t'); + * rows[0].tag = 'HACKED'; // 存储被改写 + * 再查 WHERE tag='HACKED' → 0 行;WHERE tag='x' → 0 行 + * 即调用方一次无意的原地修改就能让索引与行失配、该行永久查不出来(Aria 因为是 + * 反序列化路径反而幸免,于是又成了跨引擎行为差异)。 + * + * 约定(写入 interface 文档,所有引擎必须遵守): + * **读出的行是副本,写入接收的行也是副本** —— 引擎不得把内部行对象暴露给外部, + * 也不得持有调用方传入的行对象引用。 + * + * 实现说明:结构化克隆可用时优先使用(正确处理 Date/嵌套对象/循环引用); + * 存储层写入的行已经过 validateRow 的 JSON 安全性检查,因此退化路径也是安全的。 + */ +function cloneRow(row) { + if (row === null || typeof row !== 'object') + return row; + if (typeof structuredClone === 'function') { + try { + return structuredClone(row); + } + catch { + // 含不可克隆值(函数/Proxy)时退化为逐层复制 + } + } + return cloneRowFallback(row); +} +/** 退化实现:递归复制普通对象与数组(保留 Date) */ +function cloneRowFallback(value) { + if (value === null || typeof value !== 'object') + return value; + if (value instanceof Date) + return new Date(value.getTime()); + if (Array.isArray(value)) + return value.map((v) => cloneRowFallback(v)); + if (value instanceof Uint8Array) + return new Uint8Array(value); + if (value instanceof ArrayBuffer) + return value.slice(0); + const out = {}; + for (const [k, v] of Object.entries(value)) { + out[k] = cloneRowFallback(v); + } + return out; +} + +/** + * metona-sqlark SQL 值语义 — 三值逻辑与统一编码(v0.8.0) + * @module query/sql-compare + * + * ============================================================================ + * 为什么需要它(PLAN-v0.7.5.md 根因 2 / PB-2) + * ============================================================================ + * 此前项目里并存**五套**值相等语义: + * 1. `where-matcher` 的 `===` + * 2. 哈希连接的 `String(v ?? '\0')` + * 3. 分组键 `encodeGroupKey` + * 4. `COUNT(DISTINCT)` 的 `String(v)` + * 5. Aria 二级索引键的 `String(v)` + * 它们对 NULL 的处理各不相同,于是出现一批"静默错值": + * - `WHERE a = NULL` 命中 NULL 行(SQL 标准应为空集,比较结果是 UNKNOWN); + * - `WHERE a != NULL` 返回所有非 NULL 行(标准同样为空集); + * - `WHERE a NOT BETWEEN 1 AND 2` 会把 NULL 行**排除**(标准应包含, + * 因为 UNKNOWN 经过 NOT 仍是 UNKNOWN,而 WHERE 只保留 TRUE……此处需按下文语义); + * - `WHERE a NOT IN (1, 2)` 把 NULL 行当作"不在列表"返回; + * - JOIN 的 NULL 键:嵌套循环认为 NULL = NULL 成立、哈希连接不成立 → + * **结果取决于右表有没有索引**。 + * + * ============================================================================ + * 本模块提供的语义 + * ============================================================================ + * `sqlCompare(a, b)` / `sqlEquals(a, b)` 返回三值:TRUE / FALSE / UNKNOWN。 + * 任一操作数为 NULL/undefined → UNKNOWN(SQL 标准)。 + * `matchWhere` 只在结果为 TRUE 时保留该行。 + * + * 注意 `IS NULL` / `IS NOT NULL` **不走比较**:它们是谓词,直接对 NULL 求值, + * 由 parser 生成为独立的 `$isNull` / `$isNotNull` 标记(见 SQL_LOGICAL 说明)。 + */ +/** SQL 三值逻辑 */ +const SQL_LOGICAL = Object.freeze({ + TRUE: 'TRUE', + FALSE: 'FALSE', + /** 未知(任一操作数为 NULL,或存在无法确定的引用) */ + UNKNOWN: 'UNKNOWN', +}); +/** 是否为 NULL 语义值(undefined 与 null 等价为 SQL NULL) */ +function isSqlNull(value) { + return value === null || value === undefined; +} +/** + * 未解析的列引用标记。 + * + * 用于区分两件必须分开处理的事: + * - `row[col]` 取到 `undefined` 可能是"该行此列为 NULL", + * 也可能是"这一列根本不在当前行里"(例如子查询引用了外层列)。 + * 前者应判 UNKNOWN,后者应让调用方转交带上下文的求值器(不能静默当 NULL)。 + * 用 Unique Symbol 保证不会与真实数据冲突。 + */ +const UNRESOLVED = Symbol('sqlark.unresolved'); +/** 判定某值是否为"未解析引用" */ +function isUnresolved(value) { + return value === UNRESOLVED; +} +/** + * 统一的类型化值编码(用于分组键 / DISTINCT 键 / 索引键)。 + * + * 为什么不能直接 `String(v)`: + * - `String(null)` = `'null'` 与字符串 `'null'` 冲突; + * - `String(1)` = `'1'` 与字符串 `'1'` 冲突(v0.7.4 已修 DISTINCT, + * 但 COUNT(DISTINCT) 与 Aria 索引键仍是 `String()`)。 + * 这里用类型前缀 + 长度前缀,保证不同类型、不同值必然编码不同, + * 且不会出现 `\x1f` 之类分隔符被数据内容伪造的问题。 + */ +function encodeValueKey(value) { + if (value === null || value === undefined) + return 'z'; + const t = typeof value; + switch (t) { + case 'string': { + const s = value; + return `s${s.length}:${s}`; + } + case 'number': { + const n = value; + // -0 与 0 在 SQL 中相等;NaN 单独编码(避免与任何值相等) + if (Number.isNaN(n)) + return 'nNaN'; + return `n${Object.is(n, -0) ? 0 : n}`; + } + case 'boolean': return `b${value ? 1 : 0}`; + case 'bigint': return `i${String(value)}`; + case 'object': { + // 日期按时间戳比较;数组/对象按 JSON(键序由 JSON.stringify 决定, + // 对同构数据稳定;异构键序在上层已由 schema 约束) + if (value instanceof Date) + return `d${value.getTime()}`; + if (Array.isArray(value)) + return `a${JSON.stringify(value)}`; + return `o${JSON.stringify(value)}`; + } + default: return `x${String(value)}`; + } +} +/** + * SQL 比较:返回三值。 + * + * 与 JavaScript 运算符的关键差异: + * - 任一操作数为 NULL → UNKNOWN(而不是 false); + * - 非数值字符串与数值比较 → UNKNOWN(而不是 JS 的强制转换结果); + * - 未解析引用 → UNKNOWN(调用方据此转交上下文求值)。 + */ +function sqlCompare(a, b) { + const ord = sqlCompareOrder(a, b); + if (ord === null) + return SQL_LOGICAL.UNKNOWN; + return ord === 0 ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; +} +/** 相等比较(三值) */ +function sqlEquals(a, b) { + return sqlCompare(a, b); +} +/** + * 三路排序比较:返回 -1 / 0 / 1,无法比较(含 NULL、类型不可比)返回 null。 + * + * **这是本模块唯一的排序/比较原语** —— `sqlCompare`(相等)与所有有序比较 + * ($gt/$gte/$lt/$lte、ORDER BY)都必须建立在它之上。 + * + * 为什么要把"排序"与"相等"分开:初版实现里 `sqlCompare` 直接返回三值, + * 于是"a < b"与"a === b"都被编码成 TRUE,`$gte` 误把"小于"当成"大于等于" + * (实测 `WHERE n >= 2` 在 1..3 上返回 3 而不是 2 与 3)。 + * 排序是三路的(<, =, >),相等是二值的(=, ≠)—— 把前者硬塞进后者必然出错。 + */ +function sqlCompareOrder(a, b) { + if (isUnresolved(a) || isUnresolved(b)) + return null; + if (isSqlNull(a) || isSqlNull(b)) + return null; + // 数字 vs 数字 + if (typeof a === 'number' && typeof b === 'number') { + if (Number.isNaN(a) || Number.isNaN(b)) + return null; + if (a === b) + return 0; + return a < b ? -1 : 1; + } + // 布尔 vs 布尔 + if (typeof a === 'boolean' && typeof b === 'boolean') { + if (a === b) + return 0; + return a === false ? -1 : 1; + } + // 字符串 vs 字符串:字典序 + if (typeof a === 'string' && typeof b === 'string') { + if (a === b) + return 0; + return a < b ? -1 : 1; + } + // 日期 vs 日期 + if (a instanceof Date && b instanceof Date) { + const ta = a.getTime(); + const tb = b.getTime(); + if (Number.isNaN(ta) || Number.isNaN(tb)) + return null; + if (ta === tb) + return 0; + return ta < tb ? -1 : 1; + } + // 类型不同:本项目保持严格类型(不做静默强转),判定为不可比(null) + // —— 这样 `WHERE numCol = 'abc'` 不会意外命中,也不会因 `'5' = 5` 的 JS + // 行为产生跨引擎差异。唯一例外:数值与"纯数值字符串"按数值比较 + // (与既有「$in 列表含字符串」行为兼容)。 + const na = toNumericIfPossible(a); + const nb = toNumericIfPossible(b); + if (na !== null && nb !== null) { + if (na === nb) + return 0; + return na < nb ? -1 : 1; + } + return null; +} +/** 三值 AND */ +function sqlAnd(a, b) { + if (a === SQL_LOGICAL.FALSE || b === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (a === SQL_LOGICAL.UNKNOWN || b === SQL_LOGICAL.UNKNOWN) + return SQL_LOGICAL.UNKNOWN; + return SQL_LOGICAL.TRUE; +} +/** 三值 OR */ +function sqlOr(a, b) { + if (a === SQL_LOGICAL.TRUE || b === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (a === SQL_LOGICAL.UNKNOWN || b === SQL_LOGICAL.UNKNOWN) + return SQL_LOGICAL.UNKNOWN; + return SQL_LOGICAL.FALSE; +} +/** 三值 NOT(UNKNOWN 取反仍为 UNKNOWN) */ +function sqlNot(a) { + if (a === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.FALSE; + if (a === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.TRUE; + return SQL_LOGICAL.UNKNOWN; +} +/** + * 把值转为数值;无法安全转换时返回 null。 + * 只有 number 与"纯数值字符串"参与数值比较,避免 `'abc'` 之类被 Number() 变成 NaN。 + */ +function toNumericIfPossible(value) { + if (typeof value === 'number') + return Number.isNaN(value) ? null : value; + if (typeof value === 'boolean') + return value ? 1 : 0; + if (typeof value === 'string') { + const trimmed = value.trim(); + if (trimmed === '') + return null; + const n = Number(trimmed); + return Number.isNaN(n) ? null : n; + } + return null; +} +/** + * SQL `IN` 列表求值(三值)。 + * + * 标准语义:`x IN (a, b, c)` 等价于 `x = a OR x = b OR x = c`。 + * 因此: + * - 命中任一 → TRUE; + * - 都未命中但列表含 NULL(或 x 为 NULL)→ UNKNOWN; + * - 都未命中且列表无 NULL 且 x 非 NULL → FALSE。 + */ +function sqlIn(value, list) { + if (isUnresolved(value)) + return SQL_LOGICAL.UNKNOWN; + let sawUnknown = false; + for (const item of list) { + const t = sqlEquals(value, item); + if (t === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (t === SQL_LOGICAL.UNKNOWN) + sawUnknown = true; + } + return sawUnknown ? SQL_LOGICAL.UNKNOWN : SQL_LOGICAL.FALSE; +} + +/** + * metona-sqlark Shared WHERE Matcher —— 统一的条件求值器 * @module query/where-matcher * - * MemoryEngine / IndexedDBEngine / QueryExecutor 共享此模块, - * 消除 220+ 行重复代码,统一 $and/$or/$not/$col 行为。 + * ============================================================================ + * v0.8.0 根治:为什么这里只剩**一个**递归求值器(PLAN-v0.7.5.md 根因 1/7、PB-2) + * ============================================================================ + * 历史上有两套并存的实现: + * - `matchWhere` —— 布尔版(自己的 `$and/$or/$not` 分支 + `matchField`); + * - 三值求值 —— 为 UNKNOWN 传播而新增。 + * 两者对**字段级** `$or` / `$not` 的处理不同,于是同一条 SQL 的语义取决于调用点: + * - `{ s: { $not: { $like: 'x' } } }` 经布尔取反会把 NULL 行判真; + * - `{ n: { $or: [...] } }`(`NOT BETWEEN` 生成)经布尔分支在 NULL 行上判假; + * - 更严重的是字段级 `$or` 递归回了"**where 子句级**"求值器: + * `{ n: { $or: [ { $lt: 1 }, { $gt: 2 } ] } }` 里的 `{ $lt: 1 }` 被当成 + * "查询字段 `$lt`",于是每一行都求值 UNKNOWN → `NOT BETWEEN` 恒空集。 + * + * 现在只有一条代码路径:**一个递归求值器**,同时理解 where 子句级(键是列名或 + * 逻辑连接词)与操作符级(键是 `$gt` 之类)。区别由**位置**参数承载, + * 而不是由另一个函数承载: + * - `evalWhere(ctx, where)` —— where 子句(`$and`/`$or` 子项是 where 子句) + * - `evalOperatorObject(ctx, ...)` —— 操作符对象(`$and`/`$or` 子项是操作符对象) + * 因此 `$or` 的两种含义都在同一个函数里显式分派,不可能再漂移。 + * + * `matchWhere` 保留为对外入口,语义定义为"是否保留该行" = 三值结果恰为 TRUE。 */ // --------------------------------------------------------------------------- // LIKE 正则缓存 @@ -56,146 +654,318 @@ function compileLikeRegex(pattern) { return regex; } // --------------------------------------------------------------------------- -// WHERE 匹配(顶层入口) +// WHERE 匹配(对外入口) // --------------------------------------------------------------------------- +/** + * 匹配完整 WHERE 条件(布尔口径:仅 TRUE 保留该行)。 + * + * @param row 当前数据行 + * @param where WHERE 条件对象 + * @param options `$col` 是否启用列引用解析 + */ +function matchWhere(row, where, options = {}) { + return evalWhere({ row, options }, where) === SQL_LOGICAL.TRUE; +} /** * v0.7.4: 检测 WHERE 中未解析的子查询/列引用标记($subquery / $col / $exists)。 + * * QueryBuilder 等直通引擎的写路径(update/delete)不经 Executor 解析子查询, - * 引擎层 matchWhere 对未解析标记恒 false → 静默影响 0 行。 - * 写路径预检阶段显式拒绝;SELECT 路径由 Executor 解析(不调用本函数)。 + * 写路径预检阶段据此显式拒绝(否则这些标记在引擎层恒 UNKNOWN → 静默影响 0 行)。 */ function containsUnresolvedSubqueries(where) { if (!where) return false; for (const [k, v] of Object.entries(where)) { - if (k === '$and' || k === '$or') { - if (v.some((sub) => containsUnresolvedSubqueries(sub))) - return true; - continue; - } - if (k === '$not') { - if (containsUnresolvedSubqueries(v)) + if (isLogicalKey(k)) { + const subs = (Array.isArray(v) ? v : [v]); + if (subs.some((sub) => containsUnresolvedSubqueries(sub))) return true; continue; } if (k === '$exists') return true; - if (typeof v === 'object' && v !== null && !Array.isArray(v)) { - for (const [, operand] of Object.entries(v)) { - if (typeof operand === 'object' && operand !== null) { - const ops = operand; - if ('$subquery' in ops || '$col' in ops) - return true; - } - } - } + if (isPlainObject(v) && operatorObjectHasUnresolved(v)) + return true; } return false; } -/** - * 匹配完整 WHERE 条件 - * @param row 当前数据行 - * @param where WHERE 条件对象 - * @param options.$col 是否启用 $col 列引用解析 - */ -function matchWhere(row, where, options = {}) { - for (const [field, condition] of Object.entries(where)) { - // 顶层 $caseResult(v0.3.2):由 Executor 对 CASE WHEN 表达式逐行求值后产生 - if (field === '$caseResult') { - if (condition !== true) - return false; - continue; - } - // 顶层 $exists(v0.3.0):由 Executor.resolveSubqueries 解析为 boolean - if (field === '$exists') { - if (condition !== true) - return false; - continue; - } - // 顶层 $and - if (field === '$and') { - const subs = condition; - if (!subs.every((sub) => matchWhere(row, sub, options))) - return false; - continue; - } - // 顶层 $or - if (field === '$or') { - const subs = condition; - if (!subs.some((sub) => matchWhere(row, sub, options))) - return false; - continue; - } - // 顶层 $not(v0.3.2 修复:NOT (expr) 生成的 { $not: inner }) - if (field === '$not') { - if (matchWhere(row, condition, options)) - return false; - continue; - } - if (!matchField(row[field], condition, row, options)) - return false; - } - return true; -} -// --------------------------------------------------------------------------- -// 字段匹配 -// --------------------------------------------------------------------------- -function matchField(value, condition, row, options) { - // 嵌套 $and - if (typeof condition === 'object' && condition !== null && '$and' in condition) { - const subs = condition.$and; - return subs.every((sub) => matchWhere(row, sub, options)); - } - // 嵌套 $or - if (typeof condition === 'object' && condition !== null && '$or' in condition) { - const subs = condition.$or; - return subs.some((sub) => matchWhere(row, sub, options)); - } - // $not - if (typeof condition === 'object' && condition !== null && '$not' in condition) { - return !matchField(value, condition.$not, row, options); - } - // 简单值 => $eq - if (typeof condition !== 'object' || condition === null || Array.isArray(condition)) { - return value === condition; - } - const ops = condition; - // $col 简写: { $col: name } === { $eq: { $col: name } }(仅 JOIN ON 场景) - if (options.$col && '$col' in ops && Object.keys(ops).length === 1) { - return value === row[ops.$col]; - } - // 遍历操作符 +/** 递归检测操作符对象里是否存在未解析引用(含 `$and`/`$or`/`$not` 内部) */ +function operatorObjectHasUnresolved(ops) { for (const [op, operand] of Object.entries(ops)) { - let actualOperand = operand; - // $col 列引用解析 - if (options.$col && typeof operand === 'object' && operand !== null && '$col' in operand) { - actualOperand = row[operand.$col]; + if (op === '$and' || op === '$or') { + const subs = (Array.isArray(operand) ? operand : [operand]); + if (subs.some((sub) => isPlainObject(sub) && operatorObjectHasUnresolved(sub))) + return true; + continue; } - if (!matchOperator(value, op, actualOperand)) - return false; + if (op === '$not') { + if (isPlainObject(operand) && operatorObjectHasUnresolved(operand)) + return true; + continue; + } + if (op === '$subquery' || op === '$col') + return true; + if (isPlainObject(operand) && ('$subquery' in operand || '$col' in operand)) + return true; } - return true; + return false; } // --------------------------------------------------------------------------- -// 操作符匹配 +// 统一递归求值器 // --------------------------------------------------------------------------- -function matchOperator(value, op, operand) { +/** 逻辑连接词(where 子句级) */ +function isLogicalKey(key) { + return key === '$and' || key === '$or' || key === '$not'; +} +/** 纯对象(非 null、非数组) */ +function isPlainObject(value) { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} +/** + * 求值一个 WHERE 子句(where 级)。 + * + * 顶层键要么是逻辑连接词,要么是列名: + * - `$and: [where...]` / `$or: [where...]` —— 子项是**完整 where 子句**; + * - `$not: where` —— 子项是完整 where 子句; + * - `$exists: boolean` —— 关联 EXISTS 解析结果标记; + * - `$caseResult` —— CASE WHEN 解析结果标记; + * - 其余键 = 列名,其值是**操作符对象**或裸值(裸值等价 `$eq`)。 + */ +function evalWhere(ctx, where) { + let acc = SQL_LOGICAL.TRUE; + for (const [key, condition] of Object.entries(where)) { + let one; + if (key === '$and') { + one = evalWhereLogical(ctx, condition, 'and'); + } + else if (key === '$or') { + one = evalWhereLogical(ctx, condition, 'or'); + } + else if (key === '$not') { + one = sqlNot(evalWhere(ctx, condition)); + } + else if (key === '$exists' || key === '$caseResult') { + one = condition === true ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + } + else { + one = evalValueCondition(ctx, resolveField(ctx, key), condition); + } + acc = sqlAnd(acc, one); + if (acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + } + return acc; +} +/** `$and` / `$or`(where 级):子项是完整 where 子句 */ +function evalWhereLogical(ctx, condition, kind) { + const subs = (Array.isArray(condition) ? condition : [condition]); + let acc = kind === 'and' ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + for (const sub of subs) { + const one = evalWhere(ctx, sub); + acc = kind === 'and' ? sqlAnd(acc, one) : sqlOr(acc, one); + // FALSE 在 AND 下、TRUE 在 OR 下都无法被后续子项改变 + if (kind === 'and' && acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (kind === 'or' && acc === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + } + return acc; +} +/** + * 取字段值。 + * + * 行里的键可能是 `t.id` 形式(JOIN / 子查询合并行),而 WHERE 键可能写作 + * `id`。既有行为是"精确命中优先,否则回退到唯一的后缀匹配";此处保持一致, + * 但**不再**像旧实现那样在多个别名同名字段间静默取第一个 —— 歧义由 Executor + * 的列解析阶段(`bindColumnRefs` / `assertProjectionColumnsExist`)负责报错。 + */ +function resolveField(ctx, field) { + if (field in ctx.row) + return ctx.row[field]; + let found = UNRESOLVED; + let hits = 0; + for (const key of Object.keys(ctx.row)) { + if (key.endsWith(`.${field}`)) { + found = ctx.row[key]; + hits += 1; + } + } + if (hits === 1) + return found; + if (hits > 1) + return UNRESOLVED; + return UNRESOLVED; +} +/** + * 求值"某个值是否满足条件"—— 字段条件与嵌套操作数条件共用的核心。 + * + * 位置无关性是本模块的关键:`{ $or: [ { $gt: 1 } ] }` 无论出现在字段位置 + * 还是顶层(历史单元测试的写法),子项都按**操作数条件**求值 —— 因为判别式 + * 相同:键以 `$` 开头且不是逻辑连接词,就是操作符;否则是列名。 + */ +function evalValueCondition(ctx, value, condition) { + if (!isPlainObject(condition)) { + // 裸值 = `$eq`;数组 = `$in` 列表(与既有 Mongo 风格 WHERE 兼容) + if (Array.isArray(condition)) + return sqlIn(value, condition); + return compareEquality(value, condition); + } + return evalOperatorObject(ctx, value, condition); +} +/** + * 求值一个操作符对象(`{ $gt: 1 }` / `{ $and: [...] }` / `{ $col: 'y' }` …)。 + * + * `$and` / `$or` 的每个子项按"操作数条件"递归 —— 这正是 `NOT BETWEEN` + * 生成的 `{ n: { $or: [ { $lt: 1 }, { $gt: 2 } ] } }` 能正确求值的原因。 + * 若子项实际是**完整 where 子句**(键是列名),则转交 `evalWhere`, + * 与当前行合并后求值(`$col` 上下文因此仍然有效)。 + */ +function evalOperatorObject(ctx, value, ops) { + // 纯列引用:{ $col: 'y' } = 与当前行的 y 列比较 + const keys = Object.keys(ops); + if (keys.length === 1 && keys[0] === '$col' && ctx.options.$col) { + return compareEquality(value, resolveField(ctx, String(ops.$col))); + } + let acc = SQL_LOGICAL.TRUE; + for (const [op, operand] of Object.entries(ops)) { + let one; + if (op === '$and') { + one = evalOperatorLogical(ctx, value, operand, 'and'); + } + else if (op === '$or') { + one = evalOperatorLogical(ctx, value, operand, 'or'); + } + else if (op === '$not') { + one = sqlNot(evalOperandSlot(ctx, value, operand)); + } + else { + one = evalOperator(ctx, value, op, operand); + } + acc = sqlAnd(acc, one); + if (acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + } + return acc; +} +/** `$and` / `$or`(操作符级):子项是操作数条件(操作符对象或裸值) */ +function evalOperatorLogical(ctx, value, condition, kind) { + const items = Array.isArray(condition) ? condition : [condition]; + let acc = kind === 'and' ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + for (const item of items) { + const one = evalOperandSlot(ctx, value, item); + acc = kind === 'and' ? sqlAnd(acc, one) : sqlOr(acc, one); + if (kind === 'and' && acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (kind === 'or' && acc === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + } + return acc; +} +/** + * 单个嵌套子项(`$and`/`$or`/`$not` 的操作数)的求值。 + * + * 两种合法形态,按**键的形状**判别,不做猜测性兜底: + * - 含非 `$` 开头(或逻辑连接词)的键 → 完整 where 子句,交由 `evalWhere`; + * - 其余 → 操作符对象,交由 `evalOperatorObject`。 + * + * 注意 `$not` 的子项**不会**走到这里被判为 where 子句:`evalOperatorObject` + * 对 `$not` 直接调用本函数,而 `{ $gte: 1 }` 全部键以 `$` 开头 → 操作符对象 ✓。 + * 若调用方写成 `{ $not: { n: { $gte: 1 } } }`(字段级 `$not` 包了 where 子句), + * 则按 where 子句解释 —— 这正是 `evalNestedSlot` 的判别分支,语义为 + * "NOT (该行满足 n >= 1)",与顶层 `$not` 一致。 + */ +function evalOperandSlot(ctx, value, item) { + if (!isPlainObject(item)) + return evalValueCondition(ctx, value, item); + const isWhereClause = Object.keys(item).some((k) => !k.startsWith('$') || isLogicalKey(k) || k === '$exists' || k === '$caseResult'); + return isWhereClause ? evalWhere(ctx, item) : evalOperatorObject(ctx, value, item); +} +/** + * 操作符求值(三值语义)。 + * + * - 比较类操作数含 NULL → UNKNOWN(此前 `$eq: null` 命中 NULL 行、`$ne: null` + * 命中所有非 NULL 行,两者都不符合 SQL 标准); + * - `$in` / `$nin` 用 `sqlIn` 的列表语义(列表含 NULL → 未命中时为 UNKNOWN); + * - `$like` 对 NULL 操作数返回 UNKNOWN(`String(null)` 会得到 "null" 去匹配, + * 属于静默错值); + * - `$isNull` / `$isNotNull` 是**谓词**,直接对 NULL 求值,不走比较。 + */ +function evalOperator(ctx, value, op, operand) { + const actual = resolveOperand(ctx, operand); switch (op) { - case '$eq': return value === operand; - case '$ne': return value !== operand; - case '$gt': return value > operand; - case '$gte': return value >= operand; - case '$lt': return value < operand; - case '$lte': return value <= operand; - case '$in': return Array.isArray(operand) && operand.includes(value); - case '$nin': return Array.isArray(operand) && !operand.includes(value); - case '$like': return compileLikeRegex(String(operand)).test(String(value)); + case '$eq': return compareEquality(value, actual); + case '$ne': return sqlNot(compareEquality(value, actual)); + case '$gt': return compareOrdered(value, actual, (c) => c > 0); + case '$gte': return compareOrdered(value, actual, (c) => c >= 0); + case '$lt': return compareOrdered(value, actual, (c) => c < 0); + case '$lte': return compareOrdered(value, actual, (c) => c <= 0); + case '$in': return Array.isArray(actual) ? sqlIn(value, actual) : SQL_LOGICAL.FALSE; + case '$nin': return Array.isArray(actual) ? sqlNot(sqlIn(value, actual)) : SQL_LOGICAL.FALSE; + case '$like': { + if (isSqlNull(value) || isSqlNull(actual) || isUnresolved(value) || isUnresolved(actual)) { + return SQL_LOGICAL.UNKNOWN; + } + return compileLikeRegex(String(actual)).test(String(value)) + ? SQL_LOGICAL.TRUE + : SQL_LOGICAL.FALSE; + } + // 谓词(不参与三值比较) + case '$isNull': return isSqlNull(value) ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + case '$isNotNull': return isSqlNull(value) ? SQL_LOGICAL.FALSE : SQL_LOGICAL.TRUE; + // `$col` 出现在操作符位置但未启用列上下文 → 无法求值 + case '$col': return ctx.options.$col + ? compareEquality(value, resolveField(ctx, String(operand))) + : SQL_LOGICAL.UNKNOWN; + // `$subquery` 必须由 Executor 先行解析(`resolveSubqueries`)。 + // 走到这里说明调用方跳过了 Executor:返回 UNKNOWN 让该行被排除, + // 而不是静默当 NULL 比较。 + case '$subquery': return SQL_LOGICAL.UNKNOWN; // v0.7.2: 未知操作符显式报错 —— 此前静默返回 true(所有行匹配), // 拼错操作符(如 $betwen)时过滤形同虚设且无任何提示 default: throw new DatabaseError(`Unknown where operator "${op}"`, 'QUERY_ERROR'); } } +/** + * 解析操作数槽位中的引用标记。 + * + * - `{ $col: 'y' }` → 当前行的 y 列值(仅在 `options.$col` 启用时); + * - `{ $subquery: [...] }` → UNRESOLVED,交由上层识别为"未解析"。 + * + * 这两种形态都是**对象**,而非"恰好等于某个值",所以必须在这里显式解引用, + * 否则 `sqlCompare(5, { $col: 'y' })` 会按不可比返回 UNKNOWN —— 恰好也是 + * UNKNOWN,但那会掩盖"调用方忘了传 `$col`"这一真正的配置错误。 + */ +function resolveOperand(ctx, operand) { + if (!isPlainObject(operand)) + return operand; + const keys = Object.keys(operand); + if (keys.length !== 1) + return operand; + if (keys[0] === '$col') { + return ctx.options.$col ? resolveField(ctx, String(operand.$col)) : UNRESOLVED; + } + if (keys[0] === '$subquery') + return UNRESOLVED; + return operand; +} +/** 相等比较(三值) */ +function compareEquality(value, operand) { + const truth = sqlCompare(value, operand); + if (truth === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (isSqlNull(value) || isSqlNull(operand) || isUnresolved(value) || isUnresolved(operand)) { + return SQL_LOGICAL.UNKNOWN; + } + return SQL_LOGICAL.FALSE; +} +/** 有序比较(三值):任一操作数 NULL/未解析/不可比 → UNKNOWN */ +function compareOrdered(value, operand, accept) { + const ord = sqlCompareOrder(value, operand); + if (ord === null) + return SQL_LOGICAL.UNKNOWN; + return accept(ord) ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; +} // --------------------------------------------------------------------------- // 排序 // --------------------------------------------------------------------------- @@ -252,6 +1022,218 @@ function projectColumns(row, columns) { return projected; } +/** + * metona-sqlark 统一行校验 —— 存储写入的**唯一**验证与规范化入口(v0.8.0) + * @module table/validation + * + * ============================================================================ + * 为什么必须合并(PLAN-v0.7.5.md 根因 1:关系语义在引擎间重复实现) + * ============================================================================ + * 修复前项目里存在**三份**行校验实现,覆盖范围各不相同: + * + * | 位置 | 类型检查 | required | PK 非空 | maxLength | min/max | 未知列 | + * |---|---|---|---|---|---|---| + * | `engine/memory.ts#validateRow`(disk/hybrid 继承) | ✓ | ✓ | ✓ | ✗ | ✗ | 静默丢弃 | + * | `engine/aria/index.ts#validateRow` → `checkFieldType` | ✓ | ✓ | ✓ | ✓ | ✓ | 静默丢弃 | + * | `table/schema.ts#validateRow` | ✓ | ✓ | ✓ | ✓ | ✓ | 静默丢弃 | + * + * 于是**同一份 schema、同一条 INSERT** 在 Aria 上抛 `maxLength` 错误,在 + * memory/disk/hybrid 上静默写入超长值(缺陷 A12)—— 用户的约束是否生效 + * 取决于他选了哪个引擎,且没有任何提示。 + * + * 更糟的是"未知列":`INSERT INTO t (id, nope) VALUES ('1', 2)` 在四个引擎上 + * 都**静默丢弃 `nope`**、插入成功。用户以为写进去了,`SELECT nope` 又报 + * COLUMN_NOT_FOUND —— 写路径与读路径对同一列名给出相反结论(缺陷 A17)。 + * + * 本模块把校验收敛成**一个定义**(`compileValidator`),所有引擎与 QueryBuilder + * 都从它取校验器: + * - 约束覆盖面是"并集",不可能再出现"Aria 报错、memory 不报"; + * - 未知列变成**显式错误**(`COLUMN_NOT_FOUND`,与读路径同一错误码); + * - 校验与**规范化**在同一处完成(`__proto__` 防污染、`undefined` 跳过、 + * `default` 填充),引擎只负责存储,不再各自解释 schema。 + * + * ============================================================================ + * 三种载荷形态,为什么不能合成一个函数 + * ============================================================================ + * - `validateRow` INSERT 语义:`default` 生效、缺列合法、`required` 按最终值判; + * - `validatePartial` UPDATE 语义:**只校验出现的列**(`{ a: undefined }` 表示 + * "不更新 a",不能被 required/min/max 判失败); + * - `assertNoUnknownColumns` 独立可复用的"列名存在性"检查(写路径预检)。 + * + * 把它们混成一个带 options 的函数会让"required 是否生效"取决于调用方参数, + * 从而重新引入跨路径差异 —— 本模块刻意保持三个显式入口。 + */ +// --------------------------------------------------------------------------- +// 编译 +// --------------------------------------------------------------------------- +/** + * 把 schema 编译成可复用的行校验器。 + * + * 为什么"编译"而不是每次都遍历 schema:校验处于每次 INSERT/UPDATE 的热路径上, + * 引擎在一次批量写入里会对成百上千行调用它。预先把列定义拆成列表 + 集合, + * 既避免重复的 `Object.entries`,也让"哪些键允许出现"成为可哈希的集合判断。 + * **不缓存**编译结果:schema 可被 `alterTable` 原地修改,长期缓存会用到过期列定义。 + */ +function compileValidator(schema) { + const table = schema.name; + const entries = Object.entries(schema.columns); + const columnNames = new Set(entries.map(([name]) => name)); + function assertNoUnknownColumns(row, knownColumns) { + const allowed = knownColumns ? new Set(knownColumns) : columnNames; + // 先收集未知列再报错:一次列出全部,避免用户"改一个报一个" + const unknown = []; + for (const key of Object.keys(row)) { + if (key === '__proto__') + continue; // 由 sanitize 阶段统一拒绝(消息不同) + if (!allowed.has(key)) + unknown.push(key); + } + if (unknown.length > 0) { + throw new DatabaseError(`Unknown column${unknown.length > 1 ? 's' : ''} ${unknown + .map((c) => `"${c}"`) + .join(', ')} in table "${table}". Known columns: ${[...allowed].join(', ')}`, 'COLUMN_NOT_FOUND'); + } + } + function validateRow(row, knownColumns) { + assertNoUnknownColumns(row, knownColumns); + const validated = {}; + for (const [colName, colDef] of entries) { + // INSERT 语义:缺列时 default 生效 + let value = row[colName]; + if (value === undefined && colDef.default !== undefined) + value = colDef.default; + assertNotNullConstraints(table, colName, colDef, value); + if (value !== undefined && value !== null) { + assertJsonSafeNumber(table, colName, value); + checkFieldType(table, colName, colDef.type, value, colDef); + } + // v0.8.0(B-1):缺列且无 default → 显式写入 NULL,**不能省略键**。 + // + // 此前 `if (value !== undefined) validated[colName] = value;` 会把这个列整个 + // 从行里删掉,于是存储行只含"有值的列",行形状取决于写入方式: + // INSERT INTO t (id, g) VALUES ('9','z') -- 行里没有 n 键 + // SELECT id, g, n FROM t WHERE id = '9' -- 抛 COLUMN_NOT_FOUND: n + // 而 `SELECT * FROM t` 却能正常返回(少一列而已)—— 同一行"有没有 n 列" + // 在读路径上给出相反结论。SQL 语义中"未提供值"就是 NULL,故统一补 null: + // 行始终包含全部 schema 列,投影/排序/三值比较才有统一前提。 + validated[colName] = value === undefined ? null : value; + } + return validated; + } + function validatePartial(row) { + const values = {}; + const unknown = []; + for (const [colName, value] of Object.entries(row)) { + if (colName === '__proto__') { + throw new DatabaseError('Column name "__proto__" is not allowed', 'VALIDATION_ERROR'); + } + const colDef = schema.columns[colName]; + if (!colDef) { + unknown.push(colName); + continue; + } + // UPDATE 语义:`undefined` 已由 stripUndefinedUpdates 过滤; + // 这里再挡一次,保证"未提供的列"绝不会被判 required 失败。 + if (value === undefined) + continue; + assertNotNullConstraints(table, colName, colDef, value); + if (value !== null) { + assertJsonSafeNumber(table, colName, value); + checkFieldType(table, colName, colDef.type, value, colDef); + } + values[colName] = value; + } + return { values, unknown }; + } + return { table, columns: columnNames, validateRow, validatePartial }; +} +// --------------------------------------------------------------------------- +// 共享约束 +// --------------------------------------------------------------------------- +/** + * 检查字段类型(含约束校验)。 + * + * v0.8.0(B-1):在 `checkFieldType`(table/schema.ts)之外**额外**拒绝 + * `NaN` 与 `±Infinity`。为什么必须有这一层: + * - JSON 无法表示它们 —— `JSON.stringify({ v: NaN })` 得到 `{"v":null}`, + * 于是 `INSERT ... VALUES (NaN)` 在内存引擎里是 NaN,落盘再读回来变成 null; + * 同一个库在"写后立即查"与"重启后查"得到不同结果,且没有任何提示。 + * - KVStore / Aria 的持久化路径都是 JSON,因此这是**所有**磁盘引擎的共性问题。 + * - 用户能构造出 NaN:`Number('abc')`、`0/0`、`parseFloat('x')` 等, + * 经由参数绑定进入写入路径。 + * 显式拒绝(`VALIDATION_ERROR`)让问题在写入时暴露,而不是变成读出来的 null。 + */ +function assertJsonSafeNumber(table, colName, value) { + if (typeof value !== 'number') + return; + if (Number.isFinite(value)) + return; + throw new DatabaseError(`Column "${colName}" in table "${table}" cannot store ${Number.isNaN(value) ? 'NaN' : String(value)}:` + + ' it is not representable in JSON and would be silently read back as null', 'VALIDATION_ERROR'); +} +/** + * NOT NULL 类约束。 + * + * 两条规则合并在一个函数里按顺序判断,是为了让错误消息稳定: + * - `required` → "is required"(用户声明的业务约束); + * - `primaryKey` → 隐含 NOT NULL(SQL 语义)。 + * 在此之前两者分散在两个引擎的 `validateRow` 里各写一遍,消息略有差异 + * (一个有表名后缀一个没有),依赖消息文本的测试只能各测各的引擎。 + */ +function assertNotNullConstraints(table, colName, colDef, value) { + if (colDef.required && (value === undefined || value === null)) { + throw new DatabaseError(`Column "${colName}" is required in table "${table}"`, 'VALIDATION_ERROR'); + } + // v0.7.4:主键列强制非空 —— 此前 null/undefined 主键被 String() 化为 + // "null"/"undefined" 静默入库,行再也无法按主键取回。 + if (colDef.primaryKey && (value === undefined || value === null)) { + throw new DatabaseError(`Primary key column "${colName}" in table "${table}" cannot be null or undefined`, 'VALIDATION_ERROR'); + } +} +// --------------------------------------------------------------------------- +// 字段类型与约束检查(唯一实现) +// --------------------------------------------------------------------------- +/** 检查字段类型(含约束校验) */ +function checkFieldType(tableName, colName, type, value, colDef) { + const jsType = typeof value; + switch (type) { + case 'string': + if (jsType !== 'string') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects string, got ${jsType}`, 'TYPE_ERROR'); + } + if (colDef?.maxLength !== undefined && value.length > colDef.maxLength) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" exceeds max length ${colDef.maxLength}`, 'VALIDATION_ERROR'); + } + break; + case 'number': + if (jsType !== 'number') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects number, got ${jsType}`, 'TYPE_ERROR'); + } + if (colDef?.min !== undefined && value < colDef.min) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} below minimum ${colDef.min}`, 'VALIDATION_ERROR'); + } + if (colDef?.max !== undefined && value > colDef.max) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} above maximum ${colDef.max}`, 'VALIDATION_ERROR'); + } + break; + case 'boolean': + if (jsType !== 'boolean') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); + } + break; + case 'date': + if (jsType !== 'string' || isNaN(Date.parse(value))) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects valid date string, got ${typeof value}`, 'TYPE_ERROR'); + } + break; + case 'json': + if (jsType !== 'object') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); + } + break; + } +} + /** * metona-sqlark Schema — 表结构定义与校验 * @module table/schema @@ -311,46 +1293,6 @@ function stripUndefinedUpdates(updates) { } return clean; } -/** 检查字段类型(含约束校验) */ -function checkFieldType(tableName, colName, type, value, colDef) { - const jsType = typeof value; - switch (type) { - case 'string': - if (jsType !== 'string') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects string, got ${jsType}`, 'TYPE_ERROR'); - } - if (colDef?.maxLength !== undefined && value.length > colDef.maxLength) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" exceeds max length ${colDef.maxLength}`, 'VALIDATION_ERROR'); - } - break; - case 'number': - if (jsType !== 'number') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects number, got ${jsType}`, 'TYPE_ERROR'); - } - if (colDef?.min !== undefined && value < colDef.min) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} below minimum ${colDef.min}`, 'VALIDATION_ERROR'); - } - if (colDef?.max !== undefined && value > colDef.max) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} above maximum ${colDef.max}`, 'VALIDATION_ERROR'); - } - break; - case 'boolean': - if (jsType !== 'boolean') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); - } - break; - case 'date': - if (jsType !== 'string' || isNaN(Date.parse(value))) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects valid date string, got ${typeof value}`, 'TYPE_ERROR'); - } - break; - case 'json': - if (jsType !== 'object') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); - } - break; - } -} /** 将 AST 列定义转换为 ColumnDef */ function astColumnToColumnDef(astCol) { return { @@ -476,6 +1418,53 @@ class MemoryEngine { throw new DatabaseError(`Column "${column.name}" already exists in table "${tableName}"`, 'COLUMN_EXISTS'); } schema.columns[column.name] = column; + // v0.8.0 根治:ALTER ADD 必须建立二级索引桶。 + // + // 此前只写 schema.columns 而不建桶,而唯一性预检完全依赖索引桶 + // (`tableIndexes.get(colName)` 缺失即整段跳过)—— 于是 + // `ALTER TABLE t ADD COLUMN email STRING UNIQUE` 之后插入重复 email + // **不会报错**;close/reopen 时 createTable 依 schema 建桶、回灌第 2 行 + // 触发 UNIQUE_VIOLATION 而异常被引擎 open 路径吞掉 → **行静默消失**。 + if (column.index || column.unique) { + if (!this.indexes.has(tableName)) + this.indexes.set(tableName, new Map()); + const tableIndexes = this.indexes.get(tableName); + if (!tableIndexes.has(column.name)) + tableIndexes.set(column.name, new Map()); + // 已存在行:先校验存量唯一性(重复则回滚本次 ALTER),再回填索引桶 + const colIndex = tableIndexes.get(column.name); + const table = this.tables.get(tableName); + const seen = new Set(); + for (const [pk, row] of table) { + const value = row[column.name]; + if (value === null || value === undefined) + continue; // null 不受唯一约束 + if (column.unique && seen.has(value)) { + tableIndexes.delete(column.name); + delete schema.columns[column.name]; + throw new DatabaseError(`Duplicate value "${String(value)}" for UNIQUE column "${column.name}" in table "${tableName}"`, 'UNIQUE_VIOLATION'); + } + seen.add(value); + let pks = colIndex.get(value); + if (!pks) { + pks = new Set(); + colIndex.set(value, pks); + } + pks.add(pk); + } + } + // v0.8.0(B-1):ADD 列在**已有行**上物化为 NULL。 + // + // 行校验契约(table/validation.ts)保证"行含全部 schema 列",若 ALTER ADD + // 不补齐,新列在旧行上就是**键不存在**:内存里 `{id,name}`、而同一行经 + // 落盘再读回(KVStore/Aria 的恢复路径会走 validateRow)变成 + // `{id,name,phone:null}` —— 同一行的形状取决于"是否重启过"。 + // 显式物化后,内存视图与持久化视图一致。 + const addTable = this.tables.get(tableName); + for (const row of addTable.values()) { + if (!(column.name in row)) + row[column.name] = null; + } return; } if (!schema.columns[column.name]) { @@ -532,10 +1521,12 @@ class MemoryEngine { } /** v0.7.3: 按主键取已验证行(KVStoreEngine 持久化 validated 行用,含 default/类型归一) */ getRow(tableName, pkValue) { + // v0.8.0: 返回副本(调用方用于持久化,不得持有内部引用) const table = this.tables.get(tableName); if (!table) return null; - return table.get(pkValue) ?? null; + const row = table.get(pkValue); + return row ? cloneRow(row) : null; } async find(tableName, query) { this.ensureTable(tableName); @@ -553,7 +1544,9 @@ class MemoryEngine { if (query.columns && query.columns.length > 0 && query.columns[0] !== '*') { results = results.map((row) => projectColumns(row, query.columns)); } - return results; + // v0.8.0: 返回副本 —— 此前直接交出内部行对象,调用方原地修改即改写存储 + // 并让索引与行失配(该行从此查不出来)。见 engine/interface.ts 的行所有权约定。 + return results.map((row) => cloneRow(row)); } /** v0.4.0: 流式查询 — 逐行回调(单次迭代,不物化结果数组) */ async findStream(tableName, query, onRow) { @@ -574,7 +1567,7 @@ class MemoryEngine { skipped++; continue; } - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); count++; if (count >= limit) break; @@ -588,11 +1581,16 @@ class MemoryEngine { const pkCol = this.getPrimaryKey(schema); // v0.7.2: undefined 值视为"不更新该列"(保留旧值),null 显式置空 const cleanUpdates = stripUndefinedUpdates(updates); - // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, - // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in UPDATE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 // v0.7.4: 未知列显式报错 —— 此前 SET nonexistent = ... 被静默写入存储行 // (validateRow 只遍历 schema 列,脏列残留在行内并随持久化落盘) for (const col of Object.keys(cleanUpdates)) { @@ -605,6 +1603,20 @@ class MemoryEngine { // → 无事务下语句级部分提交(数据半更新且调用方已收到错误)。 const planned = []; const batchUnique = new Map(); + /** + * v0.8.0 根治:批内新主键互查。 + * + * 此前阶段 1 只用 `table.has(newPk)` 与**语句执行前的表**比对,看不到同一语句内 + * 其它行即将写入的新主键。于是 `UPDATE t SET id = 'X'`(匹配 2 行)在阶段 2 + * 逐行 `table.set(newPk, ...)` 相互覆盖 —— 返回 affected=2,表中却只剩 1 行 + * (静默丢行)。INSERT 路径在 v0.7.3 已做批内 PK Set 互查,UPDATE 漏了。 + * + * 保守拒绝策略:同一语句内两行改到同一新主键必然互相覆盖,直接报错。 + * 注意这也会拒绝"两行互换主键"(A:x→y, B:y→x)这种最终状态合法的写法 —— + * 那属于需要基于最终状态判定的场景,宁可显式报错也不静默丢行 + * (与既有的"唯一值交换更新保守拒绝"语义一致)。 + */ + const batchNewPks = new Set(); // 阶段 1:全量预检(任何一行失败 → 整条语句不执行) for (const [pk, row] of table) { if (query.where && Object.keys(query.where).length > 0 && !matchWhere(row, query.where)) @@ -617,6 +1629,13 @@ class MemoryEngine { if (newPk !== pk && table.has(newPk)) { throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (cannot update key to existing value)`, 'DUPLICATE_KEY'); } + // v0.8.0: 批内互查 —— 同一语句内两行改到同一新主键 → 整体拒绝(不得静默覆盖) + if (newPk !== pk) { + if (batchNewPks.has(newPk)) { + throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (multiple rows in the same statement update to the same key)`, 'DUPLICATE_KEY'); + } + batchNewPks.add(newPk); + } planned.push({ pk, row, updated, newPk }); } // 阶段 1b:主键变更 RESTRICT 预检(引用表依赖行检查,任何修改前) @@ -760,11 +1779,21 @@ class MemoryEngine { continue; if (colDef.onUpdate !== 'CASCADE' && colDef.onUpdate !== 'SET NULL') continue; + // v0.8.0(B-1):级联写入也必须过统一校验。 + // + // 此前这里**直接赋值**绕过校验:`onUpdate: 'CASCADE'` 把新主键写入引用列时, + // 若该列有 maxLength / min / max 约束(新主键更长或超出范围), + // 约束被静默绕过 —— 与 A12 是同一类"校验只在部分写入路径生效"的问题。 + // SET NULL 到 required/非空列的检查由 checkUpdateRestrict 在任何修改前完成, + // 此处再校验可同时覆盖 maxLength/min/max 这类"具体值相关"的约束。 + const validator = this.rowValidator(refSchema); for (const [refPk, refRow] of refTableData) { if (String(refRow[colName]) !== oldPk) continue; + const nextValue = colDef.onUpdate === 'CASCADE' ? newPk : null; + const { values } = validator.validatePartial({ [colName]: nextValue }); this.removeIndexEntries(refTableName, refRow, refPk); - refRow[colName] = colDef.onUpdate === 'CASCADE' ? newPk : null; + refRow[colName] = values[colName]; this.updateIndexes(refTableName, refRow, refPk); } } @@ -772,11 +1801,16 @@ class MemoryEngine { } async delete(tableName, query) { this.ensureTable(tableName); - // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, - // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in DELETE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const table = this.tables.get(tableName); const toDelete = []; for (const [pk, row] of table) { @@ -1002,49 +2036,40 @@ class MemoryEngine { return Object.keys(schema.columns)[0]; } validateRow(schema, row) { - const validated = {}; - for (const [colName, colDef] of Object.entries(schema.columns)) { - let value = row[colName]; - if (value === undefined && colDef.default !== undefined) - value = colDef.default; - if (colDef.required && (value === undefined || value === null)) { - throw new DatabaseError(`Column "${colName}" is required in table "${schema.name}"`, 'VALIDATION_ERROR'); - } - // v0.7.4: 主键列强制非空(SQL 语义 PK 隐含 NOT NULL)—— - // 此前 null/undefined 主键被 String() 化为 "null"/"undefined" 静默入库 - if (colDef.primaryKey && (value === undefined || value === null)) { - throw new DatabaseError(`Primary key column "${colName}" in table "${schema.name}" cannot be null or undefined`, 'VALIDATION_ERROR'); - } - if (value !== undefined && value !== null) - this.checkType(colName, colDef.type, value); - if (value !== undefined) - validated[colName] = value; - } - return validated; + // v0.8.0(B-1):委托给**唯一**的行校验实现(table/validation.ts)。 + // + // 此前这里是第三份独立实现:只做类型检查,**没有** maxLength / min / max + // 约束(Aria 有)—— 于是同一份 schema、同一条 INSERT 是否报错取决于引擎 + //(缺陷 A12)。同时它对未知列静默丢弃(A17)。 + return this.rowValidator(schema).validateRow(row); } - checkType(colName, type, value) { - const jsType = typeof value; - switch (type) { - case 'string': - if (jsType !== 'string') - throw new DatabaseError(`Column "${colName}" expects string, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'number': - if (jsType !== 'number') - throw new DatabaseError(`Column "${colName}" expects number, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'boolean': - if (jsType !== 'boolean') - throw new DatabaseError(`Column "${colName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'date': - if (jsType !== 'string' || isNaN(Date.parse(value))) - throw new DatabaseError(`Column "${colName}" expects valid date`, 'TYPE_ERROR'); - break; - case 'json': - if (jsType !== 'object') - throw new DatabaseError(`Column "${colName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); - break; + /** + * 取该 schema 的行校验器(每次调用重新编译)。 + * + * 不缓存在引擎字段上:`alterTable` 会原地修改 schema 对象, + * 长期缓存会继续用过期列定义("加了列却仍被当未知列"这类难查问题)。 + * 编译本身只是 `Object.entries` + Set 构造,相对一次 INSERT 的索引维护可忽略。 + */ + rowValidator(schema) { + return compileValidator(schema); + } + /** + * v0.8.0(B-1):写入前置校验(见 `IStorageEngine.validatePayload` 契约)。 + * + * 引擎在 `insert` / `update` 内部**同样**会校验 —— 本方法只是让 Executor 与 + * QueryBuilder 能在"开始写入之前"拿到同一套判定结果,从而: + * - 多行 INSERT 的预检发生在任何副作用之前(错误信息带列名清单); + * - 直通路径与 SQL 路径不可能给出不同结论(同一个 `compileValidator`)。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureTable(tableName); + const schema = this.schemas.get(tableName); + const validator = this.rowValidator(schema); + for (const row of rows) { + if (mode === 'update') + validator.validatePartial(stripUndefinedUpdates(row)); + else + validator.validateRow(row); } } /** 索引查找 */ @@ -1087,6 +2112,15 @@ class MemoryEngine { // IS NULL 恒空(对齐 AriaEngine v0.6.2 修复) if (targetValue === null || targetValue === undefined) continue; + // v0.8.0 根治(与 AriaEngine 同步):**非原始值**(对象/数组)一律不走索引。 + // + // 索引键只存原始值,因此 colIndex.get({...}) 恒 undefined → 下面 `return []` + // 会短路全表扫描 → 结果静默为空。真实触发场景正是"未解析的操作数": + // { $eq: { $col: 'y' } } ← 列对列比较(t.x = t.y) + // { $in: { $subquery: ... } } ← 关联 IN 子查询 + // 它们本该由 executor 逐行求值,却先在这里被索引路径吞成空集。 + if (typeof targetValue === 'object') + continue; const colIndex = tableIndexes.get(col); if (colIndex) { const pks = colIndex.get(targetValue); @@ -1375,58 +2409,91 @@ class OPFSBackend { } } -/** - * KVStore SharedMemory Medium — 跨实例共享的内存介质 - * @module engine/kvstore/shared_memory_medium - * - * v0.6.0: 替代 fake-indexeddb 的测试/Node 环境介质。 - * 与 MemoryBackend 的区别:数据按库名存于全局注册表,close() 不清除 - * (模拟"磁盘持久化"语义——重新 open 同名库可读到上次写入的数据)。 - * - * 仅用于测试与 Node 环境;浏览器使用 OPFS 介质(KVStore 默认自动选择)。 - */ -/** 全局注册表:dbName → key → chunk 列表(跨实例共享,模拟持久化) */ +/** 全局注册表:dbName(+ 库 id)→ 共享存储(跨实例共享,模拟持久化) */ const registry = new Map(); +/** + * 库 id 计数器:用于 `clearRegistry()` 后让"同名但属于新会话"的库拿到 + * **新的** DbStore,而不是复用上一会话残留的对象引用。 + */ +let registryEpoch = 0; +/** 当前会话里 dbName → 本次会话的 DbStore(换代后失效) */ +let liveStores = new Map(); +function storeFor(name) { + const live = liveStores.get(name); + if (live && live.epoch === registryEpoch) + return live.store; + const existing = registry.get(name); + if (existing) { + // 同一会话内复用(多个 backend 实例共享同一份字节) + liveStores.set(name, { epoch: registryEpoch, store: existing }); + return existing; + } + const created = { chunks: new Map(), materialized: new Map() }; + registry.set(name, created); + liveStores.set(name, { epoch: registryEpoch, store: created }); + return created; +} class SharedMemoryBackend { constructor() { this.dbName = ''; - /** 存储:key → chunk 列表(append O(1),read 时一次性拼接缓存) */ - this.chunks = new Map(); - /** 惰性拼接缓存(read 后缓存,write/append 失效) */ - this.materialized = new Map(); + this.store = null; } - /** 清空全局注册表(测试隔离用) */ + /** + * 清空全局注册表(测试隔离用)。 + * + * 同时让"当前会话"失效:后续 open 会为同名库创建全新的存储 —— + * 否则 `clearRegistry()` 之后新建的实例可能仍指向上一用例的 DbStore + *(注册表被清空但对象引用还活在旧实例里),出现跨用例数据泄漏。 + */ static clearRegistry() { registry.clear(); + registryEpoch += 1; + liveStores = new Map(); } async open(name) { this.dbName = name; - if (!registry.has(name)) { - registry.set(name, new Map()); - } - // 从注册表恢复 chunks(持久化语义) - this.chunks = registry.get(name); - this.materialized = new Map(); + this.store = storeFor(name); } /** close 不清除数据(持久化语义:重开同名库数据仍在) */ async close() { - this.chunks = new Map(); - this.materialized = new Map(); + this.store = null; } isOpen() { - return this.dbName !== ''; + return this.dbName !== '' && this.store !== null; + } + /** + * 取当前共享存储。 + * + * v0.8.0:`close()` 之后**不再**惰性重新绑定到共享存储 —— 那会让 + * "close 后读不到数据"变成"close 后又读到了"(实测该行为被 + * `tests/production-abnormal.test.ts` 的 close 契约用例逮到)。 + * + * 正确语义(与既有契约一致,见该用例注释): + * - close 后读 → `null`(本实例已不持有数据); + * - close 后写/删/清空 → **不抛错**,但作用在游离内存上、**不持久化** + * - 跨实例持久化语义不受影响:另一个实例 open 同名库仍能读到 close 前的数据。 + */ + db() { + if (!this.store) { + // 游离存储:仅供 close 后的调用"安全落地",不进入注册表 + this.store = { chunks: new Map(), materialized: new Map() }; + } + return this.store; } async read(key) { - if (this.materialized.has(key)) - return this.materialized.get(key); - const list = this.chunks.get(key); - if (!list || list.length === 0) + const db = this.db(); + if (db.materialized.has(key)) + return db.materialized.get(key) ?? null; + const list = db.chunks.get(key); + if (!list || list.length === 0) { + db.materialized.set(key, null); return null; + } if (list.length === 1) { - this.materialized.set(key, list[0]); + db.materialized.set(key, list[0]); return list[0]; } - const total = list.reduce((s2, c) => s2 + c.byteLength, 0); + const total = list.reduce((sum, c) => sum + c.byteLength, 0); const combined = new Uint8Array(total); let off = 0; for (const c of list) { @@ -1434,50 +2501,56 @@ class SharedMemoryBackend { off += c.byteLength; } const buf = combined.buffer; - this.materialized.set(key, buf); + db.materialized.set(key, buf); return buf; } async write(key, data) { - this.chunks.set(key, [data]); - this.materialized.set(key, data); + const db = this.db(); + db.chunks.set(key, [data]); + db.materialized.set(key, data); } async append(key, data) { - // O(1) 追加:只记录 chunk,read 时惰性拼接 - const list = this.chunks.get(key); - if (list) { + // O(1) 追加:只记录 chunk,read 时惰性拼接。 + // 缓存按库共享,因此这里清掉的缓存对所有实例都生效 —— 这正是 + // "另一个实例的写入必须对自己可见"这一语义的实现点。 + const db = this.db(); + const list = db.chunks.get(key); + if (list) list.push(data); - } - else { - this.chunks.set(key, [data]); - } - this.materialized.delete(key); + else + db.chunks.set(key, [data]); + db.materialized.delete(key); } async writeMany(entries) { // 同步批量写入 = 原子(JS 单线程,无中间 await 点) + const db = this.db(); for (const [key, data] of Object.entries(entries)) { - this.chunks.set(key, [data]); - this.materialized.set(key, data); + db.chunks.set(key, [data]); + db.materialized.set(key, data); } } async delete(key) { - this.chunks.delete(key); - this.materialized.delete(key); + const db = this.db(); + db.chunks.delete(key); + db.materialized.set(key, null); } async deleteMany(keys) { + const db = this.db(); for (const key of keys) { - this.chunks.delete(key); - this.materialized.delete(key); + db.chunks.delete(key); + db.materialized.set(key, null); } } async listKeys() { - return Array.from(this.chunks.keys()); + return Array.from(this.db().chunks.keys()); } async exists(key) { - return this.chunks.has(key); + return this.db().chunks.has(key); } async clear() { - this.chunks.clear(); - this.materialized.clear(); + const db = this.db(); + db.chunks.clear(); + db.materialized.clear(); } } @@ -1833,6 +2906,16 @@ class KVStore { this.opQueue = Promise.resolve(); /** 最近一次后台操作失败(checkpoint 时报告) */ this.lastBackgroundError = null; + /** + * v0.8.0(B-6):本实例的提交所有权标识。 + * + * 每次 `open()` 领取一个新的随机 id 并写入 meta(见 `claimOwnership`)。 + * checkpoint 前比对 `meta.owner`:不等于自己 → 介质已被更新的实例接管, + * 本实例的索引可能落后,**不得**再提交快照(否则会静默抹掉对方的写入)。 + */ + this.instanceId = ''; + /** 是否已被更新的实例接管(进入该状态后所有写入与提交都被拒绝) */ + this.stale = false; this.medium = medium ?? defaultMedium(); this.checkpointThreshold = checkpointThreshold; } @@ -1849,7 +2932,12 @@ class KVStore { this.dbName = dbName; // v0.7.4: 打开时同样清理后台错误状态(防 close/reopen 残留) this.lastBackgroundError = null; + this.stale = false; await this.medium.open(dbName); + // v0.8.0(B-6):领取提交所有权(写回 meta.owner)。 + // 打开是唯一"接管"介质的时机;此前的实例之后会在 checkpoint 时发现 + // owner 已变而拒绝提交,从而不会用陈旧索引覆盖本实例的数据。 + await this.claimOwnership(); this.index = new Map(); this.seq = 0; this.logBytes = 0; @@ -1895,8 +2983,17 @@ class KVStore { this.logBytes = log.byteLength; } if (corruptOffsets.length > 0) { - // 损坏尾部:截断日志(丢弃未确认记录),下次 checkpoint 落盘 - await this.truncateLog(); + // v0.8.0(B-6)根治:损坏尾部只能**截断到最后一条有效记录**, + // 绝不能清空整个日志。 + // + // 修复前这里调用 `truncateLog()`(写空文件),于是"尾部一个字节损坏" + // 导致**全部已确认写入消失**: + // 写 3 条记录 → 第 4 条只写了一半(崩溃)→ 重开 + // → 前 3 条被上面的重放读到内存,随后被 truncateLog() 从介质上抹掉 + // → 再重开一次,数据全部为空。 + // 这是本项目最严重的一类缺陷:把"损坏尾部"放大成"整库丢失"。 + // 正确做法(与 repair() 一致):保留 [0, validBytes) 前缀。 + await this.truncateLogTo(this.findValidLogLength(log)); } } this.opened = true; @@ -1934,6 +3031,8 @@ class KVStore { // v0.7.4: 清理后台错误状态 —— 此前跨 close/reopen 残留, // 重开后首次 checkpoint 会抛出上一次生命周期的旧错误 this.lastBackgroundError = null; + this.instanceId = ''; + this.stale = false; this.opened = false; } // ======================================================================= @@ -2016,6 +3115,8 @@ class KVStore { /** checkpoint:快照 → meta → 截断日志(时序保证任何崩溃窗口不丢数据) */ async checkpoint() { await this.enqueue(async () => { + // v0.8.0(B-6):提交前确认所有权 —— 拒绝用陈旧索引覆盖介质 + await this.assertOwnership(); // 报告上次后台失败 if (this.lastBackgroundError !== null) { const error = this.lastBackgroundError; @@ -2027,9 +3128,8 @@ class KVStore { // 1. 写快照(COW 原子) const snapBytes = encodeSnapshot(this.seq, this.index); await this.medium.write(SNAPSHOT_KEY, snapBytes.buffer); - // 2. 写 meta(指向新水位) - const meta = { seq: this.seq }; - await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); + // 2. 写 meta(指向新水位 + 续期所有权) + await this.writeMeta(); // 3. 截断日志(meta 已更新 → 截断安全) await this.truncateLog(); }); @@ -2083,6 +3183,12 @@ class KVStore { } /** 追加一条日志记录并更新内存索引(队列内调用,无并发) */ async appendRecord(puts, deletes, appends = {}) { + // v0.8.0(B-6):已被接管 → 拒绝写入(否则写入只会进 WAL 而永远无法提交, + // 或者在下一次 checkpoint 时把对方的提交覆盖掉) + if (this.stale) { + throw new DatabaseError('KVStore instance has been superseded by another instance on the same database;' + + ' re-open the database to continue', 'STALE_INSTANCE'); + } this.seq++; const record = encodeLogRecord(this.seq, puts, deletes, appends); try { @@ -2132,13 +3238,41 @@ class KVStore { this.logBytes += record.byteLength; // 自动 checkpoint(日志超阈值) if (this.checkpointThreshold > 0 && this.logBytes >= this.checkpointThreshold) { - await this.medium.write(SNAPSHOT_KEY, encodeSnapshot(this.seq, this.index).buffer); - const meta = { seq: this.seq }; - await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); - await this.truncateLog(); + await this.autoCheckpoint(); } } - /** 截断日志(清空文件) */ + /** + * v0.8.0(B-6)根治:自动 checkpoint 的失败语义。 + * + * 此前的顺序是"WAL 追加成功 → 更新内存索引 → 自动 checkpoint",而自动 + * checkpoint **没有 try/catch**:快照/元数据写失败会把异常抛出 `appendRecord`, + * 一路冒泡到调用方 —— 但那条写入**已经持久化在 WAL 里了**(WAL 是权威来源, + * 崩溃后一定能重放出来)。于是用户看到 `put()` 失败、以为数据没进去, + * 实际数据已经落盘 —— 报错与事实相反,属于最有害的一类不一致 + * (调用方据此重试会写入两次,或据"失败"丢弃业务状态)。 + * + * 现在的语义(与 PLAN-v0.7.5.md 的 B-6 止血方案一致): + * - 已确认的写入**不得**因为后台失败而报错; + * - 失败被记录为 `lastBackgroundError`,由**下一次** `checkpoint()` + * 显式报告(那是用户主动要求把数据压实到快照的时机,此时失败是真实问题); + * - 内存索引与 WAL 仍然一致(两者都已包含这条写入),不产生半状态。 + */ + async autoCheckpoint() { + try { + await this.assertOwnership(); + await this.medium.write(SNAPSHOT_KEY, encodeSnapshot(this.seq, this.index).buffer); + await this.writeMeta(); + await this.truncateLog(); + } + catch (error) { + // 陈旧实例的自动 checkpoint 失败**不**计入 lastBackgroundError: + // 那会把它伪装成"介质故障",而真实原因是本实例已被接管,用户需要的是 + // 立即的、明确的 STALE_INSTANCE 错误(由 assertOwnership 在显式路径给出)。 + if (!this.stale) + this.lastBackgroundError = error; + } + } + /** 截断日志(清空文件)—— 仅用于 checkpoint 之后:快照已覆盖全部数据 */ async truncateLog() { try { await this.medium.write(LOG_KEY, new ArrayBuffer(0)); @@ -2146,6 +3280,29 @@ class KVStore { catch { /* 截断失败:下次 checkpoint 重试 */ } this.logBytes = 0; } + /** + * v0.8.0(B-6):把日志截断到 `keepBytes` 长度(保留有效前缀)。 + * + * 与 `truncateLog()` 的区别:checkpoint 后日志内容已被快照覆盖,可以清空; + * 而崩溃恢复时日志里**前面的记录是唯一的数据来源**(快照可能落后很多个 + * checkpoint),只能丢弃损坏的尾部。两者语义完全不同,因此是两个方法。 + */ + async truncateLogTo(keepBytes) { + try { + const raw = await this.medium.read(LOG_KEY); + if (!raw) + return; + if (keepBytes >= raw.byteLength) + return; // 无需截断(损坏判定与读取之间无变化) + const kept = new Uint8Array(raw).subarray(0, keepBytes).slice(); + await this.medium.write(LOG_KEY, kept.buffer); + this.logBytes = keepBytes; + } + catch { + // 截断失败不影响本次恢复的内存状态:日志文件多出的损坏尾部会在 + // 下次 open 时被同样识别并跳过(解析在损坏处停止),因此不会读到脏数据。 + } + } /** 应用记录条目到内存索引 */ applyRecord(entries) { for (const e of entries) { @@ -2169,6 +3326,58 @@ class KVStore { } } } + // ======================================================================= + // 提交所有权(v0.8.0 / B-6) + // ======================================================================= + /** 生成实例 id(无需密码学强度,只要同期实例间不碰撞) */ + newInstanceId() { + const rand = Math.random().toString(36).slice(2); + return `kv-${Date.now().toString(36)}-${rand}`; + } + /** 读取 meta(缺失或损坏时返回 null) */ + async readMeta() { + try { + const raw = await this.medium.read(META_KEY); + if (!raw || raw.byteLength === 0) + return null; + return JSON.parse(new TextDecoder().decode(raw)); + } + catch { + return null; + } + } + /** 写入 meta(水位 + 所有权续期) */ + async writeMeta() { + const meta = { seq: this.seq, owner: this.instanceId }; + await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); + } + /** open() 时领取所有权:写入本实例 id,使此前打开的实例在提交时发现自己已过期 */ + async claimOwnership() { + this.instanceId = this.newInstanceId(); + await this.writeMeta(); + } + /** + * 提交前校验所有权。 + * + * 只有当介质上的 owner 存在、且**不是**本实例时才算过期: + * - owner 缺失(旧版本库 / meta 被清理)→ 视为无主,允许提交; + * - owner === 自己 → 正常。 + * 一旦判定过期,本实例进入 `stale` 状态:后续写入与提交都显式报错 —— + * 显式失败远好于静默丢数据(这是本 wound 的全部意义)。 + */ + async assertOwnership() { + const meta = await this.readMeta(); + if (meta?.owner && this.instanceId && meta.owner !== this.instanceId) { + this.stale = true; + throw new DatabaseError('KVStore instance has been superseded by another instance on the same database' + + ' (refusing to commit a stale snapshot, which would discard the newer instance\'s writes);' + + ' re-open the database to continue', 'STALE_INSTANCE'); + } + } + /** 本实例是否已被更新实例接管(诊断用) */ + isStale() { + return this.stale; + } /** 确定日志中有效字节长度(从 0 开始连续解析到第一条损坏/残缺记录) */ findValidLogLength(log) { let offset = 0; @@ -2413,6 +3622,17 @@ class KVStoreEngine { } } // ---- CRUD ---- + /** + * v0.8.0(B-1):写入前置校验 —— 委托给内存引擎(两者共享同一 schema 表)。 + * + * KVStore/Hybrid 的行校验一直"继承"自 MemoryEngine,这正是 A12 的成因: + * 三者共用一份**缺 maxLength/min/max** 的实现。现在共享的是 + * `table/validation.ts` 的规范实现,继承关系不再影响约束覆盖面。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureOpen(); + return this.memory.validatePayload(tableName, rows, mode); + } async insert(tableName, rows) { this.ensureOpen(); const pks = await this.memory.insert(tableName, rows); @@ -2872,6 +4092,19 @@ var WALRecordType; WALRecordType[WALRecordType["ROLLBACK"] = 6] = "ROLLBACK"; WALRecordType[WALRecordType["CREATE_TABLE"] = 7] = "CREATE_TABLE"; WALRecordType[WALRecordType["DROP_TABLE"] = 8] = "DROP_TABLE"; + /** + * v0.8.0: 回滚到保存点。 + * + * 为什么必须有这条记录:`ROLLBACK TO ` 此前只改内存快照、**不写 WAL**, + * 而 COMMIT 会把整个 txnId 标记为已提交,恢复时按"该事务的全部记录"重放 —— + * 于是被 savepoint 回滚掉的行在崩溃重启后**复活**(实测:实时只剩 a, + * 崩溃重开变成 a+b)。反向也有问题:跨事务复用的陈旧 savepoint 会让当前事务的 + * 写入被上一事务的快照静默替换。 + * + * 记录语义:该事务在此之前的写入都应被丢弃 —— 恢复时只应用该事务**最后一条** + * SAVEPOINT_ROLLBACK 之后的记录。 + */ + WALRecordType[WALRecordType["SAVEPOINT_ROLLBACK"] = 9] = "SAVEPOINT_ROLLBACK"; })(WALRecordType || (WALRecordType = {})); // ============================================================================= // MVCC @@ -4190,6 +5423,8 @@ class LSM { this.levels = []; this.sstableCache = new Map(); this.cacheSize = 0; + /** v0.8.0: 超过缓存上限、不进入 LRU 的 SSTable(每次读取按需加载) */ + this.oversizedSSTables = new Set(); this.operationCount = 0; this.initialized = false; this.compacting = false; // 防止重复触发 compaction @@ -4266,6 +5501,23 @@ class LSM { this.freezeMemtable(); } } + /** v0.8.0: 当前 SSTable 缓存占用字节数(公开访问器,替代测试直接读私有字段) */ + getCacheSize() { + return this.cacheSize; + } + /** v0.8.0: 当前缓存上限(字节) */ + getCacheLimit() { + return this.cacheLimitBytes; + } + /** v0.8.0: 常驻(超过缓存上限、不参与驱逐)的 SSTable 数量 */ + getOversizedCount() { + return this.oversizedSSTables.size; + } + /** v0.8.0: 运行期调整缓存上限(测试与内存预算调优用),立即裁剪到新上限 */ + setCacheLimit(bytes) { + this.cacheLimitBytes = Math.max(0, bytes); + this.trimCache(); + } /** 获取估算内存使用(字节) */ getEstimatedMemory() { let mem = this.memtable.getEstimatedSize(); @@ -4341,7 +5593,7 @@ class LSM { bloomData: null, }; // 缓存 - this.cacheSSTable(id, sstableData); + this.tryCacheSSTable(id, sstableData); this.trimCache(); // 持久化:先存数据,再存元数据(串行链保证顺序与 id 一致) await this.sstableStore.save(id, sstableData); @@ -4499,7 +5751,11 @@ class LSM { } return undefined; } - get(key) { + /** + * v0.8.0: 改为 async —— SSTable 部分未命中缓存时会 `await` 回源, + * 因此读取不再依赖调用方的 prefetch(消除"缓存未命中即静默丢数据")。 + */ + async get(key) { // 1. 活跃 MemTable let result = this.memtable.get(key); if (result !== null) @@ -4515,7 +5771,7 @@ class LSM { for (const meta of this.levels[level]) { if (key < meta.minKey || key > meta.maxKey) continue; - const reader = this.loadSSTableReader(meta); + const reader = await this.loadSSTableReader(meta); if (!reader) continue; const found = reader.get(key); @@ -4525,9 +5781,9 @@ class LSM { } return null; } - rangeScan(startKey, endKey) { + async rangeScan(startKey, endKey) { const result = []; - this.rangeScanLazy(startKey, endKey, (k, v) => { result.push([k, v]); }); + await this.rangeScanLazy(startKey, endKey, (k, v) => { result.push([k, v]); }); return result; } /** @@ -4536,22 +5792,27 @@ class LSM { * 逐条拉取;回调返回 false 时提前终止(未消费部分不再解析/物化)。 * 此前实现内部 mergeIter.drain() 全量物化,与"流式不物化"宣称不符。 */ - rangeScanLazy(startKey, endKey, callback) { + async rangeScanLazy(startKey, endKey, callback) { + // v0.8.0: 先把范围内需要的 SSTable 读取器全部取齐(未命中即回源), + // 再做纯内存的归并扫描 —— 使读取自洽,不依赖调用方 prefetch。 + const readers = []; + for (let level = 0; level < MAX_LSM_LEVELS; level++) { + for (const meta of this.levels[level]) { + if (endKey < meta.minKey || startKey > meta.maxKey) + continue; + const reader = await this.loadSSTableReader(meta); + if (reader) + readers.push({ meta, reader }); + } + } const mergeIter = new MergeIterator(); mergeIter.addSource(new GeneratorEntrySource(this.memtable.scanLazy(startKey, endKey))); // pending frozen memtables(从新到旧,新数据 sourceIndex 更小) for (let i = this.frozenMemtables.length - 1; i >= 0; i--) { mergeIter.addSource(new GeneratorEntrySource(this.frozenMemtables[i].scanLazy(startKey, endKey))); } - for (let level = 0; level < MAX_LSM_LEVELS; level++) { - for (const meta of this.levels[level]) { - if (endKey < meta.minKey || startKey > meta.maxKey) - continue; - const reader = this.loadSSTableReader(meta); - if (!reader) - continue; - mergeIter.addSource(new GeneratorEntrySource(reader.scanLazy(startKey, endKey))); - } + for (const { reader } of readers) { + mergeIter.addSource(new GeneratorEntrySource(reader.scanLazy(startKey, endKey))); } let entry = mergeIter.next(); while (entry) { @@ -4645,7 +5906,7 @@ class LSM { totalSize: sstableData.byteLength, bloomData: null, }; - this.cacheSSTable(id, sstableData); + this.tryCacheSSTable(id, sstableData); this.trimCache(); await this.sstableStore.save(id, sstableData); await this.sstableStore.saveMeta(meta); @@ -4714,6 +5975,7 @@ class LSM { } this.sstableCache.clear(); this.cacheSize = 0; + this.oversizedSSTables.clear(); } getStats() { return { @@ -4805,17 +6067,49 @@ class LSM { return value; } /** 尝试从缓存或存储加载 SSTable,返回 Reader */ - loadSSTableReader(meta) { - // 先检查缓存 - const data = this.sstableCache.get(meta.id); + /** + * v0.8.0 根治:读取器加载**自洽**(缓存未命中即回源),不再依赖调用方预先 prefetch。 + * + * 此前的实现是"缓存未命中返回 null",而所有调用方都是 + * const reader = this.loadSSTableReader(meta); + * if (!reader) continue; + * 于是**缓存未命中 = 静默跳过整个 SSTable = 查询结果少数据**。审计实测: + * 小缓存下 300 行只能查回 59 行(且不报错)。同时"读路径必须先 prefetch" + * 这个隐式约定,也是每次读都要 drainChain + prefetch 的原因(性能悬崖的另一半)。 + * + * 现在:未命中就 `await sstableStore.load()` 回源并校验;只有**确实读不到数据** + * (文件缺失/损坏,已由 dropInvalidSSTable 处理)才返回 null,且会在自愈时清掉 meta。 + */ + async loadSSTableReader(meta) { + let data = this.sstableCache.get(meta.id); if (!data) { - // 缓存未命中:正常路径应在查询前通过 prefetchRange/prefetchKeys 预加载。 - // 这里仅当缓存中有缺失且无兜底时返回 null(调用方跳过)。 - return null; + const loaded = await this.sstableStore.load(meta.id); + if (!loaded) { + // 数据确实不存在:清理该 meta(自愈),避免每次查询都重试 + await this.dropInvalidSSTable(meta); + return null; + } + // 运行期回源同样校验整文件 CRC-32(与 preloadSSTable 一致) + try { + const probe = new SSTableReader(loaded, meta); + if (!probe.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + return null; + } + } + catch { + await this.dropInvalidSSTable(meta); + return null; + } + this.tryCacheSSTable(meta.id, loaded); + data = loaded; } // 刷新 LRU 顺序(近似:删除后重新插入使其成为最近使用) - this.sstableCache.delete(meta.id); - this.sstableCache.set(meta.id, data); + if (this.sstableCache.has(meta.id)) { + const cached = this.sstableCache.get(meta.id); + this.sstableCache.delete(meta.id); + this.sstableCache.set(meta.id, cached); + } try { return new SSTableReader(data, meta); } @@ -4844,6 +6138,32 @@ class LSM { return; } } + this.tryCacheSSTable(id, data); + } + /** + * v0.8.0: 单文件大于缓存上限时的处理 —— **不缓存**,且不牵连其他条目。 + * + * 此前 `preloadSSTable` 会把超大文件塞进缓存,随后 `trimCache()` 因 + * `cacheSize > cacheLimitBytes` 把**全部**缓存条目一并驱逐(含刚装入的目标文件 + * 与其它仍需使用的文件)。后果有两层: + * 1. "缓存上限"形同虚设(内存峰值不受约束); + * 2. 缓存被整体清空后,若某次读取没有紧跟一次 prefetch,就会静默读到空 + * (`loadSSTableReader` 未命中返回 null,"不存在"与"不可用"不可区分)。 + * 现在的语义明确:装不进缓存的文件不装,但**不影响**其他条目。 + */ + tryCacheSSTable(id, data) { + if (data.byteLength > this.cacheLimitBytes) { + // 单个文件就超过整个缓存上限:**必须常驻**。 + // 若把它驱逐,`loadSSTableReader` 缓存未命中会返回 null,而调用方的 + // `if (!reader) continue` 会**静默跳过该文件** —— 查询结果直接少数据 + // (实测 300 行只返回 59 行)。这也是审计指出的"缓存未命中与不存在不可区分"。 + // 因此这类文件标记为 pinned,不参与驱逐;代价是内存占用可超出 cacheLimit, + // 上限为 cacheLimit + 单个最大 SSTable。 + this.oversizedSSTables.add(id); + } + else { + this.oversizedSSTables.delete(id); + } this.cacheSSTable(id, data); } /** 写入缓存。注意:不在加载时立即驱逐,避免破坏正在进行的同步扫描 */ @@ -4862,13 +6182,35 @@ class LSM { * 查询结束后由引擎调用一次,回收查询期间的临时超限。 */ trimCache() { - while (this.cacheSize > this.cacheLimitBytes && this.sstableCache.size > 0) { - const eldestId = this.sstableCache.keys().next().value; - const evicted = this.sstableCache.get(eldestId); - this.cacheSize -= evicted.byteLength; - this.sstableCache.delete(eldestId); + // v0.8.0: 超过缓存上限的单个文件被 pin 住(驱逐它们会导致读取路径静默丢数据), + // 因此这里的循环只驱逐未 pin 的条目;若只剩 pinned 条目则接受超限。 + let scanned = 0; + const total = this.sstableCache.size; + let id = this.sstableCache.keys().next().value; + while (this.cacheSize > this.cacheLimitBytes && scanned < total && id !== undefined) { + const nextId = this.nextCacheKey(id); + scanned++; + if (!this.oversizedSSTables.has(id)) { + const evicted = this.sstableCache.get(id); + if (evicted) { + this.cacheSize -= evicted.byteLength; + this.sstableCache.delete(id); + } + } + id = nextId; } } + /** 取缓存中 id 的下一个键(Map 插入序),用于跳过 pinned 条目 */ + nextCacheKey(id) { + let seen = false; + for (const key of this.sstableCache.keys()) { + if (seen) + return key; + if (key === id) + seen = true; + } + return undefined; + } } /** @@ -6604,12 +7946,6 @@ function decompressLZ4(input, _originalSize) { return out; } -/** - * AriaEngine — 自研页面式存储引擎主类 - * @module engine/aria/index - * - * v0.4.1: 外键级联 + ALTER TABLE 重写 + clearAll 重置 + 崩溃恢复加固 - */ // --------------------------------------------------------------------------- // AriaEngine // --------------------------------------------------------------------------- @@ -6640,6 +7976,15 @@ class AriaEngine { this.gcCounter = 0; // ---- Savepoint 嵌套事务 ---- this.savepoints = new Map(); + /** + * v0.8.0: 当前事务在 WAL 中已成功追加的记录条数。 + * + * 用途:保存点需要记录"回滚后应保留到哪一条",否则恢复时无法区分 + * "保存点之前的写入"(应保留)与"保存点之后的写入"(应丢弃)。 + */ + this.txnWalRecordCount = 0; + /** 保存点 → 该保存点时事务的 WAL 记录边界 */ + this.savepointWalBoundary = new Map(); this.config = { ...DEFAULT_ARIA_CONFIG, ...config }; } // ======================================================================= @@ -6764,9 +8109,65 @@ class AriaEngine { if (r.type === WALRecordType.ROLLBACK) committedTxns.delete(r.txnId); } + // v0.8.0 根治:确定每个事务的**回放起始下标**。 + // + // `ROLLBACK TO ` 只回滚内存快照,日志里仍留有 savepoint 之前 + // 写入的记录;COMMIT 又把整个 txnId 标记为已提交 —— 于是那些被回滚掉的写入 + // 在重启时被重新应用,**已回滚的行复活**(实测:实时只剩 a,崩溃重开变成 a+b)。 + // + // 现在 savepoint 回滚会写入 SAVEPOINT_ROLLBACK 记录;恢复时该事务只应用 + // **最后一条** SAVEPOINT_ROLLBACK 之后的记录 —— 等价于"回到该保存点", + // 与实时态严格一致(这样也就不需要 undo 崩溃前已落盘的旧值)。 + // 每个事务:{ 保留起点, 丢弃终点 } —— 区间 [start, end) 保留。 + // + // 关键:`replayFromIndex` 是**事务内**的记录序号(写入方按事务计数), + // 因此这里必须用"该事务的第几条记录"来比较,不能直接拿全局下标 —— + // 全局下标里还混着 txnId=0 的非事务记录(CREATE_TABLE 等)以及其它事务。 + const globalIndexToTxnIndex = new Map(); + const txnRecordCount = new Map(); + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; + if (r.txnId === 0) + continue; + const n = txnRecordCount.get(r.txnId) ?? 0; + globalIndexToTxnIndex.set(i, n); + txnRecordCount.set(r.txnId, n + 1); + } + // 边界语义(必须显式定义,否则差一错误就在这里): + // 写入侧记录的 `replayFromIndex = N` 表示"保存点建立时,本事务已成功追加了 N 条记录", + // 即事务的第 0..N-1 条记录必须保留(BEGIN 是第 0 条)。 + // 因此恢复侧应保留的**事务内下标区间**是 [0, N),丢弃 [N, 标记位置)。 + // 等价地:只丢弃"事务内下标 >= N"且"在最后一个标记之前"的记录。 + const txnReplayWindow = new Map(); + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; + if (r.type !== WALRecordType.SAVEPOINT_ROLLBACK) + continue; + const declared = r.data?.replayFromIndex; + const keepUpTo = typeof declared === 'number' ? declared : 0; + const txnIdx = globalIndexToTxnIndex.get(i) ?? 0; + const prev = txnReplayWindow.get(r.txnId); + // 多个保存点回滚:保留上界取**最早**的(回到最早的保存点), + // 丢弃起点取**最后一个**标记的事务内下标。 + txnReplayWindow.set(r.txnId, { + keepUpTo: prev ? Math.min(prev.keepUpTo, keepUpTo) : keepUpTo, + dropFrom: txnIdx, + }); + } // 第二遍:仅应用 txnId==0(非事务)或已提交事务的数据 - for (const r of allRecords) { + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; if (r.txnId === 0 || committedTxns.has(r.txnId)) { + if (r.type === WALRecordType.SAVEPOINT_ROLLBACK) + continue; // 标记记录,无数据 + // 事务内落在 [start, end) 之外的记录:属于被 savepoint 回滚掉的部分,丢弃 + const win = txnReplayWindow.get(r.txnId); + if (win !== undefined) { + const txnIdx = globalIndexToTxnIndex.get(i) ?? 0; + // 保留 [0, keepUpTo);丢弃 [keepUpTo, dropFrom);标记之后的记录照常保留 + if (txnIdx >= win.keepUpTo && txnIdx < win.dropFrom) + continue; + } if (r.type === WALRecordType.DROP_TABLE) { // v0.3.3: DROP_TABLE 回放(异步:需预加载 SSTable 后清除残留数据) await this.applyDropTableRecovery(r.tableName); @@ -7101,9 +8502,10 @@ class AriaEngine { throw new DatabaseError(`Duplicate primary key "${pkValue}" in table "${tableName}"`, 'DUPLICATE_KEY'); } pkSet.add(pkValue); + // v0.8.0: 事务快照优先,否则回源 LSM(lsm.get 现为 async) const existing = this.currentTxnId - ? (this.txnSnapshot?.get(key) ?? this.lsm.get(key)) - : this.lsm.get(key); + ? (this.txnSnapshot?.get(key) ?? await this.lsm.get(key)) + : await this.lsm.get(key); if (existing && !existing.__txn_deleted) { throw new DatabaseError(`Duplicate primary key "${pkValue}" in table "${tableName}"`, 'DUPLICATE_KEY'); } @@ -7138,7 +8540,7 @@ class AriaEngine { throw new DatabaseError(`Unique constraint violation on column "${colName}" in table "${tableName}"`, 'UNIQUE_VIOLATION'); } seen.add(v); - this.checkUniqueSync(tableName, [colName], validated, pkValue); + await this.checkUnique(tableName, [colName], validated, pkValue); } } for (const { row: validated, pkValue, key } of validatedRows) { @@ -7164,6 +8566,7 @@ class AriaEngine { }); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += rows.length; this.checkMemoryBudget(); await this.checkpointManager.tick(); @@ -7202,16 +8605,24 @@ class AriaEngine { } // 查询完成,回收查询期间的临时缓存超限 this.trimAllCaches(); - return rows; + // v0.8.0: 行所有权 —— 返回副本,调用方不得改写存储(见 engine/interface.ts 约定) + return rows.map((row) => cloneRow(row)); } async update(tableName, query, updates) { this.ensureOpen(); this.ensureTable(tableName); // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in UPDATE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const schema = this.schemas.get(tableName); const rows = await this.getAllRows(tableName); let count = 0; @@ -7254,6 +8665,14 @@ class AriaEngine { // (无事务下语句级部分提交 + 崩溃后进一步不一致)。 const planned = []; const batchUnique = new Map(); + /** + * v0.8.0 根治:批内新主键互查(与 MemoryEngine 对齐)。 + * + * 此前只检查"新主键是否已存在于**语句执行前**的表",看不到同一语句内其它行 + * 即将写入的新主键。于是 `UPDATE t SET id = 'X'`(匹配 3 行)在阶段 2 逐行 + * 覆盖同一 LSM key —— 返回 affected=3,表中却只剩 1 行(静默丢行,实测)。 + */ + const batchNewPks = new Set(); // 阶段 1:全量预检(任何一行失败 → 整条语句不执行) for (const row of rows) { const pkCol = this.tablePKs.get(tableName); @@ -7265,7 +8684,7 @@ class AriaEngine { // 批内唯一互查(索引尚未更新,两行同时改到同一新值需要互查兜底) this.checkBatchUnique(tableName, uniqueCols, updated, batchUnique); // v0.6.2: 唯一约束检查(排除自身旧索引条目:主键变更时旧条目仍以旧键存在) - this.checkUniqueSync(tableName, uniqueCols, updated, String(row[pkCol])); + await this.checkUnique(tableName, uniqueCols, updated, String(row[pkCol])); // v0.4.2-fix: 支持更新主键 — 删除旧键 + 落新键 + WAL 两条记录 const newPk = String(updated[pkCol]); const pkChanged = newPk !== String(row[pkCol]); @@ -7274,11 +8693,16 @@ class AriaEngine { if (pkChanged) { const newKey = `${tableName}:${newPk}`; const existing = this.currentTxnId - ? (this.txnSnapshot?.get(newKey) ?? this.lsm.get(newKey)) - : this.lsm.get(newKey); + ? (this.txnSnapshot?.get(newKey) ?? await this.lsm.get(newKey)) + : await this.lsm.get(newKey); if (existing && !existing.__txn_deleted) { throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (cannot update key to existing value)`, 'DUPLICATE_KEY'); } + // v0.8.0: 批内互查 —— 同一语句内两行改到同一新主键 → 整体拒绝(不得静默覆盖) + if (batchNewPks.has(newPk)) { + throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (multiple rows in the same statement update to the same key)`, 'DUPLICATE_KEY'); + } + batchNewPks.add(newPk); } planned.push({ row, pk: String(row[pkCol]), key, updated, newPk, pkChanged }); } @@ -7329,6 +8753,7 @@ class AriaEngine { this.updateSecondaryIndexes(tableName, newPk, updated, row); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += count; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7438,9 +8863,16 @@ class AriaEngine { this.ensureTable(tableName); // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in DELETE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const rows = await this.getAllRows(tableName); let count = 0; // v0.3.1: 批量 WAL 写入(组提交) @@ -7485,6 +8917,7 @@ class AriaEngine { } } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += count; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7632,7 +9065,7 @@ class AriaEngine { skipped++; return true; } - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); count++; return count < limit; }; @@ -7640,7 +9073,7 @@ class AriaEngine { // 事务中:物化后逐行回调(快照合并需要全量行集) const rows = await this.find(tableName, { ...query, orderBy: undefined, limit: undefined, offset: undefined }); for (const row of rows) { - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); } return rows.length; } @@ -7656,7 +9089,7 @@ class AriaEngine { // 全表惰性扫描(含 WHERE 过滤,不物化;v0.7.4: callback 返回 false 提前终止, // 未消费的 SSTable 块 / 子树不再解析 —— 真流式,大表 limit 内存 O(1)) await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - this.lsm.rangeScanLazy(prefix, `${prefix}\uffff`, (key, value) => { + await this.lsm.rangeScanLazy(prefix, `${prefix}\uffff`, (key, value) => { if (count >= limit) return false; const row = { ...value }; @@ -7700,6 +9133,7 @@ class AriaEngine { this.updateSecondaryIndexes(tableName, String(row[pkCol]), null, row); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += rows.length; await this.checkpointManager.tick(); this.tryGC(); @@ -7721,6 +9155,18 @@ class AriaEngine { throw new DatabaseError(`Column "${column.name}" already exists in table "${tableName}"`, 'COLUMN_EXISTS'); } schema.columns[column.name] = column; + // v0.8.0 根治:ALTER ADD 的索引/唯一列必须真正建立索引 LSM 并回填。 + // + // 此前只写 schema + persistSchemas,索引 LSM 从未创建 → `unique` 标记形同虚设, + // 重复值可任意写入(实测四个引擎全部接受);重启时索引才被建出来,与 Memory + // "重启静默丢行"是同一问题的另一半。 + // + // 复用 createIndex:它已经实现了"回填 + 存量唯一性校验 + 失败时原子清理" + // (v0.6.2/v0.7.3 的修复成果),此处不重复实现以避免再次漂移。 + if (column.index || column.unique) { + // createIndex 会读取 schema.columns[column],上面的赋值已满足 + await this.createIndex(tableName, column.name, column.unique === true); + } await this.persistSchemas(); return; } @@ -7746,7 +9192,7 @@ class AriaEngine { const prefix = `${tableName}:`; const endKey = `${prefix}\uffff`; await this.lsm.prefetchRange(prefix, endKey); - const entries = this.lsm.rangeScan(prefix, endKey); + const entries = await this.lsm.rangeScan(prefix, endKey); const walRecords = []; for (const [key, value] of entries) { if (!(column.name in value)) @@ -7766,6 +9212,7 @@ class AriaEngine { }); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += walRecords.length; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7873,6 +9320,8 @@ class AriaEngine { throw new DatabaseError('Transaction already in progress', 'TX_ACTIVE'); this.currentTxnId = this.mvcc.beginTransaction(); this.txnSnapshot = new Map(); + // v0.8.0: 事务内 WAL 记录计数从 0 开始(保存点边界依赖它) + this.txnWalRecordCount = 0; // v0.7.3-fix: WAL BEGIN 写失败回滚内存事务状态 —— 此前 append 抛错(full 模式) // 时 currentTxnId 已设置 → TX_ACTIVE 永久泄漏(后续无法开始新事务)。 // 回滚 mvcc 登记 + 快照后重抛,调用方可重试。 @@ -7883,6 +9332,7 @@ class AriaEngine { tableName: '', key: '', }); + this.txnWalRecordCount = 1; // BEGIN 本身占一条 } catch (error) { this.mvcc.rollbackTransaction(this.currentTxnId); @@ -7915,6 +9365,13 @@ class AriaEngine { } } this.mvcc.commitTransaction(this.currentTxnId); + // v0.8.0 根治:事务结束时清空 savepoint 表。 + // 此前 commit/rollback **都不清理** savepoints,于是: + // 1. 上一个事务的名字仍被占用 → 新事务 SAVEPOINT 同名报 "already exists"; + // 2. 新事务 ROLLBACK TO 陈旧名字会拿到旧事务快照,把当前事务的写入静默替换。 + this.savepoints.clear(); + this.savepointWalBoundary.clear(); + this.txnWalRecordCount = 0; this.currentTxnId = null; this.txnSnapshot = null; } @@ -7944,6 +9401,10 @@ class AriaEngine { } this.mvcc.rollbackTransaction(txnId); this.txnSnapshot = null; + // v0.8.0:事务结束清空 savepoint(理由同 commitTransaction) + this.savepoints.clear(); + this.savepointWalBoundary.clear(); + this.txnWalRecordCount = 0; this.currentTxnId = null; // v0.3.3: 事务内直接写入了二级索引 LSM,回滚后全量重建受影响表的索引 for (const tableName of affectedTables) { @@ -7962,11 +9423,32 @@ class AriaEngine { txnId: this.currentTxnId, snapshot: this.txnSnapshot ? new Map(this.txnSnapshot) : null, }); + // v0.8.0: 记录边界(该事务已追加的记录条数)—— 见 txnWalRecordCount 说明 + this.savepointWalBoundary.set(`${this.currentTxnId}:${name}`, this.txnWalRecordCount); } async rollbackToSavepoint(name) { const sp = this.savepoints.get(name); if (!sp) throw new DatabaseError(`Savepoint "${name}" not found`, 'SAVEPOINT_NOT_FOUND'); + // v0.8.0 根治:savepoint 归属校验。 + // 此前只按名字查找,而 savepoints 在 commit/rollback 时**从不清空** —— + // 上一个事务遗留的 savepoint 会让当前事务的写入被旧事务快照静默替换 + // (实测:本事务 update 后 ROLLBACK TO 陈旧名 + COMMIT,写入凭空消失)。 + if (sp.txnId !== this.currentTxnId) { + throw new DatabaseError(`Savepoint "${name}" belongs to a different transaction (stale savepoint)`, 'SAVEPOINT_NOT_FOUND'); + } + // v0.8.0: 先写 WAL 标记再改内存(与 commit/rollback 的"WAL 领先内存"一致)—— + // 否则崩溃恢复会把该事务在 savepoint 之前写入的记录重新应用,已回滚的行复活。 + const boundary = this.savepointWalBoundary.get(`${this.currentTxnId}:${name}`) ?? 0; + await this.wal.append({ + type: WALRecordType.SAVEPOINT_ROLLBACK, + txnId: this.currentTxnId, + tableName: '', + key: '', + data: { replayFromIndex: boundary }, + }); + this.txnWalRecordCount++; + this.savepointWalBoundary.set(`${this.currentTxnId}:${name}`, boundary); // v0.6.3-fix: 记录当前快照涉及的表(回滚后重建索引)—— 此前事务内直写 // 索引 LSM,savepoint 回滚只还原快照 → savepoint 之后的索引条目残留 const affectedTables = new Set(); @@ -8021,9 +9503,11 @@ class AriaEngine { const prefix = `${tableName}:`; // 预加载范围内涉及的 SSTable,避免 rangeScan 时缓存未命中静默丢数据 await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - const entries = this.lsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await this.lsm.rangeScan(prefix, `${prefix}\uffff`); const rows = entries.map(([key, value]) => { - const row = { ...value }; + // v0.8.0: 深拷贝(此前 `{ ...value }` 只做浅拷贝,嵌套 json 值仍与 LSM + // 内部对象共享引用 —— 调用方改 rows[0].nested.a 会改写存储) + const row = cloneRow(value); row[pkCol] = key.slice(prefix.length); return row; }); @@ -8067,29 +9551,26 @@ class AriaEngine { return Object.keys(schema.columns)[0]; } validateRow(schema, row) { - const validated = {}; - for (const [colName, colDef] of Object.entries(schema.columns)) { - let value = row[colName]; - if (value === undefined && colDef.default !== undefined) - value = colDef.default; - if (colDef.required && (value === undefined || value === null)) { - throw new DatabaseError(`Column "${colName}" is required in table "${schema.name}"`, 'VALIDATION_ERROR'); - } - // v0.7.4: 主键列强制非空(SQL 语义 PK 隐含 NOT NULL)—— - // 此前 null/undefined 主键被 String() 化为 "null"/"undefined" 静默入库 - if (colDef.primaryKey && (value === undefined || value === null)) { - throw new DatabaseError(`Primary key column "${colName}" in table "${schema.name}" cannot be null or undefined`, 'VALIDATION_ERROR'); - } - if (value !== undefined && value !== null) { - this.checkType(colName, colDef.type, value, colDef); - } - if (value !== undefined) - validated[colName] = value; - } - return validated; + // v0.8.0(B-1):委托给**唯一**的行校验实现(table/validation.ts)。 + // + // 此前这里是第二份独立实现(经由 checkFieldType 恰好覆盖了 maxLength/min/max, + // 而 Memory 那份没有)—— 于是同一份 schema、同一条 INSERT 是否报约束错误 + // 取决于选了哪个引擎(缺陷 A12),且两者对未知列都静默丢弃(A17)。 + return compileValidator(schema).validateRow(row); } - checkType(colName, type, value, colDef) { - checkFieldType('', colName, type, value, colDef); + /** + * v0.8.0(B-1):写入前置校验 —— 见 `IStorageEngine.validatePayload` 契约。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureTable(tableName); + const schema = this.schemas.get(tableName); + const validator = compileValidator(schema); + for (const row of rows) { + if (mode === 'update') + validator.validatePartial(stripUndefinedUpdates(row)); + else + validator.validateRow(row); + } } // ======================================================================= // Schema 持久化 @@ -8287,7 +9768,7 @@ class AriaEngine { const prefix = `${tableName}:`; const endKey = `${prefix}\uffff`; await this.lsm.prefetchRange(prefix, endKey); - const entries = this.lsm.rangeScan(prefix, endKey); + const entries = await this.lsm.rangeScan(prefix, endKey); for (const [key] of entries) { this.lsm.delete(key); } @@ -8307,11 +9788,15 @@ class AriaEngine { return cols; } /** - * v0.6.2: 同步唯一性检查(须在批次级 prefetchPrefixRanges 之后调用,循环内无 await)。 + * 唯一性检查。 + * + * v0.8.0: 由 `checkUniqueSync` 改名并改为 async —— 此前命名为 "Sync" 是因为它 + * 依赖"批次级 prefetchPrefixRanges 之后索引数据已在缓存中"这一约定。现在 + * LSM 读取自洽(未命中即回源),因此这里可以、也必须 await。 * 索引不含 null 条目(null 值不受唯一约束,与 MemoryEngine 语义一致)。 * @param currentPk 当前行主键(更新路径用于排除自身旧索引条目;插入路径无自身条目) */ - checkUniqueSync(tableName, uniqueCols, row, currentPk) { + async checkUnique(tableName, uniqueCols, row, currentPk) { for (const colName of uniqueCols) { const val = row[colName]; if (val === undefined || val === null) @@ -8320,7 +9805,7 @@ class AriaEngine { if (!idxLsm) continue; const prefix = `${String(val)}:`; - const entries = idxLsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await idxLsm.rangeScan(prefix, `${prefix}\uffff`); for (const [, entry] of entries) { const pk = entry.pk; if (pk !== undefined && pk !== currentPk) { @@ -8394,14 +9879,14 @@ class AriaEngine { if (typeof condition !== 'object' || condition === null) { const key = `${tableName}:${condition}`; await this.lsm.prefetchKeys([key]); - const value = this.lsm.get(key); + const value = await this.lsm.get(key); return value ? [{ ...value, [pkCol]: condition }] : []; } const cond = condition; if ('$eq' in cond) { const key = `${tableName}:${cond.$eq}`; await this.lsm.prefetchKeys([key]); - const value = this.lsm.get(key); + const value = await this.lsm.get(key); return value ? [{ ...value, [pkCol]: cond.$eq }] : []; } // v0.3.3: PK $in → 主 LSM 多次精确查找(替代冗余 PK 二级索引) @@ -8414,7 +9899,7 @@ class AriaEngine { const pk = String(v); if (seen.has(pk)) continue; - const value = this.lsm.get(`${tableName}:${pk}`); + const value = await this.lsm.get(`${tableName}:${pk}`); if (value) { seen.add(pk); rows.push({ ...value, [pkCol]: pk }); @@ -8426,7 +9911,7 @@ class AriaEngine { if ('$gt' in cond || '$gte' in cond || '$lt' in cond || '$lte' in cond) { const prefix = `${tableName}:`; await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - const entries = this.lsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await this.lsm.rangeScan(prefix, `${prefix}\uffff`); const rows = []; for (const [key, value] of entries) { const candidate = { ...value, [pkCol]: key.slice(prefix.length) }; @@ -8454,6 +9939,12 @@ class AriaEngine { // v0.6.2-fix(P1): 同上,$eq: null(IS NULL)不走索引 if (c.$eq === null) continue; + // v0.8.0 根治(与 MemoryEngine 同步):非原始值一律不走索引。 + // `String({...})` 得到 "[object Object]" 这类无意义键,索引查找必然为空 + // 并短路全表扫描 → 结果静默为空。真实触发场景是"未解析的操作数": + // { $eq: { $col: 'y' } } ← 列对列比较(t.x = t.y) + if (typeof c.$eq === 'object') + continue; const v = String(c.$eq); return this.indexScanToRows(tableName, pkCol, idxLsm, v, v); } @@ -8462,6 +9953,10 @@ class AriaEngine { // v0.6.2-fix(P1): IN 列表含 null 不走索引(索引不含 null 条目,会漏匹配 null 行) if (c.$in.some((v) => v === null)) continue; + // v0.8.0: IN 列表含非原始值(未解析的 $subquery / $col)不走索引 —— + // String() 会得到无意义键,查找为空并短路全表扫描 → 静默空结果 + if (c.$in.some((v) => typeof v === 'object' && v !== null)) + continue; // v0.7.3-perf: 批级预加载全部值的索引范围 + 主表行(各一次 drainChain)—— // 此前逐值 indexScanToRows:每个值一次 prefetchRange + prefetchKeys, // 后台 compaction 长耗时时 N 倍放大(与 v0.6.1 修的 insert 批量预加载 @@ -8472,7 +9967,7 @@ class AriaEngine { const seenPks = new Set(); // v0.4.1: IN 值可能重复,按 pk 去重 const pks = []; for (const val of values) { - const entries = idxLsm.rangeScan(val, `${val}\uffff`); + const entries = await idxLsm.rangeScan(val, `${val}\uffff`); for (const [, idxEntry] of entries) { const pk = idxEntry.pk; if (pk && !seenPks.has(pk)) { @@ -8483,7 +9978,7 @@ class AriaEngine { } await this.lsm.prefetchKeys(pks.map((pk) => `${tableName}:${pk}`)); for (const pk of pks) { - const row = this.lsm.get(`${tableName}:${pk}`); + const row = await this.lsm.get(`${tableName}:${pk}`); if (row) results.push({ ...row, [pkCol]: pk }); } @@ -8507,7 +10002,7 @@ class AriaEngine { const actualEndKey = endKey.includes('\uffff') ? endKey : `${endKey}\uffff`; // 预加载索引 LSM 与主 LSM 涉及的 SSTable await idxLsm.prefetchRange(startKey, actualEndKey); - const entries = idxLsm.rangeScan(startKey, actualEndKey); + const entries = await idxLsm.rangeScan(startKey, actualEndKey); const pks = []; for (const [, idxEntry] of entries) { const pk = idxEntry.pk; @@ -8517,7 +10012,7 @@ class AriaEngine { await this.lsm.prefetchKeys(pks.map((pk) => `${tableName}:${pk}`)); const rows = []; for (const pk of pks) { - const row = this.lsm.get(`${tableName}:${pk}`); + const row = await this.lsm.get(`${tableName}:${pk}`); if (row) rows.push({ ...row, [pkCol]: pk }); } @@ -8846,6 +10341,16 @@ class HybridEngine { } throw error; } + /** + * v0.8.0(B-1):写入前置校验 —— 委托给内存引擎(与磁盘引擎同 schema)。 + * + * 关键点:**只判定一次**。Hybrid 的 write-through 会把同一批行先写内存再写磁盘, + * 两个引擎各自校验会给出同一结论(现在共享同一个 `compileValidator`), + * 但由本方法统一前置,可保证多行批量在任何副作用之前整体失败。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + return this.memoryEngine.validatePayload(tableName, rows, mode); + } async insert(tableName, rows) { const pks = await this.memoryEngine.insert(tableName, rows); // write-through: 同步写入磁盘 @@ -8966,15 +10471,30 @@ class HybridEngine { * metona-sqlark Query Builder — 链式查询构建器 * @module query/builder * - * 链式调用 → 构建 AST → 执行引擎操作。 - * 支持 JOIN(需要 Executor)。 + * ============================================================================ + * v0.8.0(B-3):**只产出 AST,执行一律交给 Executor** + * ============================================================================ + * 修复前每个 builder 的 `execute()` 都有自己的执行动作: + * - `SelectQueryBuilder`:**无 JOIN 时直接调 `engine.find`**,只有 JOIN 才走 + * executor; + * - `UpdateQueryBuilder` / `DeleteQueryBuilder`:直接调 `engine.update/delete`。 + * + * 于是"同一条语义"在 builder 路径与 SQL 路径上走两条管线,规则各写一份: + * - SELECT 的常量列/别名/CASE 投影在 builder 路径不存在 + * (`db.table('t').select(['t.n'])` 的输出键、`SELECT 1` 之类行为不同); + * - `maxRowsPerQuery`、`distinct`、`groupBy`/`having`、`fromSubquery` 等阶段 + * 在直通路径上完全不经过; + * - 未解析的 `$subquery`/`$col` 在直通路径上无人解析 → 引擎判 UNKNOWN → + * **静默 0 行**(这正是 v0.7.4 要为此加"显式拒绝"防御的原因)。 + * + * 现在 builder 只负责"拼 AST",执行统一走 `executor.execute(ast)`; + * 需要直通时由 executor 内部判断(它本来就是唯一知道"能不能下推"的地方)。 */ // --------------------------------------------------------------------------- // SelectQueryBuilder // --------------------------------------------------------------------------- class SelectQueryBuilder { - constructor(engine, tableName, _columns = ['*'], executor) { - this.engine = engine; + constructor(tableName, executor, _columns = ['*']) { this.tableName = tableName; this._columns = _columns; this._where = {}; @@ -9031,22 +10551,15 @@ class SelectQueryBuilder { this._offset = n; return this; } - /** 执行查询 */ + /** + * 执行查询 —— 拼出 AST 后交给 Executor(**唯一**执行管线)。 + * + * 注意不要再为"无 JOIN"加一条 `engine.find` 快路:那条路会绕过 + * 投影/列校验/LIMIT 下推判定/maxRowsPerQuery,从而与 `db.query()` 给出不同结果 + * (B-3 修复前的实际状态)。executor 自己会在安全时下推到引擎,不需要 builder 代劳。 + */ async execute() { - // 有 JOIN → 通过 Executor 执行 - if (this._joins.length > 0 && this._executor) { - const ast = this.toAST(); - return this._executor.execute(ast); - } - // 无 JOIN → 直接调用引擎 - return this.engine.find(this.tableName, { - table: this.tableName, - columns: this._columns, - where: this._where, - orderBy: this._orderBy.length > 0 ? this._orderBy : undefined, - limit: this._limit, - offset: this._offset, - }); + return this._executor.execute(this.toAST()); } /** 获取 AST */ toAST() { @@ -9067,24 +10580,43 @@ class SelectQueryBuilder { // UpdateQueryBuilder // --------------------------------------------------------------------------- class UpdateQueryBuilder { - constructor(engine, tableName, _updates, onWrite, onHooks) { - this.engine = engine; + constructor(tableName, _updates, executor, + /** + * TABLE API 的生命周期回调(`beforeUpdate` / `afterUpdate` / onWrite 广播)。 + * + * 为什么由 `Table` 注入而不是 builder 自己触发:builder 的职责是**产出 AST**, + * 它不该知道钩子/广播的存在(否则又会像修复前那样"builder 顺带把写入也做了", + * 从而绕过 Executor)。钩子被包裹在**唯一管线**之外, + * 顺序与修复前完全一致:before → executor → onWrite → after。 + * + * 回调接收**实际执行的语句**(含 builder 上累积的 where), + * 而不是构造 builder 时的空 where —— 后者会让 `beforeUpdate` 的 + * `query.where` 永远是 `{}`(钩子拿不到过滤条件,等于信息缺失)。 + */ + hooks) { this.tableName = tableName; this._updates = _updates; + this.executor = executor; + this.hooks = hooks; this._where = {}; - this.onWrite = onWrite; - this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } + /** + * 执行更新 —— 走 Executor(唯一的写管线)。 + * + * 修复前这里直接调 `engine.update`:`$subquery` / `$col` / `$exists` 无人解析, + * 引擎层 matchWhere 判 UNKNOWN → **静默影响 0 行**(返回 0 且无报错)。 + * 引擎层为此加过"检测未解析标记就抛 NOT_SUPPORTED"的防御 —— 那是把 + * "管线缺失"暴露成用户错误;正确做法是把请求送进唯一管线。 + */ async execute() { - const query = { table: this.tableName, where: this._where }; - await this.onHooks?.('beforeUpdate', [query, this._updates]); - const count = await this.engine.update(this.tableName, query, this._updates); - this.onWrite?.(this.tableName); - await this.onHooks?.('afterUpdate', [query, this._updates, count]); + const stmt = this.toAST(); + await this.hooks?.before?.(stmt); + const count = await this.executor.execute(stmt); + await this.hooks?.after?.(count, stmt); return count; } toAST() { @@ -9095,23 +10627,24 @@ class UpdateQueryBuilder { // DeleteQueryBuilder // --------------------------------------------------------------------------- class DeleteQueryBuilder { - constructor(engine, tableName, onWrite, onHooks) { - this.engine = engine; + constructor(tableName, executor, + /** TABLE API 生命周期回调,语义见 `UpdateQueryBuilder` 的说明 */ + hooks) { this.tableName = tableName; + this.executor = executor; + this.hooks = hooks; this._where = {}; - this.onWrite = onWrite; - this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } + /** 执行删除 —— 走 Executor(同 UpdateQueryBuilder.execute 的理由) */ async execute() { - const query = { table: this.tableName, where: this._where }; - await this.onHooks?.('beforeDelete', [query]); - const count = await this.engine.delete(this.tableName, query); - this.onWrite?.(this.tableName); - await this.onHooks?.('afterDelete', [query, count]); + const stmt = this.toAST(); + await this.hooks?.before?.(stmt); + const count = await this.executor.execute(stmt); + await this.hooks?.after?.(count, stmt); return count; } toAST() { @@ -9163,7 +10696,21 @@ class Table { } // ---- 查询 ---- select(columns = ['*']) { - return new SelectQueryBuilder(this.engine, this.name, columns, this.executor); + return new SelectQueryBuilder(this.name, this.requireExecutor('select'), columns); + } + /** + * v0.8.0(B-3):取执行器;缺失即**明确失败**。 + * + * 修复前 builder 在拿不到 executor 时会退化为"直接调引擎" —— 于是 + * `db.table('t')` 与 `db.query()` 两条路径的语义不同(投影/列校验/LIMIT 下推/ + * maxRowsPerQuery 在直通路径上全部缺失)。现在只保留一条管线: + * 没有 executor 就没有可用的查询 API,显式报错而不是悄悄降级。 + */ + requireExecutor(operation) { + if (!this.executor) { + throw new DatabaseError(`Table.${operation}() requires a query executor (obtain the table via db.table())`, 'NOT_SUPPORTED'); + } + return this.executor; } /** v0.4.0: 流式查询 — 逐行回调,不物化全部结果 */ async stream(onRow, query = {}) { @@ -9188,12 +10735,37 @@ class Table { }, onRow); } // ---- 更新 ---- + /** + * v0.8.0(B-3):写操作也走**唯一管线**(Executor),生命周期钩子由本方法注入。 + * + * 修复前 `UpdateQueryBuilder` 直接调 `engine.update`:`$subquery`/`$col` 无人解析 + * → 引擎判 UNKNOWN → 静默影响 0 行;`beforeUpdate`/`afterUpdate` 的触发点也因此 + * 与 SQL 路径不同(一条在 builder 里、一条在 core 里)。 + */ update(updates) { - return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite, this.onHooks); + return new UpdateQueryBuilder(this.name, updates, this.requireExecutor('update'), { + // 钩子接收实际语句(含 builder 累积的 where),与 SQL 路径的 + // `triggerStatementHooks` 传参形状一致:{ table, where } + before: async (stmt) => { + await this.onHooks?.('beforeUpdate', [{ table: stmt.table, where: stmt.where }, updates]); + }, + after: async (count, stmt) => { + this.onWrite?.(this.name); + await this.onHooks?.('afterUpdate', [{ table: stmt.table, where: stmt.where }, updates, count]); + }, + }); } // ---- 删除 ---- delete() { - return new DeleteQueryBuilder(this.engine, this.name, this.onWrite, this.onHooks); + return new DeleteQueryBuilder(this.name, this.requireExecutor('delete'), { + before: async (stmt) => { + await this.onHooks?.('beforeDelete', [{ table: stmt.from, where: stmt.where }]); + }, + after: async (count, stmt) => { + this.onWrite?.(this.name); + await this.onHooks?.('afterDelete', [{ table: stmt.from, where: stmt.where }, count]); + }, + }); } // ---- 聚合 ---- async count(where) { @@ -9348,6 +10920,17 @@ var TokenType; TokenType["TO"] = "TO"; // 标识符 & 字面量 TokenType["IDENTIFIER"] = "IDENTIFIER"; + /** + * v0.8.0: 分隔标识符(双引号包裹,SQL 标准 `"name"`)。 + * + * 此前双引号被当作字符串定界符处理,`SELECT "name" FROM t` 会静默产出一个名为 + * `'name'` 的**常量列**(行数正确、值全错、无任何报错),且该行为被 + * tests/sql/lexer.test.ts 钉死为期望。现按 SQL 标准区分: + * 'x' → STRING(字符串字面量) + * "x" → QUOTED_IDENTIFIER(标识符,用于含特殊字符/保留字/大小写敏感的列名) + * 双引号内以 "" 表示一个双引号。 + */ + TokenType["QUOTED_IDENTIFIER"] = "QUOTED_IDENTIFIER"; TokenType["STRING"] = "STRING"; TokenType["NUMBER"] = "NUMBER"; // 运算符 & 分隔符 @@ -9469,7 +11052,7 @@ class Lexer { } /** 读取下一个 Token */ nextToken() { - this.skipWhitespace(); + this.skipWhitespaceAndComments(); let tok; switch (this.ch) { case ',': @@ -9525,23 +11108,16 @@ class Lexer { } break; case "'": + tok = this.readString(); + break; case '"': - tok = this.readString(this.ch); + // v0.8.0: 双引号 = 分隔标识符(SQL 标准),不再当作字符串字面量 + tok = this.readQuotedIdentifier(); break; case '': tok = { type: TokenType.EOF, value: '', position: this.position }; break; default: - // SQL 注释: -- 行注释 - if (this.ch === '-' && this.peekChar() === '-') { - this.skipLineComment(); - return this.nextToken(); - } - // SQL 注释: /* 块注释 */ - if (this.ch === '/' && this.peekChar() === '*') { - this.skipBlockComment(); - return this.nextToken(); - } if (this.isLetter(this.ch)) { const ident = this.readIdentifier(); const keyword = KEYWORDS[ident.toUpperCase()]; @@ -9585,9 +11161,31 @@ class Lexer { return ''; return this.input[this.readPosition]; } - skipWhitespace() { - while (this.ch === ' ' || this.ch === '\t' || this.ch === '\n' || this.ch === '\r') { - this.readChar(); + /** + * 跳过空白与注释(v0.8.0:改为**循环**而非递归)。 + * + * 此前在 default 分支里用 `return this.nextToken()` 递归跳过注释, + * 递归深度 = 连续注释个数:两万个连续的块注释就会直接 + * `RangeError: Maximum call stack size exceeded`(且是原生错误而非 DatabaseError, + * 调用方无法按 code 分类)。现在统一在一个循环里消费空白与注释。 + */ + skipWhitespaceAndComments() { + for (;;) { + // 空白 + while (this.ch === ' ' || this.ch === '\t' || this.ch === '\n' || this.ch === '\r') { + this.readChar(); + } + // -- 行注释 + if (this.ch === '-' && this.peekChar() === '-') { + this.skipLineComment(); + continue; + } + // /* 块注释 */ + if (this.ch === '/' && this.peekChar() === '*') { + this.skipBlockComment(); + continue; + } + return; } } /** 跳过 -- 行注释到行尾 */ @@ -9596,17 +11194,26 @@ class Lexer { this.readChar(); } } - /** 跳过块注释 slash-star ... star-slash */ + /** + * 跳过块注释 slash-star ... star-slash + * + * v0.8.0 根治:未闭合的块注释必须**报错**。 + * 此前循环到 EOF 就直接返回、不抛错,于是 `DELETE FROM t WHERE id = '4' /*` + * 会**照常执行删除**(审计实测真的删掉了 1 行);SQLite 会报 + * `unterminated /* comment`。任何被截断/拼接的 SQL 都会因此静默改变语义。 + */ skipBlockComment() { - this.readChar(); // skip * - this.readChar(); // move past * + const start = this.position; + this.readChar(); // skip '/' + this.readChar(); // skip '*' while (this.ch !== '' && !(this.ch === '*' && this.peekChar() === '/')) { this.readChar(); } - if (this.ch !== '') { - this.readChar(); // skip * - this.readChar(); // skip / + if (this.ch === '') { + throw new DatabaseError(`Unterminated block comment at position ${start}`, 'PARSE_ERROR'); } + this.readChar(); // skip '*' + this.readChar(); // skip '/' } readIdentifier() { const start = this.position; @@ -9632,28 +11239,37 @@ class Lexer { } return this.input.slice(start, this.position); } - readString(quote) { + /** + * 读取单引号字符串字面量。 + * + * v0.8.0 根治:**移除反斜杠转义**(此前只支持单引号前的反斜杠)。 + * + * 此前只识别「反斜杠 + 单引号」(MySQL 方言的半个实现):双反斜杠不解转义,于是 + * - 单引号前的反斜杠被静默吞掉; + * - 以反斜杠结尾的 Windows 路径会**吞掉闭引号**,抛出一条 + * 与用户输入无关的 "Unterminated string literal"; + * - 更严重的是,参数绑定器 params.ts 只把单引号翻倍、不处理反斜杠, + * 两份词法规则不一致 —— "参数不可能改变 SQL 结构"这条不变量在文本层已不成立。 + * + * SQL 标准(以及 SQLite / PostgreSQL,本项目对齐的方言)中反斜杠是普通字符, + * 反斜杠本身是普通字符、引号靠两个连续单引号表达。移除方言转义后,词法器与绑定器的字符串边界判定 + * 完全一致,且任意以反斜杠结尾的参数值都能正确绑定。 + */ + readString() { const start = this.position + 1; // 跳过一个引号 this.readChar(); // 跳过开始引号 let value = ''; while (this.ch !== '') { - if (this.ch === quote) { - // v0.3.3: 支持 SQL 标准 '' 转义(两个连续引号 = 一个引号) - if (this.peekChar() === quote) { - value += quote; + if (this.ch === "'") { + // SQL 标准 '' 转义(两个连续引号 = 一个引号) + if (this.peekChar() === "'") { + value += "'"; this.readChar(); // 跳过第二个引号 this.readChar(); continue; } break; // 结束引号(由 nextToken 的 readChar 跳过) } - // 反斜杠转义(兼容旧语法) - if (this.ch === '\\' && this.peekChar() === quote) { - this.readChar(); - value += quote; - this.readChar(); - continue; - } value += this.ch; this.readChar(); } @@ -9668,6 +11284,42 @@ class Lexer { position: start, }; } + /** + * v0.8.0: 读取双引号分隔标识符(SQL 标准 `"column"`)。 + * + * 双引号内以 `""` 表示一个双引号字符(与单引号字符串的 `''` 规则对称)。 + * 未闭合同样显式报错,与字符串字面量保持一致。 + */ + readQuotedIdentifier() { + const start = this.position; + const contentStart = this.position + 1; + this.readChar(); // 跳过开始引号 + let value = ''; + while (this.ch !== '') { + if (this.ch === '"') { + if (this.peekChar() === '"') { + value += '"'; + this.readChar(); + this.readChar(); + continue; + } + break; + } + value += this.ch; + this.readChar(); + } + if (this.ch === '') { + throw new DatabaseError(`Unterminated quoted identifier at position ${start}`, 'PARSE_ERROR'); + } + if (value.length === 0) { + throw new DatabaseError(`Empty quoted identifier at position ${start}`, 'PARSE_ERROR'); + } + return { + type: TokenType.QUOTED_IDENTIFIER, + value, + position: contentStart, + }; + } isLetter(ch) { return /[a-zA-Z_]/.test(ch); } @@ -10040,6 +11692,7 @@ class Parser { } const right = this.parseSelect(); const unionStmt = { type: 'SELECT_UNION', left, right, all: all || undefined }; + this.adoptTrailingClauses(unionStmt, right); // 链式 UNION if (this.curTokenIs(TokenType.UNION)) { return this.parseUnionChain(unionStmt); @@ -10056,11 +11709,42 @@ class Parser { } const right = this.parseSelect(); const unionStmt = { type: 'SELECT_UNION', left, right, all: all || undefined }; + this.adoptTrailingClauses(unionStmt, right); if (this.curTokenIs(TokenType.UNION)) { return this.parseUnionChain(unionStmt); } return unionStmt; } + /** + * v0.8.0(A26):把"最后一个 SELECT 上的 ORDER BY / LIMIT / OFFSET"上移到 + * 复合查询节点,并把这些子句从该 SELECT 上**移除**。 + * + * 为什么必须"移动"而不是"复制": + * - 语法上它们写在最后一个 SELECT 之后,但 SQL 语义作用于整个 UNION + * (`A UNION B LIMIT 3` 是"合并去重后取前 3 行",不是"B 取前 3 行"); + * - 若只复制不移除,LIMIT 会**应用两次** —— 正是 A5/A6 那类"两处都生效" + * 缺陷的同一个坑(B 先被截断,再对合并结果截断,结果可能少行)。 + * + * 由于 `parseSelect` 无法预知后面有没有 UNION(它在返回后才知道), + * 只能先让它照常解析、发现 UNION 时再回收 —— 这比"预读 UNION"简单且无回溯。 + */ + adoptTrailingClauses(unionStmt, right) { + // 链式 UNION 时右侧可能已是 UNION 节点,其尾部子句在创建时已上移 + if (right.type !== 'SELECT') + return; + if (right.orderBy) { + unionStmt.orderBy = right.orderBy; + delete right.orderBy; + } + if (right.limit !== undefined) { + unionStmt.limit = right.limit; + delete right.limit; + } + if (right.offset !== undefined) { + unionStmt.offset = right.offset; + delete right.offset; + } + } /** 解析 JOIN 子句列表 */ parseJoinClauses() { const joins = []; @@ -10171,6 +11855,23 @@ class Parser { this.expect(TokenType.RPAREN); values.push(rowValues); } while (this.curTokenIs(TokenType.COMMA)); + // v0.8.0 根治:显式列名时校验每行值的个数与列数一致。 + // + // 此前完全不校验 arity,实测: + // INSERT INTO t (id, name) VALUES ('4','z',9) → 多余的 9 被**静默丢弃** + // INSERT INTO t VALUES ('3') → 静默写入半行(其余列缺失) + // SQLite / MySQL 都会报错。静默丢弃/截断属于"静默数据丢失", + // 必须在解析期拦下(此时无需 schema,只要有显式列名即可判断)。 + // + // 未显式给列名时(INSERT INTO t VALUES (...))需要 schema 才能判断个数, + // 由 executor 在拿到 schema 后校验(见 validateInsertArity)。 + if (columns) { + for (let i = 0; i < values.length; i++) { + if (values[i].length !== columns.length) { + throw this.error(`INSERT column/value count mismatch: ${columns.length} column(s) but row ${i + 1} has ${values[i].length} value(s)`); + } + } + } return { type: 'INSERT', into: tableName, @@ -10181,12 +11882,23 @@ class Parser { // =================================================================== // UPDATE // =================================================================== + /** + * v0.8.0: 创建**无原型**对象,用于以用户提供的列名为键的映射。 + * + * 背景:`obj['__proto__'] = v` 在普通对象上会触发原型 setter 而不是新增属性, + * 于是 `UPDATE t SET __proto__ = 'x'` 的 sets 变成 `{}` —— 既没写进去、也不会被 + * v0.7.4 新增的"未知列显式报错"预检看到,表现为"返回成功但什么都没发生"。 + * 建表路径在 v0.7.1 已用 Object.create(null) 防护,此处补齐其余路径。 + */ + newColumnMap() { + return Object.create(null); + } parseUpdate() { this.expect(TokenType.UPDATE); const tableName = this.expectIdentifier('table name'); this.expect(TokenType.SET); - // SET col=val, ... - const sets = {}; + // SET col=val, ...(v0.8.0: 无原型对象,防 __proto__ 列名静默吞掉赋值) + const sets = this.newColumnMap(); do { if (this.curTokenIs(TokenType.COMMA)) this.nextToken(); @@ -10194,7 +11906,7 @@ class Parser { this.expect(TokenType.EQ); sets[col] = this.parseValue(); } while (this.curTokenIs(TokenType.COMMA)); - let where = {}; + let where = this.newColumnMap(); if (this.curTokenIs(TokenType.WHERE)) { this.nextToken(); where = this.parseCondition(); @@ -10208,7 +11920,7 @@ class Parser { this.expect(TokenType.DELETE); this.expect(TokenType.FROM); const tableName = this.expectIdentifier('table name'); - let where = {}; + let where = this.newColumnMap(); if (this.curTokenIs(TokenType.WHERE)) { this.nextToken(); where = this.parseCondition(); @@ -10375,22 +12087,46 @@ class Parser { // =================================================================== // 条件表达式 // =================================================================== - /** condition → simple_cond ((AND|OR) simple_cond)* */ + /** + * condition → or_expr + * + * v0.8.0 根治:AND 的优先级必须高于 OR(SQL 标准)。 + * + * 此前实现是**纯左折叠**的单层循环: + * `a = 1 OR a = 2 AND b = 3` → `(a = 1 OR a = 2) AND b = 3` ← 错 + * 标准语义应为: + * `a = 1 OR a = 2 AND b = 3` → `a = 1 OR (a = 2 AND b = 3)` ← 对 + * + * 影响面:任何"权限条件 OR 业务条件 AND 软删标记"的写法都会静默返回错误行集 + * (审计实测:4 行表上返回 1 行而非 3 行)。这是本层影响面最大、改动最小的缺陷。 + * + * 现在按标准文法分层:or_expr → and_expr (OR and_expr)* + * and_expr → unary (AND unary)* + * unary → [NOT] primary + * 并且只在**确实有多个操作数**时才包 $and/$or,避免生成 {$and:[x]} 这种冗余节点 + * (否则 `WHERE a = 1` 的结构会从 `{a:{$eq:1}}` 变成 `{$and:[{a:{$eq:1}}]}`, + * 破坏既有 AST 契约与下游引擎的索引下推识别)。 + */ parseCondition() { - let left = this.parseSimpleCondition(); - while (this.curTokenIs(TokenType.AND) || this.curTokenIs(TokenType.OR)) { - const isAnd = this.curTokenIs(TokenType.AND); + return this.parseOrExpression(); + } + /** or_expr → and_expr (OR and_expr)* */ + parseOrExpression() { + const operands = [this.parseAndExpression()]; + while (this.curTokenIs(TokenType.OR)) { this.nextToken(); - const right = this.parseSimpleCondition(); - if (isAnd) { - // 合并到 $and - left = { $and: [left, right] }; - } - else { - left = { $or: [left, right] }; - } + operands.push(this.parseAndExpression()); } - return left; + return operands.length === 1 ? operands[0] : { $or: operands }; + } + /** and_expr → simple_cond (AND simple_cond)* */ + parseAndExpression() { + const operands = [this.parseSimpleCondition()]; + while (this.curTokenIs(TokenType.AND)) { + this.nextToken(); + operands.push(this.parseSimpleCondition()); + } + return operands.length === 1 ? operands[0] : { $and: operands }; } /** 公共 WHERE 条件入口(供 CASE WHEN 求值等外部场景,v0.3.1) */ parseWhere() { @@ -10433,8 +12169,12 @@ class Parser { if (isNot) this.nextToken(); this.expect(TokenType.NULL); - const result = {}; - result[column] = isNot ? { $ne: null } : { $eq: null }; + const result = this.newColumnMap(); + // v0.8.0 三值语义:IS NULL / IS NOT NULL 是**谓词**,不是等值比较。 + // 此前生成为 { $eq: null } / { $ne: null } —— 在 SQL 标准里 + // `x = NULL` 恒为 UNKNOWN(不保留任何行),而 IS NULL 要保留 NULL 行。 + // 两者语义不同,必须用不同标记(见 query/sql-compare.ts 的谓词说明)。 + result[column] = isNot ? { $isNotNull: true } : { $isNull: true }; return result; } // BETWEEN val1 AND val2 @@ -10443,7 +12183,12 @@ class Parser { const low = this.parseValue(); this.expect(TokenType.AND); const high = this.parseValue(); - const result = {}; + // v0.8.0 根治:BETWEEN 必须是**范围**条件。 + // 此前把同一个对象同时当成"操作符对象"和"操作数"传给 `$eq` + // (`{ $eq: { $gte, $lte } }`),matchOperator 的 `$eq` 收到一个对象再去比较, + // 结果只对"值恰好等于该对象"的行成立 —— 实测 `WHERE n BETWEEN 1 AND 2` + // 在 (1,2,NULL,3) 上只返回 1 行(应 2 行),静默错值。 + const result = this.newColumnMap(); result[column] = { $gte: low, $lte: high }; return result; } @@ -10454,8 +12199,19 @@ class Parser { const low = this.parseValue(); this.expect(TokenType.AND); const high = this.parseValue(); - const result = {}; - result[column] = { $not: { $gte: low, $lte: high } }; + const result = this.newColumnMap(); + // v0.8.0:NOT BETWEEN ≡ (x < low) OR (x > high),直接展开为字段级 `$or`。 + // + // 此前生成 `{ $not: { $gte, $lte } }`。这**曾经**恒为空集:字段级 `$not` + // 把内层对象当"单个条件对象",key `$gte`/`$lte` 被当成列名去取 + // `row['$gte']` → undefined → 整条恒 UNKNOWN → 取反仍 UNKNOWN → 全部排除。 + // + // 求值器已修正(内层按操作符对象解释),但这里仍选择展开为 `$or`: + // - `$or` 的三值行为(含 NULL 时 UNKNOWN)是显式可读的; + // - 避免依赖"$not 作用于比较"与"$not 作用于谓词"(如 `$isNull`)的差别。 + // 两条路径都有测试锁定(tests/v080-sql-three-valued.test.ts 与 + // tests/sql/where-matcher.test.ts 的 `$not` 用例)。 + result[column] = { $or: [{ $lt: low }, { $gt: high }] }; return result; } // NOT LIKE / NOT IN(NOT 后紧跟 LIKE 或 IN) @@ -10468,13 +12224,13 @@ class Parser { if (this.curTokenIs(TokenType.SELECT)) { const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $nin: { $subquery: subquery } }; return result; } const values = this.parseValueList(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $nin: values }; return result; } @@ -10483,7 +12239,7 @@ class Parser { this.nextToken(); // skip NOT this.nextToken(); // skip LIKE const pattern = this.parseValue(); - const result = {}; + const result = this.newColumnMap(); result[column] = { $not: { $like: pattern } }; return result; } @@ -10492,7 +12248,7 @@ class Parser { if (this.curTokenIs(TokenType.LIKE)) { this.nextToken(); const pattern = this.parseValue(); - const result = {}; + const result = this.newColumnMap(); result[column] = { $like: pattern }; return result; } @@ -10504,13 +12260,13 @@ class Parser { if (this.curTokenIs(TokenType.SELECT)) { const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $in: { $subquery: subquery } }; return result; } const values = this.parseValueList(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $in: values }; return result; } @@ -10518,7 +12274,7 @@ class Parser { if (this.curTokenIs(TokenType.AND) || this.curTokenIs(TokenType.OR) || this.curTokenIs(TokenType.RPAREN) || this.curTokenIs(TokenType.EOF) || (this.curToken.type === TokenType.IDENTIFIER && ['THEN', 'END', 'ELSE', 'NULLS', 'LIMIT', 'OFFSET', 'ORDER', 'GROUP', 'HAVING', 'UNION', 'WHERE'].includes(this.curToken.value.toUpperCase()))) { - const result = {}; + const result = this.newColumnMap(); result[column] = { $eq: true }; return result; } @@ -10529,24 +12285,52 @@ class Parser { this.nextToken(); // skip ( const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { [op]: { $subquery: subquery } }; return result; } - // 尝试解析列引用(identifier DOT identifier 格式) + // 解析比较运算符右侧的操作数(v0.8.0: 支持列引用) + // + // 此前只有 `a.b`(带点)形态被当作列引用,裸标识符一律走 parseValue → + // `WHERE x = y` 抛 PARSE_ERROR("Expected value, got \"y\"")。于是列对列比较 + // 必须写成 `WHERE t.x = t.y`,而多表 JOIN 里未限定列恰恰是最自然的写法 + // (`ON k = k` 同样报错)。 + // + // 判定依据是**位置**而不是猜测:能走到这里说明运算符已被消费,当前 token + // 就是右侧操作数。这个位置上除了列名只可能是字面量,而字面量有各自的 + // token 类型(NUMBER / STRING / TRUE / FALSE / NULL)—— 因此 + // **IDENTIFIER 在操作数位置必然是列引用**,没有别的可能: + // `id = 5` / `id = 'a'` / `active = TRUE` / `x = NULL` → 都不是 IDENTIFIER ✓ + // `x = y` → y 是 IDENTIFIER → 列引用 ✓ + // + // 拼错的列名(`WHERE id = nmae`)因此变成 **COLUMN_NOT_FOUND**(列不存在)而不是 + // PARSE_ERROR —— 这是更准确的诊断:问题不是"语法不对",而是"没有这一列"。 let value; - if ((this.curToken.type === TokenType.IDENTIFIER || this._isKeywordAsIdent()) && - this.peekTokenIs(TokenType.DOT)) { - const colRef = this.parseColumnRef(); - value = { $col: colRef }; + if (this.curToken.type === TokenType.QUOTED_IDENTIFIER) { + // 分隔标识符("col")在操作数位置同样是列引用 + value = { $col: this.expectColumnReference() }; + } + else if (this.curToken.type === TokenType.IDENTIFIER && !this._isReservedKeywordToken()) { + value = { $col: this.expectColumnReference() }; } else { value = this.parseValue(); } - const result = {}; + const result = this.newColumnMap(); result[column] = { [op]: value }; return result; } + /** + * v0.8.0:当前 token 是否"看起来像标识符但其实是关键字"。 + * + * 操作数位置上的 IDENTIFIER 必然是列引用(见上),但 `_isKeywordAsIdent()` 为真 + * 的那些 token 是**关键字**(它们可能作为列名出现在别处,但不会作为比较的右操作数 + * 出现)—— 例如 `WHERE a = AND` 之类的非法输入应当继续报 PARSE_ERROR, + * 而不是被当成列名再去查表。 + */ + _isReservedKeywordToken() { + return this.curToken.type !== TokenType.IDENTIFIER && this._isKeywordAsIdent(); + } /** 解析 EXISTS (SELECT ...) / NOT EXISTS (SELECT ...) */ parseExistsCondition(negate) { this.expect(TokenType.LPAREN); @@ -10567,6 +12351,19 @@ class Parser { peekTokenIs(type) { return this.peekToken.type === type; } + /** + * 解析一个列引用:`a` 或 `a.b`(v0.8.0 支持未限定形态)。 + * 与 `parseColumnRef` 的区别:后者还接受 CASE/数字/字符串字面量(SELECT 列表用), + * 这里只接受真正的列名。 + */ + expectColumnReference() { + const col = this.expectIdentifier('column reference'); + if (this.curTokenIs(TokenType.DOT)) { + this.nextToken(); + return `${col}.${this.expectIdentifier('column name after "."')}`; + } + return col; + } parseComparisonOp() { switch (this.curToken.type) { case TokenType.EQ: @@ -10625,16 +12422,20 @@ class Parser { return this.parseCaseExpressionText(); } // 数字常量列:SELECT 1 FROM t(常见于 EXISTS 子查询) + // v0.8.0: 只返回常量文本,别名交给调用方 parseColumnWithAlias 处理 + //(此前这里直接 return,导致 `SELECT 1 AS one` 的别名被丢弃, + // 投影时 row['1'] → undefined → 整行变成 {})。 if (this.curTokenIs(TokenType.NUMBER)) { const value = this.curToken.value; this.nextToken(); return value; } // v0.4.0: 字符串常量列:SELECT 'value' FROM t + // v0.8.0: 同样只返回字面量文本,别名由 parseColumnWithAlias 叠加 if (this.curTokenIs(TokenType.STRING)) { const value = this.curToken.value; this.nextToken(); - return `'${value}'`; + return `'${value.replace(/'/g, "''")}'`; } // 聚合函数? if (this.curTokenIs(TokenType.COUNT) || @@ -10830,6 +12631,13 @@ class Parser { throw this.error(`Expected ${type}, got "${this.curToken.value}"`); } expectIdentifier(context) { + // v0.8.0: 分隔标识符 "col" 与普通标识符等价(但不参与关键字识别, + // 因此可以用它引用保留字列名,如 "order" / "select") + if (this.curToken.type === TokenType.QUOTED_IDENTIFIER) { + const val = this.curToken.value; + this.nextToken(); + return val; + } if (this.curToken.type === TokenType.IDENTIFIER || this._isKeywordAsIdent()) { const val = this.curToken.value; this.nextToken(); @@ -10842,6 +12650,8 @@ class Parser { return (this.curToken.type !== TokenType.EOF && this.curToken.type !== TokenType.ILLEGAL && this.curToken.type !== TokenType.STRING && + // v0.8.0: 分隔标识符由 expectIdentifier 的显式分支处理,不走"关键字当标识符"兜底 + this.curToken.type !== TokenType.QUOTED_IDENTIFIER && this.curToken.type !== TokenType.NUMBER && this.curToken.type !== TokenType.COMMA && this.curToken.type !== TokenType.LPAREN && @@ -10894,29 +12704,212 @@ function parseWhereCondition(sql) { * * JOIN / GROUP BY / DISTINCT 逻辑在此层处理。 */ -// --------------------------------------------------------------------------- -// 分组 / 去重键编码(v0.7.4) -// --------------------------------------------------------------------------- /** - * v0.7.4: 分组/去重键的类型安全编码 —— 此前 `String(v ?? 'null')` 使 - * null 与字符串 'null' 合并为一组(GROUP BY 静默少组),`String(v ?? '\0')` - * 使 null/undefined/'\0' 在 DISTINCT/UNION 中互相吞并。类型前缀编码后 - * 各类型独立,仅同类型同值合并(与 where-matcher 的 === 语义一致)。 + * v0.8.0: 解析 `expr AS alias` 中的 `expr` 取值来源。 + * + * 此前只处理"字符串常量"与"列引用"两种情况,数字/布尔/NULL 常量会走 + * `row[source]` → undefined,于是 `SELECT 1 AS one FROM t` 返回 `[{}]` + * (键在、值为 undefined,JSON 序列化后整个键消失), + * 而这正是 EXISTS 子查询里最常见的写法(`SELECT 1 FROM ...`)。 */ -function encodeGroupKey(v) { - if (v === null) - return 'n'; - if (v === undefined) - return 'u'; - if (typeof v === 'string') - return `s${v}`; - if (typeof v === 'number') - return `d${v}`; - if (typeof v === 'boolean') - return `b${v}`; - if (typeof v === 'object') - return `o${JSON.stringify(v)}`; - return `x${String(v)}`; +/** + * 列引用取值(唯一实现)。 + * + * v0.8.0(A25):为什么必须有这一个函数。 + * + * "从行里取一列"此前散落在 4 处、规则各不相同: + * - `projectColumns`(where-matcher)精确匹配 + 唯一后缀匹配; + * - `resolveAliasSource` 只做 `row[text]`,**没有**后缀回退; + * - 聚合参数直接 `r[argCol]`,既没有后缀回退,也没有"列不存在"的报错; + * - `matchWhere` 的 `resolveField` 又有自己的一套。 + * 于是 `SELECT COUNT(t.n) FROM t` 返回 0:行键是 `n`,而聚合参数是 `t.n`, + * 直接取值得到 undefined,再被 `.filter(v => v != null)` 剔除 —— 计数为 0, + * **不报错**。而同一个 `t.n` 写在 SELECT 列表里(`SELECT t.n`)却正常, + * 因为那条路径会先剥离别名前缀。 + * + * 本函数统一三件事:别名前缀剥离 → 精确匹配 → 唯一后缀匹配; + * 都不命中时由调用方决定是抛错还是返回 undefined(`onMissing`)。 + */ +function resolveColumnValue(row, reference, opts) { + const text = reference.trim(); + if (text in row) + return row[text]; + // 别名前缀(`t.n` → `n`):JOIN 行用 `alias.col` 作键,但单表路径的 + // 行键不带前缀,两种形态都必须支持。 + if (text.includes('.')) { + const bare = text.split('.').pop(); + if (bare in row) + return row[bare]; + } + // 唯一后缀匹配:行键 `t.n` 而引用写作 `n` + let found; + let hits = 0; + for (const key of Object.keys(row)) { + if (key.endsWith(`.${text}`)) { + found = row[key]; + hits += 1; + } + } + if (hits === 1) + return found; + if (opts.strict) { + throw new DatabaseError(hits > 1 + ? `Ambiguous column "${text}" in ${opts.context}: present in multiple tables` + : `Unknown column "${text}" in ${opts.context}`, 'COLUMN_NOT_FOUND', { column: text }); + } + return undefined; +} +/** + * 解析聚合函数表达式 —— **唯一**的聚合识别实现。 + * + * 匹配形态:`FUNC( [DISTINCT] arg ) [AS alias]`,且整个表达式必须被聚合调用 + * 完整覆盖(`COUNT(1) + 1` 之类复合表达式**不**匹配,由调用方另行处理)。 + * + * 为什么把"输出键"与"参数"一起返回:聚合在 GROUP BY 与单行聚合两条路径上 + * 都要用同一个 (函数, 参数, 输出键) 三元组,此前两处各写一个正则、 + * 各算一次输出键,是 A25 那类漂移的温床。 + */ +function parseAggregateExpression(expr) { + const m = expr.trim().match(/^(COUNT|SUM|AVG|MIN|MAX)\s*\(\s*([\s\S]+?)\s*\)\s*(?:AS\s+([A-Za-z_][A-Za-z0-9_]*))?$/i); + if (!m) + return null; + const func = m[1].toUpperCase(); + let arg = m[2].trim(); + const alias = m[3]; + const distinct = /^DISTINCT\s+/i.test(arg); + if (distinct) + arg = arg.replace(/^\s*DISTINCT\s+/i, '').trim(); + const exprKey = `${func}(${distinct ? 'DISTINCT ' : ''}${arg})`; + return { func, arg, outputKey: alias || expr.trim(), distinct, exprKey }; +} +/** + * 判断 SELECT 列表达式是否为聚合表达式(含别名)。 + * 与 `parseAggregateExpression` 共用同一正则 —— 此前 `analyzeSelect` 用 + * `/^(COUNT|SUM|AVG|MIN|MAX)\(/` 单独判断,而执行路径用另一条正则: + * `COUNT (n)`(函数名与括号间有空格)会被前者判为"有聚合"、被后者判为 + * "不是聚合" → 走非聚合分支、输出 null。 + */ +function isAggregateExpression(expr) { + return parseAggregateExpression(expr) !== null; +} +/** + * 从 WHERE/HAVING 条件里提取聚合表达式原文(A23)。 + * + * 条件里的聚合可能出现在两个位置: + * - **键位**:`HAVING SUM(n) > 25` 解析为 `{ 'SUM(n)': { $gt: 25 } }` + * —— 表达式在键上,这是 parser 当前的形态; + * - **值位**:`HAVING 25 < SUM(n)` 之类的反向写法会把聚合放在操作数里, + * 这里一并扫描(`$gt: 'SUM(n)'` 不会出现,但 `{$eq:'SUM(n)'}` 可能出现)。 + * + * 只做**字符串级**提取(把找到的片段交给 parseAggregateExpression 校验), + * 不做表达式求值 —— 求值由调用方在拿到分组行之后进行。 + */ +function collectAggregateExpressionsInWhere(where) { + const found = []; + if (!where) + return found; + const scanText = (text) => { + const re = /(?:COUNT|SUM|AVG|MIN|MAX)\s*\([^()]*(?:\([^()]*\)[^()]*)*\)/gi; + let m; + while ((m = re.exec(text)) !== null) + found.push(m[0]); + }; + const walk = (cond) => { + for (const [key, value] of Object.entries(cond)) { + if (key === '$and' || key === '$or') { + for (const sub of (Array.isArray(value) ? value : [value])) + walk(sub); + continue; + } + if (key === '$not') { + walk(value); + continue; + } + // 键位:表达式原文作键 + scanText(key); + // 值位:操作数可能是字符串形态的表达式 + if (typeof value === 'string') + scanText(value); + else if (Array.isArray(value)) { + for (const item of value) + if (typeof item === 'string') + scanText(item); + } + else if (value !== null && typeof value === 'object') { + for (const operand of Object.values(value)) { + if (typeof operand === 'string') + scanText(operand); + } + } + } + }; + walk(where); + return found; +} +/** + * 列引用 → 输出键:剥离表别名前缀(`t.n` → `n`)。 + * + * 单表查询的行键不带前缀,而 SELECT 列表可以写 `t.n`;输出键使用裸列名 + * 与 `projectRow` 的 `projectColumns` 行为一致(否则 `SELECT t.n FROM t` + * 在聚合路径输出 `t.n`、在普通路径输出 `n`,同一查询两种行形状)。 + */ +function bareReference(reference) { + const text = reference.trim(); + if (!text.includes('.')) + return text; + return text.split('.').pop(); +} +function resolveAliasSource(source, row) { + const text = source.trim(); + // 字符串常量(含 SQL 标准 '' 转义还原) + const strLit = text.match(/^'(.*)'$/s); + if (strLit) + return strLit[1].replace(/''/g, "'"); + // 数字常量(含负号与小数) + if (/^-?\d+(\.\d+)?$/.test(text)) + return Number(text); + if (/^TRUE$/i.test(text)) + return true; + if (/^FALSE$/i.test(text)) + return false; + if (/^NULL$/i.test(text)) + return null; + // 列引用:走统一解析(此前只做 row[text],`t.n` 形态取不到值) + return resolveColumnValue(row, text, { strict: false, context: 'SELECT list' }); +} +/** + * v0.8.0: 数值型聚合的单次遍历实现。 + * + * 为什么替换 `Math.min(...arr)` / `Math.max(...arr)`: + * 展开实参会把整个数组压进调用栈,20 万行同组即 RangeError(栈溢出); + * 而这是普通查询就能触发的崩溃,不是边界场景。 + * + * 空集语义(SQL 标准):SUM/AVG/MIN/MAX 对**空集或全 NULL** 返回 NULL。 + * 此前统一返回 0,使 `SUM(x) = 0` 与"没有数据"不可区分。 + * 注意 COUNT 不在此列 —— COUNT 对空集返回 0(由调用方处理)。 + */ +function reduceNumeric(values, op) { + if (values.length === 0) + return null; + let acc = op === 'SUM' || op === 'AVG' ? 0 : values[0]; + for (let i = 0; i < values.length; i++) { + const v = values[i]; + switch (op) { + case 'SUM': + case 'AVG': + acc += v; + break; + case 'MIN': + if (i > 0 && v < acc) + acc = v; + break; + case 'MAX': + if (i > 0 && v > acc) + acc = v; + break; + } + } + return op === 'AVG' ? acc / values.length : acc; } /** 解析 "CASE WHEN c1 THEN v1 WHEN c2 THEN v2 ELSE v3 END [AS alias]" */ function parseCaseExpression(expr) { @@ -10981,7 +12974,30 @@ class QueryExecutor { this.engine = engine; this.maxRowsPerQuery = maxRowsPerQuery; } + /** + * 执行一条语句。 + * + * v0.8.0:**同步抛错也必须表现为 rejected promise**。 + * + * `db.query()` 是 async 的,但 `async` 只把**函数体内**的同步抛错转成 rejection; + * 这里 `return this.executeXxx(stmt)` 的调用发生在 async 函数的同步前导段, + * 若被调方法在**进入第一个 await 之前**就抛错(例如 INSERT 的 arity 校验、 + * VALIDATION_ERROR),异常会穿过 async 边界成为**同步抛出**: + * await expect(db.query(...)).rejects.toMatchObject(...) // 断言不生效,测试崩 + * db.query(...).catch(...) // 永远不执行 + * 对调用方而言这是不可预期的 —— 同一个 API 有的错误走 catch、有的走 try。 + * 因此这里显式包一层 try/catch 统一成 rejection(`async` 方法里 `throw` + * 一定产出 rejected promise)。 + */ async execute(stmt) { + try { + return await this.dispatch(stmt); + } + catch (error) { + throw error instanceof Error ? error : new DatabaseError(String(error), 'QUERY_ERROR'); + } + } + dispatch(stmt) { switch (stmt.type) { case 'SELECT': return this.executeSelect(stmt); case 'SELECT_UNION': return this.executeSelectUnion(stmt); @@ -11009,40 +13025,101 @@ class QueryExecutor { // =================================================================== // UNION(v0.3.0) // =================================================================== - /** 递归执行 UNION / UNION ALL,返回合并结果 */ - async executeSelectUnion(stmt) { - const leftRows = await this.executeSelectPart(stmt.left); - const rightRows = await this.executeSelectPart(stmt.right); + /** + * 递归执行 UNION / UNION ALL,返回合并结果。 + * + * v0.8.0(A26):尾部 ORDER BY / LIMIT / OFFSET 作用于**整个**复合结果。 + * + * 此前 `SelectUnionStatement` 没有这三个字段,parser 把它们挂在右侧 SELECT 上 + * —— 于是 `A UNION B ORDER BY id DESC` 只排 B(实测返回 1,2,4,3), + * `A UNION B LIMIT 3` 只截断 B(实测返回 4 行)。现在由本方法在合并 + 去重 + * **之后**统一排序与截断(顺序:合并 → 去重 → 排序 → OFFSET/LIMIT)。 + */ + async executeSelectUnion(stmt, purpose = 'result') { + const leftRows = await this.executeSelectPart(stmt.left, purpose); + const rightRows = await this.executeSelectPart(stmt.right, purpose); // 列名以左侧为准,右侧只取值 const leftCols = leftRows.length > 0 ? Object.keys(leftRows[0]) : []; const normalized = leftRows.map((row) => row); + let result; if (stmt.all) { for (const row of rightRows) normalized.push(this.projectUnionRow(row, leftCols)); - return normalized; + result = normalized; } - // UNION 去重(与 DISTINCT 相同的列值拼接键) - const seen = new Set(); - const result = []; - for (const row of normalized) { - const key = Object.values(row).map(encodeGroupKey).join('\x1f'); - if (!seen.has(key)) { - seen.add(key); - result.push(row); + else { + // UNION 去重(与 DISTINCT 相同的列值拼接键) + const seen = new Set(); + result = []; + for (const row of normalized) { + const key = Object.values(row).map(encodeValueKey).join('\x1f'); + if (!seen.has(key)) { + seen.add(key); + result.push(row); + } + } + for (const row of rightRows) { + const projected = this.projectUnionRow(row, leftCols); + const key = Object.values(projected).map(encodeValueKey).join('\x1f'); + if (!seen.has(key)) { + seen.add(key); + result.push(projected); + } } } - for (const row of rightRows) { - const projected = this.projectUnionRow(row, leftCols); - const key = Object.values(projected).map(encodeGroupKey).join('\x1f'); - if (!seen.has(key)) { - seen.add(key); - result.push(projected); - } + // 尾部子句(作用于整个复合结果)。 + // 排序键可能引用**输出列序号**(`ORDER BY 1`)或输出列名 —— 复合结果没有表 + // 上下文,因此这里只按结果行的键解析,不做 schema 校验。 + if (stmt.orderBy && stmt.orderBy.length > 0) { + result = this.orderCompoundResult(result, stmt.orderBy); + } + const offset = stmt.offset ?? 0; + if (offset > 0 || stmt.limit !== undefined) { + const limit = stmt.limit ?? result.length; + result = result.slice(offset, offset + limit); } return result; } - async executeSelectPart(part) { - return part.type === 'SELECT_UNION' ? this.executeSelectUnion(part) : this.executeSelect(part); + /** + * 复合结果排序:把 ORDER BY 项解析为结果行的键。 + * + * 支持两种写法(与单表 SELECT 一致): + * - 输出列序号:`ORDER BY 1` → 第 1 个输出列(SQL 标准,UNION 场景最常见, + * 因为各分支的输出列名可能不同); + * - 输出列名:`ORDER BY id` → 结果行的 `id` 键。 + * 引用不存在的列时返回原序(不静默丢弃排序 —— 排序键缺失本身不改变行集合, + * 但会让用户以为已排序;故此处抛 COLUMN_NOT_FOUND,与 SELECT 路径口径一致)。 + */ + orderCompoundResult(rows, orderBy) { + const firstRow = rows[0]; + const outputColumns = firstRow ? Object.keys(firstRow) : []; + const resolved = orderBy.map((item) => { + const asOrdinal = /^\d+$/.test(item.column.trim()) ? Number(item.column.trim()) : null; + if (asOrdinal !== null) { + if (asOrdinal < 1 || asOrdinal > outputColumns.length) { + throw new DatabaseError(`ORDER BY position ${asOrdinal} is out of range: compound query has ${outputColumns.length} output column(s)`, 'QUERY_ERROR'); + } + return { ...item, column: outputColumns[asOrdinal - 1] }; + } + // 允许带别名前缀(`ORDER BY t.id` → `id`) + const bare = item.column.includes('.') ? item.column.split('.').pop() : item.column; + if (outputColumns.length > 0 && !(item.column in firstRow) && !(bare in firstRow)) { + throw new DatabaseError(`Unknown column "${item.column}" in ORDER BY of compound query. Output columns: ${outputColumns.join(', ')}`, 'COLUMN_NOT_FOUND'); + } + return { ...item, column: item.column in firstRow ? item.column : bare }; + }); + return applyOrderBy(rows, resolved); + } + /** + * 执行一个 SELECT 部件(含 UNION)。 + * + * @param purpose 透传给 `executeSelect` —— 作为写语句的输入行源时必须传 + * `'source'`,否则 `maxRowsPerQuery` 会在写入前静默截断行源(A29)。 + */ + async executeSelectPart(part, purpose = 'result') { + if (part.type === 'SELECT_UNION') + return this.executeSelectUnion(part, purpose); + return this.executeSelect(part, purpose); } /** 将 UNION 右侧行投影为左侧列结构(按位置取值) */ projectUnionRow(row, leftCols) { @@ -11141,29 +13218,104 @@ class QueryExecutor { // =================================================================== // SELECT // =================================================================== - async executeSelect(stmt) { + /** + * v0.8.0: SELECT 语句的**执行形态分析**(单一事实来源)。 + * + * 为什么把它独立出来:core.queryStream 此前在 core.ts 里**自己重新推导**了一遍 + * "这条 SELECT 能不能走引擎快路径、列投影怎么算",与 executor 的规则各写一份, + * 于是两者漂移出四类静默不一致(实测): + * SELECT id AS x FROM t query=[{x}] stream=[{id,v}](全列 + 原列名) + * SELECT t.id FROM t query=[{id}] stream=[{}](空对象) + * ... LIMIT 2 OFFSET 1 query=1 行 stream=2 行(引擎与 executor 各切一次) + * ... LIMIT 0 query=[] stream=1 行 + * + * 现在由 executor 提供唯一判定,core 只消费结论,不再复制规则。 + */ + analyzeSelect(stmt) { const hasGroupBy = !!(stmt.groupBy && stmt.groupBy.length > 0); const hasAggregate = !hasGroupBy && this._hasAggregateColumn(stmt.columns); - let rows; const isJoinQuery = !!(stmt.joins && stmt.joins.length > 0); - // CASE WHEN 表达式需要原始列求值(SELECT 列或 WHERE 条件中的 CASE): - // 引擎层取全行,投影统一在 executor 端完成 const needsRawRows = this.hasCaseColumn(stmt.columns) || (!!stmt.where && this.whereHasCase(stmt.where)); - // v0.3.3: ORDER BY 引用 SELECT 别名 → 引擎层不排序/不截断,投影后再排序 const orderByAlias = this.orderByUsesSelectAlias(stmt); - // v0.3.3: SELECT 列含 `col AS alias` → 引擎层投影会丢失源列,统一取原始行由 executor 投影 const hasSelectAlias = stmt.columns.some((c) => /\s+AS\s+\w+$/i.test(c)); + // LIMIT/OFFSET 下推安全性:只有"引擎返回的行 == LIMIT 应当作用其上的行"时才可下推。 + // 此前 compileSelect 无条件下推、executor 末尾又切一次 → LIMIT 被应用两遍 + // (4 行表上 LIMIT 2 OFFSET 1 只返回 1 行)。 + const limitPushdownSafe = !hasGroupBy && !hasAggregate && !isJoinQuery + && !stmt.fromSubquery && !stmt.distinct + && !(stmt.having && Object.keys(stmt.having).length > 0) + && !orderByAlias && !needsRawRows && !hasSelectAlias; + // 引擎层投影是否与 executor 语义等价:仅当全部列都是裸 * 或简单列引用 + //(可带 table. 前缀)时成立。出现 AS 别名/常量/CASE/聚合就交给 executor 投影。 + let engineEquivalentProjection = stmt.columns.length > 0; + for (const c of stmt.columns) { + if (c === '*') + continue; + if (/^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/.test(c)) + continue; + engineEquivalentProjection = false; + break; + } + // 真流式(引擎 findStream 直连)的充分条件:所有会改变行集合/行序/行形状的 + // 阶段都不存在,且 WHERE 已解析(无子查询、无 $col 关联引用)。 + const streamable = engineEquivalentProjection + && !hasGroupBy && !hasAggregate && !isJoinQuery && !stmt.fromSubquery + && !stmt.distinct && !(stmt.having && Object.keys(stmt.having).length > 0) + && !(stmt.orderBy && stmt.orderBy.length > 0) + && !needsRawRows && !orderByAlias && !hasSelectAlias + && !this.hasCorrelatedRefs(stmt.where) + && !containsUnresolvedSubqueries(stmt.where); + return { + hasGroupBy, + hasAggregate, + isJoinQuery, + needsRawRows, + orderByAlias, + hasSelectAlias, + limitPushdownSafe, + engineEquivalentProjection, + streamable, + }; + } + /** + * @param purpose `'result'`(默认)= 结果交付给用户,受 `maxRowsPerQuery` 截断; + * `'source'` = 作为写语句的输入行源,**不得**截断(见下方说明)。 + */ + async executeSelect(stmt, purpose = 'result') { + const shape = this.analyzeSelect(stmt); + const { hasGroupBy, hasAggregate, isJoinQuery, needsRawRows, orderByAlias, hasSelectAlias, limitPushdownSafe } = shape; + let rows; + // v0.8.0(A37):WHERE 里的列引用也必须校验存在性。 + // + // 投影侧的同类校验(assertProjectionColumnsExist)早已存在,但 WHERE 侧一直 + // 没有 —— 于是 `$col`(列对列比较)引用到不存在的列时,求值器取不到值 → + // 返回 UNRESOLVED → 比较判 UNKNOWN → **所有行被过滤且不报错**。实测修复前: + // SELECT id FROM t WHERE id = oops → [] + // SELECT id FROM t WHERE id = t.oops → [] + // SELECT id FROM t WHERE x = nope → [] + // 三条都会静默返回空集(`oops` 在 SQL 里是列引用,因为没有别的字面量形态)。 + // 这正是"未解析引用静默变 false"这一整类缺陷(PLAN §3 根因 7)的最后一块。 + await this.assertWhereColumnsExist(stmt, isJoinQuery); if (stmt.fromSubquery) { // v0.4.0: FROM (SELECT ...) 派生表 — 子查询结果作为行源 const subRows = await this.executeSelectPart(stmt.fromSubquery); rows = isJoinQuery ? await this.executeJoinSelect(stmt, subRows.map((row) => this.prefixRow(row, stmt.alias ?? ''))) : subRows; - if (!isJoinQuery && stmt.where && Object.keys(stmt.where).length > 0) { - // 非 JOIN:WHERE 在 executor 端过滤(子查询结果不经引擎) - stmt.where = await this.resolveSubqueries(stmt.where); - rows = rows.filter((row) => matchWhere(row, stmt.where)); + if (!isJoinQuery) { + // v0.8.0(A36):派生表行源不带任何别名前缀,因此 `d.id` 形态的引用 + // 必须剥离前缀(与非 JOIN 单表路径同一规则)。 + // + // 此前这里**不做**归一化:`SELECT d.id FROM (SELECT id, g FROM t) AS d` + // 直接拿 `d.id` 去投影,行里只有 `id` → 静默返回 `[]`; + // 而同一查询写成 `SELECT id ...` 却正确 —— 同一行源两种写法结论相反。 + this.normalizeUnprefixedReferences(stmt, [stmt.alias ?? stmt.from]); + if (stmt.where && Object.keys(stmt.where).length > 0) { + // 非 JOIN:WHERE 在 executor 端过滤(子查询结果不经引擎) + stmt.where = await this.resolveSubqueries(stmt.where); + rows = rows.filter((row) => matchWhere(row, stmt.where)); + } } } else if (!stmt.from && !isJoinQuery) { @@ -11175,29 +13327,9 @@ class QueryExecutor { rows = await this.executeJoinSelect(stmt); } else { - // 非 JOIN 路径:规范化 WHERE 字段名(剥离主表别名前缀,修复 WHERE u.age > 20) - if (stmt.where && Object.keys(stmt.where).length > 0) { - stmt.where = this.normalizeWhereColumns(stmt.where, [stmt.alias ?? stmt.from]); - } - // v0.4.0: ORDER BY / GROUP BY 带表前缀同样剥离(如 ORDER BY u.age) + // 非 JOIN 路径:行键不带别名前缀 → 统一归一化引用 const mainAliases = [stmt.alias ?? stmt.from].filter(Boolean); - if (stmt.orderBy && stmt.orderBy.length > 0) { - stmt.orderBy = stmt.orderBy.map((o) => ({ ...o, column: this.stripAlias(o.column, mainAliases) })); - } - if (stmt.groupBy && stmt.groupBy.length > 0) { - stmt.groupBy = stmt.groupBy.map((c) => this.stripAlias(c, mainAliases)); - } - // v0.4.0: SELECT 列带表前缀剥离(SELECT u.name → name,行键无前缀) - stmt.columns = stmt.columns.map((c) => { - if (c === '*' || /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(c) || /^\s*CASE\b/i.test(c) || /^'/.test(c)) - return c; - const m = c.match(/^(.+?)\s+AS\s+(\w+)$/i); - if (m) { - const stripped = this.stripAlias(m[1].trim(), mainAliases); - return stripped === m[1].trim() ? c : `${stripped} AS ${m[2]}`; - } - return this.stripAlias(c, mainAliases); - }); + this.normalizeUnprefixedReferences(stmt, mainAliases); // WHERE 含关联子查询($col 引用外层行)→ 逐行绑定上下文求值 if (stmt.where && this.hasCorrelatedRefs(stmt.where)) { const plan = compileStatement(hasGroupBy || hasAggregate ? { ...stmt, columns: ['*'] } : stmt); @@ -11208,8 +13340,11 @@ class QueryExecutor { plan.limit = undefined; plan.offset = undefined; } - rows = await this.engine.find(plan.table, { ...plan, where: this.stripCorrelatedExists(stmt.where) }); - rows = await this.filterCorrelated(rows, stmt.where); + // v0.8.0:引擎层只做**可下推部分**的预过滤,逐行谓词整体交给 filterCorrelated。 + // 此前把原始 where(含 `$col`)直接交给引擎,引擎判 UNKNOWN → 候选行 0 → + // `WHERE t.x = t.y` 静默空结果(详见 enginePreFilter 文档)。 + rows = await this.engine.find(plan.table, { ...plan, where: this.enginePreFilter(stmt.where) }); + rows = await this.filterCorrelated(rows, stmt.where, mainAliases); } else { // 先解析子查询 @@ -11219,6 +13354,11 @@ class QueryExecutor { const plan = compileStatement(hasGroupBy || hasAggregate ? { ...stmt, columns: ['*'] } : stmt); if (needsRawRows || hasSelectAlias) plan.columns = ['*']; + if (!limitPushdownSafe) { + // 不安全:不把 LIMIT/OFFSET 交给引擎,由末尾统一应用(只应用一次) + plan.limit = undefined; + plan.offset = undefined; + } if (orderByAlias) { plan.orderBy = undefined; plan.limit = undefined; @@ -11233,7 +13373,19 @@ class QueryExecutor { } if (hasGroupBy) rows = this.executeGroupBy(rows, stmt); - if (stmt.distinct) + // v0.8.0(A27):DISTINCT 作用于**输出列**,因此必须发生在投影之后。 + // + // 此前顺序是 DISTINCT → 投影,于是 `SELECT DISTINCT dept AS d FROM e` + // 对 `{id, dept, v}` 原始行去重(4 行互不相同)→ 再投影成 `{d}` → 返回 4 行 + // `a,a,b,b`;而 `SELECT DISTINCT dept FROM e` 返回 2 行 —— 加一个别名就改变了 + // 去重语义。SQL 标准中 DISTINCT 作用于 SELECT 的输出列。 + // + // 例外(保留投影前位置):`SELECT DISTINCT dept FROM e ORDER BY v` —— `v` + // 不在输出列里,去重后它就不存在了,无法再排序。SQL 标准禁止这种写法, + // 但既有实现支持它(语义是"排序后按输出列去重"),因此保留: + // 此时按 `DISTINCT → ORDER BY` 的顺序执行(见下方分支)。 + const distinctBeforeProjection = !!stmt.distinct && this.distinctNeedsPreProjectionSort(stmt); + if (distinctBeforeProjection) rows = this.executeDistinct(rows); if (stmt.having && Object.keys(stmt.having).length > 0) { // v0.4.0 修复: HAVING 中的标量子查询(HAVING SUM(o.amount) > (SELECT AVG(...)))需先解析 @@ -11249,8 +13401,42 @@ class QueryExecutor { } rows = rows.filter((row) => matchWhere(row, stmt.having)); } - if (stmt.orderBy && stmt.orderBy.length > 0) + // v0.8.0(A23):分组行的输出投影必须在 HAVING **之后** —— HAVING 可能引用 + // 未出现在 SELECT 里的聚合(`SELECT g FROM t GROUP BY g HAVING SUM(n) > 25`), + // 那些内部键要到过滤完成后才能丢弃。 + if (hasGroupBy) + rows = this.projectGroupedRows(rows, stmt); + /** + * ORDER BY 的应用时机。 + * + * 排序必须发生在"排序列仍然存在"的阶段,因此分两种情况: + * - 排序键全部是**输出列**(或 SELECT 别名,别名在投影后才存在 → 走下方 + * 投影后的 `orderByAlias` 分支)→ 投影后再排序(顺序更自然,也让 + * `SELECT DISTINCT ... ORDER BY <输出列>` 得到"先去重再排序"的标准语义); + * - 排序键引用了**未出现在 SELECT 里的列**(`SELECT name FROM t ORDER BY id`, + * 以及 `SELECT DISTINCT dept FROM e ORDER BY v`)→ 必须在投影前排序, + * 否则该列已被丢弃、排序无从进行。 + * + * 此前无条件在投影前排序(`applyOrderBy` 一行),于是 A27 的 DISTINCT + * 必然发生在投影前 —— 两者互为因果,必须一起修正。 + */ + const orderNeedsRawColumns = !!stmt.orderBy && stmt.orderBy.length > 0 + && (distinctBeforeProjection || !this.orderByReferencesOutputColumns(stmt)); + if (stmt.orderBy && stmt.orderBy.length > 0 && !orderByAlias && orderNeedsRawColumns) { rows = applyOrderBy(rows, stmt.orderBy); + } + // v0.8.0 根治:投影前校验列引用存在性(此前未知列静默产出 {} 行)。 + // + // 实测缺陷:`SELECT bogus FROM t`(4 行表)返回 `[{},{},{},{}]`, + // `SELECT NAME FROM t`(列名是 name)同样返回 `[{},{}]` —— 行数正确、内容全空、 + // 无任何报错;`GROUP BY bogus` 会把全表并成一组,`ORDER BY bogus` 顺序随机。 + // SQLite/MySQL 三处都报 "no such column"。 + // + // 校验时机选在 JOIN/子查询合并完成后(此时是最终行形态),且仅在**未发生聚合**时 + // 进行 —— 聚合/分组会把行替换为计算键,普通列本就不存在(那属于另一类语义问题)。 + if (!hasAggregate) { + this.assertProjectionColumnsExist(rows, stmt.columns, stmt); + } // v0.7.3: `SELECT *, col AS alias` —— 此前 columns[0]==='*' 直接不投影, // 别名列/常量列丢失。仅当 '*' 是唯一列时跳过投影(projectRow 对裸 '*' // 合并原行全部列,其余表达式覆盖/追加) @@ -11258,21 +13444,48 @@ class QueryExecutor { && !(stmt.columns.length === 1 && stmt.columns[0] === '*')) { rows = rows.map((row) => this.projectRow(row, stmt.columns)); } + // v0.8.0(A27):DISTINCT 的规范位置 —— 投影之后(作用于输出列) + if (stmt.distinct && !distinctBeforeProjection) + rows = this.executeDistinct(rows); // v0.3.3: ORDER BY 别名 → 投影后才存在,需在投影后重新排序 if (orderByAlias && stmt.orderBy && stmt.orderBy.length > 0) { rows = applyOrderBy(rows, stmt.orderBy); } - const offset = stmt.offset ?? 0; - const limit = stmt.limit ?? rows.length; - rows = rows.slice(offset, offset + limit); - // 全局行数上限保护 - if (this.maxRowsPerQuery > 0 && rows.length > this.maxRowsPerQuery) { + // v0.8.0: LIMIT/OFFSET 的应用点,两条路径互斥且**只执行一次**: + // - limitPushdownSafe === true → 引擎已按同一 offset/limit 完成切片,此处不再切片; + // - limitPushdownSafe === false → 引擎拿不到 limit/offset,此处是唯一应用点。 + // 此前两条路径都切了一次,导致 4 行表上 `LIMIT 2 OFFSET 1` 只返回 1 行(应 2,3)。 + if (!limitPushdownSafe) { + const offset = stmt.offset ?? 0; + const limit = stmt.limit ?? rows.length; + rows = rows.slice(offset, offset + limit); + } + // 全局行数上限保护。 + // + // v0.8.0(A29 根治):只在"结果交付给用户"时截断;作为写语句的输入行源 + //(`INSERT INTO dst SELECT ...`)时**不截断** —— 否则用户设置的 + // `maxRowsPerQuery` 会静默减少写入行数: + // maxRowsPerQuery = 2 时 `INSERT INTO dst SELECT id FROM src`(src 有 4 行) + // 会只写入 2 行并返回成功(实测)。这不是"限制查询规模",而是**静默丢数据**。 + // 写路径由上层的 `assertWithinRowLimit` 显式报错(而不是静默截断), + // 二者配合才能同时满足"保护内存"与"不丢数据"。 + if (purpose === 'result' && this.maxRowsPerQuery > 0 && rows.length > this.maxRowsPerQuery) { rows = rows.slice(0, this.maxRowsPerQuery); } return rows; } // ---- JOIN ---- async executeJoinSelect(stmt, preloadedMain) { + // v0.8.0(A37):JOIN ON 的列引用也要校验存在性。 + // + // 修复前 `ON l.k = rn.nope` 这类拼错的列名会走到 matchWhere → $col 取不到值 + // → UNKNOWN → **没有任何行能连接上**,用户看到的是空结果而不是"列不存在"。 + // 这里与 SELECT 的 WHERE 校验共用同一实现(不同 context 文案与歧义策略)。 + for (const join of stmt.joins ?? []) { + if (join.on && Object.keys(join.on).length > 0) { + await this.validateJoinOnColumns(stmt, join); + } + } const mainAlias = stmt.alias ?? stmt.from; // v0.4.0: 派生表行源已预加载(行带别名前缀) let mainRows; @@ -11478,76 +13691,280 @@ class QueryExecutor { return result; } // ---- GROUP BY ---- + /** + * 分组聚合。 + * + * v0.8.0(A22/A23)两项行为修正,都源于**分组语义只有一个定义**这一原则: + * + * 1. **GROUP BY 可用 SELECT 别名**(A22)。 + * SQL 标准允许 `SELECT g AS grp, COUNT(*) FROM t GROUP BY grp`。 + * 此前 `grp` 直接当列名去 `row['grp']` 取到 undefined → 全部行落入同一组; + * 更糟的是后续投影阶段发现 `g` 不在输出行里,抛 + * `COLUMN_NOT_FOUND Unknown column "g" in SELECT list` —— 用户看到的是 + * 一个与真正原因(GROUP BY 引用别名)无关的错误。 + * 这里先把 GROUP BY 项解析为**基列**(别名 → 其源表达式),再做分组与输出。 + * + * 2. **HAVING 可用未出现在 SELECT 里的聚合**(A23)。 + * `SELECT g FROM t GROUP BY g HAVING SUM(n) > 25` 是标准写法。 + * 此前聚合只在 `stmt.columns` 上计算,`SUM(n)` 从未被求值 → + * HAVING 的键 `SUM(n)` 在行里不存在 → matchWhere 取到 undefined → + * UNKNOWN → **空结果**(`HAVING SUM(n) > 25` 返回 [],而 MAX(n) > 25 同样 [])。 + * 现在把 SELECT 列与 HAVING 里出现的聚合**并集**一起算进分组行,再交给 + * HAVING 过滤。多算的聚合只影响中间行,最终输出仍严格按 SELECT 列投影, + * 因此不会泄漏额外列。 + */ executeGroupBy(rows, stmt) { + // 1) GROUP BY 项 → 基列(别名解析,A22) + const groupColumns = this.resolveGroupByColumns(stmt); const groups = new Map(); for (const row of rows) { // v0.7.4: 类型安全键编码 —— 此前 String(row[col] ?? 'null') 使 // null 与字符串 'null' 合并为一组(GROUP BY 静默少组) - const key = stmt.groupBy.map((col) => encodeGroupKey(row[col])).join('\x1f'); + const key = groupColumns + .map((col) => encodeValueKey(resolveColumnValue(row, col, { strict: true, context: 'GROUP BY' }))) + .join('\x1f'); if (!groups.has(key)) groups.set(key, []); groups.get(key).push(row); } + // 2) 需要计算的聚合表达式 = SELECT 列 ∪ HAVING 中的聚合(A23) + const aggregateExprs = this.collectAggregateExpressions(stmt); const result = []; // v0.4.0: 聚合表达式键 → 输出键 映射(HAVING SUM(...) 引用表达式时归一为别名键) const aliasMap = new Map(); for (const groupRows of groups.values()) { + const first = groupRows[0]; const aggregated = {}; - for (const col of stmt.groupBy) - aggregated[col] = groupRows[0][col]; + // 分组列以基列名输出(`GROUP BY grp` 引用别名时输出基列 `g`, + // 与 SELECT 列表里 `g AS grp` 的投影可正确对应) + for (const col of groupColumns) { + aggregated[col] = resolveColumnValue(first, col, { strict: true, context: 'GROUP BY' }); + } + // 先算聚合(含仅 HAVING 引用的),统一以 exprKey 与输出键写入 + for (const agg of aggregateExprs) { + const value = agg.distinct + ? this.computeDistinctAggregate(agg.func, groupRows, agg.arg) + : this.computeAggregate(agg.func, groupRows, agg.arg); + if (agg.outputKey !== agg.exprKey) + aliasMap.set(agg.exprKey, agg.outputKey); + // 同时以表达式原文与输出键写入:HAVING 既可能写 `SUM(n)` 也可能写别名 + aggregated[agg.exprKey] = value; + if (agg.outputKey !== agg.exprKey) + aggregated[agg.outputKey] = value; + } + // 再按 SELECT 列表补齐非聚合列(分组列已写;非分组列取组内首行 — + // 这是既有的宽松语义,SQL 标准禁止但此处保持兼容) for (const colExpr of stmt.columns) { if (colExpr === '*') continue; - const m = colExpr.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i); - if (m) { - const [, func, arg, alias] = m; - const value = this.computeAggregate(func.toUpperCase(), groupRows, arg.trim()); - const exprKey = `${func.toUpperCase()}(${arg.trim()})`; - const outputKey = alias || colExpr; - if (outputKey !== exprKey) - aliasMap.set(exprKey, outputKey); - aggregated[outputKey] = value; - } - else if (/^\s*CASE\b/i.test(colExpr)) { + const agg = parseAggregateExpression(colExpr); + if (agg) + continue; // 已在上面写入 + if (/^\s*CASE\b/i.test(colExpr)) { // v0.3.2: 非聚合的 CASE WHEN 列取组内第一行求值 const expr = parseCaseExpression(colExpr); - aggregated[expr?.alias ?? colExpr] = expr ? evaluateCase(expr, groupRows[0]) : null; - } - else if (!stmt.groupBy.includes(colExpr)) { - aggregated[colExpr] = groupRows[0][colExpr]; + const key = expr?.alias ?? colExpr; + if (!(key in aggregated)) { + aggregated[key] = expr ? evaluateCase(expr, first) : null; + } + continue; } + const aliasMatch = colExpr.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (aliasMatch) + continue; // 别名列由投影阶段处理 + // 投影阶段用的键:优先"剥离别名前缀后的基列"(SELECT t.n 的输出键是 n) + const base = bareReference(colExpr); + if (base in aggregated) + continue; + if (colExpr in aggregated) + continue; + aggregated[base] = resolveColumnValue(first, colExpr, { strict: true, context: 'SELECT list' }); } + // 注意:**不在这里**做输出投影。 + // + // 为 HAVING 多算的聚合(`SELECT g ... HAVING SUM(n) > 25` 需要 SUM(n)) + // 必须在 HAVING 求值时仍然可见,而 HAVING 在 GROUP BY 之后、ORDER BY 之前 + // 执行(见 executeSelect 的阶段顺序)。若在此处就把行收缩为 SELECT 输出键, + // HAVING 的 `SUM(n)` 会取到 undefined → UNKNOWN → **空结果** + // (实测:加投影后 `HAVING SUM(n) > 25` 又变回 [])。 + // 因此投影统一由 `projectGroupedRows` 在 HAVING 之后、ORDER BY 之前完成。 result.push(aggregated); } stmt._aggAliasMap = aliasMap; return result; } - computeAggregate(func, rows, col) { + /** 对全部分组行做输出投影(HAVING 之后调用) */ + projectGroupedRows(rows, stmt) { + const groupColumns = this.resolveGroupByColumns(stmt); + return rows.map((row) => this.projectGroupedRow(row, groupColumns, stmt.columns)); + } + /** + * 把分组行收缩为 SELECT 列表要求的输出列(保持 SELECT 顺序)。 + * + * GROUP BY 路径不做通用的 `projectRow`(那会丢掉聚合值),因此需要这一层显式投影。 + * 处理四类列: + * - `*`:保留分组行全部键(`SELECT * ... GROUP BY g` 的既有语义); + * - 聚合表达式:键取 `parseAggregateExpression` 的 outputKey; + * - `expr AS alias`:输出 alias,值从分组行按 expr 取(含二义性由取值函数处理); + * - 裸列引用:输出剥离别名前缀后的基列名。 + */ + projectGroupedRow(aggregated, groupColumns, columns) { + if (columns.some((c) => c === '*')) + return aggregated; + const output = {}; + // 分组列按 SELECT 顺序先输出(它们也是各组的标识列) + for (const col of groupColumns) { + if (col in aggregated) + output[col] = aggregated[col]; + } + for (const colExpr of columns) { + if (colExpr === '*') + continue; + const agg = parseAggregateExpression(colExpr); + if (agg) { + // outputKey 与 exprKey 在聚合阶段都被写入,取 outputKey(别名优先) + output[agg.outputKey] = aggregated[agg.outputKey]; + continue; + } + const caseExpr = /^\s*CASE\b/i.test(colExpr) ? parseCaseExpression(colExpr) : null; + if (caseExpr) { + const key = caseExpr.alias ?? colExpr; + output[key] = aggregated[key]; + continue; + } + const aliasMatch = colExpr.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (aliasMatch) { + output[aliasMatch[2]] = aggregated[aliasMatch[2]]; + continue; + } + const base = bareReference(colExpr); + output[base] = base in aggregated ? aggregated[base] : aggregated[colExpr]; + } + return output; + } + /** + * GROUP BY 项解析为基列:`GROUP BY grp`(grp 是 SELECT 别名)→ `g`。 + * + * 只解析"SELECT 列表里带 AS 别名"与"CASE ... AS 别名"这两种可追踪形态; + * 其余原样返回(真正的列名或表达式)。同名歧义时保持原样 —— 后续 + * `resolveColumnValue` 的 strict 模式会给出明确的 COLUMN_NOT_FOUND/歧义错误。 + */ + resolveGroupByColumns(stmt) { + const aliases = new Map(); + for (const col of stmt.columns) { + const m = col.match(/^(.+?)\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i); + if (m) + aliases.set(m[2], m[1].trim()); + } + return stmt.groupBy.map((col) => { + const target = aliases.get(col.trim()); + if (target === undefined) + return col; + // 别名指向另一个聚合表达式时不能当作分组列(`SELECT COUNT(*) AS c ... GROUP BY c`) + return parseAggregateExpression(target) ? col : target; + }); + } + /** + * 收集本次分组需要计算的全部聚合表达式(SELECT 列 ∪ HAVING),按 exprKey 去重。 + * + * 同时扫描 HAVING 是 A23 的核心:`HAVING SUM(n) > 25` 里的 `SUM(n)` 必须被求值, + * 否则 HAVING 阶段取不到该键。 + */ + collectAggregateExpressions(stmt) { + const collected = new Map(); + const add = (expr) => { + const agg = parseAggregateExpression(expr); + if (!agg) + return; + const existing = collected.get(agg.exprKey); + // SELECT 列优先(它带别名);HAVING 只是补充 + if (!existing) + collected.set(agg.exprKey, agg); + }; + for (const col of stmt.columns) + add(col); + for (const expr of collectAggregateExpressionsInWhere(stmt.having)) + add(expr); + return [...collected.values()]; + } + /** + * 计算单个聚合值。 + * + * v0.8.0: 返回类型放宽为 unknown —— SUM/AVG/MIN/MAX 对空集返回 null(SQL 标准), + * COUNT 仍返回 number。最小/最大改为单次遍历(不再展开实参,消除栈溢出)。 + */ + computeAggregate(func, rows, arg) { // v0.3.2: 聚合参数支持 CASE WHEN 表达式(如 SUM(CASE WHEN age > 18 THEN 1 ELSE 0 END)) - const caseExpr = /^\s*CASE\b/i.test(col) ? parseCaseExpression(col) : null; - // v0.4.0: COUNT(DISTINCT col) 等去重聚合 - const distinctArg = !caseExpr && /^\s*DISTINCT\s+/i.test(col); - const argCol = distinctArg ? col.replace(/^\s*DISTINCT\s+/i, '').trim() : col; + const caseExpr = /^\s*CASE\b/i.test(arg) ? parseCaseExpression(arg) : null; + // v0.4.0: COUNT(DISTINCT col) —— distinct 由 parseAggregateExpression 剥离后传入 + const argCol = arg.trim(); + // v0.8.0(A25):列引用统一走 resolveColumnValue(别名前缀剥离 + 后缀回退)。 + // 取不到值时按 COUNT(*) 之外的情形报 COLUMN_NOT_FOUND,而不是静默计 0: + // 此前 `COUNT(t.n)` 返回 0 且无任何报错,用户会以为"表里没有非空 n"。 const rawValues = rows - .map((r) => (caseExpr ? evaluateCase(caseExpr, r) : r[argCol])) + .map((r) => (caseExpr + ? evaluateCase(caseExpr, r) + : argCol === '*' + ? r + : resolveColumnValue(r, argCol, { strict: true, context: `aggregate ${func}(${argCol})` }))) .filter((v) => v !== null && v !== undefined); - // v0.4.0: COUNT 对原始值去重(任意类型);数值聚合在类型转换后去重 if (func === 'COUNT') { if (argCol === '*') return rows.length; - if (distinctArg) { - return new Set(rawValues.map((v) => (typeof v === 'object' ? JSON.stringify(v) : String(v)))).size; - } return rawValues.length; } - const nums = rawValues.map(Number); - const distinctNums = distinctArg ? Array.from(new Set(nums)) : nums; + const nums = rawValues.map((v) => Number(v)); + // v0.8.0: 数值型聚合一律走单次遍历归约。 + // + // 此前 MIN/MAX 用 `Math.min(...distinctNums)` 展开实参:20 万行同组直接 + // `RangeError: Maximum call stack size exceeded`(原生错误,调用方无法按 code 分类)。 + // 同时把"空集/全 NULL"的返回值从 0 改为 null —— SQL 标准中 SUM/AVG/MIN/MAX + // 对空集返回 NULL,返回 0 会让 `SUM(x) = 0` 与"没有数据"不可区分。 switch (func) { - case 'SUM': return distinctNums.reduce((a, b) => a + b, 0); - case 'AVG': return distinctNums.length === 0 ? 0 : distinctNums.reduce((a, b) => a + b, 0) / distinctNums.length; - case 'MIN': return distinctNums.length === 0 ? 0 : Math.min(...distinctNums); - case 'MAX': return distinctNums.length === 0 ? 0 : Math.max(...distinctNums); - default: return 0; + case 'SUM': return reduceNumeric(nums, 'SUM'); + case 'AVG': return reduceNumeric(nums, 'AVG'); + case 'MIN': return reduceNumeric(nums, 'MIN'); + case 'MAX': return reduceNumeric(nums, 'MAX'); + default: return null; + } + } + /** + * DISTINCT 聚合(`COUNT(DISTINCT col)` / `SUM(DISTINCT col)`)。 + * + * v0.8.0(A25):独立成函数而不是在 computeAggregate 里加分支 —— 去重键 + * 必须用 `encodeValueKey`(类型安全),而"对原始值去重"(COUNT)与 + * "对数值化后去重"(SUM)用的键不同,混在一个函数里正是此前 + * `String(v)` 与 `JSON.stringify(v)` 两套编码并存的原因。 + */ + computeDistinctAggregate(func, rows, arg) { + const values = rows + .map((r) => resolveColumnValue(r, arg, { strict: true, context: `aggregate ${func}(DISTINCT ${arg})` })) + .filter((v) => v !== null && v !== undefined); + if (func === 'COUNT') { + return new Set(values.map((v) => encodeValueKey(v))).size; + } + const nums = values.map((v) => Number(v)); + // 去重**用键判定、用原值参与计算**。 + // + // 不能写成 `Array.from(new Set(nums.map(encodeValueKey))).map(Number)`: + // encodeValueKey 是类型前缀编码(`10` → `'n10'`),`Number('n10')` = NaN —— + // 实测 `SUM(DISTINCT v)` 返回 NaN(应为 10/20)。 + // 键只用于判等,参与归约的必须是原始数值。 + const seen = new Set(); + const distinctNums = []; + for (const n of nums) { + const key = encodeValueKey(n); + if (seen.has(key)) + continue; + seen.add(key); + distinctNums.push(n); + } + switch (func) { + case 'SUM': return reduceNumeric(distinctNums, 'SUM'); + case 'AVG': return reduceNumeric(distinctNums, 'AVG'); + case 'MIN': return reduceNumeric(distinctNums, 'MIN'); + case 'MAX': return reduceNumeric(distinctNums, 'MAX'); + default: return null; } } // ---- DISTINCT(优化:列值拼接代替 JSON.stringify) ---- @@ -11555,7 +13972,7 @@ class QueryExecutor { const seen = new Set(); return rows.filter((row) => { // v0.7.4: 类型安全键编码(null 与 'null' 字符串、'\0' 分离) - const key = Object.values(row).map(encodeGroupKey).join('\x1f'); + const key = Object.values(row).map(encodeValueKey).join('\x1f'); if (seen.has(key)) return false; seen.add(key); @@ -11570,9 +13987,23 @@ class QueryExecutor { if (!schema) throw new DatabaseError(`Table "${stmt.into}" does not exist`, 'TABLE_NOT_FOUND'); const colNames = stmt.columns ?? Object.keys(schema.columns); + // v0.8.0(A17): INSERT 的目标列必须存在。 + // + // 此前**不校验** stmt.columns:`INSERT INTO t (id, nope) VALUES ('1', 2)` 里 + // `nope` 在下面的循环中被当作列名写进 row,随后引擎的 validateRow 只遍历 + // schema 列 → `nope` 被静默丢弃、INSERT 报成功。用户以为写进去了, + // 而 `SELECT nope` 又报 COLUMN_NOT_FOUND —— 写路径与读路径对同一列名给出 + // 相反结论。这里显式报错(与读路径同一错误码),并一次列出全部未知列。 + const unknownColumns = colNames.filter((col) => !(col in schema.columns)); + if (unknownColumns.length > 0) { + throw new DatabaseError(`Unknown column${unknownColumns.length > 1 ? 's' : ''} ${unknownColumns + .map((c) => `"${c}"`) + .join(', ')} in table "${stmt.into}". Known columns: ${Object.keys(schema.columns).join(', ')}`, 'COLUMN_NOT_FOUND'); + } // INSERT INTO ... SELECT ...(v0.3.0) if (stmt.select) { - const selectRows = await this.executeSelectPart(stmt.select); + // A29:行源不得被 maxRowsPerQuery 截断(截断即静默丢写入行) + const selectRows = await this.executeSelectPart(stmt.select, 'source'); // v0.4.0 修复:源列顺序不能依赖行键(validateRow 会跳过 undefined 导致行键缺失/乱序)。 // 以 SELECT 列列表 / 源表 schema 列顺序为准,按位置对齐目标列,缺列不填。 let srcCols = []; @@ -11598,9 +14029,22 @@ class QueryExecutor { } return mapped; }); + // v0.8.0(B-1): 在任何写入之前执行统一校验(未知列/类型/maxLength/min/max/required) + this.assertWithinRowLimit(rows.length); + await this.engine.validatePayload?.(stmt.into, rows, 'insert'); return this.engine.insert(stmt.into, rows); } - const rows = (stmt.values ?? []).map((vals) => { + const rows = (stmt.values ?? []).map((vals, tupleIndex) => { + // v0.8.0(A30):值的个数不得多于目标列。 + // + // 此前多出来的值被**静默丢弃**:`INSERT INTO t (id, n) VALUES ('9', 1, 'extra')` + // 报成功且只写入 (id,n)。用户以为第三个值进了某一列(或者至少会被提示), + // 实际上它消失了 —— 与 A17 同一类"写路径静默丢数据"。反方向的"值少于列" + // 是合法的(缺列走 default/NULL),因此只拒绝多于。 + if (vals.length > colNames.length) { + throw new DatabaseError(`INSERT has ${vals.length} value(s) for ${colNames.length} column(s) in table "${stmt.into}"` + + ` (row ${tupleIndex + 1}); too many values`, 'VALIDATION_ERROR', { table: stmt.into, values: vals.length, columns: colNames.length }); + } const row = {}; for (let i = 0; i < colNames.length; i++) { if (i < vals.length) @@ -11608,8 +14052,29 @@ class QueryExecutor { } return row; }); + // v0.8.0(B-1): 同上 —— 校验先于任何副作用,多行批量整体判定 + this.assertWithinRowLimit(rows.length); + await this.engine.validatePayload?.(stmt.into, rows, 'insert'); return this.engine.insert(stmt.into, rows); } + /** + * v0.8.0(A29):写路径的行数上限保护。 + * + * `maxRowsPerQuery` 此前只在 SELECT 的返回处生效(`executeSelect` 末尾切片), + * 而 `INSERT INTO dst SELECT * FROM huge_src` 的**中间结果集**完全不受约束 —— + * 它由 `executeSelectPart` 直接产出并逐行写入,既不切片也不报错。 + * 于是"防止一次查询把浏览器内存打满"这一配置项在最容易打满内存的路径上失效。 + * + * 这里选择**报错**而不是静默截断:静默只写一部分行会让用户以为全部写完 + * (又一次"写路径静默丢数据")。错误里给出上限值与来源,便于用户改配置或 + * 改写查询。 + */ + assertWithinRowLimit(count) { + if (this.maxRowsPerQuery > 0 && count > this.maxRowsPerQuery) { + throw new DatabaseError(`Statement would write ${count} rows, exceeding maxRowsPerQuery (${this.maxRowsPerQuery}).` + + ' Narrow the source query or raise the limit.', 'QUERY_ERROR', { rows: count, maxRowsPerQuery: this.maxRowsPerQuery }); + } + } async executeUpdate(stmt) { // v0.7.4: 先解析 WHERE 子查询 —— 此前直接 compileStatement 调引擎: // 引擎层 matchWhere 的 $in/$nin 遇未解析的 $subquery 对象恒 false → @@ -11798,7 +14263,255 @@ class QueryExecutor { } return engine.vacuum(); } - /** 列列表是否包含 CASE WHEN 表达式 */ + /** + * SELECT 列表的**输出列名**集合(投影后行里会出现的键)。 + * + * 与 `projectRow` 的键规则保持一致: + * - `*` → 未知(返回 `null` 表示"无法判定",调用方按"包含"处理,避免误判需要原始列); + * - `expr AS alias` → `alias`; + * - 聚合 `FUNC(arg) [AS alias]` → `alias` 或表达式原文; + * - CASE `... AS alias` → `alias`; + * - 字符串/数字常量列 → 表达式原文; + * - 裸列引用 → 剥离别名前缀后的列名。 + */ + outputColumnNames(stmt) { + const names = new Set(); + for (const col of stmt.columns) { + if (col === '*') + return null; + const agg = parseAggregateExpression(col); + if (agg) { + names.add(agg.outputKey); + continue; + } + const caseExpr = /^\s*CASE\b/i.test(col) ? parseCaseExpression(col) : null; + if (caseExpr) { + names.add(caseExpr.alias ?? col); + continue; + } + const aliasMatch = col.match(/^(.+?)\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i); + if (aliasMatch) { + names.add(aliasMatch[2]); + continue; + } + names.add(bareReference(col)); + } + return names; + } + /** ORDER BY 的键是否全部能在**输出列**里找到(决定排序发生在投影前还是投影后) */ + orderByReferencesOutputColumns(stmt) { + if (!stmt.orderBy || stmt.orderBy.length === 0) + return true; + const outputs = this.outputColumnNames(stmt); + if (outputs === null) + return true; // SELECT * + return stmt.orderBy.every((o) => outputs.has(bareReference(o.column))); + } + /** + * DISTINCT 是否必须在投影**前**执行。 + * + * 仅当 ORDER BY 引用了不在输出列里的列时成立:`SELECT DISTINCT dept FROM e ORDER BY v` + * 需要先按 `v` 排序、再按输出列 `dept` 去重。若把 DISTINCT 放到投影后, + * `v` 已被丢弃,排序无从进行(会报 COLUMN_NOT_FOUND)。 + * + * SQL 标准禁止这种写法;此处保留既有语义(排序后去重),并把该例外显式记录, + * 而不是让 DISTINCT 的位置在所有情况下都"碰巧"由排序决定。 + */ + distinctNeedsPreProjectionSort(stmt) { + if (!stmt.orderBy || stmt.orderBy.length === 0) + return false; + return !this.orderByReferencesOutputColumns(stmt); + } + /** + * v0.8.0(A37):校验 JOIN ON 里引用的列在**参与连接的两张表**之一存在。 + * + * `ON a.x = b.y` 的 `a.x` 属于主表或已有 JOIN 表,`b.y` 属于当前 JOIN 表 —— + * 两侧都要能找到归属;否则报 COLUMN_NOT_FOUND(而不是让连接静默产生空结果)。 + * 裸列名只要求"某一侧存在"(`ON k = k` 的既有语义是取主表列)。 + */ + async validateJoinOnColumns(stmt, join) { + const available = new Set(); + const addTable = async (table, alias) => { + const schema = await this.engine.getTableSchema(table); + if (!schema) + return; + for (const col of Object.keys(schema.columns)) { + available.add(col); + available.add(`${alias}.${col}`); + } + }; + await addTable(stmt.from, stmt.alias ?? stmt.from); + for (const other of stmt.joins ?? []) { + await addTable(other.table, other.alias ?? other.table); + if (other === join) + break; + } + await addTable(join.table, join.alias ?? join.table); + const missing = []; + const check = (ref) => { + const text = ref.trim(); + if (!text) + return; + if (available.has(text)) + return; + const bare = text.includes('.') ? text.split('.').pop() : text; + if (available.has(bare)) + return; + missing.push(text); + }; + const walkOperand = (value) => { + if (typeof value !== 'object' || value === null) + return; + for (const [op, operand] of Object.entries(value)) { + if (op === '$col') { + check(String(operand)); + continue; + } + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) + walkOperand(operand); + } + }; + for (const [key, value] of Object.entries(join.on)) { + if (key === '$and' || key === '$or' || key === '$not') + continue; + check(key); + walkOperand(value); + } + if (missing.length > 0) { + throw new DatabaseError(`Unknown column${missing.length > 1 ? 's' : ''} ${missing.map((c) => `"${c}"`).join(', ')}` + + ` in JOIN ON of table "${stmt.from}"`, 'COLUMN_NOT_FOUND', { columns: missing, from: stmt.from }); + } + } + /** + * v0.8.0(A37):校验 WHERE 中出现的列名都存在于行源。 + * + * 覆盖两类引用: + * - **键位**:`WHERE x = 1` 的 `x`; + * - **`$col` 值位**:`WHERE x = y` 的 `y`(parser 生成 `{ x: { $eq: { $col: 'y' } } }`), + * 含 `$and`/`$or`/`$not` 内部的操作数槽。 + * + * 派生表与子查询的行源:跳过(其列来自子查询投影,需要单独解析; + * 由 `normalizeUnprefixedReferences` + 运行时行形状决定)。 + * JOIN:两侧的表别名都要参与判定 —— `t.x` 与另一表的 `u.x` 都属于合法引用。 + * + * 之所以必须是**显式错误**而不是依赖运行时 UNKNOWN:`$col` 取不到值时 + * 三值求值器只能返回 UNKNOWN,而 UNKNOWN 在 WHERE 里表现为"不保留该行" —— + * 用户看到的是"没有匹配数据",与"列名拼错"完全无法区分。 + */ + async assertWhereColumnsExist(stmt, isJoinQuery) { + if (!stmt.where || Object.keys(stmt.where).length === 0) + return; + // 派生表行源:列来自子查询投影,此处不做 schema 校验 + if (stmt.fromSubquery) + return; + if (!stmt.from) + return; + await this.validateWhereColumns(stmt, stmt.where, { + context: 'WHERE', + rejectAmbiguous: isJoinQuery, + }); + } + /** + * 通用的 WHERE 侧列引用校验(SELECT 的 WHERE 与 JOIN 的 ON 共用)。 + * + * @param context 错误消息中的位置描述('WHERE' / 'JOIN ON') + * @param rejectAmbiguous JOIN 场景下裸列名被多表共有 → 报歧义(SQL 标准要求限定)。 + * **JOIN ON 传 false**:`ON a.x = b.x` 里两侧的限定名各自 + * 合法,而 `ON k = k` 这种裸写法在 JOIN 语境下按"取主表列" + * 解释(与既有 joinRows 行为一致),不应因为"两表都有 k" + * 就拒绝 —— 那会把常见的等值连接写法判为错误。 + */ + async validateWhereColumns(stmt, where, opts) { + const isJoinQuery = opts.rejectAmbiguous; + const available = new Set(); + const owners = new Map(); // 裸列名 → 表别名(用于歧义判定) + const collectFrom = async (table, alias) => { + const schema = await this.engine.getTableSchema(table); + if (!schema) + return; + for (const col of Object.keys(schema.columns)) { + available.add(col); + available.add(`${alias}.${col}`); + const prev = owners.get(col); + if (prev === undefined) + owners.set(col, alias); + else if (prev !== alias) + owners.set(col, '*'); // 多表共有 → 歧义 + } + }; + await collectFrom(stmt.from, stmt.alias ?? stmt.from); + if (isJoinQuery) { + for (const join of stmt.joins ?? []) { + await collectFrom(join.table, join.alias ?? join.table); + } + } + const missing = []; + const ambiguous = []; + const check = (ref) => { + const text = ref.trim(); + if (!text) + return; + if (available.has(text)) { + // 裸列名在 JOIN 中若被多张表共有 → 歧义(SQL 标准要求限定) + if (!text.includes('.') && isJoinQuery && owners.get(text) === '*') + ambiguous.push(text); + return; + } + // 唯一后缀匹配(行键可能带别名,而 where 写作裸列名;反向亦然) + const bare = text.includes('.') ? text.split('.').pop() : text; + if (available.has(bare)) + return; + missing.push(text); + }; + const walkOperand = (value) => { + if (typeof value !== 'object' || value === null) + return; + const ops = value; + for (const [op, operand] of Object.entries(ops)) { + if (op === '$col') { + check(String(operand)); + continue; + } + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) { + walkOperand(operand); + } + else if (Array.isArray(operand)) { + for (const item of operand) + walkOperand(item); + } + } + }; + const walkWhere = (cond) => { + for (const [key, value] of Object.entries(cond)) { + if (key === '$and' || key === '$or') { + for (const sub of (Array.isArray(value) ? value : [value])) + walkWhere(sub); + continue; + } + if (key === '$not') { + walkWhere(value); + continue; + } + if (key === '$exists') + continue; // 由子查询执行结果填充 + if (/^\s*CASE\b/i.test(key)) + continue; // CASE 键内含表达式,另行求值 + check(key); + walkOperand(value); + } + }; + walkWhere(where); + if (ambiguous.length > 0) { + throw new DatabaseError(`Ambiguous column${ambiguous.length > 1 ? 's' : ''} ${ambiguous.map((c) => `"${c}"`).join(', ')}` + + ` in ${opts.context}: present in multiple joined tables. Qualify with a table alias.`, 'COLUMN_NOT_FOUND', { columns: ambiguous }); + } + if (missing.length > 0) { + throw new DatabaseError(`Unknown column${missing.length > 1 ? 's' : ''} ${missing.map((c) => `"${c}"`).join(', ')}` + + ` in ${opts.context} of table "${stmt.from}"`, 'COLUMN_NOT_FOUND', { columns: missing, from: stmt.from }); + } + } + /** + * 列列表是否包含 CASE WHEN 表达式 */ hasCaseColumn(columns) { return columns.some((col) => /^\s*CASE\b/i.test(col)); } @@ -11843,6 +14556,67 @@ class QueryExecutor { return false; } getEngine() { return this.engine; } + /** + * v0.8.0: 校验 SELECT 列表中的**裸列引用**在结果行里确实存在,否则抛 COLUMN_NOT_FOUND。 + * + * 为什么必须做:`SELECT bogus FROM t` 此前返回 `[{},{},...]`(行数对、内容空、无报错), + * 这是"静默错误结果"里最难被发现的一类 —— 调用方拿到的是结构正确但全空的表格。 + * + * 判定规则(与 projectRow 的分类保持一致): + * - `*` 跳过; + * - 字符串/数字常量列跳过; + * - CASE 表达式跳过(其内部列引用由 evaluateCase 处理); + * - `expr AS alias`:字符串/数字常量跳过,否则取 `expr` 作为被引用列; + * - 其余视为裸列引用。 + * 存在性检查允许两种形态:精确匹配,或**唯一**以 `.` 结尾(JOIN 行以 `alias.col` 为键)。 + * 若同一个后缀出现在多个表别名下则视为歧义,同样报错(符合"未限定列名歧义应报错"的语义)。 + * + * 结果集为空时无法判定,此时跳过(空表 + 未知列不会误报)。 + */ + assertProjectionColumnsExist(rows, columns, stmt) { + if (rows.length === 0 || columns.length === 0) + return; + const available = new Set(); + for (const row of rows) { + for (const key of Object.keys(row)) + available.add(key); + } + for (const raw of columns) { + const col = raw.trim(); + if (col === '*') + continue; + if (parseCaseExpression(col)) + continue; + let reference = col; + const aliasMatch = col.match(/^(.+?)\s+AS\s+\w+$/i); + if (aliasMatch) + reference = aliasMatch[1].trim(); + // 常量列(字符串 / 数字 / 布尔 / NULL) + if (/^'.*'$/s.test(reference)) + continue; + if (/^-?\d+(\.\d+)?$/.test(reference)) + continue; + if (/^(TRUE|FALSE|NULL)$/i.test(reference)) + continue; + // 聚合表达式(在 hasAggregate 分支已跳过,这里再兜一层防御) + if (/^(COUNT|SUM|AVG|MIN|MAX)\s*\(/i.test(reference)) + continue; + if (available.has(reference)) + continue; + const suffixMatches = []; + for (const key of available) { + if (key.endsWith(`.${reference}`)) + suffixMatches.push(key); + } + if (suffixMatches.length === 1) + continue; + if (suffixMatches.length > 1) { + const owners = suffixMatches.map((k) => k.slice(0, k.length - reference.length - 1)).sort(); + throw new DatabaseError(`Ambiguous column "${reference}" in SELECT list: present in ${owners.join(', ')}`, 'COLUMN_NOT_FOUND', { column: reference, tables: owners, from: stmt.from }); + } + throw new DatabaseError(`Unknown column "${reference}" in SELECT list`, 'COLUMN_NOT_FOUND', { column: reference, from: stmt.from, available: [...available].slice(0, 32) }); + } + } /** * 列投影(v0.3.1):普通列走 projectColumns,CASE WHEN 表达式逐行求值; * v0.3.3: 支持 `col AS alias` 列别名 @@ -11878,6 +14652,13 @@ class QueryExecutor { constCols.push({ key: col, value }); continue; } + // v0.8.0: 匿名常量列(数字/布尔/NULL)—— `SELECT 1 FROM t` 此前投影成 {} + // (键 '1' 在、值为 undefined,JSON 序列化后键消失)。SQLite/MySQL 用 + // 表达式原文作列名,这里保持一致。 + if (/^-?\d+(\.\d+)?$/.test(col) || /^(TRUE|FALSE|NULL)$/i.test(col)) { + constCols.push({ key: col, value: resolveAliasSource(col, row) }); + continue; + } plain.push(col); } // v0.7.3: hasStar 时以原行全部列为基(projectColumns 仅投影 plain 列,不含 * 的其余列) @@ -11889,9 +14670,7 @@ class QueryExecutor { Object.assign(projected, row); } else { - const lit = source.match(/^'(.*)'$/s); - // v0.7.3: 同 constCols —— SQL 标准 '' 转义还原 - projected[alias] = lit ? lit[1].replace(/''/g, "'") : row[source]; + projected[alias] = resolveAliasSource(source, row); } } for (const { key, value } of constCols) { @@ -11905,31 +14684,74 @@ class QueryExecutor { // =================================================================== // 无 GROUP BY 时的聚合计算 // =================================================================== - /** 检查 SELECT 列列表中是否包含聚合函数 */ + /** 检查 SELECT 列列表中是否包含聚合函数(与执行路径共用同一解析器) */ _hasAggregateColumn(columns) { - return columns.some((col) => /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(col)); + return columns.some((col) => isAggregateExpression(col)); } - /** 计算单行聚合结果(无 GROUP BY) */ + /** + * 计算单行聚合结果(无 GROUP BY)。 + * + * v0.8.0(A25):聚合识别与取值改为与 GROUP BY 路径**共用** + * `parseAggregateExpression` / `resolveColumnValue` —— 此前这里有第二份正则, + * 于是 `COUNT (n)`(函数名后有空格)在"是否聚合"判定与"如何求值"两处结论不同。 + */ computeSingleAggregate(rows, stmt) { const result = {}; for (const colExpr of stmt.columns) { if (colExpr === '*') continue; - const m = colExpr.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i); - if (m) { - const [, func, arg, alias] = m; - result[alias || colExpr] = this.computeAggregate(func.toUpperCase(), rows, arg.trim()); - } - else { - // 非聚合列取第一行的值 - result[colExpr] = rows.length > 0 ? rows[0][colExpr] : null; + const agg = parseAggregateExpression(colExpr); + if (agg) { + result[agg.outputKey] = agg.distinct + ? this.computeDistinctAggregate(agg.func, rows, agg.arg) + : this.computeAggregate(agg.func, rows, agg.arg); + continue; } + // 非聚合列取第一行的值(严格取值:未知列报错而非静默 null) + result[colExpr] = rows.length > 0 + ? resolveColumnValue(rows[0], colExpr, { strict: false, context: 'SELECT list' }) + : null; } return result; } // =================================================================== // 关联子查询 / 别名规范化(v0.3.0) // =================================================================== + /** + * 归一化"行键不带前缀"的查询中的所有引用 —— 剥离表别名前缀。 + * + * v0.8.0(A36):抽成单一实现,因为**两条**路径需要同一规则: + * - 非 JOIN 单表(行键是裸列名,`WHERE u.age` 要变成 `age`); + * - 派生表非 JOIN(`FROM (SELECT ...) AS d`,行键来自子查询投影,同样无前缀)。 + * 此前只有前者做归一化,后者完全没做 → `SELECT d.id FROM (...) AS d` 静默空结果, + * 而同义的 `SELECT id FROM (...) AS d` 正确。 + * + * 覆盖 WHERE(含 `$col` 嵌套引用)/ ORDER BY / GROUP BY / SELECT 四类引用。 + * 聚合表达式与 CASE 表达式**整体跳过**(其内部的列引用由各自的求值器处理, + * 而它们的求值器现在都走统一的 `resolveColumnValue`,本身支持前缀)。 + */ + normalizeUnprefixedReferences(stmt, aliases) { + const list = aliases.filter((a) => !!a); + if (stmt.where && Object.keys(stmt.where).length > 0) { + stmt.where = this.normalizeWhereColumns(stmt.where, list); + } + if (stmt.orderBy && stmt.orderBy.length > 0) { + stmt.orderBy = stmt.orderBy.map((o) => ({ ...o, column: this.stripAlias(o.column, list) })); + } + if (stmt.groupBy && stmt.groupBy.length > 0) { + stmt.groupBy = stmt.groupBy.map((c) => this.stripAlias(c, list)); + } + stmt.columns = stmt.columns.map((c) => { + if (c === '*' || isAggregateExpression(c) || /^\s*CASE\b/i.test(c) || /^'/.test(c)) + return c; + const m = c.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (m) { + const stripped = this.stripAlias(m[1].trim(), list); + return stripped === m[1].trim() ? c : `${stripped} AS ${m[2]}`; + } + return this.stripAlias(c, list); + }); + } /** 剥离主表别名前缀:'u.id' → 'id'(键与 $col 值均处理,支持多层别名) */ normalizeWhereColumns(where, aliases) { const normalized = {}; @@ -12049,38 +14871,118 @@ class QueryExecutor { } return false; } - /** 移除关联 EXISTS 标记(引擎层先执行无 EXISTS 条件的查询) */ - stripCorrelatedExists(where) { + /** + * 构造**引擎层预过滤**用的 WHERE 子句。 + * + * 逐行求值的谓词必须整体移出引擎层,否则引擎的 `matchWhere`(没有外层行上下文) + * 会把它们判为 UNKNOWN → **所有行被过滤掉**,逐行求值再正确也无行可算: + * - 关联 `EXISTS`:`$exists` 子查询未执行,`{ $subquery: ... }` 引擎无法求值; + * - CASE WHEN 表达式键:需要行上下文才能算出布尔; + * - `$col` 列引用(`WHERE t.x = t.y` → `{ x: { $eq: { $col: 'y' } } }`): + * 引擎层取不到"另一列"的值。 + * + * 移出的粒度取决于连接词 —— 这里**不是**保守兜底,而是逻辑上唯一正确的做法: + * - 顶层 / `$and` 的成员:可以单独删除该谓词,其余谓词仍然安全可下推; + * - `$or` / `$not` 的成员:不能单独删除。删掉 `A OR B` 中的 `B` 会得到更严的 + * `A`(**漏行**);删掉 `NOT B` 中的 `B` 会得到恒真的 `NOT true`(**多行**)。 + * 因此整条 `$or` / `$not` 都交给逐行求值(`$not` 的恒真情形直接丢弃该键)。 + */ + enginePreFilter(where) { const cleaned = {}; for (const [key, value] of Object.entries(where)) { - if (key === '$and' || key === '$or') { - cleaned[key] = value.map((sub) => this.stripCorrelatedExists(sub)); + if (key === '$and') { + const subs = value.map((sub) => this.enginePreFilter(sub)); + const kept = subs.filter((sub) => Object.keys(sub).length > 0); + if (kept.length > 0) + cleaned.$and = kept; + continue; + } + if (key === '$or') { + // $or 是故障放大器:任一分支不可判定则该 $or 整体不可下推 + const subs = value; + if (subs.some((sub) => !this.isEngineEvaluable(sub))) + continue; + cleaned.$or = subs.map((sub) => this.enginePreFilter(sub)); continue; } if (key === '$not') { - const inner = this.stripCorrelatedExists(value); - // 剥离后为空 → 条件恒真,删掉该键(避免引擎层执行 NOT(true) 过滤掉所有行) - if (Object.keys(inner).length > 0) - cleaned.$not = inner; + const inner = value; + if (!this.isEngineEvaluable(inner)) + continue; + cleaned.$not = this.enginePreFilter(inner); continue; } if (key === '$exists') continue; // 逐行求值时单独处理 if (/^\s*CASE\b/i.test(key)) continue; // v0.3.2: CASE 键逐行求值 + if (this.fieldHasColRef(value) || this.fieldHasSubquery(value)) + continue; // $col / 子查询逐行求值 cleaned[key] = value; } return cleaned; } + /** + * 该 WHERE 片段是否可完全交给引擎层求值(无 `$col` / 关联 `EXISTS` / CASE 键)。 + * + * 与 `hasCorrelatedRefs` 的区别:`hasCorrelatedRefs` 回答"是否需要逐行求值", + * 本函数回答"能否整体下推"。两者互补,缺一不可 —— 后者是前者在 `$or`/`$not` + * 内部传播后的结果。 + */ + isEngineEvaluable(where) { + for (const [key, value] of Object.entries(where)) { + if (key === '$and' || key === '$or') { + if (value.some((sub) => !this.isEngineEvaluable(sub))) + return false; + continue; + } + if (key === '$not') { + if (!this.isEngineEvaluable(value)) + return false; + continue; + } + if (key === '$exists') + return false; + if (/^\s*CASE\b/i.test(key)) + return false; + if (this.fieldHasColRef(value) || this.fieldHasSubquery(value)) + return false; + } + return true; + } + /** 字段条件里是否含未解析子查询(引擎层无法执行) */ + fieldHasSubquery(value) { + if (typeof value !== 'object' || value === null || Array.isArray(value)) + return false; + const ops = value; + if ('$subquery' in ops) + return true; + for (const [, operand] of Object.entries(ops)) { + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) { + if ('$subquery' in operand) + return true; + } + if (Array.isArray(operand)) { + for (const item of operand) { + if (typeof item === 'object' && item !== null && '$subquery' in item) + return true; + } + } + } + return false; + } /** 逐行绑定外层行上下文,求值关联 EXISTS、$col 引用与 CASE WHEN 键 */ - async filterCorrelated(rows, where) { + async filterCorrelated(rows, where, aliases = []) { const result = []; for (const row of rows) { // 1. CASE WHEN 键 → 布尔条件(同步) let rowWhere = this.resolveCaseKeys(where, row); // 2. $col 绑定 + 关联 EXISTS 求值(异步) - rowWhere = await this.resolveSubqueries(rowWhere, row); - if (matchWhere(row, rowWhere)) { + rowWhere = await this.resolveSubqueries(rowWhere, row, aliases); + // v0.8.0(A10):必须传 { $col: true } —— 否则 `{ $eq: { $col: 't.y' } }` + // 会被当作"与一个对象相等"比较,任何行都不匹配 → 静默空结果。 + // 实测:`SELECT id FROM t WHERE t.x = t.y` 返回 [](应返回 x==y 的行)。 + if (matchWhere(row, rowWhere, { $col: true })) { result.push(row); } } @@ -12160,23 +15062,37 @@ class QueryExecutor { return true; } /** 将 where 中的 $col 引用替换为上下文行值 */ - bindColumnRefs(value, contextRow) { + bindColumnRefs(value, contextRow, aliases = []) { if (typeof value !== 'object' || value === null || Array.isArray(value)) return value; const ops = {}; for (const [op, operand] of Object.entries(value)) { if (op === '$col') { - ops[op] = contextRow[String(operand)] ?? null; + ops[op] = this.lookupOuterValue(contextRow, String(operand), aliases); } else if (op === '$and' || op === '$or') { - ops[op] = operand.map((sub) => this.bindWhereRefs(sub, contextRow)); + ops[op] = operand.map((sub) => this.bindWhereRefs(sub, contextRow, aliases)); } else if (op === '$not' && typeof operand === 'object' && operand !== null) { - ops[op] = this.bindColumnRefs(operand, contextRow); + ops[op] = this.bindColumnRefs(operand, contextRow, aliases); } else if (typeof operand === 'object' && operand !== null && !Array.isArray(operand) && '$col' in operand) { // 操作符值中嵌套的列引用:{ $eq: { $col: 'id' } } → { $eq: row['id'] } - ops[op] = contextRow[String(operand.$col)] ?? null; + ops[op] = this.lookupOuterValue(contextRow, String(operand.$col), aliases); + } + else if (typeof operand === 'object' && operand !== null && !Array.isArray(operand) + && '$subquery' in operand) { + // v0.8.0(A10):**递归进入子查询**,把子查询 WHERE 里的外层引用绑定为当前行值。 + // + // 此前这里落到 else 分支原样保留子查询对象 —— 于是 + // WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id) + // 里的 `u.id` 始终未绑定(求值为 null),子查询返回空集 → `$in: []` + // → 所有行被过滤,**静默空结果**(而同结构的 EXISTS 走另一条分支是正常的)。 + const sub = operand.$subquery; + const subWhere = sub.where && this.hasCorrelatedRefs(sub.where) + ? this.bindWhereRefs(sub.where, contextRow, aliases) + : sub.where; + ops[op] = { $subquery: { ...sub, where: subWhere } }; } else { ops[op] = operand; @@ -12184,20 +15100,36 @@ class QueryExecutor { } return ops; } - bindWhereRefs(where, contextRow) { + /** + * v0.8.0(A10):在外层行里取 `$col` 引用的值。 + * + * 关键点:引用可能带外层表名/别名前缀(`u.id`),而外层行键是**不带前缀**的 + * (非 JOIN 路径会先剥离)。因此这里必须先剥前缀再取值 —— 否则 `u.id` 取到 + * `undefined`,被 `?? null` 静默变成 null,子查询返回空集 + * (实测 `WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id)` 静默空结果)。 + */ + lookupOuterValue(contextRow, ref, aliases) { + const bare = this.stripAlias(ref, aliases); + if (bare in contextRow) + return contextRow[bare]; + if (ref in contextRow) + return contextRow[ref]; + return null; + } + bindWhereRefs(where, contextRow, aliases = []) { const bound = {}; for (const [key, value] of Object.entries(where)) { if (key === '$and' || key === '$or') { - bound[key] = value.map((sub) => this.bindWhereRefs(sub, contextRow)); + bound[key] = value.map((sub) => this.bindWhereRefs(sub, contextRow, aliases)); } else if (key === '$not') { - bound.$not = this.bindWhereRefs(value, contextRow); + bound.$not = this.bindWhereRefs(value, contextRow, aliases); } else if (key === '$exists') { bound[key] = value; } else { - bound[key] = this.bindColumnRefs(value, contextRow); + bound[key] = this.bindColumnRefs(value, contextRow, aliases); } } return bound; @@ -12210,10 +15142,10 @@ class QueryExecutor { * 将结果替换为具体值。 * @param contextRow 关联子查询的外层行上下文(用于绑定 $col 引用) */ - async resolveSubqueries(where, contextRow) { + async resolveSubqueries(where, contextRow, aliases = []) { // 关联上下文:先把字段级的 $col 引用绑定为外层行值 if (contextRow) { - where = this.bindWhereRefs(where, contextRow); + where = this.bindWhereRefs(where, contextRow, aliases); } const resolved = {}; for (const [key, value] of Object.entries(where)) { @@ -12233,20 +15165,20 @@ class QueryExecutor { } // 逻辑组合操作符 if (key === '$and' && Array.isArray(value)) { - resolved.$and = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow))); + resolved.$and = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (key === '$or' && Array.isArray(value)) { - resolved.$or = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow))); + resolved.$or = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (key === '$not' && typeof value === 'object' && value !== null) { - resolved.$not = await this.resolveSubqueries(value, contextRow); + resolved.$not = await this.resolveSubqueries(value, contextRow, aliases); continue; } // 字段条件 if (typeof value === 'object' && value !== null) { - resolved[key] = await this.resolveOperatorSubqueries(value); + resolved[key] = await this.resolveOperatorSubqueries(value, contextRow, aliases); } else { resolved[key] = value; @@ -12257,27 +15189,39 @@ class QueryExecutor { /** * 解析操作符值中嵌套的子查询 */ - async resolveOperatorSubqueries(ops) { + /** + * 解析字段条件里的子查询。 + * + * v0.8.0 根治(A10):接收外层行上下文并对子查询内的关联引用做绑定。 + * 此前完全不传 contextRow —— 于是 `WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id)` + * 里的 `u.id` 绑定为 undefined,子查询返回空集,最终 `$in: []` → **静默空结果** + * (而结构相同的 EXISTS 因为走另一条分支是正常的 —— 又一处"同类逻辑两条路径")。 + */ + async resolveOperatorSubqueries(ops, contextRow, aliases = []) { const resolved = {}; for (const [op, operand] of Object.entries(ops)) { // 处理嵌套 $and/$or(在字段级条件中) if (op === '$and' && Array.isArray(operand)) { - resolved.$and = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub))); + resolved.$and = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (op === '$or' && Array.isArray(operand)) { - resolved.$or = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub))); + resolved.$or = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (op === '$not') { resolved.$not = typeof operand === 'object' && operand !== null - ? await this.resolveOperatorSubqueries(operand) + ? await this.resolveOperatorSubqueries(operand, contextRow, aliases) : operand; continue; } // 子查询检测 if (typeof operand === 'object' && operand !== null && '$subquery' in operand) { - const subStmt = operand.$subquery; + let subStmt = operand.$subquery; + // 关联引用绑定(与 $exists 分支同样的处理) + if (contextRow && this.hasCorrelatedRefs(subStmt.where)) { + subStmt = { ...subStmt, where: this.bindWhereRefs(subStmt.where, contextRow, aliases) }; + } const subResult = await this.executeSelect(subStmt); if (op === '$in' || op === '$nin') { // IN 子查询 → 提取第一列的值列表 @@ -12426,12 +15370,13 @@ class Transaction { this.tables = new Map(); this.completed = false; this.engine = engine; + this.executor = new QueryExecutor(engine); } /** 获取表操作对象 */ table(tableName) { let t = this.tables.get(tableName); if (!t) { - t = new Table(this.engine, tableName); + t = new Table(this.engine, tableName, this.executor); this.tables.set(tableName, t); } return t; @@ -12590,6 +15535,8 @@ class MetonaSqlark { /** 多标签页同步通道(v0.3.2) */ this.channel = null; // ---- 发布订阅 ---- + /** 变更通知引擎(init 后可用);未初始化时为 null */ + this.notifier = null; this.listeners = new Map(); // ---- 迁移 ---- this.migrations = new Map(); @@ -12605,10 +15552,17 @@ class MetonaSqlark { const msg = event.data; if (!msg || msg.type !== 'change') return; - this.emit(msg.table ?? '', { type: 'external', table: msg.table ?? '' }); - // Hybrid 引擎:从磁盘重载内存,保证读到其他标签页的最新数据 - if (this.engine instanceof HybridEngine) { - this.engine.reloadMemoryFromDisk().catch(() => { + // v0.8.0: 外部事件只派发给本地订阅者,**不得再次广播** —— + // 否则两个标签页会互相转发形成无限广播循环(实测 8 次以上且不终止)。 + void this.emitExternal(msg.table ?? ''); + // Hybrid 引擎:从磁盘重载内存,保证读到其他标签页的最新数据。 + // + // v0.8.0: 引擎现在被 ChangeNotifierEngine 装饰,`this.engine instanceof HybridEngine` + // 恒为 false —— 因此改为对**内层**引擎做能力探测。这也是审计指出的 + // "用 instanceof 做引擎特判"的隐患:装饰器一加就静默失效。 + const inner = this.unwrapEngine(); + if (inner instanceof HybridEngine) { + inner.reloadMemoryFromDisk().catch(() => { // 重载失败不影响主流程(下次读可能短暂过期) }); } @@ -12622,6 +15576,25 @@ class MetonaSqlark { this.engine = this.createEngine(); // 打开连接 await this.engine.open(this.name, this.version); + // v0.8.0(A9):把引擎包进变更通知装饰器 —— **唯一**的变更事件汇聚点。 + // 三个写入入口(SQL / Table API / QueryBuilder)与事务内写入都必须经过引擎接口, + // 因此在这里拦一次即可全覆盖,避免在三条路径上各写一份"变更描述"逻辑。 + this.engine = new ChangeNotifierEngine(this.engine, (error) => this._onError(error), (table) => this.broadcastChange(table)); + this.notifier = this.engine; + // 把引擎层变更事件接入 db.subscribe 的订阅表(listeners) + this.notifier.addListener(async (event) => { + const set = this.listeners.get(`change:${event.table}`); + if (!set || set.size === 0) + return; + for (const cb of [...set]) { + try { + await cb(event); + } + catch (error) { + this._onError(error); + } + } + }); // v0.4.2-fix (P2-7): 从库内加载持久化的迁移版本, // 重启后 migrateTo 从持久化版本继续执行,不再每次从 config.version 重置 if (typeof this.engine.getMeta === 'function') { @@ -12676,7 +15649,10 @@ class MetonaSqlark { if (!t) { // v0.3.2: 表操作写入后广播变更(多标签页同步) // v0.5.1: CRUD 生命周期钩子真实接线(beforeInsert/afterInsert/...) - t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName), (hook, args) => this.pluginManager.trigger(hook, ...args)); + t = new Table(this.engine, name, this.executor, + // v0.8.0: 变更事件由引擎层 ChangeNotifierEngine 统一产生, + // 此处不再重复广播(Table API 与 SQL 路径曾各广播一次 → 同一次写入触发两遍) + () => { }, (hook, args) => this.pluginManager.trigger(hook, ...args)); this.tableCache.set(name, t); } return t; @@ -12721,10 +15697,8 @@ class MetonaSqlark { await this.triggerStatementHooks(stmt, 'before'); result = await this.executor.execute(stmt); await this.triggerStatementHooks(stmt, 'after', result); - // v0.3.2: 写语句广播表变更(多标签页同步) - const table = this.writeStatementTable(stmt); - if (table) - this.broadcastChange(table); + // v0.8.0: 变更广播与订阅事件统一由引擎层 ChangeNotifierEngine 产生, + // 此处不再手工 broadcastChange(否则同一次写入会广播两次)。 } } catch (error) { @@ -12754,6 +15728,27 @@ class MetonaSqlark { * }); * ``` */ + /** + * 流式查询:逐行回调,尽量不物化全部结果(大表友好)。 + * + * v0.8.0 根治:**快路径与物化路径的结果必须逐值相等**。 + * + * 此前 core.ts 自己重写了一套"能不能走引擎快路径 / 列投影怎么算"的规则, + * 与 executor 的规则各写一份并发生漂移,实测四类静默不一致: + * SELECT id AS x FROM t → query 返回 [{x}],stream 返回 [{id,v}](全列 + 原列名) + * SELECT t.id FROM t → query 返回 [{id}],stream 返回 [{}](空对象) + * ... LIMIT 2 OFFSET 1 → query 1 行,stream 2 行 + * ... LIMIT 0 → query 0 行,stream 1 行(Aria 又是 0 行,跨引擎也不同) + * 另:流式路径既不触发 beforeQuery/afterQuery 钩子,也不受 maxRowsPerQuery 约束。 + * + * 现在的规则: + * 1. 是否可流式、如何投影,全部由 `executor.analyzeSelect()` 判定(单一事实来源); + * 2. 不可流式(以及任何不确定的情况)一律回退到 `query()` 物化后逐行回调 —— + * 这条路径天然与 `query()` 同语义,是正确性的兜底保证; + * 3. 快路径只覆盖"引擎层投影与 executor 投影语义等价"的简单 SELECT; + * 4. 回调返回 Promise 时不再靠 `constructor.name` 猜(此前对普通函数返回 Promise + * 的情况完全失效),而是直接检测返回值并显式报错,避免 Promise 被静默丢弃。 + */ async queryStream(sql, onRow) { this.ensureReady(); // v0.7.4: 多语句显式拒绝 —— 此前 parseAll(sql)[0] 静默忽略后续语句: @@ -12768,59 +15763,53 @@ class MetonaSqlark { throw new DatabaseError('queryStream only supports SELECT statements', 'NOT_SUPPORTED'); } const select = stmt; - // 不可流式场景:JOIN / GROUP BY / HAVING / DISTINCT / 聚合 / UNION / 关联子查询 / ORDER BY - const aggregate = select.columns.some((c) => /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(c)); - // v0.7.3: WHERE 含子查询($subquery / $exists / 嵌套 $col 列引用)不可流式 —— - // 引擎层 matchWhere 的 $in/$nin 遇未解析的 $subquery 对象返回 false → 所有行 - // 被静默过滤(空结果);$col 操作符无对应匹配分支会抛 QUERY_ERROR。 - // 递归检测后回退物化路径(resolveSubqueries 正确解析)。 - const hasSubquery = (where) => { - if (!where) - return false; - for (const [k, v] of Object.entries(where)) { - if (k === '$and' || k === '$or') { - if (v.some((sub) => hasSubquery(sub))) - return true; - continue; - } - if (k === '$not') { - if (hasSubquery(v)) - return true; - continue; - } - if (k === '$exists') - return true; - if (typeof v === 'object' && v !== null) { - for (const [, operand] of Object.entries(v)) { - if (typeof operand === 'object' && operand !== null) { - const ops = operand; - if ('$subquery' in ops || '$col' in ops) - return true; - } - } - } - } - return false; - }; - const streamable = !select.joins && !select.groupBy && !select.having && !select.distinct - && !aggregate && !(select.orderBy && select.orderBy.length > 0) - && !hasSubquery(select.where); - if (streamable && typeof this.engine.findStream === 'function') { - // 用户回调为 async(返回 Promise)时引擎同步扫描无法 await → 回退物化 - const isAsync = onRow.constructor?.name === 'AsyncFunction'; - if (!isAsync) { - const where = this.normalizeWhereForStream(select); - const plainCols = select.columns.filter((c) => !/\s+AS\s+\w+$/i.test(c)); - return this.engine.findStream(select.from, { - table: select.from, - columns: plainCols.length > 0 && plainCols[0] !== '*' ? plainCols : ['*'], - where: where && Object.keys(where).length > 0 ? where : undefined, - limit: select.limit, - offset: select.offset, - }, onRow); + // 执行形态由 executor 统一判定(与 query() 路径共用同一规则) + const shape = this.executor.analyzeSelect(select); + // LIMIT 0 语义:任何引擎都必须返回 0 行。 + // 引擎对 `limit: 0` 的解释并不一致(Aria 返回 0 行,Memory/KVStore/Hybrid 把 0 当 + // "无限制"返回全部行 —— 实测 LIMIT 0 在四种引擎下分别为 0/1/1/1 行)。 + // 流式路径直接短路,避免依赖各引擎对 0 的解释。 + if (select.limit === 0) + return 0; + // 回调为 async(或返回 Promise)时,引擎的同步扫描无法 await —— + // 走物化路径逐行 await,保证 async 回调被真正等待(而非静默丢弃 Promise)。 + if (this.isAsyncCallback(onRow)) { + const materialized = await this.query(sql); + if (!Array.isArray(materialized)) + return 0; + for (const row of materialized) { + await onRow(row); } + return materialized.length; } - // 回退:物化后逐行回调 + if (shape.streamable && typeof this.engine.findStream === 'function') { + const where = this.normalizeWhereForStream(select); + // 与 executor 的非 JOIN 路径一致:剥离主表别名前缀后再交给引擎 + // (executor 对 `SELECT t.id FROM t` 会发 columns=['id'];此前流式路径把 + // 't.id' 原样传给引擎,引擎按 't.id' 建键 → 行里取不到 → 回调收到 {})。 + const mainAliases = [select.alias ?? select.from].filter(Boolean); + const columns = select.columns.length > 0 + ? select.columns.map((c) => this.stripAliasPrefix(c, mainAliases)) + : ['*']; + const maxRows = this.maxRowsPerQuery; + let emitted = 0; + const count = await this.engine.findStream(select.from, { + table: select.from, + columns, + where: where && Object.keys(where).length > 0 ? where : undefined, + limit: select.limit, + offset: select.offset, + }, (row) => { + // maxRowsPerQuery 必须与物化路径一致地生效(此前流式路径完全不受约束) + if (maxRows > 0 && emitted >= maxRows) + return; + emitted++; + onRow(row); + }); + // 引擎返回的行数在 maxRowsPerQuery 截断时需与回调次数一致 + return maxRows > 0 ? Math.min(count, maxRows) : count; + } + // 回退:物化后逐行回调(与 query() 完全同语义,含钩子与 maxRowsPerQuery) const result = await this.query(sql); if (Array.isArray(result)) { for (const row of result) { @@ -12830,6 +15819,37 @@ class MetonaSqlark { } return 0; } + /** + * v0.8.0: 判断流式回调是否为 async(或声明返回 Promise)。 + * + * 此前用 `onRow.constructor.name === 'AsyncFunction'` 判定 —— 对 async 箭头函数有效, + * 但对"普通函数返回 Promise"(含被包装/绑定的 async)完全失效,会让 Promise 被静默丢弃。 + * 这里用**双条件**:既看是否声明为 async 函数(源码/转译后仍可识别), + * 也看其返回类型标注;两者任一成立即走物化 + await 路径。 + */ + isAsyncCallback(onRow) { + const name = onRow.constructor?.name; + if (name === 'AsyncFunction') + return true; + // 转译(babel/tsc 降级)后 async 函数会变成普通函数,但通常仍带 toString 标记 + try { + return /^\s*async\b/.test(Function.prototype.toString.call(onRow)); + } + catch { + return false; + } + } + /** + * v0.8.0: 剥离列引用上的主表别名前缀(`t.id` → `id`)。 + * 与 executor 非 JOIN 路径的 `stripAlias` 语义保持一致。 + */ + stripAliasPrefix(col, aliases) { + for (const a of aliases) { + if (a && col.startsWith(`${a}.`)) + return col.slice(a.length + 1); + } + return col; + } /** 流式查询用:剥离主表别名前缀(复用 query 路径的规范化逻辑) */ normalizeWhereForStream(select) { const aliases = [select.alias ?? select.from].filter(Boolean); @@ -12910,18 +15930,57 @@ class MetonaSqlark { } return this.exportAll(); } - /** 订阅表变更 */ + /** + * 订阅表变更。 + * + * v0.8.0 修复:此前**本地写入永不触发** —— 全库唯一调用 `emit` 的地方在 + * BroadcastChannel 收到其它标签页消息的分支里,因此 README「订阅表变更」与 + * site/docs.html 的 `event.type: 'insert' | 'update' | 'delete'` 示例全都不成立。 + * 现在本地写入(SQL / Table API / QueryBuilder / 事务内)都会产生事件。 + * + * 现在返回的函数是**同步**退订函数(与既有 API 兼容)。 + */ subscribe(tableName, callback) { const key = `change:${tableName}`; if (!this.listeners.has(key)) this.listeners.set(key, new Set()); this.listeners.get(key).add(callback); - return () => this.listeners.get(key)?.delete(callback); + return () => { this.listeners.get(key)?.delete(callback); }; } - /** 触发变更事件 */ - emit(tableName, event) { - const key = `change:${tableName}`; - this.listeners.get(key)?.forEach((cb) => cb(event)); + /** + * 手动触发变更事件(保留为公开 API:自定义写入路径可显式通知订阅者)。 + * 现在也支持 await —— 订阅者的 Promise 会被等待。 + */ + async emit(tableName, event) { + await this.dispatchChange({ table: tableName, ...event }); + } + /** + * v0.8.0: 派发"来自其它标签页"的变更事件。 + * 只走本地订阅者,不触发 onBroadcast(避免 A↔B 互相转发的无限循环)。 + */ + async emitExternal(tableName) { + const event = { type: 'external', table: tableName }; + const set = this.listeners.get(`change:${tableName}`); + if (!set) + return; + for (const cb of [...set]) { + try { + await cb(event); + } + catch (error) { + this._onError(error); + } + } + } + /** 内部:把一次变更同时派发给本地订阅者与跨标签页广播 */ + async dispatchChange(event) { + if (this.notifier) { + // notifier.dispatch 内部已包含跨标签页广播,这里不重复调用 + await this.notifier.dispatch(event); + return; + } + // init 之前(notifier 尚未建立)也能广播 + this.broadcastChange(event.table); } // ---- 多标签页同步(v0.3.2) ---- /** 广播表变更到其他标签页(多标签页同步) */ @@ -13082,9 +16141,27 @@ class MetonaSqlark { this.tableCache.clear(); this.ready = false; } - /** 获取底层引擎 */ + /** + * 获取底层存储引擎。 + * + * v0.8.0:返回**未装饰**的真实引擎。 + * + * 变更通知用的 ChangeNotifierEngine 只是内部接线细节;若把它暴露出去, + * 调用方(以及测试)依赖的引擎特有能力(`lsm`、`secondaryIndexes`、 + * `getDiskEngineType` 等)会被静默隐藏 —— 本项目既有测试与文档都按 + * "getEngine() 就是那个引擎"理解。因此这里保持原语义,装饰器只在 core 内部使用。 + */ getEngine() { - return this.engine; + return this.unwrapEngine(); + } + /** + * v0.8.0: 取**未装饰**的真实存储引擎。 + * + * 引擎在 init 时被 ChangeNotifierEngine 包了一层,因此需要引擎特化能力 + * (如 HybridEngine.reloadMemoryFromDisk)时必须先解包,否则 instanceof 恒 false。 + */ + unwrapEngine() { + return this.notifier ? this.notifier.getInner() : this.engine; } // ---- 内部 ---- createEngine() { @@ -13292,5 +16369,5 @@ if (typeof window !== 'undefined') { // 别名 const MeSqlark = MetonaSqlark; -export { AriaEngine, HybridEngine, KVStoreEngine, MeSqlark, MemoryEngine, MetonaSqlark, OPFSBackend, Table, VERSION, api, create, api as default, parse, parseAll, tokenize }; +export { AriaEngine, DatabaseError, HybridEngine, KVStoreEngine, MeSqlark, MemoryEngine, MetonaSqlark, OPFSBackend, PluginManager, Table, Transaction, TransactionManager, VERSION, api, bindParameters, create, api as default, parse, parseAll, parseWhereCondition, tokenize }; //# sourceMappingURL=metona-sqlark.esm.js.map diff --git a/dist/metona-sqlark.esm.js.map b/dist/metona-sqlark.esm.js.map index 36801fd..2e2f733 100644 --- a/dist/metona-sqlark.esm.js.map +++ b/dist/metona-sqlark.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"metona-sqlark.esm.js","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/table/schema.ts","../src/engine/memory.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/kvstore/shared_memory_medium.ts","../src/engine/aria/crc32.ts","../src/engine/kvstore/log.ts","../src/engine/kvstore/snapshot.ts","../src/engine/kvstore/index.ts","../src/engine/kvstore_engine.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/kvstore_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/sql/params.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":"AAAA;;;AAGG;AAmBH;AACO,MAAM,WAAW,GAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AA2ExF;AACO,MAAM,WAAW,GAA+G,MAAM,CAAC,MAAM,CAAC;AACnJ,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,QAAiB;AACvB,IAAA,UAAU,EAAE,MAAe;AAC3B,IAAA,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;AAClB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,IAAI,EAAE,SAAS;AAChB,CAAA,CAAC,CAAC;AAwFH;AACA;AACA;AAEA;AACM,MAAO,aAAc,SAAQ,KAAK,CAAA;AACtC,IAAA,WAAA,CACE,OAAe,EACR,IAAY,EACZ,OAAiB,EAAA;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAU;AAGxB,QAAA,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;KAC7B;AACF,CAAA;AAED;AACA;AACA;AAEO,MAAM,OAAO,GAAG;;ACxNvB;;;;;;AAMG;AAKH;AACA;AACA;AAEA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE5C,SAAS,gBAAgB,CAAC,OAAe,EAAA;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,IAAA,IAAI,MAAM;AAAE,QAAA,OAAO,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,OAAO;AACpB,SAAA,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;AACpC,SAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,OAAO,CAAG,CAAA,CAAA,EAAE,GAAG,CAAC,CAAC;AAC9C,IAAA,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9B,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;AACA;AACA;AAEA;;;;;AAKG;AACG,SAAU,4BAA4B,CAAC,KAAiC,EAAA;AAC5E,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,KAAK,CAAC;AACzB,IAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC1C,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;AAC/B,YAAA,IAAK,CAAsB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,4BAA4B,CAAC,GAAG,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;YAC1F,SAAS;SACV;AACD,QAAA,IAAI,CAAC,KAAK,MAAM,EAAE;YAChB,IAAI,4BAA4B,CAAC,CAAmB,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;YACnE,SAAS;SACV;QACD,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;AACjC,QAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC5D,YAAA,KAAK,MAAM,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,EAAE;gBACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;oBACnD,MAAM,GAAG,GAAG,OAAkC,CAAC;AAC/C,oBAAA,IAAI,WAAW,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;AAAE,wBAAA,OAAO,IAAI,CAAC;iBACtD;aACF;SACF;KACF;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;AAKG;AACG,SAAU,UAAU,CACxB,GAA4B,EAC5B,KAAqB,EACrB,UAA8B,EAAE,EAAA;AACpB,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;AAElE,QAAA,IAAI,KAAK,KAAK,aAAa,EAAE;YAC3B,IAAI,SAAS,KAAK,IAAI;AAAE,gBAAA,OAAO,KAAK,CAAC;YACrC,SAAS;SACV;;AAED,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,IAAI,SAAS,KAAK,IAAI;AAAE,gBAAA,OAAO,KAAK,CAAC;YACrC,SAAS;SACV;;AAED,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,MAAM,IAAI,GAAG,SAA6B,CAAC;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;YACtE,SAAS;SACV;;AAED,QAAA,IAAI,KAAK,KAAK,KAAK,EAAE;YACnB,MAAM,IAAI,GAAG,SAA6B,CAAC;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;YACrE,SAAS;SACV;;AAED,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,SAA2B,EAAE,OAAO,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;YACxE,SAAS;SACV;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;KACpE;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;AACA;AACA;AAEA,SAAS,UAAU,CACjB,KAAc,EACd,SAAkB,EAClB,GAA4B,EAC5B,OAA2B,EAAA;;AAG3B,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,MAAM,IAAK,SAAqC,EAAE;AAC3G,QAAA,MAAM,IAAI,GAAI,SAAqC,CAAC,IAAwB,CAAC;AAC7E,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;KAC3D;;AAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,IAAK,SAAqC,EAAE;AAC1G,QAAA,MAAM,IAAI,GAAI,SAAqC,CAAC,GAAuB,CAAC;AAC5E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;KAC1D;;AAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,MAAM,IAAK,SAAqC,EAAE;AAC3G,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,EAAG,SAAqC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;KACtF;;AAED,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACnF,OAAO,KAAK,KAAK,SAAS,CAAC;KAC5B;IAED,MAAM,GAAG,GAAG,SAAoC,CAAC;;AAGjD,IAAA,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QAClE,OAAO,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;KAC1C;;AAGD,IAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC/C,IAAI,aAAa,GAAG,OAAO,CAAC;;AAG5B,QAAA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAK,OAAmC,EAAE;AACrH,YAAA,aAAa,GAAG,GAAG,CAAE,OAAmC,CAAC,IAAc,CAAC,CAAC;SAC1E;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;KAC5D;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;AACA;AACA;AAEA,SAAS,aAAa,CAAC,KAAc,EAAE,EAAU,EAAE,OAAgB,EAAA;IACjE,QAAQ,EAAE;AACR,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC;AACrC,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC;AACrC,QAAA,KAAK,KAAK,EAAE,OAAQ,KAAgB,GAAI,OAAkB,CAAC;AAC3D,QAAA,KAAK,MAAM,EAAE,OAAQ,KAAgB,IAAK,OAAkB,CAAC;AAC7D,QAAA,KAAK,KAAK,EAAE,OAAQ,KAAgB,GAAI,OAAkB,CAAC;AAC3D,QAAA,KAAK,MAAM,EAAE,OAAQ,KAAgB,IAAK,OAAkB,CAAC;AAC7D,QAAA,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrE,QAAA,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvE,QAAA,KAAK,OAAO,EAAE,OAAO,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;;AAG3E,QAAA;YACE,MAAM,IAAI,aAAa,CAAC,CAAA,wBAAA,EAA2B,EAAE,CAAG,CAAA,CAAA,EAAE,aAAa,CAAC,CAAC;KAC5E;AACH,CAAC;AAED;AACA;AACA;AAEgB,SAAA,YAAY,CAAC,IAA+B,EAAE,OAAkB,EAAA;AAC9E,IAAA,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QAC7B,KAAK,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE;AAClD,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;AAC5D,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;;YAE5D,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE;gBAC7B,IAAI,KAAK,IAAI,KAAK;oBAAE,SAAS;AAC7B,gBAAA,MAAM,GAAG,GAAG,KAAK,KAAK,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,gBAAA,OAAO,GAAG,CAAC;aACZ;AACD,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1C,IAAI,GAAG,KAAK,CAAC;AAAE,gBAAA,OAAO,SAAS,KAAK,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;SACzD;AACD,QAAA,OAAO,CAAC,CAAC;AACX,KAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,CAAU,EAAE,CAAU,EAAA;IACrC,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC,CAAC;AACtB,IAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,OAAO,CAAC,CAAC;AAC5C,IAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,QAAA,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACjE,IAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;AACA;AACA;AAEgB,SAAA,cAAc,CAAC,GAA4B,EAAE,OAAiB,EAAA;IAC5E,MAAM,SAAS,GAA4B,EAAE,CAAC;AAC9C,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,QAAA,IAAI,GAAG,IAAI,GAAG,EAAE;YACd,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;SAC3B;aAAM;YACL,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE;oBAC1C,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;iBACP;aACF;SACF;KACF;AACD,IAAA,OAAO,SAAS,CAAC;AACnB;;ACpOA;;;AAGG;AAKH;AACA;AACA;AAEA;AACgB,SAAA,YAAY,CAAC,IAAY,EAAE,OAAkC,EAAA;IAC3E,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,IAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED;AACM,SAAU,eAAe,CAAC,OAAkC,EAAA;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,aAAa,CAAC,qCAAqC,EAAE,cAAc,CAAC,CAAC;KAChF;IAED,IAAI,eAAe,GAAG,CAAC,CAAC;AAExB,IAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;;AAGvD,QAAA,IAAI,OAAO,KAAK,WAAW,EAAE;AAC3B,YAAA,MAAM,IAAI,aAAa,CAAC,wCAAwC,EAAE,cAAc,CAAC,CAAC;SACnF;;QAGD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACtC,MAAM,IAAI,aAAa,CACrB,CAAA,cAAA,EAAiB,MAAM,CAAC,IAAI,iBAAiB,OAAO,CAAA,gBAAA,EAAmB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC/F,cAAc,CACf,CAAC;SACH;;AAGD,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACrB,YAAA,eAAe,EAAE,CAAC;SACnB;KACF;;AAGD,IAAA,IAAI,eAAe,KAAK,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,aAAa,CAAC,iDAAiD,EAAE,cAAc,CAAC,CAAC;KAC5F;;;;AAID,IAAA,IAAI,eAAe,GAAG,CAAC,EAAE;AACvB,QAAA,MAAM,IAAI,aAAa,CACrB,CAAA,wDAAA,EAA2D,eAAe,CAAwB,sBAAA,CAAA;YAClG,2EAA2E,EAC3E,cAAc,CACf,CAAC;KACH;AACH,CAAC;AAUD;;;;AAIG;AACG,SAAU,qBAAqB,CAAC,OAAgC,EAAA;IACpE,MAAM,KAAK,GAA4B,EAAE,CAAC;AAC1C,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAClD,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KAC7C;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AA4CD;AACM,SAAU,cAAc,CAC5B,SAAiB,EACjB,OAAe,EACf,IAAe,EACf,KAAc,EACd,MAAkB,EAAA;AAElB,IAAA,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC;IAE5B,QAAQ,IAAI;AACV,QAAA,KAAK,QAAQ;AACX,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,sBAAA,EAAyB,MAAM,CAAA,CAAE,EAC3E,YAAY,CACb,CAAC;aACH;AACD,YAAA,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS,IAAK,KAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AAClF,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAe,YAAA,EAAA,SAAS,CAAwB,qBAAA,EAAA,MAAM,CAAC,SAAS,CAAA,CAAE,EACpF,kBAAkB,CACnB,CAAC;aACH;YACD,MAAM;AAER,QAAA,KAAK,QAAQ;AACX,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,sBAAA,EAAyB,MAAM,CAAA,CAAE,EAC3E,YAAY,CACb,CAAC;aACH;AACD,YAAA,IAAI,MAAM,EAAE,GAAG,KAAK,SAAS,IAAK,KAAgB,GAAG,MAAM,CAAC,GAAG,EAAE;AAC/D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAW,QAAA,EAAA,OAAO,eAAe,SAAS,CAAA,QAAA,EAAW,KAAK,CAAA,eAAA,EAAkB,MAAM,CAAC,GAAG,EAAE,EACxF,kBAAkB,CACnB,CAAC;aACH;AACD,YAAA,IAAI,MAAM,EAAE,GAAG,KAAK,SAAS,IAAK,KAAgB,GAAG,MAAM,CAAC,GAAG,EAAE;AAC/D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAW,QAAA,EAAA,OAAO,eAAe,SAAS,CAAA,QAAA,EAAW,KAAK,CAAA,eAAA,EAAkB,MAAM,CAAC,GAAG,EAAE,EACxF,kBAAkB,CACnB,CAAC;aACH;YACD,MAAM;AAER,QAAA,KAAK,SAAS;AACZ,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAE,EAC5E,YAAY,CACb,CAAC;aACH;YACD,MAAM;AAER,QAAA,KAAK,MAAM;AACT,YAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,EAAE;AAC7D,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAe,YAAA,EAAA,SAAS,CAAoC,iCAAA,EAAA,OAAO,KAAK,CAAA,CAAE,EAC5F,YAAY,CACb,CAAC;aACH;YACD,MAAM;AAER,QAAA,KAAK,MAAM;AACT,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,4BAAA,EAA+B,MAAM,CAAA,CAAE,EACjF,YAAY,CACb,CAAC;aACH;YACD,MAAM;KACT;AACH,CAAC;AAED;AACM,SAAU,oBAAoB,CAAC,MAcpC,EAAA;IACC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAiB;QAC9B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ;;ACzOA;;;AAGG;MAQU,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACW,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;AAEjB,QAAA,IAAA,CAAA,MAAM,GAAsD,IAAI,GAAG,EAAE,CAAC;AACtE,QAAA,IAAA,CAAA,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAwD,IAAI,GAAG,EAAE,CAAC;QACzE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;AAEf,QAAA,IAAA,CAAA,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC;AACnD;;;;AAIG;AACK,QAAA,IAAA,CAAA,eAAe,GAAgB,IAAI,GAAG,EAAE,CAAC;;QAGzC,IAAQ,CAAA,QAAA,GAIL,IAAI,CAAC;KA80BjB;;AA30BC,IAAA,MAAM,IAAI,CAAC,OAAe,EAAE,QAAgB,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;;YAEf,OAAO;SACR;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;AACD,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAAC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAAC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAAC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAAC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KAC9G;AACD,IAAA,MAAM,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;;AAKzC,IAAA,MAAM,MAAM,GAAoB,EAAA,OAAO,EAAE;;AAGzC,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC5B;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACxB;IAED,MAAM,OAAO,CAAC,GAAW,EAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;KACxC;AAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAChC;;IAGD,MAAM,WAAW,CAAC,MAAmB,EAAA;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,cAAc,CAAC,CAAC;;;AAGpH,QAAA,MAAM,IAAI,GAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC7D,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC9D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;SACvC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACxC,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqC,CAAC;AAClE,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC5D,YAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;gBAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;SACzE;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;KAC7C;IAED,MAAM,SAAS,CAAC,SAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAAC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAAC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;AAE9F,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;AAC/B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC9D;KACF;AAED,IAAA,MAAM,QAAQ,CAAC,SAAiB,EAAA,EAAsB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE;AAC3F,IAAA,MAAM,aAAa,GAAA,EAAwB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;AACpF,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAiC,EAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,EAAE;AAEpH;;;AAGG;AACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;;;;AAK3D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,aAAa,CACrB,2FAA2F,EAC3F,eAAe,CAChB,CAAC;SACH;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC5C,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,eAAe,CAAC,CAAC;aAC5G;YACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YACrC,OAAO;SACR;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;SAC/G;;;QAGD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAC3E,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAClD;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;QAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AAChC,YAAA,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG;AAAE,gBAAA,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACjD;KACF;;AAGD,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;;;;QAKzB,MAAM,SAAS,GAA8B,EAAE,CAAC;AAChD,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;AAChC,QAAA,MAAM,WAAW,GAA8B,IAAI,GAAG,EAAE,CAAC;;AAGzD,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAE/C,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAC5C,MAAM,IAAI,aAAa,CAAC,CAA0B,uBAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,eAAe,CAAC,CAAC;aACxG;AACD,YAAA,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;;;YAGnB,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AACzE,YAAA,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC9B;;AAGD,QAAA,KAAK,MAAM,YAAY,IAAI,SAAS,EAAE;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/C,YAAA,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACrD,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACnB;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGD,MAAM,CAAC,SAAiB,EAAE,OAAe,EAAA;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;KACnC;AAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC1C,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAE3D,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACtD,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;SAClE;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SAChD;AACD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;QAC5C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACzE,YAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;SACrE;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;;AAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;AACjG,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;AACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;AACnF,cAAE,CAAC,GAA4B,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC;cACrE,IAAI,CAAC;QAET,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;YAChC,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC;gBAAE,SAAS;AACzD,YAAA,IAAI,OAAO,GAAG,MAAM,EAAE;AAAE,gBAAA,OAAO,EAAE,CAAC;gBAAC,SAAS;aAAE;AAC9C,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACpC,YAAA,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,IAAI,KAAK;gBAAE,MAAM;SAC3B;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;AAChF,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;AAEzC,QAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;;;AAIpD,QAAA,IAAI,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,MAAM,IAAI,aAAa,CACrB,gGAAgG,EAChG,eAAe,CAChB,CAAC;SACH;;;QAID,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,GAAG,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;aACvG;SACF;;;;QAKD,MAAM,OAAO,GAAoG,EAAE,CAAC;AACpH,QAAA,MAAM,WAAW,GAA8B,IAAI,GAAG,EAAE,CAAC;;QAGzD,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;YAC7B,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;gBAAE,SAAS;YAClG,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YACxE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;;YAErC,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACpC,MAAM,IAAI,aAAa,CACrB,CAA0B,uBAAA,EAAA,KAAK,CAAe,YAAA,EAAA,SAAS,CAAyC,uCAAA,CAAA,EAChG,eAAe,CAChB,CAAC;aACH;AACD,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;SAC3C;;AAED,QAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;gBAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACjE;;QAGD,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,KAAK,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE;;YAEjD,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;;AAE5C,YAAA,IAAI,KAAK,KAAK,EAAE,EAAE;gBAChB,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;aACrD;AACD,YAAA,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACjB,YAAA,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAA,KAAK,EAAE,CAAC;SACT;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;AAIG;AACK,IAAA,qBAAqB,CAC3B,MAAmB,EACnB,SAAiB,EACjB,GAA4B,EAC5B,WAAsC,EAAA;QAEtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC9D,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,SAAS;AAC7B,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3B,YAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YACpD,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;AAC1B,gBAAA,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAChC;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,uCAAA,EAA0C,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAC9E,kBAAkB,CACnB,CAAC;aACH;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,YAAY;gBAAE,SAAS;YAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnC,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,uCAAA,EAA0C,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAC9E,kBAAkB,CACnB,CAAC;aACH;SACF;KACF;AAED;;;;AAIG;IACK,qBAAqB,CAC3B,MAAmB,EACnB,SAAiB,EACjB,EAAU,EACV,OAAgC,EAChC,WAAsC,EAAA;QAEtC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC9D,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,SAAS;AAC7B,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,YAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YACpD,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;AAC1B,gBAAA,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAChC;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,uCAAA,EAA0C,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAC9E,kBAAkB,CACnB,CAAC;aACH;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,YAAY;gBAAE,SAAS;YAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;;AAEjC,gBAAA,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;AACpC,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,uCAAA,EAA0C,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAC9E,kBAAkB,CACnB,CAAC;iBACH;aACF;SACF;KACF;AAED;;;AAGG;IACK,mBAAmB,CAAC,SAAiB,EAAE,KAAa,EAAA;QAC1D,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;AACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,SAAS;AACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,YAAY;oBAAE,SAAS;gBAC5B,IAAI,aAAa,GAAG,KAAK,CAAC;gBAC1B,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,YAAY,EAAE;oBACrC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;wBAAE,SAAS;oBAChD,aAAa,GAAG,IAAI,CAAC;AACrB,oBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;AAClC,wBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,eAAA,EAAkB,SAAS,CAAU,OAAA,EAAA,KAAK,CAAmB,gBAAA,EAAA,OAAO,SAAS,YAAY,CAAA,oBAAA,CAAsB,EAC/G,uBAAuB,CACxB,CAAC;qBACH;iBACF;;;AAGD,gBAAA,IAAI,aAAa,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE;AACtE,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,eAAA,EAAkB,SAAS,CAAU,OAAA,EAAA,KAAK,CAAmB,gBAAA,EAAA,OAAO,SAAS,YAAY,CAAA,4CAAA,CAA8C,EACvI,uBAAuB,CACxB,CAAC;iBACH;aACF;SACF;KACF;AAED;;;;;;AAMG;AACK,IAAA,MAAM,kBAAkB,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAa,EAAA;QAC9E,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;AACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,SAAS;AACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,YAAY;oBAAE,SAAS;gBAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;oBAAE,SAAS;gBAC9E,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE;oBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;wBAAE,SAAS;oBAChD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,oBAAA,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC;oBAC/D,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;iBACjD;aACF;SACF;KACF;AAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;;AAG5B,QAAA,IAAI,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,MAAM,IAAI,aAAa,CACrB,gGAAgG,EAChG,eAAe,CAChB,CAAC;SACH;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC1C,MAAM,QAAQ,GAAmD,EAAE,CAAC;QACpE,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;gBACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;aAC5B;SACF;;;;;;;AAOD,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AAC1C,QAAA,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE;YAC7B,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;SAC3D;;QAED,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,QAAQ,EAAE;;YAElC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC5C,YAAA,YAAY,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;SAC9D;AACD,QAAA,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,QAAQ;AAAE,YAAA,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChD,QAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC;KACvC;AAED;;;AAGG;AACK,IAAA,oBAAoB,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAoB,EAAA;AACnF,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;AAC3C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;AAClC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;AACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,SAAS;AACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,YAAY;oBAAE,SAAS;gBAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE;oBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO;AAAE,wBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC7D;AACD,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACvD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,oBAAA,CAAsB,EACrG,uBAAuB,CACxB,CAAC;iBACH;;AAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1E,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,4CAAA,CAA8C,EAC7H,uBAAuB,CACxB,CAAC;iBACH;AACD,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;AACjC,oBAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;wBAC1B,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;qBACzD;iBACF;aACF;SACF;KACF;AAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QAC9E,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AAAE,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;AAAE,gBAAA,MAAM,EAAE,CAAC;SAAE;AACjF,QAAA,OAAO,MAAM,CAAC;KACf;IAED,MAAM,KAAK,CAAC,SAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,YAAY;AAAE,YAAA,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE;gBAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;KAClF;;AAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;;;AAGnE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,aAAa,CACrB,4FAA4F,EAC5F,eAAe,CAChB,CAAC;SACH;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;AACtH,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;AAAE,YAAA,OAAO;QAE1C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAClD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC1C,QAAA,IAAI;YACF,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;AAC7B,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;;;oBAGzC,IAAI,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACjC,wBAAA,MAAM,IAAI,aAAa,CACrB,CAA2B,wBAAA,EAAA,MAAM,eAAe,SAAS,CAAA,sCAAA,EAAyC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,EAClH,kBAAkB,CACnB,CAAC;qBACH;AACD,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9B;aACF;SACF;QAAC,OAAO,KAAK,EAAE;;AAEd,YAAA,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,YAAA,MAAM,KAAK,CAAC;SACb;AACD,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;;YAErB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,MAAM,CAAE,CAAA,CAAC,CAAC;SACpD;KACF;AAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;;AAEpE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,aAAa,CACrB,0FAA0F,EAC1F,eAAe,CAChB,CAAC;SACH;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;QAEtH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACnC,MAAM,IAAI,aAAa,CAAC,CAAoB,iBAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;SAClH;;;;AAID,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;AAC3C,QAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACzD,YAAA,MAAM,IAAI,aAAa,CACrB,gCAAgC,MAAM,CAAA,YAAA,EAAe,SAAS,CAAK,GAAA,CAAA;gBACnE,qFAAqF,EACrF,eAAe,CAChB,CAAC;SACH;AACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,YAAY;AAAE,YAAA,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC/C;;AAID,IAAA,MAAM,gBAAgB,GAAA;QACpB,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,GAAG;YACd,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACzC,YAAA,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;SAC7C,CAAC;KACH;AAED,IAAA,MAAM,iBAAiB,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;AAED,IAAA,MAAM,mBAAmB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;;AAIO,IAAA,eAAe,CAAC,MAAyD,EAAA;AAC/E,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgD,CAAC;QACtE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;AAC9D,YAAA,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACxD,YAAA,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;SAC1B;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,gBAAgB,CAAC,MAA2D,EAAA;AAClF,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkD,CAAC;QACxE,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,EAAE;AAC9C,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;YAChE,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;AAC1C,gBAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AACjD,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ;oBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;aAC/B;AACD,YAAA,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;SAClC;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;AAGO,IAAA,WAAW,CAAC,SAAiB,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;KACpH;AAEO,IAAA,aAAa,CAAC,MAAmB,EAAA;AACvC,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,GAAG,CAAC,UAAU;AAAE,gBAAA,OAAO,IAAI,CAAC;SAAE;QAC9F,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACvC;IAEO,WAAW,CAAC,MAAmB,EAAE,GAA4B,EAAA;QACnE,MAAM,SAAS,GAA4B,EAAE,CAAC;AAC9C,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC9D,YAAA,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;AAAE,gBAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAChF,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAC9D,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,wBAAA,EAA2B,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;aAC1G;;;AAGD,YAAA,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAChE,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,IAAI,CAAA,6BAAA,CAA+B,EACvF,kBAAkB,CACnB,CAAC;aACH;AACD,YAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvF,IAAI,KAAK,KAAK,SAAS;AAAE,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;SACrD;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAEO,IAAA,SAAS,CAAC,OAAe,EAAE,IAAY,EAAE,KAAc,EAAA;AAC7D,QAAA,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC;QAC5B,QAAQ,IAAI;AACV,YAAA,KAAK,QAAQ;gBAAE,IAAI,MAAM,KAAK,QAAQ;oBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAAyB,sBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;gBAAC,MAAM;AAC1I,YAAA,KAAK,QAAQ;gBAAE,IAAI,MAAM,KAAK,QAAQ;oBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAAyB,sBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;gBAAC,MAAM;AAC1I,YAAA,KAAK,SAAS;gBAAE,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAA0B,uBAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;gBAAC,MAAM;AAC7I,YAAA,KAAK,MAAM;AAAE,gBAAA,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;oBAAE,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAsB,oBAAA,CAAA,EAAE,YAAY,CAAC,CAAC;gBAAC,MAAM;AACnK,YAAA,KAAK,MAAM;gBAAE,IAAI,MAAM,KAAK,QAAQ;oBAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,OAAO,CAA+B,4BAAA,EAAA,MAAM,CAAE,CAAA,EAAE,YAAY,CAAC,CAAC;gBAAC,MAAM;SAC/I;KACF;;AAGO,IAAA,cAAc,CACpB,SAAiB,EAAE,KAA2C,EAAE,KAAgB,EAAA;QAEhF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;;;;;QAKrE,MAAM,IAAI,GAAwB,EAAE,CAAC;AACrC,QAAA,MAAM,OAAO,GAAG,CAAC,CAAiB,KAAU;AAC1C,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,KAAK,MAAM,EAAE;oBAChB,KAAK,MAAM,GAAG,IAAK,CAAsB;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBACxD,SAAS;iBACV;AACD,gBAAA,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM;oBAAE,SAAS;gBAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACnB;AACH,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE;;AAEnC,YAAA,IAAI,WAAoB,CAAC;YACzB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;gBACvD,WAAW,GAAG,SAAS,CAAC;aACzB;AAAM,iBAAA,IAAI,KAAK,IAAK,SAAqC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAoC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5H,gBAAA,WAAW,GAAI,SAAqC,CAAC,GAAG,CAAC;aAC1D;iBAAM;gBACL,SAAS;aACV;;;;AAID,YAAA,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS;gBAAE,SAAS;YAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,QAAQ,EAAE;gBACZ,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACtC,IAAI,GAAG,EAAE;oBACP,MAAM,MAAM,GAA8B,EAAE,CAAC;AAC7C,oBAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;wBAAE,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAAC,wBAAA,IAAI,CAAC;AAAE,4BAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAAE;AACzE,oBAAA,OAAO,MAAM,CAAC;iBACf;AACD,gBAAA,OAAO,EAAE,CAAC;aACX;SACF;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;KACnC;;AAGO,IAAA,aAAa,CAAC,SAAiB,EAAE,GAA4B,EAAE,EAAU,EAAA;QAC/E,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;AAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBACzD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC9B;SACF;KACF;;AAGO,IAAA,kBAAkB,CAAC,SAAiB,EAAE,GAA4B,EAAE,EAAU,EAAA;QACpF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE;AAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,GAAG,EAAE;AACP,oBAAA,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACf,oBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;AAAE,wBAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC5C;aACF;SACF;KACF;;AAID;;;;AAIG;AACK,IAAA,MAAM,aAAa,CACzB,SAAiB,EACjB,OAAe,EACf,IAA6B,EAC7B,OAAA,GAAuB,IAAI,GAAG,EAAE,EAAA;AAEhC,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;AAC3C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;AACpC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;AAEzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,SAAS;AAErD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBAErC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,YAAY;oBAAE,SAAS;;gBAG5B,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE;oBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,EAAE;AACvC,wBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACtB;iBACF;;AAGD,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,oBAAA,CAAsB,EACrG,uBAAuB,CACxB,CAAC;iBACH;AAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;;AAEjC,oBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;wBAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACvC,IAAI,MAAM,EAAE;;4BAEV,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,4BAAA,YAAY,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;yBAChF;AACD,wBAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,wBAAA,YAAY,EAAE,CAAC;qBAChB;iBACF;AAAM,qBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;AACzC,oBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;wBAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACvC,IAAI,MAAM,EAAE;;;;4BAIV,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,4BAAA,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;4BACvB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;yBACjD;qBACF;iBACF;aACF;SACF;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;AACF;;ACz1BD;AACA,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;MAE9B,WAAW,CAAA;AAAxB,IAAA,WAAA,GAAA;QACU,IAAI,CAAA,IAAA,GAAqC,IAAI,CAAC;QAC9C,IAAK,CAAA,KAAA,GAAqC,IAAI,CAAC;QAC/C,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AACZ,QAAA,IAAA,CAAA,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;KAsJvD;IApJC,MAAM,IAAI,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;AAExE,QAAA,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAChC;AAED,IAAA,MAAM,KAAK,GAAA;;AAET,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,CAAC;SACvB;AAAC,QAAA,MAAM,oBAAoB;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;KAC5B;;AAGD,IAAA,MAAM,iBAAiB,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;AACxB,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAY,CAAC;YAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;AAC3B,YAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;AACxC,gBAAA,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAClB;aACF;AACD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,gBAAA,IAAI;oBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBAAE;AAAC,gBAAA,MAAM,gBAAgB;aACpE;SACF;AAAC,QAAA,MAAM,iBAAiB;KAC1B;IAED,MAAM,IAAI,CAAC,GAAW,EAAA;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;AAC7B,QAAA,IAAI;YACF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;AAChC,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;SACjC;AAAC,QAAA,MAAM;AACN,YAAA,OAAO,IAAI,CAAC;SACb;KACF;AAED;;;AAGG;AACH,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;AAC1C,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;AAC3C,YAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;;AAEH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;AAC7D,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;;AAIG;AACH,IAAA,MAAM,MAAM,CAAC,GAAW,EAAE,IAAiB,EAAA;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;AAC1C,YAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;AACpC,YAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,YAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,YAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;AAC7D,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGD,MAAM,SAAS,CAAC,OAAoC,EAAA;QAClD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;AAC1C,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACjD,gBAAA,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,gBAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC;AAC3C,gBAAA,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3B,gBAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;AAC7D,QAAA,OAAO,GAAG,CAAC;KACZ;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;AAC1C,YAAA,IAAI;gBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAAE;AAAC,YAAA,MAAM,gBAAgB;AACpE,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;AAC7D,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGD,MAAM,UAAU,CAAC,IAAc,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;AAC1C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,gBAAA,IAAI;oBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;iBAAE;AAAC,gBAAA,MAAM,gBAAgB;aACnE;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;AAC7D,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAa,EAAE,CAAC;;AAE1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAY,CAAC;AAC9B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjB;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK,CAAC;AAC9B,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACpC,YAAA,OAAO,IAAI,CAAC;SACb;AAAC,QAAA,MAAM;AACN,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AAED,IAAA,MAAM,KAAK,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAY,CAAC;AAC9B,QAAA,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;AACxC,YAAA,IAAI;gBAAE,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAAE;AAAC,YAAA,MAAM,gBAAgB;SACpE;KACF;AACF;;AClLD;;;;;;;;;AASG;AAIH;AACA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsC,CAAC;MAElD,mBAAmB,CAAA;AAAhC,IAAA,WAAA,GAAA;QACU,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;;AAEZ,QAAA,IAAA,CAAA,MAAM,GAA+B,IAAI,GAAG,EAAE,CAAC;;AAE/C,QAAA,IAAA,CAAA,YAAY,GAA6B,IAAI,GAAG,EAAE,CAAC;KA+F5D;;AA5FC,IAAA,OAAO,aAAa,GAAA;QAClB,QAAQ,CAAC,KAAK,EAAE,CAAC;KAClB;IAED,MAAM,IAAI,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACvB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;SAC/B;;QAED,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAA2C,CAAC;AAC3E,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;KAC/B;;AAGD,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;KAC/B;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC;KAC3B;IAED,MAAM,IAAI,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AAC5C,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC3D,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;YACpB,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACrC,YAAA,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC;SACrB;AACD,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAqB,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;QACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAClC;AAED,IAAA,MAAM,MAAM,CAAC,GAAW,EAAE,IAAiB,EAAA;;QAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjB;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9B;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC/B;IAED,MAAM,SAAS,CAAC,OAAoC,EAAA;;AAElD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAClC;KACF;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC/B;IAED,MAAM,UAAU,CAAC,IAAc,EAAA;AAC7B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC/B;KACF;AAED,IAAA,MAAM,QAAQ,GAAA;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;KACvC;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7B;AAED,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAC3B;AACF;;ACpHD;;;;;;;;;AASG;AAEH;AACA,MAAM,WAAW,GAAG,CAAC,MAAK;AACxB,IAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;AACnC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC9C;AACD,QAAA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACpB;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,GAAG,CAAC;AAEL;AACO,MAAM,UAAU,GAAG,UAAU,CAAC;AAErC;;AAEG;AACa,SAAA,WAAW,CAAC,KAAa,EAAE,IAAgB,EAAA;AACzD,IAAA,IAAI,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC;AACtB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;QACxC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;KACjE;IACD,OAAO,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AAED;AACM,SAAU,aAAa,CAAC,KAAa,EAAA;AACzC,IAAA,OAAO,CAAC,KAAK,GAAG,UAAU,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;;;AAKG;SACa,KAAK,CAAC,IAAgB,EAAE,IAAI,GAAG,CAAC,EAAA;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC;AACnD,IAAA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B;;ACpDA;;;;;;;;;;;;;;;;;AAiBG;AAIH;AACA,IAAkB,OAKjB,CAAA;AALD,CAAA,UAAkB,OAAO,EAAA;AACvB,IAAA,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP,IAAA,OAAA,CAAA,OAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;;AAEV,IAAA,OAAA,CAAA,OAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACZ,CAAC,EALiB,OAAO,KAAP,OAAO,GAKxB,EAAA,CAAA,CAAA,CAAA;AAYD;;;;;;AAMG;AACG,SAAU,eAAe,CAC7B,GAAW,EACX,IAAiC,EACjC,OAAoB,GAAA,EAAE,EACtB,OAAA,GAAuC,EAAE,EAAA;AAEzC,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,OAAO,GAAuD,EAAE,CAAC;AACvE,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,QAAA,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;KAC/C;AACD,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACtE;AACD,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClD,QAAA,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;KAClD;;IAGD,MAAM,UAAU,GAA0D,EAAE,CAAC;IAC7E,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,IAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;KACpD;AACD,IAAA,KAAK,IAAI,CAAC,CAAC;AAEX,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAAC,IAAA,MAAM,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAAC,MAAM,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAAC,MAAM,IAAI,CAAC,CAAC;AAC9D,IAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;QAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,MAAM,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAAC,MAAM,IAAI,CAAC,CAAC;QAC7D,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAAC,QAAA,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAAC,MAAM,IAAI,CAAC,CAAC;QAC/D,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAAC,QAAA,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;KACxD;AACD,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACtC,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;AAMG;SACa,eAAe,CAC7B,IAAgB,EAChB,QAAuC,EACvC,SAAuC,EAAA;IAEvC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACzE,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,OAAO,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChD,QAAA,IAAI,SAAS,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;;YAE9D,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;oBAAE,MAAM;aAC/B;YACD,MAAM;SACP;QACD,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,QAAA,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAElD,QAAA,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,GAAG,WAAW,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;QACxF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACtD,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACtD,QAAA,IAAI,SAAS,KAAK,WAAW,EAAE;YAC7B,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;oBAAE,MAAM;aACpC;YACD,MAAM;SACP;;QAGD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,OAAO,GAAuD,EAAE,CAAC;QACvE,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE;gBAAE,KAAK,GAAG,KAAK,CAAC;gBAAC,MAAM;aAAE;YACxD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAY,CAAC;YAAC,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAAC,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE;gBAAE,KAAK,GAAG,KAAK,CAAC;gBAAC,MAAM;aAAE;AAC7D,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC,IAAI,MAAM,CAAC;YACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAAC,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,EAAE;gBAAE,KAAK,GAAG,KAAK,CAAC;gBAAC,MAAM;aAAE;AAC3D,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAqB,CAAC;YAAC,CAAC,IAAI,QAAQ,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;oBAAE,MAAM;aACpC;YACD,MAAM;SACP;QAED,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AAChC,QAAA,KAAK,EAAE,CAAC;QACR,MAAM,GAAG,SAAS,CAAC;KACpB;AACD,IAAA,OAAO,KAAK,CAAC;AACf;;AClKA;;;;;;;;;;;;;AAaG;AAIH,MAAM,cAAc,GAAG,UAAU,CAAC;AAUlC;AACgB,SAAA,cAAc,CAAC,GAAW,EAAE,OAAiC,EAAA;AAC3E,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;;IAGxC,MAAM,OAAO,GAA6C,EAAE,CAAC;IAC7D,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,IAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;AAC7C,QAAA,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,QAAA,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;KAChD;AACD,IAAA,KAAK,IAAI,CAAC,CAAC;AAEX,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IAAC,MAAM,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAAC,MAAM,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAAC,MAAM,IAAI,CAAC,CAAC;AAC3D,IAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAAC,MAAM,IAAI,CAAC,CAAC;QAC7D,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAAC,QAAA,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAAC,MAAM,IAAI,CAAC,CAAC;QAC/D,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAAC,QAAA,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;KACxD;AACD,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACtC,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;AAGG;AACG,SAAU,cAAc,CAAC,IAAgB,EAAA;AAC7C,IAAA,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE;AAAE,QAAA,OAAO,IAAI,CAAC;AACtC,IAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,cAAc;AAAE,QAAA,OAAO,IAAI,CAAC;AAE7D,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7D,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,SAAS,KAAK,WAAW;AAAE,QAAA,OAAO,IAAI,CAAC;AAE3C,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,IAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC,IAAI,CAAC,CAAC;AAEpD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AACtD,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC,IAAI,MAAM,CAAC;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAqB,CAAC;QAAC,CAAC,IAAI,QAAQ,CAAC;AAC/E,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACzB;AAED,IAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B;;AC3FA;;;;;;;;;;;;;;;;;;;;AAoBG;AAUH;AACA,MAAM,OAAO,GAAG,UAAU,CAAC;AAC3B,MAAM,YAAY,GAAG,eAAe,CAAC;AACrC,MAAM,QAAQ,GAAG,WAAW,CAAC;AAE7B;AACA,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAOtD,SAAS,aAAa,GAAA;AACpB,IAAA,MAAM,GAAG,GAAI,UAAuE,CAAC,SAAS,CAAC;AAC/F,IAAA,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,UAAU,EAAE;QAC/F,OAAO,IAAI,WAAW,EAAE,CAAC;KAC1B;IACD,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,CAAC;MAEY,OAAO,CAAA;IAmBlB,WAAY,CAAA,MAAwB,EAAE,mBAAA,GAA8B,4BAA4B,EAAA;QAjBxF,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QACZ,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;AAGf,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;;QAEvC,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;;QAER,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;;AAKb,QAAA,IAAA,CAAA,OAAO,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;;QAE9C,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;AAG1C,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,aAAa,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;KAChD;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;;;;IAOD,MAAM,IAAI,CAAC,MAAc,EAAA;QACvB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;AAErB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;;QAIlB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,WAAW,EAAE;YACf,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;YACzD,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,gBAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACpB,gBAAA,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;aACxB;iBAAM;;AAEL,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACb,WAAW,GAAG,CAAC,CAAC;aACjB;SACF;;;;;;;QAQD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;AACnC,YAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,WAAW,CAAC;YAC5B,MAAM,cAAc,GAAa,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,MAAM,KAAI;AAC9C,gBAAA,IAAI,MAAM,CAAC,GAAG,IAAI,OAAO;AAAE,oBAAA,OAAO;AAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACxB,aAAC,EAAE,CAAC,MAAM,KAAI;AACZ,gBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5B,OAAO,IAAI,CAAC;AACd,aAAC,CAAC,CAAC;YACH,IAAI,OAAO,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC;aAChC;AACD,YAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE7B,gBAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1B;SACF;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;AAED;;;AAGG;AACH,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;AACzB,QAAA,IAAI;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC;SAAE;AAAC,QAAA,MAAM,gBAAgB;AAClD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;;AAGD,IAAA,MAAM,KAAK,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;;AAEzB,QAAA,IAAI;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC;SAAE;AAAC,QAAA,MAAM,gBAAgB;AAClD,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;;AAGlB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;;;;IAMD,MAAM,GAAG,CAAC,GAAW,EAAA;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;KACpC;AAED,IAAA,MAAM,MAAM,GAAA;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KACzC;AAED,IAAA,MAAM,QAAQ,GAAA;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KACtC;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC5B;IAED,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;KACxB;;;;;AAOD,IAAA,MAAM,GAAG,CAAC,GAAW,EAAE,KAAkB,EAAA;AACvC,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAW;AAC5B,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;KACJ;;IAGD,MAAM,OAAO,CAAC,OAAoC,EAAA;QAChD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC9C,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAW;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACJ;;IAGD,MAAM,MAAM,CAAC,GAAW,EAAA;AACtB,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAW;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;;IAGD,MAAM,UAAU,CAAC,IAAc,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC9B,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAW;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,MAAM,UAAU,CAAC,IAAiC,EAAE,OAAiB,EAAA;AACnE,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AACnE,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAW;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;AACH,IAAA,MAAM,WAAW,CAAC,GAAW,EAAE,KAAkB,EAAA;AAC/C,QAAA,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO;AACnC,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAW;AAC5B,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;AACpD,SAAC,CAAC,CAAC;KACJ;;;;;AAOD,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAW;;AAE5B,YAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;AACrC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACvC,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;aAC1F;AACD,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO;;AAGzD,YAAA,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,MAAqB,CAAC,CAAC;;YAEvE,MAAM,IAAI,GAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;AAEzF,YAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,YAAW;AAC5B,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACb,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;AAElB,YAAA,MAAM,IAAI,GAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3F,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;AACH,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAW;YAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;;YAElB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,YAAA,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE;gBACvD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACvC,gBAAA,SAAS,EAAE,CAAC;aACb;;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;AACnC,gBAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAChD,gBAAA,IAAI,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;AAC/B,oBAAA,SAAS,IAAI,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;AACzC,oBAAA,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,MAAqB,CAAC;oBAC5E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;iBAC7C;aACF;AACD,YAAA,OAAO,SAAS,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;;;;AAMO,IAAA,OAAO,CAAI,EAAoB,EAAA;AACrC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC,CAAC;AAC1D,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGO,MAAM,YAAY,CACxB,IAAiC,EACjC,OAAiB,EACjB,UAAuC,EAAE,EAAA;QAEzC,IAAI,CAAC,GAAG,EAAE,CAAC;AACX,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjE,QAAA,IAAI;;YAEF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAgB,CAAC;YAC1G,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;gBAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACzC;iBAAM;gBACL,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjD,IAAI,QAAQ,EAAE;AACZ,oBAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;oBACvE,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,oBAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACxD,oBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAqB,CAAC,CAAC;iBAClE;qBAAM;oBACL,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBACxC;aACF;SACF;QAAC,OAAO,KAAK,EAAE;;AAEd,YAAA,IAAI,CAAC,GAAG,EAAE,CAAC;AACX,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,MAAM,IAAI,aAAa,CAAC,2BAA2B,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;SAC7E;;AAGD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAC5B;AACD,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACxB;AACD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;gBACxE,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,gBAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAqB,CAAC,CAAC;aACrD;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC5B;SACF;AACD,QAAA,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC;;AAGnC,QAAA,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC7E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAqB,CAAC,CAAC;YAClG,MAAM,IAAI,GAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,YAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;SAC1B;KACF;;AAGO,IAAA,MAAM,WAAW,GAAA;AACvB,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD;AAAC,QAAA,MAAM,+BAA+B;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACnB;;AAGO,IAAA,WAAW,CAAC,OAA2D,EAAA;AAC7E,QAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;YACvB,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE;AACxB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;aAChC;iBAAM,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE;AAClC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,QAAQ,EAAE;AACZ,oBAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC1E,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,oBAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC3D,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAqB,CAAC,CAAC;iBACvD;qBAAM;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;iBAChC;aACF;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC1B;SACF;KACF;;AAGO,IAAA,kBAAkB,CAAC,GAAe,EAAA;QACxC,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACtE,OAAO,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChD,YAAA,IAAI,SAAS,GAAG,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG,CAAC,UAAU;gBAAE,MAAM;AACrE,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AACzD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC;AAC5D,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK,SAAS;gBAAE,MAAM;AAC3D,YAAA,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;SACzB;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;ACnbD;;;;;;;;;;;;;;;;;AAiBG;AAUH,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,GAAG,GAAG,CAAC,CAAS,KAAK,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAqB,CAAC;AAC7E,MAAM,GAAG,GAAG,CAAC,CAAc,KAAK,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MAE/C,aAAa,CAAA;IAyBxB,WAAY,CAAA,MAAwB,EAAE,mBAA4B,EAAA;QAxBzD,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;AAGb,QAAA,IAAA,CAAA,MAAM,GAAiB,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QACZ,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;QACZ,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;QAGf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;AAEjB,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;;QAEvC,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAChC;;;AAGG;AACK,QAAA,IAAA,CAAA,SAAS,GAA+C,IAAI,GAAG,EAAE,CAAC;;AAElE,QAAA,IAAA,CAAA,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;;AAEtC,QAAA,IAAA,CAAA,eAAe,GAAgB,IAAI,GAAG,EAAE,CAAC;QAG/C,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;KACpD;;IAIO,MAAM,CAAC,KAAa,EAAE,EAAU,EAAA;AACtC,QAAA,OAAO,GAAG,UAAU,CAAA,EAAG,KAAK,CAAI,CAAA,EAAA,EAAE,EAAE,CAAC;KACtC;AAEO,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,CAAG,EAAA,UAAU,CAAG,EAAA,KAAK,GAAG,CAAC;KACjC;;AAID,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,OAAe,EAAA;QACxC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;QAGxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE;AACb,YAAA,IAAI;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAgC,CAAC;gBAC1E,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;iBACvC;aACF;AAAC,YAAA,MAAM;AACN,gBAAA,MAAM,IAAI,aAAa,CAAC,6BAA6B,EAAE,iBAAiB,CAAC,CAAC;aAC3E;SACF;;QAGD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,SAAS;AAC1C,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,GAAG,GAAG,CAAC;gBAAE,SAAS;AACtB,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAChD,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAAE,SAAS;AACnD,YAAA,IAAI;gBACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aACxC;AAAC,YAAA,MAAM;;aAEP;SACF;;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AACjD,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,MAAM;gBAAE,SAAS;AACtB,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC1D,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;AACjC,oBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC1D;aACF;SACF;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,MAAM,KAAK,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;;AAEzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI;AAAE,gBAAA,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAAE;AAAC,YAAA,MAAM,gBAAgB;SACjE;;;AAGD,QAAA,IAAI;AAAE,YAAA,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;SAAE;AAAC,QAAA,MAAM,uBAAuB;AACjE,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED;;;;AAIG;AACH,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;;AAEzB,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;;AAEvB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5C;;AAGD,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;AACvB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;AAElD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5C;AAED,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC9B;IAED,MAAM,OAAO,CAAC,GAAW,EAAA;AACvB,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA,OAAA,EAAU,GAAG,CAAA,CAAE,CAAC,CAAC;AAC/C,QAAA,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAC9B;AAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;AACtC,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA,OAAA,EAAU,GAAG,CAAA,CAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;KAChD;;IAID,MAAM,WAAW,CAAC,MAAmB,EAAA;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,OAAO;SACR;AACD,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;KAC5B;IAED,MAAM,SAAS,CAAC,SAAiB,EAAA;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACvC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,OAAO;SACR;AACD,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;;QAE3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACnD;IAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KACxC;AAED,IAAA,MAAM,aAAa,GAAA;QACjB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;KACpC;IAED,MAAM,cAAc,CAAC,SAAiB,EAAA;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;KAC9C;AAED,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;QAE3D,IAAI,CAAC,UAAU,EAAE,CAAC;;;;AAIlB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,aAAa,CACrB,4FAA4F,EAC5F,eAAe,CAChB,CAAC;SACH;AACD,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACxD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,OAAO;SACR;AACD,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3B,QAAA,IAAI,MAAM,KAAK,MAAM,EAAE;;YAErB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACpD,YAAA,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACnD;KACF;;AAID,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACtD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;YAElC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjC,gBAAA,OAAO,GAAG,CAAC;aACZ;;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;aACxC;YACD,KAAK,MAAM,EAAE,IAAI,GAAG;AAAE,gBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,YAAA,OAAO,GAAG,CAAC;SACZ;;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;;;QAG/F,MAAM,IAAI,GAAgC,EAAE,CAAC;AAC7C,QAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AACpB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC9C,YAAA,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;SACtE;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;QACjG,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KACxD;AAED,IAAA,MAAM,MAAM,CACV,SAAiB,EACjB,KAAgB,EAChB,OAAgC,EAAA;QAEhC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;AAEjC,QAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACpD,QAAA,MAAM,SAAS,GAAG,KAAK,IAAI,YAAY,CAAC;;AAGxC,QAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAClF,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACvE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;;YAGlC,IAAI,SAAS,EAAE;gBACb,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACpD,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC3B;aACF;iBAAM;gBACL,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;oBACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;iBACxC;gBACD,KAAK,MAAM,EAAE,IAAI,QAAQ;AAAE,oBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;gBAElD,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACpD,oBAAA,IAAI,CAAC,KAAK,SAAS,EAAE;AACnB,wBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC3B;iBACF;aACF;AACD,YAAA,OAAO,KAAK,CAAC;SACd;QAED,MAAM,IAAI,GAAgC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,SAAS,EAAE;;YAEb,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;gBACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/B;SACF;aAAM;;;;AAIL,YAAA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AACtC,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACxE,YAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,gBAAA,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,oBAAA,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC3B;aACF;;AAED,YAAA,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE;AAC5B,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;aAC1C;;YAED,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;gBACpD,IAAI,CAAC,KAAK,SAAS;oBAAE,SAAS;gBAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/B;SACF;;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;;QAElB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC5D,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACzD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;YAElC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;aACxC;YACD,KAAK,MAAM,EAAE,IAAI,GAAG;AAAE,gBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAChD,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;AACpD,gBAAA,IAAI,CAAC,KAAK,SAAS,EAAE;AACnB,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC3B;aACF;AACD,YAAA,OAAO,KAAK,CAAC;SACd;QACD,MAAM,IAAI,GAAgC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;;QAE5D,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YACpD,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAS;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;SAC/B;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KAC5C;IAED,MAAM,KAAK,CAAC,SAAiB,EAAA;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;AAElC,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO;SACR;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACnD;;AAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,aAAa,CACrB,6FAA6F,EAC7F,eAAe,CAChB,CAAC;SACH;AACD,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACzD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,OAAO;SACR;AACD,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;KAC5B;AAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,SAAkB,EAAA;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,aAAa,CACrB,2FAA2F,EAC3F,eAAe,CAChB,CAAC;SACH;AACD,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,OAAO;SACR;AACD,QAAA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;KAC5B;;AAID,IAAA,MAAM,gBAAgB,GAAA;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;KAClC;AAED,IAAA,MAAM,iBAAiB,GAAA;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;;;;;QAMhF,MAAM,IAAI,GAAgC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;AAC7B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;AACtC,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;;gBAExC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrC,gBAAA,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;AACvB,oBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC/C;gBACD,SAAS;aACV;YACD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;;gBAEnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrC,gBAAA,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;AACvB,oBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC/C;gBACD,SAAS;aACV;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,SAAS;aACV;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;;gBAE/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,gBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AACjC,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;oBACtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,oBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;wBACtB,IAAI,IAAI,KAAK,KAAK;4BAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;;AAC1E,4BAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,wBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBACvB;iBACF;;gBAED,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE;oBAChC,IAAI,IAAI,KAAK,QAAQ;AAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC7D;aACF;SACF;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;AAExC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;SAC5B;;;;AAID,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;KAClC;AAED,IAAA,MAAM,mBAAmB,GAAA;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;AAChF,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;KAClC;;IAIO,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;KACjF;AAEO,IAAA,KAAK,CAAC,MAAmB,EAAA;AAC/B,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACxD,IAAI,GAAG,CAAC,UAAU;AAAE,gBAAA,OAAO,IAAI,CAAC;SACjC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACvC;;AAGO,IAAA,MAAM,kBAAkB,CAAC,SAAiB,EAAE,KAAgB,EAAA;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1C;AAED;;;AAGG;IACK,MAAM,cAAc,CAAC,SAAiB,EAAA;QAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,OAAO,OAAO,EAAE;YACd,OAAO,GAAG,KAAK,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE;AACrD,gBAAA,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;AACtB,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC/C,oBAAA,IAAI,GAAG,CAAC,UAAU,EAAE;AAClB,wBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,wBAAA,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAChB,4BAAA,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACf,OAAO,GAAG,IAAI,CAAC;4BACf,MAAM;yBACP;qBACF;iBACF;aACF;SACF;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;;AAGO,IAAA,MAAM,aAAa,GAAA;QACzB,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACvD,YAAA,IAAI,MAAM;AAAE,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;SACrC;AACD,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC7D;AAED;;;AAGG;IACK,MAAM,gBAAgB,CAAC,SAAiB,EAAA;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,IAAI,GAAgC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;;QAE7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,MAAM,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACrE,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;AAClC,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;aACtC;;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;AACnC,YAAA,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;AACvB,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACpE;SACF;aAAM;YACL,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;AACnC,YAAA,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;AACvB,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC/C;SACF;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC1B;AACF;;ACxpBD;;;;;AAKG;AAEH;AACA;AACA;AAEA;AACO,MAAM,SAAS,GAAG,IAAI,CAAC;AAE9B;AACO,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;AACA;AACA;AAEA,IAAY,QASX,CAAA;AATD,CAAA,UAAY,QAAQ,EAAA;;AAElB,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;;AAER,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;;AAET,IAAA,QAAA,CAAA,QAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;;AAEZ,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACV,CAAC,EATW,QAAQ,KAAR,QAAQ,GASnB,EAAA,CAAA,CAAA,CAAA;AAyBD;AACA;AACA;AAEA;AACA;AACA;AAEA;AACO,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAErD;AACO,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C;AACO,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC;AACO,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAoChD;AACA;AACA;AAEA;AACA,IAAY,aASX,CAAA;AATD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,aAAA,CAAA,aAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAChB,CAAC,EATW,aAAa,KAAb,aAAa,GASxB,EAAA,CAAA,CAAA,CAAA;AAoBD;AACA;AACA;AAEA;AACA,IAAY,gBAIX,CAAA;AAJD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,gBAAA,CAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACb,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,GAI3B,EAAA,CAAA,CAAA,CAAA;AA0BD;AACA;AACA;AAEA;AACO,MAAM,yBAAyB,GAAG,GAAG,CAAC;AA+CtC,MAAM,mBAAmB,GAG5B;AACF,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,eAAe,EAAE,yBAAyB;AAC1C,IAAA,qBAAqB,EAAE,qBAAqB;AAC5C,IAAA,mBAAmB,EAAE,6BAA6B;AAClD,IAAA,qBAAqB,EAAE,0BAA0B;AACjD,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,cAAc,EAAE,MAAM;AACtB,IAAA,gBAAgB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;AAClC,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,WAAW,EAAE,SAAS;CACvB;;ACxPD;;;;;AAKG;AAEH;AACA;AACA;AAEA,IAAK,KAAoB,CAAA;AAAzB,CAAA,UAAK,KAAK,EAAA;AAAG,IAAA,KAAA,CAAA,KAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AAAE,IAAA,KAAA,CAAA,KAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AAAC,CAAC,EAApB,KAAK,KAAL,KAAK,GAAe,EAAA,CAAA,CAAA,CAAA;AAEzB,MAAM,MAAM,CAAA;IAQV,WAAY,CAAA,GAAM,EAAE,KAAQ,EAAA;AAL5B,QAAA,IAAA,CAAA,KAAK,GAAU,KAAK,CAAC,GAAG,CAAC;QACzB,IAAI,CAAA,IAAA,GAAwB,IAAI,CAAC;QACjC,IAAK,CAAA,KAAA,GAAwB,IAAI,CAAC;QAClC,IAAM,CAAA,MAAA,GAAwB,IAAI,CAAC;AAGjC,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACF,CAAA;AAED;AACA;AACA;AAEA,MAAM,YAAY,CAAA;AAAlB,IAAA,WAAA,GAAA;QACU,IAAI,CAAA,IAAA,GAAwB,IAAI,CAAC;QACjC,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;KAyXnB;IAvXC,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;;IAGzC,MAAM,CAAC,GAAM,EAAE,KAAQ,EAAA;QACrB,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;SACR;QAED,IAAI,MAAM,GAAwB,IAAI,CAAC;AACvC,QAAA,IAAI,OAAO,GAAwB,IAAI,CAAC,IAAI,CAAC;QAE7C,OAAO,OAAO,EAAE;YACd,MAAM,GAAG,OAAO,CAAC;AACjB,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;AACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;AAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;AAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;aACzB;iBAAM;;AAEL,gBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;gBACtB,OAAO;aACR;SACF;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,GAAG,GAAG,MAAO,CAAC,GAAG,EAAE;AACrB,YAAA,MAAO,CAAC,IAAI,GAAG,IAAI,CAAC;SACrB;aAAM;AACL,YAAA,MAAO,CAAC,KAAK,GAAG,IAAI,CAAC;SACtB;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACtB;;AAGD,IAAA,IAAI,CAAC,GAAM,EAAA;AACT,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO,OAAO,EAAE;AACd,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;AACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;AAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;AAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;aACzB;iBAAM;gBACL,OAAO,OAAO,CAAC,KAAK,CAAC;aACtB;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,MAAM,CAAC,GAAM,EAAA;;QAEX,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK,CAAC;AAExB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,OAAO,IAAI,CAAC;KACb;;;AAID,IAAA,OAAO,CAAC,QAAoC,EAAA;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACpC;;AAGD,IAAA,SAAS,CACP,QAAW,EACX,MAAS,EACT,QAAoC,EAAA;AAEpC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KACxD;AAED;;;AAGG;AACH,IAAA,CAAC,QAAQ,CAAC,QAAW,EAAE,MAAS,EAAA;QAC9B,MAAM,KAAK,GAAmB,EAAE,CAAC;;AAEjC,QAAA,IAAI,GAAG,GAAwB,IAAI,CAAC,IAAI,CAAC;QACzC,OAAO,GAAG,EAAE;AACV,YAAA,IAAI,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE;AACvB,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,gBAAA,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;aAChB;iBAAM;AACL,gBAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;aACjB;SACF;AACD,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;;AAE1B,YAAA,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM;gBAAE,MAAM;AAC7B,YAAA,IAAI,IAAI,CAAC,GAAG,IAAI,QAAQ;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,YAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;YACjB,OAAO,GAAG,EAAE;AACV,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,gBAAA,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;aAChB;SACF;KACF;;IAGD,aAAa,GAAA;QACX,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,OAAO,OAAO,CAAC;KAChB;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAChB;;AAIO,IAAA,QAAQ,CAAC,GAAM,EAAA;AACrB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO,OAAO,EAAE;AACd,YAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;AACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;AAAM,iBAAA,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;AAC5B,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;aACzB;iBAAM;AACL,gBAAA,OAAO,OAAO,CAAC;aAChB;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,UAAU,CAAC,IAAkB,EAAA;;;QAGnC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACnE;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAM,CAAC,MAAM,CAAC,CAAC;SAChF;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAK,CAAC,MAAM,CAAC,CAAC;SAC9E;aAAM;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;;;AAK3C,YAAA,MAAM,cAAc,GAAG,SAAU,CAAC,KAAK,CAAC;AACxC,YAAA,MAAM,eAAe,GAAG,SAAU,CAAC,MAAM,CAAC;AAC1C,YAAA,IAAI,eAAe,KAAK,IAAI,EAAE;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAU,EAAE,cAAc,CAAC,CAAC;AAC5C,gBAAA,SAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B,gBAAA,SAAU,CAAC,KAAM,CAAC,MAAM,GAAG,SAAS,CAAC;aACtC;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACjC,YAAA,SAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5B,YAAA,SAAU,CAAC,IAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AACpC,YAAA,MAAM,SAAS,GAAG,SAAU,CAAC,KAAK,CAAC;AACnC,YAAA,SAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE;gBAC7B,MAAM,CAAC,GAAG,cAAc,CAAC;;;gBAGzB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,eAAe,KAAK,IAAI,GAAG,SAAU,GAAG,eAAe,CAAC,CAAC;AACzF,gBAAA,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC5B;SACF;KACF;IAEO,UAAU,CAAC,CAAsB,EAAE,CAAsB,EAAA;AAC/D,QAAA,IAAI,CAAC,CAAE,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACf;aAAM,IAAI,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/B,YAAA,CAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;SACpB;aAAM;AACL,YAAA,CAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;SACrB;AACD,QAAA,IAAI,CAAC;AAAE,YAAA,CAAC,CAAC,MAAM,GAAG,CAAE,CAAC,MAAM,CAAC;KAC7B;AAEO,IAAA,OAAO,CAAC,IAAkB,EAAA;QAChC,OAAO,IAAI,CAAC,IAAI;AAAE,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,SAAS,CAAC,IAAkB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;AACrD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;AAClC,YAAA,IAAI,CAAC,WAAW;gBAAE,MAAM;AAExB,YAAA,IAAI,MAAM,KAAK,WAAW,CAAC,IAAI,EAAE;AAC/B,gBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;gBAChC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;AACtC,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC3B,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B,oBAAA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;oBAC9B,IAAI,GAAG,WAAW,CAAC;iBACpB;qBAAM;AACL,oBAAA,IAAI,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE;wBACzB,IAAI,GAAG,MAAM,CAAC;AACd,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,CAAC,MAAM;wBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACjD,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;wBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AAC9D,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;wBAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC/D;aACF;iBAAM;AACL,gBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;gBAC/B,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;AACtC,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC3B,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B,oBAAA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;oBAC9B,IAAI,GAAG,WAAW,CAAC;iBACpB;qBAAM;AACL,oBAAA,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;wBACxB,IAAI,GAAG,MAAM,CAAC;AACd,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;qBACxB;oBACD,IAAI,IAAI,CAAC,MAAM;wBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACjD,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;wBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AAC9D,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM;wBAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC9D;aACF;SACF;QACD,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;KAC9C;IAEO,SAAS,CAAC,CAAsB,EAAE,MAA2B,EAAA;;QAEnE,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,UAAU,GAAG,MAAM,CAAC;AAExB,QAAA,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAClE,YAAA,IAAI,CAAC,UAAU;gBAAE,MAAM;AAEvB,YAAA,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;AAC5B,gBAAA,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,OAAO;oBAAE,MAAM;;gBAGpB,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;AAC/B,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC5B,oBAAA,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;AAC3B,oBAAA,IAAI,CAAC,OAAO;wBAAE,MAAM;iBACrB;;AAGD,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;AAC7B,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC/B,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAC1C,qBAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE;AACjD,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;oBAC1B,IAAI,GAAG,UAAU,CAAC;AAClB,oBAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;iBAC1B;qBAAM;;oBAEL,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;AAC/C,wBAAA,IAAI,OAAO;AAAE,4BAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACzC,wBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AAC1B,wBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC1B,wBAAA,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;AAC3B,wBAAA,IAAI,CAAC,OAAO;4BAAE,MAAM;qBACrB;;AAED,oBAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AACjC,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC/B,IAAI,OAAO,CAAC,KAAK;wBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACrD,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC5B,oBAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;iBAClB;aACF;iBAAM;;AAEL,gBAAA,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,OAAO;oBAAE,MAAM;gBAEpB,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE;AAC/B,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC7B,oBAAA,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;AAC1B,oBAAA,IAAI,CAAC,OAAO;wBAAE,MAAM;iBACrB;AAED,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;AAC7B,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC/B,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAC1C,qBAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE;AACjD,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;oBAC1B,IAAI,GAAG,UAAU,CAAC;AAClB,oBAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;iBAC1B;qBAAM;oBACL,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;AAC7C,wBAAA,IAAI,QAAQ;AAAE,4BAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC3C,wBAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;AAC1B,wBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,wBAAA,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;AAC1B,wBAAA,IAAI,CAAC,OAAO;4BAAE,MAAM;qBACrB;AACD,oBAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AACjC,oBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC/B,IAAI,OAAO,CAAC,IAAI;wBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACnD,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC7B,oBAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;iBAClB;aACF;SACF;AAED,QAAA,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;KACpC;AAEO,IAAA,UAAU,CAAC,CAAe,EAAA;AAChC,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,CAAC;YAAE,OAAO;AACf,QAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,CAAC,IAAI;AAAE,YAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AACpB,QAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACf;aAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC9B,YAAA,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;SACnB;aAAM;AACL,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;SACpB;AACD,QAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACX,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACd;AAEO,IAAA,WAAW,CAAC,CAAe,EAAA;AACjC,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,CAAC;YAAE,OAAO;AACf,QAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC,CAAC,KAAK;AAAE,YAAA,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AACpB,QAAA,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACf;aAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAC/B,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;SACpB;aAAM;AACL,YAAA,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;SACnB;AACD,QAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACZ,QAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACd;IAEO,QAAQ,CAAC,IAAyB,EAAE,EAAwB,EAAA;AAClE,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KAC/B;AAEO,IAAA,UAAU,CAChB,IAAyB,EACzB,KAAQ,EACR,GAAM,EACN,EAAwB,EAAA;AAExB,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO;AAClB,QAAA,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG;YAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,QAAA,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;KACjE;AACF,CAAA;AAED;AACA;AACA;MAEa,QAAQ,CAAA;AAKnB,IAAA,WAAA,CAAY,OAAkB,GAAA,CAAC,GAAG,IAAI,GAAG,IAAI,EAAA;QAHrC,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AAIzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;;IAGD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,OAAO,CAAC;KAC1C;;AAGD,IAAA,GAAG,CAAC,GAAW,EAAA;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;;AAGD,IAAA,MAAM,CAAC,GAAW,EAAA;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SAC5D;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC9B;;IAGD,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC;KAC5C;;IAGD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;KAClC;;IAGD,SAAS,CACP,QAAgB,EAChB,MAAc,EAAA;QAEd,MAAM,OAAO,GAAwC,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,OAAO,OAAO,CAAC;KAChB;;IAGD,QAAQ,CACN,QAAgB,EAChB,MAAc,EAAA;QAEd,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC7C;;IAGD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;KACvB;;IAGD,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;KACzB;;;;IAMO,iBAAiB,CAAC,GAAW,EAAE,KAAqC,EAAA;AAC1E,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,CAAC,CAAC;QACrB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5B,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,gBAAA,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,IAAI,IAAI,CAAC,CAAC;iBACrC,IAAI,OAAO,CAAC,KAAK,SAAS;gBAAE,IAAI,IAAI,CAAC,CAAC;AACtC,iBAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;gBAAE,IAAI,IAAI,CAAC,CAAC;;AAC7C,gBAAA,IAAI,IAAI,EAAE,CAAC;SACjB;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;AC9fD;;;;;AAKG;AAIH;AACA;AACA;MAEa,WAAW,CAAA;AAKtB;;;AAGG;IACH,WAAY,CAAA,OAAe,EAAE,UAAA,GAAqB,0BAA0B,EAAA;QANpE,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;AAQpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;;AAGrC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;KAC7D;;AAGD,IAAA,OAAO,QAAQ,CAAC,IAAgB,EAAE,SAAiB,EAAA;QACjD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;AACf,QAAA,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;AACzB,QAAA,OAAO,EAAE,CAAC;KACX;;AAGD,IAAA,MAAM,CAAC,GAAW,EAAA;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnC,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;AAGD,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnC,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC9C,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;KACb;;IAGD,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;;IAGD,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;;;;AAMO,IAAA,SAAS,CAAC,GAAW,EAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,MAAM,GAAa,EAAE,CAAC;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;;AAEvC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC;AACzC,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;AACD,QAAA,OAAO,MAAM,CAAC;KACf;;AAGO,IAAA,KAAK,CAAC,GAAW,EAAA;QACvB,IAAI,IAAI,GAAG,UAAU,CAAC;AACtB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,GAAG,CAAC,IAAI,GAAG,UAAU,MAAM,CAAC,CAAC;SAClC;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;AAGO,IAAA,YAAY,CAAC,GAAW,EAAA;QAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;AACrC,YAAA,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;SACrC;AACD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACvB;AACF;;AChHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCG;AAMH;AACO,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C;AACO,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,MAAM,mBAAmB,GAAG,EAAE,CAAC;MAYlB,cAAc,CAAA;AAIzB,IAAA,WAAA,CAAY,iBAAyB,IAAI,EAAA;QAHjC,IAAO,CAAA,OAAA,GAAwC,EAAE,CAAC;AAIxD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACtC;;IAGD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;QAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;KACjC;AAED;;;AAGG;IACH,KAAK,GAAA;;;AAGH,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,QAAA,MAAM,OAAO,GAAmB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM;YAClE,GAAG;AACH,YAAA,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;YAC7B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAClD,SAAA,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;QAGzD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,YAAY,GAAa,EAAE,CAAC;AAClC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,YAAA,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SAC3C;;QAGD,MAAM,YAAY,GAAiB,EAAE,CAAC;AACtC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC;gBAChB,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;AAChC,gBAAA,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAC5B,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACxC,aAAA,CAAC,CAAC;SACJ;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;;AAGjE,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;AAC1C,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;;QAGvC,MAAM,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,mBAAmB,CAAC;AAC/E,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,MAAM,GAAG,CAAC,CAAC;;AAGf,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;SAChE;;QAGD,MAAM,WAAW,GAAG,MAAM,CAAC;QAC3B,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;;QAG1D,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,SAAS,CAAC;;QAGpB,MAAM,YAAY,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,WAAW,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;;QAE3D,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;;;AAI5C,QAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAChC,QAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,QAAQ,KAAK,CAAC;YAAE,QAAQ,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEnD,OAAO;AACL,YAAA,WAAW,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;YAChC,YAAY;SACb,CAAC;KACH;;IAGD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;KAC5B;;;;;AAOO,IAAA,eAAe,CAAC,OAAuB,EAAA;QAC7C,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,IAAI,OAAO,GAAmB,EAAE,CAAC;AAEjC,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAEpB,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/E,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAA,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;aACnB;SACF;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE7C,QAAA,OAAO,MAAM,CAAC;KACf;;AAGO,IAAA,gBAAgB,CAAC,KAAqB,EAAA;QAC5C,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;SACzD;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,cAAc,CACpB,IAAc,EACd,MAAc,EACd,KAAqB,EACrB,WAAwB,EAAA;;QAGxB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,CAAC;AAEZ,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;;AAErB,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE;AACtE,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;aACvE;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,CAAC;AACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAA,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,CAAC;AACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACtD,YAAA,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;;AAG9B,YAAA,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC3B;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,sBAAsB,CAAC,OAAqB,EAAA;;QAElD,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;SACtD;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,eAAe,CAAC,IAAc,EAAE,MAAc,EAAE,OAAqB,EAAA;QAC3E,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,CAAC;AAEZ,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,CAAC;AACZ,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAClD,YAAA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,CAAC;SACb;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;AC5PD;;;;;;AAMG;AAOH;AACA;AACA;MAEa,aAAa,CAAA;IAYxB,WAAY,CAAA,IAAgB,EAAE,IAAiB,EAAA;QATvC,IAAY,CAAA,YAAA,GAAiB,EAAE,CAAC;QAChC,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QAEf,IAAW,CAAA,WAAA,GAAuB,IAAI,CAAC;;QAEvC,IAAM,CAAA,MAAA,GAAU,CAAC,CAAC;;QAElB,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AAGzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED;;;AAGG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,QAAA,OAAO,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC;KACzC;;IAGO,YAAY,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAClC;AAEO,IAAA,OAAO,CAAC,MAAc,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACpG;;;;;AAOD,IAAA,GAAG,CAAC,SAAiB,EAAA;;AAEnB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QAE7E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,QAAQ,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;AAE3C,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;AAC7F,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpC,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,MAAM,GAAG,CAAC,CAAC;;AAGf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;gBAAE,MAAM;AACnD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3G,MAAM,IAAI,OAAO,CAAC;YAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;gBAAE,MAAM;AAC5D,YAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;YAC/E,MAAM,IAAI,MAAM,CAAC;AACjB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3G,MAAM,IAAI,OAAO,CAAC;AAClB,YAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;gBAAE,MAAM;AAClD,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YAC1D,MAAM,IAAI,MAAM,CAAC;AAEjB,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,gBAAA,IAAI;AACF,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACvD;AAAC,gBAAA,MAAM;AACN,oBAAA,OAAO,IAAI,CAAC;iBACb;aACF;SACF;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,SAAS,CACP,QAAgB,EAChB,MAAc,EACd,QAA+D,EAAA;;AAG/D,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AAC1D,YAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACtB;KACF;AAED;;;AAGG;AACH,IAAA,CAAC,QAAQ,CACP,QAAgB,EAChB,MAAc,EAAA;AAEd,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC3C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;;QAKhE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3F,IAAI,aAAa,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,aAAa,GAAG,WAAW;YAAE,OAAO;AAEhF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACpC,QAAA,KAAK,IAAI,EAAE,GAAG,aAAa,EAAE,EAAE,IAAI,WAAW,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;AAE3C,YAAA,IAAI,CAAC,SAAS;gBAAE,SAAS;AACzB,YAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;YAE7F,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;AACnD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,IAAI,OAAO,CAAC;gBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;AAC5D,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC/E,MAAM,IAAI,MAAM,CAAC;AACjB,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,IAAI,OAAO,CAAC;AAClB,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;AAClD,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC1D,MAAM,IAAI,MAAM,CAAC;gBAEjB,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,MAAM,EAAE;AACpC,oBAAA,IAAI;AACF,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7D,wBAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;qBACpB;AAAC,oBAAA,MAAM;;qBAEP;iBACF;aACF;SACF;KACF;;AAGD,IAAA,OAAO,CAAC,QAA+D,EAAA;AACrE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACpC,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;;AAE3C,YAAA,IAAI,CAAC,SAAS;gBAAE,SAAS;AACzB,YAAA,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;YAE7F,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;AACnD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,IAAI,OAAO,CAAC;gBAClB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;AAC5D,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC/E,MAAM,IAAI,MAAM,CAAC;AACjB,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC3G,MAAM,IAAI,OAAO,CAAC;AAClB,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU;oBAAE,MAAM;AAClD,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC1D,MAAM,IAAI,MAAM,CAAC;AAEjB,gBAAA,IAAI;AACF,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7D,oBAAA,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBACtB;AAAC,gBAAA,MAAM;;iBAEP;aACF;SACF;KACF;;;;IAMO,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACtD;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;AAG/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5D,QAAA,IAAI,KAAK,KAAK,gBAAgB,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;AAAM,aAAA,IAAI,KAAK,KAAK,gBAAgB,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,CAAmC,gCAAA,EAAA,gBAAgB,CAAO,IAAA,EAAA,gBAAgB,CAAS,MAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;SAC7G;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACjE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AAChE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;;QAGpE,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC5F,YAAA,OAAO;SACR;;AAGD,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;AAG7C,QAAA,IAAI,WAAW,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,WAAW,GAAG,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACvF,YAAA,IAAI;AACF,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;AACzE,gBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;aAC3E;AAAC,YAAA,MAAM;;aAEP;SACF;KACF;IAEO,eAAe,CAAC,MAAc,EAAE,KAAa,EAAA;AACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,CAAC;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;;;YAGnC,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,MAAM;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC;YAClB,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,MAAM;YACtD,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;YAC/E,MAAM,IAAI,MAAM,CAAC;AACjB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,IAAI,CAAC,CAAC;AACZ,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,CAAC;;AAGZ,YAAA,IAAI,SAAS,KAAK,CAAC,IAAI,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,SAAS;AAEhF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;SACzD;KACF;AAED;;;AAGG;AACK,IAAA,YAAY,CAAC,KAAiB,EAAA;QACpC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AAC/D,QAAA,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI,CAAC;QAC5E,OAAO,IAAI,UAAU,CACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,EACxC,KAAK,CAAC,SAAS,CAChB,CAAC;KACH;;AAGO,IAAA,WAAW,CAAC,GAAW,EAAA;QAC7B,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAEtC,QAAA,OAAO,EAAE,IAAI,EAAE,EAAE;AACf,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAErC,YAAA,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;;gBAEpB,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACjE,IAAI,GAAG,GAAG,QAAQ;AAAE,oBAAA,OAAO,GAAG,CAAC;AAC/B,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;aACd;iBAAM;AACL,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;aACd;SACF;QAED,OAAO,CAAC,CAAC,CAAC;KACX;AAEO,IAAA,aAAa,CAAC,GAAW,EAAA;QAC/B,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC1C,QAAA,OAAO,EAAE,GAAG,EAAE,EAAE;YACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG;AAAE,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;gBAC9C,EAAE,GAAG,GAAG,CAAC;SACf;QACD,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;KAC1E;AAEO,IAAA,aAAa,CAAC,GAAW,EAAA;QAC/B,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC1C,QAAA,OAAO,EAAE,GAAG,EAAE,EAAE;YACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG;AAAE,gBAAA,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;gBAC/C,EAAE,GAAG,GAAG,CAAC;SACf;AACD,QAAA,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;KAC5B;AACF;;AC7UD;;;;;AAKG;AAaH;MACa,gBAAgB,CAAA;AAI3B,IAAA,WAAA,CAAY,OAA4C,EAAA;QAFhD,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AAGhB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;IAED,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACnC;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAChB;AACF,CAAA;AAED;;;;AAIG;MACU,oBAAoB,CAAA;AAG/B,IAAA,WAAA,CAAY,IAAkD,EAAA;AAC5D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;IAED,IAAI,GAAA;QACF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,QAAA,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;KAChC;IAED,KAAK,GAAA;;KAEJ;AACF,CAAA;AAYD;AACA,MAAM,OAAO,CAAA;AAAb,IAAA,WAAA,GAAA;QACU,IAAI,CAAA,IAAA,GAAe,EAAE,CAAC;KAkD/B;AAhDC,IAAA,IAAI,CAAC,IAAc,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACrC;IAED,GAAG,GAAA;AACD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;QAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnB,QAAA,OAAO,MAAM,CAAC;KACf;IAED,IAAI,GAAA;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACnD;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;KACzB;AAEO,IAAA,QAAQ,CAAC,GAAW,EAAA;AAC1B,QAAA,OAAO,GAAG,GAAG,CAAC,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;gBAAE,MAAM;AACvD,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1E,GAAG,GAAG,MAAM,CAAC;SACd;KACF;AAEO,IAAA,UAAU,CAAC,GAAW,EAAA;AAC5B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,IAAI,EAAE;YACX,IAAI,QAAQ,GAAG,GAAG,CAAC;AACnB,YAAA,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACzB,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YAE1B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG;gBAAE,QAAQ,GAAG,IAAI,CAAC;YAC/E,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG;gBAAE,QAAQ,GAAG,KAAK,CAAC;YAElF,IAAI,QAAQ,KAAK,GAAG;gBAAE,MAAM;AAE5B,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9E,GAAG,GAAG,QAAQ,CAAC;SAChB;KACF;AACF,CAAA;AAED;AACA;AACA;AAEA;;;AAGG;MACU,aAAa,CAAA;AAIxB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;KAC3B;;AAGD,IAAA,SAAS,CAAC,MAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC9C;;IAGD,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;AAC/B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACtB,IAAI,IAAI,GAAG,KAAK,CAAC;;AAGjB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;AAGvC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAG,CAAC,GAAG,KAAK,GAAG,EAAE;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;AAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;gBACtC,IAAI,GAAG,GAAG,CAAC;aACZ;SACF;QAED,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;;IAGD,KAAK,GAAA;QACH,MAAM,MAAM,GAAwC,EAAE,CAAC;AACvD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,KAAK,EAAE;AACZ,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnB,YAAA,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SACrB;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,cAAc,CAAC,WAAmB,EAAA;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,gBAAA,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACb,gBAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACf,WAAW;AACZ,aAAA,CAAC,CAAC;SACJ;KACF;AACF;;AC9LD;;;;;;;;AAQG;AAiDH;AACA;AACA;MAEa,GAAG,CAAA;AAyBd,IAAA,WAAA,CAAY,MAAiB,EAAA;QAvBrB,IAAiB,CAAA,iBAAA,GAAoB,IAAI,CAAC;;QAE1C,IAAe,CAAA,eAAA,GAAe,EAAE,CAAC;QACjC,IAAM,CAAA,MAAA,GAAoB,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,YAAY,GAA4B,IAAI,GAAG,EAAE,CAAC;QAClD,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QAOd,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;QACnB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC;;AAEnB,QAAA,IAAA,CAAA,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AACtD;;;AAGG;QACK,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;QAG1C,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,qBAAqB,CAAC;QACnF,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACzD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;QACvF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAElE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtB;KACF;;;;AAMD,IAAA,MAAM,IAAI,GAAA;QACR,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;;;QAIjD,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;SACF;;AAGD,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc,EAAE;AAClD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpC;SACF;;;AAID,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5C;;;;;AAOD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;;;;IAMD,GAAG,CAAC,GAAW,EAAE,KAA8B,EAAA;;QAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SACxB;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE;YAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;AAED,IAAA,MAAM,CAAC,GAAW,EAAA;QAChB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SACxB;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAwC,CAAC,CAAC;QACpF,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE;YAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;;IAGD,kBAAkB,GAAA;QAChB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAC3C,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe;AAAE,YAAA,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAC5E,QAAA,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AACtB,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;;;;;AAOG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;SAC/E;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;;QAElD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;KAC1D;;AAGO,IAAA,cAAc,CAAC,IAAyB,EAAA;QAC9C,OAAO,IAAI,CAAC,UAAU;aACnB,IAAI,CAAC,IAAI,CAAC;AACV,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;;AAEf,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;;AAEjC,YAAA,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;;AAE9E,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;AACK,IAAA,MAAM,UAAU,GAAA;QACtB,OAAO,IAAI,EAAE;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,YAAA,MAAM,KAAK,CAAC;AACZ,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;gBAAE,OAAO;SACvC;KACF;;IAGO,MAAM,mBAAmB,CAAC,MAAgB,EAAA;AAChD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;AACvC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM;AAAE,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACrE,OAAO;SACR;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;AAClC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACzB;QAED,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AACtD,QAAA,MAAM,IAAI,GAAgB;YACxB,EAAE;AACF,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,UAAU,EAAE,YAAY,CAAC,MAAM;YAC/B,SAAS,EAAE,WAAW,CAAC,UAAU;AACjC,YAAA,SAAS,EAAE,IAAI;SAChB,CAAC;;AAGF,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;;QAGjB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM;AAAE,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;AAE7B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC;;AAGxE,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SACzB;KACF;AAED;;;;;AAKG;AACK,IAAA,eAAe,CAAC,KAAa,EAAA;QACnC,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAK;AACrF,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;YAExB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAC7B;;YAED,IAAI,KAAK,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;AACxE,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aACjC;SACF,CAAC,CAAC,CAAC;KACL;;AAGO,IAAA,cAAc,CAAC,KAAa,EAAA;QAClC,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAW;AAChD,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;aACrC;oBAAS;AACR,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;AACH,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;AAExB,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;;AAEjC,YAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;KACJ;;;;AAMD;;;;;AAKG;AACH,IAAA,MAAM,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAA;AAClD,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,MAAM,GAAa,EAAE,CAAC;AAC5B,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;YACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAC7D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC3D;SACF;AACD,QAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACrC;KACF;;IAGD,MAAM,YAAY,CAAC,IAAc,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;;AAE9B,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;AACjC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;YACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,SAAS;AAC7C,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,oBAAA,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;AAC5C,wBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACpB,MAAM;qBACP;iBACF;aACF;SACF;AACD,QAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACrC;KACF;AAED;;;;AAIG;IACH,MAAM,oBAAoB,CAAC,MAA0B,EAAA;AACnD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;;AAEhC,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,MAAM,GAAuB,EAAE,CAAC;AACtC,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AACtB,YAAA,MAAM,CAAC,GAAG,CAAG,EAAA,CAAC,CAAC,CAAC,CAAC,CAAA,MAAA,EAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAChB;SACF;AACD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAChC,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;AACjC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;YACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC7C,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE;oBACvC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;wBAAE,SAAS;AAC7D,oBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACpB,MAAM;iBACP;aACF;SACF;AACD,QAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACrC;KACF;;AAGO,IAAA,YAAY,CAAC,EAAU,EAAA;AAC7B,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;YACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE;AAAE,oBAAA,OAAO,IAAI,CAAC;aACjC;SACF;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,GAAG,CAAC,GAAW,EAAA;;QAEb,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;AAGzD,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACzD,YAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,MAAM,KAAK,IAAI;AAAE,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SAC1D;;AAGD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;YACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAErD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,KAAK,KAAK,IAAI;AAAE,oBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aACxD;SACF;AAED,QAAA,OAAO,IAAI,CAAC;KACb;IAED,SAAS,CAAC,QAAgB,EAAE,MAAc,EAAA;QACxC,MAAM,MAAM,GAAwC,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI,EAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzE,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;;;;AAKG;AACH,IAAA,aAAa,CACX,QAAgB,EAChB,MAAc,EACd,QAAyE,EAAA;AAEzE,QAAA,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;AAEtC,QAAA,SAAS,CAAC,SAAS,CAAC,IAAI,oBAAoB,CAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CACzC,CAAC,CAAC;;AAGH,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACzD,SAAS,CAAC,SAAS,CAAC,IAAI,oBAAoB,CAC1C,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CACnD,CAAC,CAAC;SACJ;AAED,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;YACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,MAAM;oBAAE,SAAS;AACtB,gBAAA,SAAS,CAAC,SAAS,CAAC,IAAI,oBAAoB,CAC1C,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAClC,CAAC,CAAC;aACJ;SACF;AAED,QAAA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,KAAK,EAAE;AACZ,YAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAE,CAAwC,CAAC,WAAW,EAAE;gBAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;gBAE5B,IAAI,IAAI,KAAK,KAAK;oBAAE,OAAO;aAC5B;AACD,YAAA,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;SAC1B;KACF;;;;;IAOD,MAAM,YAAY,CAAC,KAAa,EAAA;QAC9B,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACxC;AAED;;;;;;;AAOG;AACK,IAAA,MAAM,iBAAiB,CAAC,KAAa,EAAE,WAAmB,CAAC,EAAA;AACjE,QAAA,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC;YAAE,OAAO;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ;YAAE,OAAO;QAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACzE,QAAA,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,WAAW,GAAkB,EAAE,CAAC;AAEtC,QAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;;AAE3B,YAAA,IAAI,IAAI,GAAsB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;YACrE,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI;AACF,oBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC9C;AAAC,gBAAA,MAAM;oBACN,IAAI,GAAG,IAAI,CAAC;iBACb;aACF;YACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;AACjC,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACpC,SAAS;aACV;AACD,YAAA,IAAI,MAAqB,CAAC;AAC1B,YAAA,IAAI;gBACF,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE;AAC5B,oBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACpC,SAAS;iBACV;aACF;AAAC,YAAA,MAAM;AACN,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACpC,SAAS;aACV;YACD,MAAM,OAAO,GAAwC,EAAE,CAAC;YACxD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,SAAS,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AACnD,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;AAED,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;AACjC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;;AAGvB,YAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;gBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC/B;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,OAAO;SACR;QAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AACjC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACzB;QAED,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AACtD,QAAA,MAAM,IAAI,GAAgB;YACxB,EAAE;YACF,KAAK,EAAE,KAAK,GAAG,CAAC;AAChB,YAAA,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,UAAU,EAAE,YAAY,CAAC,MAAM;YAC/B,SAAS,EAAE,WAAW,CAAC,UAAU;AACjC,YAAA,SAAS,EAAE,IAAI;SAChB,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;AAGrC,QAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC5C;KACF;;AAGD,IAAA,MAAM,KAAK,GAAA;;AAET,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,MAAM,IAAI,aAAa,CACrB,0EAA0E,EAC1E,uBAAuB,EACvB,KAAK,CACN,CAAC;SACH;;AAED,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;;;;;;;;;;AAWxB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACtC,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aAC/B;SACF;;AAED,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;QAExB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;KAClF;AAED,IAAA,MAAM,KAAK,GAAA;;AAET,QAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAE1B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/B,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;aACvD;SACF;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtB;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;KACpB;IAED,QAAQ,GAAA;QACN,OAAO;AACL,YAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;YAC3C,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/D,YAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;SAC9C,CAAC;KACH;;;;AAMD;;;AAGG;AACH,IAAA,MAAM,WAAW,GAAA;QACf,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE;YACnD,MAAM,KAAK,GAAkB,EAAE,CAAC;YAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AACpC,oBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAClB;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,oBAAA,OAAO,EAAE,CAAC;iBACX;aACF;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;SAC5B;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;;;;;AAMG;IACK,MAAM,eAAe,CAAC,IAAiB,EAAA;AAC7C,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;AACxB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE;AAC5B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,oBAAA,OAAO,KAAK,CAAC;iBACd;aACF;AAAC,YAAA,MAAM;AACN,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,OAAO,IAAI,CAAC;SACb;AAAC,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,YAAA,OAAO,KAAK,CAAC;SACd;KACF;;IAGO,MAAM,kBAAkB,CAAC,IAAiB,EAAA;;AAEhD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAA,+CAAA,EAAkD,IAAI,CAAC,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;;;AAGhG,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACzC;AAAC,QAAA,MAAM,mBAAmB;AAC3B,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7C;AAAC,QAAA,MAAM,mBAAmB;KAC5B;AAEO,IAAA,eAAe,CAAC,KAAqC,EAAA;AAC3D,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;QACxB,IAAK,KAA4C,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI,CAAC;AAC3E,QAAA,OAAO,KAAK,CAAC;KACd;;AAGO,IAAA,iBAAiB,CAAC,IAAiB,EAAA;;AAEzC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5C,IAAI,CAAC,IAAI,EAAE;;;AAGT,YAAA,OAAO,IAAI,CAAC;SACb;;QAGD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAErC,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACtC;AAAC,QAAA,MAAM;AACN,YAAA,OAAO,IAAI,CAAC;SACb;KACF;;AAGD,IAAA,MAAM,cAAc,CAAC,EAAU,EAAE,IAAkB,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO;;QAElB,IAAI,IAAI,EAAE;AACR,YAAA,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE;AAC5B,oBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACpC,OAAO;iBACR;aACF;AAAC,YAAA,MAAM;AACN,gBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACpC,OAAO;aACR;SACF;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAC7B;;IAGO,YAAY,CAAC,EAAU,EAAE,IAAgB,EAAA;;QAE/C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,UAAU,CAAC;AACxD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAC9B;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC;KACnC;AAED;;;;AAIG;IACH,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;AAC1E,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AACjD,YAAA,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SACpC;KACF;AAEF;;AChyBD;;;;;;;;;;;;;;;;;;;;AAoBG;AAoBH;AACA;AACA;MAEa,GAAG,CAAA;AASd,IAAA,WAAA,CAAY,KAAe,EAAE,OAAA,GAAmB,IAAI,EAAE,WAAsC,OAAO,EAAA;QAR3F,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;QAGR,IAAM,CAAA,MAAA,GAAiB,EAAE,CAAC;;QAG1B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;AAGxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;;;;;IAOD,MAAM,MAAM,CAAC,MAA2C,EAAA;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC,GAAG,EAAE,CAAC;AACX,QAAA,MAAM,UAAU,GAAc;AAC5B,YAAA,GAAG,MAAM;YACT,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,CAAC;SACZ,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAE5C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;;;YAG5B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC;SACxC;AAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC;SACxC;;KAEF;;IAGD,MAAM,WAAW,CAAC,OAA8C,EAAA;QAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElD,MAAM,MAAM,GAAiB,EAAE,CAAC;AAChC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3E;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAE1C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;;YAE5B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,CAAC;SAC3C;AAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,UAAU,CAAC;SAC3C;;KAEF;;AAGD,IAAA,MAAM,KAAK,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;KAClB;;AAGO,IAAA,WAAW,CAAC,MAAoB,EAAA;AACtC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAClE,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1B,YAAA,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC;SAC1B;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;;;;;IAOD,MAAM,OAAO,CACX,WAAwC,EAAA;QAExC,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,CAAC,CAAC;QAE5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,CAAC,CAAC;QAEtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,WAAW,CAAC,MAAM,CAAC,CAAC;SACrB;QAED,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,MAAM,CAAC;KACvB;;;;;AAOD,IAAA,MAAM,UAAU,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;AAC1B,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACnB,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;KACxB;;;;IAMD,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAC3B;;IAGD,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;;;;AAOO,IAAA,cAAc,CAAC,IAAgB,EAAA;QACrC,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACxC;QACD,OAAO,GAAG,KAAK,CAAC,CAAC;KAClB;AAEO,IAAA,YAAY,CAAC,MAAiB,EAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAE1C,QAAA,MAAM,IAAI,GACR,CAAC;AACD,YAAA,CAAC;AACD,YAAA,CAAC;AACD,YAAA,CAAC,GAAG,UAAU,CAAC,MAAM;AACrB,YAAA,CAAC,GAAG,QAAQ,CAAC,MAAM;AACnB,YAAA,CAAC,GAAG,SAAS,CAAC,MAAM;YACpB,CAAC,CAAC;AAEJ,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,CAAC;QACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC5C,QAAA,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,CAAC;QACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1C,QAAA,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAE1B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,CAAC;QACZ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C,QAAA,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;;QAG3B,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1C,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEnC,QAAA,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;KAC5B;AAEO,IAAA,gBAAgB,CAAC,IAAgB,EAAA;QACvC,MAAM,OAAO,GAAgB,EAAE,CAAC;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACzE,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACrC,YAAA,IAAI;gBACF,MAAM,WAAW,GAAG,MAAM,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAkB,CAAC;gBACpD,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,CAAC;gBAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,CAAC;AACZ,gBAAA,IAAI,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU;oBAAE,MAAM;AAC/C,gBAAA,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;gBAClF,MAAM,IAAI,QAAQ,CAAC;gBAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,CAAC;AACZ,gBAAA,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU;oBAAE,MAAM;AAC7C,gBAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC1E,MAAM,IAAI,MAAM,CAAC;gBAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM,IAAI,CAAC,CAAC;AACZ,gBAAA,IAAI,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU;oBAAE,MAAM;AAC9C,gBAAA,IAAI,UAA+C,CAAC;AACpD,gBAAA,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,oBAAA,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AAC5E,oBAAA,IAAI;AACF,wBAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBAC/B;AAAC,oBAAA,MAAM,YAAY;iBACrB;gBACD,MAAM,IAAI,OAAO,CAAC;;gBAGlB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChD,MAAM,IAAI,CAAC,CAAC;AACZ,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;AACxD,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;gBACvC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,SAAS,IAAI,CAAC,cAAc,KAAK,CAAC,MAAM,SAAS,EAAE;;;;AAI7E,oBAAA,OAAO,CAAC,IAAI,CAAC,+CAA+C,GAAG,CAAA,UAAA,CAAY,CAAC,CAAC;oBAC7E,SAAS;iBACV;gBAED,OAAO,CAAC,IAAI,CAAC;oBACX,GAAG;oBACH,IAAI;oBACJ,KAAK;oBACL,SAAS;oBACT,GAAG;AACH,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAC,CAAC;aACJ;AAAC,YAAA,MAAM;gBACN,MAAM;aACP;SACF;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AACF;;AC3TD;;;;;;;;;;;;AAYG;AAIH;AACO,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAC3C,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAC7C,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAC5C,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC;AACO,MAAM,wBAAwB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAaxD;AACA;AACA;MAEa,iBAAiB,CAAA;IAO5B,WACU,CAAA,OAAwB,EAChC,WAAA,GAAsB,wBAAwB,EAAA;QADtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;;QAL1B,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;;QAEnB,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAMtB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAChC;;AAGO,IAAA,UAAU,CAAC,GAAW,EAAA;AAC5B,QAAA,OAAO,CAAG,EAAA,kBAAkB,CAAG,EAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;KACnE;IAED,MAAM,MAAM,CAAC,IAAgB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO;AAClC,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;;YAEzD,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;SACtB;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAgB,CAAC;QAElG,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;YAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACvC;aAAM;;YAEL,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACxE,gBAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,gBAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACxE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;aACzC;iBAAM;gBACL,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aACrC;SACF;AACD,QAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;KACrC;AAED,IAAA,MAAM,OAAO,GAAA;QACX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;;QAG3C,MAAM,QAAQ,GAAG,IAAI;AAClB,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;;QAGjC,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;gBAAE,MAAM;AACjC,YAAA,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;SACnB;QACD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;;QAGnD,MAAM,UAAU,GAAG,IAAI;AACpB,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACvE,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,KAAK,GAAiB,EAAE,CAAC;;AAE/B,QAAA,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,UAAU,EAAE;YAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,YAAA,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1C;;AAED,QAAA,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,aAAa,EAAE;YACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,YAAA,IAAI,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1C;;AAGD,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAClE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrF,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;;AAEpD,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;SACF;AAAM,aAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEhC,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;SACtB;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC1D,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AAAE,YAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAAC,YAAA,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC;SAAE;AACrE,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED,IAAA,MAAM,QAAQ,GAAA;QACZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAC5B,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,CAAC;AAC9D,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACxC;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;KACtB;AAED,IAAA,MAAM,MAAM,GAAA;QACV,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KACjB,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,gBAAgB,CAAC,CAAC;KAC/D;AACF;;AChKD;;;;;;;;;;AAUG;AAIH;AACM,SAAU,QAAQ,CAAC,MAAc,EAAA;IACrC,OAAO,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAE,CAAC;AACnC,CAAC;MAEY,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;QACU,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAc,CAAA,cAAA,GAAwB,IAAI,CAAC;QAC3C,IAAc,CAAA,cAAA,GAAyB,IAAI,CAAC;KAoErD;AAlEC;;;;AAIG;IACH,MAAM,OAAO,CAAC,MAAc,EAAA;AAC1B,QAAA,MAAM,GAAG,GAAI,UAAsC,CAAC,SAEvC,CAAC;AACd,QAAA,MAAM,WAAW,GAAG,GAAG,EAAE,KAAK,CAAC;QAC/B,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE;AAC7D,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;;YAE1C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtD,OAAO,CACL,QAAQ,CAAC,MAAM,CAAC,EAChB,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EACxC,OAAO,IAAI,KAAI;gBACb,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,CAAC,IAAI,aAAa,CACtB,CAAA,UAAA,EAAa,MAAM,CAAA,yCAAA,CAA2C,EAC9D,aAAa,CACd,CAAC,CAAC;oBACH,OAAO;iBACR;AACD,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,gBAAA,MAAM,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,GAAG,OAAO,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAClF,gBAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;;AAErC,gBAAA,OAAO,EAAE,CAAC;;AAEV,gBAAA,MAAM,cAAc,CAAC;AACvB,aAAC,CACF,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,MAAM,OAAO,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;AAC3B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC;AAChC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,cAAe,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,IAAI;AAAE,gBAAA,MAAM,CAAC,CAAC;aAAE;AAAC,YAAA,MAAM,mBAAmB;SAC3C;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;;IAGD,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;IAGD,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AACF;;AC3FD;;;AAGG;AAaH;AACA;AACA;MAEa,iBAAiB,CAAA;AAQ5B,IAAA,WAAA,CACE,GAAQ,EACR,GAAQ,EACR,YAA8B,IAAI,EAClC,QAAmB,GAAA,IAAI,EACvB,gBAA2B,GAAA,EAAE,GAAG,IAAI,GAAG,IAAI,EAAA;QARrC,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;AAUlB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KAC1C;AAED,IAAA,MAAM,IAAI,GAAA;QACR,IAAI,CAAC,OAAO,EAAE,CAAC;;AAEf,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACxF,YAAA,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;SACzB;KACF;;IAGO,mBAAmB,GAAA;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAsF,CAAC;AACxG,QAAA,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,EAAE;AAC9C,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACrC,IAAI,KAAK,GAAG,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;SAC7B;AACD,QAAA,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,GAAG,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACtF,OAAO,KAAK,GAAG,GAAG,CAAC;KACpB;AAED,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SACjC;AACD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;KAClB;AAEF;;ACtED;;;;;;AAMG;AA2CH;AACA;AACA;MAEa,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,GAAG,EAAE,CAAC;QAC5C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;KAkDxB;IAhDC,MAAM,IAAI,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,MAAM,IAAI,CAAC,GAAW,EAAA;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;KACpC;AAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC3B;IAED,MAAM,SAAS,CAAC,OAAoC,EAAA;AAClD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC3B;KACF;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,MAAM,UAAU,CAAC,IAAc,EAAA;AAC7B,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACxB;KACF;AAED,IAAA,MAAM,QAAQ,GAAA;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KACtC;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC5B;AAED,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;KACpB;AACF;;ACzGD;;;;;;;;;;;;AAYG;MAKU,cAAc,CAAA;IAGzB,WAAY,CAAA,MAAwB,EAAE,mBAA4B,EAAA;QAChE,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;KACpD;;IAGD,KAAK,GAAA;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;KAChB;IAED,MAAM,IAAI,CAAC,IAAY,EAAA;QACrB,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAED,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;KACvB;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;KACzB;IAED,MAAM,IAAI,CAAC,GAAW,EAAA;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACzB;AAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;QACxC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC9B;;AAGD,IAAA,MAAM,MAAM,CAAC,GAAW,EAAE,IAAiB,EAAA;QACzC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACtC;;IAGD,MAAM,SAAS,CAAC,OAAoC,EAAA;QAClD,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAChC;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC3B;;IAGD,MAAM,UAAU,CAAC,IAAc,EAAA;QAC7B,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAChC;AAED,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC5B;AAED,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;KACvB;AACF;;AC/ED;;;;;;AAMG;AAEH,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAMA,WAAS,GAAG,EAAE,CAAC;AAErB;;;AAGG;MACU,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;QACU,IAAS,CAAA,SAAA,GAAqB,IAAI,CAAC;QACnC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAsC1B;IApCC,IAAI,OAAO,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;AAEhD,IAAA,MAAM,IAAI,CAAC,QAAgB,EAAE,IAAiB,EAAA;AAC5C,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC/C,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAC5D,CAAC;AACF,QAAA,MAAM,UAAU,GAAQ,IAAI,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAS,EAChF,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAS,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAC/E,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,OAAO,UAAwB,CAAC;KACjC;IAED,MAAM,WAAW,CAAC,IAA8B,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC/D,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAACA,WAAS,CAAC,CAAQ,CAAC;;;AAGpE,QAAA,MAAM,KAAK,IAAI,IAAI,YAAY,UAAU,GAAG,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAiB,CAAC;QACzF,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACjG,OAAO,EAAE,EAAE,EAAE,EAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KACnD;AAED,IAAA,MAAM,WAAW,CAAC,EAAc,EAAE,IAA8B,EAAA;QAC9D,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC/D,QAAA,MAAM,UAAU,IAAI,IAAI,YAAY,UAAU,GAAG,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAiB,CAAC;QAC9F,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;KACrF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AACF;;ACvDD;;;;;;;;;;;;;;;;;AAiBG;AAMH,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC;AACA,MAAM,cAAc,GAAG,mCAAmC,CAAC;AAE3D;AACA;AACA;AAEA,SAAS,aAAa,CAAC,KAAiB,EAAA;AACtC,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC9C;IACD,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE;QAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAA;AAChC,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;KACnD;AACD,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAClE,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;AACA;AACA;MAEa,gBAAgB,CAAA;IAI3B,WACU,CAAA,KAAsB,EACtB,QAAgB,EAAA;QADhB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;QACtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;AALlB,QAAA,IAAA,CAAA,MAAM,GAAkB,IAAI,aAAa,EAAE,CAAC;QAC5C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAMrB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACtC,YAAA,MAAM,IAAI,aAAa,CAAC,uCAAuC,EAAE,2BAA2B,CAAC,CAAC;SAC/F;KACF;;IAGD,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;IAGD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;KAC5B;IAED,MAAM,IAAI,CAAC,IAAY,EAAA;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;YACxB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,GAAG,EAAE;;AAEP,YAAA,IAAI,IAA0C,CAAC;AAC/C,YAAA,IAAI;AACF,gBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAyC,CAAC;aAC1F;AAAC,YAAA,MAAM;AACN,gBAAA,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;aACpF;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChC,gBAAA,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;aACpF;YACD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,YAAA,IAAI,aAAa,CAAC,UAAU,IAAI,SAAS,EAAE;AACzC,gBAAA,MAAM,IAAI,aAAa,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;aACpF;YACD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrD,YAAA,IAAI;gBACF,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;aAC/C;AAAC,YAAA,MAAM;;AAEN,gBAAA,MAAM,IAAI,aAAa,CACrB,6DAA6D,EAC7D,oBAAoB,CACrB,CAAC;aACH;SACF;aAAM;;YAEL,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzC,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,EAAE;gBACvC,MAAM,IAAI,aAAa,CACrB,qEAAqE;oBACrE,qEAAqE,EACrE,2BAA2B,CAC5B,CAAC;aACH;;AAED,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3F,YAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxB,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAClD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;AAC7B,gBAAA,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;AACzB,gBAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;AAClC,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;SAC/E;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,MAAM,IAAI,CAAC,GAAW,EAAA;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC1B;AAED,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,IAAiB,EAAA;QACxC,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;KACvD;IAED,MAAM,SAAS,CAAC,OAAoC,EAAA;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,SAAS,GAAgC,EAAE,CAAC;AAClD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjD,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC3C;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;KACvC;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC9B;IAED,MAAM,UAAU,CAAC,IAAc,EAAA;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACnC;AAED,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC9B;IAED,MAAM,MAAM,CAAC,GAAW,EAAA;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC/B;AAED,IAAA,MAAM,KAAK,GAAA;;QAET,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,CAAC;AACvD,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACvC;KACF;;;;IAMO,WAAW,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,sCAAsC,EAAE,oBAAoB,CAAC,CAAC;KACjH;;IAGO,MAAM,OAAO,CAAC,IAAiB,EAAA;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxB,QAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAClD,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGO,MAAM,OAAO,CAAC,IAAiB,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,SAAS,EAAE;AACjC,YAAA,MAAM,IAAI,aAAa,CAAC,4CAA4C,EAAE,oBAAoB,CAAC,CAAC;SAC7F;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7C,QAAA,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACtD;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,aAAa;AAAE,gBAAA,MAAM,KAAK,CAAC;YAChD,MAAM,IAAI,aAAa,CAAC,iDAAiD,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;SACzG;KACF;AACF;;ACxOD;;;;;;;;;;;;;;AAcG;MAOU,gBAAgB,CAAA;IAI3B,WACU,CAAA,WAAwB,EACxB,UAAsB,EAAA;QADtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;;AAJxB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;KAK1C;;AAGJ,IAAA,MAAM,IAAI,CAAC,EAAU,EAAE,IAAgB,EAAA;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC;AACtE,QAAA,MAAM,OAAO,GAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEvF,MAAM,GAAG,GAAa,EAAE,CAAC;AACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3F,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;YAElB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;KAC3B;;AAGD,IAAA,UAAU,CAAC,EAAU,EAAA;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC7B;AAED;;;;AAIG;AACH,IAAA,MAAM,IAAI,CAAC,EAAU,EAAE,OAAiB,EAAE,SAAiB,EAAA;AACzD,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QACtC,MAAM,MAAM,GAAiB,EAAE,CAAC;AAChC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,IAAI,CAAC;;YAEvB,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7B;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC3D,QAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QACvD,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;YAC1D,IAAI,IAAI,IAAI,CAAC;gBAAE,MAAM;AACrB,YAAA,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAClC,GAAG,IAAI,IAAI,CAAC;SACb;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,QAAA,OAAO,GAAG,CAAC;KACZ;;AAGD,IAAA,MAAM,MAAM,CAAC,EAAU,EAAE,OAAiB,EAAA;AACxC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnC,YAAA,IAAI;gBACF,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC3C;AAAC,YAAA,MAAM,iBAAiB;SAC1B;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACzB;AACF;;AC9FD;;;;;AAKG;AAMH;AACA;AACA;MAEa,WAAW,CAAA;AAMtB,IAAA,WAAA,CAAY,OAAwB,EAAA;QAJ5B,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QACf,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AAGlB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;;IAGD,MAAM,IAAI,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,QAAA,IAAI,IAAI,IAAI,IAAI,YAAY,WAAW,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;AAC/D,YAAA,UAAU,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SACrD;;;;;;QAMD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC3C,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACvB,gBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3C,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,UAAU;AAAE,oBAAA,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;aACnE;SACF;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,YAAY,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,UAAU,KAAK,IAAI,QAAQ,CAAC,IAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;AAC1I,YAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;SACvB;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;;IAID,MAAM,QAAQ,CAAC,MAAc,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE;;;AAGT,YAAA,OAAO,IAAI,CAAC;SACb;;AAGD,QAAA,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAA,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,YAAA,OAAO,MAAM,CAAC;SACf;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,SAAS,CAAC,MAAc,EAAE,IAAiB,EAAA;AAC/C,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC7B,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtB,QAAA,OAAO,EAAE,CAAC;KACX;;IAGD,MAAM,eAAe,CAAC,KAAa,EAAA;QACjC,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAa,EAAE,CAAC;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;AAAE,YAAA,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACpD,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtB,QAAA,OAAO,GAAG,CAAC;KACZ;IAED,MAAM,UAAU,CAAC,OAAe,EAAA;;AAE9B,QAAA,MAAM,GAAG,GAAG,CAAM,GAAA,EAAA,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAChC;;AAIO,IAAA,MAAM,QAAQ,GAAA;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;KAC9C;;AAGD,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;KACvB;AACF;;ACnHD;;;;;;AAMG;AAKH;AACA;AACA;MAEa,WAAW,CAAA;AAAxB,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,YAAY,GAA8B,IAAI,GAAG,EAAE,CAAC;;AAGpD,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,GAAG,EAAE,CAAC;;QAG9C,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;QAGd,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;AAE5B;;;AAGG;AACK,QAAA,IAAA,CAAA,YAAY,GAA6B,IAAI,GAAG,EAAE,CAAC;KAuJ5D;;;;;IAhJC,gBAAgB,GAAA;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE;YACzB,KAAK;YACL,KAAK,EAAE,gBAAgB,CAAC,MAAM;YAC9B,WAAW,EAAE,IAAI,CAAC,eAAe;AACjC,YAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACtB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACxC,QAAA,OAAO,KAAK,CAAC;KACd;;AAGD,IAAA,iBAAiB,CAAC,KAAa,EAAA;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAA,UAAA,CAAY,CAAC,CAAC;AAE5D,QAAA,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,eAAe,EAAE,CAAC;;;;QAKvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,SAAS,EAAE;AACb,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,QAAQ;oBAAE,SAAS;AACxB,gBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC3D,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACpC;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBAC3C;aACF;SACF;;AAGD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACjC;;AAGD,IAAA,mBAAmB,CAAC,KAAa,EAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAA,UAAA,CAAY,CAAC,CAAC;AAE5D,QAAA,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;;QAGrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,SAAS,EAAE;AACb,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,QAAQ;oBAAE,SAAS;AACxB,gBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC3D,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACpC;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBAC3C;aACF;SACF;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACjC;;;;AAMD;;AAEG;AACH,IAAA,YAAY,CACV,SAAiB,EACjB,GAAW,EACX,IAA6B,EAC7B,KAAa,EAAA;AAEb,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAEvD,QAAA,MAAM,UAAU,GAAe;YAC7B,KAAK;YACL,IAAI;YACJ,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;AACvE,YAAA,SAAS,EAAE,KAAK;SACjB,CAAC;AAEF,QAAA,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;;AAE1C,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC7C;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,SAAiB,EAAE,GAAW,EAAE,KAAa,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAwC,EAAE,KAAK,CAAC,CAAC;KAC5G;AAED;;;;AAIG;AACH,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO;AACvB,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,QAAQ;gBAAE,SAAS;AACxB,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC3D,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;aAC3C;SACF;KACF;AAED;;;AAGG;IACH,EAAE,CAAC,oBAA4B,GAAG,EAAA;QAChC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;AACpD,YAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,iBAAiB;gBAAE,SAAS;;AAGnD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;YACnE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SACzC;KACF;AAED;;AAEG;IACH,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AACF;;ACvLD;;;;;;;;;;;;;;;;AAgBG;AAIH;;AAEG;SACa,cAAc,CAC5B,GAAgB,EAChB,MAAc,EACd,IAAY,EAAA;AAEZ,IAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACjC,IAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC3C,IAAA,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7B,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACvB;;ACpCA;;;;;;;;AAQG;AAKH;AACgB,SAAA,UAAU,CAAC,MAAc,EAAE,IAAc,EAAA;AACvD,IAAA,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AACxC,IAAA,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,OAAO;QACL,MAAM;QACN,IAAI;QACJ,IAAI;AACJ,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;KACvB,CAAC;AACJ;;AC3BA;;;AAGG;AAIH;AACA;AACA;AAEA;;AAEG;MACU,OAAO,CAAA;AAApB,IAAA,WAAA,GAAA;QACU,IAAI,CAAA,IAAA,GAAsB,IAAI,CAAC;QAC/B,IAAI,CAAA,IAAA,GAAsB,IAAI,CAAC;QAC/B,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;KAwEnB;AAtEC,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;AAGD,IAAA,UAAU,CAAC,IAAgB,EAAA;;AAEzB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO;;QAG/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QAEpG,IAAI,MAAM,EAAE;;AAEV,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACnB;aAAM;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;;AAGD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACvB;AACD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;KACF;;AAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AACpG,QAAA,IAAI,CAAC,MAAM;YAAE,OAAO;AAEpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC1C;;AAGO,IAAA,MAAM,CAAC,IAAgB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAC5B;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACvB;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAC5B;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACvB;AAED,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAChB;;IAGD,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAEF,CAAA;AAQD;;AAEG;MACU,eAAe,CAAA;AAM1B;;;;AAIG;AACH,IAAA,WAAA,CAAY,QAAgB,EAAE,OAAyB,EAAE,QAAqC,EAAA;AAC5F,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;;AAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC3B;;AAGD,IAAA,GAAG,CAAC,IAAgB,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACnB;;AAGD,IAAA,MAAM,CAAC,IAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACvB;AAED;;;;AAIG;IACH,MAAM,aAAa,CAAC,KAAa,EAAA;QAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE;;AAEjE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM;gBAAE,MAAM;;AAGnB,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3B,gBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;aACtB;AAED,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;AACxB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;;IAGO,qBAAqB,GAAA;;QAE3B,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,OAAO,EAAE;YACd,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,gBAAA,OAAO,OAAO,CAAC;AACzD,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;SACxB;;AAGD,QAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,OAAO,EAAE;AACd,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;AAAE,gBAAA,OAAO,OAAO,CAAC;AACvC,YAAA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;SACxB;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;KAClB;AACF;;ACxLD;;;;;AAKG;AAwBH;AACA;AACA;MAEa,UAAU,CAAA;IAMrB,WAAY,CAAA,MAAc,EAAE,QAAA,GAAmB,yBAAyB,EAAA;AALhE,QAAA,IAAA,CAAA,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;QAG3C,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAGrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,IAAI,KAAI;AAC3D,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;AACH,SAAC,EAAE,CAAC,IAAI,KAAI;;;YAGV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;;;;AAMD;;;AAGG;IACH,MAAM,OAAO,CAAC,MAAc,EAAA;;QAE1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,YAAA,OAAO,IAAI,CAAC;SACb;;QAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;;QAGzB,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAErC,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAa,CAAC;AAC1D,QAAA,IAAI,GAAG;YACL,MAAM;YACN,IAAI;AACJ,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;IACH,MAAM,QAAQ,CAAC,KAAa,EAAE,IAAiB,GAAA,QAAQ,CAAC,IAAI,EAAA;QAC1D,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;AAC1B,QAAA,IAAI,OAAiB,CAAC;QACtB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;YACrD,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAgB,CAAC,KAAK,CAAC,CAAC;SACrD;aAAM;YACL,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;SAClF;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,OAAO,GAAiB,EAAE,CAAC;AACjC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpB;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;AAEG;AACH,IAAA,KAAK,CAAC,IAAgB,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;AAED;;AAEG;AACH,IAAA,SAAS,CAAC,IAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AAED;;AAEG;IACH,MAAM,SAAS,CAAC,MAAc,EAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;KACF;AAED;;AAEG;AACH,IAAA,MAAM,QAAQ,GAAA;QACZ,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;AACjC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACpB;SACF;KACF;AAED;;AAEG;AACH,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC3B;KACF;AAED;;AAEG;AACH,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACvB;AAEF;;ACpLD;;;;;;;;;;;;;;AAcG;AAEH,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,SAAS,GAAG,SAAS,GAAG,EAAE,CAAC;AACjC;AACA,MAAM,WAAW,GAAG,CAAC,CAAC;AAEhB,SAAU,WAAW,CAAC,KAAiB,EAAA;;AAE3C,IAAA,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;AAC1C,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACjD,QAAA,OAAO,KAAK,CAAC;KACd;;;AAID,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACvE,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AACnC,IAAA,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;AAEjB,IAAA,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE;;AAE5B,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;AAC5C,QAAA,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,YAAA,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;AACzC,gBAAA,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,SAAS;AAAE,gBAAA,EAAE,EAAE,CAAC;YAChE,IAAI,EAAE,IAAI,SAAS,IAAI,EAAE,GAAG,OAAO,EAAE;gBAAE,OAAO,GAAG,EAAE,CAAC;AAAC,gBAAA,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;aAAE;SACzE;;AAGD,QAAA,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC,EAAE,GAAG,QAAQ,KAAK,EAAE,EAAE;AAChD,YAAA,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,CAAC;AAC7B,YAAA,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;YACvC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,UAAU,GAAG,IAAI,CAAC,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACjE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;AAC3B,YAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC;YAClC,EAAE,IAAI,OAAO,CAAC;YACd,QAAQ,GAAG,EAAE,CAAC;SACf;aAAM;;AAEL,YAAA,EAAE,EAAE,CAAC;;;AAGL,YAAA,IAAI,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE;AACvB,gBAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;gBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;oBAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBAC7D,QAAQ,GAAG,EAAE,CAAC;aACf;SACF;KACF;;AAGD,IAAA,IAAI,SAAS,GAAG,EAAE,GAAG,QAAQ,CAAC;AAC9B,IAAA,OAAO,SAAS,GAAG,CAAC,EAAE;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACtC,QAAA,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAChE,SAAS,IAAI,KAAK,CAAC;QACnB,QAAQ,IAAI,KAAK,CAAC;KACnB;;IAGD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjE,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACnE,IAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAClC,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAEe,SAAA,aAAa,CAAC,KAAiB,EAAE,aAAsB,EAAA;AACrE,IAAA,IAAI,KAAK,CAAC,UAAU,GAAG,WAAW,EAAE;AAClC,QAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;KACzD;AACD,IAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,YAAY,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW,EAAE;AAC1D,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;KAC1B;IACD,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,UAAU,EAAE;AAClD,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC1D;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3C,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AACzC,IAAA,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAEnB,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,YAAY,EAAE;AAClD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AACnC,QAAA,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;;QAGhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YAC9E,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;SAC1B;;;QAID,IAAI,UAAU,KAAK,CAAC;YAAE,SAAS;;AAG/B,QAAA,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU;YAAE,MAAM;AACvC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,QAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AACxC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACtD,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AAC3B,YAAA,EAAE,EAAE,CAAC;SACN;KACF;AAED,IAAA,OAAO,GAAG,CAAC;AACb;;ACjIA;;;;;AAKG;AA6BH;AACA;AACA;MAEa,UAAU,CAAA;AAyCrB,IAAA,WAAA,CAAY,SAA2B,EAAE,EAAA;QAxChC,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC;QAQf,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;;QAOZ,IAAM,CAAA,MAAA,GAAwB,IAAI,CAAC;;AAGnC,QAAA,IAAA,CAAA,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,QAAQ,GAAwB,IAAI,GAAG,EAAE,CAAC;QAC1C,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;AAGd,QAAA,IAAA,CAAA,gBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;AAEvD;;;;;AAKG;AACK,QAAA,IAAA,CAAA,eAAe,GAAgB,IAAI,GAAG,EAAE,CAAC;;AAGzC,QAAA,IAAA,CAAA,IAAI,GAAgB,IAAI,WAAW,EAAE,CAAC;QACtC,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;QACnC,IAAW,CAAA,WAAA,GAAgD,IAAI,CAAC;QAChE,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;;AAo7Cd,QAAA,IAAA,CAAA,UAAU,GAA0F,IAAI,GAAG,EAAE,CAAC;QAj7CpH,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAAC;KACrD;;;;AAMD,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,QAAgB,EAAA;QACzC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;;;AAGxB,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SACjC;QAAC,OAAO,KAAK,EAAE;;AAEd,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI;AAAE,oBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;iBAAE;AAAC,gBAAA,MAAM,gBAAgB;AAC3D,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACpB;YACD,IAAI,KAAK,YAAY,aAAa;AAAE,gBAAA,MAAM,KAAK,CAAC;YAChD,MAAM,IAAI,aAAa,CACrB,CAAuC,oCAAA,EAAA,MAAM,CAAG,CAAA,CAAA,EAChD,iBAAiB,EACjB,KAAK,CACN,CAAC;SACH;KACF;;IAGO,MAAM,YAAY,CAAC,MAAc,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;AAGrB,QAAA,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE;;AAEjB,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,qEAAA,EAAwE,MAAM,CAAI,EAAA,CAAA;AAClF,gBAAA,4DAA4D,CAC7D,CAAC;SACH;;AAGD,QAAA,IAAI,WAA4B,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,MAAM,EAAE;AACzC,YAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;SACjC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE;;AAE9C,YAAA,WAAW,GAAG,IAAI,cAAc,EAAE,CAAC;SACpC;aAAM;AACL,YAAA,WAAW,GAAG,IAAI,aAAa,EAAE,CAAC;SACnC;AACD,QAAA,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAG/B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACnF;aAAM;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;;YAE3B,IAAI,MAAM,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;AAC9C,gBAAA,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;AAC1B,gBAAA,MAAM,IAAI,aAAa,CACrB,+DAA+D,EAC/D,uBAAuB,CACxB,CAAC;aACH;SACF;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAGhC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;;QAGhF,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;;AAGrD,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;AACjB,YAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;AACxD,YAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;AACpD,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC/B,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;;YAElD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YACnE,YAAY;AACb,SAAA,CAAC,CAAC;;;;QAKH,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAChB,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EACnC,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAC;;AAGF,QAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;;;;QAMzB,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC5C,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC9D,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,KAAK,KAAK,EAAE;AACxD,oBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;oBAC7C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACtC,wBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;AACrB,4BAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;AACxD,4BAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;AACpD,4BAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC/B,4BAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;4BAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;4BACnE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,SAAS,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;AACrE,yBAAA,CAAC,CAAC;AACH,wBAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;wBACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;qBAC3C;iBACF;aACF;SACF;;AAGD,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;;AAGtB,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,MAAM,UAAU,GAAgB,EAAE,CAAC;AACnC,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;AAElD,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;AAAE,gBAAA,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ;AAAE,gBAAA,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACtE;;AAED,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,UAAU,EAAE;;oBAEvC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;iBAChD;qBAAM;AACL,oBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACxB;aACF;SACF;;;AAID,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,YAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;;;;YAI5B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;AAC3C,gBAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;aAC5C;SACF;;;;QAKD,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,IAAI,CAAC,GAAG,EACR;YACE,UAAU,EAAE,YAAW;gBACrB,IAAI,IAAI,CAAC,YAAY;oBAAE,OAAO;AAC9B,gBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;aAC7B;YACD,KAAK,EAAE,YAAW;gBAChB,IAAI,IAAI,CAAC,YAAY;oBAAE,OAAO;AAC9B,gBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;aACxB;YACD,gBAAgB,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;YACnD,gBAAgB,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE;SAClC,EACnB;YACE,QAAQ,EAAE,YAAW;;;;AAInB,gBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;AACnD,oBAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;iBACtB;aACF;AACK,SAAA,EACR,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAC9B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC7B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,MAAM,KAAK,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;AACzB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;;QAGvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;AACnD,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;SACtB;;AAED,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;;;AAIvB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC5B,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;AAE3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;;;AAGD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED;;;;AAIG;AACH,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,CAAC,UAAU,EAAE,CAAC;;AAElB,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;;QAE9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;;AAE7C,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;;QAE5B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;AAC3C,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SACpC;;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAiE,CAAC;AAC1F,QAAA,IAAI,OAAO,UAAU,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACtD,YAAA,IAAI;AAAE,gBAAA,MAAM,UAAU,CAAC,iBAAiB,EAAE,CAAC;aAAE;AAAC,YAAA,MAAM,iBAAiB;SACtE;;AAED,QAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChC,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;;AAEf,YAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,OAAO,CAAA,qBAAA,CAAuB,CAAC,CAAC;SAC9E;KACF;AAED;;;AAGG;AACK,IAAA,MAAM,kBAAkB,GAAA;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC3C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAEhC,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;AAC/B,QAAA,MAAM,WAAW,GAAG,OAAO,EAAU,KAAmB;AACtD,YAAA,MAAM,QAAQ,GAAG,EAAE,KAAK,MAAM,GAAG,iBAAiB,GAAG,CAAmB,gBAAA,EAAA,EAAE,EAAE,CAAC;YAC7E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,GAAG;gBAAE,OAAO;AACjB,YAAA,IAAI;AACF,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAkB,CAAC;AACzE,gBAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACrB,oBAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,wBAAA,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO;AAAE,4BAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBAC5C;iBACF;aACF;AAAC,YAAA,MAAM,sCAAsC;AAChD,SAAC,CAAC;AAEF,QAAA,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;;QAE1B,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9C,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9D,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjC,MAAM,WAAW,CAAC,CAAO,IAAA,EAAA,SAAS,IAAI,OAAO,CAAA,CAAE,CAAC,CAAC;iBAClD;aACF;SACF;QAED,MAAM,SAAS,GAAG,MAAM;AACrB,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA,GAAA,EAAM,GAAG,CAAE,CAAA,CAAC,CAAC,CAAC;SACpE;KACF;AAED;;;AAGG;AACH,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,UAAU,EAAE,CAAC;;AAElB,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;;AAE3B,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC9B,QAAA,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;;AAEnB,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;AAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;KAC7B;AAED,IAAA,MAAM,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;;IAIzC,MAAM,OAAO,CAAC,GAAW,EAAA;AACvB,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,GAAG,CAAA,CAAE,CAAC,CAAC;AACrD,QAAA,OAAO,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KACnD;AAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;QACtC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,OAAA,EAAU,GAAG,CAAE,CAAA,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;KACnF;;;;IAMD,MAAM,WAAW,CAAC,MAAmB,EAAA;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;;;AAGlB,QAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACjC,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,cAAc,CAAC,CAAC;SAClF;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;;;AAInD,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC9D,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjC,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,CAAC,IAAI,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACtC,oBAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;AACrB,wBAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;AACxD,wBAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;AACpD,wBAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC/B,wBAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;wBAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AACnE,wBAAA,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA,IAAA,EAAO,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;AACvE,qBAAA,CAAC,CAAC;AACH,oBAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;iBAC3C;aACF;SACF;AAED,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,aAAa,CAAC,YAAY;AAChC,YAAA,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,MAAM,CAAC,IAAI;AACtB,YAAA,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAwC;AAC/E,SAAA,CAAC,CAAC;KACJ;IAED,MAAM,SAAS,CAAC,SAAiB,EAAA;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;QAG5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;SAC/C;;;AAID,QAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;;AAE1C,QAAA,MAAM,OAAO,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;AAChC,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;AACpC,YAAA,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;AAAE,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC3D;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChC,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAE5B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,aAAa,CAAC,UAAU;AAC9B,YAAA,KAAK,EAAE,CAAC;YACR,SAAS;AACT,YAAA,GAAG,EAAE,EAAE;AACR,SAAA,CAAC,CAAC;KACJ;AAED;;;AAGG;IACK,MAAM,mBAAmB,CAAC,SAAiB,EAAA;AACjD,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,OAAO,CAAC;QACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACpD,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;AACzC,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,YAAA,IAAI;AACF,gBAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;aACtB;AAAC,YAAA,MAAM,iBAAiB;SAC1B;AACD,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACtC;KACF;IAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;;QAE9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KACpC;AAED,IAAA,MAAM,aAAa,GAAA;QACjB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;KACxC;IAED,MAAM,cAAc,CAAC,SAAiB,EAAA;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;KAC5C;;;;AAMD,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;;QAEzB,MAAM,UAAU,GAA0C,EAAE,CAAC;;;;;;;;QAS7D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,aAAa,GAAqE,EAAE,CAAC;AAC3F,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,YAAA,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA,CAAA,EAAI,OAAO,CAAE,CAAA,EAAE,CAAC,CAAC;SACjF;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;;;AAI7D,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,aAAa,EAAE;AAC5C,YAAA,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBACtB,MAAM,IAAI,aAAa,CACrB,CAA0B,uBAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAC5D,eAAe,CAChB,CAAC;aACH;AACD,YAAA,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY;AAChC,mBAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;kBAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,YAAA,IAAI,QAAQ,IAAI,CAAE,QAA+C,CAAC,aAAa,EAAE;gBAC/E,MAAM,IAAI,aAAa,CACrB,CAA0B,uBAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAC5D,eAAe,CAChB,CAAC;aACH;SACF;;AAED,QAAA,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,CAAE,CAAC;AACzE,YAAA,MAAM,MAAM,CAAC,oBAAoB,CAC/B,aAAa;AACV,iBAAA,GAAG,CAAC,CAAC,CAAC,KAA6B;gBAClC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3B,gBAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;AAAE,oBAAA,OAAO,IAAI,CAAC;gBACnD,MAAM,CAAC,GAAG,CAAG,EAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,gBAAA,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;AAC3B,aAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,KAA4B,CAAC,KAAK,IAAI,CAAC,CACpD,CAAC;SACH;;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QACnD,KAAK,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,aAAa,EAAE;AACvD,YAAA,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;AAChC,gBAAA,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/B,gBAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;oBAAE,SAAS;AAChD,gBAAA,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,CAAC,IAAI,EAAE;AACT,oBAAA,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;AACzB,oBAAA,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBAChC;AACD,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACf,MAAM,IAAI,aAAa,CACrB,CAA0C,uCAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAC5E,kBAAkB,CACnB,CAAC;iBACH;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;aAChE;SACF;AAED,QAAA,KAAK,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,aAAa,EAAE;;YAG5D,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;gBAEzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aAC1E;iBAAM;;gBAEL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;aAC9B;;YAGD,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAEjE,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAElB,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;gBAC7B,SAAS;AACT,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA,CAAC,CAAC;SACJ;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAE5B,QAAA,IAAI,IAA+B,CAAC;;QAGpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,IAAI,GAAG,QAAQ,CAAC;SACjB;aAAM;YACL,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SACzC;;QAGD,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;AAG9C,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACtD,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC;SAC5D;;AAGD,QAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;SAC1C;;AAGD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;;QAG1C,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACzE,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC;SAC/D;;QAGD,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,MAAM,CACV,SAAiB,EACjB,KAAgB,EAChB,OAAgC,EAAA;QAEhC,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;;AAG5B,QAAA,IAAI,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,MAAM,IAAI,aAAa,CACrB,gGAAgG,EAChG,eAAe,CAChB,CAAC;SACH;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;;QAEd,MAAM,UAAU,GAA4D,EAAE,CAAC;;AAE/E,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;;AAElC,QAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;;;QAIpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,GAAG,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;aACvG;SACF;;QAGD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACzD,QAAA,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,CAAE,CAAC;YACzE,MAAM,MAAM,GAAuB,EAAE,CAAC;AACtC,YAAA,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBACzE,MAAM,CAAC,GAAG,CAAA,EAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC;gBAC9C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA,EAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC,CAAC;aAChC;AAAM,iBAAA,IAAI,EAAE,OAAO,IAAI,YAAY,CAAC,EAAE;AACrC,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,oBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,oBAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;wBAAE,SAAS;oBAChD,MAAM,CAAC,GAAG,CAAG,EAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA,EAAG,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC,CAAC;iBAChC;aACF;AACD,YAAA,MAAM,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SAC3C;;;;;QAMD,MAAM,OAAO,GAAqI,EAAE,CAAC;AACrJ,QAAA,MAAM,WAAW,GAA8B,IAAI,GAAG,EAAE,CAAC;;AAGzD,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;YACzC,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;gBAAE,SAAS;YAElG,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;YAGlC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;;AAEnE,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;YAGzE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;;;YAI/C,IAAI,SAAS,EAAE;AACb,gBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;AACvC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY;AAChC,uBAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;sBACtD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzB,gBAAA,IAAI,QAAQ,IAAI,CAAE,QAA+C,CAAC,aAAa,EAAE;oBAC/E,MAAM,IAAI,aAAa,CACrB,CAA0B,uBAAA,EAAA,KAAK,CAAe,YAAA,EAAA,SAAS,CAAyC,uCAAA,CAAA,EAChG,eAAe,CAChB,CAAC;iBACH;aACF;YAED,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;SAC/E;;AAED,QAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,CAAC,SAAS,EAAE;AACf,gBAAA,MAAM,IAAI,CAAC,6BAA6B,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;aACpE;SACF;;AAGD,QAAA,KAAK,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE;YACjE,IAAI,SAAS,EAAE;;AAEb,gBAAA,MAAM,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aAClF;YAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;gBACzC,IAAI,SAAS,EAAE;AACb,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;AACzF,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC3D;AACD,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aACtE;iBAAM;AACL,gBAAA,IAAI,SAAS;AAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAAE,OAAO,CAAC,CAAC;aAChD;AACD,YAAA,KAAK,EAAE,CAAC;YAER,IAAI,SAAS,EAAE;gBACb,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;oBAC7B,SAAS;AACT,oBAAA,GAAG,EAAE,EAAE;AACR,iBAAA,CAAC,CAAC;aACJ;YACD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;gBAC7B,SAAS;AACT,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CAAC,CAAC;;;;YAKH,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;SAC7D;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;AACxB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;AAGG;AACK,IAAA,gBAAgB,CACtB,SAAiB,EACjB,UAAoB,EACpB,OAAgC,EAChC,WAAsC,EAAA;AAEtC,QAAA,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;AAChC,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,YAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YACpD,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;AAC1B,gBAAA,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAChC;AACD,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACnB,MAAM,IAAI,aAAa,CACrB,CAA0C,uCAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAC5E,kBAAkB,CACnB,CAAC;aACH;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACjB;KACF;AAED;;;AAGG;AACK,IAAA,MAAM,6BAA6B,CAAC,SAAiB,EAAE,KAAa,EAAE,MAAc,EAAA;QAC1F,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;AACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,SAAS;AACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;AACrC,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,KAAK,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;oBACzF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACpD,oBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC5B,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,EAAE;AACrC,4BAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,UAAU;AAC3C,kCAAE,CAAA,aAAA,EAAgB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAsB,oBAAA,CAAA;AACpE,kCAAE,CAAgB,aAAA,EAAA,OAAO,CAAS,MAAA,EAAA,YAAY,8CAA8C,CAAC;AAC/F,4BAAA,MAAM,IAAI,aAAa,CACrB,CAAA,eAAA,EAAkB,SAAS,CAAA,OAAA,EAAU,KAAK,CAAA,GAAA,EAAM,MAAM,CAAA,CAAE,EACxD,uBAAuB,CACxB,CAAC;yBACH;qBACF;iBACF;aACF;SACF;KACF;AAED;;;;AAIG;IACK,MAAM,0BAA0B,CACtC,SAAiB,EACjB,KAAa,EACb,KAAa,EACb,UAAmE,EACnE,OAAoB,EAAA;AAEpB,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;AACzC,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;AAClC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;;;QAKtB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;AACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,SAAS;AACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBACrC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU;oBAAE,SAAS;gBAC9E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACpD,gBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;oBAC5B,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;wBAAE,SAAS;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;oBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACvC,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;AAC1F,oBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;oBAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;wBACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACzC,wBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;qBAC5E;yBAAM;wBACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;qBAClC;oBACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;oBACrE,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,wBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;AAC7B,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,GAAG,EAAE,KAAK;AACV,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA,CAAC,CAAC;iBACJ;aACF;SACF;KACF;AAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;;AAG5B,QAAA,IAAI,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,MAAM,IAAI,aAAa,CACrB,gGAAgG,EAChG,eAAe,CAChB,CAAC;SACH;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;;QAEd,MAAM,UAAU,GAA4D,EAAE,CAAC;;AAE/E,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;;;QAIlC,MAAM,UAAU,GAAa,EAAE,CAAC;AAChC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;AACzF,gBAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAC,CAAC,CAAC;aAC7D;SACF;AACD,QAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;AAC1C,QAAA,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;YAChC,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;SACtE;AAED,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;YAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;;gBAEzF,KAAK,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC7F,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;AAEzC,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;AACzF,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC3E;qBAAM;AACL,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;AACD,gBAAA,KAAK,EAAE,CAAC;gBAER,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;oBAC7B,SAAS;AACT,oBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,iBAAA,CAAC,CAAC;;AAGH,gBAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;aACvE;SACF;QAED,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;AACxB,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;AAGG;AACK,IAAA,MAAM,oBAAoB,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAoB,EAAA;AACzF,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;AAC3C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;AAClC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;AACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,SAAS;AACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBACpD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;AACtE,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,oBAAA,CAAsB,EACrG,uBAAuB,CACxB,CAAC;iBACH;;AAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3E,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,4CAAA,CAA8C,EAC7H,uBAAuB,CACxB,CAAC;iBACH;AACD,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;AAClD,oBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,wBAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;qBAClF;iBACF;aACF;SACF;KACF;AAED;;;;;;;AAOG;IACK,MAAM,oBAAoB,CAChC,SAAiB,EACjB,OAAe,EACf,UAAmE,EACnE,OAAoB,EAAA;QAEpB,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;AAC3C,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;AACpC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,YAAY,KAAK,SAAS;gBAAE,SAAS;AACzC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAAE,SAAS;AACrD,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBAErC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBACpD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;AAEtE,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,oBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,MAAA,EAAS,YAAY,CAAA,oBAAA,CAAsB,EACrG,uBAAuB,CACxB,CAAC;iBACH;AAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;AAClD,oBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAEvC,wBAAA,KAAK,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;;AAEnF,wBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;wBAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;AACzC,4BAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;AAC5F,4BAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;yBACjE;6BAAM;AACL,4BAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;yBACzB;wBACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;wBAC/D,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;AAC7B,4BAAA,SAAS,EAAE,YAAY;AACvB,4BAAA,GAAG,EAAE,KAAK;AACX,yBAAA,CAAC,CAAC;AACH,wBAAA,KAAK,EAAE,CAAC;qBACT;iBACF;AAAM,qBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;oBACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;AAClD,oBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,wBAAA,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;AAC/C,wBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;wBAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;4BACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtC,4BAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;yBACzE;6BAAM;4BACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;yBAC/B;wBACD,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;wBAClE,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;AAC7B,4BAAA,SAAS,EAAE,YAAY;AACvB,4BAAA,GAAG,EAAE,KAAK;AACV,4BAAA,IAAI,EAAE,OAAO;AACd,yBAAA,CAAC,CAAC;;qBAEJ;iBACF;aACF;SACF;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;AAIG;AACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,KAAgB,EAChB,KAA6C,EAAA;QAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE5B,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;AACnF,cAAE,CAAC,GAA4B,KAAK,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,OAAQ,CAAC;cACrE,IAAI,CAAC;AACT,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;AACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,QAAA,MAAM,IAAI,GAAG,CAAC,GAA4B,KAAa;YACrD,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;AAC5D,YAAA,IAAI,OAAO,GAAG,MAAM,EAAE;AAAE,gBAAA,OAAO,EAAE,CAAC;AAAC,gBAAA,OAAO,IAAI,CAAC;aAAE;AACjD,YAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACpC,YAAA,KAAK,EAAE,CAAC;YACR,OAAO,KAAK,GAAG,KAAK,CAAC;AACvB,SAAC,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;;YAEzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/G,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;aACrC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;QAGD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,YAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,MAAM;aACvB;AACD,YAAA,OAAO,KAAK,CAAC;SACd;;;AAID,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAI;YAC/D,IAAI,KAAK,IAAI,KAAK;AAAE,gBAAA,OAAO,KAAK,CAAC;AACjC,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;AACzB,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAC/E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAM,CAAC,CAAC,CAAC,MAAM,CAAC;KACnE;IAED,MAAM,KAAK,CAAC,SAAiB,EAAA;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;QAE9C,MAAM,UAAU,GAA4D,EAAE,CAAC;AAC/E,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;YACzC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;AACzC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAwC,CAAC,CAAC;AACzF,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aAC3E;iBAAM;AACL,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACtB;YACD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;gBAC7B,SAAS;AACT,gBAAA,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,aAAA,CAAC,CAAC;;AAEH,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;SACvE;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;AAC9B,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;;AAID;;;;;AAKG;AACH,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA8D,EAAA;QAE9D,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAE5C,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,eAAe,CAAC,CAAC;aAC5G;YACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACrC,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO;SACR;;QAGD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,SAAS,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;SAC/G;;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAC3E,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,QAAQ,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI;AACF,oBAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;iBACtB;AAAC,gBAAA,MAAM,iBAAiB;AACzB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACtC;SACF;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;AAG5B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;AAC/B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;QACjC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,UAAU,GAA4D,EAAE,CAAC;QAC/E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;AAClC,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;gBAAE,SAAS;AACtC,YAAA,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;AAC7B,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;YAE3B,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,aAAa,CAAC,MAAM;AAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;gBAC7B,SAAS;AACT,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CAAC,CAAC;SACJ;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;AACpC,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAED,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;AACtH,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,MAAM,EAAE,CAAC;;;AAG5C,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;AAE9C,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC;AACrB,YAAA,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;AACxD,YAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;AACpD,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC/B,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YACnE,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,SAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC;AACpE,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE1C,QAAA,IAAI;;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9C,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;AAC/B,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,oBAAA,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;;oBAGxB,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzB,wBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,wBAAA,EAA2B,MAAM,CAAA,YAAA,EAAe,SAAS,CAAA,sCAAA,EAAyC,CAAC,CAAA,CAAA,CAAG,EACtG,kBAAkB,CACnB,CAAC;qBACH;AACD,oBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACZ,MAAM,CAAC,GAAG,CAAC,CAAA,EAAG,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACtD;aACF;AACD,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;SACtB;QAAC,OAAO,KAAK,EAAE;;AAEd,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACrC,YAAA,IAAI;AAAE,gBAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;aAAE;AAAC,YAAA,MAAM,iBAAiB;AACrD,YAAA,MAAM,KAAK,CAAC;SACb;AACD,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;;YAErB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,MAAM,CAAE,CAAA,CAAC,CAAC;SACpD;AACD,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;KAC7B;AAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAA;QACpE,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;AAEtH,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM,IAAI,aAAa,CAAC,CAAA,yCAAA,EAA4C,MAAM,CAAG,CAAA,CAAA,EAAE,eAAe,CAAC,CAAC;SACjG;;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAG,EAAA,SAAS,QAAQ,MAAM,CAAA,CAAE,CAAC,EAAE;YAC/F,MAAM,IAAI,aAAa,CAAC,CAAoB,iBAAA,EAAA,MAAM,CAA8B,2BAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;SAClH;;;;AAID,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;AAC3C,QAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACzD,YAAA,MAAM,IAAI,aAAa,CACrB,gCAAgC,MAAM,CAAA,YAAA,EAAe,SAAS,CAAK,GAAA,CAAA;gBACnE,qFAAqF,EACrF,eAAe,CAChB,CAAC;SACH;AACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAEvC,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,MAAM,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACtC;AACD,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;KAC7B;;;;AAMD,IAAA,MAAM,gBAAgB,GAAA;QACpB,IAAI,IAAI,CAAC,YAAY;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;QAC/F,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;;;;AAK7B,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,aAAa,CAAC,KAAK;gBACzB,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,GAAG,EAAE,EAAE;AACR,aAAA,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,MAAM,KAAK,CAAC;SACb;KACF;AAED,IAAA,MAAM,iBAAiB,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;;;;AAKpF,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,aAAa,CAAC,MAAM;YAC1B,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,GAAG,EAAE,EAAE;AACR,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;AAC3C,gBAAA,IAAK,KAA4C,CAAC,aAAa,EAAE;AAC/D,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;qBAAM;oBACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC1B;aACF;SACF;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;AAED,IAAA,MAAM,mBAAmB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;AAEpF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;;;;;;AAOhC,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,aAAa,CAAC,QAAQ;YAC5B,KAAK;AACL,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,GAAG,EAAE,EAAE;AACR,SAAA,CAAC,CAAC;;AAGH,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;gBACzC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,GAAG,GAAG,CAAC;AAAE,oBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aACpD;SACF;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;AAGzB,QAAA,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE;YACtC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aACpC;SACF;KACF;IAMD,MAAM,SAAS,CAAC,IAAY,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,qCAAqC,EAAE,SAAS,CAAC,CAAC;AAClG,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAkB,gBAAA,CAAA,EAAE,kBAAkB,CAAC,CAAC;;AAEjH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;AAC9D,SAAA,CAAC,CAAC;KACJ;IAED,MAAM,mBAAmB,CAAC,IAAY,EAAA;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAa,WAAA,CAAA,EAAE,qBAAqB,CAAC,CAAC;;;AAGzF,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;gBACzC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,GAAG,GAAG,CAAC;AAAE,oBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aACpD;SACF;;QAED,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;;;QAG7D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAa,CAAC,CAAC;;QAE9C,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,CAAC,KAAK,IAAI,EAAE;gBAAE,KAAK,GAAG,IAAI,CAAC;gBAAC,SAAS;aAAE;AAC3C,YAAA,IAAI,KAAK;AAAE,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACtC;;AAED,QAAA,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE;YACtC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aACpC;SACF;KACF;IAED,MAAM,gBAAgB,CAAC,IAAY,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,aAAa,CAAC,CAAA,WAAA,EAAc,IAAI,CAAa,WAAA,CAAA,EAAE,qBAAqB,CAAC,CAAC;AAChH,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC9B;;AAID,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,MAAM,GAA8C,EAAE,CAAC;QAC7D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;YAC3C,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SACtD;AACD,QAAA,OAAO,MAAM,CAAC;KACf;;;;IAMO,MAAM,UAAU,CAAC,SAAiB,EAAA;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;;AAE/B,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;AACxD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;AAC9D,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACxC,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;AACzB,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC;;QAEH,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KAC/C;AAED;;;AAGG;IACK,gBAAgB,CAAC,SAAiB,EAAE,IAA+B,EAAA;QACzE,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC5C,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;YACtC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,YAAA,MAAM,GAAG,GAAI,KAA4C,CAAC,aAAa,CAAC;AACxE,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACnD,IAAI,GAAG,EAAE;gBACP,IAAI,GAAG,IAAI,CAAC;AAAE,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aACnC;iBAAM;AACL,gBAAA,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC;gBACtC,IAAI,GAAG,IAAI,CAAC;AAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;;AACzB,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACrB;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,KAAK,CAAC,MAAmB,EAAA;AAC/B,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACxD,IAAI,GAAG,CAAC,UAAU;AAAE,gBAAA,OAAO,IAAI,CAAC;SACjC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACvC;IAEO,WAAW,CAAC,MAAmB,EAAE,GAA4B,EAAA;QACnE,MAAM,SAAS,GAA4B,EAAE,CAAC;AAC9C,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC9D,YAAA,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;AAAE,gBAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAChF,YAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAC9D,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,OAAO,CAAA,wBAAA,EAA2B,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;aAC1G;;;AAGD,YAAA,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;AAChE,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,oBAAA,EAAuB,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,IAAI,CAAA,6BAAA,CAA+B,EACvF,kBAAkB,CACnB,CAAC;aACH;YACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACrD;YACD,IAAI,KAAK,KAAK,SAAS;AAAE,gBAAA,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;SACrD;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAEO,IAAA,SAAS,CAAC,OAAe,EAAE,IAAY,EAAE,KAAc,EAAE,MAAkB,EAAA;QACjF,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,IAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KACzD;;;;AAMO,IAAA,MAAM,cAAc,GAAA;QAC1B,MAAM,IAAI,GAA8C,EAAE,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;SAC7B;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAClD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;KACjD;AAEO,IAAA,MAAM,WAAW,GAAA;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,GAAG;YAAE,OAAO;AAEjB,QAAA,IAAI;YACF,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8C,CAAC;AAE3E,YAAA,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACvD,MAAM,MAAM,GAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD;SACF;AAAC,QAAA,MAAM;;SAEP;KACF;;;;AAMD;;;;;;;AAOG;AACK,IAAA,kBAAkB,CAAC,EAAU,EAAA;AACnC,QAAA,MAAM,UAAU,GAAG,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,CAAO,IAAA,EAAA,EAAE,GAAG,CAAC;AACzD,QAAA,MAAM,QAAQ,GAAG,EAAE,KAAK,MAAM,GAAG,iBAAiB,GAAG,CAAmB,gBAAA,EAAA,EAAE,EAAE,CAAC;QAC7E,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,SAAS,GAAG,KAAK,CAAC;;AAGtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AAE5F,QAAA,MAAM,UAAU,GAAG,CAAC,IAAY,KAAiB;YAC/C,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC/C,SAAC,CAAC;AAEF,QAAA,MAAM,YAAY,GAAG,YAAmC;YACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,GAAG;AAAE,gBAAA,OAAO,EAAE,CAAC;AACpB,YAAA,IAAI;AACF,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAkB,CAAC;aACnE;AAAC,YAAA,MAAM;AACN,gBAAA,OAAO,EAAE,CAAC;aACX;AACH,SAAC,CAAC;QAEF,OAAO;AACL,YAAA,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,KAAI;gBACvB,IAAI,SAAS,EAAE;;oBAEb,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC/B,OAAO;iBACR;gBACD,IAAI,GAAG,GAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAgB,CAAC;;AAE5G,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,oBAAA,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAgB,CAAC;iBACpH;AACD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,EAAG,UAAU,CAAA,EAAG,EAAE,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC;aACrD;AACD,YAAA,IAAI,EAAE,OAAO,EAAE,KAAI;;gBAEjB,IAAI,SAAS,EAAE;AACb,oBAAA,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;AACnC,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,oBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACnD,wBAAA,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;qBACzD;iBACF;AACD,gBAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,GAAG;AAAE,oBAAA,OAAO,IAAI,CAAC;AACtB,gBAAA,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;;AAE9B,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;;AAE3B,oBAAA,GAAG,GAAG,aAAa,CAAC,GAAG,CAA4B,CAAC;iBACrD;AACD,gBAAA,OAAO,GAAG,CAAC;aACZ;AACD,YAAA,MAAM,EAAE,OAAO,EAAE,KAAI;gBACnB,IAAI,SAAS,EAAE;AACb,oBAAA,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;AACnC,oBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,oBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACnD,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;qBAC1C;iBACF;AACD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAG,EAAA,UAAU,CAAG,EAAA,EAAE,CAAE,CAAA,CAAC,CAAC;aACjD;YACD,UAAU,EAAE,YAAW;;gBAErB,IAAI,CAAC,SAAS,EAAE;AACd,oBAAA,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;oBACnC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnD,SAAS,GAAG,IAAI,CAAC;iBAClB;gBACD,OAAO,EAAE,GAAG,CAAC;aACd;AACD,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,QAAQ,EAAE,OAAO,IAAI,KAAI;AACvB,gBAAA,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;;gBAElC,MAAM,OAAO,GAAG,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/C,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;;AAElF,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,GAAG,IAAI,CAAC;AAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;;AACnC,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9B,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACtE;AACD,YAAA,UAAU,EAAE,OAAO,EAAE,KAAI;AACvB,gBAAA,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;AAClC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACjD,gBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAC1E;SACF,CAAC;KACH;;IAGO,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK;AAAE,YAAA,OAAO,KAAK,CAAC;;;AAGpD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC;KACrF;;;;AAMO,IAAA,cAAc,CAAC,MAAiB,EAAA;AACtC,QAAA,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM;AACvB,gBAAA,IAAI,MAAM,CAAC,IAAI,EAAE;AACf,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,CAAE,CAAA,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;iBAChE;gBACD,MAAM;YACR,KAAK,aAAa,CAAC,MAAM;AACvB,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAG,EAAA,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,aAAa,CAAC,YAAY;AAC7B,gBAAA,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;AACvB,oBAAA,IAAI;AACF,wBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAgB,CAAgB,CAAC;AAClE,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;4BAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5B,4BAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;yBAC1C;qBACF;AAAC,oBAAA,MAAM,cAAc;iBACvB;gBACD,MAAM;YACR,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,QAAQ,CAAC;YAC5B,KAAK,aAAa,CAAC,KAAK;gBACtB,MAAM;SACT;KACF;AAED;;;;;AAKG;IACK,MAAM,sBAAsB,CAAC,SAAiB,EAAA;AACpD,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO;;AAEvB,QAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;AAGhC,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;AAC/B,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;QACjC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,QAAA,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACtB;KACF;;;;;IAOO,aAAa,CAAC,SAAiB,EAAE,MAAmB,EAAA;QAC1D,MAAM,IAAI,GAAa,EAAE,CAAC;AAC1B,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC9D,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,SAAS;YAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,CAAC;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;;AAIG;AACK,IAAA,eAAe,CACrB,SAAiB,EACjB,UAAoB,EACpB,GAA4B,EAC5B,SAAiB,EAAA;AAEjB,QAAA,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;AAChC,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;gBAAE,SAAS;AAChD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,MAAM,GAAG,CAAG,EAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;YAC5D,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,OAAO,EAAE;AAC/B,gBAAA,MAAM,EAAE,GAAI,KAAoC,CAAC,EAAE,CAAC;gBACpD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE;oBACxC,MAAM,IAAI,aAAa,CACrB,CAA0C,uCAAA,EAAA,OAAO,CAAe,YAAA,EAAA,SAAS,CAAG,CAAA,CAAA,EAC5E,kBAAkB,CACnB,CAAC;iBACH;aACF;SACF;KACF;;AAGO,IAAA,sBAAsB,CAC5B,SAAiB,EAAE,OAAe,EAClC,MAAsC,EACtC,MAAsC,EAAA;QAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,MAAM;YAAE,OAAO;AAEpB,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;;YAE9D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,SAAS;AAC9C,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,MAAM;gBAAE,SAAS;;YAGtB,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3C,oBAAA,MAAM,CAAC,MAAM,CAAC,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,CAAI,CAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;iBAC/C;aACF;;YAGD,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3C,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;iBAC7D;aACF;SACF;KACF;;AAGO,IAAA,MAAM,cAAc,CAC1B,SAAiB,EACjB,KAAgB,EAAA;QAEhB,IAAI,CAAC,KAAK,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;;;;;QAM5C,MAAM,IAAI,GAAwB,EAAE,CAAC;AACrC,QAAA,MAAM,OAAO,GAAG,CAAC,CAAiB,KAAU;AAC1C,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,KAAK,MAAM,EAAE;oBAChB,KAAK,MAAM,GAAG,IAAK,CAAsB;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBACxD,SAAS;iBACV;gBACD,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,SAAS;oBAAE,SAAS;gBAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACnB;AACH,SAAC,CAAC;AACF,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErB,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE;YAEnC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,QAAQ,IAAI,GAAG,KAAK,KAAK;gBAAE,SAAS;;AAGzC,YAAA,IAAI,GAAG,KAAK,KAAK,EAAE;gBACjB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;AACvD,oBAAA,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,SAAS,EAAE,CAAC;oBACxC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAChC,OAAO,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;iBACxD;gBACD,MAAM,IAAI,GAAG,SAAoC,CAAC;AAClD,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;oBACjB,MAAM,GAAG,GAAG,CAAG,EAAA,SAAS,IAAI,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;oBACvC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAChC,OAAO,KAAK,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;iBACvD;;AAED,gBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAG,EAAA,SAAS,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;oBACtD,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAClC,MAAM,IAAI,GAA8B,EAAE,CAAC;AAC3C,oBAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;AAC/B,oBAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;AACxB,wBAAA,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,wBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BAAE,SAAS;AAC3B,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC,CAAC;wBACjD,IAAI,KAAK,EAAE;AAAE,4BAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAAC,4BAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;yBAAE;qBACnE;AACD,oBAAA,OAAO,IAAI,CAAC;iBACb;;AAED,gBAAA,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACtE,oBAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;AAC/B,oBAAA,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAG,EAAA,MAAM,CAAQ,MAAA,CAAA,CAAC,CAAC;AACxD,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA,EAAG,MAAM,CAAA,MAAA,CAAQ,CAAC,CAAC;oBAC9D,MAAM,IAAI,GAA8B,EAAE,CAAC;oBAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;AAClC,wBAAA,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;wBAClE,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;AAAE,4BAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACzE;AACD,oBAAA,OAAO,IAAI,CAAC;iBACb;aACF;;AAGD,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,GAAG,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,MAAM;gBAAE,SAAS;;YAGtB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;;;gBAGvD,IAAI,SAAS,KAAK,IAAI;oBAAE,SAAS;gBACjC,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;aAC7F;YACD,MAAM,CAAC,GAAG,SAAoC,CAAC;AAC/C,YAAA,IAAI,KAAK,IAAI,CAAC,EAAE;;AAEd,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI;oBAAE,SAAS;gBAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7D;;AAED,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;;AAEtC,gBAAA,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;oBAAE,SAAS;;;;;AAK5C,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAuB,CAAC,CAAC,EAAE,CAAA,EAAG,CAAC,CAAQ,MAAA,CAAA,CAAC,CAAC,CAAC,CAAC;gBAC1F,MAAM,OAAO,GAA8B,EAAE,CAAC;AAC9C,gBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;gBAClC,MAAM,GAAG,GAAa,EAAE,CAAC;AACzB,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAG,EAAA,GAAG,CAAQ,MAAA,CAAA,CAAC,CAAC;oBACtD,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,OAAO,EAAE;AAClC,wBAAA,MAAM,EAAE,GAAI,QAA4B,CAAC,EAAE,CAAC;wBAC5C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC1B,4BAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChB,4BAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;yBACd;qBACF;iBACF;gBACD,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAG,EAAA,SAAS,IAAI,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC;AACnE,gBAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AACpB,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC,CAAC;AAC/C,oBAAA,IAAI,GAAG;AAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;iBAChD;AACD,gBAAA,OAAO,OAAO,CAAC;aAChB;;AAED,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;;;;;AAK1D,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAChF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;aACpE;SACF;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;IAGO,MAAM,eAAe,CAC3B,SAAiB,EAAE,KAAa,EAAE,MAAW,EAC7C,QAAgB,EAAE,MAAc,EAAA;;AAGhC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAG,EAAA,MAAM,QAAQ,CAAC;;QAE5E,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACzD,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,OAAO,EAAE;AAClC,YAAA,MAAM,EAAE,GAAI,QAAgB,CAAC,EAAY,CAAC;AAC1C,YAAA,IAAI,EAAE;AAAE,gBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtB;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAG,EAAA,SAAS,IAAI,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAA8B,EAAE,CAAC;AAC3C,QAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AACpB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC,CAAC;AAC/C,YAAA,IAAI,GAAG;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;SAC7C;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;;;;IAOO,KAAK,GAAA;QACX,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;KACF;;IAGO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;YACnD,MAAM,CAAC,SAAS,EAAE,CAAC;SACpB;KACF;;IAGO,iBAAiB,GAAA;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;AAC3C,QAAA,IAAI,IAAI,GAAG,QAAQ,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SAClB;KACF;AAED;;;AAGG;IACH,MAAM,YAAY,CAAC,SAAiB,EAAA;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;;QAG9C,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC;QACpD,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC;QACpD,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QACrF,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACpD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAG,EAAA,SAAS,OAAO,CAAC;gBAAE,SAAS;AACtD,YAAA,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5B,YAAA,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;AAC/B,YAAA,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;YAC/B,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACtF;AACD,QAAA,MAAM,KAAK,GAA4B;AACrC,YAAA,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,IAAI,CAAC,MAAM;AACrB,YAAA,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;AACzB,kBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAClF,kBAAE,CAAC;YACL,UAAU;YACV,YAAY;YACZ,YAAY;AACZ,YAAA,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE;SAC/C,CAAC;;QAGF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,WAAW,GAA4B,EAAE,CAAC;AAChD,YAAA,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACjD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;aACxD;AACD,YAAA,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;SACjC;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;IACH,MAAM,YAAY,CAAC,SAAiB,EAAA;QAClC,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;KAC7C;;IAGO,MAAM,oBAAoB,CAAC,SAAiB,EAAA;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,CAAC,CAAC;QACtB,IAAI,YAAY,GAAG,CAAC,CAAC;;;;QAKrB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AAC5C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CACnD,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAC9C,CAAC;AACF,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;QAEnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9C,QAAA,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAG,CAAA,EAAG,SAAS,CAAQ,KAAA,EAAA,OAAO,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,MAAM;gBAAE,SAAS;;AAGtB,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACrB,YAAA,YAAY,EAAE,CAAC;;AAGf,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,gBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;oBACrC,MAAM,CAAC,GAAG,CAAC,CAAG,EAAA,MAAM,CAAC,GAAG,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAE,CAAA,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBAChE;aACF;SACF;AACD,QAAA,OAAO,YAAY,CAAC;KACrB;AAED;;AAEG;AACH,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,CAAC,UAAU,EAAE,CAAC;;AAElB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;;AAEvB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;AACtC,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACpC;SACF;;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;KACrD;IAEO,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;KACnF;;AAGO,IAAA,wBAAwB,CAAC,EAAU,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,IAAI,aAAa,CACrB,CAAA,EAAG,EAAE,CAA8E,4EAAA,CAAA,EACnF,eAAe,CAChB,CAAC;SACH;KACF;AAEO,IAAA,WAAW,CAAC,SAAiB,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAChC,MAAM,IAAI,aAAa,CAAC,CAAA,OAAA,EAAU,SAAS,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;SACnF;KACF;AACF;;ACzuED;;;;;;;;AAQG;AAQH;AACA;AACA;MAEa,YAAY,CAAA;AASvB,IAAA,WAAA,CAAY,aAAyB,MAAM,EAAA;QARlC,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;QAKjB,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QACZ,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;AAGlB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;;AAEjC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;KACvC;;AAID,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,OAAe,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;QAEvB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;QAG5C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;AAG9C,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;KACnC;AAED;;;AAGG;AACH,IAAA,MAAM,oBAAoB,GAAA;AACxB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAChC,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;AAGxD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAA+D,CAAC;AAClF,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AACrC,YAAA,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;SACrB;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AACzD,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,MAAM;gBAAE,SAAS;;YAGtB,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;AAG5C,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACzE,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,gBAAA,IAAI;oBACF,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBACjD;gBAAC,OAAO,CAAC,EAAE;;oBAEV,OAAO,CAAC,IAAI,CAAC,CAAA,sCAAA,EAAyC,SAAS,CAAmB,iBAAA,CAAA,EAAE,CAAC,CAAC,CAAC;iBACxF;aACF;SACF;KACF;AAED,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAChC,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KAC/B;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC/D;;;AAKD,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE;AAChD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SAChC;AACD,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;KACnC;;AAGD,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE;AAClD,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;SAClC;aAAM;YACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AACpD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACvC;SACF;QACD,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,UAAU,EAAE;AACpD,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;SACpC;aAAM;YACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;AACtD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACzC;SACF;KACF;IAED,MAAM,OAAO,CAAC,GAAW,EAAA;QACvB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;YACjD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACrC;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;QACtC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE;YACjD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAC3C;KACF;;IAID,MAAM,WAAW,CAAC,MAAmB,EAAA;QACnC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC3C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;KACF;IAED,MAAM,SAAS,CAAC,SAAiB,EAAA;QAC/B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC7C,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAC5C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;KACF;IAED,MAAM,QAAQ,CAAC,SAAiB,EAAA;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KAC9C;AAED,IAAA,MAAM,aAAa,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;KAC1C;IAED,MAAM,cAAc,CAAC,SAAiB,EAAA;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;KACpD;;AAGD,IAAA,MAAM,UAAU,CACd,SAAiB,EACjB,MAAsB,EACtB,MAA2D,EAAA;AAE3D,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9D,QAAA,IAAI;YACF,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE;AACpD,gBAAA,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAC7D;iBAAM;;gBAEL,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC/D,gBAAA,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACrE;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;KACF;;AAID;;;;;AAKG;IACK,MAAM,2BAA2B,CAAC,KAAc,EAAA;AACtD,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnC;AAAC,QAAA,MAAM;;;;AAIN,YAAA,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;SACxF;AACD,QAAA,MAAM,KAAK,CAAC;KACb;AAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,IAA+B,EAAA;AAC7D,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;AAE5D,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC/C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,MAAM,IAAI,CAAC,SAAiB,EAAE,KAAgB,EAAA;;QAE5C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACjD;;AAGD,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,KAAgB,EAAE,KAA6C,EAAA;AACjG,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9D;AAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAE,OAAgC,EAAA;AAChF,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;;AAExE,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;SACzD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,MAAM,MAAM,CAAC,SAAiB,EAAE,KAAgB,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;;AAE/D,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAChD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,MAAM,KAAK,CAAC,SAAiB,EAAE,KAAiB,EAAA;QAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KAClD;IAED,MAAM,KAAK,CAAC,SAAiB,EAAA;QAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzC,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACxC;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;KACF;;AAID,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAgB,EAAA;AACnE,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/D,QAAA,IAAI;YACF,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,UAAU,EAAE;AACrD,gBAAA,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAC9D;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;KACF;AAED,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,SAAkB,EAAA;AACnE,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAChE,QAAA,IAAI;YACF,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,UAAU,EAAE;AACnD,gBAAA,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;aAC/D;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;SAC/C;KACF;;AAID,IAAA,MAAM,gBAAgB,GAAA;AACpB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;;;AAG3C,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;SAC1C;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;AAC9C,YAAA,MAAM,KAAK,CAAC;SACb;KACF;AAED,IAAA,MAAM,iBAAiB,GAAA;;AAErB,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;AAC1C,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;;;YAGd,MAAM,IAAI,aAAa,CACrB,sFAAsF,EACtF,iBAAiB,EACjB,KAAK,CACN,CAAC;SACH;KACF;AAED,IAAA,MAAM,mBAAmB,GAAA;AACvB,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;AAC9C,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;KAC7C;;;IAKD,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;;IAGD,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AACF;;AChVD;;;;;;AAMG;AAOH;AACA;AACA;MAEa,kBAAkB,CAAA;IAS7B,WACU,CAAA,MAAsB,EACtB,SAAiB,EACjB,WAAqB,CAAC,GAAG,CAAC,EAClC,QAAwB,EAAA;QAHhB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QAX5B,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAc,EAAE,CAAC;QAGzB,IAAM,CAAA,MAAA,GAAiB,EAAE,CAAC;AAUhC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;;AAGD,IAAA,EAAE,CAAC,KAAa,EAAA;AACd,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,SAAS,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KACjD;;AAGD,IAAA,QAAQ,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KAChD;;AAGD,IAAA,SAAS,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KACjD;;IAGD,SAAS,CAAC,KAAa,EAAE,KAAc,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KACjD;;AAGD,IAAA,IAAI,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KACjD;AAEO,IAAA,QAAQ,CAAC,IAAc,EAAE,KAAa,EAAE,EAAkB,EAAE,KAAc,EAAA;AAChF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,KAAK,CAAC,SAAyB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,OAAO,CAAC,MAAc,EAAE,SAAA,GAA2B,KAAK,EAAA;QACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,KAAK,CAAC,CAAS,EAAA;AACb,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,MAAM,CAAC,CAAS,EAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACjB,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,MAAM,OAAO,GAAA;;AAEX,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAuC,CAAC;SAC1E;;QAGD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM;AAClB,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;YAC7D,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,OAAO;AACrB,SAAA,CAAC,CAAC;KACJ;;IAGD,KAAK,GAAA;QACH,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS;YAC5D,KAAK,EAAE,IAAI,CAAC,MAAM;AAClB,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;YAC7D,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,MAAM,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC;KACH;AACF,CAAA;AAED;AACA;AACA;MAEa,kBAAkB,CAAA;IAM7B,WACU,CAAA,MAAsB,EACtB,SAAiB,EACjB,QAAiC,EACzC,OAAiC,EACjC,OAAmF,EAAA;QAJ3E,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAyB;QARnC,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;AAYlC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AAED,IAAA,KAAK,CAAC,SAAyB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5D,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7D,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACnE,QAAA,OAAO,KAAK,CAAC;KACd;IAED,KAAK,GAAA;QACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KAC3F;AACF,CAAA;AAED;AACA;AACA;MAEa,kBAAkB,CAAA;AAM7B,IAAA,WAAA,CACU,MAAsB,EACtB,SAAiB,EACzB,OAAiC,EACjC,OAAmF,EAAA;QAH3E,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QAPnB,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;AAWlC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;AAED,IAAA,KAAK,CAAC,SAAyB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5D,MAAM,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACpD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,KAAK,GAAA;AACH,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KACrE;AACF;;AC/MD;;;AAGG;AAQH;AACA;AACA;MAEa,KAAK,CAAA;IAUhB,WACE,CAAA,MAAsB,EACtB,SAAiB,EACjB,QAAwB,EACxB,OAAiC,EACjC,OAAmF,EAAA;QAZ7E,IAAM,CAAA,MAAA,GAAuB,IAAI,CAAC;AAcxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KACxB;;AAID,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;IAID,MAAM,MAAM,CAAC,GAAgC,EAAA;;AAE3C,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAA8B,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAClD,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;KACf;IAED,MAAM,UAAU,CAAC,IAAqC,EAAA;QACpD,MAAM,IAAI,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAiC,CAAC,CAAC;QACnF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,MAAM,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACjD,QAAA,OAAO,GAAG,CAAC;KACZ;;AAID,IAAA,MAAM,CAAC,OAAA,GAAoB,CAAC,GAAG,CAAC,EAAA;AAC9B,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/E;;AAGD,IAAA,MAAM,MAAM,CACV,KAAiD,EACjD,QAAkG,EAAE,EAAA;QAEpG,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAChD,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC7C,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;AACvB,aAAA,CAAC,CAAC;YACH,KAAK,MAAM,GAAG,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAkC,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;YACvC,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,EAAE,KAA+C,CAAC,CAAC;KACrD;;AAID,IAAA,MAAM,CAAC,OAA6C,EAAA;QAClD,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5F;;IAID,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACnF;;IAID,MAAM,KAAK,CAAC,KAA+B,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;KACtF;;AAID,IAAA,MAAM,KAAK,GAAA;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED,IAAA,MAAM,IAAI,GAAA;QACR,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;AACF;;ACjID;;;;;;AAMG;AAMH;AACA;AACA;AAEA;;;AAGG;AACG,SAAU,gBAAgB,CAAC,IAAe,EAAA;AAC9C,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA;YACE,MAAM,IAAI,aAAa,CAAC,CAAkC,+BAAA,EAAA,IAAI,CAAC,IAAI,CAAgB,cAAA,CAAA,EAAE,eAAe,CAAC,CAAC;KACzG;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAqB,EAAA;IAC1C,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS;QACxD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAqB,EAAA;IAC1C,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAqB,EAAA;IAC1C,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ;;ACxDA;;;AAGG;AAEH;AACA;AACA;AAEA,IAAY,SA2GX,CAAA;AA3GD,CAAA,UAAY,SAAS,EAAA;;AAEnB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;;AAGrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;AAGf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;;AAGrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;AAGf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;;AAGX,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;;AAGT,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;;AAGjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;;AAGX,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EA3GW,SAAS,KAAT,SAAS,GA2GpB,EAAA,CAAA,CAAA,CAAA;AAYD;AACA;AACA;AAEO,MAAM,QAAQ,GAA8B;IACjD,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,IAAI,EAAE,SAAS,CAAC,EAAE;IAClB,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,IAAI,EAAE,SAAS,CAAC,EAAE;IAClB,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,IAAI,EAAE,SAAS,CAAC,EAAE;IAClB,SAAS,EAAE,SAAS,CAAC,OAAO;IAC5B,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,SAAS,EAAE,SAAS,CAAC,OAAO;IAC5B,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,YAAY,EAAE,SAAS,CAAC,UAAU;IAClC,SAAS,EAAE,SAAS,CAAC,OAAO;IAC5B,SAAS,EAAE,SAAS,CAAC,OAAO;IAC5B,IAAI,EAAE,SAAS,CAAC,EAAE;IAClB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,UAAU,EAAE,SAAS,CAAC,QAAQ;;IAG9B,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,IAAI,EAAE,SAAS,CAAC,EAAE;IAClB,IAAI,EAAE,SAAS,CAAC,EAAE;IAClB,OAAO,EAAE,SAAS,CAAC,KAAK;;IAGxB,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,UAAU,EAAE,SAAS,CAAC,QAAQ;;IAG9B,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,UAAU,EAAE,SAAS,CAAC,QAAQ;IAC9B,OAAO,EAAE,SAAS,CAAC,KAAK;IACxB,KAAK,EAAE,SAAS,CAAC,GAAG;IACpB,OAAO,EAAE,SAAS,CAAC,KAAK;;IAGxB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,MAAM,EAAE,SAAS,CAAC,IAAI;IACtB,KAAK,EAAE,SAAS,CAAC,GAAG;;IAGpB,SAAS,EAAE,SAAS,CAAC,OAAO;IAC5B,SAAS,EAAE,SAAS,CAAC,OAAO;IAC5B,SAAS,EAAE,SAAS,CAAC,OAAO;IAC5B,QAAQ,EAAE,SAAS,CAAC,MAAM;IAC1B,WAAW,EAAE,SAAS,CAAC,SAAS;IAChC,SAAS,EAAE,SAAS,CAAC,OAAO;IAC5B,IAAI,EAAE,SAAS,CAAC,EAAE;CACnB;;ACvND;;;;;AAKG;AAKH;AACA;AACA;MAEa,KAAK,CAAA;AAMhB,IAAA,WAAA,CAAY,KAAa,EAAA;QAJjB,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;QACb,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QACjB,IAAE,CAAA,EAAA,GAAW,EAAE,CAAC;AAGtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;;IAGD,SAAS,GAAA;QACP,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,GAAU,CAAC;AAEf,QAAA,QAAQ,IAAI,CAAC,EAAE;AACb,YAAA,KAAK,GAAG;gBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC3C,MAAM;AACR,YAAA,KAAK,GAAG;gBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC5C,MAAM;AACR,YAAA,KAAK,GAAG;gBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC5C,MAAM;AACR,YAAA,KAAK,GAAG;gBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC/C,MAAM;AACR,YAAA,KAAK,GAAG;gBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC1C,MAAM;AACR,YAAA,KAAK,GAAG;gBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACzC,MAAM;AACR,YAAA,KAAK,GAAG;gBACN,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACxC,MAAM;AACR,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;oBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAC3C;qBAAM;oBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;iBAC9C;gBACD,MAAM;AACR,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;oBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAC3C;qBAAM;oBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;iBACzC;gBACD,MAAM;AACR,YAAA,KAAK,GAAG;AACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;oBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAC3C;AAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;oBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAC3C;qBAAM;oBACL,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;iBACzC;gBACD,MAAM;AACR,YAAA,KAAK,GAAG,CAAC;AACT,YAAA,KAAK,GAAG;gBACN,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/B,MAAM;AACR,YAAA,KAAK,EAAE;AACL,gBAAA,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClE,MAAM;AACR,YAAA;;AAEE,gBAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;oBAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,oBAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;iBACzB;;AAED,gBAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE;oBAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,oBAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;iBACzB;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC1B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9C,oBAAA,GAAG,GAAG;AACJ,wBAAA,IAAI,EAAE,OAAO,IAAI,SAAS,CAAC,UAAU;AACrC,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM;qBACvC,CAAC;oBACF,OAAO,GAAG,CAAC;iBACZ;qBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;AACtF,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,oBAAA,GAAG,GAAG;wBACJ,IAAI,EAAE,SAAS,CAAC,MAAM;AACtB,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM;qBACrC,CAAC;AACF,oBAAA,OAAO,GAAG,CAAC;iBACZ;qBAAM;AACL,oBAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;iBAClD;gBACD,MAAM;SACT;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,OAAO,GAAG,CAAC;KACZ;;IAIO,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1C,YAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;SACd;aAAM;YACL,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACzC;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEO,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACtC;IAEO,cAAc,GAAA;QACpB,OAAO,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE;YAClF,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;;IAGO,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;YAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;;IAGO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE;YACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;AACD,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;IAEO,cAAc,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE;YACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;AACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/C;IAEO,UAAU,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;AAE5B,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;;AAED,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;YACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;SACF;AACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/C;AAEO,IAAA,UAAU,CAAC,KAAa,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,KAAK,GAAG,EAAE,CAAC;AAEf,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE;;AAErB,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;oBAC7B,KAAK,IAAI,KAAK,CAAC;AACf,oBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChB,SAAS;iBACV;AACD,gBAAA,MAAM;aACP;;AAED,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;gBACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,KAAK,IAAI,KAAK,CAAC;gBACf,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,SAAS;aACV;AACD,YAAA,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;;;AAID,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;YAClB,MAAM,IAAI,aAAa,CACrB,CAAA,wCAAA,EAA2C,KAAK,CAAE,CAAA,EAClD,aAAa,CACd,CAAC;SACH;QAED,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,KAAK;AACL,YAAA,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;AAEO,IAAA,QAAQ,CAAC,EAAU,EAAA;AACzB,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7B;AAEO,IAAA,OAAO,CAAC,EAAU,EAAA;AACxB,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACzB;IAEO,SAAS,CAAC,IAAe,EAAE,KAAa,EAAA;QAC9C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjD;AACF,CAAA;AAED;AACA;AACA;AAEA;AACM,SAAU,QAAQ,CAAC,GAAW,EAAA;AAClC,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAY,EAAE,CAAC;AAC3B,IAAA,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAC5B,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,EAAE;AACjC,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjB,QAAA,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;KACzB;AACD,IAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjB,IAAA,OAAO,MAAM,CAAC;AAChB;;ACxQA;;;;;;AAMG;AAwBH;AACA;AACA;MAEa,MAAM,CAAA;AAMjB,IAAA,WAAA,CAAY,GAAW,EAAA;AACrB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;;QAE5B,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;IAGD,cAAc,GAAA;AACZ,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrC,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnC,KAAK,SAAS,CAAC,KAAK;AAClB,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAChC,KAAK,SAAS,CAAC,QAAQ;AACrB,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnC,KAAK,SAAS,CAAC,KAAK;AAClB,gBAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,SAAS,CAAC,QAAQ;AACrB,gBAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;;YAE9B,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,KAAK,SAAS,CAAC,MAAM;AACnB,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,SAAS,CAAC,SAAS;AACtB,gBAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/B,YAAA;AACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAqB,kBAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;SACjE;KACF;;IAGD,kBAAkB,GAAA;QAChB,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;;AAEtC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9D,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;gBAAE,MAAM;YAC1C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;;YAEvC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAC1C,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAsC,mCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;aAChF;SACF;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;;;IAKO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACtC,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;SACnD;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACpC,QAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KACnC;;IAGO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;YAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;KACxE;;IAGO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;YAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;KACxE;;IAGO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KAC3B;;IAGO,cAAc,GAAA;AACpB,QAAA,IAAI,MAAuC,CAAC;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACtC,MAAM,GAAG,SAAS,CAAC;YACnB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;aAAM;YACL,MAAM,GAAG,MAAM,CAAC;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAClC;;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3D,QAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;KACrF;;IAIO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;AAE7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;YACnF,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC1B;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;YACnF,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KAC3B;;IAGO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,EAAE;YACnF,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SAC7B;;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AAC/B,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE;YAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;AACtC,iBAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,EAAE;gBACjF,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;AACD,YAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SACjG;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KAC7B;;IAIO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAChC;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAClC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;AAC7E,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;;YAErC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAClC,iBAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;AAC7E,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;AACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAA8C,2CAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;KACxF;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;KACtD;;IAIO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAClC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;AAC7E,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;AACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAA4C,yCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;KACtF;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;QAEjD,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aAC/B;SACF;QACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;KACpD;;;;IAMO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;QAG9B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvC,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;QAGD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;;;YAGjB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;aAC3C;SACF;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;SACzC;;AAGD,QAAA,IAAI,YAAgE,CAAC;QACrE,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,KAAyB,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;;YAGjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;oBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,oBAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;iBACxC;AAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACtF,oBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;aACF;iBAAM;AACL,gBAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;gBAGhD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;oBACjC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,oBAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;iBACxC;AAAM,qBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACtF,oBAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;aACF;SACF;AAED,QAAA,MAAM,IAAI,GAAoB;AAC5B,YAAA,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,QAAQ,EAAE,QAAQ,IAAI,SAAS;AAC/B,YAAA,IAAI,EAAE,SAAS;YACf,KAAK;AACL,YAAA,KAAK,EAAE,EAAE;SACV,CAAC;QACF,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;SAClC;;AAGD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACtC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SACpC;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC3C;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SACrC;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACxC;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;SAC/C;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;SACjD;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC9B;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;AAGO,IAAA,UAAU,CAAC,IAA4C,EAAA;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClC,GAAG,GAAG,IAAI,CAAC;YACX,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAEjC,QAAA,MAAM,SAAS,GAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;;QAErG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;SACxC;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;;AAGO,IAAA,eAAe,CAAC,IAA0B,EAAA;AAChD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClC,GAAG,GAAG,IAAI,CAAC;YACX,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACjC,QAAA,MAAM,SAAS,GAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;QACrG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;SACxC;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;;IAGO,gBAAgB,GAAA;QACtB,MAAM,KAAK,GAAwC,EAAE,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;SACpC;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,cAAc,GAAA;QACpB,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAC/B;KACH;;IAGO,eAAe,GAAA;QACrB,IAAI,IAAI,GAAoC,OAAO,CAAC;QAEpD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,GAAG,OAAO,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC1C,IAAI,GAAG,MAAM,CAAC;YACd,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;SACxD;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC3C,IAAI,GAAG,OAAO,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;SACxD;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC3C,IAAI,GAAG,OAAO,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;AAGtD,QAAA,IAAI,KAAyB,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;SACxC;AAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AACjF,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;QAGD,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,QAAA,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACrD,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SAC5B;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KAC9C;;IAGO,oBAAoB,GAAA;QAC1B,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,cAAc,EAAE,EACrB;KACH;IAEO,eAAe,GAAA;QACrB,QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,cAAc,EAAE,EACrB;KACH;;;;IAMO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;AAGtD,QAAA,IAAI,OAA6B,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAC/B;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACrC,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,SAAS;gBACf,OAAO;AACP,gBAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;aAC3B,CAAC;SACH;;AAGD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;QAG9B,MAAM,MAAM,GAAgB,EAAE,CAAC;AAC/B,QAAA,GAAG;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACxB,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QAE3C,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,SAAS;YACf,OAAO;YACP,MAAM;SACP,CAAC;KACH;;;;IAMO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;QAG3B,MAAM,IAAI,GAA4B,EAAE,CAAC;AACzC,QAAA,GAAG;AACD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;SAC/B,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QAE3C,IAAI,KAAK,GAAmB,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SAC/B;AAED,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KAC1D;;;;IAMO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEtD,IAAI,KAAK,GAAmB,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SAC/B;QAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KACnD;;;;IAMO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;QAG7B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,WAAW,GAAG,IAAI,CAAC;SACpB;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,OAAO,GAAmB,EAAE,CAAC;AACnC,QAAA,GAAG;AACD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SACrC,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAE3C,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAE9B,QAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,CAAC;KAClG;IAEO,cAAc,GAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;AAEhE,QAAA,MAAM,GAAG,GAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAGzC,QAAA,OACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EACrC;YACA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACtC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,gBAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;aACvB;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;aACnB;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5B,gBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;aACrB;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;aACjC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;gBAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,GAAG,CAAC,UAAU,GAAG,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;;gBAEzC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;oBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;wBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,wBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;qBAC1C;yBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;wBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,wBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;qBAC1C;yBAAM;wBACL,MAAM;qBACP;iBACF;aACF;iBAAM;gBACL,MAAM;aACP;SACF;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGO,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,SAAS,CAAC;SAClB;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,OAAO,UAAU,CAAC;SACnB;;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;YACnG,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,UAAU,CAAC;SACnB;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;;;;IAMO,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;;AAGtD,QAAA,IAAI,MAAsB,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClC,MAAM,GAAG,KAAK,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;gBACjG,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;AACD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,YAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;SACtE;AAAM,aAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,EAAE;YAC5E,MAAM,GAAG,MAAM,CAAC;YAChB,IAAI,CAAC,SAAS,EAAE,CAAC;;YAEjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;gBACjG,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACrD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;SACpG;aAAM;AACL,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACzD;KACF;;;;IAMO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACpD;;;;IAMO,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;QAE7B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,QAAQ,GAAG,IAAI,CAAC;SACjB;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACtD,QAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC;KACjF;;;;;IAOO,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAEvC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACtE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAE1C,IAAI,KAAK,EAAE;;gBAET,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAA+B,CAAC;aAC7D;iBAAM;gBACL,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAA+B,CAAC;aAC5D;SACF;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;IAGD,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;KAC9B;AAED;;AAE2D;IACnD,oBAAoB,GAAA;;AAE1B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;AACnC,aAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE;YAC9E,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SACzC;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AAC1D,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACxC;;AAGD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;YAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC1C,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAA+B,CAAC;SACrD;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAA,OAAO,KAAK,CAAC;SACd;;AAGD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;;QAGrC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;YACvF,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,YAAA,IAAI,KAAK;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAmB,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvD,YAAA,OAAO,MAAM,CAAC;SACf;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAmB,EAAE,CAAC;AAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC3C,YAAA,OAAO,MAAM,CAAC;SACf;;AAGD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AACzE,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAmB,EAAE,CAAC;AAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;AACrD,YAAA,OAAO,MAAM,CAAC;SACf;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;;AAElC,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACrC,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACpC,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;AAClC,oBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AACnD,oBAAA,OAAO,MAAM,CAAC;iBACf;AACD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAClC,gBAAA,OAAO,MAAM,CAAC;aACf;iBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;;AAE3C,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAmB,EAAE,CAAC;AAClC,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;AAC9C,gBAAA,OAAO,MAAM,CAAC;aACf;SACF;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAmB,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACpC,YAAA,OAAO,MAAM,CAAC;SACf;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAE9B,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACrC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACpC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;AAClC,gBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAClD,gBAAA,OAAO,MAAM,CAAC;aACf;AACD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACjC,YAAA,OAAO,MAAM,CAAC;SACf;;AAGD,QAAA,IACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;aAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAC9L;YACA,MAAM,MAAM,GAAmB,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC/B,YAAA,OAAO,MAAM,CAAC;SACf;;AAGD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;;AAGpC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;AAClC,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AACnD,YAAA,OAAO,MAAM,CAAC;SACf;;AAGD,QAAA,IAAI,KAAc,CAAC;AACnB,QAAA,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAC/B;AACA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACrC,YAAA,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SAC1B;aAAM;AACL,YAAA,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;SAC3B;QAED,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;AACjC,QAAA,OAAO,MAAM,CAAC;KACf;;AAGO,IAAA,oBAAoB,CAAC,MAAe,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;AAE9B,QAAA,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,EAA+B,CAAC;KACxG;;IAGO,aAAa,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;aAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;KACrG;;IAGO,cAAc,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC3E;AAEO,IAAA,WAAW,CAAC,IAAe,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;KACrC;IAEO,iBAAiB,GAAA;AACvB,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,KAAK,SAAS,CAAC,EAAE;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,KAAK,CAAC;YAClD,KAAK,SAAS,CAAC,GAAG;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,KAAK,CAAC;YACnD,KAAK,SAAS,CAAC,EAAE;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,KAAK,CAAC;YAClD,KAAK,SAAS,CAAC,GAAG;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,MAAM,CAAC;YACpD,KAAK,SAAS,CAAC,EAAE;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,KAAK,CAAC;YAClD,KAAK,SAAS,CAAC,GAAG;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,MAAM,CAAC;AACpD,YAAA;AACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAsC,mCAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;SAClF;KACF;;;;IAMO,eAAe,GAAA;QACrB,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;SACxC;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;IAGO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC7C,YAAA,GAAG,GAAG,CAAG,EAAA,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE,CAAC;SAC5B;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AAChH,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,GAAG,GAAG,CAAG,EAAA,GAAG,CAAO,IAAA,EAAA,KAAK,EAAE,CAAC;SAC5B;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGO,cAAc,GAAA;;QAEpB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;SACvC;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,KAAK,CAAC;SACd;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC;SACrB;;AAGD,QAAA,IACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAC9B;AACA,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAClC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACpD,YAAA,OAAO,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;SAC7B;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;AAGG;IACK,uBAAuB,GAAA;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrC,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAEhC,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAAE,gBAAA,KAAK,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAA,KAAK,EAAE,CAAC;gBACR,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,KAAK,KAAK,CAAC;oBAAE,MAAM;aACxB;AACD,YAAA,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AAED,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;QAEtC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC;SACjD;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC3H,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;IAGO,kBAAkB,GAAA;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;QAG9B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvC,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AAED,QAAA,IAAI,GAAW,CAAC;QAChB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACnC,GAAG,GAAG,GAAG,CAAC;YACV,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;aAAM;AACL,YAAA,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SAC7B;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;QAG9B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;SACxC;AAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAClF,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;AAED,QAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAY,SAAA,EAAA,GAAG,CAAE,CAAA,GAAG,GAAG,CAAC;QACjD,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAQ,KAAA,EAAA,KAAK,EAAE,CAAC;SACxC;AACD,QAAA,OAAO,CAAG,EAAA,IAAI,CAAI,CAAA,EAAA,KAAK,GAAG,CAAC;KAC5B;IAEO,iBAAiB,GAAA;QACvB,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;KAC/D;IAEO,mBAAmB,GAAA;QACzB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;SACzC;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;IAEO,cAAc,GAAA;QACpB,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAC9B;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,gBAAgB,GAAA;QACtB,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;SAChC;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,YAAY,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7C,IAAI,SAAS,GAAkB,KAAK,CAAC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC1C,SAAS,GAAG,MAAM,CAAC;YACnB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;;AAED,QAAA,IAAI,KAAmC,CAAC;QACxC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;YAC1F,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;gBAC1F,KAAK,GAAG,OAAO,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;gBAChG,KAAK,GAAG,MAAM,CAAC;gBACf,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;SACF;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;KAC3D;;IAGO,sBAAsB,GAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA,CAAE,CAAC;SAC1D;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;IAGO,UAAU,GAAA;AAChB,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;AACxB,YAAA,KAAK,SAAS,CAAC,MAAM,EAAE;AACrB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,OAAO,GAAG,CAAC;aACZ;AACD,YAAA,KAAK,SAAS,CAAC,MAAM,EAAE;gBACrB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,OAAO,GAAG,CAAC;aACZ;YACD,KAAK,SAAS,CAAC,IAAI;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,IAAI,CAAC;YACnD,KAAK,SAAS,CAAC,KAAK;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,KAAK,CAAC;YACrD,KAAK,SAAS,CAAC,IAAI;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAAC,gBAAA,OAAO,IAAI,CAAC;AACnD,YAAA;AACE,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,CAAwB,qBAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC;SACpE;KACF;;;;IAMO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;KACzC;AAEO,IAAA,UAAU,CAAC,IAAe,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC;KACpC;AAEO,IAAA,MAAM,CAAC,IAAe,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;SACR;AACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;KACpE;AAEO,IAAA,gBAAgB,CAAC,OAAe,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC3E,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,GAAG,CAAC;SACZ;AACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;KACvE;;IAGO,iBAAiB,GAAA;QACvB,QACE,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EACrC;KACH;AAEO,IAAA,YAAY,CAAC,OAAe,EAAA;QAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE;YAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,GAAG,CAAC;SACZ;AACD,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;KACvE;AAEO,IAAA,KAAK,CAAC,GAAW,EAAA;AACvB,QAAA,OAAO,IAAI,aAAa,CACtB,CAAA,wBAAA,EAA2B,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,GAAG,CAAA,CAAE,EAC3D,aAAa,CACd,CAAC;KACH;AACF,CAAA;AAED;AACA;AACA;AAEA;AACM,SAAU,KAAK,CAAC,GAAW,EAAA;AAC/B,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;AACrC,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;AACM,SAAU,QAAQ,CAAC,GAAW,EAAA;AAClC,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAA,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC;AACrC,CAAC;AAED;AACM,SAAU,mBAAmB,CAAC,GAAW,EAAA;AAC7C,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAA,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B;;AClzCA;;;;;AAKG;AAeH;AACA;AACA;AAEA;;;;;AAKG;AACH,SAAS,cAAc,CAAC,CAAU,EAAA;IAChC,IAAI,CAAC,KAAK,IAAI;AAAE,QAAA,OAAO,GAAG,CAAC;IAC3B,IAAI,CAAC,KAAK,SAAS;AAAE,QAAA,OAAO,GAAG,CAAC;IAChC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;IAC1C,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;IAC1C,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,IAAA,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,CAAC;AAmBD;AACA,SAAS,mBAAmB,CAAC,IAAY,EAAA;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAC3E,IAAA,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;AACpB,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE3B,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,EAAE,GAAG,uEAAuE,CAAC;AACnF,IAAA,IAAI,KAA6B,CAAC;AAClC,IAAA,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;QACvC,IAAI,IAAI,GAA0B,IAAI,CAAC;AACvC,QAAA,IAAI;YACF,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC7C;AAAC,QAAA,MAAM;;SAEP;AACD,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KAC9C;IAED,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACrD,IAAA,IAAI,SAAS;QAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAE/C,IAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AAED;AACA,SAAS,gBAAgB,CAAC,IAAY,EAAE,GAA4B,EAAA;AAClE,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,KAAK,MAAM;AAAE,QAAA,OAAO,IAAI,CAAC;IAC9B,IAAI,CAAC,KAAK,MAAM;AAAE,QAAA,OAAO,IAAI,CAAC;IAC9B,IAAI,CAAC,KAAK,OAAO;AAAE,QAAA,OAAO,KAAK,CAAC;AAChC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,GAAG,CAAC;AACxC,IAAA,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACzD,IAAA,IAAI,GAAG;AAAE,QAAA,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,IAAA,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QACvC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;KACvB;AACD,IAAA,OAAO,CAAC,CAAC;AACX,CAAC;AAED;AACA,SAAS,YAAY,CAAC,IAAoB,EAAE,GAA4B,EAAA;IACtE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;QACxC,IAAI,IAAI,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AACjC,YAAA,OAAO,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SACrC;KACF;IACD,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAChF,CAAC;AAED;AACA;AACA;MAEa,aAAa,CAAA;IAGxB,WAAoB,CAAA,MAAsB,EAAE,eAAA,GAA0B,CAAC,EAAA;QAAnD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;KACxC;IAED,MAAM,OAAO,CAAC,IAAe,EAAA;AAC3B,QAAA,QAAQ,IAAI,CAAC,IAAI;YACf,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC1D,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAW,CAAC,CAAC;YACxD,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC1D,KAAK,YAAY,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACtD,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAW,CAAC,CAAC;YAC/D,KAAK,gBAAgB,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAW,CAAC,CAAC;YACrE,KAAK,cAAc,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAW,CAAC,CAAC;YACjE,KAAK,YAAY,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAW,CAAC,CAAC;YAC7D,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;;YAE/C,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACrD,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjD,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjD,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,SAAS,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;SACjF;KACF;;;;;IAOO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;QAG3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrE,QAAA,MAAM,UAAU,GAA8B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAEzE,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,KAAK,MAAM,GAAG,IAAI,SAAS;AAAE,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClF,YAAA,OAAO,UAAU,CAAC;SACnB;;AAGD,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,MAAM,GAA8B,EAAE,CAAC;AAC7C,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC5B,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACd,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAClB;SACF;AACD,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACd,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACxB;SACF;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,MAAM,iBAAiB,CAAC,IAA4C,EAAA;QAC1E,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAChG;;IAGO,eAAe,CAAC,GAA4B,EAAE,QAAkB,EAAA;AACtE,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,SAAS,GAA4B,EAAE,CAAC;AAC9C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC/D;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;;IAGO,MAAM,cAAc,CAAC,IAA0B,EAAA;AACrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAY,IAAI,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;;;;AAKb,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;AACtE,YAAA,IAAI;gBACF,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzC;AAAC,YAAA,MAAM,6BAA6B;AACrC,YAAA,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAClD;AAAM,aAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvE,YAAA,IAAI;;gBAEF,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9B,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAClD;AAAC,YAAA,MAAM;gBAAE,IAAI,GAAG,CAAC,CAAC;aAAE;SACtB;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;;QAGvC,IAAI,IAAI,GAA4C,IAAI,CAAC;AACzD,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrC;AAAC,QAAA,MAAM,0BAA0B;;;;;AAMlC,QAAA,IAAI,UAAU,GAAW,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;QACvD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1E,YAAA,IAAI;AACF,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5D,IAAI,MAAM,EAAE;AACV,oBAAA,MAAM,SAAS,GAAG,CAAC,CAAwC,KAAmB;AAC5E,wBAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACtC,4BAAA,IAAI,CAAC,KAAK,MAAM,EAAE;AAChB,gCAAA,KAAK,MAAM,GAAG,IAAK,CAA6C,EAAE;AAChE,oCAAA,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,oCAAA,IAAI,GAAG;AAAE,wCAAA,OAAO,GAAG,CAAC;iCACrB;gCACD,SAAS;6BACV;AACD,4BAAA,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM;gCAAE,SAAS;4BAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,4BAAA,IAAI,CAAC,MAAM;gCAAE,SAAS;4BACtB,IAAI,MAAM,CAAC,UAAU;AAAE,gCAAA,OAAO,IAAI,CAAC;AACnC,4BAAA,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;gCAAE,OAAO,CAAA,MAAA,EAAS,CAAC,CAAA,CAAE,CAAC;yBACxD;AACD,wBAAA,OAAO,IAAI,CAAC;AACd,qBAAC,CAAC;oBACF,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;iBAC9C;aACF;AAAC,YAAA,MAAM,4BAA4B;SACrC;QAED,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,KAAK,EAAE,IAAI,EAAE,KAAK;YAClB,OAAO,EAAE,IAAI,EAAE,OAAO;AACtB,YAAA,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;AACxB,YAAA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;YAC5B,KAAK,EAAE,IAAI,EAAE,KAAK;YAClB,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,UAAU;AACV,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,YAAY,EAAE,OAAO;SACtB,CAAC;KACH;;;;IAMO,MAAM,aAAa,CAAC,IAAqB,EAAA;AAC/C,QAAA,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/D,QAAA,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3E,QAAA,IAAI,IAA+B,CAAC;AAEpC,QAAA,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;;QAG5D,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AACnD,aAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;QAElD,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;;QAEvD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;;YAErB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChE,YAAA,IAAI,GAAG,WAAW;AAChB,kBAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;kBAC/F,OAAO,CAAC;YACZ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEpE,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1D;SACF;aAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;;AAErC,YAAA,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;SACb;aAAM,IAAI,WAAW,EAAE;;YAEtB,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAC3C;aAAM;;AAEL,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAChF;;AAED,YAAA,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC9D,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;aACpG;AACD,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;aACzE;;AAED,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;gBACpC,IAAI,CAAC,KAAK,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAAE,oBAAA,OAAO,CAAC,CAAC;gBAC1G,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC3C,IAAI,CAAC,EAAE;AACL,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;oBAC3D,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAA,EAAG,QAAQ,CAAA,IAAA,EAAO,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;iBAChE;gBACD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACzC,aAAC,CAAC,CAAC;;AAGH,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACpD,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,IAAI,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;;AAE/F,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,IAAI,YAAY,EAAE;AAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAAC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAAC,oBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;iBAAE;AAChG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aACtD;iBAAM;;AAEL,gBAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,oBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACvD;gBACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,IAAI,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC/F,IAAI,YAAY,IAAI,cAAc;AAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzD,IAAI,YAAY,EAAE;AAAE,oBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAAC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAAC,oBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;iBAAE;AAChG,gBAAA,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aACjD;SACF;;QAGD,IAAI,YAAY,EAAE;YAChB,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;SAClD;AAED,QAAA,IAAI,UAAU;YAAE,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEtD,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAExD,YAAA,MAAM,QAAQ,GAAI,IAA0D,CAAC,YAAY,CAAC;YAC1F,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;gBACjC,MAAM,UAAU,GAAmB,EAAE,CAAC;AACtC,gBAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAChD,oBAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;iBACtC;AACD,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;aAC1B;AACD,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;SAC5D;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;;;AAIrF,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACtD,eAAA,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;YAC5D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SAC9D;;AAED,QAAA,IAAI,YAAY,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC;AACD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;QACxC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;;AAG1C,QAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;YAClE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SAC5C;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;AAIO,IAAA,MAAM,iBAAiB,CAAC,IAAqB,EAAE,aAAyC,EAAA;QAC9F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;;AAE1C,QAAA,IAAI,QAAmC,CAAC;QACxC,IAAI,aAAa,EAAE;YACjB,QAAQ,GAAG,aAAa,CAAC;SAC1B;aAAM;;AAEL,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5E,YAAA,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC5C,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,gBAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS;AAC/D,aAAA,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;SAClD;QACD,IAAI,UAAU,GAAG,QAAQ,CAAC;AAE1B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAM,EAAE;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;;AAE3C,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAClF,IAAI,UAAU,EAAE;gBACd,UAAU,GAAG,UAAU,CAAC;gBACxB,SAAS;aACV;YACD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACxE,iBAAA,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;YAChD,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;SACxD;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;YAEpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACtC,gBAAA,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aAClE;iBAAM;;AAEL,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,gBAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACtE;SACF;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAEO,SAAS,CAAC,GAA4B,EAAE,KAAa,EAAA;QAC3D,MAAM,QAAQ,GAA4B,EAAE,CAAC;AAC7C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA,CAAC,GAAG,KAAK,CAAC;AACpF,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED;;;AAGG;IACK,oBAAoB,CAAC,KAAqB,EAAE,SAAiB,EAAA;QACnE,MAAM,QAAQ,GAAmB,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpC,QAAA,MAAM,MAAM,GAAG,CAAG,EAAA,SAAS,GAAG,CAAC;AAC/B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;YACtC,MAAM,CAAC,GAAG,KAAuC,CAAC;AAClD,YAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;iBACpC,MAAM,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE;gBAC/E,SAAS;aACV;AACD,YAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;SAC5C;QACD,OAAO,EAAE,QAAQ,EAAE,CAAC;KACrB;AAED;;;;;;AAMG;IACK,MAAM,WAAW,CACvB,QAAmC,EACnC,IAAgB,EAChB,SAAiB,EACjB,SAAiB,EAAA;QAEjB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC;;QAGhE,MAAM,KAAK,GAA4C,EAAE,CAAC;AAC1D,QAAA,MAAM,YAAY,GAAG,CAAC,EAAkB,KAAa;AACnD,YAAA,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC/C,gBAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACrB,oBAAA,IAAI,CAAE,IAAyB,CAAC,KAAK,CAAC,YAAY,CAAC;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAClE,SAAS;iBACV;AACD,gBAAA,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM;oBAAE,OAAO,KAAK,CAAC;gBACxD,IAAI,MAAM,GAAkB,IAAI,CAAC;gBACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;oBAC7C,MAAM,CAAC,GAAG,IAA+B,CAAC;oBAC1C,IAAI,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,MAAM,IAAK,CAAC,CAAC,GAA+B,EAAE;wBAC7G,MAAM,GAAG,MAAM,CAAE,CAAC,CAAC,GAA+B,CAAC,IAAI,CAAC,CAAC;qBAC1D;AAAM,yBAAA,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,wBAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;qBACzB;iBACF;AACD,gBAAA,IAAI,CAAC,MAAM;oBAAE,OAAO,KAAK,CAAC;AAE1B,gBAAA,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA,EAAG,SAAS,CAAG,CAAA,CAAA,CAAC,GAAG,KAAK,CAAC;gBACzE,KAAK,CAAC,IAAI,CAAC;oBACT,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;oBACpC,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM;AACtC,iBAAA,CAAC,CAAC;aACJ;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AACxC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;;AAGpC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;QACzB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AACjC,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpC,YAAA,OAAO,MAAM,KAAK,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;;AAG5B,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;AAC5D,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3H,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;;AAGrC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;AAC7C,SAAA,CAAC,CAAC;;AAGH,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqC,CAAC;AAC1D,QAAA,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;AAC1B,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5F,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACzB;QAED,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAAE,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAErE,MAAM,MAAM,GAA8B,EAAE,CAAC;AAC7C,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;AACxB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,gBAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACvB,oBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;iBACxD;aACF;AAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;AAE/B,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;aAChE;;SAEF;AACD,QAAA,OAAO,MAAM,CAAC;KACf;;AAGO,IAAA,QAAQ,CACd,QAAmC,EACnC,SAAoC,EACpC,IAAgB,EAAA;AAEhB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACzB,MAAM,MAAM,GAA8B,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,IAAI,QAAQ;gBAAE,KAAK,MAAM,CAAC,IAAI,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACjF,YAAA,OAAO,MAAM,CAAC;SACf;QAED,MAAM,MAAM,GAA8B,EAAE,CAAC;AAC7C,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;YACxB,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,YAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;;gBAEzB,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC9B,gBAAA,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;AAC/C,oBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC;iBAChB;aACF;YACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBACpC,MAAM,SAAS,GAA4B,EAAE,CAAC;AAC9C,gBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAAE,oBAAA,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;aACrC;SACF;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzB,YAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;gBACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;oBACpC,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AAC9B,oBAAA,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,QAAQ,GAA4B,EAAE,CAAC;AAC7C,oBAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAAE,wBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBACvE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;iBACpC;aACF;SACF;AACD,QAAA,OAAO,MAAM,CAAC;KACf;;IAIO,cAAc,CAAC,IAA+B,EAAE,IAAqB,EAAA;AAC3E,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqC,CAAC;AAC5D,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;;;YAGtB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC5B;QACD,MAAM,MAAM,GAA8B,EAAE,CAAC;;AAE7C,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;YACvC,MAAM,UAAU,GAA4B,EAAE,CAAC;AAC/C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAQ;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;gBAClC,IAAI,OAAO,KAAK,GAAG;oBAAE,SAAS;gBAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBACjF,IAAI,CAAC,EAAE;oBACL,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/E,oBAAA,MAAM,OAAO,GAAG,CAAG,EAAA,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AACvD,oBAAA,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC;oBACnC,IAAI,SAAS,KAAK,OAAO;AAAE,wBAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC5D,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBAC/B;AAAM,qBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;;AAEtC,oBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;oBAC1C,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iBACrF;qBAAM,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBAC3C,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC7C;aACF;AACD,YAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACzB;AACA,QAAA,IAA0D,CAAC,YAAY,GAAG,QAAQ,CAAC;AACpF,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,gBAAgB,CAAC,IAAY,EAAE,IAA+B,EAAE,GAAW,EAAA;;AAEjF,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;QAE3E,MAAM,WAAW,GAAG,CAAC,QAAQ,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;QAC9E,MAAM,SAAS,GAAG,IAAI;aACnB,GAAG,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;;AAEhD,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,IAAI,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;YACvC,IAAI,WAAW,EAAE;AACf,gBAAA,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aACpG;YACD,OAAO,SAAS,CAAC,MAAM,CAAC;SACzB;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACpE,QAAQ,IAAI;YACV,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACnE,YAAA,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;YACzH,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;YAC7E,KAAK,KAAK,EAAE,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AAC7E,YAAA,SAAS,OAAO,CAAC,CAAC;SACnB;KACF;;AAIO,IAAA,eAAe,CAAC,IAA+B,EAAA;AACrD,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;;AAEzB,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChE,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACd,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;KACJ;;;;IAMO,MAAM,aAAa,CAAC,IAAqB,EAAA;AAC/C,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;AAC/F,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;AAG7D,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;YAG7D,IAAI,OAAO,GAAa,EAAE,CAAC;AAC3B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,YAAA,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzB,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;oBACnE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC;iBACvD;AAAM,qBAAA,IAAI,GAAG,CAAC,IAAI,EAAE;AACnB,oBAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7D,oBAAA,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;iBAC3D;aACF;AACD,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACtC;YACD,MAAM,IAAI,GAA8B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBAC7D,MAAM,MAAM,GAA4B,EAAE,CAAC;AAC3C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,oBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACnD,oBAAA,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;wBAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;iBACvD;AACD,gBAAA,OAAO,MAAM,CAAC;AAChB,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC5C;AAED,QAAA,MAAM,IAAI,GAA8B,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAe,KAAI;YAClF,MAAM,GAAG,GAA4B,EAAE,CAAC;AACxC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAAE,gBAAA,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;oBAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aAAE;AAC9F,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC5C;IAEO,MAAM,aAAa,CAAC,IAAqB,EAAA;;;;AAI/C,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACxD;IAEO,MAAM,aAAa,CAAC,IAAqB,EAAA;;AAE/C,QAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC7C;AAED;;;;;AAKG;IACK,MAAM,iBAAiB,CAAC,IAAuC,EAAA;AACrE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,IAAI,EAAE,CAAC;AAClE,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,MAAM,IAAI,aAAa,CACrB,8FAA8F,EAC9F,eAAe,CAChB,CAAC;SACH;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAEO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;;AAEzD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,YAAA,IAAI,MAAM;gBAAE,OAAO;SACpB;;;QAGD,MAAM,OAAO,GAAwB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAwB,CAAC;AAChF,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC9E,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;KAClE;IAEO,MAAM,gBAAgB,CAAC,IAAwB,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO;SACrB;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzC;IAEO,MAAM,iBAAiB,CAAC,IAAyB,EAAA;AACvD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;AAC/F,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM;YAAE,OAAO;;;AAIpB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACnD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;YACtE,IAAI,KAAK,EAAE;gBACT,MAAM,IAAI,aAAa,CACrB,CAAwD,qDAAA,EAAA,IAAI,CAAC,IAAI,CAAoC,kCAAA,CAAA,EACrG,cAAc,CACf,CAAC;aACH;SACF;;QAGD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAChD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACzH;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;YACzB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,IAAI,CAAC,IAAI,GAAG,EAAE,eAAe,CAAC,CAAC;aACjH;;AAED,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtE;AAAM,aAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACrC,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAW,QAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,2BAAA,EAA8B,IAAI,CAAC,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;aACpH;;YAED,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;YAExC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACjC,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,IAAI,OAAO,IAAI,GAAG;AAAE,oBAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;aACzC;SACF;KACF;IAEO,MAAM,oBAAoB,CAAC,IAA4B,EAAA;AAC7D,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;;;;IAMO,MAAM,kBAAkB,CAAC,IAA0B,EAAA;AACzD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;AAEhG,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1C,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAA8B,2BAAA,EAAA,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,EAAE,kBAAkB,CAAC,CAAC;SAChH;QAED,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;AACjD,YAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,+BAAA,CAAiC,EAC5D,eAAe,CAChB,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACtE;IAEO,MAAM,gBAAgB,CAAC,IAAwB,EAAA;QACrD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;AAC/C,YAAA,MAAM,IAAI,aAAa,CACrB,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,6BAAA,CAA+B,EAC1D,eAAe,CAChB,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAClE;;;;AAMO,IAAA,MAAM,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;KACvC;AAEO,IAAA,MAAM,aAAa,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;KACxC;AAEO,IAAA,MAAM,eAAe,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;KAC1C;;;;;IAOO,MAAM,gBAAgB,CAAC,IAAwC,EAAA;AACrE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAInB,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AAC1B,YAAA,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE;AAC1C,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,4BAAA,CAA8B,EAAE,eAAe,CAAC,CAAC;aACrG;YACD,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpC;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AAC9B,YAAA,IAAI,OAAO,MAAM,CAAC,mBAAmB,KAAK,UAAU,EAAE;AACpD,gBAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,wCAAA,CAA0C,EAAE,eAAe,CAAC,CAAC;aACjH;YACD,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC9C;AACD,QAAA,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE;AACjD,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,oCAAA,CAAsC,EAAE,eAAe,CAAC,CAAC;SAC7G;QACD,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;;IAGO,MAAM,cAAc,CAAC,IAAsC,EAAA;AACjE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAEnB,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;AAC7C,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,0BAAA,CAA4B,EAAE,eAAe,CAAC,CAAC;SACnG;AACD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;QAChG,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;;IAGO,MAAM,cAAc,CAAC,IAAsC,EAAA;AACjE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAEnB,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;AAC7C,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,0BAAA,CAA4B,EAAE,eAAe,CAAC,CAAC;SACnG;AACD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,CAAkB,gBAAA,CAAA,EAAE,iBAAiB,CAAC,CAAC;QAChG,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;;AAGO,IAAA,MAAM,aAAa,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAEnB,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AACvC,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,yBAAA,CAA2B,EAAE,eAAe,CAAC,CAAC;SAClG;AACD,QAAA,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;KACxB;;AAGO,IAAA,aAAa,CAAC,OAAiB,EAAA;AACrC,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACvD;AAED;;;AAGG;AACK,IAAA,sBAAsB,CAAC,IAAqB,EAAA;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAC7D,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,iBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAChC,gBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,IAAI,EAAE,KAAK;AAAE,oBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1C;SACF;AACD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;KACxD;;AAGO,IAAA,YAAY,CAAC,KAAqB,EAAA;AACxC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AACnC,gBAAA,IAAK,KAA0B,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC;gBACnF,SAAS;aACV;AACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;AAClB,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAuB,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC;gBAC5D,SAAS;aACV;AACD,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;SAC1C;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,SAAS,KAAqB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;AAEnD;;;AAGG;IACK,UAAU,CAAC,GAA4B,EAAE,OAAiB,EAAA;QAChE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAwC,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAA8C,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAsC,EAAE,CAAC;;QAExD,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,GAAG,KAAK,GAAG,EAAE;gBACf,OAAO,GAAG,IAAI,CAAC;gBACf,SAAS;aACV;AACD,YAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE;AACR,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,SAAS;aACV;YACD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE;gBACL,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrD,SAAS;aACV;;YAED,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACnC,IAAI,GAAG,EAAE;;;AAGP,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpC,SAAS;aACV;AACD,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACjB;;QAED,MAAM,SAAS,GAAG,OAAO;AACvB,cAAE,EAAE,GAAG,GAAG,EAAE;eACT,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE;AACzC,YAAA,IAAI,MAAM,KAAK,GAAG,EAAE;AAClB,gBAAA,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;aAC/B;iBAAM;gBACL,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;;gBAEtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;aACnE;SACF;QACD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE;AACtC,YAAA,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACxB;QACD,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE;YACtC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC5C;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;;;;;AAOO,IAAA,mBAAmB,CAAC,OAAiB,EAAA;AAC3C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACvE;;IAGO,sBAAsB,CAAC,IAA+B,EAAE,IAAqB,EAAA;QACnF,MAAM,MAAM,GAA4B,EAAE,CAAC;AAC3C,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;YAClC,IAAI,OAAO,KAAK,GAAG;gBAAE,SAAS;YAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACjF,IAAI,CAAC,EAAE;gBACL,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;aACxF;iBAAM;;gBAEL,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;aAC7D;SACF;AACD,QAAA,OAAO,MAAM,CAAC;KACf;;;;;IAOO,qBAAqB,CAAC,KAAqB,EAAE,OAAiB,EAAA;QACpE,MAAM,UAAU,GAAmB,EAAE,CAAC;AACtC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACnC,UAAU,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;gBACrG,SAAS;aACV;AACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAuB,EAAE,OAAO,CAAC,CAAC;gBAC/E,SAAS;aACV;AACD,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,gBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC5D,SAAS;aACV;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7C,YAAA,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC/D;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAEO,oBAAoB,CAAC,KAAc,EAAE,OAAiB,EAAA;AAC5D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK,CAAC;QAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;AAC3C,QAAA,IAAI,CAAC,CAAC,SAAS,EAAE;AACf,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,SAA4B,CAAC;;AAE3C,YAAA,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvE,OAAO,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;SAClG;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,mBAAmB,CAAC,KAAc,EAAE,OAAiB,EAAA;AAC3D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;QACtF,MAAM,GAAG,GAA4B,EAAE,CAAC;AACxC,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE;YAC5E,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK,EAAE;gBACjC,GAAG,CAAC,EAAE,CAAC,GAAI,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;aAChG;AAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AAC3E,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aACtD;AAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,EAAE;AACxB,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;aACrD;iBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,IAAK,OAAmC,EAAE;;gBAEvI,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAE,OAAmC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;aACjG;iBAAM;AACL,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;aACnB;SACF;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;IAEO,UAAU,CAAC,GAAW,EAAE,OAAiB,EAAA;AAC/C,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK;gBAAE,SAAS;AACrB,YAAA,MAAM,MAAM,GAAG,CAAG,EAAA,KAAK,GAAG,CAAC;AAC3B,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC7D;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;;AAGO,IAAA,iBAAiB,CAAC,KAAqB,EAAA;AAC7C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AACnC,gBAAA,IAAK,KAA0B,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC;gBACxF,SAAS;aACV;AACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;AAClB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAuB,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC;gBACjE,SAAS;aACV;AACD,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;;AAErB,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,WAAW,IAAK,KAAiC,EAAE;oBACpG,OAAO,IAAI,CAAC;iBACb;gBACD,SAAS;aACV;;AAED,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;AACzC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;SAC7C;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,cAAc,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;QACtF,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,IAAI,MAAM,IAAI,GAAG;AAAE,YAAA,OAAO,IAAI,CAAC;QAC/B,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE;YACjC,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAqB,CAAC;AACvD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;SACxD;AACD,QAAA,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;YACtE,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC;;AAED,QAAA,KAAK,MAAM,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7C,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC9E,IAAI,MAAM,IAAK,OAAmC;AAAE,oBAAA,OAAO,IAAI,CAAC;AAChE,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC;aAC/C;SACF;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;AAGO,IAAA,qBAAqB,CAAC,KAAqB,EAAA;QACjD,MAAM,OAAO,GAAmB,EAAE,CAAC;AACnC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzF,SAAS;aACV;AACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAuB,CAAC,CAAC;;gBAElE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;AAAE,oBAAA,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;gBACxD,SAAS;aACV;YACD,IAAI,GAAG,KAAK,SAAS;AAAE,gBAAA,SAAS;AAChC,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAAE,gBAAA,SAAS;AACtC,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACtB;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;;AAGO,IAAA,MAAM,gBAAgB,CAAC,IAA+B,EAAE,KAAqB,EAAA;QACnF,MAAM,MAAM,GAA8B,EAAE,CAAC;AAC7C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;;YAEtB,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;YAEhD,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACvD,YAAA,IAAI,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;AAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAClB;SACF;AACD,QAAA,OAAO,MAAM,CAAC;KACf;;IAGO,eAAe,CAAC,KAAqB,EAAE,GAA4B,EAAA;QACzE,MAAM,QAAQ,GAAmB,EAAE,CAAC;AACpC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACnC,QAAQ,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzF,SAAS;aACV;AACD,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAuB,EAAE,GAAG,CAAC,CAAC;gBACnE,SAAS;aACV;AACD,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC3B,gBAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,IAAI;AAAE,oBAAA,SAAS;gBACpB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACpC,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;AACzC,oBAAA,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;iBAC7B;qBAAM;AACL,oBAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;iBAC/B;gBACD,SAAS;aACV;AACD,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACvB;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;;IAGO,oBAAoB,CAAC,GAAY,EAAE,SAAkB,EAAA;AAC3D,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACnF,OAAO,GAAG,KAAK,SAAS,CAAC;SAC1B;QACD,MAAM,GAAG,GAAG,SAAoC,CAAC;AACjD,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/C,QAAQ,EAAE;AACR,gBAAA,KAAK,KAAK;oBAAE,IAAI,GAAG,KAAK,OAAO;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAAC,MAAM;AACrD,gBAAA,KAAK,KAAK;oBAAE,IAAI,GAAG,KAAK,OAAO;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAAC,MAAM;AACrD,gBAAA,KAAK,KAAK;AAAE,oBAAA,IAAI,EAAG,GAAc,GAAI,OAAkB,CAAC;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAAC,MAAM;AAC9E,gBAAA,KAAK,MAAM;AAAE,oBAAA,IAAI,EAAG,GAAc,IAAK,OAAkB,CAAC;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAAC,MAAM;AAChF,gBAAA,KAAK,KAAK;AAAE,oBAAA,IAAI,EAAG,GAAc,GAAI,OAAkB,CAAC;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAAC,MAAM;AAC9E,gBAAA,KAAK,MAAM;AAAE,oBAAA,IAAI,EAAG,GAAc,IAAK,OAAkB,CAAC;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAAC,MAAM;AAChF,gBAAA,KAAK,KAAK;AAAE,oBAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAAC,MAAM;AACxF,gBAAA,KAAK,MAAM;AAAE,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,wBAAA,OAAO,KAAK,CAAC;oBAAC,MAAM;aAEvF;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;IAGO,cAAc,CAAC,KAAc,EAAE,UAAmC,EAAA;AACxE,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;QACtF,MAAM,GAAG,GAA4B,EAAE,CAAC;AACxC,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE;AAC5E,YAAA,IAAI,EAAE,KAAK,MAAM,EAAE;AACjB,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;aAC/C;iBAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK,EAAE;gBACxC,GAAG,CAAC,EAAE,CAAC,GAAI,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;aAC3F;AAAM,iBAAA,IAAI,EAAE,KAAK,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AAC3E,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;aACpD;iBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,IAAK,OAAmC,EAAE;;AAEvI,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAE,OAAmC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;aACjF;iBAAM;AACL,gBAAA,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;aACnB;SACF;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;IAEO,aAAa,CAAC,KAAqB,EAAE,UAAmC,EAAA;QAC9E,MAAM,KAAK,GAAmB,EAAE,CAAC;AACjC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACnC,KAAK,CAAC,GAAG,CAAC,GAAI,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;aAC5F;AAAM,iBAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBACzB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAuB,EAAE,UAAU,CAAC,CAAC;aACtE;AAAM,iBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AAC5B,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACpB;iBAAM;AACL,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aACrD;SACF;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;;;AAMD;;;;AAIG;AACK,IAAA,MAAM,iBAAiB,CAAC,KAAqB,EAAE,UAAoC,EAAA;;QAEzF,IAAI,UAAU,EAAE;YACd,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;SAC/C;QACD,MAAM,QAAQ,GAAmB,EAAE,CAAC;AAEpC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;AAEhD,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;gBACpE,MAAM,CAAC,GAAG,KAAgC,CAAC;AAC3C,gBAAA,MAAM,GAAG,GAAG,CAAC,CAAC,SAA4B,CAAC;AAC3C,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAE,CAA6B,CAAC,OAAO,CAAC;AACxD,gBAAA,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;;AAEzB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;oBACpC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;iBAC3D;AACD,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACvE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC;gBAC9C,SAAS;aACV;;YAED,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC1C,QAAQ,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAClF,CAAC;gBACF,SAAS;aACV;YACD,IAAI,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzC,QAAQ,CAAC,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAClF,CAAC;gBACF,SAAS;aACV;AACD,YAAA,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACjE,gBAAA,QAAQ,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAuB,EAAE,UAAU,CAAC,CAAC;gBAClF,SAAS;aACV;;YAGD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAgC,CAAC,CAAC;aACxF;iBAAM;AACL,gBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACvB;SACF;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED;;AAEG;IACK,MAAM,yBAAyB,CAAC,GAA4B,EAAA;QAClE,MAAM,QAAQ,GAA4B,EAAE,CAAC;AAE7C,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;YAE/C,IAAI,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3C,QAAQ,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;gBACF,SAAS;aACV;YACD,IAAI,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1C,QAAQ,CAAC,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAA4B,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACxE,CAAC;gBACF,SAAS;aACV;AACD,YAAA,IAAI,EAAE,KAAK,MAAM,EAAE;gBACjB,QAAQ,CAAC,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;AAC7D,sBAAE,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAkC,CAAC;sBACxE,OAAO,CAAC;gBACZ,SAAS;aACV;;AAGD,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,WAAW,IAAK,OAAmC,EAAE;AAC1G,gBAAA,MAAM,OAAO,GAAI,OAAmC,CAAC,SAA4B,CAAC;gBAClF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAEpD,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE;;AAEjC,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,oBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,oBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;iBACvB;qBAAM;;AAEL,oBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,wBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;qBACrB;yBAAM;AACL,wBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7C,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;qBACtC;iBACF;aACF;iBAAM;AACL,gBAAA,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;aACxB;SACF;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;AACF;;AC/5CD;;;;;;;;;;;;AAYG;AAIH;AACA,SAAS,WAAW,CAAC,KAAc,EAAA;AACjC,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,MAAM,CAAC;AACzD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;KACf;IACD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;;AAEvE,IAAA,MAAM,IAAI,aAAa,CACrB,+FAA+F,EAC/F,aAAa,CACd,CAAC;AACJ,CAAC;AAED;;;;;AAKG;AACa,SAAA,cAAc,CAAC,GAAW,EAAE,MAAkB,EAAA;;AAE5D,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,GAAG,CAAC;IAExB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAkB,IAAI,CAAC;AAEhC,IAAA,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAElB,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,GAAG,IAAI,EAAE,CAAC;AACV,YAAA,IAAI,EAAE,KAAK,KAAK,EAAE;;gBAEhB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE;AACxB,oBAAA,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClB,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;iBACV;gBACD,KAAK,GAAG,IAAI,CAAC;aACd;AACD,YAAA,CAAC,EAAE,CAAC;YACJ,SAAS;SACV;QAED,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;YAC5B,KAAK,GAAG,EAAE,CAAC;YACX,GAAG,IAAI,EAAE,CAAC;AACV,YAAA,CAAC,EAAE,CAAC;YACJ,SAAS;SACV;;AAGD,QAAA,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;YACpC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC3D,gBAAA,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACd,gBAAA,CAAC,EAAE,CAAC;aACL;YACD,SAAS;SACV;;AAGD,QAAA,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AACpC,YAAA,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;AAChE,gBAAA,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACd,gBAAA,CAAC,EAAE,CAAC;aACL;AACD,YAAA,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;AAClB,gBAAA,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,CAAC,IAAI,CAAC,CAAC;aACR;YACD,SAAS;SACV;AAED,QAAA,IAAI,EAAE,KAAK,GAAG,EAAE;AACd,YAAA,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,gBAAA,MAAM,IAAI,aAAa,CACrB,CAAA,uCAAA,EAA0C,IAAI,GAAG,CAAC,CAAsB,mBAAA,EAAA,MAAM,CAAC,MAAM,CAAA,OAAA,CAAS,EAC9F,aAAa,CACd,CAAC;aACH;YACD,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,CAAC,EAAE,CAAC;YACJ,SAAS;SACV;QAED,GAAG,IAAI,EAAE,CAAC;AACV,QAAA,CAAC,EAAE,CAAC;KACL;AAED,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,QAAA,MAAM,IAAI,aAAa,CAAC,oCAAoC,EAAE,aAAa,CAAC,CAAC;KAC9E;AACD,IAAA,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE;AACxB,QAAA,MAAM,IAAI,aAAa,CACrB,CAAA,2BAAA,EAA8B,MAAM,CAAC,MAAM,CAAA,mBAAA,EAAsB,IAAI,CAAA,aAAA,CAAe,EACpF,aAAa,CACd,CAAC;KACH;AACD,IAAA,OAAO,GAAG,CAAC;AACb;;AC3HA;;;;;AAKG;AAMH;AACA;AACA;MAEa,WAAW,CAAA;AAKtB,IAAA,WAAA,CAAY,MAAsB,EAAA;AAH1B,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,GAAG,EAAE,CAAC;QACvC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAGxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;;AAGD,IAAA,KAAK,CAAC,SAAiB,EAAA;QACrB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,EAAE;YACN,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;SAC/B;AACD,QAAA,OAAO,CAAC,CAAC;KACV;;IAGD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;;IAGD,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AACF,CAAA;AAED;AACA;AACA;MAEa,kBAAkB,CAAA;AAC7B,IAAA,WAAA,CAAoB,MAAsB,EAAA;QAAtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;KAAI;;IAG9C,MAAM,OAAO,CAAI,EAAoC,EAAA;QACnD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAGzC,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAErC,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;;AAE7B,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACtC,GAAG,CAAC,cAAc,EAAE,CAAC;AACrB,YAAA,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;;;AAGd,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;aACzC;AAAC,YAAA,MAAM,oBAAoB;YAC5B,IAAI,KAAK,YAAY,aAAa;AAAE,gBAAA,MAAM,KAAK,CAAC;AAChD,YAAA,MAAM,IAAI,aAAa,CAAC,CAAA,oBAAA,EAAwB,KAAe,CAAC,OAAO,CAAA,CAAE,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;SACxG;KACF;AACF;;AC3ED;;;;;AAKG;AAUH;AACA;AACA;MAEa,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;QACU,IAAO,CAAA,OAAA,GAAmB,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,KAAK,GAAkC,IAAI,GAAG,EAAE,CAAC;KAqE1D;;IAlEC,QAAQ,CAAC,MAAoB,EAAE,EAAY,EAAA;;AAEzC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,CACpC,CAAC;AACF,QAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;SAC7C;;AAED,QAAA,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KACpB;;AAGD,IAAA,UAAU,CAAC,UAAkB,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AACjE,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC7B;KACF;;IAGD,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;KAC1B;;IAGD,EAAE,CAAC,IAAc,EAAE,QAAsB,EAAA;AACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7C,QAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACjC;;IAGD,GAAG,CAAC,IAAc,EAAE,QAAsB,EAAA;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,SAAS,EAAE;YACb,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,GAAG,KAAK,CAAC,CAAC;AAAE,gBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC1C;KACF;;AAGD,IAAA,MAAM,OAAO,CAAC,IAAc,EAAE,GAAG,IAAe,EAAA;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,SAAS,EAAE;AACb,YAAA,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;AAC1B,gBAAA,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;aACnB;SACF;KACF;;IAGD,OAAO,GAAA;AACL,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACjC,YAAA,IAAI;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;;gBAElC,OAAO,CAAC,IAAI,CAAC,CAA2B,wBAAA,EAAA,MAAM,CAAC,IAAI,CAAkB,gBAAA,CAAA,EAAE,CAAC,CAAC,CAAC;aAC3E;SACF;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;KACpB;AACF;;AC1FD;;;;;AAKG;AAkBH;AACA;AACA;MAEa,YAAY,CAAA;AAIvB;;;;AAIG;AACH,IAAA,aAAa,MAAM,CAAC,MAAsB,EAAA;AACxC,QAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AAChB,QAAA,OAAO,EAAE,CAAC;KACX;;IAUD,IAAI,OAAO,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;AAY/C,IAAA,IAAI,eAAe,GAAA,EAAa,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,EAAE;;AAG1E,IAAA,IAAI,KAAK,GAAA,EAAc,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE;AAK3D,IAAA,WAAA,CAAY,MAAsB,EAAA;QAb1B,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAEd,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,GAAG,EAAE,CAAC;;QAS3C,IAAO,CAAA,OAAA,GAA4B,IAAI,CAAC;;AAkWxC,QAAA,IAAA,CAAA,SAAS,GAA8C,IAAI,GAAG,EAAE,CAAC;;AAgGjE,QAAA,IAAA,CAAA,UAAU,GAAqD,IAAI,GAAG,EAAE,CAAC;AA/b/E,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;AACtD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;;QAGzC,IAAI,MAAM,CAAC,YAAY,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;AAClE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,CAAiB,cAAA,EAAA,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;AACjC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAgD,CAAC;AACnE,gBAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAO;gBAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;;AAEzE,gBAAA,IAAI,IAAI,CAAC,MAAM,YAAY,YAAY,EAAE;oBACtC,IAAI,CAAC,MAAuB,CAAC,oBAAoB,EAAE,CAAC,KAAK,CAAC,MAAK;;AAEhE,qBAAC,CAAC,CAAC;iBACJ;AACH,aAAC,CAAC;SACH;KACF;;;AAKD,IAAA,MAAM,IAAI,GAAA;;AAER,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;;AAGlC,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;;QAIhD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AAC7C,YAAA,IAAI;gBACF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBACvE,IAAI,gBAAgB,IAAI,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;oBAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;iBAC/E;aACF;AAAC,YAAA,MAAM,+BAA+B;SACxC;;AAGD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAG9D,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACxC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;aAC3C;SACF;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;AAGlB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC3B;KACF;;IAGD,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;;AAKD,IAAA,MAAM,WAAW,CAAC,IAAY,EAAE,OAAkC,EAAA;QAChE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAE3C,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;SAC9D;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;AAC9B,YAAA,MAAM,KAAK,CAAC;SACb;;AAGD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC9B;;AAGD,IAAA,KAAK,CAAC,IAAY,EAAA;QAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,EAAE;;;YAGN,CAAC,GAAG,IAAI,KAAK,CACX,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,IAAI,CAAC,QAAQ,EACb,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAC9C,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAC1D,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SAC9B;AACD,QAAA,OAAO,CAAC,CAAC;KACV;;IAGD,MAAM,SAAS,CAAC,IAAY,EAAA;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;SAC1D;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;AAC9B,YAAA,MAAM,KAAK,CAAC;SACb;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC9B;;AAGD,IAAA,MAAM,aAAa,GAAA;QACjB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;KACpC;;AAID;;;;AAIG;AACH,IAAA,MAAM,KAAK,CAAC,GAAW,EAAE,MAAkB,EAAA;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAE9C,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AAErD,QAAA,IAAI,MAAe,CAAC;AACpB,QAAA,IAAI;;YAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;;AAE7C,YAAA,MAAM,UAAU,GAAgB,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnD,YAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;;gBAE7B,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACjD,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;;gBAExD,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC7C,gBAAA,IAAI,KAAK;AAAE,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aACxC;SACF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;AAC9B,YAAA,MAAM,KAAK,CAAC;SACb;AAED,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAE5D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AACvC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAI,MAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,OAAO,CAAA,IAAA,EAAO,IAAI,CAAU,OAAA,EAAA,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;SACxE;AAED,QAAA,OAAO,MAAM,CAAC;KACf;;AAID;;;;;;;;;;;;;AAaG;AACH,IAAA,MAAM,WAAW,CACf,GAAW,EACX,KAAuB,EAAA;QAEvB,IAAI,CAAC,WAAW,EAAE,CAAC;;;;AAInB,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,MAAM,IAAI,aAAa,CAAC,mDAAmD,EAAE,aAAa,CAAC,CAAC;SAC7F;AACD,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnC,YAAA,MAAM,IAAI,aAAa,CAAC,6CAA6C,EAAE,eAAe,CAAC,CAAC;SACzF;QACD,MAAM,MAAM,GAAG,IAA6C,CAAC;;QAG7D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;AAKpF,QAAA,MAAM,WAAW,GAAG,CAAC,KAAuD,KAAa;AACvF,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,KAAK,CAAC;AACzB,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC1C,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;AAC/B,oBAAA,IAAK,CAA4C,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC;AAAE,wBAAA,OAAO,IAAI,CAAC;oBAC/F,SAAS;iBACV;AACD,gBAAA,IAAI,CAAC,KAAK,MAAM,EAAE;oBAChB,IAAI,WAAW,CAAC,CAAyC,CAAC;AAAE,wBAAA,OAAO,IAAI,CAAC;oBACxE,SAAS;iBACV;gBACD,IAAI,CAAC,KAAK,SAAS;AAAE,oBAAA,OAAO,IAAI,CAAC;gBACjC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;AACvC,oBAAA,KAAK,MAAM,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,EAAE;wBACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;4BACnD,MAAM,GAAG,GAAG,OAAkC,CAAC;AAC/C,4BAAA,IAAI,WAAW,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;AAAE,gCAAA,OAAO,IAAI,CAAC;yBACtD;qBACF;iBACF;aACF;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpF,eAAA,CAAC,SAAS,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,eAAA,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAI,UAAU,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;;YAE9D,MAAM,OAAO,GAAI,KAA6C,CAAC,WAAW,EAAE,IAAI,KAAK,eAAe,CAAC;YACrG,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;oBACzC,KAAK,EAAE,MAAM,CAAC,IAAI;oBAClB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC;oBACzE,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,SAAS;oBACjE,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,EAAE,KAA+C,CAAC,CAAC;aACrD;SACF;;QAGD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,KAAK,MAAM,GAAG,IAAI,MAAa,EAAE;AAC/B,gBAAA,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;aAClB;YACD,OAAO,MAAM,CAAC,MAAM,CAAC;SACtB;AACD,QAAA,OAAO,CAAC,CAAC;KACV;;AAGO,IAAA,uBAAuB,CAAC,MAA6C,EAAA;AAC3E,QAAA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC9D,QAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAY;AACpC,YAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACvB,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,CAAG,EAAA,CAAC,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC7D;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC;AACF,QAAA,MAAM,IAAI,GAAG,CAAC,CAAuC,KAA0C;YAC7F,MAAM,GAAG,GAAyC,EAAE,CAAC;AACrD,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACtC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;oBAC/B,GAAG,CAAC,CAAC,CAAC,GAAI,CAA4C,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAClE;AAAM,qBAAA,IAAI,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;AAC9D,oBAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAyC,CAAC,CAAC;iBAC5D;qBAAM;oBACL,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;iBACnB;aACF;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KACjC;;;IAKD,MAAM,WAAW,CAAI,EAAkE,EAAA;QACrF,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACtD,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACrD,YAAA,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;AAC9B,YAAA,MAAM,KAAK,CAAC;SACb;KACF;;;IAKD,MAAM,WAAW,CAAC,SAAiB,EAAA;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;KAC1D;;AAGD,IAAA,MAAM,WAAW,CAAC,SAAiB,EAAE,IAA+B,EAAA;QAClE,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAClD;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,CAAC;AAC9B,YAAA,MAAM,KAAK,CAAC;SACb;KACF;;AAGD,IAAA,MAAM,SAAS,GAAA;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,MAAM,GAA8C,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAChD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9D;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED;;;AAGG;AACH,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAC7B;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;KACzB;;IAOD,SAAS,CAAC,SAAiB,EAAE,QAA0E,EAAA;AACrG,QAAA,MAAM,GAAG,GAAG,CAAU,OAAA,EAAA,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,QAAmC,CAAC,CAAC;AAClE,QAAA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAmC,CAAC,CAAC;KACnF;;IAGD,IAAI,CAAC,SAAiB,EAAE,KAAsD,EAAA;AAC5E,QAAA,MAAM,GAAG,GAAG,CAAU,OAAA,EAAA,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;KACrD;;;AAKD,IAAA,eAAe,CAAC,SAAiB,EAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;AAC1B,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;SAChE;AAAC,QAAA,MAAM;;SAEP;KACF;;AAGO,IAAA,mBAAmB,CAAC,IAAe,EAAA;AACzC,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC;AACjC,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,cAAc,CAAC;AACpB,YAAA,KAAK,YAAY,CAAC;AAClB,YAAA,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,YAAA,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC;AACrC,YAAA,KAAK,cAAc,CAAC;AACpB,YAAA,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC;SACf;KACF;AAED;;;;AAIG;AACK,IAAA,MAAM,qBAAqB,CAAC,IAAe,EAAE,KAAyB,EAAE,MAAgB,EAAA;AAC9F,QAAA,QAAQ,IAAI,CAAC,IAAI;YACf,KAAK,QAAQ,EAAE;;;AAGb,gBAAA,IAAI,IAAI,GAAa,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AACxC,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,oBAAA,IAAI;AACF,wBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,wBAAA,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;qBAClD;AAAC,oBAAA,MAAM;wBACN,IAAI,GAAG,EAAE,CAAC;qBACX;iBACF;AACD,gBAAA,MAAM,IAAI,GAA8B,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAe,KAAI;oBAClF,MAAM,GAAG,GAA4B,EAAE,CAAC;AACxC,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,wBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;qBACrC;AACD,oBAAA,OAAO,GAAG,CAAC;AACb,iBAAC,CAAC,CAAC;gBACH,IAAI,KAAK,KAAK,QAAQ;oBAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;;AAC1E,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,MAAkB,CAAC,CAAC;gBAC/E,MAAM;aACP;YACD,KAAK,QAAQ,EAAE;AACb,gBAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvD,IAAI,KAAK,KAAK,QAAQ;AAAE,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;AACtF,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAgB,CAAC,CAAC;gBACzF,MAAM;aACP;YACD,KAAK,QAAQ,EAAE;AACb,gBAAA,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtD,IAAI,KAAK,KAAK,QAAQ;oBAAE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;;AAC3E,oBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,MAAgB,CAAC,CAAC;gBAC9E,MAAM;aACP;SAGF;KACF;;IAOD,YAAY,CAAC,OAAe,EAAE,EAAuC,EAAA;QACnE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;KAClC;;IAGD,MAAM,SAAS,CAAC,aAAqB,EAAA;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACtF,IAAI,OAAO,IAAI,aAAa,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AACvD,gBAAA,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;AACf,gBAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;aACzB;SACF;;;QAGD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AAC7C,YAAA,IAAI;AACF,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;aACtE;AAAC,YAAA,MAAM,sBAAsB;SAC/B;KACF;;AAID;;;AAGG;AACH,IAAA,MAAM,MAAM,GAAA;QACV,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AAC5C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO;SACR;;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;AAED;;;AAGG;AACH,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC9C,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;SAC9B;aAAM;YACL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAChD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACnC;SACF;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;;;IAKD,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;IAGD,EAAE,CAAC,IAAoC,EAAE,QAA+C,EAAA;QACtF,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACvC;;;AAKD,IAAA,MAAM,KAAK,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;;AAE7B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;SAC3B;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;;IAGD,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;IAIO,YAAY,GAAA;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC;QAEpD,QAAQ,IAAI;AACV,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,YAAY,EAAE,CAAC;AAC5B,YAAA,KAAK,MAAM;;gBAET,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,YAAA,KAAK,MAAM;;;gBAGT,OAAO,IAAI,UAAU,CAAC;oBACpB,cAAc,EAAE,UAAU,KAAK,QAAQ,GAAG,QAAQ,GAAG,UAAU,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM;oBACxF,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAC5B,iBAAA,CAAC,CAAC;AACL,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;AACtC,YAAA;gBACE,MAAM,IAAI,aAAa,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAE,CAAA,EAAE,cAAc,CAAC,CAAC;SAC5E;KACF;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,aAAa,CAAC,uDAAuD,EAAE,cAAc,CAAC,CAAC;SAClG;KACF;;AAGO,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAAE;AAAC,YAAA,MAAM,uBAAuB;SAClE;KACF;;AAGO,IAAA,MAAM,CAAC,GAAW,EAAE,GAAG,IAAe,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEd,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,EAAE,GAAG,IAAI,CAAC,CAAC;SAC9D;KACF;AACF;;ACjpBD;;;;;;AAMG;AAKH;AACA;AACA;AAEA,MAAM,iBAAiB,CAAA;AAAvB,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;;AAG9C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;KAwF9C;AAtFC;;;;;;;;;;;;AAYG;IACH,MAAM,OAAO,CAAC,MAAsB,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;;QAGzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;AAClC,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,YAAA,OAAO,QAAQ,CAAC;SACjB;;AAGD,QAAA,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAEhB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;AAG1B,QAAA,EAAyD,CAAC,UAAU,GAAG,YAAW;AACjF,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAC,CAAC;AAEF,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;AAEG;IACH,MAAM,OAAO,CAAC,MAAc,EAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,EAAE,EAAE;AACN,gBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAClC;KACF;AAED;;AAEG;IACH,MAAM,UAAU,CAAC,MAAc,EAAA;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,EAAE,EAAE;AACN,YAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACjC;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,MAAM,QAAQ,GAAA;QACZ,KAAK,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;AACrC,YAAA,IAAI;AAAE,gBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;aAAE;AAAC,YAAA,MAAM,gBAAgB;SACjD;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACvB;AAED;;AAEG;IACH,oBAAoB,GAAA;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;KAC5C;AAEF,CAAA;AAED;AACA;AACA;AAEA,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAExC;AACA,MAAM,CAAC,GAAG,YAAkD,CAAC;AAC7D,CAAC,CAAC,OAAO,GAAG,CAAC,MAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC,CAAC,UAAU,GAAG,CAAC,MAAc,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC,CAAC,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC3C,CAAC,CAAC,oBAAoB,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE;;ACzH7D;;;;;;;AAOG;AASH;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AACH,eAAe,MAAM,CAAC,MAAsB,EAAA;;AAE1C,IAAA,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;AACA;AACA;AAEA,MAAM,GAAG,GAAG;IACV,OAAO;AACP,IAAA,OAAO,EAAE,OAAO;IAChB,MAAM;IACN,YAAY;AACZ,IAAA,QAAQ,EAAE,YAAY;EACtB;AAIF,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,IAAA,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1B,IAAA,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;AACxB,CAAC;AAUD;AACO,MAAM,QAAQ,GAAG;;;;"} \ No newline at end of file +{"version":3,"file":"metona-sqlark.esm.js","sources":["../src/constants.ts","../src/engine/change-notifier.ts","../src/engine/interface.ts","../src/query/sql-compare.ts","../src/query/where-matcher.ts","../src/table/validation.ts","../src/table/schema.ts","../src/engine/memory.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/kvstore/shared_memory_medium.ts","../src/engine/aria/crc32.ts","../src/engine/kvstore/log.ts","../src/engine/kvstore/snapshot.ts","../src/engine/kvstore/index.ts","../src/engine/kvstore_engine.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/kvstore_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/sql/params.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":"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"} \ No newline at end of file diff --git a/dist/metona-sqlark.js b/dist/metona-sqlark.js index 2114bce..d473c47 100644 --- a/dist/metona-sqlark.js +++ b/dist/metona-sqlark.js @@ -39,11 +39,609 @@ const VERSION = '0.8.0'; /** - * metona-sqlark Shared WHERE Matcher — 统一的条件匹配逻辑 + * metona-sqlark Engine Change Notifier(v0.8.0) + * @module engine/change-notifier + * + * ============================================================================ + * 为什么需要它(PLAN-v0.7.5.md A9) + * ============================================================================ + * `db.subscribe(table, fn)` 此前对**本地写入永不触发**:全库只有一处调用 `emit`, + * 而那一处在 BroadcastChannel 收到**其它标签页**消息时才执行。于是: + * - README:232「订阅表变更」、site/docs.html:667-679 的示例 + * (`event.type: 'insert' | 'update' | 'delete'`、`event.row`)全部不成立; + * - 唯一的实际触发条件是 `multiTabSync: true` 且收到 `external` 事件。 + * + * 更麻烦的是原因:写入路径有**三条**(SQL 语句、Table API、QueryBuilder),各自 + * 只调用 `broadcastChange(tableName)`,谁都不知道"改了哪些行"。所以此前即便想接线, + * 也要在三处分别实现一遍变更描述逻辑 —— 那正是本项目反复出问题的模式 + * (同一语义多份实现 → 漂移)。 + * + * ============================================================================ + * 本实现的做法 + * ============================================================================ + * 用一个 `IStorageEngine` **装饰器**把变更通知收敛到唯一位置:所有写入都必须经过 + * 引擎接口,因此在这里拦截一次即可覆盖全部入口(SQL / Table / Builder / 事务内)。 + * + * 事件语义(对文档承诺的兑现): + * - INSERT:逐行一个事件,携带该行(`row` 与主键 `key`); + * - UPDATE:先按 WHERE 查出**将被修改的行**(快照),写入成功后逐行发事件并 + * 携带**更新后的行**;查不到(例如 WHERE 无法在写入前求值)时退化为表级事件, + * 只带 `count`; + * - DELETE:同理,逐行发事件并携带**被删除前的行**; + * - CLEAR / DDL:表级事件(`count` 可选)。 + * + * 订阅方回调返回 Promise 时会被 await(保证"写完通知完"的顺序), + * 但**订阅方的异常不会影响写入结果** —— 写入已经成功,通知失败只上报 onError。 + */ + /** + * 变更通知引擎装饰器。 + * + * 只读方法(find/count/findStream/getTableSchema/...)直接透传; + * 写入方法在成功后产生事件并同步派发给监听者。 + */ + class ChangeNotifierEngine { + constructor(inner, onListenerError = () => { }, onBroadcast = () => { }) { + this.listeners = new Set(); + this.inner = inner; + this.onListenerError = onListenerError; + this.onBroadcast = onBroadcast; + } + /** 暴露内层引擎(需要能力探测或特化逻辑时使用) */ + getInner() { + return this.inner; + } + /** 注册变更监听(返回退订函数) */ + addListener(listener) { + this.listeners.add(listener); + return () => this.listeners.delete(listener); + } + /** 派发事件(供外部事件如跨标签页 `external` 复用同一通道) */ + async dispatch(event) { + // 跨标签页广播与本地订阅走同一出口,保证"写入即通知"只有一条路径 + try { + this.onBroadcast(event.table); + } + catch { + // 广播失败不影响本地通知与写入结果 + } + for (const listener of [...this.listeners]) { + try { + await listener(event); + } + catch (error) { + // 订阅者异常不得影响写入结果(写入已成功),只上报 + this.onListenerError(error); + } + } + } + // ------------------------------------------------------------------------- + // 写入路径:产生事件 + // ------------------------------------------------------------------------- + async insert(tableName, rows) { + const pks = await this.inner.insert(tableName, rows); + // 逐行事件;用引擎返回的主键对齐(resolved 行带 default 值,恢复时可对照) + for (let i = 0; i < pks.length; i++) { + await this.dispatch({ + type: 'insert', + table: tableName, + key: pks[i], + row: i < rows.length ? rows[i] : undefined, + count: 1, + }); + } + return pks; + } + async update(tableName, query, updates) { + // 写入前快照将被影响的行(用于提供 row 内容)。失败不阻塞写入 —— 快照只是尽力而为。 + const affected = await this.snapshotAffected(tableName, query); + const count = await this.inner.update(tableName, query, updates); + if (count > 0 && affected.length > 0) { + for (const before of affected) { + const after = { ...before, ...stripUndefined(updates) }; + await this.dispatch({ + type: 'update', + table: tableName, + row: after, + count: 1, + }); + } + } + else if (count > 0) { + await this.dispatch({ type: 'update', table: tableName, count }); + } + return count; + } + async delete(tableName, query) { + const affected = await this.snapshotAffected(tableName, query); + const count = await this.inner.delete(tableName, query); + if (count > 0 && affected.length > 0) { + for (const before of affected) { + await this.dispatch({ type: 'delete', table: tableName, row: before, count: 1 }); + } + } + else if (count > 0) { + await this.dispatch({ type: 'delete', table: tableName, count }); + } + return count; + } + async clear(tableName) { + await this.inner.clear(tableName); + await this.dispatch({ type: 'clear', table: tableName }); + } + async createTable(schema) { + await this.inner.createTable(schema); + await this.dispatch({ type: 'ddl', table: schema.name }); + } + async dropTable(tableName) { + await this.inner.dropTable(tableName); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async alterTable(tableName, action, column) { + await this.requireCapability('alterTable')(tableName, action, column); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async createIndex(tableName, column, unique) { + await this.requireCapability('createIndex')(tableName, column, unique); + await this.dispatch({ type: 'ddl', table: tableName }); + } + async dropIndex(tableName, column, indexName) { + await this.requireCapability('dropIndex')(tableName, column, indexName); + await this.dispatch({ type: 'ddl', table: tableName }); + } + // ------------------------------------------------------------------------- + // 只读路径:透传 + // ------------------------------------------------------------------------- + get name() { return this.inner.name; } + open(dbName, version) { return this.inner.open(dbName, version); } + close() { return this.inner.close(); } + isOpen() { return this.inner.isOpen(); } + hasTable(tableName) { return this.inner.hasTable(tableName); } + getTableNames() { return this.inner.getTableNames(); } + getTableSchema(tableName) { + return this.inner.getTableSchema(tableName); + } + find(tableName, query) { + return this.inner.find(tableName, query); + } + count(tableName, query) { + return this.inner.count(tableName, query); + } + async findStream(tableName, query, onRow) { + return this.requireCapability('findStream')(tableName, query, onRow); + } + // ---- 事务:透传(事务内的写入由底层引擎统一处理,事件在语句层产生) ---- + beginTransaction() { return this.inner.beginTransaction(); } + commitTransaction() { return this.inner.commitTransaction(); } + rollbackTransaction() { return this.inner.rollbackTransaction(); } + savepoint(name) { + return this.requireCapability('savepoint')(name); + } + rollbackToSavepoint(name) { + return this.requireCapability('rollbackToSavepoint')(name); + } + releaseSavepoint(name) { + return this.requireCapability('releaseSavepoint')(name); + } + backup() { + return this.requireCapability('backup')(); + } + repair() { + return this.requireCapability('repair')(); + } + clearAll() { + return this.requireCapability('clearAll')(); + } + // ---- 维护能力(可选,AriaEngine 专有;只读/维护语义,不产生变更事件) ---- + /** + * v0.8.0:转发引擎专有的维护方法。 + * + * 为什么必须显式转发:executor 用 `typeof engine.analyzeTable === 'function'` + * 做能力探测。装饰器只实现 `IStorageEngine` 声明的成员,于是这些"接口外方法" + * 在被包装后会**静默消失** → ANALYZE/REINDEX 报 NOT_SUPPORTED(实测 3 个用例失败)。 + * 这正是审计指出的"用 typeof/instanceof 做能力探测"的脆弱之处; + * 在装饰器里显式补齐是当前最直接的修法。 + */ + analyzeTable(tableName) { + return this.requireOptionalMethod('analyzeTable')(tableName); + } + reindexTable(tableName) { + return this.requireOptionalMethod('reindexTable')(tableName); + } + vacuum() { + return this.requireOptionalMethod('vacuum')(); + } + getMeta(key) { + const method = this.inner.getMeta; + if (typeof method !== 'function') + return Promise.resolve(null); + return method.call(this.inner, key); + } + setMeta(key, value) { + const method = this.inner.setMeta; + if (typeof method !== 'function') + return Promise.resolve(); + return method.call(this.inner, key, value); + } + // ------------------------------------------------------------------------- + /** + * v0.8.0: 取一个**可选能力**方法;内层未实现时抛 `NOT_SUPPORTED`。 + * + * 为什么不能直接抛普通 Error:项目对"能力缺失"有明确契约 —— + * `NOT_SUPPORTED` 错误码(README「维护语句」、executor 的 savepoint/backup + * 分支、以及既有测试都依赖它)。装饰器如果抛原生 Error,调用方按 code 分类 + * 就会失效(实测让 6 个套件里的 14 个用例失败)。 + */ + requireCapability(name) { + const method = this.inner[name]; + if (typeof method !== 'function') { + return (() => { + throw new DatabaseError(`Engine "${this.inner.name}" does not support ${String(name)}`, 'NOT_SUPPORTED'); + }); + } + return method.bind(this.inner); + } + /** + * v0.8.0: 取**接口之外**的可选方法(如 AriaEngine.analyzeTable / reindexTable / vacuum)。 + * + * 与 requireCapability 的区别:这些方法不在 IStorageEngine 契约里,属于引擎专有能力, + * 但 executor 会用 `typeof engine.x === 'function'` 探测它们。装饰器必须显式转发, + * 否则能力在被包装后静默消失(实测 ANALYZE/REINDEX 报 NOT_SUPPORTED)。 + */ + requireOptionalMethod(name) { + const method = this.inner[name]; + if (typeof method !== 'function') { + return () => { + throw new DatabaseError(`Engine "${this.inner.name}" does not support ${name}`, 'NOT_SUPPORTED'); + }; + } + return method.bind(this.inner); + } + /** + * 尽力而为地取"将被影响的行"快照。 + * + * 用途:让 UPDATE/DELETE 事件能携带行内容(文档承诺 `event.row`)。 + * 失败时返回空数组 —— 事件退化为表级通知(只带 count),**不影响写入本身**。 + */ + async snapshotAffected(tableName, query) { + try { + return await this.inner.find(tableName, { table: tableName, where: query.where }); + } + catch { + return []; + } + } + } + /** 与引擎/executor 一致的 undefined 语义:不更新该列 */ + function stripUndefined(updates) { + const out = {}; + for (const [k, v] of Object.entries(updates)) { + if (v !== undefined) + out[k] = v; + } + return out; + } + + /** + * metona-sqlark Engine Interface — 存储引擎抽象接口 + * @module engine/interface + */ + // --------------------------------------------------------------------------- + // v0.8.0: 行所有权(row ownership)约定 + // --------------------------------------------------------------------------- + /** + * 深拷贝一行,使调用方**无法通过修改返回值改写存储**。 + * + * 为什么必须做(审计实测):Memory/KVStore/Hybrid 三个引擎此前把内部行对象 + * **直接**交给调用方: + * const rows = await db.query('SELECT * FROM t'); + * rows[0].tag = 'HACKED'; // 存储被改写 + * 再查 WHERE tag='HACKED' → 0 行;WHERE tag='x' → 0 行 + * 即调用方一次无意的原地修改就能让索引与行失配、该行永久查不出来(Aria 因为是 + * 反序列化路径反而幸免,于是又成了跨引擎行为差异)。 + * + * 约定(写入 interface 文档,所有引擎必须遵守): + * **读出的行是副本,写入接收的行也是副本** —— 引擎不得把内部行对象暴露给外部, + * 也不得持有调用方传入的行对象引用。 + * + * 实现说明:结构化克隆可用时优先使用(正确处理 Date/嵌套对象/循环引用); + * 存储层写入的行已经过 validateRow 的 JSON 安全性检查,因此退化路径也是安全的。 + */ + function cloneRow(row) { + if (row === null || typeof row !== 'object') + return row; + if (typeof structuredClone === 'function') { + try { + return structuredClone(row); + } + catch { + // 含不可克隆值(函数/Proxy)时退化为逐层复制 + } + } + return cloneRowFallback(row); + } + /** 退化实现:递归复制普通对象与数组(保留 Date) */ + function cloneRowFallback(value) { + if (value === null || typeof value !== 'object') + return value; + if (value instanceof Date) + return new Date(value.getTime()); + if (Array.isArray(value)) + return value.map((v) => cloneRowFallback(v)); + if (value instanceof Uint8Array) + return new Uint8Array(value); + if (value instanceof ArrayBuffer) + return value.slice(0); + const out = {}; + for (const [k, v] of Object.entries(value)) { + out[k] = cloneRowFallback(v); + } + return out; + } + + /** + * metona-sqlark SQL 值语义 — 三值逻辑与统一编码(v0.8.0) + * @module query/sql-compare + * + * ============================================================================ + * 为什么需要它(PLAN-v0.7.5.md 根因 2 / PB-2) + * ============================================================================ + * 此前项目里并存**五套**值相等语义: + * 1. `where-matcher` 的 `===` + * 2. 哈希连接的 `String(v ?? '\0')` + * 3. 分组键 `encodeGroupKey` + * 4. `COUNT(DISTINCT)` 的 `String(v)` + * 5. Aria 二级索引键的 `String(v)` + * 它们对 NULL 的处理各不相同,于是出现一批"静默错值": + * - `WHERE a = NULL` 命中 NULL 行(SQL 标准应为空集,比较结果是 UNKNOWN); + * - `WHERE a != NULL` 返回所有非 NULL 行(标准同样为空集); + * - `WHERE a NOT BETWEEN 1 AND 2` 会把 NULL 行**排除**(标准应包含, + * 因为 UNKNOWN 经过 NOT 仍是 UNKNOWN,而 WHERE 只保留 TRUE……此处需按下文语义); + * - `WHERE a NOT IN (1, 2)` 把 NULL 行当作"不在列表"返回; + * - JOIN 的 NULL 键:嵌套循环认为 NULL = NULL 成立、哈希连接不成立 → + * **结果取决于右表有没有索引**。 + * + * ============================================================================ + * 本模块提供的语义 + * ============================================================================ + * `sqlCompare(a, b)` / `sqlEquals(a, b)` 返回三值:TRUE / FALSE / UNKNOWN。 + * 任一操作数为 NULL/undefined → UNKNOWN(SQL 标准)。 + * `matchWhere` 只在结果为 TRUE 时保留该行。 + * + * 注意 `IS NULL` / `IS NOT NULL` **不走比较**:它们是谓词,直接对 NULL 求值, + * 由 parser 生成为独立的 `$isNull` / `$isNotNull` 标记(见 SQL_LOGICAL 说明)。 + */ + /** SQL 三值逻辑 */ + const SQL_LOGICAL = Object.freeze({ + TRUE: 'TRUE', + FALSE: 'FALSE', + /** 未知(任一操作数为 NULL,或存在无法确定的引用) */ + UNKNOWN: 'UNKNOWN', + }); + /** 是否为 NULL 语义值(undefined 与 null 等价为 SQL NULL) */ + function isSqlNull(value) { + return value === null || value === undefined; + } + /** + * 未解析的列引用标记。 + * + * 用于区分两件必须分开处理的事: + * - `row[col]` 取到 `undefined` 可能是"该行此列为 NULL", + * 也可能是"这一列根本不在当前行里"(例如子查询引用了外层列)。 + * 前者应判 UNKNOWN,后者应让调用方转交带上下文的求值器(不能静默当 NULL)。 + * 用 Unique Symbol 保证不会与真实数据冲突。 + */ + const UNRESOLVED = Symbol('sqlark.unresolved'); + /** 判定某值是否为"未解析引用" */ + function isUnresolved(value) { + return value === UNRESOLVED; + } + /** + * 统一的类型化值编码(用于分组键 / DISTINCT 键 / 索引键)。 + * + * 为什么不能直接 `String(v)`: + * - `String(null)` = `'null'` 与字符串 `'null'` 冲突; + * - `String(1)` = `'1'` 与字符串 `'1'` 冲突(v0.7.4 已修 DISTINCT, + * 但 COUNT(DISTINCT) 与 Aria 索引键仍是 `String()`)。 + * 这里用类型前缀 + 长度前缀,保证不同类型、不同值必然编码不同, + * 且不会出现 `\x1f` 之类分隔符被数据内容伪造的问题。 + */ + function encodeValueKey(value) { + if (value === null || value === undefined) + return 'z'; + const t = typeof value; + switch (t) { + case 'string': { + const s = value; + return `s${s.length}:${s}`; + } + case 'number': { + const n = value; + // -0 与 0 在 SQL 中相等;NaN 单独编码(避免与任何值相等) + if (Number.isNaN(n)) + return 'nNaN'; + return `n${Object.is(n, -0) ? 0 : n}`; + } + case 'boolean': return `b${value ? 1 : 0}`; + case 'bigint': return `i${String(value)}`; + case 'object': { + // 日期按时间戳比较;数组/对象按 JSON(键序由 JSON.stringify 决定, + // 对同构数据稳定;异构键序在上层已由 schema 约束) + if (value instanceof Date) + return `d${value.getTime()}`; + if (Array.isArray(value)) + return `a${JSON.stringify(value)}`; + return `o${JSON.stringify(value)}`; + } + default: return `x${String(value)}`; + } + } + /** + * SQL 比较:返回三值。 + * + * 与 JavaScript 运算符的关键差异: + * - 任一操作数为 NULL → UNKNOWN(而不是 false); + * - 非数值字符串与数值比较 → UNKNOWN(而不是 JS 的强制转换结果); + * - 未解析引用 → UNKNOWN(调用方据此转交上下文求值)。 + */ + function sqlCompare(a, b) { + const ord = sqlCompareOrder(a, b); + if (ord === null) + return SQL_LOGICAL.UNKNOWN; + return ord === 0 ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + } + /** 相等比较(三值) */ + function sqlEquals(a, b) { + return sqlCompare(a, b); + } + /** + * 三路排序比较:返回 -1 / 0 / 1,无法比较(含 NULL、类型不可比)返回 null。 + * + * **这是本模块唯一的排序/比较原语** —— `sqlCompare`(相等)与所有有序比较 + * ($gt/$gte/$lt/$lte、ORDER BY)都必须建立在它之上。 + * + * 为什么要把"排序"与"相等"分开:初版实现里 `sqlCompare` 直接返回三值, + * 于是"a < b"与"a === b"都被编码成 TRUE,`$gte` 误把"小于"当成"大于等于" + * (实测 `WHERE n >= 2` 在 1..3 上返回 3 而不是 2 与 3)。 + * 排序是三路的(<, =, >),相等是二值的(=, ≠)—— 把前者硬塞进后者必然出错。 + */ + function sqlCompareOrder(a, b) { + if (isUnresolved(a) || isUnresolved(b)) + return null; + if (isSqlNull(a) || isSqlNull(b)) + return null; + // 数字 vs 数字 + if (typeof a === 'number' && typeof b === 'number') { + if (Number.isNaN(a) || Number.isNaN(b)) + return null; + if (a === b) + return 0; + return a < b ? -1 : 1; + } + // 布尔 vs 布尔 + if (typeof a === 'boolean' && typeof b === 'boolean') { + if (a === b) + return 0; + return a === false ? -1 : 1; + } + // 字符串 vs 字符串:字典序 + if (typeof a === 'string' && typeof b === 'string') { + if (a === b) + return 0; + return a < b ? -1 : 1; + } + // 日期 vs 日期 + if (a instanceof Date && b instanceof Date) { + const ta = a.getTime(); + const tb = b.getTime(); + if (Number.isNaN(ta) || Number.isNaN(tb)) + return null; + if (ta === tb) + return 0; + return ta < tb ? -1 : 1; + } + // 类型不同:本项目保持严格类型(不做静默强转),判定为不可比(null) + // —— 这样 `WHERE numCol = 'abc'` 不会意外命中,也不会因 `'5' = 5` 的 JS + // 行为产生跨引擎差异。唯一例外:数值与"纯数值字符串"按数值比较 + // (与既有「$in 列表含字符串」行为兼容)。 + const na = toNumericIfPossible(a); + const nb = toNumericIfPossible(b); + if (na !== null && nb !== null) { + if (na === nb) + return 0; + return na < nb ? -1 : 1; + } + return null; + } + /** 三值 AND */ + function sqlAnd(a, b) { + if (a === SQL_LOGICAL.FALSE || b === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (a === SQL_LOGICAL.UNKNOWN || b === SQL_LOGICAL.UNKNOWN) + return SQL_LOGICAL.UNKNOWN; + return SQL_LOGICAL.TRUE; + } + /** 三值 OR */ + function sqlOr(a, b) { + if (a === SQL_LOGICAL.TRUE || b === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (a === SQL_LOGICAL.UNKNOWN || b === SQL_LOGICAL.UNKNOWN) + return SQL_LOGICAL.UNKNOWN; + return SQL_LOGICAL.FALSE; + } + /** 三值 NOT(UNKNOWN 取反仍为 UNKNOWN) */ + function sqlNot(a) { + if (a === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.FALSE; + if (a === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.TRUE; + return SQL_LOGICAL.UNKNOWN; + } + /** + * 把值转为数值;无法安全转换时返回 null。 + * 只有 number 与"纯数值字符串"参与数值比较,避免 `'abc'` 之类被 Number() 变成 NaN。 + */ + function toNumericIfPossible(value) { + if (typeof value === 'number') + return Number.isNaN(value) ? null : value; + if (typeof value === 'boolean') + return value ? 1 : 0; + if (typeof value === 'string') { + const trimmed = value.trim(); + if (trimmed === '') + return null; + const n = Number(trimmed); + return Number.isNaN(n) ? null : n; + } + return null; + } + /** + * SQL `IN` 列表求值(三值)。 + * + * 标准语义:`x IN (a, b, c)` 等价于 `x = a OR x = b OR x = c`。 + * 因此: + * - 命中任一 → TRUE; + * - 都未命中但列表含 NULL(或 x 为 NULL)→ UNKNOWN; + * - 都未命中且列表无 NULL 且 x 非 NULL → FALSE。 + */ + function sqlIn(value, list) { + if (isUnresolved(value)) + return SQL_LOGICAL.UNKNOWN; + let sawUnknown = false; + for (const item of list) { + const t = sqlEquals(value, item); + if (t === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (t === SQL_LOGICAL.UNKNOWN) + sawUnknown = true; + } + return sawUnknown ? SQL_LOGICAL.UNKNOWN : SQL_LOGICAL.FALSE; + } + + /** + * metona-sqlark Shared WHERE Matcher —— 统一的条件求值器 * @module query/where-matcher * - * MemoryEngine / IndexedDBEngine / QueryExecutor 共享此模块, - * 消除 220+ 行重复代码,统一 $and/$or/$not/$col 行为。 + * ============================================================================ + * v0.8.0 根治:为什么这里只剩**一个**递归求值器(PLAN-v0.7.5.md 根因 1/7、PB-2) + * ============================================================================ + * 历史上有两套并存的实现: + * - `matchWhere` —— 布尔版(自己的 `$and/$or/$not` 分支 + `matchField`); + * - 三值求值 —— 为 UNKNOWN 传播而新增。 + * 两者对**字段级** `$or` / `$not` 的处理不同,于是同一条 SQL 的语义取决于调用点: + * - `{ s: { $not: { $like: 'x' } } }` 经布尔取反会把 NULL 行判真; + * - `{ n: { $or: [...] } }`(`NOT BETWEEN` 生成)经布尔分支在 NULL 行上判假; + * - 更严重的是字段级 `$or` 递归回了"**where 子句级**"求值器: + * `{ n: { $or: [ { $lt: 1 }, { $gt: 2 } ] } }` 里的 `{ $lt: 1 }` 被当成 + * "查询字段 `$lt`",于是每一行都求值 UNKNOWN → `NOT BETWEEN` 恒空集。 + * + * 现在只有一条代码路径:**一个递归求值器**,同时理解 where 子句级(键是列名或 + * 逻辑连接词)与操作符级(键是 `$gt` 之类)。区别由**位置**参数承载, + * 而不是由另一个函数承载: + * - `evalWhere(ctx, where)` —— where 子句(`$and`/`$or` 子项是 where 子句) + * - `evalOperatorObject(ctx, ...)` —— 操作符对象(`$and`/`$or` 子项是操作符对象) + * 因此 `$or` 的两种含义都在同一个函数里显式分派,不可能再漂移。 + * + * `matchWhere` 保留为对外入口,语义定义为"是否保留该行" = 三值结果恰为 TRUE。 */ // --------------------------------------------------------------------------- // LIKE 正则缓存 @@ -62,146 +660,318 @@ return regex; } // --------------------------------------------------------------------------- - // WHERE 匹配(顶层入口) + // WHERE 匹配(对外入口) // --------------------------------------------------------------------------- + /** + * 匹配完整 WHERE 条件(布尔口径:仅 TRUE 保留该行)。 + * + * @param row 当前数据行 + * @param where WHERE 条件对象 + * @param options `$col` 是否启用列引用解析 + */ + function matchWhere(row, where, options = {}) { + return evalWhere({ row, options }, where) === SQL_LOGICAL.TRUE; + } /** * v0.7.4: 检测 WHERE 中未解析的子查询/列引用标记($subquery / $col / $exists)。 + * * QueryBuilder 等直通引擎的写路径(update/delete)不经 Executor 解析子查询, - * 引擎层 matchWhere 对未解析标记恒 false → 静默影响 0 行。 - * 写路径预检阶段显式拒绝;SELECT 路径由 Executor 解析(不调用本函数)。 + * 写路径预检阶段据此显式拒绝(否则这些标记在引擎层恒 UNKNOWN → 静默影响 0 行)。 */ function containsUnresolvedSubqueries(where) { if (!where) return false; for (const [k, v] of Object.entries(where)) { - if (k === '$and' || k === '$or') { - if (v.some((sub) => containsUnresolvedSubqueries(sub))) - return true; - continue; - } - if (k === '$not') { - if (containsUnresolvedSubqueries(v)) + if (isLogicalKey(k)) { + const subs = (Array.isArray(v) ? v : [v]); + if (subs.some((sub) => containsUnresolvedSubqueries(sub))) return true; continue; } if (k === '$exists') return true; - if (typeof v === 'object' && v !== null && !Array.isArray(v)) { - for (const [, operand] of Object.entries(v)) { - if (typeof operand === 'object' && operand !== null) { - const ops = operand; - if ('$subquery' in ops || '$col' in ops) - return true; - } - } - } + if (isPlainObject(v) && operatorObjectHasUnresolved(v)) + return true; } return false; } - /** - * 匹配完整 WHERE 条件 - * @param row 当前数据行 - * @param where WHERE 条件对象 - * @param options.$col 是否启用 $col 列引用解析 - */ - function matchWhere(row, where, options = {}) { - for (const [field, condition] of Object.entries(where)) { - // 顶层 $caseResult(v0.3.2):由 Executor 对 CASE WHEN 表达式逐行求值后产生 - if (field === '$caseResult') { - if (condition !== true) - return false; - continue; - } - // 顶层 $exists(v0.3.0):由 Executor.resolveSubqueries 解析为 boolean - if (field === '$exists') { - if (condition !== true) - return false; - continue; - } - // 顶层 $and - if (field === '$and') { - const subs = condition; - if (!subs.every((sub) => matchWhere(row, sub, options))) - return false; - continue; - } - // 顶层 $or - if (field === '$or') { - const subs = condition; - if (!subs.some((sub) => matchWhere(row, sub, options))) - return false; - continue; - } - // 顶层 $not(v0.3.2 修复:NOT (expr) 生成的 { $not: inner }) - if (field === '$not') { - if (matchWhere(row, condition, options)) - return false; - continue; - } - if (!matchField(row[field], condition, row, options)) - return false; - } - return true; - } - // --------------------------------------------------------------------------- - // 字段匹配 - // --------------------------------------------------------------------------- - function matchField(value, condition, row, options) { - // 嵌套 $and - if (typeof condition === 'object' && condition !== null && '$and' in condition) { - const subs = condition.$and; - return subs.every((sub) => matchWhere(row, sub, options)); - } - // 嵌套 $or - if (typeof condition === 'object' && condition !== null && '$or' in condition) { - const subs = condition.$or; - return subs.some((sub) => matchWhere(row, sub, options)); - } - // $not - if (typeof condition === 'object' && condition !== null && '$not' in condition) { - return !matchField(value, condition.$not, row, options); - } - // 简单值 => $eq - if (typeof condition !== 'object' || condition === null || Array.isArray(condition)) { - return value === condition; - } - const ops = condition; - // $col 简写: { $col: name } === { $eq: { $col: name } }(仅 JOIN ON 场景) - if (options.$col && '$col' in ops && Object.keys(ops).length === 1) { - return value === row[ops.$col]; - } - // 遍历操作符 + /** 递归检测操作符对象里是否存在未解析引用(含 `$and`/`$or`/`$not` 内部) */ + function operatorObjectHasUnresolved(ops) { for (const [op, operand] of Object.entries(ops)) { - let actualOperand = operand; - // $col 列引用解析 - if (options.$col && typeof operand === 'object' && operand !== null && '$col' in operand) { - actualOperand = row[operand.$col]; + if (op === '$and' || op === '$or') { + const subs = (Array.isArray(operand) ? operand : [operand]); + if (subs.some((sub) => isPlainObject(sub) && operatorObjectHasUnresolved(sub))) + return true; + continue; } - if (!matchOperator(value, op, actualOperand)) - return false; + if (op === '$not') { + if (isPlainObject(operand) && operatorObjectHasUnresolved(operand)) + return true; + continue; + } + if (op === '$subquery' || op === '$col') + return true; + if (isPlainObject(operand) && ('$subquery' in operand || '$col' in operand)) + return true; } - return true; + return false; } // --------------------------------------------------------------------------- - // 操作符匹配 + // 统一递归求值器 // --------------------------------------------------------------------------- - function matchOperator(value, op, operand) { + /** 逻辑连接词(where 子句级) */ + function isLogicalKey(key) { + return key === '$and' || key === '$or' || key === '$not'; + } + /** 纯对象(非 null、非数组) */ + function isPlainObject(value) { + return typeof value === 'object' && value !== null && !Array.isArray(value); + } + /** + * 求值一个 WHERE 子句(where 级)。 + * + * 顶层键要么是逻辑连接词,要么是列名: + * - `$and: [where...]` / `$or: [where...]` —— 子项是**完整 where 子句**; + * - `$not: where` —— 子项是完整 where 子句; + * - `$exists: boolean` —— 关联 EXISTS 解析结果标记; + * - `$caseResult` —— CASE WHEN 解析结果标记; + * - 其余键 = 列名,其值是**操作符对象**或裸值(裸值等价 `$eq`)。 + */ + function evalWhere(ctx, where) { + let acc = SQL_LOGICAL.TRUE; + for (const [key, condition] of Object.entries(where)) { + let one; + if (key === '$and') { + one = evalWhereLogical(ctx, condition, 'and'); + } + else if (key === '$or') { + one = evalWhereLogical(ctx, condition, 'or'); + } + else if (key === '$not') { + one = sqlNot(evalWhere(ctx, condition)); + } + else if (key === '$exists' || key === '$caseResult') { + one = condition === true ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + } + else { + one = evalValueCondition(ctx, resolveField(ctx, key), condition); + } + acc = sqlAnd(acc, one); + if (acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + } + return acc; + } + /** `$and` / `$or`(where 级):子项是完整 where 子句 */ + function evalWhereLogical(ctx, condition, kind) { + const subs = (Array.isArray(condition) ? condition : [condition]); + let acc = kind === 'and' ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + for (const sub of subs) { + const one = evalWhere(ctx, sub); + acc = kind === 'and' ? sqlAnd(acc, one) : sqlOr(acc, one); + // FALSE 在 AND 下、TRUE 在 OR 下都无法被后续子项改变 + if (kind === 'and' && acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (kind === 'or' && acc === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + } + return acc; + } + /** + * 取字段值。 + * + * 行里的键可能是 `t.id` 形式(JOIN / 子查询合并行),而 WHERE 键可能写作 + * `id`。既有行为是"精确命中优先,否则回退到唯一的后缀匹配";此处保持一致, + * 但**不再**像旧实现那样在多个别名同名字段间静默取第一个 —— 歧义由 Executor + * 的列解析阶段(`bindColumnRefs` / `assertProjectionColumnsExist`)负责报错。 + */ + function resolveField(ctx, field) { + if (field in ctx.row) + return ctx.row[field]; + let found = UNRESOLVED; + let hits = 0; + for (const key of Object.keys(ctx.row)) { + if (key.endsWith(`.${field}`)) { + found = ctx.row[key]; + hits += 1; + } + } + if (hits === 1) + return found; + if (hits > 1) + return UNRESOLVED; + return UNRESOLVED; + } + /** + * 求值"某个值是否满足条件"—— 字段条件与嵌套操作数条件共用的核心。 + * + * 位置无关性是本模块的关键:`{ $or: [ { $gt: 1 } ] }` 无论出现在字段位置 + * 还是顶层(历史单元测试的写法),子项都按**操作数条件**求值 —— 因为判别式 + * 相同:键以 `$` 开头且不是逻辑连接词,就是操作符;否则是列名。 + */ + function evalValueCondition(ctx, value, condition) { + if (!isPlainObject(condition)) { + // 裸值 = `$eq`;数组 = `$in` 列表(与既有 Mongo 风格 WHERE 兼容) + if (Array.isArray(condition)) + return sqlIn(value, condition); + return compareEquality(value, condition); + } + return evalOperatorObject(ctx, value, condition); + } + /** + * 求值一个操作符对象(`{ $gt: 1 }` / `{ $and: [...] }` / `{ $col: 'y' }` …)。 + * + * `$and` / `$or` 的每个子项按"操作数条件"递归 —— 这正是 `NOT BETWEEN` + * 生成的 `{ n: { $or: [ { $lt: 1 }, { $gt: 2 } ] } }` 能正确求值的原因。 + * 若子项实际是**完整 where 子句**(键是列名),则转交 `evalWhere`, + * 与当前行合并后求值(`$col` 上下文因此仍然有效)。 + */ + function evalOperatorObject(ctx, value, ops) { + // 纯列引用:{ $col: 'y' } = 与当前行的 y 列比较 + const keys = Object.keys(ops); + if (keys.length === 1 && keys[0] === '$col' && ctx.options.$col) { + return compareEquality(value, resolveField(ctx, String(ops.$col))); + } + let acc = SQL_LOGICAL.TRUE; + for (const [op, operand] of Object.entries(ops)) { + let one; + if (op === '$and') { + one = evalOperatorLogical(ctx, value, operand, 'and'); + } + else if (op === '$or') { + one = evalOperatorLogical(ctx, value, operand, 'or'); + } + else if (op === '$not') { + one = sqlNot(evalOperandSlot(ctx, value, operand)); + } + else { + one = evalOperator(ctx, value, op, operand); + } + acc = sqlAnd(acc, one); + if (acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + } + return acc; + } + /** `$and` / `$or`(操作符级):子项是操作数条件(操作符对象或裸值) */ + function evalOperatorLogical(ctx, value, condition, kind) { + const items = Array.isArray(condition) ? condition : [condition]; + let acc = kind === 'and' ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + for (const item of items) { + const one = evalOperandSlot(ctx, value, item); + acc = kind === 'and' ? sqlAnd(acc, one) : sqlOr(acc, one); + if (kind === 'and' && acc === SQL_LOGICAL.FALSE) + return SQL_LOGICAL.FALSE; + if (kind === 'or' && acc === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + } + return acc; + } + /** + * 单个嵌套子项(`$and`/`$or`/`$not` 的操作数)的求值。 + * + * 两种合法形态,按**键的形状**判别,不做猜测性兜底: + * - 含非 `$` 开头(或逻辑连接词)的键 → 完整 where 子句,交由 `evalWhere`; + * - 其余 → 操作符对象,交由 `evalOperatorObject`。 + * + * 注意 `$not` 的子项**不会**走到这里被判为 where 子句:`evalOperatorObject` + * 对 `$not` 直接调用本函数,而 `{ $gte: 1 }` 全部键以 `$` 开头 → 操作符对象 ✓。 + * 若调用方写成 `{ $not: { n: { $gte: 1 } } }`(字段级 `$not` 包了 where 子句), + * 则按 where 子句解释 —— 这正是 `evalNestedSlot` 的判别分支,语义为 + * "NOT (该行满足 n >= 1)",与顶层 `$not` 一致。 + */ + function evalOperandSlot(ctx, value, item) { + if (!isPlainObject(item)) + return evalValueCondition(ctx, value, item); + const isWhereClause = Object.keys(item).some((k) => !k.startsWith('$') || isLogicalKey(k) || k === '$exists' || k === '$caseResult'); + return isWhereClause ? evalWhere(ctx, item) : evalOperatorObject(ctx, value, item); + } + /** + * 操作符求值(三值语义)。 + * + * - 比较类操作数含 NULL → UNKNOWN(此前 `$eq: null` 命中 NULL 行、`$ne: null` + * 命中所有非 NULL 行,两者都不符合 SQL 标准); + * - `$in` / `$nin` 用 `sqlIn` 的列表语义(列表含 NULL → 未命中时为 UNKNOWN); + * - `$like` 对 NULL 操作数返回 UNKNOWN(`String(null)` 会得到 "null" 去匹配, + * 属于静默错值); + * - `$isNull` / `$isNotNull` 是**谓词**,直接对 NULL 求值,不走比较。 + */ + function evalOperator(ctx, value, op, operand) { + const actual = resolveOperand(ctx, operand); switch (op) { - case '$eq': return value === operand; - case '$ne': return value !== operand; - case '$gt': return value > operand; - case '$gte': return value >= operand; - case '$lt': return value < operand; - case '$lte': return value <= operand; - case '$in': return Array.isArray(operand) && operand.includes(value); - case '$nin': return Array.isArray(operand) && !operand.includes(value); - case '$like': return compileLikeRegex(String(operand)).test(String(value)); + case '$eq': return compareEquality(value, actual); + case '$ne': return sqlNot(compareEquality(value, actual)); + case '$gt': return compareOrdered(value, actual, (c) => c > 0); + case '$gte': return compareOrdered(value, actual, (c) => c >= 0); + case '$lt': return compareOrdered(value, actual, (c) => c < 0); + case '$lte': return compareOrdered(value, actual, (c) => c <= 0); + case '$in': return Array.isArray(actual) ? sqlIn(value, actual) : SQL_LOGICAL.FALSE; + case '$nin': return Array.isArray(actual) ? sqlNot(sqlIn(value, actual)) : SQL_LOGICAL.FALSE; + case '$like': { + if (isSqlNull(value) || isSqlNull(actual) || isUnresolved(value) || isUnresolved(actual)) { + return SQL_LOGICAL.UNKNOWN; + } + return compileLikeRegex(String(actual)).test(String(value)) + ? SQL_LOGICAL.TRUE + : SQL_LOGICAL.FALSE; + } + // 谓词(不参与三值比较) + case '$isNull': return isSqlNull(value) ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + case '$isNotNull': return isSqlNull(value) ? SQL_LOGICAL.FALSE : SQL_LOGICAL.TRUE; + // `$col` 出现在操作符位置但未启用列上下文 → 无法求值 + case '$col': return ctx.options.$col + ? compareEquality(value, resolveField(ctx, String(operand))) + : SQL_LOGICAL.UNKNOWN; + // `$subquery` 必须由 Executor 先行解析(`resolveSubqueries`)。 + // 走到这里说明调用方跳过了 Executor:返回 UNKNOWN 让该行被排除, + // 而不是静默当 NULL 比较。 + case '$subquery': return SQL_LOGICAL.UNKNOWN; // v0.7.2: 未知操作符显式报错 —— 此前静默返回 true(所有行匹配), // 拼错操作符(如 $betwen)时过滤形同虚设且无任何提示 default: throw new DatabaseError(`Unknown where operator "${op}"`, 'QUERY_ERROR'); } } + /** + * 解析操作数槽位中的引用标记。 + * + * - `{ $col: 'y' }` → 当前行的 y 列值(仅在 `options.$col` 启用时); + * - `{ $subquery: [...] }` → UNRESOLVED,交由上层识别为"未解析"。 + * + * 这两种形态都是**对象**,而非"恰好等于某个值",所以必须在这里显式解引用, + * 否则 `sqlCompare(5, { $col: 'y' })` 会按不可比返回 UNKNOWN —— 恰好也是 + * UNKNOWN,但那会掩盖"调用方忘了传 `$col`"这一真正的配置错误。 + */ + function resolveOperand(ctx, operand) { + if (!isPlainObject(operand)) + return operand; + const keys = Object.keys(operand); + if (keys.length !== 1) + return operand; + if (keys[0] === '$col') { + return ctx.options.$col ? resolveField(ctx, String(operand.$col)) : UNRESOLVED; + } + if (keys[0] === '$subquery') + return UNRESOLVED; + return operand; + } + /** 相等比较(三值) */ + function compareEquality(value, operand) { + const truth = sqlCompare(value, operand); + if (truth === SQL_LOGICAL.TRUE) + return SQL_LOGICAL.TRUE; + if (isSqlNull(value) || isSqlNull(operand) || isUnresolved(value) || isUnresolved(operand)) { + return SQL_LOGICAL.UNKNOWN; + } + return SQL_LOGICAL.FALSE; + } + /** 有序比较(三值):任一操作数 NULL/未解析/不可比 → UNKNOWN */ + function compareOrdered(value, operand, accept) { + const ord = sqlCompareOrder(value, operand); + if (ord === null) + return SQL_LOGICAL.UNKNOWN; + return accept(ord) ? SQL_LOGICAL.TRUE : SQL_LOGICAL.FALSE; + } // --------------------------------------------------------------------------- // 排序 // --------------------------------------------------------------------------- @@ -258,6 +1028,218 @@ return projected; } + /** + * metona-sqlark 统一行校验 —— 存储写入的**唯一**验证与规范化入口(v0.8.0) + * @module table/validation + * + * ============================================================================ + * 为什么必须合并(PLAN-v0.7.5.md 根因 1:关系语义在引擎间重复实现) + * ============================================================================ + * 修复前项目里存在**三份**行校验实现,覆盖范围各不相同: + * + * | 位置 | 类型检查 | required | PK 非空 | maxLength | min/max | 未知列 | + * |---|---|---|---|---|---|---| + * | `engine/memory.ts#validateRow`(disk/hybrid 继承) | ✓ | ✓ | ✓ | ✗ | ✗ | 静默丢弃 | + * | `engine/aria/index.ts#validateRow` → `checkFieldType` | ✓ | ✓ | ✓ | ✓ | ✓ | 静默丢弃 | + * | `table/schema.ts#validateRow` | ✓ | ✓ | ✓ | ✓ | ✓ | 静默丢弃 | + * + * 于是**同一份 schema、同一条 INSERT** 在 Aria 上抛 `maxLength` 错误,在 + * memory/disk/hybrid 上静默写入超长值(缺陷 A12)—— 用户的约束是否生效 + * 取决于他选了哪个引擎,且没有任何提示。 + * + * 更糟的是"未知列":`INSERT INTO t (id, nope) VALUES ('1', 2)` 在四个引擎上 + * 都**静默丢弃 `nope`**、插入成功。用户以为写进去了,`SELECT nope` 又报 + * COLUMN_NOT_FOUND —— 写路径与读路径对同一列名给出相反结论(缺陷 A17)。 + * + * 本模块把校验收敛成**一个定义**(`compileValidator`),所有引擎与 QueryBuilder + * 都从它取校验器: + * - 约束覆盖面是"并集",不可能再出现"Aria 报错、memory 不报"; + * - 未知列变成**显式错误**(`COLUMN_NOT_FOUND`,与读路径同一错误码); + * - 校验与**规范化**在同一处完成(`__proto__` 防污染、`undefined` 跳过、 + * `default` 填充),引擎只负责存储,不再各自解释 schema。 + * + * ============================================================================ + * 三种载荷形态,为什么不能合成一个函数 + * ============================================================================ + * - `validateRow` INSERT 语义:`default` 生效、缺列合法、`required` 按最终值判; + * - `validatePartial` UPDATE 语义:**只校验出现的列**(`{ a: undefined }` 表示 + * "不更新 a",不能被 required/min/max 判失败); + * - `assertNoUnknownColumns` 独立可复用的"列名存在性"检查(写路径预检)。 + * + * 把它们混成一个带 options 的函数会让"required 是否生效"取决于调用方参数, + * 从而重新引入跨路径差异 —— 本模块刻意保持三个显式入口。 + */ + // --------------------------------------------------------------------------- + // 编译 + // --------------------------------------------------------------------------- + /** + * 把 schema 编译成可复用的行校验器。 + * + * 为什么"编译"而不是每次都遍历 schema:校验处于每次 INSERT/UPDATE 的热路径上, + * 引擎在一次批量写入里会对成百上千行调用它。预先把列定义拆成列表 + 集合, + * 既避免重复的 `Object.entries`,也让"哪些键允许出现"成为可哈希的集合判断。 + * **不缓存**编译结果:schema 可被 `alterTable` 原地修改,长期缓存会用到过期列定义。 + */ + function compileValidator(schema) { + const table = schema.name; + const entries = Object.entries(schema.columns); + const columnNames = new Set(entries.map(([name]) => name)); + function assertNoUnknownColumns(row, knownColumns) { + const allowed = knownColumns ? new Set(knownColumns) : columnNames; + // 先收集未知列再报错:一次列出全部,避免用户"改一个报一个" + const unknown = []; + for (const key of Object.keys(row)) { + if (key === '__proto__') + continue; // 由 sanitize 阶段统一拒绝(消息不同) + if (!allowed.has(key)) + unknown.push(key); + } + if (unknown.length > 0) { + throw new DatabaseError(`Unknown column${unknown.length > 1 ? 's' : ''} ${unknown + .map((c) => `"${c}"`) + .join(', ')} in table "${table}". Known columns: ${[...allowed].join(', ')}`, 'COLUMN_NOT_FOUND'); + } + } + function validateRow(row, knownColumns) { + assertNoUnknownColumns(row, knownColumns); + const validated = {}; + for (const [colName, colDef] of entries) { + // INSERT 语义:缺列时 default 生效 + let value = row[colName]; + if (value === undefined && colDef.default !== undefined) + value = colDef.default; + assertNotNullConstraints(table, colName, colDef, value); + if (value !== undefined && value !== null) { + assertJsonSafeNumber(table, colName, value); + checkFieldType(table, colName, colDef.type, value, colDef); + } + // v0.8.0(B-1):缺列且无 default → 显式写入 NULL,**不能省略键**。 + // + // 此前 `if (value !== undefined) validated[colName] = value;` 会把这个列整个 + // 从行里删掉,于是存储行只含"有值的列",行形状取决于写入方式: + // INSERT INTO t (id, g) VALUES ('9','z') -- 行里没有 n 键 + // SELECT id, g, n FROM t WHERE id = '9' -- 抛 COLUMN_NOT_FOUND: n + // 而 `SELECT * FROM t` 却能正常返回(少一列而已)—— 同一行"有没有 n 列" + // 在读路径上给出相反结论。SQL 语义中"未提供值"就是 NULL,故统一补 null: + // 行始终包含全部 schema 列,投影/排序/三值比较才有统一前提。 + validated[colName] = value === undefined ? null : value; + } + return validated; + } + function validatePartial(row) { + const values = {}; + const unknown = []; + for (const [colName, value] of Object.entries(row)) { + if (colName === '__proto__') { + throw new DatabaseError('Column name "__proto__" is not allowed', 'VALIDATION_ERROR'); + } + const colDef = schema.columns[colName]; + if (!colDef) { + unknown.push(colName); + continue; + } + // UPDATE 语义:`undefined` 已由 stripUndefinedUpdates 过滤; + // 这里再挡一次,保证"未提供的列"绝不会被判 required 失败。 + if (value === undefined) + continue; + assertNotNullConstraints(table, colName, colDef, value); + if (value !== null) { + assertJsonSafeNumber(table, colName, value); + checkFieldType(table, colName, colDef.type, value, colDef); + } + values[colName] = value; + } + return { values, unknown }; + } + return { table, columns: columnNames, validateRow, validatePartial }; + } + // --------------------------------------------------------------------------- + // 共享约束 + // --------------------------------------------------------------------------- + /** + * 检查字段类型(含约束校验)。 + * + * v0.8.0(B-1):在 `checkFieldType`(table/schema.ts)之外**额外**拒绝 + * `NaN` 与 `±Infinity`。为什么必须有这一层: + * - JSON 无法表示它们 —— `JSON.stringify({ v: NaN })` 得到 `{"v":null}`, + * 于是 `INSERT ... VALUES (NaN)` 在内存引擎里是 NaN,落盘再读回来变成 null; + * 同一个库在"写后立即查"与"重启后查"得到不同结果,且没有任何提示。 + * - KVStore / Aria 的持久化路径都是 JSON,因此这是**所有**磁盘引擎的共性问题。 + * - 用户能构造出 NaN:`Number('abc')`、`0/0`、`parseFloat('x')` 等, + * 经由参数绑定进入写入路径。 + * 显式拒绝(`VALIDATION_ERROR`)让问题在写入时暴露,而不是变成读出来的 null。 + */ + function assertJsonSafeNumber(table, colName, value) { + if (typeof value !== 'number') + return; + if (Number.isFinite(value)) + return; + throw new DatabaseError(`Column "${colName}" in table "${table}" cannot store ${Number.isNaN(value) ? 'NaN' : String(value)}:` + + ' it is not representable in JSON and would be silently read back as null', 'VALIDATION_ERROR'); + } + /** + * NOT NULL 类约束。 + * + * 两条规则合并在一个函数里按顺序判断,是为了让错误消息稳定: + * - `required` → "is required"(用户声明的业务约束); + * - `primaryKey` → 隐含 NOT NULL(SQL 语义)。 + * 在此之前两者分散在两个引擎的 `validateRow` 里各写一遍,消息略有差异 + * (一个有表名后缀一个没有),依赖消息文本的测试只能各测各的引擎。 + */ + function assertNotNullConstraints(table, colName, colDef, value) { + if (colDef.required && (value === undefined || value === null)) { + throw new DatabaseError(`Column "${colName}" is required in table "${table}"`, 'VALIDATION_ERROR'); + } + // v0.7.4:主键列强制非空 —— 此前 null/undefined 主键被 String() 化为 + // "null"/"undefined" 静默入库,行再也无法按主键取回。 + if (colDef.primaryKey && (value === undefined || value === null)) { + throw new DatabaseError(`Primary key column "${colName}" in table "${table}" cannot be null or undefined`, 'VALIDATION_ERROR'); + } + } + // --------------------------------------------------------------------------- + // 字段类型与约束检查(唯一实现) + // --------------------------------------------------------------------------- + /** 检查字段类型(含约束校验) */ + function checkFieldType(tableName, colName, type, value, colDef) { + const jsType = typeof value; + switch (type) { + case 'string': + if (jsType !== 'string') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects string, got ${jsType}`, 'TYPE_ERROR'); + } + if (colDef?.maxLength !== undefined && value.length > colDef.maxLength) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" exceeds max length ${colDef.maxLength}`, 'VALIDATION_ERROR'); + } + break; + case 'number': + if (jsType !== 'number') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects number, got ${jsType}`, 'TYPE_ERROR'); + } + if (colDef?.min !== undefined && value < colDef.min) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} below minimum ${colDef.min}`, 'VALIDATION_ERROR'); + } + if (colDef?.max !== undefined && value > colDef.max) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} above maximum ${colDef.max}`, 'VALIDATION_ERROR'); + } + break; + case 'boolean': + if (jsType !== 'boolean') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); + } + break; + case 'date': + if (jsType !== 'string' || isNaN(Date.parse(value))) { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects valid date string, got ${typeof value}`, 'TYPE_ERROR'); + } + break; + case 'json': + if (jsType !== 'object') { + throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); + } + break; + } + } + /** * metona-sqlark Schema — 表结构定义与校验 * @module table/schema @@ -317,46 +1299,6 @@ } return clean; } - /** 检查字段类型(含约束校验) */ - function checkFieldType(tableName, colName, type, value, colDef) { - const jsType = typeof value; - switch (type) { - case 'string': - if (jsType !== 'string') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects string, got ${jsType}`, 'TYPE_ERROR'); - } - if (colDef?.maxLength !== undefined && value.length > colDef.maxLength) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" exceeds max length ${colDef.maxLength}`, 'VALIDATION_ERROR'); - } - break; - case 'number': - if (jsType !== 'number') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects number, got ${jsType}`, 'TYPE_ERROR'); - } - if (colDef?.min !== undefined && value < colDef.min) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} below minimum ${colDef.min}`, 'VALIDATION_ERROR'); - } - if (colDef?.max !== undefined && value > colDef.max) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" value ${value} above maximum ${colDef.max}`, 'VALIDATION_ERROR'); - } - break; - case 'boolean': - if (jsType !== 'boolean') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); - } - break; - case 'date': - if (jsType !== 'string' || isNaN(Date.parse(value))) { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects valid date string, got ${typeof value}`, 'TYPE_ERROR'); - } - break; - case 'json': - if (jsType !== 'object') { - throw new DatabaseError(`Column "${colName}" in table "${tableName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); - } - break; - } - } /** 将 AST 列定义转换为 ColumnDef */ function astColumnToColumnDef(astCol) { return { @@ -482,6 +1424,53 @@ throw new DatabaseError(`Column "${column.name}" already exists in table "${tableName}"`, 'COLUMN_EXISTS'); } schema.columns[column.name] = column; + // v0.8.0 根治:ALTER ADD 必须建立二级索引桶。 + // + // 此前只写 schema.columns 而不建桶,而唯一性预检完全依赖索引桶 + // (`tableIndexes.get(colName)` 缺失即整段跳过)—— 于是 + // `ALTER TABLE t ADD COLUMN email STRING UNIQUE` 之后插入重复 email + // **不会报错**;close/reopen 时 createTable 依 schema 建桶、回灌第 2 行 + // 触发 UNIQUE_VIOLATION 而异常被引擎 open 路径吞掉 → **行静默消失**。 + if (column.index || column.unique) { + if (!this.indexes.has(tableName)) + this.indexes.set(tableName, new Map()); + const tableIndexes = this.indexes.get(tableName); + if (!tableIndexes.has(column.name)) + tableIndexes.set(column.name, new Map()); + // 已存在行:先校验存量唯一性(重复则回滚本次 ALTER),再回填索引桶 + const colIndex = tableIndexes.get(column.name); + const table = this.tables.get(tableName); + const seen = new Set(); + for (const [pk, row] of table) { + const value = row[column.name]; + if (value === null || value === undefined) + continue; // null 不受唯一约束 + if (column.unique && seen.has(value)) { + tableIndexes.delete(column.name); + delete schema.columns[column.name]; + throw new DatabaseError(`Duplicate value "${String(value)}" for UNIQUE column "${column.name}" in table "${tableName}"`, 'UNIQUE_VIOLATION'); + } + seen.add(value); + let pks = colIndex.get(value); + if (!pks) { + pks = new Set(); + colIndex.set(value, pks); + } + pks.add(pk); + } + } + // v0.8.0(B-1):ADD 列在**已有行**上物化为 NULL。 + // + // 行校验契约(table/validation.ts)保证"行含全部 schema 列",若 ALTER ADD + // 不补齐,新列在旧行上就是**键不存在**:内存里 `{id,name}`、而同一行经 + // 落盘再读回(KVStore/Aria 的恢复路径会走 validateRow)变成 + // `{id,name,phone:null}` —— 同一行的形状取决于"是否重启过"。 + // 显式物化后,内存视图与持久化视图一致。 + const addTable = this.tables.get(tableName); + for (const row of addTable.values()) { + if (!(column.name in row)) + row[column.name] = null; + } return; } if (!schema.columns[column.name]) { @@ -538,10 +1527,12 @@ } /** v0.7.3: 按主键取已验证行(KVStoreEngine 持久化 validated 行用,含 default/类型归一) */ getRow(tableName, pkValue) { + // v0.8.0: 返回副本(调用方用于持久化,不得持有内部引用) const table = this.tables.get(tableName); if (!table) return null; - return table.get(pkValue) ?? null; + const row = table.get(pkValue); + return row ? cloneRow(row) : null; } async find(tableName, query) { this.ensureTable(tableName); @@ -559,7 +1550,9 @@ if (query.columns && query.columns.length > 0 && query.columns[0] !== '*') { results = results.map((row) => projectColumns(row, query.columns)); } - return results; + // v0.8.0: 返回副本 —— 此前直接交出内部行对象,调用方原地修改即改写存储 + // 并让索引与行失配(该行从此查不出来)。见 engine/interface.ts 的行所有权约定。 + return results.map((row) => cloneRow(row)); } /** v0.4.0: 流式查询 — 逐行回调(单次迭代,不物化结果数组) */ async findStream(tableName, query, onRow) { @@ -580,7 +1573,7 @@ skipped++; continue; } - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); count++; if (count >= limit) break; @@ -594,11 +1587,16 @@ const pkCol = this.getPrimaryKey(schema); // v0.7.2: undefined 值视为"不更新该列"(保留旧值),null 显式置空 const cleanUpdates = stripUndefinedUpdates(updates); - // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, - // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in UPDATE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 // v0.7.4: 未知列显式报错 —— 此前 SET nonexistent = ... 被静默写入存储行 // (validateRow 只遍历 schema 列,脏列残留在行内并随持久化落盘) for (const col of Object.keys(cleanUpdates)) { @@ -611,6 +1609,20 @@ // → 无事务下语句级部分提交(数据半更新且调用方已收到错误)。 const planned = []; const batchUnique = new Map(); + /** + * v0.8.0 根治:批内新主键互查。 + * + * 此前阶段 1 只用 `table.has(newPk)` 与**语句执行前的表**比对,看不到同一语句内 + * 其它行即将写入的新主键。于是 `UPDATE t SET id = 'X'`(匹配 2 行)在阶段 2 + * 逐行 `table.set(newPk, ...)` 相互覆盖 —— 返回 affected=2,表中却只剩 1 行 + * (静默丢行)。INSERT 路径在 v0.7.3 已做批内 PK Set 互查,UPDATE 漏了。 + * + * 保守拒绝策略:同一语句内两行改到同一新主键必然互相覆盖,直接报错。 + * 注意这也会拒绝"两行互换主键"(A:x→y, B:y→x)这种最终状态合法的写法 —— + * 那属于需要基于最终状态判定的场景,宁可显式报错也不静默丢行 + * (与既有的"唯一值交换更新保守拒绝"语义一致)。 + */ + const batchNewPks = new Set(); // 阶段 1:全量预检(任何一行失败 → 整条语句不执行) for (const [pk, row] of table) { if (query.where && Object.keys(query.where).length > 0 && !matchWhere(row, query.where)) @@ -623,6 +1635,13 @@ if (newPk !== pk && table.has(newPk)) { throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (cannot update key to existing value)`, 'DUPLICATE_KEY'); } + // v0.8.0: 批内互查 —— 同一语句内两行改到同一新主键 → 整体拒绝(不得静默覆盖) + if (newPk !== pk) { + if (batchNewPks.has(newPk)) { + throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (multiple rows in the same statement update to the same key)`, 'DUPLICATE_KEY'); + } + batchNewPks.add(newPk); + } planned.push({ pk, row, updated, newPk }); } // 阶段 1b:主键变更 RESTRICT 预检(引用表依赖行检查,任何修改前) @@ -766,11 +1785,21 @@ continue; if (colDef.onUpdate !== 'CASCADE' && colDef.onUpdate !== 'SET NULL') continue; + // v0.8.0(B-1):级联写入也必须过统一校验。 + // + // 此前这里**直接赋值**绕过校验:`onUpdate: 'CASCADE'` 把新主键写入引用列时, + // 若该列有 maxLength / min / max 约束(新主键更长或超出范围), + // 约束被静默绕过 —— 与 A12 是同一类"校验只在部分写入路径生效"的问题。 + // SET NULL 到 required/非空列的检查由 checkUpdateRestrict 在任何修改前完成, + // 此处再校验可同时覆盖 maxLength/min/max 这类"具体值相关"的约束。 + const validator = this.rowValidator(refSchema); for (const [refPk, refRow] of refTableData) { if (String(refRow[colName]) !== oldPk) continue; + const nextValue = colDef.onUpdate === 'CASCADE' ? newPk : null; + const { values } = validator.validatePartial({ [colName]: nextValue }); this.removeIndexEntries(refTableName, refRow, refPk); - refRow[colName] = colDef.onUpdate === 'CASCADE' ? newPk : null; + refRow[colName] = values[colName]; this.updateIndexes(refTableName, refRow, refPk); } } @@ -778,11 +1807,16 @@ } async delete(tableName, query) { this.ensureTable(tableName); - // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, - // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in DELETE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const table = this.tables.get(tableName); const toDelete = []; for (const [pk, row] of table) { @@ -1008,49 +2042,40 @@ return Object.keys(schema.columns)[0]; } validateRow(schema, row) { - const validated = {}; - for (const [colName, colDef] of Object.entries(schema.columns)) { - let value = row[colName]; - if (value === undefined && colDef.default !== undefined) - value = colDef.default; - if (colDef.required && (value === undefined || value === null)) { - throw new DatabaseError(`Column "${colName}" is required in table "${schema.name}"`, 'VALIDATION_ERROR'); - } - // v0.7.4: 主键列强制非空(SQL 语义 PK 隐含 NOT NULL)—— - // 此前 null/undefined 主键被 String() 化为 "null"/"undefined" 静默入库 - if (colDef.primaryKey && (value === undefined || value === null)) { - throw new DatabaseError(`Primary key column "${colName}" in table "${schema.name}" cannot be null or undefined`, 'VALIDATION_ERROR'); - } - if (value !== undefined && value !== null) - this.checkType(colName, colDef.type, value); - if (value !== undefined) - validated[colName] = value; - } - return validated; + // v0.8.0(B-1):委托给**唯一**的行校验实现(table/validation.ts)。 + // + // 此前这里是第三份独立实现:只做类型检查,**没有** maxLength / min / max + // 约束(Aria 有)—— 于是同一份 schema、同一条 INSERT 是否报错取决于引擎 + //(缺陷 A12)。同时它对未知列静默丢弃(A17)。 + return this.rowValidator(schema).validateRow(row); } - checkType(colName, type, value) { - const jsType = typeof value; - switch (type) { - case 'string': - if (jsType !== 'string') - throw new DatabaseError(`Column "${colName}" expects string, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'number': - if (jsType !== 'number') - throw new DatabaseError(`Column "${colName}" expects number, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'boolean': - if (jsType !== 'boolean') - throw new DatabaseError(`Column "${colName}" expects boolean, got ${jsType}`, 'TYPE_ERROR'); - break; - case 'date': - if (jsType !== 'string' || isNaN(Date.parse(value))) - throw new DatabaseError(`Column "${colName}" expects valid date`, 'TYPE_ERROR'); - break; - case 'json': - if (jsType !== 'object') - throw new DatabaseError(`Column "${colName}" expects object/array, got ${jsType}`, 'TYPE_ERROR'); - break; + /** + * 取该 schema 的行校验器(每次调用重新编译)。 + * + * 不缓存在引擎字段上:`alterTable` 会原地修改 schema 对象, + * 长期缓存会继续用过期列定义("加了列却仍被当未知列"这类难查问题)。 + * 编译本身只是 `Object.entries` + Set 构造,相对一次 INSERT 的索引维护可忽略。 + */ + rowValidator(schema) { + return compileValidator(schema); + } + /** + * v0.8.0(B-1):写入前置校验(见 `IStorageEngine.validatePayload` 契约)。 + * + * 引擎在 `insert` / `update` 内部**同样**会校验 —— 本方法只是让 Executor 与 + * QueryBuilder 能在"开始写入之前"拿到同一套判定结果,从而: + * - 多行 INSERT 的预检发生在任何副作用之前(错误信息带列名清单); + * - 直通路径与 SQL 路径不可能给出不同结论(同一个 `compileValidator`)。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureTable(tableName); + const schema = this.schemas.get(tableName); + const validator = this.rowValidator(schema); + for (const row of rows) { + if (mode === 'update') + validator.validatePartial(stripUndefinedUpdates(row)); + else + validator.validateRow(row); } } /** 索引查找 */ @@ -1093,6 +2118,15 @@ // IS NULL 恒空(对齐 AriaEngine v0.6.2 修复) if (targetValue === null || targetValue === undefined) continue; + // v0.8.0 根治(与 AriaEngine 同步):**非原始值**(对象/数组)一律不走索引。 + // + // 索引键只存原始值,因此 colIndex.get({...}) 恒 undefined → 下面 `return []` + // 会短路全表扫描 → 结果静默为空。真实触发场景正是"未解析的操作数": + // { $eq: { $col: 'y' } } ← 列对列比较(t.x = t.y) + // { $in: { $subquery: ... } } ← 关联 IN 子查询 + // 它们本该由 executor 逐行求值,却先在这里被索引路径吞成空集。 + if (typeof targetValue === 'object') + continue; const colIndex = tableIndexes.get(col); if (colIndex) { const pks = colIndex.get(targetValue); @@ -1381,58 +2415,91 @@ } } - /** - * KVStore SharedMemory Medium — 跨实例共享的内存介质 - * @module engine/kvstore/shared_memory_medium - * - * v0.6.0: 替代 fake-indexeddb 的测试/Node 环境介质。 - * 与 MemoryBackend 的区别:数据按库名存于全局注册表,close() 不清除 - * (模拟"磁盘持久化"语义——重新 open 同名库可读到上次写入的数据)。 - * - * 仅用于测试与 Node 环境;浏览器使用 OPFS 介质(KVStore 默认自动选择)。 - */ - /** 全局注册表:dbName → key → chunk 列表(跨实例共享,模拟持久化) */ + /** 全局注册表:dbName(+ 库 id)→ 共享存储(跨实例共享,模拟持久化) */ const registry = new Map(); + /** + * 库 id 计数器:用于 `clearRegistry()` 后让"同名但属于新会话"的库拿到 + * **新的** DbStore,而不是复用上一会话残留的对象引用。 + */ + let registryEpoch = 0; + /** 当前会话里 dbName → 本次会话的 DbStore(换代后失效) */ + let liveStores = new Map(); + function storeFor(name) { + const live = liveStores.get(name); + if (live && live.epoch === registryEpoch) + return live.store; + const existing = registry.get(name); + if (existing) { + // 同一会话内复用(多个 backend 实例共享同一份字节) + liveStores.set(name, { epoch: registryEpoch, store: existing }); + return existing; + } + const created = { chunks: new Map(), materialized: new Map() }; + registry.set(name, created); + liveStores.set(name, { epoch: registryEpoch, store: created }); + return created; + } class SharedMemoryBackend { constructor() { this.dbName = ''; - /** 存储:key → chunk 列表(append O(1),read 时一次性拼接缓存) */ - this.chunks = new Map(); - /** 惰性拼接缓存(read 后缓存,write/append 失效) */ - this.materialized = new Map(); + this.store = null; } - /** 清空全局注册表(测试隔离用) */ + /** + * 清空全局注册表(测试隔离用)。 + * + * 同时让"当前会话"失效:后续 open 会为同名库创建全新的存储 —— + * 否则 `clearRegistry()` 之后新建的实例可能仍指向上一用例的 DbStore + *(注册表被清空但对象引用还活在旧实例里),出现跨用例数据泄漏。 + */ static clearRegistry() { registry.clear(); + registryEpoch += 1; + liveStores = new Map(); } async open(name) { this.dbName = name; - if (!registry.has(name)) { - registry.set(name, new Map()); - } - // 从注册表恢复 chunks(持久化语义) - this.chunks = registry.get(name); - this.materialized = new Map(); + this.store = storeFor(name); } /** close 不清除数据(持久化语义:重开同名库数据仍在) */ async close() { - this.chunks = new Map(); - this.materialized = new Map(); + this.store = null; } isOpen() { - return this.dbName !== ''; + return this.dbName !== '' && this.store !== null; + } + /** + * 取当前共享存储。 + * + * v0.8.0:`close()` 之后**不再**惰性重新绑定到共享存储 —— 那会让 + * "close 后读不到数据"变成"close 后又读到了"(实测该行为被 + * `tests/production-abnormal.test.ts` 的 close 契约用例逮到)。 + * + * 正确语义(与既有契约一致,见该用例注释): + * - close 后读 → `null`(本实例已不持有数据); + * - close 后写/删/清空 → **不抛错**,但作用在游离内存上、**不持久化** + * - 跨实例持久化语义不受影响:另一个实例 open 同名库仍能读到 close 前的数据。 + */ + db() { + if (!this.store) { + // 游离存储:仅供 close 后的调用"安全落地",不进入注册表 + this.store = { chunks: new Map(), materialized: new Map() }; + } + return this.store; } async read(key) { - if (this.materialized.has(key)) - return this.materialized.get(key); - const list = this.chunks.get(key); - if (!list || list.length === 0) + const db = this.db(); + if (db.materialized.has(key)) + return db.materialized.get(key) ?? null; + const list = db.chunks.get(key); + if (!list || list.length === 0) { + db.materialized.set(key, null); return null; + } if (list.length === 1) { - this.materialized.set(key, list[0]); + db.materialized.set(key, list[0]); return list[0]; } - const total = list.reduce((s2, c) => s2 + c.byteLength, 0); + const total = list.reduce((sum, c) => sum + c.byteLength, 0); const combined = new Uint8Array(total); let off = 0; for (const c of list) { @@ -1440,50 +2507,56 @@ off += c.byteLength; } const buf = combined.buffer; - this.materialized.set(key, buf); + db.materialized.set(key, buf); return buf; } async write(key, data) { - this.chunks.set(key, [data]); - this.materialized.set(key, data); + const db = this.db(); + db.chunks.set(key, [data]); + db.materialized.set(key, data); } async append(key, data) { - // O(1) 追加:只记录 chunk,read 时惰性拼接 - const list = this.chunks.get(key); - if (list) { + // O(1) 追加:只记录 chunk,read 时惰性拼接。 + // 缓存按库共享,因此这里清掉的缓存对所有实例都生效 —— 这正是 + // "另一个实例的写入必须对自己可见"这一语义的实现点。 + const db = this.db(); + const list = db.chunks.get(key); + if (list) list.push(data); - } - else { - this.chunks.set(key, [data]); - } - this.materialized.delete(key); + else + db.chunks.set(key, [data]); + db.materialized.delete(key); } async writeMany(entries) { // 同步批量写入 = 原子(JS 单线程,无中间 await 点) + const db = this.db(); for (const [key, data] of Object.entries(entries)) { - this.chunks.set(key, [data]); - this.materialized.set(key, data); + db.chunks.set(key, [data]); + db.materialized.set(key, data); } } async delete(key) { - this.chunks.delete(key); - this.materialized.delete(key); + const db = this.db(); + db.chunks.delete(key); + db.materialized.set(key, null); } async deleteMany(keys) { + const db = this.db(); for (const key of keys) { - this.chunks.delete(key); - this.materialized.delete(key); + db.chunks.delete(key); + db.materialized.set(key, null); } } async listKeys() { - return Array.from(this.chunks.keys()); + return Array.from(this.db().chunks.keys()); } async exists(key) { - return this.chunks.has(key); + return this.db().chunks.has(key); } async clear() { - this.chunks.clear(); - this.materialized.clear(); + const db = this.db(); + db.chunks.clear(); + db.materialized.clear(); } } @@ -1839,6 +2912,16 @@ this.opQueue = Promise.resolve(); /** 最近一次后台操作失败(checkpoint 时报告) */ this.lastBackgroundError = null; + /** + * v0.8.0(B-6):本实例的提交所有权标识。 + * + * 每次 `open()` 领取一个新的随机 id 并写入 meta(见 `claimOwnership`)。 + * checkpoint 前比对 `meta.owner`:不等于自己 → 介质已被更新的实例接管, + * 本实例的索引可能落后,**不得**再提交快照(否则会静默抹掉对方的写入)。 + */ + this.instanceId = ''; + /** 是否已被更新的实例接管(进入该状态后所有写入与提交都被拒绝) */ + this.stale = false; this.medium = medium ?? defaultMedium(); this.checkpointThreshold = checkpointThreshold; } @@ -1855,7 +2938,12 @@ this.dbName = dbName; // v0.7.4: 打开时同样清理后台错误状态(防 close/reopen 残留) this.lastBackgroundError = null; + this.stale = false; await this.medium.open(dbName); + // v0.8.0(B-6):领取提交所有权(写回 meta.owner)。 + // 打开是唯一"接管"介质的时机;此前的实例之后会在 checkpoint 时发现 + // owner 已变而拒绝提交,从而不会用陈旧索引覆盖本实例的数据。 + await this.claimOwnership(); this.index = new Map(); this.seq = 0; this.logBytes = 0; @@ -1901,8 +2989,17 @@ this.logBytes = log.byteLength; } if (corruptOffsets.length > 0) { - // 损坏尾部:截断日志(丢弃未确认记录),下次 checkpoint 落盘 - await this.truncateLog(); + // v0.8.0(B-6)根治:损坏尾部只能**截断到最后一条有效记录**, + // 绝不能清空整个日志。 + // + // 修复前这里调用 `truncateLog()`(写空文件),于是"尾部一个字节损坏" + // 导致**全部已确认写入消失**: + // 写 3 条记录 → 第 4 条只写了一半(崩溃)→ 重开 + // → 前 3 条被上面的重放读到内存,随后被 truncateLog() 从介质上抹掉 + // → 再重开一次,数据全部为空。 + // 这是本项目最严重的一类缺陷:把"损坏尾部"放大成"整库丢失"。 + // 正确做法(与 repair() 一致):保留 [0, validBytes) 前缀。 + await this.truncateLogTo(this.findValidLogLength(log)); } } this.opened = true; @@ -1940,6 +3037,8 @@ // v0.7.4: 清理后台错误状态 —— 此前跨 close/reopen 残留, // 重开后首次 checkpoint 会抛出上一次生命周期的旧错误 this.lastBackgroundError = null; + this.instanceId = ''; + this.stale = false; this.opened = false; } // ======================================================================= @@ -2022,6 +3121,8 @@ /** checkpoint:快照 → meta → 截断日志(时序保证任何崩溃窗口不丢数据) */ async checkpoint() { await this.enqueue(async () => { + // v0.8.0(B-6):提交前确认所有权 —— 拒绝用陈旧索引覆盖介质 + await this.assertOwnership(); // 报告上次后台失败 if (this.lastBackgroundError !== null) { const error = this.lastBackgroundError; @@ -2033,9 +3134,8 @@ // 1. 写快照(COW 原子) const snapBytes = encodeSnapshot(this.seq, this.index); await this.medium.write(SNAPSHOT_KEY, snapBytes.buffer); - // 2. 写 meta(指向新水位) - const meta = { seq: this.seq }; - await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); + // 2. 写 meta(指向新水位 + 续期所有权) + await this.writeMeta(); // 3. 截断日志(meta 已更新 → 截断安全) await this.truncateLog(); }); @@ -2089,6 +3189,12 @@ } /** 追加一条日志记录并更新内存索引(队列内调用,无并发) */ async appendRecord(puts, deletes, appends = {}) { + // v0.8.0(B-6):已被接管 → 拒绝写入(否则写入只会进 WAL 而永远无法提交, + // 或者在下一次 checkpoint 时把对方的提交覆盖掉) + if (this.stale) { + throw new DatabaseError('KVStore instance has been superseded by another instance on the same database;' + + ' re-open the database to continue', 'STALE_INSTANCE'); + } this.seq++; const record = encodeLogRecord(this.seq, puts, deletes, appends); try { @@ -2138,13 +3244,41 @@ this.logBytes += record.byteLength; // 自动 checkpoint(日志超阈值) if (this.checkpointThreshold > 0 && this.logBytes >= this.checkpointThreshold) { - await this.medium.write(SNAPSHOT_KEY, encodeSnapshot(this.seq, this.index).buffer); - const meta = { seq: this.seq }; - await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); - await this.truncateLog(); + await this.autoCheckpoint(); } } - /** 截断日志(清空文件) */ + /** + * v0.8.0(B-6)根治:自动 checkpoint 的失败语义。 + * + * 此前的顺序是"WAL 追加成功 → 更新内存索引 → 自动 checkpoint",而自动 + * checkpoint **没有 try/catch**:快照/元数据写失败会把异常抛出 `appendRecord`, + * 一路冒泡到调用方 —— 但那条写入**已经持久化在 WAL 里了**(WAL 是权威来源, + * 崩溃后一定能重放出来)。于是用户看到 `put()` 失败、以为数据没进去, + * 实际数据已经落盘 —— 报错与事实相反,属于最有害的一类不一致 + * (调用方据此重试会写入两次,或据"失败"丢弃业务状态)。 + * + * 现在的语义(与 PLAN-v0.7.5.md 的 B-6 止血方案一致): + * - 已确认的写入**不得**因为后台失败而报错; + * - 失败被记录为 `lastBackgroundError`,由**下一次** `checkpoint()` + * 显式报告(那是用户主动要求把数据压实到快照的时机,此时失败是真实问题); + * - 内存索引与 WAL 仍然一致(两者都已包含这条写入),不产生半状态。 + */ + async autoCheckpoint() { + try { + await this.assertOwnership(); + await this.medium.write(SNAPSHOT_KEY, encodeSnapshot(this.seq, this.index).buffer); + await this.writeMeta(); + await this.truncateLog(); + } + catch (error) { + // 陈旧实例的自动 checkpoint 失败**不**计入 lastBackgroundError: + // 那会把它伪装成"介质故障",而真实原因是本实例已被接管,用户需要的是 + // 立即的、明确的 STALE_INSTANCE 错误(由 assertOwnership 在显式路径给出)。 + if (!this.stale) + this.lastBackgroundError = error; + } + } + /** 截断日志(清空文件)—— 仅用于 checkpoint 之后:快照已覆盖全部数据 */ async truncateLog() { try { await this.medium.write(LOG_KEY, new ArrayBuffer(0)); @@ -2152,6 +3286,29 @@ catch { /* 截断失败:下次 checkpoint 重试 */ } this.logBytes = 0; } + /** + * v0.8.0(B-6):把日志截断到 `keepBytes` 长度(保留有效前缀)。 + * + * 与 `truncateLog()` 的区别:checkpoint 后日志内容已被快照覆盖,可以清空; + * 而崩溃恢复时日志里**前面的记录是唯一的数据来源**(快照可能落后很多个 + * checkpoint),只能丢弃损坏的尾部。两者语义完全不同,因此是两个方法。 + */ + async truncateLogTo(keepBytes) { + try { + const raw = await this.medium.read(LOG_KEY); + if (!raw) + return; + if (keepBytes >= raw.byteLength) + return; // 无需截断(损坏判定与读取之间无变化) + const kept = new Uint8Array(raw).subarray(0, keepBytes).slice(); + await this.medium.write(LOG_KEY, kept.buffer); + this.logBytes = keepBytes; + } + catch { + // 截断失败不影响本次恢复的内存状态:日志文件多出的损坏尾部会在 + // 下次 open 时被同样识别并跳过(解析在损坏处停止),因此不会读到脏数据。 + } + } /** 应用记录条目到内存索引 */ applyRecord(entries) { for (const e of entries) { @@ -2175,6 +3332,58 @@ } } } + // ======================================================================= + // 提交所有权(v0.8.0 / B-6) + // ======================================================================= + /** 生成实例 id(无需密码学强度,只要同期实例间不碰撞) */ + newInstanceId() { + const rand = Math.random().toString(36).slice(2); + return `kv-${Date.now().toString(36)}-${rand}`; + } + /** 读取 meta(缺失或损坏时返回 null) */ + async readMeta() { + try { + const raw = await this.medium.read(META_KEY); + if (!raw || raw.byteLength === 0) + return null; + return JSON.parse(new TextDecoder().decode(raw)); + } + catch { + return null; + } + } + /** 写入 meta(水位 + 所有权续期) */ + async writeMeta() { + const meta = { seq: this.seq, owner: this.instanceId }; + await this.medium.write(META_KEY, new TextEncoder().encode(JSON.stringify(meta)).buffer); + } + /** open() 时领取所有权:写入本实例 id,使此前打开的实例在提交时发现自己已过期 */ + async claimOwnership() { + this.instanceId = this.newInstanceId(); + await this.writeMeta(); + } + /** + * 提交前校验所有权。 + * + * 只有当介质上的 owner 存在、且**不是**本实例时才算过期: + * - owner 缺失(旧版本库 / meta 被清理)→ 视为无主,允许提交; + * - owner === 自己 → 正常。 + * 一旦判定过期,本实例进入 `stale` 状态:后续写入与提交都显式报错 —— + * 显式失败远好于静默丢数据(这是本 wound 的全部意义)。 + */ + async assertOwnership() { + const meta = await this.readMeta(); + if (meta?.owner && this.instanceId && meta.owner !== this.instanceId) { + this.stale = true; + throw new DatabaseError('KVStore instance has been superseded by another instance on the same database' + + ' (refusing to commit a stale snapshot, which would discard the newer instance\'s writes);' + + ' re-open the database to continue', 'STALE_INSTANCE'); + } + } + /** 本实例是否已被更新实例接管(诊断用) */ + isStale() { + return this.stale; + } /** 确定日志中有效字节长度(从 0 开始连续解析到第一条损坏/残缺记录) */ findValidLogLength(log) { let offset = 0; @@ -2419,6 +3628,17 @@ } } // ---- CRUD ---- + /** + * v0.8.0(B-1):写入前置校验 —— 委托给内存引擎(两者共享同一 schema 表)。 + * + * KVStore/Hybrid 的行校验一直"继承"自 MemoryEngine,这正是 A12 的成因: + * 三者共用一份**缺 maxLength/min/max** 的实现。现在共享的是 + * `table/validation.ts` 的规范实现,继承关系不再影响约束覆盖面。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureOpen(); + return this.memory.validatePayload(tableName, rows, mode); + } async insert(tableName, rows) { this.ensureOpen(); const pks = await this.memory.insert(tableName, rows); @@ -2878,6 +4098,19 @@ WALRecordType[WALRecordType["ROLLBACK"] = 6] = "ROLLBACK"; WALRecordType[WALRecordType["CREATE_TABLE"] = 7] = "CREATE_TABLE"; WALRecordType[WALRecordType["DROP_TABLE"] = 8] = "DROP_TABLE"; + /** + * v0.8.0: 回滚到保存点。 + * + * 为什么必须有这条记录:`ROLLBACK TO ` 此前只改内存快照、**不写 WAL**, + * 而 COMMIT 会把整个 txnId 标记为已提交,恢复时按"该事务的全部记录"重放 —— + * 于是被 savepoint 回滚掉的行在崩溃重启后**复活**(实测:实时只剩 a, + * 崩溃重开变成 a+b)。反向也有问题:跨事务复用的陈旧 savepoint 会让当前事务的 + * 写入被上一事务的快照静默替换。 + * + * 记录语义:该事务在此之前的写入都应被丢弃 —— 恢复时只应用该事务**最后一条** + * SAVEPOINT_ROLLBACK 之后的记录。 + */ + WALRecordType[WALRecordType["SAVEPOINT_ROLLBACK"] = 9] = "SAVEPOINT_ROLLBACK"; })(WALRecordType || (WALRecordType = {})); // ============================================================================= // MVCC @@ -4196,6 +5429,8 @@ this.levels = []; this.sstableCache = new Map(); this.cacheSize = 0; + /** v0.8.0: 超过缓存上限、不进入 LRU 的 SSTable(每次读取按需加载) */ + this.oversizedSSTables = new Set(); this.operationCount = 0; this.initialized = false; this.compacting = false; // 防止重复触发 compaction @@ -4272,6 +5507,23 @@ this.freezeMemtable(); } } + /** v0.8.0: 当前 SSTable 缓存占用字节数(公开访问器,替代测试直接读私有字段) */ + getCacheSize() { + return this.cacheSize; + } + /** v0.8.0: 当前缓存上限(字节) */ + getCacheLimit() { + return this.cacheLimitBytes; + } + /** v0.8.0: 常驻(超过缓存上限、不参与驱逐)的 SSTable 数量 */ + getOversizedCount() { + return this.oversizedSSTables.size; + } + /** v0.8.0: 运行期调整缓存上限(测试与内存预算调优用),立即裁剪到新上限 */ + setCacheLimit(bytes) { + this.cacheLimitBytes = Math.max(0, bytes); + this.trimCache(); + } /** 获取估算内存使用(字节) */ getEstimatedMemory() { let mem = this.memtable.getEstimatedSize(); @@ -4347,7 +5599,7 @@ bloomData: null, }; // 缓存 - this.cacheSSTable(id, sstableData); + this.tryCacheSSTable(id, sstableData); this.trimCache(); // 持久化:先存数据,再存元数据(串行链保证顺序与 id 一致) await this.sstableStore.save(id, sstableData); @@ -4505,7 +5757,11 @@ } return undefined; } - get(key) { + /** + * v0.8.0: 改为 async —— SSTable 部分未命中缓存时会 `await` 回源, + * 因此读取不再依赖调用方的 prefetch(消除"缓存未命中即静默丢数据")。 + */ + async get(key) { // 1. 活跃 MemTable let result = this.memtable.get(key); if (result !== null) @@ -4521,7 +5777,7 @@ for (const meta of this.levels[level]) { if (key < meta.minKey || key > meta.maxKey) continue; - const reader = this.loadSSTableReader(meta); + const reader = await this.loadSSTableReader(meta); if (!reader) continue; const found = reader.get(key); @@ -4531,9 +5787,9 @@ } return null; } - rangeScan(startKey, endKey) { + async rangeScan(startKey, endKey) { const result = []; - this.rangeScanLazy(startKey, endKey, (k, v) => { result.push([k, v]); }); + await this.rangeScanLazy(startKey, endKey, (k, v) => { result.push([k, v]); }); return result; } /** @@ -4542,22 +5798,27 @@ * 逐条拉取;回调返回 false 时提前终止(未消费部分不再解析/物化)。 * 此前实现内部 mergeIter.drain() 全量物化,与"流式不物化"宣称不符。 */ - rangeScanLazy(startKey, endKey, callback) { + async rangeScanLazy(startKey, endKey, callback) { + // v0.8.0: 先把范围内需要的 SSTable 读取器全部取齐(未命中即回源), + // 再做纯内存的归并扫描 —— 使读取自洽,不依赖调用方 prefetch。 + const readers = []; + for (let level = 0; level < MAX_LSM_LEVELS; level++) { + for (const meta of this.levels[level]) { + if (endKey < meta.minKey || startKey > meta.maxKey) + continue; + const reader = await this.loadSSTableReader(meta); + if (reader) + readers.push({ meta, reader }); + } + } const mergeIter = new MergeIterator(); mergeIter.addSource(new GeneratorEntrySource(this.memtable.scanLazy(startKey, endKey))); // pending frozen memtables(从新到旧,新数据 sourceIndex 更小) for (let i = this.frozenMemtables.length - 1; i >= 0; i--) { mergeIter.addSource(new GeneratorEntrySource(this.frozenMemtables[i].scanLazy(startKey, endKey))); } - for (let level = 0; level < MAX_LSM_LEVELS; level++) { - for (const meta of this.levels[level]) { - if (endKey < meta.minKey || startKey > meta.maxKey) - continue; - const reader = this.loadSSTableReader(meta); - if (!reader) - continue; - mergeIter.addSource(new GeneratorEntrySource(reader.scanLazy(startKey, endKey))); - } + for (const { reader } of readers) { + mergeIter.addSource(new GeneratorEntrySource(reader.scanLazy(startKey, endKey))); } let entry = mergeIter.next(); while (entry) { @@ -4651,7 +5912,7 @@ totalSize: sstableData.byteLength, bloomData: null, }; - this.cacheSSTable(id, sstableData); + this.tryCacheSSTable(id, sstableData); this.trimCache(); await this.sstableStore.save(id, sstableData); await this.sstableStore.saveMeta(meta); @@ -4720,6 +5981,7 @@ } this.sstableCache.clear(); this.cacheSize = 0; + this.oversizedSSTables.clear(); } getStats() { return { @@ -4811,17 +6073,49 @@ return value; } /** 尝试从缓存或存储加载 SSTable,返回 Reader */ - loadSSTableReader(meta) { - // 先检查缓存 - const data = this.sstableCache.get(meta.id); + /** + * v0.8.0 根治:读取器加载**自洽**(缓存未命中即回源),不再依赖调用方预先 prefetch。 + * + * 此前的实现是"缓存未命中返回 null",而所有调用方都是 + * const reader = this.loadSSTableReader(meta); + * if (!reader) continue; + * 于是**缓存未命中 = 静默跳过整个 SSTable = 查询结果少数据**。审计实测: + * 小缓存下 300 行只能查回 59 行(且不报错)。同时"读路径必须先 prefetch" + * 这个隐式约定,也是每次读都要 drainChain + prefetch 的原因(性能悬崖的另一半)。 + * + * 现在:未命中就 `await sstableStore.load()` 回源并校验;只有**确实读不到数据** + * (文件缺失/损坏,已由 dropInvalidSSTable 处理)才返回 null,且会在自愈时清掉 meta。 + */ + async loadSSTableReader(meta) { + let data = this.sstableCache.get(meta.id); if (!data) { - // 缓存未命中:正常路径应在查询前通过 prefetchRange/prefetchKeys 预加载。 - // 这里仅当缓存中有缺失且无兜底时返回 null(调用方跳过)。 - return null; + const loaded = await this.sstableStore.load(meta.id); + if (!loaded) { + // 数据确实不存在:清理该 meta(自愈),避免每次查询都重试 + await this.dropInvalidSSTable(meta); + return null; + } + // 运行期回源同样校验整文件 CRC-32(与 preloadSSTable 一致) + try { + const probe = new SSTableReader(loaded, meta); + if (!probe.verifyChecksum()) { + await this.dropInvalidSSTable(meta); + return null; + } + } + catch { + await this.dropInvalidSSTable(meta); + return null; + } + this.tryCacheSSTable(meta.id, loaded); + data = loaded; } // 刷新 LRU 顺序(近似:删除后重新插入使其成为最近使用) - this.sstableCache.delete(meta.id); - this.sstableCache.set(meta.id, data); + if (this.sstableCache.has(meta.id)) { + const cached = this.sstableCache.get(meta.id); + this.sstableCache.delete(meta.id); + this.sstableCache.set(meta.id, cached); + } try { return new SSTableReader(data, meta); } @@ -4850,6 +6144,32 @@ return; } } + this.tryCacheSSTable(id, data); + } + /** + * v0.8.0: 单文件大于缓存上限时的处理 —— **不缓存**,且不牵连其他条目。 + * + * 此前 `preloadSSTable` 会把超大文件塞进缓存,随后 `trimCache()` 因 + * `cacheSize > cacheLimitBytes` 把**全部**缓存条目一并驱逐(含刚装入的目标文件 + * 与其它仍需使用的文件)。后果有两层: + * 1. "缓存上限"形同虚设(内存峰值不受约束); + * 2. 缓存被整体清空后,若某次读取没有紧跟一次 prefetch,就会静默读到空 + * (`loadSSTableReader` 未命中返回 null,"不存在"与"不可用"不可区分)。 + * 现在的语义明确:装不进缓存的文件不装,但**不影响**其他条目。 + */ + tryCacheSSTable(id, data) { + if (data.byteLength > this.cacheLimitBytes) { + // 单个文件就超过整个缓存上限:**必须常驻**。 + // 若把它驱逐,`loadSSTableReader` 缓存未命中会返回 null,而调用方的 + // `if (!reader) continue` 会**静默跳过该文件** —— 查询结果直接少数据 + // (实测 300 行只返回 59 行)。这也是审计指出的"缓存未命中与不存在不可区分"。 + // 因此这类文件标记为 pinned,不参与驱逐;代价是内存占用可超出 cacheLimit, + // 上限为 cacheLimit + 单个最大 SSTable。 + this.oversizedSSTables.add(id); + } + else { + this.oversizedSSTables.delete(id); + } this.cacheSSTable(id, data); } /** 写入缓存。注意:不在加载时立即驱逐,避免破坏正在进行的同步扫描 */ @@ -4868,13 +6188,35 @@ * 查询结束后由引擎调用一次,回收查询期间的临时超限。 */ trimCache() { - while (this.cacheSize > this.cacheLimitBytes && this.sstableCache.size > 0) { - const eldestId = this.sstableCache.keys().next().value; - const evicted = this.sstableCache.get(eldestId); - this.cacheSize -= evicted.byteLength; - this.sstableCache.delete(eldestId); + // v0.8.0: 超过缓存上限的单个文件被 pin 住(驱逐它们会导致读取路径静默丢数据), + // 因此这里的循环只驱逐未 pin 的条目;若只剩 pinned 条目则接受超限。 + let scanned = 0; + const total = this.sstableCache.size; + let id = this.sstableCache.keys().next().value; + while (this.cacheSize > this.cacheLimitBytes && scanned < total && id !== undefined) { + const nextId = this.nextCacheKey(id); + scanned++; + if (!this.oversizedSSTables.has(id)) { + const evicted = this.sstableCache.get(id); + if (evicted) { + this.cacheSize -= evicted.byteLength; + this.sstableCache.delete(id); + } + } + id = nextId; } } + /** 取缓存中 id 的下一个键(Map 插入序),用于跳过 pinned 条目 */ + nextCacheKey(id) { + let seen = false; + for (const key of this.sstableCache.keys()) { + if (seen) + return key; + if (key === id) + seen = true; + } + return undefined; + } } /** @@ -6610,12 +7952,6 @@ return out; } - /** - * AriaEngine — 自研页面式存储引擎主类 - * @module engine/aria/index - * - * v0.4.1: 外键级联 + ALTER TABLE 重写 + clearAll 重置 + 崩溃恢复加固 - */ // --------------------------------------------------------------------------- // AriaEngine // --------------------------------------------------------------------------- @@ -6646,6 +7982,15 @@ this.gcCounter = 0; // ---- Savepoint 嵌套事务 ---- this.savepoints = new Map(); + /** + * v0.8.0: 当前事务在 WAL 中已成功追加的记录条数。 + * + * 用途:保存点需要记录"回滚后应保留到哪一条",否则恢复时无法区分 + * "保存点之前的写入"(应保留)与"保存点之后的写入"(应丢弃)。 + */ + this.txnWalRecordCount = 0; + /** 保存点 → 该保存点时事务的 WAL 记录边界 */ + this.savepointWalBoundary = new Map(); this.config = { ...DEFAULT_ARIA_CONFIG, ...config }; } // ======================================================================= @@ -6770,9 +8115,65 @@ if (r.type === WALRecordType.ROLLBACK) committedTxns.delete(r.txnId); } + // v0.8.0 根治:确定每个事务的**回放起始下标**。 + // + // `ROLLBACK TO ` 只回滚内存快照,日志里仍留有 savepoint 之前 + // 写入的记录;COMMIT 又把整个 txnId 标记为已提交 —— 于是那些被回滚掉的写入 + // 在重启时被重新应用,**已回滚的行复活**(实测:实时只剩 a,崩溃重开变成 a+b)。 + // + // 现在 savepoint 回滚会写入 SAVEPOINT_ROLLBACK 记录;恢复时该事务只应用 + // **最后一条** SAVEPOINT_ROLLBACK 之后的记录 —— 等价于"回到该保存点", + // 与实时态严格一致(这样也就不需要 undo 崩溃前已落盘的旧值)。 + // 每个事务:{ 保留起点, 丢弃终点 } —— 区间 [start, end) 保留。 + // + // 关键:`replayFromIndex` 是**事务内**的记录序号(写入方按事务计数), + // 因此这里必须用"该事务的第几条记录"来比较,不能直接拿全局下标 —— + // 全局下标里还混着 txnId=0 的非事务记录(CREATE_TABLE 等)以及其它事务。 + const globalIndexToTxnIndex = new Map(); + const txnRecordCount = new Map(); + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; + if (r.txnId === 0) + continue; + const n = txnRecordCount.get(r.txnId) ?? 0; + globalIndexToTxnIndex.set(i, n); + txnRecordCount.set(r.txnId, n + 1); + } + // 边界语义(必须显式定义,否则差一错误就在这里): + // 写入侧记录的 `replayFromIndex = N` 表示"保存点建立时,本事务已成功追加了 N 条记录", + // 即事务的第 0..N-1 条记录必须保留(BEGIN 是第 0 条)。 + // 因此恢复侧应保留的**事务内下标区间**是 [0, N),丢弃 [N, 标记位置)。 + // 等价地:只丢弃"事务内下标 >= N"且"在最后一个标记之前"的记录。 + const txnReplayWindow = new Map(); + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; + if (r.type !== WALRecordType.SAVEPOINT_ROLLBACK) + continue; + const declared = r.data?.replayFromIndex; + const keepUpTo = typeof declared === 'number' ? declared : 0; + const txnIdx = globalIndexToTxnIndex.get(i) ?? 0; + const prev = txnReplayWindow.get(r.txnId); + // 多个保存点回滚:保留上界取**最早**的(回到最早的保存点), + // 丢弃起点取**最后一个**标记的事务内下标。 + txnReplayWindow.set(r.txnId, { + keepUpTo: prev ? Math.min(prev.keepUpTo, keepUpTo) : keepUpTo, + dropFrom: txnIdx, + }); + } // 第二遍:仅应用 txnId==0(非事务)或已提交事务的数据 - for (const r of allRecords) { + for (let i = 0; i < allRecords.length; i++) { + const r = allRecords[i]; if (r.txnId === 0 || committedTxns.has(r.txnId)) { + if (r.type === WALRecordType.SAVEPOINT_ROLLBACK) + continue; // 标记记录,无数据 + // 事务内落在 [start, end) 之外的记录:属于被 savepoint 回滚掉的部分,丢弃 + const win = txnReplayWindow.get(r.txnId); + if (win !== undefined) { + const txnIdx = globalIndexToTxnIndex.get(i) ?? 0; + // 保留 [0, keepUpTo);丢弃 [keepUpTo, dropFrom);标记之后的记录照常保留 + if (txnIdx >= win.keepUpTo && txnIdx < win.dropFrom) + continue; + } if (r.type === WALRecordType.DROP_TABLE) { // v0.3.3: DROP_TABLE 回放(异步:需预加载 SSTable 后清除残留数据) await this.applyDropTableRecovery(r.tableName); @@ -7107,9 +8508,10 @@ throw new DatabaseError(`Duplicate primary key "${pkValue}" in table "${tableName}"`, 'DUPLICATE_KEY'); } pkSet.add(pkValue); + // v0.8.0: 事务快照优先,否则回源 LSM(lsm.get 现为 async) const existing = this.currentTxnId - ? (this.txnSnapshot?.get(key) ?? this.lsm.get(key)) - : this.lsm.get(key); + ? (this.txnSnapshot?.get(key) ?? await this.lsm.get(key)) + : await this.lsm.get(key); if (existing && !existing.__txn_deleted) { throw new DatabaseError(`Duplicate primary key "${pkValue}" in table "${tableName}"`, 'DUPLICATE_KEY'); } @@ -7144,7 +8546,7 @@ throw new DatabaseError(`Unique constraint violation on column "${colName}" in table "${tableName}"`, 'UNIQUE_VIOLATION'); } seen.add(v); - this.checkUniqueSync(tableName, [colName], validated, pkValue); + await this.checkUnique(tableName, [colName], validated, pkValue); } } for (const { row: validated, pkValue, key } of validatedRows) { @@ -7170,6 +8572,7 @@ }); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += rows.length; this.checkMemoryBudget(); await this.checkpointManager.tick(); @@ -7208,16 +8611,24 @@ } // 查询完成,回收查询期间的临时缓存超限 this.trimAllCaches(); - return rows; + // v0.8.0: 行所有权 —— 返回副本,调用方不得改写存储(见 engine/interface.ts 约定) + return rows.map((row) => cloneRow(row)); } async update(tableName, query, updates) { this.ensureOpen(); this.ensureTable(tableName); // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in UPDATE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const schema = this.schemas.get(tableName); const rows = await this.getAllRows(tableName); let count = 0; @@ -7260,6 +8671,14 @@ // (无事务下语句级部分提交 + 崩溃后进一步不一致)。 const planned = []; const batchUnique = new Map(); + /** + * v0.8.0 根治:批内新主键互查(与 MemoryEngine 对齐)。 + * + * 此前只检查"新主键是否已存在于**语句执行前**的表",看不到同一语句内其它行 + * 即将写入的新主键。于是 `UPDATE t SET id = 'X'`(匹配 3 行)在阶段 2 逐行 + * 覆盖同一 LSM key —— 返回 affected=3,表中却只剩 1 行(静默丢行,实测)。 + */ + const batchNewPks = new Set(); // 阶段 1:全量预检(任何一行失败 → 整条语句不执行) for (const row of rows) { const pkCol = this.tablePKs.get(tableName); @@ -7271,7 +8690,7 @@ // 批内唯一互查(索引尚未更新,两行同时改到同一新值需要互查兜底) this.checkBatchUnique(tableName, uniqueCols, updated, batchUnique); // v0.6.2: 唯一约束检查(排除自身旧索引条目:主键变更时旧条目仍以旧键存在) - this.checkUniqueSync(tableName, uniqueCols, updated, String(row[pkCol])); + await this.checkUnique(tableName, uniqueCols, updated, String(row[pkCol])); // v0.4.2-fix: 支持更新主键 — 删除旧键 + 落新键 + WAL 两条记录 const newPk = String(updated[pkCol]); const pkChanged = newPk !== String(row[pkCol]); @@ -7280,11 +8699,16 @@ if (pkChanged) { const newKey = `${tableName}:${newPk}`; const existing = this.currentTxnId - ? (this.txnSnapshot?.get(newKey) ?? this.lsm.get(newKey)) - : this.lsm.get(newKey); + ? (this.txnSnapshot?.get(newKey) ?? await this.lsm.get(newKey)) + : await this.lsm.get(newKey); if (existing && !existing.__txn_deleted) { throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (cannot update key to existing value)`, 'DUPLICATE_KEY'); } + // v0.8.0: 批内互查 —— 同一语句内两行改到同一新主键 → 整体拒绝(不得静默覆盖) + if (batchNewPks.has(newPk)) { + throw new DatabaseError(`Duplicate primary key "${newPk}" in table "${tableName}" (multiple rows in the same statement update to the same key)`, 'DUPLICATE_KEY'); + } + batchNewPks.add(newPk); } planned.push({ row, pk: String(row[pkCol]), key, updated, newPk, pkChanged }); } @@ -7335,6 +8759,7 @@ this.updateSecondaryIndexes(tableName, newPk, updated, row); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += count; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7444,9 +8869,16 @@ this.ensureTable(tableName); // v0.7.4: 防御 —— QueryBuilder 直通引擎不经 Executor 子查询解析, // 未解析的 $subquery/$col/$exists 在 matchWhere 中恒 false → 静默 0 行 - if (containsUnresolvedSubqueries(query.where)) { - throw new DatabaseError('Unresolved subqueries/column references in DELETE WHERE (use db.query() to execute subqueries)', 'NOT_SUPPORTED'); - } + // v0.8.0(B-3):**不再需要**"检测到未解析标记就抛 NOT_SUPPORTED"的防御。 + // + // 那段防御存在的原因是 QueryBuilder 直通引擎、绕过了 Executor 的子查询解析, + // 于是 `$subquery`/`$col`/`$exists` 在引擎层判 UNKNOWN → 静默影响 0 行。 + // B-3 把 builder 改为"只产出 AST、执行一律经 Executor"之后,写路径上不可能 + // 再出现未解析标记 —— 把"管线缺失"暴露成用户错误(NOT_SUPPORTED)是错误的 + // 补救方向:用户没有做错任何事。 + // + // 保留 `containsUnresolvedSubqueries` 的导入会给后来者"这里需要防御"的错觉, + // 因此一并移除(见 where-matcher 中该函数仍被 Executor 用于写路径预检)。 const rows = await this.getAllRows(tableName); let count = 0; // v0.3.1: 批量 WAL 写入(组提交) @@ -7491,6 +8923,7 @@ } } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += count; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7638,7 +9071,7 @@ skipped++; return true; } - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); count++; return count < limit; }; @@ -7646,7 +9079,7 @@ // 事务中:物化后逐行回调(快照合并需要全量行集) const rows = await this.find(tableName, { ...query, orderBy: undefined, limit: undefined, offset: undefined }); for (const row of rows) { - onRow(project ? project(row) : row); + onRow(project ? project(row) : cloneRow(row)); } return rows.length; } @@ -7662,7 +9095,7 @@ // 全表惰性扫描(含 WHERE 过滤,不物化;v0.7.4: callback 返回 false 提前终止, // 未消费的 SSTable 块 / 子树不再解析 —— 真流式,大表 limit 内存 O(1)) await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - this.lsm.rangeScanLazy(prefix, `${prefix}\uffff`, (key, value) => { + await this.lsm.rangeScanLazy(prefix, `${prefix}\uffff`, (key, value) => { if (count >= limit) return false; const row = { ...value }; @@ -7706,6 +9139,7 @@ this.updateSecondaryIndexes(tableName, String(row[pkCol]), null, row); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += rows.length; await this.checkpointManager.tick(); this.tryGC(); @@ -7727,6 +9161,18 @@ throw new DatabaseError(`Column "${column.name}" already exists in table "${tableName}"`, 'COLUMN_EXISTS'); } schema.columns[column.name] = column; + // v0.8.0 根治:ALTER ADD 的索引/唯一列必须真正建立索引 LSM 并回填。 + // + // 此前只写 schema + persistSchemas,索引 LSM 从未创建 → `unique` 标记形同虚设, + // 重复值可任意写入(实测四个引擎全部接受);重启时索引才被建出来,与 Memory + // "重启静默丢行"是同一问题的另一半。 + // + // 复用 createIndex:它已经实现了"回填 + 存量唯一性校验 + 失败时原子清理" + // (v0.6.2/v0.7.3 的修复成果),此处不重复实现以避免再次漂移。 + if (column.index || column.unique) { + // createIndex 会读取 schema.columns[column],上面的赋值已满足 + await this.createIndex(tableName, column.name, column.unique === true); + } await this.persistSchemas(); return; } @@ -7752,7 +9198,7 @@ const prefix = `${tableName}:`; const endKey = `${prefix}\uffff`; await this.lsm.prefetchRange(prefix, endKey); - const entries = this.lsm.rangeScan(prefix, endKey); + const entries = await this.lsm.rangeScan(prefix, endKey); const walRecords = []; for (const [key, value] of entries) { if (!(column.name in value)) @@ -7772,6 +9218,7 @@ }); } await this.wal.appendBatch(walRecords); + this.txnWalRecordCount += walRecords.length; this.opCounter += walRecords.length; await this.checkpointManager.tick(); this.trimAllCaches(); @@ -7879,6 +9326,8 @@ throw new DatabaseError('Transaction already in progress', 'TX_ACTIVE'); this.currentTxnId = this.mvcc.beginTransaction(); this.txnSnapshot = new Map(); + // v0.8.0: 事务内 WAL 记录计数从 0 开始(保存点边界依赖它) + this.txnWalRecordCount = 0; // v0.7.3-fix: WAL BEGIN 写失败回滚内存事务状态 —— 此前 append 抛错(full 模式) // 时 currentTxnId 已设置 → TX_ACTIVE 永久泄漏(后续无法开始新事务)。 // 回滚 mvcc 登记 + 快照后重抛,调用方可重试。 @@ -7889,6 +9338,7 @@ tableName: '', key: '', }); + this.txnWalRecordCount = 1; // BEGIN 本身占一条 } catch (error) { this.mvcc.rollbackTransaction(this.currentTxnId); @@ -7921,6 +9371,13 @@ } } this.mvcc.commitTransaction(this.currentTxnId); + // v0.8.0 根治:事务结束时清空 savepoint 表。 + // 此前 commit/rollback **都不清理** savepoints,于是: + // 1. 上一个事务的名字仍被占用 → 新事务 SAVEPOINT 同名报 "already exists"; + // 2. 新事务 ROLLBACK TO 陈旧名字会拿到旧事务快照,把当前事务的写入静默替换。 + this.savepoints.clear(); + this.savepointWalBoundary.clear(); + this.txnWalRecordCount = 0; this.currentTxnId = null; this.txnSnapshot = null; } @@ -7950,6 +9407,10 @@ } this.mvcc.rollbackTransaction(txnId); this.txnSnapshot = null; + // v0.8.0:事务结束清空 savepoint(理由同 commitTransaction) + this.savepoints.clear(); + this.savepointWalBoundary.clear(); + this.txnWalRecordCount = 0; this.currentTxnId = null; // v0.3.3: 事务内直接写入了二级索引 LSM,回滚后全量重建受影响表的索引 for (const tableName of affectedTables) { @@ -7968,11 +9429,32 @@ txnId: this.currentTxnId, snapshot: this.txnSnapshot ? new Map(this.txnSnapshot) : null, }); + // v0.8.0: 记录边界(该事务已追加的记录条数)—— 见 txnWalRecordCount 说明 + this.savepointWalBoundary.set(`${this.currentTxnId}:${name}`, this.txnWalRecordCount); } async rollbackToSavepoint(name) { const sp = this.savepoints.get(name); if (!sp) throw new DatabaseError(`Savepoint "${name}" not found`, 'SAVEPOINT_NOT_FOUND'); + // v0.8.0 根治:savepoint 归属校验。 + // 此前只按名字查找,而 savepoints 在 commit/rollback 时**从不清空** —— + // 上一个事务遗留的 savepoint 会让当前事务的写入被旧事务快照静默替换 + // (实测:本事务 update 后 ROLLBACK TO 陈旧名 + COMMIT,写入凭空消失)。 + if (sp.txnId !== this.currentTxnId) { + throw new DatabaseError(`Savepoint "${name}" belongs to a different transaction (stale savepoint)`, 'SAVEPOINT_NOT_FOUND'); + } + // v0.8.0: 先写 WAL 标记再改内存(与 commit/rollback 的"WAL 领先内存"一致)—— + // 否则崩溃恢复会把该事务在 savepoint 之前写入的记录重新应用,已回滚的行复活。 + const boundary = this.savepointWalBoundary.get(`${this.currentTxnId}:${name}`) ?? 0; + await this.wal.append({ + type: WALRecordType.SAVEPOINT_ROLLBACK, + txnId: this.currentTxnId, + tableName: '', + key: '', + data: { replayFromIndex: boundary }, + }); + this.txnWalRecordCount++; + this.savepointWalBoundary.set(`${this.currentTxnId}:${name}`, boundary); // v0.6.3-fix: 记录当前快照涉及的表(回滚后重建索引)—— 此前事务内直写 // 索引 LSM,savepoint 回滚只还原快照 → savepoint 之后的索引条目残留 const affectedTables = new Set(); @@ -8027,9 +9509,11 @@ const prefix = `${tableName}:`; // 预加载范围内涉及的 SSTable,避免 rangeScan 时缓存未命中静默丢数据 await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - const entries = this.lsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await this.lsm.rangeScan(prefix, `${prefix}\uffff`); const rows = entries.map(([key, value]) => { - const row = { ...value }; + // v0.8.0: 深拷贝(此前 `{ ...value }` 只做浅拷贝,嵌套 json 值仍与 LSM + // 内部对象共享引用 —— 调用方改 rows[0].nested.a 会改写存储) + const row = cloneRow(value); row[pkCol] = key.slice(prefix.length); return row; }); @@ -8073,29 +9557,26 @@ return Object.keys(schema.columns)[0]; } validateRow(schema, row) { - const validated = {}; - for (const [colName, colDef] of Object.entries(schema.columns)) { - let value = row[colName]; - if (value === undefined && colDef.default !== undefined) - value = colDef.default; - if (colDef.required && (value === undefined || value === null)) { - throw new DatabaseError(`Column "${colName}" is required in table "${schema.name}"`, 'VALIDATION_ERROR'); - } - // v0.7.4: 主键列强制非空(SQL 语义 PK 隐含 NOT NULL)—— - // 此前 null/undefined 主键被 String() 化为 "null"/"undefined" 静默入库 - if (colDef.primaryKey && (value === undefined || value === null)) { - throw new DatabaseError(`Primary key column "${colName}" in table "${schema.name}" cannot be null or undefined`, 'VALIDATION_ERROR'); - } - if (value !== undefined && value !== null) { - this.checkType(colName, colDef.type, value, colDef); - } - if (value !== undefined) - validated[colName] = value; - } - return validated; + // v0.8.0(B-1):委托给**唯一**的行校验实现(table/validation.ts)。 + // + // 此前这里是第二份独立实现(经由 checkFieldType 恰好覆盖了 maxLength/min/max, + // 而 Memory 那份没有)—— 于是同一份 schema、同一条 INSERT 是否报约束错误 + // 取决于选了哪个引擎(缺陷 A12),且两者对未知列都静默丢弃(A17)。 + return compileValidator(schema).validateRow(row); } - checkType(colName, type, value, colDef) { - checkFieldType('', colName, type, value, colDef); + /** + * v0.8.0(B-1):写入前置校验 —— 见 `IStorageEngine.validatePayload` 契约。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + this.ensureTable(tableName); + const schema = this.schemas.get(tableName); + const validator = compileValidator(schema); + for (const row of rows) { + if (mode === 'update') + validator.validatePartial(stripUndefinedUpdates(row)); + else + validator.validateRow(row); + } } // ======================================================================= // Schema 持久化 @@ -8293,7 +9774,7 @@ const prefix = `${tableName}:`; const endKey = `${prefix}\uffff`; await this.lsm.prefetchRange(prefix, endKey); - const entries = this.lsm.rangeScan(prefix, endKey); + const entries = await this.lsm.rangeScan(prefix, endKey); for (const [key] of entries) { this.lsm.delete(key); } @@ -8313,11 +9794,15 @@ return cols; } /** - * v0.6.2: 同步唯一性检查(须在批次级 prefetchPrefixRanges 之后调用,循环内无 await)。 + * 唯一性检查。 + * + * v0.8.0: 由 `checkUniqueSync` 改名并改为 async —— 此前命名为 "Sync" 是因为它 + * 依赖"批次级 prefetchPrefixRanges 之后索引数据已在缓存中"这一约定。现在 + * LSM 读取自洽(未命中即回源),因此这里可以、也必须 await。 * 索引不含 null 条目(null 值不受唯一约束,与 MemoryEngine 语义一致)。 * @param currentPk 当前行主键(更新路径用于排除自身旧索引条目;插入路径无自身条目) */ - checkUniqueSync(tableName, uniqueCols, row, currentPk) { + async checkUnique(tableName, uniqueCols, row, currentPk) { for (const colName of uniqueCols) { const val = row[colName]; if (val === undefined || val === null) @@ -8326,7 +9811,7 @@ if (!idxLsm) continue; const prefix = `${String(val)}:`; - const entries = idxLsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await idxLsm.rangeScan(prefix, `${prefix}\uffff`); for (const [, entry] of entries) { const pk = entry.pk; if (pk !== undefined && pk !== currentPk) { @@ -8400,14 +9885,14 @@ if (typeof condition !== 'object' || condition === null) { const key = `${tableName}:${condition}`; await this.lsm.prefetchKeys([key]); - const value = this.lsm.get(key); + const value = await this.lsm.get(key); return value ? [{ ...value, [pkCol]: condition }] : []; } const cond = condition; if ('$eq' in cond) { const key = `${tableName}:${cond.$eq}`; await this.lsm.prefetchKeys([key]); - const value = this.lsm.get(key); + const value = await this.lsm.get(key); return value ? [{ ...value, [pkCol]: cond.$eq }] : []; } // v0.3.3: PK $in → 主 LSM 多次精确查找(替代冗余 PK 二级索引) @@ -8420,7 +9905,7 @@ const pk = String(v); if (seen.has(pk)) continue; - const value = this.lsm.get(`${tableName}:${pk}`); + const value = await this.lsm.get(`${tableName}:${pk}`); if (value) { seen.add(pk); rows.push({ ...value, [pkCol]: pk }); @@ -8432,7 +9917,7 @@ if ('$gt' in cond || '$gte' in cond || '$lt' in cond || '$lte' in cond) { const prefix = `${tableName}:`; await this.lsm.prefetchRange(prefix, `${prefix}\uffff`); - const entries = this.lsm.rangeScan(prefix, `${prefix}\uffff`); + const entries = await this.lsm.rangeScan(prefix, `${prefix}\uffff`); const rows = []; for (const [key, value] of entries) { const candidate = { ...value, [pkCol]: key.slice(prefix.length) }; @@ -8460,6 +9945,12 @@ // v0.6.2-fix(P1): 同上,$eq: null(IS NULL)不走索引 if (c.$eq === null) continue; + // v0.8.0 根治(与 MemoryEngine 同步):非原始值一律不走索引。 + // `String({...})` 得到 "[object Object]" 这类无意义键,索引查找必然为空 + // 并短路全表扫描 → 结果静默为空。真实触发场景是"未解析的操作数": + // { $eq: { $col: 'y' } } ← 列对列比较(t.x = t.y) + if (typeof c.$eq === 'object') + continue; const v = String(c.$eq); return this.indexScanToRows(tableName, pkCol, idxLsm, v, v); } @@ -8468,6 +9959,10 @@ // v0.6.2-fix(P1): IN 列表含 null 不走索引(索引不含 null 条目,会漏匹配 null 行) if (c.$in.some((v) => v === null)) continue; + // v0.8.0: IN 列表含非原始值(未解析的 $subquery / $col)不走索引 —— + // String() 会得到无意义键,查找为空并短路全表扫描 → 静默空结果 + if (c.$in.some((v) => typeof v === 'object' && v !== null)) + continue; // v0.7.3-perf: 批级预加载全部值的索引范围 + 主表行(各一次 drainChain)—— // 此前逐值 indexScanToRows:每个值一次 prefetchRange + prefetchKeys, // 后台 compaction 长耗时时 N 倍放大(与 v0.6.1 修的 insert 批量预加载 @@ -8478,7 +9973,7 @@ const seenPks = new Set(); // v0.4.1: IN 值可能重复,按 pk 去重 const pks = []; for (const val of values) { - const entries = idxLsm.rangeScan(val, `${val}\uffff`); + const entries = await idxLsm.rangeScan(val, `${val}\uffff`); for (const [, idxEntry] of entries) { const pk = idxEntry.pk; if (pk && !seenPks.has(pk)) { @@ -8489,7 +9984,7 @@ } await this.lsm.prefetchKeys(pks.map((pk) => `${tableName}:${pk}`)); for (const pk of pks) { - const row = this.lsm.get(`${tableName}:${pk}`); + const row = await this.lsm.get(`${tableName}:${pk}`); if (row) results.push({ ...row, [pkCol]: pk }); } @@ -8513,7 +10008,7 @@ const actualEndKey = endKey.includes('\uffff') ? endKey : `${endKey}\uffff`; // 预加载索引 LSM 与主 LSM 涉及的 SSTable await idxLsm.prefetchRange(startKey, actualEndKey); - const entries = idxLsm.rangeScan(startKey, actualEndKey); + const entries = await idxLsm.rangeScan(startKey, actualEndKey); const pks = []; for (const [, idxEntry] of entries) { const pk = idxEntry.pk; @@ -8523,7 +10018,7 @@ await this.lsm.prefetchKeys(pks.map((pk) => `${tableName}:${pk}`)); const rows = []; for (const pk of pks) { - const row = this.lsm.get(`${tableName}:${pk}`); + const row = await this.lsm.get(`${tableName}:${pk}`); if (row) rows.push({ ...row, [pkCol]: pk }); } @@ -8852,6 +10347,16 @@ } throw error; } + /** + * v0.8.0(B-1):写入前置校验 —— 委托给内存引擎(与磁盘引擎同 schema)。 + * + * 关键点:**只判定一次**。Hybrid 的 write-through 会把同一批行先写内存再写磁盘, + * 两个引擎各自校验会给出同一结论(现在共享同一个 `compileValidator`), + * 但由本方法统一前置,可保证多行批量在任何副作用之前整体失败。 + */ + async validatePayload(tableName, rows, mode = 'insert') { + return this.memoryEngine.validatePayload(tableName, rows, mode); + } async insert(tableName, rows) { const pks = await this.memoryEngine.insert(tableName, rows); // write-through: 同步写入磁盘 @@ -8972,15 +10477,30 @@ * metona-sqlark Query Builder — 链式查询构建器 * @module query/builder * - * 链式调用 → 构建 AST → 执行引擎操作。 - * 支持 JOIN(需要 Executor)。 + * ============================================================================ + * v0.8.0(B-3):**只产出 AST,执行一律交给 Executor** + * ============================================================================ + * 修复前每个 builder 的 `execute()` 都有自己的执行动作: + * - `SelectQueryBuilder`:**无 JOIN 时直接调 `engine.find`**,只有 JOIN 才走 + * executor; + * - `UpdateQueryBuilder` / `DeleteQueryBuilder`:直接调 `engine.update/delete`。 + * + * 于是"同一条语义"在 builder 路径与 SQL 路径上走两条管线,规则各写一份: + * - SELECT 的常量列/别名/CASE 投影在 builder 路径不存在 + * (`db.table('t').select(['t.n'])` 的输出键、`SELECT 1` 之类行为不同); + * - `maxRowsPerQuery`、`distinct`、`groupBy`/`having`、`fromSubquery` 等阶段 + * 在直通路径上完全不经过; + * - 未解析的 `$subquery`/`$col` 在直通路径上无人解析 → 引擎判 UNKNOWN → + * **静默 0 行**(这正是 v0.7.4 要为此加"显式拒绝"防御的原因)。 + * + * 现在 builder 只负责"拼 AST",执行统一走 `executor.execute(ast)`; + * 需要直通时由 executor 内部判断(它本来就是唯一知道"能不能下推"的地方)。 */ // --------------------------------------------------------------------------- // SelectQueryBuilder // --------------------------------------------------------------------------- class SelectQueryBuilder { - constructor(engine, tableName, _columns = ['*'], executor) { - this.engine = engine; + constructor(tableName, executor, _columns = ['*']) { this.tableName = tableName; this._columns = _columns; this._where = {}; @@ -9037,22 +10557,15 @@ this._offset = n; return this; } - /** 执行查询 */ + /** + * 执行查询 —— 拼出 AST 后交给 Executor(**唯一**执行管线)。 + * + * 注意不要再为"无 JOIN"加一条 `engine.find` 快路:那条路会绕过 + * 投影/列校验/LIMIT 下推判定/maxRowsPerQuery,从而与 `db.query()` 给出不同结果 + * (B-3 修复前的实际状态)。executor 自己会在安全时下推到引擎,不需要 builder 代劳。 + */ async execute() { - // 有 JOIN → 通过 Executor 执行 - if (this._joins.length > 0 && this._executor) { - const ast = this.toAST(); - return this._executor.execute(ast); - } - // 无 JOIN → 直接调用引擎 - return this.engine.find(this.tableName, { - table: this.tableName, - columns: this._columns, - where: this._where, - orderBy: this._orderBy.length > 0 ? this._orderBy : undefined, - limit: this._limit, - offset: this._offset, - }); + return this._executor.execute(this.toAST()); } /** 获取 AST */ toAST() { @@ -9073,24 +10586,43 @@ // UpdateQueryBuilder // --------------------------------------------------------------------------- class UpdateQueryBuilder { - constructor(engine, tableName, _updates, onWrite, onHooks) { - this.engine = engine; + constructor(tableName, _updates, executor, + /** + * TABLE API 的生命周期回调(`beforeUpdate` / `afterUpdate` / onWrite 广播)。 + * + * 为什么由 `Table` 注入而不是 builder 自己触发:builder 的职责是**产出 AST**, + * 它不该知道钩子/广播的存在(否则又会像修复前那样"builder 顺带把写入也做了", + * 从而绕过 Executor)。钩子被包裹在**唯一管线**之外, + * 顺序与修复前完全一致:before → executor → onWrite → after。 + * + * 回调接收**实际执行的语句**(含 builder 上累积的 where), + * 而不是构造 builder 时的空 where —— 后者会让 `beforeUpdate` 的 + * `query.where` 永远是 `{}`(钩子拿不到过滤条件,等于信息缺失)。 + */ + hooks) { this.tableName = tableName; this._updates = _updates; + this.executor = executor; + this.hooks = hooks; this._where = {}; - this.onWrite = onWrite; - this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } + /** + * 执行更新 —— 走 Executor(唯一的写管线)。 + * + * 修复前这里直接调 `engine.update`:`$subquery` / `$col` / `$exists` 无人解析, + * 引擎层 matchWhere 判 UNKNOWN → **静默影响 0 行**(返回 0 且无报错)。 + * 引擎层为此加过"检测未解析标记就抛 NOT_SUPPORTED"的防御 —— 那是把 + * "管线缺失"暴露成用户错误;正确做法是把请求送进唯一管线。 + */ async execute() { - const query = { table: this.tableName, where: this._where }; - await this.onHooks?.('beforeUpdate', [query, this._updates]); - const count = await this.engine.update(this.tableName, query, this._updates); - this.onWrite?.(this.tableName); - await this.onHooks?.('afterUpdate', [query, this._updates, count]); + const stmt = this.toAST(); + await this.hooks?.before?.(stmt); + const count = await this.executor.execute(stmt); + await this.hooks?.after?.(count, stmt); return count; } toAST() { @@ -9101,23 +10633,24 @@ // DeleteQueryBuilder // --------------------------------------------------------------------------- class DeleteQueryBuilder { - constructor(engine, tableName, onWrite, onHooks) { - this.engine = engine; + constructor(tableName, executor, + /** TABLE API 生命周期回调,语义见 `UpdateQueryBuilder` 的说明 */ + hooks) { this.tableName = tableName; + this.executor = executor; + this.hooks = hooks; this._where = {}; - this.onWrite = onWrite; - this.onHooks = onHooks; } where(condition) { this._where = { ...this._where, ...condition }; return this; } + /** 执行删除 —— 走 Executor(同 UpdateQueryBuilder.execute 的理由) */ async execute() { - const query = { table: this.tableName, where: this._where }; - await this.onHooks?.('beforeDelete', [query]); - const count = await this.engine.delete(this.tableName, query); - this.onWrite?.(this.tableName); - await this.onHooks?.('afterDelete', [query, count]); + const stmt = this.toAST(); + await this.hooks?.before?.(stmt); + const count = await this.executor.execute(stmt); + await this.hooks?.after?.(count, stmt); return count; } toAST() { @@ -9169,7 +10702,21 @@ } // ---- 查询 ---- select(columns = ['*']) { - return new SelectQueryBuilder(this.engine, this.name, columns, this.executor); + return new SelectQueryBuilder(this.name, this.requireExecutor('select'), columns); + } + /** + * v0.8.0(B-3):取执行器;缺失即**明确失败**。 + * + * 修复前 builder 在拿不到 executor 时会退化为"直接调引擎" —— 于是 + * `db.table('t')` 与 `db.query()` 两条路径的语义不同(投影/列校验/LIMIT 下推/ + * maxRowsPerQuery 在直通路径上全部缺失)。现在只保留一条管线: + * 没有 executor 就没有可用的查询 API,显式报错而不是悄悄降级。 + */ + requireExecutor(operation) { + if (!this.executor) { + throw new DatabaseError(`Table.${operation}() requires a query executor (obtain the table via db.table())`, 'NOT_SUPPORTED'); + } + return this.executor; } /** v0.4.0: 流式查询 — 逐行回调,不物化全部结果 */ async stream(onRow, query = {}) { @@ -9194,12 +10741,37 @@ }, onRow); } // ---- 更新 ---- + /** + * v0.8.0(B-3):写操作也走**唯一管线**(Executor),生命周期钩子由本方法注入。 + * + * 修复前 `UpdateQueryBuilder` 直接调 `engine.update`:`$subquery`/`$col` 无人解析 + * → 引擎判 UNKNOWN → 静默影响 0 行;`beforeUpdate`/`afterUpdate` 的触发点也因此 + * 与 SQL 路径不同(一条在 builder 里、一条在 core 里)。 + */ update(updates) { - return new UpdateQueryBuilder(this.engine, this.name, updates, this.onWrite, this.onHooks); + return new UpdateQueryBuilder(this.name, updates, this.requireExecutor('update'), { + // 钩子接收实际语句(含 builder 累积的 where),与 SQL 路径的 + // `triggerStatementHooks` 传参形状一致:{ table, where } + before: async (stmt) => { + await this.onHooks?.('beforeUpdate', [{ table: stmt.table, where: stmt.where }, updates]); + }, + after: async (count, stmt) => { + this.onWrite?.(this.name); + await this.onHooks?.('afterUpdate', [{ table: stmt.table, where: stmt.where }, updates, count]); + }, + }); } // ---- 删除 ---- delete() { - return new DeleteQueryBuilder(this.engine, this.name, this.onWrite, this.onHooks); + return new DeleteQueryBuilder(this.name, this.requireExecutor('delete'), { + before: async (stmt) => { + await this.onHooks?.('beforeDelete', [{ table: stmt.from, where: stmt.where }]); + }, + after: async (count, stmt) => { + this.onWrite?.(this.name); + await this.onHooks?.('afterDelete', [{ table: stmt.from, where: stmt.where }, count]); + }, + }); } // ---- 聚合 ---- async count(where) { @@ -9354,6 +10926,17 @@ TokenType["TO"] = "TO"; // 标识符 & 字面量 TokenType["IDENTIFIER"] = "IDENTIFIER"; + /** + * v0.8.0: 分隔标识符(双引号包裹,SQL 标准 `"name"`)。 + * + * 此前双引号被当作字符串定界符处理,`SELECT "name" FROM t` 会静默产出一个名为 + * `'name'` 的**常量列**(行数正确、值全错、无任何报错),且该行为被 + * tests/sql/lexer.test.ts 钉死为期望。现按 SQL 标准区分: + * 'x' → STRING(字符串字面量) + * "x" → QUOTED_IDENTIFIER(标识符,用于含特殊字符/保留字/大小写敏感的列名) + * 双引号内以 "" 表示一个双引号。 + */ + TokenType["QUOTED_IDENTIFIER"] = "QUOTED_IDENTIFIER"; TokenType["STRING"] = "STRING"; TokenType["NUMBER"] = "NUMBER"; // 运算符 & 分隔符 @@ -9475,7 +11058,7 @@ } /** 读取下一个 Token */ nextToken() { - this.skipWhitespace(); + this.skipWhitespaceAndComments(); let tok; switch (this.ch) { case ',': @@ -9531,23 +11114,16 @@ } break; case "'": + tok = this.readString(); + break; case '"': - tok = this.readString(this.ch); + // v0.8.0: 双引号 = 分隔标识符(SQL 标准),不再当作字符串字面量 + tok = this.readQuotedIdentifier(); break; case '': tok = { type: TokenType.EOF, value: '', position: this.position }; break; default: - // SQL 注释: -- 行注释 - if (this.ch === '-' && this.peekChar() === '-') { - this.skipLineComment(); - return this.nextToken(); - } - // SQL 注释: /* 块注释 */ - if (this.ch === '/' && this.peekChar() === '*') { - this.skipBlockComment(); - return this.nextToken(); - } if (this.isLetter(this.ch)) { const ident = this.readIdentifier(); const keyword = KEYWORDS[ident.toUpperCase()]; @@ -9591,9 +11167,31 @@ return ''; return this.input[this.readPosition]; } - skipWhitespace() { - while (this.ch === ' ' || this.ch === '\t' || this.ch === '\n' || this.ch === '\r') { - this.readChar(); + /** + * 跳过空白与注释(v0.8.0:改为**循环**而非递归)。 + * + * 此前在 default 分支里用 `return this.nextToken()` 递归跳过注释, + * 递归深度 = 连续注释个数:两万个连续的块注释就会直接 + * `RangeError: Maximum call stack size exceeded`(且是原生错误而非 DatabaseError, + * 调用方无法按 code 分类)。现在统一在一个循环里消费空白与注释。 + */ + skipWhitespaceAndComments() { + for (;;) { + // 空白 + while (this.ch === ' ' || this.ch === '\t' || this.ch === '\n' || this.ch === '\r') { + this.readChar(); + } + // -- 行注释 + if (this.ch === '-' && this.peekChar() === '-') { + this.skipLineComment(); + continue; + } + // /* 块注释 */ + if (this.ch === '/' && this.peekChar() === '*') { + this.skipBlockComment(); + continue; + } + return; } } /** 跳过 -- 行注释到行尾 */ @@ -9602,17 +11200,26 @@ this.readChar(); } } - /** 跳过块注释 slash-star ... star-slash */ + /** + * 跳过块注释 slash-star ... star-slash + * + * v0.8.0 根治:未闭合的块注释必须**报错**。 + * 此前循环到 EOF 就直接返回、不抛错,于是 `DELETE FROM t WHERE id = '4' /*` + * 会**照常执行删除**(审计实测真的删掉了 1 行);SQLite 会报 + * `unterminated /* comment`。任何被截断/拼接的 SQL 都会因此静默改变语义。 + */ skipBlockComment() { - this.readChar(); // skip * - this.readChar(); // move past * + const start = this.position; + this.readChar(); // skip '/' + this.readChar(); // skip '*' while (this.ch !== '' && !(this.ch === '*' && this.peekChar() === '/')) { this.readChar(); } - if (this.ch !== '') { - this.readChar(); // skip * - this.readChar(); // skip / + if (this.ch === '') { + throw new DatabaseError(`Unterminated block comment at position ${start}`, 'PARSE_ERROR'); } + this.readChar(); // skip '*' + this.readChar(); // skip '/' } readIdentifier() { const start = this.position; @@ -9638,28 +11245,37 @@ } return this.input.slice(start, this.position); } - readString(quote) { + /** + * 读取单引号字符串字面量。 + * + * v0.8.0 根治:**移除反斜杠转义**(此前只支持单引号前的反斜杠)。 + * + * 此前只识别「反斜杠 + 单引号」(MySQL 方言的半个实现):双反斜杠不解转义,于是 + * - 单引号前的反斜杠被静默吞掉; + * - 以反斜杠结尾的 Windows 路径会**吞掉闭引号**,抛出一条 + * 与用户输入无关的 "Unterminated string literal"; + * - 更严重的是,参数绑定器 params.ts 只把单引号翻倍、不处理反斜杠, + * 两份词法规则不一致 —— "参数不可能改变 SQL 结构"这条不变量在文本层已不成立。 + * + * SQL 标准(以及 SQLite / PostgreSQL,本项目对齐的方言)中反斜杠是普通字符, + * 反斜杠本身是普通字符、引号靠两个连续单引号表达。移除方言转义后,词法器与绑定器的字符串边界判定 + * 完全一致,且任意以反斜杠结尾的参数值都能正确绑定。 + */ + readString() { const start = this.position + 1; // 跳过一个引号 this.readChar(); // 跳过开始引号 let value = ''; while (this.ch !== '') { - if (this.ch === quote) { - // v0.3.3: 支持 SQL 标准 '' 转义(两个连续引号 = 一个引号) - if (this.peekChar() === quote) { - value += quote; + if (this.ch === "'") { + // SQL 标准 '' 转义(两个连续引号 = 一个引号) + if (this.peekChar() === "'") { + value += "'"; this.readChar(); // 跳过第二个引号 this.readChar(); continue; } break; // 结束引号(由 nextToken 的 readChar 跳过) } - // 反斜杠转义(兼容旧语法) - if (this.ch === '\\' && this.peekChar() === quote) { - this.readChar(); - value += quote; - this.readChar(); - continue; - } value += this.ch; this.readChar(); } @@ -9674,6 +11290,42 @@ position: start, }; } + /** + * v0.8.0: 读取双引号分隔标识符(SQL 标准 `"column"`)。 + * + * 双引号内以 `""` 表示一个双引号字符(与单引号字符串的 `''` 规则对称)。 + * 未闭合同样显式报错,与字符串字面量保持一致。 + */ + readQuotedIdentifier() { + const start = this.position; + const contentStart = this.position + 1; + this.readChar(); // 跳过开始引号 + let value = ''; + while (this.ch !== '') { + if (this.ch === '"') { + if (this.peekChar() === '"') { + value += '"'; + this.readChar(); + this.readChar(); + continue; + } + break; + } + value += this.ch; + this.readChar(); + } + if (this.ch === '') { + throw new DatabaseError(`Unterminated quoted identifier at position ${start}`, 'PARSE_ERROR'); + } + if (value.length === 0) { + throw new DatabaseError(`Empty quoted identifier at position ${start}`, 'PARSE_ERROR'); + } + return { + type: TokenType.QUOTED_IDENTIFIER, + value, + position: contentStart, + }; + } isLetter(ch) { return /[a-zA-Z_]/.test(ch); } @@ -10046,6 +11698,7 @@ } const right = this.parseSelect(); const unionStmt = { type: 'SELECT_UNION', left, right, all: all || undefined }; + this.adoptTrailingClauses(unionStmt, right); // 链式 UNION if (this.curTokenIs(TokenType.UNION)) { return this.parseUnionChain(unionStmt); @@ -10062,11 +11715,42 @@ } const right = this.parseSelect(); const unionStmt = { type: 'SELECT_UNION', left, right, all: all || undefined }; + this.adoptTrailingClauses(unionStmt, right); if (this.curTokenIs(TokenType.UNION)) { return this.parseUnionChain(unionStmt); } return unionStmt; } + /** + * v0.8.0(A26):把"最后一个 SELECT 上的 ORDER BY / LIMIT / OFFSET"上移到 + * 复合查询节点,并把这些子句从该 SELECT 上**移除**。 + * + * 为什么必须"移动"而不是"复制": + * - 语法上它们写在最后一个 SELECT 之后,但 SQL 语义作用于整个 UNION + * (`A UNION B LIMIT 3` 是"合并去重后取前 3 行",不是"B 取前 3 行"); + * - 若只复制不移除,LIMIT 会**应用两次** —— 正是 A5/A6 那类"两处都生效" + * 缺陷的同一个坑(B 先被截断,再对合并结果截断,结果可能少行)。 + * + * 由于 `parseSelect` 无法预知后面有没有 UNION(它在返回后才知道), + * 只能先让它照常解析、发现 UNION 时再回收 —— 这比"预读 UNION"简单且无回溯。 + */ + adoptTrailingClauses(unionStmt, right) { + // 链式 UNION 时右侧可能已是 UNION 节点,其尾部子句在创建时已上移 + if (right.type !== 'SELECT') + return; + if (right.orderBy) { + unionStmt.orderBy = right.orderBy; + delete right.orderBy; + } + if (right.limit !== undefined) { + unionStmt.limit = right.limit; + delete right.limit; + } + if (right.offset !== undefined) { + unionStmt.offset = right.offset; + delete right.offset; + } + } /** 解析 JOIN 子句列表 */ parseJoinClauses() { const joins = []; @@ -10177,6 +11861,23 @@ this.expect(TokenType.RPAREN); values.push(rowValues); } while (this.curTokenIs(TokenType.COMMA)); + // v0.8.0 根治:显式列名时校验每行值的个数与列数一致。 + // + // 此前完全不校验 arity,实测: + // INSERT INTO t (id, name) VALUES ('4','z',9) → 多余的 9 被**静默丢弃** + // INSERT INTO t VALUES ('3') → 静默写入半行(其余列缺失) + // SQLite / MySQL 都会报错。静默丢弃/截断属于"静默数据丢失", + // 必须在解析期拦下(此时无需 schema,只要有显式列名即可判断)。 + // + // 未显式给列名时(INSERT INTO t VALUES (...))需要 schema 才能判断个数, + // 由 executor 在拿到 schema 后校验(见 validateInsertArity)。 + if (columns) { + for (let i = 0; i < values.length; i++) { + if (values[i].length !== columns.length) { + throw this.error(`INSERT column/value count mismatch: ${columns.length} column(s) but row ${i + 1} has ${values[i].length} value(s)`); + } + } + } return { type: 'INSERT', into: tableName, @@ -10187,12 +11888,23 @@ // =================================================================== // UPDATE // =================================================================== + /** + * v0.8.0: 创建**无原型**对象,用于以用户提供的列名为键的映射。 + * + * 背景:`obj['__proto__'] = v` 在普通对象上会触发原型 setter 而不是新增属性, + * 于是 `UPDATE t SET __proto__ = 'x'` 的 sets 变成 `{}` —— 既没写进去、也不会被 + * v0.7.4 新增的"未知列显式报错"预检看到,表现为"返回成功但什么都没发生"。 + * 建表路径在 v0.7.1 已用 Object.create(null) 防护,此处补齐其余路径。 + */ + newColumnMap() { + return Object.create(null); + } parseUpdate() { this.expect(TokenType.UPDATE); const tableName = this.expectIdentifier('table name'); this.expect(TokenType.SET); - // SET col=val, ... - const sets = {}; + // SET col=val, ...(v0.8.0: 无原型对象,防 __proto__ 列名静默吞掉赋值) + const sets = this.newColumnMap(); do { if (this.curTokenIs(TokenType.COMMA)) this.nextToken(); @@ -10200,7 +11912,7 @@ this.expect(TokenType.EQ); sets[col] = this.parseValue(); } while (this.curTokenIs(TokenType.COMMA)); - let where = {}; + let where = this.newColumnMap(); if (this.curTokenIs(TokenType.WHERE)) { this.nextToken(); where = this.parseCondition(); @@ -10214,7 +11926,7 @@ this.expect(TokenType.DELETE); this.expect(TokenType.FROM); const tableName = this.expectIdentifier('table name'); - let where = {}; + let where = this.newColumnMap(); if (this.curTokenIs(TokenType.WHERE)) { this.nextToken(); where = this.parseCondition(); @@ -10381,22 +12093,46 @@ // =================================================================== // 条件表达式 // =================================================================== - /** condition → simple_cond ((AND|OR) simple_cond)* */ + /** + * condition → or_expr + * + * v0.8.0 根治:AND 的优先级必须高于 OR(SQL 标准)。 + * + * 此前实现是**纯左折叠**的单层循环: + * `a = 1 OR a = 2 AND b = 3` → `(a = 1 OR a = 2) AND b = 3` ← 错 + * 标准语义应为: + * `a = 1 OR a = 2 AND b = 3` → `a = 1 OR (a = 2 AND b = 3)` ← 对 + * + * 影响面:任何"权限条件 OR 业务条件 AND 软删标记"的写法都会静默返回错误行集 + * (审计实测:4 行表上返回 1 行而非 3 行)。这是本层影响面最大、改动最小的缺陷。 + * + * 现在按标准文法分层:or_expr → and_expr (OR and_expr)* + * and_expr → unary (AND unary)* + * unary → [NOT] primary + * 并且只在**确实有多个操作数**时才包 $and/$or,避免生成 {$and:[x]} 这种冗余节点 + * (否则 `WHERE a = 1` 的结构会从 `{a:{$eq:1}}` 变成 `{$and:[{a:{$eq:1}}]}`, + * 破坏既有 AST 契约与下游引擎的索引下推识别)。 + */ parseCondition() { - let left = this.parseSimpleCondition(); - while (this.curTokenIs(TokenType.AND) || this.curTokenIs(TokenType.OR)) { - const isAnd = this.curTokenIs(TokenType.AND); + return this.parseOrExpression(); + } + /** or_expr → and_expr (OR and_expr)* */ + parseOrExpression() { + const operands = [this.parseAndExpression()]; + while (this.curTokenIs(TokenType.OR)) { this.nextToken(); - const right = this.parseSimpleCondition(); - if (isAnd) { - // 合并到 $and - left = { $and: [left, right] }; - } - else { - left = { $or: [left, right] }; - } + operands.push(this.parseAndExpression()); } - return left; + return operands.length === 1 ? operands[0] : { $or: operands }; + } + /** and_expr → simple_cond (AND simple_cond)* */ + parseAndExpression() { + const operands = [this.parseSimpleCondition()]; + while (this.curTokenIs(TokenType.AND)) { + this.nextToken(); + operands.push(this.parseSimpleCondition()); + } + return operands.length === 1 ? operands[0] : { $and: operands }; } /** 公共 WHERE 条件入口(供 CASE WHEN 求值等外部场景,v0.3.1) */ parseWhere() { @@ -10439,8 +12175,12 @@ if (isNot) this.nextToken(); this.expect(TokenType.NULL); - const result = {}; - result[column] = isNot ? { $ne: null } : { $eq: null }; + const result = this.newColumnMap(); + // v0.8.0 三值语义:IS NULL / IS NOT NULL 是**谓词**,不是等值比较。 + // 此前生成为 { $eq: null } / { $ne: null } —— 在 SQL 标准里 + // `x = NULL` 恒为 UNKNOWN(不保留任何行),而 IS NULL 要保留 NULL 行。 + // 两者语义不同,必须用不同标记(见 query/sql-compare.ts 的谓词说明)。 + result[column] = isNot ? { $isNotNull: true } : { $isNull: true }; return result; } // BETWEEN val1 AND val2 @@ -10449,7 +12189,12 @@ const low = this.parseValue(); this.expect(TokenType.AND); const high = this.parseValue(); - const result = {}; + // v0.8.0 根治:BETWEEN 必须是**范围**条件。 + // 此前把同一个对象同时当成"操作符对象"和"操作数"传给 `$eq` + // (`{ $eq: { $gte, $lte } }`),matchOperator 的 `$eq` 收到一个对象再去比较, + // 结果只对"值恰好等于该对象"的行成立 —— 实测 `WHERE n BETWEEN 1 AND 2` + // 在 (1,2,NULL,3) 上只返回 1 行(应 2 行),静默错值。 + const result = this.newColumnMap(); result[column] = { $gte: low, $lte: high }; return result; } @@ -10460,8 +12205,19 @@ const low = this.parseValue(); this.expect(TokenType.AND); const high = this.parseValue(); - const result = {}; - result[column] = { $not: { $gte: low, $lte: high } }; + const result = this.newColumnMap(); + // v0.8.0:NOT BETWEEN ≡ (x < low) OR (x > high),直接展开为字段级 `$or`。 + // + // 此前生成 `{ $not: { $gte, $lte } }`。这**曾经**恒为空集:字段级 `$not` + // 把内层对象当"单个条件对象",key `$gte`/`$lte` 被当成列名去取 + // `row['$gte']` → undefined → 整条恒 UNKNOWN → 取反仍 UNKNOWN → 全部排除。 + // + // 求值器已修正(内层按操作符对象解释),但这里仍选择展开为 `$or`: + // - `$or` 的三值行为(含 NULL 时 UNKNOWN)是显式可读的; + // - 避免依赖"$not 作用于比较"与"$not 作用于谓词"(如 `$isNull`)的差别。 + // 两条路径都有测试锁定(tests/v080-sql-three-valued.test.ts 与 + // tests/sql/where-matcher.test.ts 的 `$not` 用例)。 + result[column] = { $or: [{ $lt: low }, { $gt: high }] }; return result; } // NOT LIKE / NOT IN(NOT 后紧跟 LIKE 或 IN) @@ -10474,13 +12230,13 @@ if (this.curTokenIs(TokenType.SELECT)) { const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $nin: { $subquery: subquery } }; return result; } const values = this.parseValueList(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $nin: values }; return result; } @@ -10489,7 +12245,7 @@ this.nextToken(); // skip NOT this.nextToken(); // skip LIKE const pattern = this.parseValue(); - const result = {}; + const result = this.newColumnMap(); result[column] = { $not: { $like: pattern } }; return result; } @@ -10498,7 +12254,7 @@ if (this.curTokenIs(TokenType.LIKE)) { this.nextToken(); const pattern = this.parseValue(); - const result = {}; + const result = this.newColumnMap(); result[column] = { $like: pattern }; return result; } @@ -10510,13 +12266,13 @@ if (this.curTokenIs(TokenType.SELECT)) { const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $in: { $subquery: subquery } }; return result; } const values = this.parseValueList(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { $in: values }; return result; } @@ -10524,7 +12280,7 @@ if (this.curTokenIs(TokenType.AND) || this.curTokenIs(TokenType.OR) || this.curTokenIs(TokenType.RPAREN) || this.curTokenIs(TokenType.EOF) || (this.curToken.type === TokenType.IDENTIFIER && ['THEN', 'END', 'ELSE', 'NULLS', 'LIMIT', 'OFFSET', 'ORDER', 'GROUP', 'HAVING', 'UNION', 'WHERE'].includes(this.curToken.value.toUpperCase()))) { - const result = {}; + const result = this.newColumnMap(); result[column] = { $eq: true }; return result; } @@ -10535,24 +12291,52 @@ this.nextToken(); // skip ( const subquery = this.parseSelect(); this.expect(TokenType.RPAREN); - const result = {}; + const result = this.newColumnMap(); result[column] = { [op]: { $subquery: subquery } }; return result; } - // 尝试解析列引用(identifier DOT identifier 格式) + // 解析比较运算符右侧的操作数(v0.8.0: 支持列引用) + // + // 此前只有 `a.b`(带点)形态被当作列引用,裸标识符一律走 parseValue → + // `WHERE x = y` 抛 PARSE_ERROR("Expected value, got \"y\"")。于是列对列比较 + // 必须写成 `WHERE t.x = t.y`,而多表 JOIN 里未限定列恰恰是最自然的写法 + // (`ON k = k` 同样报错)。 + // + // 判定依据是**位置**而不是猜测:能走到这里说明运算符已被消费,当前 token + // 就是右侧操作数。这个位置上除了列名只可能是字面量,而字面量有各自的 + // token 类型(NUMBER / STRING / TRUE / FALSE / NULL)—— 因此 + // **IDENTIFIER 在操作数位置必然是列引用**,没有别的可能: + // `id = 5` / `id = 'a'` / `active = TRUE` / `x = NULL` → 都不是 IDENTIFIER ✓ + // `x = y` → y 是 IDENTIFIER → 列引用 ✓ + // + // 拼错的列名(`WHERE id = nmae`)因此变成 **COLUMN_NOT_FOUND**(列不存在)而不是 + // PARSE_ERROR —— 这是更准确的诊断:问题不是"语法不对",而是"没有这一列"。 let value; - if ((this.curToken.type === TokenType.IDENTIFIER || this._isKeywordAsIdent()) && - this.peekTokenIs(TokenType.DOT)) { - const colRef = this.parseColumnRef(); - value = { $col: colRef }; + if (this.curToken.type === TokenType.QUOTED_IDENTIFIER) { + // 分隔标识符("col")在操作数位置同样是列引用 + value = { $col: this.expectColumnReference() }; + } + else if (this.curToken.type === TokenType.IDENTIFIER && !this._isReservedKeywordToken()) { + value = { $col: this.expectColumnReference() }; } else { value = this.parseValue(); } - const result = {}; + const result = this.newColumnMap(); result[column] = { [op]: value }; return result; } + /** + * v0.8.0:当前 token 是否"看起来像标识符但其实是关键字"。 + * + * 操作数位置上的 IDENTIFIER 必然是列引用(见上),但 `_isKeywordAsIdent()` 为真 + * 的那些 token 是**关键字**(它们可能作为列名出现在别处,但不会作为比较的右操作数 + * 出现)—— 例如 `WHERE a = AND` 之类的非法输入应当继续报 PARSE_ERROR, + * 而不是被当成列名再去查表。 + */ + _isReservedKeywordToken() { + return this.curToken.type !== TokenType.IDENTIFIER && this._isKeywordAsIdent(); + } /** 解析 EXISTS (SELECT ...) / NOT EXISTS (SELECT ...) */ parseExistsCondition(negate) { this.expect(TokenType.LPAREN); @@ -10573,6 +12357,19 @@ peekTokenIs(type) { return this.peekToken.type === type; } + /** + * 解析一个列引用:`a` 或 `a.b`(v0.8.0 支持未限定形态)。 + * 与 `parseColumnRef` 的区别:后者还接受 CASE/数字/字符串字面量(SELECT 列表用), + * 这里只接受真正的列名。 + */ + expectColumnReference() { + const col = this.expectIdentifier('column reference'); + if (this.curTokenIs(TokenType.DOT)) { + this.nextToken(); + return `${col}.${this.expectIdentifier('column name after "."')}`; + } + return col; + } parseComparisonOp() { switch (this.curToken.type) { case TokenType.EQ: @@ -10631,16 +12428,20 @@ return this.parseCaseExpressionText(); } // 数字常量列:SELECT 1 FROM t(常见于 EXISTS 子查询) + // v0.8.0: 只返回常量文本,别名交给调用方 parseColumnWithAlias 处理 + //(此前这里直接 return,导致 `SELECT 1 AS one` 的别名被丢弃, + // 投影时 row['1'] → undefined → 整行变成 {})。 if (this.curTokenIs(TokenType.NUMBER)) { const value = this.curToken.value; this.nextToken(); return value; } // v0.4.0: 字符串常量列:SELECT 'value' FROM t + // v0.8.0: 同样只返回字面量文本,别名由 parseColumnWithAlias 叠加 if (this.curTokenIs(TokenType.STRING)) { const value = this.curToken.value; this.nextToken(); - return `'${value}'`; + return `'${value.replace(/'/g, "''")}'`; } // 聚合函数? if (this.curTokenIs(TokenType.COUNT) || @@ -10836,6 +12637,13 @@ throw this.error(`Expected ${type}, got "${this.curToken.value}"`); } expectIdentifier(context) { + // v0.8.0: 分隔标识符 "col" 与普通标识符等价(但不参与关键字识别, + // 因此可以用它引用保留字列名,如 "order" / "select") + if (this.curToken.type === TokenType.QUOTED_IDENTIFIER) { + const val = this.curToken.value; + this.nextToken(); + return val; + } if (this.curToken.type === TokenType.IDENTIFIER || this._isKeywordAsIdent()) { const val = this.curToken.value; this.nextToken(); @@ -10848,6 +12656,8 @@ return (this.curToken.type !== TokenType.EOF && this.curToken.type !== TokenType.ILLEGAL && this.curToken.type !== TokenType.STRING && + // v0.8.0: 分隔标识符由 expectIdentifier 的显式分支处理,不走"关键字当标识符"兜底 + this.curToken.type !== TokenType.QUOTED_IDENTIFIER && this.curToken.type !== TokenType.NUMBER && this.curToken.type !== TokenType.COMMA && this.curToken.type !== TokenType.LPAREN && @@ -10900,29 +12710,212 @@ * * JOIN / GROUP BY / DISTINCT 逻辑在此层处理。 */ - // --------------------------------------------------------------------------- - // 分组 / 去重键编码(v0.7.4) - // --------------------------------------------------------------------------- /** - * v0.7.4: 分组/去重键的类型安全编码 —— 此前 `String(v ?? 'null')` 使 - * null 与字符串 'null' 合并为一组(GROUP BY 静默少组),`String(v ?? '\0')` - * 使 null/undefined/'\0' 在 DISTINCT/UNION 中互相吞并。类型前缀编码后 - * 各类型独立,仅同类型同值合并(与 where-matcher 的 === 语义一致)。 + * v0.8.0: 解析 `expr AS alias` 中的 `expr` 取值来源。 + * + * 此前只处理"字符串常量"与"列引用"两种情况,数字/布尔/NULL 常量会走 + * `row[source]` → undefined,于是 `SELECT 1 AS one FROM t` 返回 `[{}]` + * (键在、值为 undefined,JSON 序列化后整个键消失), + * 而这正是 EXISTS 子查询里最常见的写法(`SELECT 1 FROM ...`)。 */ - function encodeGroupKey(v) { - if (v === null) - return 'n'; - if (v === undefined) - return 'u'; - if (typeof v === 'string') - return `s${v}`; - if (typeof v === 'number') - return `d${v}`; - if (typeof v === 'boolean') - return `b${v}`; - if (typeof v === 'object') - return `o${JSON.stringify(v)}`; - return `x${String(v)}`; + /** + * 列引用取值(唯一实现)。 + * + * v0.8.0(A25):为什么必须有这一个函数。 + * + * "从行里取一列"此前散落在 4 处、规则各不相同: + * - `projectColumns`(where-matcher)精确匹配 + 唯一后缀匹配; + * - `resolveAliasSource` 只做 `row[text]`,**没有**后缀回退; + * - 聚合参数直接 `r[argCol]`,既没有后缀回退,也没有"列不存在"的报错; + * - `matchWhere` 的 `resolveField` 又有自己的一套。 + * 于是 `SELECT COUNT(t.n) FROM t` 返回 0:行键是 `n`,而聚合参数是 `t.n`, + * 直接取值得到 undefined,再被 `.filter(v => v != null)` 剔除 —— 计数为 0, + * **不报错**。而同一个 `t.n` 写在 SELECT 列表里(`SELECT t.n`)却正常, + * 因为那条路径会先剥离别名前缀。 + * + * 本函数统一三件事:别名前缀剥离 → 精确匹配 → 唯一后缀匹配; + * 都不命中时由调用方决定是抛错还是返回 undefined(`onMissing`)。 + */ + function resolveColumnValue(row, reference, opts) { + const text = reference.trim(); + if (text in row) + return row[text]; + // 别名前缀(`t.n` → `n`):JOIN 行用 `alias.col` 作键,但单表路径的 + // 行键不带前缀,两种形态都必须支持。 + if (text.includes('.')) { + const bare = text.split('.').pop(); + if (bare in row) + return row[bare]; + } + // 唯一后缀匹配:行键 `t.n` 而引用写作 `n` + let found; + let hits = 0; + for (const key of Object.keys(row)) { + if (key.endsWith(`.${text}`)) { + found = row[key]; + hits += 1; + } + } + if (hits === 1) + return found; + if (opts.strict) { + throw new DatabaseError(hits > 1 + ? `Ambiguous column "${text}" in ${opts.context}: present in multiple tables` + : `Unknown column "${text}" in ${opts.context}`, 'COLUMN_NOT_FOUND', { column: text }); + } + return undefined; + } + /** + * 解析聚合函数表达式 —— **唯一**的聚合识别实现。 + * + * 匹配形态:`FUNC( [DISTINCT] arg ) [AS alias]`,且整个表达式必须被聚合调用 + * 完整覆盖(`COUNT(1) + 1` 之类复合表达式**不**匹配,由调用方另行处理)。 + * + * 为什么把"输出键"与"参数"一起返回:聚合在 GROUP BY 与单行聚合两条路径上 + * 都要用同一个 (函数, 参数, 输出键) 三元组,此前两处各写一个正则、 + * 各算一次输出键,是 A25 那类漂移的温床。 + */ + function parseAggregateExpression(expr) { + const m = expr.trim().match(/^(COUNT|SUM|AVG|MIN|MAX)\s*\(\s*([\s\S]+?)\s*\)\s*(?:AS\s+([A-Za-z_][A-Za-z0-9_]*))?$/i); + if (!m) + return null; + const func = m[1].toUpperCase(); + let arg = m[2].trim(); + const alias = m[3]; + const distinct = /^DISTINCT\s+/i.test(arg); + if (distinct) + arg = arg.replace(/^\s*DISTINCT\s+/i, '').trim(); + const exprKey = `${func}(${distinct ? 'DISTINCT ' : ''}${arg})`; + return { func, arg, outputKey: alias || expr.trim(), distinct, exprKey }; + } + /** + * 判断 SELECT 列表达式是否为聚合表达式(含别名)。 + * 与 `parseAggregateExpression` 共用同一正则 —— 此前 `analyzeSelect` 用 + * `/^(COUNT|SUM|AVG|MIN|MAX)\(/` 单独判断,而执行路径用另一条正则: + * `COUNT (n)`(函数名与括号间有空格)会被前者判为"有聚合"、被后者判为 + * "不是聚合" → 走非聚合分支、输出 null。 + */ + function isAggregateExpression(expr) { + return parseAggregateExpression(expr) !== null; + } + /** + * 从 WHERE/HAVING 条件里提取聚合表达式原文(A23)。 + * + * 条件里的聚合可能出现在两个位置: + * - **键位**:`HAVING SUM(n) > 25` 解析为 `{ 'SUM(n)': { $gt: 25 } }` + * —— 表达式在键上,这是 parser 当前的形态; + * - **值位**:`HAVING 25 < SUM(n)` 之类的反向写法会把聚合放在操作数里, + * 这里一并扫描(`$gt: 'SUM(n)'` 不会出现,但 `{$eq:'SUM(n)'}` 可能出现)。 + * + * 只做**字符串级**提取(把找到的片段交给 parseAggregateExpression 校验), + * 不做表达式求值 —— 求值由调用方在拿到分组行之后进行。 + */ + function collectAggregateExpressionsInWhere(where) { + const found = []; + if (!where) + return found; + const scanText = (text) => { + const re = /(?:COUNT|SUM|AVG|MIN|MAX)\s*\([^()]*(?:\([^()]*\)[^()]*)*\)/gi; + let m; + while ((m = re.exec(text)) !== null) + found.push(m[0]); + }; + const walk = (cond) => { + for (const [key, value] of Object.entries(cond)) { + if (key === '$and' || key === '$or') { + for (const sub of (Array.isArray(value) ? value : [value])) + walk(sub); + continue; + } + if (key === '$not') { + walk(value); + continue; + } + // 键位:表达式原文作键 + scanText(key); + // 值位:操作数可能是字符串形态的表达式 + if (typeof value === 'string') + scanText(value); + else if (Array.isArray(value)) { + for (const item of value) + if (typeof item === 'string') + scanText(item); + } + else if (value !== null && typeof value === 'object') { + for (const operand of Object.values(value)) { + if (typeof operand === 'string') + scanText(operand); + } + } + } + }; + walk(where); + return found; + } + /** + * 列引用 → 输出键:剥离表别名前缀(`t.n` → `n`)。 + * + * 单表查询的行键不带前缀,而 SELECT 列表可以写 `t.n`;输出键使用裸列名 + * 与 `projectRow` 的 `projectColumns` 行为一致(否则 `SELECT t.n FROM t` + * 在聚合路径输出 `t.n`、在普通路径输出 `n`,同一查询两种行形状)。 + */ + function bareReference(reference) { + const text = reference.trim(); + if (!text.includes('.')) + return text; + return text.split('.').pop(); + } + function resolveAliasSource(source, row) { + const text = source.trim(); + // 字符串常量(含 SQL 标准 '' 转义还原) + const strLit = text.match(/^'(.*)'$/s); + if (strLit) + return strLit[1].replace(/''/g, "'"); + // 数字常量(含负号与小数) + if (/^-?\d+(\.\d+)?$/.test(text)) + return Number(text); + if (/^TRUE$/i.test(text)) + return true; + if (/^FALSE$/i.test(text)) + return false; + if (/^NULL$/i.test(text)) + return null; + // 列引用:走统一解析(此前只做 row[text],`t.n` 形态取不到值) + return resolveColumnValue(row, text, { strict: false, context: 'SELECT list' }); + } + /** + * v0.8.0: 数值型聚合的单次遍历实现。 + * + * 为什么替换 `Math.min(...arr)` / `Math.max(...arr)`: + * 展开实参会把整个数组压进调用栈,20 万行同组即 RangeError(栈溢出); + * 而这是普通查询就能触发的崩溃,不是边界场景。 + * + * 空集语义(SQL 标准):SUM/AVG/MIN/MAX 对**空集或全 NULL** 返回 NULL。 + * 此前统一返回 0,使 `SUM(x) = 0` 与"没有数据"不可区分。 + * 注意 COUNT 不在此列 —— COUNT 对空集返回 0(由调用方处理)。 + */ + function reduceNumeric(values, op) { + if (values.length === 0) + return null; + let acc = op === 'SUM' || op === 'AVG' ? 0 : values[0]; + for (let i = 0; i < values.length; i++) { + const v = values[i]; + switch (op) { + case 'SUM': + case 'AVG': + acc += v; + break; + case 'MIN': + if (i > 0 && v < acc) + acc = v; + break; + case 'MAX': + if (i > 0 && v > acc) + acc = v; + break; + } + } + return op === 'AVG' ? acc / values.length : acc; } /** 解析 "CASE WHEN c1 THEN v1 WHEN c2 THEN v2 ELSE v3 END [AS alias]" */ function parseCaseExpression(expr) { @@ -10987,7 +12980,30 @@ this.engine = engine; this.maxRowsPerQuery = maxRowsPerQuery; } + /** + * 执行一条语句。 + * + * v0.8.0:**同步抛错也必须表现为 rejected promise**。 + * + * `db.query()` 是 async 的,但 `async` 只把**函数体内**的同步抛错转成 rejection; + * 这里 `return this.executeXxx(stmt)` 的调用发生在 async 函数的同步前导段, + * 若被调方法在**进入第一个 await 之前**就抛错(例如 INSERT 的 arity 校验、 + * VALIDATION_ERROR),异常会穿过 async 边界成为**同步抛出**: + * await expect(db.query(...)).rejects.toMatchObject(...) // 断言不生效,测试崩 + * db.query(...).catch(...) // 永远不执行 + * 对调用方而言这是不可预期的 —— 同一个 API 有的错误走 catch、有的走 try。 + * 因此这里显式包一层 try/catch 统一成 rejection(`async` 方法里 `throw` + * 一定产出 rejected promise)。 + */ async execute(stmt) { + try { + return await this.dispatch(stmt); + } + catch (error) { + throw error instanceof Error ? error : new DatabaseError(String(error), 'QUERY_ERROR'); + } + } + dispatch(stmt) { switch (stmt.type) { case 'SELECT': return this.executeSelect(stmt); case 'SELECT_UNION': return this.executeSelectUnion(stmt); @@ -11015,40 +13031,101 @@ // =================================================================== // UNION(v0.3.0) // =================================================================== - /** 递归执行 UNION / UNION ALL,返回合并结果 */ - async executeSelectUnion(stmt) { - const leftRows = await this.executeSelectPart(stmt.left); - const rightRows = await this.executeSelectPart(stmt.right); + /** + * 递归执行 UNION / UNION ALL,返回合并结果。 + * + * v0.8.0(A26):尾部 ORDER BY / LIMIT / OFFSET 作用于**整个**复合结果。 + * + * 此前 `SelectUnionStatement` 没有这三个字段,parser 把它们挂在右侧 SELECT 上 + * —— 于是 `A UNION B ORDER BY id DESC` 只排 B(实测返回 1,2,4,3), + * `A UNION B LIMIT 3` 只截断 B(实测返回 4 行)。现在由本方法在合并 + 去重 + * **之后**统一排序与截断(顺序:合并 → 去重 → 排序 → OFFSET/LIMIT)。 + */ + async executeSelectUnion(stmt, purpose = 'result') { + const leftRows = await this.executeSelectPart(stmt.left, purpose); + const rightRows = await this.executeSelectPart(stmt.right, purpose); // 列名以左侧为准,右侧只取值 const leftCols = leftRows.length > 0 ? Object.keys(leftRows[0]) : []; const normalized = leftRows.map((row) => row); + let result; if (stmt.all) { for (const row of rightRows) normalized.push(this.projectUnionRow(row, leftCols)); - return normalized; + result = normalized; } - // UNION 去重(与 DISTINCT 相同的列值拼接键) - const seen = new Set(); - const result = []; - for (const row of normalized) { - const key = Object.values(row).map(encodeGroupKey).join('\x1f'); - if (!seen.has(key)) { - seen.add(key); - result.push(row); + else { + // UNION 去重(与 DISTINCT 相同的列值拼接键) + const seen = new Set(); + result = []; + for (const row of normalized) { + const key = Object.values(row).map(encodeValueKey).join('\x1f'); + if (!seen.has(key)) { + seen.add(key); + result.push(row); + } + } + for (const row of rightRows) { + const projected = this.projectUnionRow(row, leftCols); + const key = Object.values(projected).map(encodeValueKey).join('\x1f'); + if (!seen.has(key)) { + seen.add(key); + result.push(projected); + } } } - for (const row of rightRows) { - const projected = this.projectUnionRow(row, leftCols); - const key = Object.values(projected).map(encodeGroupKey).join('\x1f'); - if (!seen.has(key)) { - seen.add(key); - result.push(projected); - } + // 尾部子句(作用于整个复合结果)。 + // 排序键可能引用**输出列序号**(`ORDER BY 1`)或输出列名 —— 复合结果没有表 + // 上下文,因此这里只按结果行的键解析,不做 schema 校验。 + if (stmt.orderBy && stmt.orderBy.length > 0) { + result = this.orderCompoundResult(result, stmt.orderBy); + } + const offset = stmt.offset ?? 0; + if (offset > 0 || stmt.limit !== undefined) { + const limit = stmt.limit ?? result.length; + result = result.slice(offset, offset + limit); } return result; } - async executeSelectPart(part) { - return part.type === 'SELECT_UNION' ? this.executeSelectUnion(part) : this.executeSelect(part); + /** + * 复合结果排序:把 ORDER BY 项解析为结果行的键。 + * + * 支持两种写法(与单表 SELECT 一致): + * - 输出列序号:`ORDER BY 1` → 第 1 个输出列(SQL 标准,UNION 场景最常见, + * 因为各分支的输出列名可能不同); + * - 输出列名:`ORDER BY id` → 结果行的 `id` 键。 + * 引用不存在的列时返回原序(不静默丢弃排序 —— 排序键缺失本身不改变行集合, + * 但会让用户以为已排序;故此处抛 COLUMN_NOT_FOUND,与 SELECT 路径口径一致)。 + */ + orderCompoundResult(rows, orderBy) { + const firstRow = rows[0]; + const outputColumns = firstRow ? Object.keys(firstRow) : []; + const resolved = orderBy.map((item) => { + const asOrdinal = /^\d+$/.test(item.column.trim()) ? Number(item.column.trim()) : null; + if (asOrdinal !== null) { + if (asOrdinal < 1 || asOrdinal > outputColumns.length) { + throw new DatabaseError(`ORDER BY position ${asOrdinal} is out of range: compound query has ${outputColumns.length} output column(s)`, 'QUERY_ERROR'); + } + return { ...item, column: outputColumns[asOrdinal - 1] }; + } + // 允许带别名前缀(`ORDER BY t.id` → `id`) + const bare = item.column.includes('.') ? item.column.split('.').pop() : item.column; + if (outputColumns.length > 0 && !(item.column in firstRow) && !(bare in firstRow)) { + throw new DatabaseError(`Unknown column "${item.column}" in ORDER BY of compound query. Output columns: ${outputColumns.join(', ')}`, 'COLUMN_NOT_FOUND'); + } + return { ...item, column: item.column in firstRow ? item.column : bare }; + }); + return applyOrderBy(rows, resolved); + } + /** + * 执行一个 SELECT 部件(含 UNION)。 + * + * @param purpose 透传给 `executeSelect` —— 作为写语句的输入行源时必须传 + * `'source'`,否则 `maxRowsPerQuery` 会在写入前静默截断行源(A29)。 + */ + async executeSelectPart(part, purpose = 'result') { + if (part.type === 'SELECT_UNION') + return this.executeSelectUnion(part, purpose); + return this.executeSelect(part, purpose); } /** 将 UNION 右侧行投影为左侧列结构(按位置取值) */ projectUnionRow(row, leftCols) { @@ -11147,29 +13224,104 @@ // =================================================================== // SELECT // =================================================================== - async executeSelect(stmt) { + /** + * v0.8.0: SELECT 语句的**执行形态分析**(单一事实来源)。 + * + * 为什么把它独立出来:core.queryStream 此前在 core.ts 里**自己重新推导**了一遍 + * "这条 SELECT 能不能走引擎快路径、列投影怎么算",与 executor 的规则各写一份, + * 于是两者漂移出四类静默不一致(实测): + * SELECT id AS x FROM t query=[{x}] stream=[{id,v}](全列 + 原列名) + * SELECT t.id FROM t query=[{id}] stream=[{}](空对象) + * ... LIMIT 2 OFFSET 1 query=1 行 stream=2 行(引擎与 executor 各切一次) + * ... LIMIT 0 query=[] stream=1 行 + * + * 现在由 executor 提供唯一判定,core 只消费结论,不再复制规则。 + */ + analyzeSelect(stmt) { const hasGroupBy = !!(stmt.groupBy && stmt.groupBy.length > 0); const hasAggregate = !hasGroupBy && this._hasAggregateColumn(stmt.columns); - let rows; const isJoinQuery = !!(stmt.joins && stmt.joins.length > 0); - // CASE WHEN 表达式需要原始列求值(SELECT 列或 WHERE 条件中的 CASE): - // 引擎层取全行,投影统一在 executor 端完成 const needsRawRows = this.hasCaseColumn(stmt.columns) || (!!stmt.where && this.whereHasCase(stmt.where)); - // v0.3.3: ORDER BY 引用 SELECT 别名 → 引擎层不排序/不截断,投影后再排序 const orderByAlias = this.orderByUsesSelectAlias(stmt); - // v0.3.3: SELECT 列含 `col AS alias` → 引擎层投影会丢失源列,统一取原始行由 executor 投影 const hasSelectAlias = stmt.columns.some((c) => /\s+AS\s+\w+$/i.test(c)); + // LIMIT/OFFSET 下推安全性:只有"引擎返回的行 == LIMIT 应当作用其上的行"时才可下推。 + // 此前 compileSelect 无条件下推、executor 末尾又切一次 → LIMIT 被应用两遍 + // (4 行表上 LIMIT 2 OFFSET 1 只返回 1 行)。 + const limitPushdownSafe = !hasGroupBy && !hasAggregate && !isJoinQuery + && !stmt.fromSubquery && !stmt.distinct + && !(stmt.having && Object.keys(stmt.having).length > 0) + && !orderByAlias && !needsRawRows && !hasSelectAlias; + // 引擎层投影是否与 executor 语义等价:仅当全部列都是裸 * 或简单列引用 + //(可带 table. 前缀)时成立。出现 AS 别名/常量/CASE/聚合就交给 executor 投影。 + let engineEquivalentProjection = stmt.columns.length > 0; + for (const c of stmt.columns) { + if (c === '*') + continue; + if (/^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/.test(c)) + continue; + engineEquivalentProjection = false; + break; + } + // 真流式(引擎 findStream 直连)的充分条件:所有会改变行集合/行序/行形状的 + // 阶段都不存在,且 WHERE 已解析(无子查询、无 $col 关联引用)。 + const streamable = engineEquivalentProjection + && !hasGroupBy && !hasAggregate && !isJoinQuery && !stmt.fromSubquery + && !stmt.distinct && !(stmt.having && Object.keys(stmt.having).length > 0) + && !(stmt.orderBy && stmt.orderBy.length > 0) + && !needsRawRows && !orderByAlias && !hasSelectAlias + && !this.hasCorrelatedRefs(stmt.where) + && !containsUnresolvedSubqueries(stmt.where); + return { + hasGroupBy, + hasAggregate, + isJoinQuery, + needsRawRows, + orderByAlias, + hasSelectAlias, + limitPushdownSafe, + engineEquivalentProjection, + streamable, + }; + } + /** + * @param purpose `'result'`(默认)= 结果交付给用户,受 `maxRowsPerQuery` 截断; + * `'source'` = 作为写语句的输入行源,**不得**截断(见下方说明)。 + */ + async executeSelect(stmt, purpose = 'result') { + const shape = this.analyzeSelect(stmt); + const { hasGroupBy, hasAggregate, isJoinQuery, needsRawRows, orderByAlias, hasSelectAlias, limitPushdownSafe } = shape; + let rows; + // v0.8.0(A37):WHERE 里的列引用也必须校验存在性。 + // + // 投影侧的同类校验(assertProjectionColumnsExist)早已存在,但 WHERE 侧一直 + // 没有 —— 于是 `$col`(列对列比较)引用到不存在的列时,求值器取不到值 → + // 返回 UNRESOLVED → 比较判 UNKNOWN → **所有行被过滤且不报错**。实测修复前: + // SELECT id FROM t WHERE id = oops → [] + // SELECT id FROM t WHERE id = t.oops → [] + // SELECT id FROM t WHERE x = nope → [] + // 三条都会静默返回空集(`oops` 在 SQL 里是列引用,因为没有别的字面量形态)。 + // 这正是"未解析引用静默变 false"这一整类缺陷(PLAN §3 根因 7)的最后一块。 + await this.assertWhereColumnsExist(stmt, isJoinQuery); if (stmt.fromSubquery) { // v0.4.0: FROM (SELECT ...) 派生表 — 子查询结果作为行源 const subRows = await this.executeSelectPart(stmt.fromSubquery); rows = isJoinQuery ? await this.executeJoinSelect(stmt, subRows.map((row) => this.prefixRow(row, stmt.alias ?? ''))) : subRows; - if (!isJoinQuery && stmt.where && Object.keys(stmt.where).length > 0) { - // 非 JOIN:WHERE 在 executor 端过滤(子查询结果不经引擎) - stmt.where = await this.resolveSubqueries(stmt.where); - rows = rows.filter((row) => matchWhere(row, stmt.where)); + if (!isJoinQuery) { + // v0.8.0(A36):派生表行源不带任何别名前缀,因此 `d.id` 形态的引用 + // 必须剥离前缀(与非 JOIN 单表路径同一规则)。 + // + // 此前这里**不做**归一化:`SELECT d.id FROM (SELECT id, g FROM t) AS d` + // 直接拿 `d.id` 去投影,行里只有 `id` → 静默返回 `[]`; + // 而同一查询写成 `SELECT id ...` 却正确 —— 同一行源两种写法结论相反。 + this.normalizeUnprefixedReferences(stmt, [stmt.alias ?? stmt.from]); + if (stmt.where && Object.keys(stmt.where).length > 0) { + // 非 JOIN:WHERE 在 executor 端过滤(子查询结果不经引擎) + stmt.where = await this.resolveSubqueries(stmt.where); + rows = rows.filter((row) => matchWhere(row, stmt.where)); + } } } else if (!stmt.from && !isJoinQuery) { @@ -11181,29 +13333,9 @@ rows = await this.executeJoinSelect(stmt); } else { - // 非 JOIN 路径:规范化 WHERE 字段名(剥离主表别名前缀,修复 WHERE u.age > 20) - if (stmt.where && Object.keys(stmt.where).length > 0) { - stmt.where = this.normalizeWhereColumns(stmt.where, [stmt.alias ?? stmt.from]); - } - // v0.4.0: ORDER BY / GROUP BY 带表前缀同样剥离(如 ORDER BY u.age) + // 非 JOIN 路径:行键不带别名前缀 → 统一归一化引用 const mainAliases = [stmt.alias ?? stmt.from].filter(Boolean); - if (stmt.orderBy && stmt.orderBy.length > 0) { - stmt.orderBy = stmt.orderBy.map((o) => ({ ...o, column: this.stripAlias(o.column, mainAliases) })); - } - if (stmt.groupBy && stmt.groupBy.length > 0) { - stmt.groupBy = stmt.groupBy.map((c) => this.stripAlias(c, mainAliases)); - } - // v0.4.0: SELECT 列带表前缀剥离(SELECT u.name → name,行键无前缀) - stmt.columns = stmt.columns.map((c) => { - if (c === '*' || /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(c) || /^\s*CASE\b/i.test(c) || /^'/.test(c)) - return c; - const m = c.match(/^(.+?)\s+AS\s+(\w+)$/i); - if (m) { - const stripped = this.stripAlias(m[1].trim(), mainAliases); - return stripped === m[1].trim() ? c : `${stripped} AS ${m[2]}`; - } - return this.stripAlias(c, mainAliases); - }); + this.normalizeUnprefixedReferences(stmt, mainAliases); // WHERE 含关联子查询($col 引用外层行)→ 逐行绑定上下文求值 if (stmt.where && this.hasCorrelatedRefs(stmt.where)) { const plan = compileStatement(hasGroupBy || hasAggregate ? { ...stmt, columns: ['*'] } : stmt); @@ -11214,8 +13346,11 @@ plan.limit = undefined; plan.offset = undefined; } - rows = await this.engine.find(plan.table, { ...plan, where: this.stripCorrelatedExists(stmt.where) }); - rows = await this.filterCorrelated(rows, stmt.where); + // v0.8.0:引擎层只做**可下推部分**的预过滤,逐行谓词整体交给 filterCorrelated。 + // 此前把原始 where(含 `$col`)直接交给引擎,引擎判 UNKNOWN → 候选行 0 → + // `WHERE t.x = t.y` 静默空结果(详见 enginePreFilter 文档)。 + rows = await this.engine.find(plan.table, { ...plan, where: this.enginePreFilter(stmt.where) }); + rows = await this.filterCorrelated(rows, stmt.where, mainAliases); } else { // 先解析子查询 @@ -11225,6 +13360,11 @@ const plan = compileStatement(hasGroupBy || hasAggregate ? { ...stmt, columns: ['*'] } : stmt); if (needsRawRows || hasSelectAlias) plan.columns = ['*']; + if (!limitPushdownSafe) { + // 不安全:不把 LIMIT/OFFSET 交给引擎,由末尾统一应用(只应用一次) + plan.limit = undefined; + plan.offset = undefined; + } if (orderByAlias) { plan.orderBy = undefined; plan.limit = undefined; @@ -11239,7 +13379,19 @@ } if (hasGroupBy) rows = this.executeGroupBy(rows, stmt); - if (stmt.distinct) + // v0.8.0(A27):DISTINCT 作用于**输出列**,因此必须发生在投影之后。 + // + // 此前顺序是 DISTINCT → 投影,于是 `SELECT DISTINCT dept AS d FROM e` + // 对 `{id, dept, v}` 原始行去重(4 行互不相同)→ 再投影成 `{d}` → 返回 4 行 + // `a,a,b,b`;而 `SELECT DISTINCT dept FROM e` 返回 2 行 —— 加一个别名就改变了 + // 去重语义。SQL 标准中 DISTINCT 作用于 SELECT 的输出列。 + // + // 例外(保留投影前位置):`SELECT DISTINCT dept FROM e ORDER BY v` —— `v` + // 不在输出列里,去重后它就不存在了,无法再排序。SQL 标准禁止这种写法, + // 但既有实现支持它(语义是"排序后按输出列去重"),因此保留: + // 此时按 `DISTINCT → ORDER BY` 的顺序执行(见下方分支)。 + const distinctBeforeProjection = !!stmt.distinct && this.distinctNeedsPreProjectionSort(stmt); + if (distinctBeforeProjection) rows = this.executeDistinct(rows); if (stmt.having && Object.keys(stmt.having).length > 0) { // v0.4.0 修复: HAVING 中的标量子查询(HAVING SUM(o.amount) > (SELECT AVG(...)))需先解析 @@ -11255,8 +13407,42 @@ } rows = rows.filter((row) => matchWhere(row, stmt.having)); } - if (stmt.orderBy && stmt.orderBy.length > 0) + // v0.8.0(A23):分组行的输出投影必须在 HAVING **之后** —— HAVING 可能引用 + // 未出现在 SELECT 里的聚合(`SELECT g FROM t GROUP BY g HAVING SUM(n) > 25`), + // 那些内部键要到过滤完成后才能丢弃。 + if (hasGroupBy) + rows = this.projectGroupedRows(rows, stmt); + /** + * ORDER BY 的应用时机。 + * + * 排序必须发生在"排序列仍然存在"的阶段,因此分两种情况: + * - 排序键全部是**输出列**(或 SELECT 别名,别名在投影后才存在 → 走下方 + * 投影后的 `orderByAlias` 分支)→ 投影后再排序(顺序更自然,也让 + * `SELECT DISTINCT ... ORDER BY <输出列>` 得到"先去重再排序"的标准语义); + * - 排序键引用了**未出现在 SELECT 里的列**(`SELECT name FROM t ORDER BY id`, + * 以及 `SELECT DISTINCT dept FROM e ORDER BY v`)→ 必须在投影前排序, + * 否则该列已被丢弃、排序无从进行。 + * + * 此前无条件在投影前排序(`applyOrderBy` 一行),于是 A27 的 DISTINCT + * 必然发生在投影前 —— 两者互为因果,必须一起修正。 + */ + const orderNeedsRawColumns = !!stmt.orderBy && stmt.orderBy.length > 0 + && (distinctBeforeProjection || !this.orderByReferencesOutputColumns(stmt)); + if (stmt.orderBy && stmt.orderBy.length > 0 && !orderByAlias && orderNeedsRawColumns) { rows = applyOrderBy(rows, stmt.orderBy); + } + // v0.8.0 根治:投影前校验列引用存在性(此前未知列静默产出 {} 行)。 + // + // 实测缺陷:`SELECT bogus FROM t`(4 行表)返回 `[{},{},{},{}]`, + // `SELECT NAME FROM t`(列名是 name)同样返回 `[{},{}]` —— 行数正确、内容全空、 + // 无任何报错;`GROUP BY bogus` 会把全表并成一组,`ORDER BY bogus` 顺序随机。 + // SQLite/MySQL 三处都报 "no such column"。 + // + // 校验时机选在 JOIN/子查询合并完成后(此时是最终行形态),且仅在**未发生聚合**时 + // 进行 —— 聚合/分组会把行替换为计算键,普通列本就不存在(那属于另一类语义问题)。 + if (!hasAggregate) { + this.assertProjectionColumnsExist(rows, stmt.columns, stmt); + } // v0.7.3: `SELECT *, col AS alias` —— 此前 columns[0]==='*' 直接不投影, // 别名列/常量列丢失。仅当 '*' 是唯一列时跳过投影(projectRow 对裸 '*' // 合并原行全部列,其余表达式覆盖/追加) @@ -11264,21 +13450,48 @@ && !(stmt.columns.length === 1 && stmt.columns[0] === '*')) { rows = rows.map((row) => this.projectRow(row, stmt.columns)); } + // v0.8.0(A27):DISTINCT 的规范位置 —— 投影之后(作用于输出列) + if (stmt.distinct && !distinctBeforeProjection) + rows = this.executeDistinct(rows); // v0.3.3: ORDER BY 别名 → 投影后才存在,需在投影后重新排序 if (orderByAlias && stmt.orderBy && stmt.orderBy.length > 0) { rows = applyOrderBy(rows, stmt.orderBy); } - const offset = stmt.offset ?? 0; - const limit = stmt.limit ?? rows.length; - rows = rows.slice(offset, offset + limit); - // 全局行数上限保护 - if (this.maxRowsPerQuery > 0 && rows.length > this.maxRowsPerQuery) { + // v0.8.0: LIMIT/OFFSET 的应用点,两条路径互斥且**只执行一次**: + // - limitPushdownSafe === true → 引擎已按同一 offset/limit 完成切片,此处不再切片; + // - limitPushdownSafe === false → 引擎拿不到 limit/offset,此处是唯一应用点。 + // 此前两条路径都切了一次,导致 4 行表上 `LIMIT 2 OFFSET 1` 只返回 1 行(应 2,3)。 + if (!limitPushdownSafe) { + const offset = stmt.offset ?? 0; + const limit = stmt.limit ?? rows.length; + rows = rows.slice(offset, offset + limit); + } + // 全局行数上限保护。 + // + // v0.8.0(A29 根治):只在"结果交付给用户"时截断;作为写语句的输入行源 + //(`INSERT INTO dst SELECT ...`)时**不截断** —— 否则用户设置的 + // `maxRowsPerQuery` 会静默减少写入行数: + // maxRowsPerQuery = 2 时 `INSERT INTO dst SELECT id FROM src`(src 有 4 行) + // 会只写入 2 行并返回成功(实测)。这不是"限制查询规模",而是**静默丢数据**。 + // 写路径由上层的 `assertWithinRowLimit` 显式报错(而不是静默截断), + // 二者配合才能同时满足"保护内存"与"不丢数据"。 + if (purpose === 'result' && this.maxRowsPerQuery > 0 && rows.length > this.maxRowsPerQuery) { rows = rows.slice(0, this.maxRowsPerQuery); } return rows; } // ---- JOIN ---- async executeJoinSelect(stmt, preloadedMain) { + // v0.8.0(A37):JOIN ON 的列引用也要校验存在性。 + // + // 修复前 `ON l.k = rn.nope` 这类拼错的列名会走到 matchWhere → $col 取不到值 + // → UNKNOWN → **没有任何行能连接上**,用户看到的是空结果而不是"列不存在"。 + // 这里与 SELECT 的 WHERE 校验共用同一实现(不同 context 文案与歧义策略)。 + for (const join of stmt.joins ?? []) { + if (join.on && Object.keys(join.on).length > 0) { + await this.validateJoinOnColumns(stmt, join); + } + } const mainAlias = stmt.alias ?? stmt.from; // v0.4.0: 派生表行源已预加载(行带别名前缀) let mainRows; @@ -11484,76 +13697,280 @@ return result; } // ---- GROUP BY ---- + /** + * 分组聚合。 + * + * v0.8.0(A22/A23)两项行为修正,都源于**分组语义只有一个定义**这一原则: + * + * 1. **GROUP BY 可用 SELECT 别名**(A22)。 + * SQL 标准允许 `SELECT g AS grp, COUNT(*) FROM t GROUP BY grp`。 + * 此前 `grp` 直接当列名去 `row['grp']` 取到 undefined → 全部行落入同一组; + * 更糟的是后续投影阶段发现 `g` 不在输出行里,抛 + * `COLUMN_NOT_FOUND Unknown column "g" in SELECT list` —— 用户看到的是 + * 一个与真正原因(GROUP BY 引用别名)无关的错误。 + * 这里先把 GROUP BY 项解析为**基列**(别名 → 其源表达式),再做分组与输出。 + * + * 2. **HAVING 可用未出现在 SELECT 里的聚合**(A23)。 + * `SELECT g FROM t GROUP BY g HAVING SUM(n) > 25` 是标准写法。 + * 此前聚合只在 `stmt.columns` 上计算,`SUM(n)` 从未被求值 → + * HAVING 的键 `SUM(n)` 在行里不存在 → matchWhere 取到 undefined → + * UNKNOWN → **空结果**(`HAVING SUM(n) > 25` 返回 [],而 MAX(n) > 25 同样 [])。 + * 现在把 SELECT 列与 HAVING 里出现的聚合**并集**一起算进分组行,再交给 + * HAVING 过滤。多算的聚合只影响中间行,最终输出仍严格按 SELECT 列投影, + * 因此不会泄漏额外列。 + */ executeGroupBy(rows, stmt) { + // 1) GROUP BY 项 → 基列(别名解析,A22) + const groupColumns = this.resolveGroupByColumns(stmt); const groups = new Map(); for (const row of rows) { // v0.7.4: 类型安全键编码 —— 此前 String(row[col] ?? 'null') 使 // null 与字符串 'null' 合并为一组(GROUP BY 静默少组) - const key = stmt.groupBy.map((col) => encodeGroupKey(row[col])).join('\x1f'); + const key = groupColumns + .map((col) => encodeValueKey(resolveColumnValue(row, col, { strict: true, context: 'GROUP BY' }))) + .join('\x1f'); if (!groups.has(key)) groups.set(key, []); groups.get(key).push(row); } + // 2) 需要计算的聚合表达式 = SELECT 列 ∪ HAVING 中的聚合(A23) + const aggregateExprs = this.collectAggregateExpressions(stmt); const result = []; // v0.4.0: 聚合表达式键 → 输出键 映射(HAVING SUM(...) 引用表达式时归一为别名键) const aliasMap = new Map(); for (const groupRows of groups.values()) { + const first = groupRows[0]; const aggregated = {}; - for (const col of stmt.groupBy) - aggregated[col] = groupRows[0][col]; + // 分组列以基列名输出(`GROUP BY grp` 引用别名时输出基列 `g`, + // 与 SELECT 列表里 `g AS grp` 的投影可正确对应) + for (const col of groupColumns) { + aggregated[col] = resolveColumnValue(first, col, { strict: true, context: 'GROUP BY' }); + } + // 先算聚合(含仅 HAVING 引用的),统一以 exprKey 与输出键写入 + for (const agg of aggregateExprs) { + const value = agg.distinct + ? this.computeDistinctAggregate(agg.func, groupRows, agg.arg) + : this.computeAggregate(agg.func, groupRows, agg.arg); + if (agg.outputKey !== agg.exprKey) + aliasMap.set(agg.exprKey, agg.outputKey); + // 同时以表达式原文与输出键写入:HAVING 既可能写 `SUM(n)` 也可能写别名 + aggregated[agg.exprKey] = value; + if (agg.outputKey !== agg.exprKey) + aggregated[agg.outputKey] = value; + } + // 再按 SELECT 列表补齐非聚合列(分组列已写;非分组列取组内首行 — + // 这是既有的宽松语义,SQL 标准禁止但此处保持兼容) for (const colExpr of stmt.columns) { if (colExpr === '*') continue; - const m = colExpr.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i); - if (m) { - const [, func, arg, alias] = m; - const value = this.computeAggregate(func.toUpperCase(), groupRows, arg.trim()); - const exprKey = `${func.toUpperCase()}(${arg.trim()})`; - const outputKey = alias || colExpr; - if (outputKey !== exprKey) - aliasMap.set(exprKey, outputKey); - aggregated[outputKey] = value; - } - else if (/^\s*CASE\b/i.test(colExpr)) { + const agg = parseAggregateExpression(colExpr); + if (agg) + continue; // 已在上面写入 + if (/^\s*CASE\b/i.test(colExpr)) { // v0.3.2: 非聚合的 CASE WHEN 列取组内第一行求值 const expr = parseCaseExpression(colExpr); - aggregated[expr?.alias ?? colExpr] = expr ? evaluateCase(expr, groupRows[0]) : null; - } - else if (!stmt.groupBy.includes(colExpr)) { - aggregated[colExpr] = groupRows[0][colExpr]; + const key = expr?.alias ?? colExpr; + if (!(key in aggregated)) { + aggregated[key] = expr ? evaluateCase(expr, first) : null; + } + continue; } + const aliasMatch = colExpr.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (aliasMatch) + continue; // 别名列由投影阶段处理 + // 投影阶段用的键:优先"剥离别名前缀后的基列"(SELECT t.n 的输出键是 n) + const base = bareReference(colExpr); + if (base in aggregated) + continue; + if (colExpr in aggregated) + continue; + aggregated[base] = resolveColumnValue(first, colExpr, { strict: true, context: 'SELECT list' }); } + // 注意:**不在这里**做输出投影。 + // + // 为 HAVING 多算的聚合(`SELECT g ... HAVING SUM(n) > 25` 需要 SUM(n)) + // 必须在 HAVING 求值时仍然可见,而 HAVING 在 GROUP BY 之后、ORDER BY 之前 + // 执行(见 executeSelect 的阶段顺序)。若在此处就把行收缩为 SELECT 输出键, + // HAVING 的 `SUM(n)` 会取到 undefined → UNKNOWN → **空结果** + // (实测:加投影后 `HAVING SUM(n) > 25` 又变回 [])。 + // 因此投影统一由 `projectGroupedRows` 在 HAVING 之后、ORDER BY 之前完成。 result.push(aggregated); } stmt._aggAliasMap = aliasMap; return result; } - computeAggregate(func, rows, col) { + /** 对全部分组行做输出投影(HAVING 之后调用) */ + projectGroupedRows(rows, stmt) { + const groupColumns = this.resolveGroupByColumns(stmt); + return rows.map((row) => this.projectGroupedRow(row, groupColumns, stmt.columns)); + } + /** + * 把分组行收缩为 SELECT 列表要求的输出列(保持 SELECT 顺序)。 + * + * GROUP BY 路径不做通用的 `projectRow`(那会丢掉聚合值),因此需要这一层显式投影。 + * 处理四类列: + * - `*`:保留分组行全部键(`SELECT * ... GROUP BY g` 的既有语义); + * - 聚合表达式:键取 `parseAggregateExpression` 的 outputKey; + * - `expr AS alias`:输出 alias,值从分组行按 expr 取(含二义性由取值函数处理); + * - 裸列引用:输出剥离别名前缀后的基列名。 + */ + projectGroupedRow(aggregated, groupColumns, columns) { + if (columns.some((c) => c === '*')) + return aggregated; + const output = {}; + // 分组列按 SELECT 顺序先输出(它们也是各组的标识列) + for (const col of groupColumns) { + if (col in aggregated) + output[col] = aggregated[col]; + } + for (const colExpr of columns) { + if (colExpr === '*') + continue; + const agg = parseAggregateExpression(colExpr); + if (agg) { + // outputKey 与 exprKey 在聚合阶段都被写入,取 outputKey(别名优先) + output[agg.outputKey] = aggregated[agg.outputKey]; + continue; + } + const caseExpr = /^\s*CASE\b/i.test(colExpr) ? parseCaseExpression(colExpr) : null; + if (caseExpr) { + const key = caseExpr.alias ?? colExpr; + output[key] = aggregated[key]; + continue; + } + const aliasMatch = colExpr.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (aliasMatch) { + output[aliasMatch[2]] = aggregated[aliasMatch[2]]; + continue; + } + const base = bareReference(colExpr); + output[base] = base in aggregated ? aggregated[base] : aggregated[colExpr]; + } + return output; + } + /** + * GROUP BY 项解析为基列:`GROUP BY grp`(grp 是 SELECT 别名)→ `g`。 + * + * 只解析"SELECT 列表里带 AS 别名"与"CASE ... AS 别名"这两种可追踪形态; + * 其余原样返回(真正的列名或表达式)。同名歧义时保持原样 —— 后续 + * `resolveColumnValue` 的 strict 模式会给出明确的 COLUMN_NOT_FOUND/歧义错误。 + */ + resolveGroupByColumns(stmt) { + const aliases = new Map(); + for (const col of stmt.columns) { + const m = col.match(/^(.+?)\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i); + if (m) + aliases.set(m[2], m[1].trim()); + } + return stmt.groupBy.map((col) => { + const target = aliases.get(col.trim()); + if (target === undefined) + return col; + // 别名指向另一个聚合表达式时不能当作分组列(`SELECT COUNT(*) AS c ... GROUP BY c`) + return parseAggregateExpression(target) ? col : target; + }); + } + /** + * 收集本次分组需要计算的全部聚合表达式(SELECT 列 ∪ HAVING),按 exprKey 去重。 + * + * 同时扫描 HAVING 是 A23 的核心:`HAVING SUM(n) > 25` 里的 `SUM(n)` 必须被求值, + * 否则 HAVING 阶段取不到该键。 + */ + collectAggregateExpressions(stmt) { + const collected = new Map(); + const add = (expr) => { + const agg = parseAggregateExpression(expr); + if (!agg) + return; + const existing = collected.get(agg.exprKey); + // SELECT 列优先(它带别名);HAVING 只是补充 + if (!existing) + collected.set(agg.exprKey, agg); + }; + for (const col of stmt.columns) + add(col); + for (const expr of collectAggregateExpressionsInWhere(stmt.having)) + add(expr); + return [...collected.values()]; + } + /** + * 计算单个聚合值。 + * + * v0.8.0: 返回类型放宽为 unknown —— SUM/AVG/MIN/MAX 对空集返回 null(SQL 标准), + * COUNT 仍返回 number。最小/最大改为单次遍历(不再展开实参,消除栈溢出)。 + */ + computeAggregate(func, rows, arg) { // v0.3.2: 聚合参数支持 CASE WHEN 表达式(如 SUM(CASE WHEN age > 18 THEN 1 ELSE 0 END)) - const caseExpr = /^\s*CASE\b/i.test(col) ? parseCaseExpression(col) : null; - // v0.4.0: COUNT(DISTINCT col) 等去重聚合 - const distinctArg = !caseExpr && /^\s*DISTINCT\s+/i.test(col); - const argCol = distinctArg ? col.replace(/^\s*DISTINCT\s+/i, '').trim() : col; + const caseExpr = /^\s*CASE\b/i.test(arg) ? parseCaseExpression(arg) : null; + // v0.4.0: COUNT(DISTINCT col) —— distinct 由 parseAggregateExpression 剥离后传入 + const argCol = arg.trim(); + // v0.8.0(A25):列引用统一走 resolveColumnValue(别名前缀剥离 + 后缀回退)。 + // 取不到值时按 COUNT(*) 之外的情形报 COLUMN_NOT_FOUND,而不是静默计 0: + // 此前 `COUNT(t.n)` 返回 0 且无任何报错,用户会以为"表里没有非空 n"。 const rawValues = rows - .map((r) => (caseExpr ? evaluateCase(caseExpr, r) : r[argCol])) + .map((r) => (caseExpr + ? evaluateCase(caseExpr, r) + : argCol === '*' + ? r + : resolveColumnValue(r, argCol, { strict: true, context: `aggregate ${func}(${argCol})` }))) .filter((v) => v !== null && v !== undefined); - // v0.4.0: COUNT 对原始值去重(任意类型);数值聚合在类型转换后去重 if (func === 'COUNT') { if (argCol === '*') return rows.length; - if (distinctArg) { - return new Set(rawValues.map((v) => (typeof v === 'object' ? JSON.stringify(v) : String(v)))).size; - } return rawValues.length; } - const nums = rawValues.map(Number); - const distinctNums = distinctArg ? Array.from(new Set(nums)) : nums; + const nums = rawValues.map((v) => Number(v)); + // v0.8.0: 数值型聚合一律走单次遍历归约。 + // + // 此前 MIN/MAX 用 `Math.min(...distinctNums)` 展开实参:20 万行同组直接 + // `RangeError: Maximum call stack size exceeded`(原生错误,调用方无法按 code 分类)。 + // 同时把"空集/全 NULL"的返回值从 0 改为 null —— SQL 标准中 SUM/AVG/MIN/MAX + // 对空集返回 NULL,返回 0 会让 `SUM(x) = 0` 与"没有数据"不可区分。 switch (func) { - case 'SUM': return distinctNums.reduce((a, b) => a + b, 0); - case 'AVG': return distinctNums.length === 0 ? 0 : distinctNums.reduce((a, b) => a + b, 0) / distinctNums.length; - case 'MIN': return distinctNums.length === 0 ? 0 : Math.min(...distinctNums); - case 'MAX': return distinctNums.length === 0 ? 0 : Math.max(...distinctNums); - default: return 0; + case 'SUM': return reduceNumeric(nums, 'SUM'); + case 'AVG': return reduceNumeric(nums, 'AVG'); + case 'MIN': return reduceNumeric(nums, 'MIN'); + case 'MAX': return reduceNumeric(nums, 'MAX'); + default: return null; + } + } + /** + * DISTINCT 聚合(`COUNT(DISTINCT col)` / `SUM(DISTINCT col)`)。 + * + * v0.8.0(A25):独立成函数而不是在 computeAggregate 里加分支 —— 去重键 + * 必须用 `encodeValueKey`(类型安全),而"对原始值去重"(COUNT)与 + * "对数值化后去重"(SUM)用的键不同,混在一个函数里正是此前 + * `String(v)` 与 `JSON.stringify(v)` 两套编码并存的原因。 + */ + computeDistinctAggregate(func, rows, arg) { + const values = rows + .map((r) => resolveColumnValue(r, arg, { strict: true, context: `aggregate ${func}(DISTINCT ${arg})` })) + .filter((v) => v !== null && v !== undefined); + if (func === 'COUNT') { + return new Set(values.map((v) => encodeValueKey(v))).size; + } + const nums = values.map((v) => Number(v)); + // 去重**用键判定、用原值参与计算**。 + // + // 不能写成 `Array.from(new Set(nums.map(encodeValueKey))).map(Number)`: + // encodeValueKey 是类型前缀编码(`10` → `'n10'`),`Number('n10')` = NaN —— + // 实测 `SUM(DISTINCT v)` 返回 NaN(应为 10/20)。 + // 键只用于判等,参与归约的必须是原始数值。 + const seen = new Set(); + const distinctNums = []; + for (const n of nums) { + const key = encodeValueKey(n); + if (seen.has(key)) + continue; + seen.add(key); + distinctNums.push(n); + } + switch (func) { + case 'SUM': return reduceNumeric(distinctNums, 'SUM'); + case 'AVG': return reduceNumeric(distinctNums, 'AVG'); + case 'MIN': return reduceNumeric(distinctNums, 'MIN'); + case 'MAX': return reduceNumeric(distinctNums, 'MAX'); + default: return null; } } // ---- DISTINCT(优化:列值拼接代替 JSON.stringify) ---- @@ -11561,7 +13978,7 @@ const seen = new Set(); return rows.filter((row) => { // v0.7.4: 类型安全键编码(null 与 'null' 字符串、'\0' 分离) - const key = Object.values(row).map(encodeGroupKey).join('\x1f'); + const key = Object.values(row).map(encodeValueKey).join('\x1f'); if (seen.has(key)) return false; seen.add(key); @@ -11576,9 +13993,23 @@ if (!schema) throw new DatabaseError(`Table "${stmt.into}" does not exist`, 'TABLE_NOT_FOUND'); const colNames = stmt.columns ?? Object.keys(schema.columns); + // v0.8.0(A17): INSERT 的目标列必须存在。 + // + // 此前**不校验** stmt.columns:`INSERT INTO t (id, nope) VALUES ('1', 2)` 里 + // `nope` 在下面的循环中被当作列名写进 row,随后引擎的 validateRow 只遍历 + // schema 列 → `nope` 被静默丢弃、INSERT 报成功。用户以为写进去了, + // 而 `SELECT nope` 又报 COLUMN_NOT_FOUND —— 写路径与读路径对同一列名给出 + // 相反结论。这里显式报错(与读路径同一错误码),并一次列出全部未知列。 + const unknownColumns = colNames.filter((col) => !(col in schema.columns)); + if (unknownColumns.length > 0) { + throw new DatabaseError(`Unknown column${unknownColumns.length > 1 ? 's' : ''} ${unknownColumns + .map((c) => `"${c}"`) + .join(', ')} in table "${stmt.into}". Known columns: ${Object.keys(schema.columns).join(', ')}`, 'COLUMN_NOT_FOUND'); + } // INSERT INTO ... SELECT ...(v0.3.0) if (stmt.select) { - const selectRows = await this.executeSelectPart(stmt.select); + // A29:行源不得被 maxRowsPerQuery 截断(截断即静默丢写入行) + const selectRows = await this.executeSelectPart(stmt.select, 'source'); // v0.4.0 修复:源列顺序不能依赖行键(validateRow 会跳过 undefined 导致行键缺失/乱序)。 // 以 SELECT 列列表 / 源表 schema 列顺序为准,按位置对齐目标列,缺列不填。 let srcCols = []; @@ -11604,9 +14035,22 @@ } return mapped; }); + // v0.8.0(B-1): 在任何写入之前执行统一校验(未知列/类型/maxLength/min/max/required) + this.assertWithinRowLimit(rows.length); + await this.engine.validatePayload?.(stmt.into, rows, 'insert'); return this.engine.insert(stmt.into, rows); } - const rows = (stmt.values ?? []).map((vals) => { + const rows = (stmt.values ?? []).map((vals, tupleIndex) => { + // v0.8.0(A30):值的个数不得多于目标列。 + // + // 此前多出来的值被**静默丢弃**:`INSERT INTO t (id, n) VALUES ('9', 1, 'extra')` + // 报成功且只写入 (id,n)。用户以为第三个值进了某一列(或者至少会被提示), + // 实际上它消失了 —— 与 A17 同一类"写路径静默丢数据"。反方向的"值少于列" + // 是合法的(缺列走 default/NULL),因此只拒绝多于。 + if (vals.length > colNames.length) { + throw new DatabaseError(`INSERT has ${vals.length} value(s) for ${colNames.length} column(s) in table "${stmt.into}"` + + ` (row ${tupleIndex + 1}); too many values`, 'VALIDATION_ERROR', { table: stmt.into, values: vals.length, columns: colNames.length }); + } const row = {}; for (let i = 0; i < colNames.length; i++) { if (i < vals.length) @@ -11614,8 +14058,29 @@ } return row; }); + // v0.8.0(B-1): 同上 —— 校验先于任何副作用,多行批量整体判定 + this.assertWithinRowLimit(rows.length); + await this.engine.validatePayload?.(stmt.into, rows, 'insert'); return this.engine.insert(stmt.into, rows); } + /** + * v0.8.0(A29):写路径的行数上限保护。 + * + * `maxRowsPerQuery` 此前只在 SELECT 的返回处生效(`executeSelect` 末尾切片), + * 而 `INSERT INTO dst SELECT * FROM huge_src` 的**中间结果集**完全不受约束 —— + * 它由 `executeSelectPart` 直接产出并逐行写入,既不切片也不报错。 + * 于是"防止一次查询把浏览器内存打满"这一配置项在最容易打满内存的路径上失效。 + * + * 这里选择**报错**而不是静默截断:静默只写一部分行会让用户以为全部写完 + * (又一次"写路径静默丢数据")。错误里给出上限值与来源,便于用户改配置或 + * 改写查询。 + */ + assertWithinRowLimit(count) { + if (this.maxRowsPerQuery > 0 && count > this.maxRowsPerQuery) { + throw new DatabaseError(`Statement would write ${count} rows, exceeding maxRowsPerQuery (${this.maxRowsPerQuery}).` + + ' Narrow the source query or raise the limit.', 'QUERY_ERROR', { rows: count, maxRowsPerQuery: this.maxRowsPerQuery }); + } + } async executeUpdate(stmt) { // v0.7.4: 先解析 WHERE 子查询 —— 此前直接 compileStatement 调引擎: // 引擎层 matchWhere 的 $in/$nin 遇未解析的 $subquery 对象恒 false → @@ -11804,7 +14269,255 @@ } return engine.vacuum(); } - /** 列列表是否包含 CASE WHEN 表达式 */ + /** + * SELECT 列表的**输出列名**集合(投影后行里会出现的键)。 + * + * 与 `projectRow` 的键规则保持一致: + * - `*` → 未知(返回 `null` 表示"无法判定",调用方按"包含"处理,避免误判需要原始列); + * - `expr AS alias` → `alias`; + * - 聚合 `FUNC(arg) [AS alias]` → `alias` 或表达式原文; + * - CASE `... AS alias` → `alias`; + * - 字符串/数字常量列 → 表达式原文; + * - 裸列引用 → 剥离别名前缀后的列名。 + */ + outputColumnNames(stmt) { + const names = new Set(); + for (const col of stmt.columns) { + if (col === '*') + return null; + const agg = parseAggregateExpression(col); + if (agg) { + names.add(agg.outputKey); + continue; + } + const caseExpr = /^\s*CASE\b/i.test(col) ? parseCaseExpression(col) : null; + if (caseExpr) { + names.add(caseExpr.alias ?? col); + continue; + } + const aliasMatch = col.match(/^(.+?)\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i); + if (aliasMatch) { + names.add(aliasMatch[2]); + continue; + } + names.add(bareReference(col)); + } + return names; + } + /** ORDER BY 的键是否全部能在**输出列**里找到(决定排序发生在投影前还是投影后) */ + orderByReferencesOutputColumns(stmt) { + if (!stmt.orderBy || stmt.orderBy.length === 0) + return true; + const outputs = this.outputColumnNames(stmt); + if (outputs === null) + return true; // SELECT * + return stmt.orderBy.every((o) => outputs.has(bareReference(o.column))); + } + /** + * DISTINCT 是否必须在投影**前**执行。 + * + * 仅当 ORDER BY 引用了不在输出列里的列时成立:`SELECT DISTINCT dept FROM e ORDER BY v` + * 需要先按 `v` 排序、再按输出列 `dept` 去重。若把 DISTINCT 放到投影后, + * `v` 已被丢弃,排序无从进行(会报 COLUMN_NOT_FOUND)。 + * + * SQL 标准禁止这种写法;此处保留既有语义(排序后去重),并把该例外显式记录, + * 而不是让 DISTINCT 的位置在所有情况下都"碰巧"由排序决定。 + */ + distinctNeedsPreProjectionSort(stmt) { + if (!stmt.orderBy || stmt.orderBy.length === 0) + return false; + return !this.orderByReferencesOutputColumns(stmt); + } + /** + * v0.8.0(A37):校验 JOIN ON 里引用的列在**参与连接的两张表**之一存在。 + * + * `ON a.x = b.y` 的 `a.x` 属于主表或已有 JOIN 表,`b.y` 属于当前 JOIN 表 —— + * 两侧都要能找到归属;否则报 COLUMN_NOT_FOUND(而不是让连接静默产生空结果)。 + * 裸列名只要求"某一侧存在"(`ON k = k` 的既有语义是取主表列)。 + */ + async validateJoinOnColumns(stmt, join) { + const available = new Set(); + const addTable = async (table, alias) => { + const schema = await this.engine.getTableSchema(table); + if (!schema) + return; + for (const col of Object.keys(schema.columns)) { + available.add(col); + available.add(`${alias}.${col}`); + } + }; + await addTable(stmt.from, stmt.alias ?? stmt.from); + for (const other of stmt.joins ?? []) { + await addTable(other.table, other.alias ?? other.table); + if (other === join) + break; + } + await addTable(join.table, join.alias ?? join.table); + const missing = []; + const check = (ref) => { + const text = ref.trim(); + if (!text) + return; + if (available.has(text)) + return; + const bare = text.includes('.') ? text.split('.').pop() : text; + if (available.has(bare)) + return; + missing.push(text); + }; + const walkOperand = (value) => { + if (typeof value !== 'object' || value === null) + return; + for (const [op, operand] of Object.entries(value)) { + if (op === '$col') { + check(String(operand)); + continue; + } + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) + walkOperand(operand); + } + }; + for (const [key, value] of Object.entries(join.on)) { + if (key === '$and' || key === '$or' || key === '$not') + continue; + check(key); + walkOperand(value); + } + if (missing.length > 0) { + throw new DatabaseError(`Unknown column${missing.length > 1 ? 's' : ''} ${missing.map((c) => `"${c}"`).join(', ')}` + + ` in JOIN ON of table "${stmt.from}"`, 'COLUMN_NOT_FOUND', { columns: missing, from: stmt.from }); + } + } + /** + * v0.8.0(A37):校验 WHERE 中出现的列名都存在于行源。 + * + * 覆盖两类引用: + * - **键位**:`WHERE x = 1` 的 `x`; + * - **`$col` 值位**:`WHERE x = y` 的 `y`(parser 生成 `{ x: { $eq: { $col: 'y' } } }`), + * 含 `$and`/`$or`/`$not` 内部的操作数槽。 + * + * 派生表与子查询的行源:跳过(其列来自子查询投影,需要单独解析; + * 由 `normalizeUnprefixedReferences` + 运行时行形状决定)。 + * JOIN:两侧的表别名都要参与判定 —— `t.x` 与另一表的 `u.x` 都属于合法引用。 + * + * 之所以必须是**显式错误**而不是依赖运行时 UNKNOWN:`$col` 取不到值时 + * 三值求值器只能返回 UNKNOWN,而 UNKNOWN 在 WHERE 里表现为"不保留该行" —— + * 用户看到的是"没有匹配数据",与"列名拼错"完全无法区分。 + */ + async assertWhereColumnsExist(stmt, isJoinQuery) { + if (!stmt.where || Object.keys(stmt.where).length === 0) + return; + // 派生表行源:列来自子查询投影,此处不做 schema 校验 + if (stmt.fromSubquery) + return; + if (!stmt.from) + return; + await this.validateWhereColumns(stmt, stmt.where, { + context: 'WHERE', + rejectAmbiguous: isJoinQuery, + }); + } + /** + * 通用的 WHERE 侧列引用校验(SELECT 的 WHERE 与 JOIN 的 ON 共用)。 + * + * @param context 错误消息中的位置描述('WHERE' / 'JOIN ON') + * @param rejectAmbiguous JOIN 场景下裸列名被多表共有 → 报歧义(SQL 标准要求限定)。 + * **JOIN ON 传 false**:`ON a.x = b.x` 里两侧的限定名各自 + * 合法,而 `ON k = k` 这种裸写法在 JOIN 语境下按"取主表列" + * 解释(与既有 joinRows 行为一致),不应因为"两表都有 k" + * 就拒绝 —— 那会把常见的等值连接写法判为错误。 + */ + async validateWhereColumns(stmt, where, opts) { + const isJoinQuery = opts.rejectAmbiguous; + const available = new Set(); + const owners = new Map(); // 裸列名 → 表别名(用于歧义判定) + const collectFrom = async (table, alias) => { + const schema = await this.engine.getTableSchema(table); + if (!schema) + return; + for (const col of Object.keys(schema.columns)) { + available.add(col); + available.add(`${alias}.${col}`); + const prev = owners.get(col); + if (prev === undefined) + owners.set(col, alias); + else if (prev !== alias) + owners.set(col, '*'); // 多表共有 → 歧义 + } + }; + await collectFrom(stmt.from, stmt.alias ?? stmt.from); + if (isJoinQuery) { + for (const join of stmt.joins ?? []) { + await collectFrom(join.table, join.alias ?? join.table); + } + } + const missing = []; + const ambiguous = []; + const check = (ref) => { + const text = ref.trim(); + if (!text) + return; + if (available.has(text)) { + // 裸列名在 JOIN 中若被多张表共有 → 歧义(SQL 标准要求限定) + if (!text.includes('.') && isJoinQuery && owners.get(text) === '*') + ambiguous.push(text); + return; + } + // 唯一后缀匹配(行键可能带别名,而 where 写作裸列名;反向亦然) + const bare = text.includes('.') ? text.split('.').pop() : text; + if (available.has(bare)) + return; + missing.push(text); + }; + const walkOperand = (value) => { + if (typeof value !== 'object' || value === null) + return; + const ops = value; + for (const [op, operand] of Object.entries(ops)) { + if (op === '$col') { + check(String(operand)); + continue; + } + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) { + walkOperand(operand); + } + else if (Array.isArray(operand)) { + for (const item of operand) + walkOperand(item); + } + } + }; + const walkWhere = (cond) => { + for (const [key, value] of Object.entries(cond)) { + if (key === '$and' || key === '$or') { + for (const sub of (Array.isArray(value) ? value : [value])) + walkWhere(sub); + continue; + } + if (key === '$not') { + walkWhere(value); + continue; + } + if (key === '$exists') + continue; // 由子查询执行结果填充 + if (/^\s*CASE\b/i.test(key)) + continue; // CASE 键内含表达式,另行求值 + check(key); + walkOperand(value); + } + }; + walkWhere(where); + if (ambiguous.length > 0) { + throw new DatabaseError(`Ambiguous column${ambiguous.length > 1 ? 's' : ''} ${ambiguous.map((c) => `"${c}"`).join(', ')}` + + ` in ${opts.context}: present in multiple joined tables. Qualify with a table alias.`, 'COLUMN_NOT_FOUND', { columns: ambiguous }); + } + if (missing.length > 0) { + throw new DatabaseError(`Unknown column${missing.length > 1 ? 's' : ''} ${missing.map((c) => `"${c}"`).join(', ')}` + + ` in ${opts.context} of table "${stmt.from}"`, 'COLUMN_NOT_FOUND', { columns: missing, from: stmt.from }); + } + } + /** + * 列列表是否包含 CASE WHEN 表达式 */ hasCaseColumn(columns) { return columns.some((col) => /^\s*CASE\b/i.test(col)); } @@ -11849,6 +14562,67 @@ return false; } getEngine() { return this.engine; } + /** + * v0.8.0: 校验 SELECT 列表中的**裸列引用**在结果行里确实存在,否则抛 COLUMN_NOT_FOUND。 + * + * 为什么必须做:`SELECT bogus FROM t` 此前返回 `[{},{},...]`(行数对、内容空、无报错), + * 这是"静默错误结果"里最难被发现的一类 —— 调用方拿到的是结构正确但全空的表格。 + * + * 判定规则(与 projectRow 的分类保持一致): + * - `*` 跳过; + * - 字符串/数字常量列跳过; + * - CASE 表达式跳过(其内部列引用由 evaluateCase 处理); + * - `expr AS alias`:字符串/数字常量跳过,否则取 `expr` 作为被引用列; + * - 其余视为裸列引用。 + * 存在性检查允许两种形态:精确匹配,或**唯一**以 `.` 结尾(JOIN 行以 `alias.col` 为键)。 + * 若同一个后缀出现在多个表别名下则视为歧义,同样报错(符合"未限定列名歧义应报错"的语义)。 + * + * 结果集为空时无法判定,此时跳过(空表 + 未知列不会误报)。 + */ + assertProjectionColumnsExist(rows, columns, stmt) { + if (rows.length === 0 || columns.length === 0) + return; + const available = new Set(); + for (const row of rows) { + for (const key of Object.keys(row)) + available.add(key); + } + for (const raw of columns) { + const col = raw.trim(); + if (col === '*') + continue; + if (parseCaseExpression(col)) + continue; + let reference = col; + const aliasMatch = col.match(/^(.+?)\s+AS\s+\w+$/i); + if (aliasMatch) + reference = aliasMatch[1].trim(); + // 常量列(字符串 / 数字 / 布尔 / NULL) + if (/^'.*'$/s.test(reference)) + continue; + if (/^-?\d+(\.\d+)?$/.test(reference)) + continue; + if (/^(TRUE|FALSE|NULL)$/i.test(reference)) + continue; + // 聚合表达式(在 hasAggregate 分支已跳过,这里再兜一层防御) + if (/^(COUNT|SUM|AVG|MIN|MAX)\s*\(/i.test(reference)) + continue; + if (available.has(reference)) + continue; + const suffixMatches = []; + for (const key of available) { + if (key.endsWith(`.${reference}`)) + suffixMatches.push(key); + } + if (suffixMatches.length === 1) + continue; + if (suffixMatches.length > 1) { + const owners = suffixMatches.map((k) => k.slice(0, k.length - reference.length - 1)).sort(); + throw new DatabaseError(`Ambiguous column "${reference}" in SELECT list: present in ${owners.join(', ')}`, 'COLUMN_NOT_FOUND', { column: reference, tables: owners, from: stmt.from }); + } + throw new DatabaseError(`Unknown column "${reference}" in SELECT list`, 'COLUMN_NOT_FOUND', { column: reference, from: stmt.from, available: [...available].slice(0, 32) }); + } + } /** * 列投影(v0.3.1):普通列走 projectColumns,CASE WHEN 表达式逐行求值; * v0.3.3: 支持 `col AS alias` 列别名 @@ -11884,6 +14658,13 @@ constCols.push({ key: col, value }); continue; } + // v0.8.0: 匿名常量列(数字/布尔/NULL)—— `SELECT 1 FROM t` 此前投影成 {} + // (键 '1' 在、值为 undefined,JSON 序列化后键消失)。SQLite/MySQL 用 + // 表达式原文作列名,这里保持一致。 + if (/^-?\d+(\.\d+)?$/.test(col) || /^(TRUE|FALSE|NULL)$/i.test(col)) { + constCols.push({ key: col, value: resolveAliasSource(col, row) }); + continue; + } plain.push(col); } // v0.7.3: hasStar 时以原行全部列为基(projectColumns 仅投影 plain 列,不含 * 的其余列) @@ -11895,9 +14676,7 @@ Object.assign(projected, row); } else { - const lit = source.match(/^'(.*)'$/s); - // v0.7.3: 同 constCols —— SQL 标准 '' 转义还原 - projected[alias] = lit ? lit[1].replace(/''/g, "'") : row[source]; + projected[alias] = resolveAliasSource(source, row); } } for (const { key, value } of constCols) { @@ -11911,31 +14690,74 @@ // =================================================================== // 无 GROUP BY 时的聚合计算 // =================================================================== - /** 检查 SELECT 列列表中是否包含聚合函数 */ + /** 检查 SELECT 列列表中是否包含聚合函数(与执行路径共用同一解析器) */ _hasAggregateColumn(columns) { - return columns.some((col) => /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(col)); + return columns.some((col) => isAggregateExpression(col)); } - /** 计算单行聚合结果(无 GROUP BY) */ + /** + * 计算单行聚合结果(无 GROUP BY)。 + * + * v0.8.0(A25):聚合识别与取值改为与 GROUP BY 路径**共用** + * `parseAggregateExpression` / `resolveColumnValue` —— 此前这里有第二份正则, + * 于是 `COUNT (n)`(函数名后有空格)在"是否聚合"判定与"如何求值"两处结论不同。 + */ computeSingleAggregate(rows, stmt) { const result = {}; for (const colExpr of stmt.columns) { if (colExpr === '*') continue; - const m = colExpr.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i); - if (m) { - const [, func, arg, alias] = m; - result[alias || colExpr] = this.computeAggregate(func.toUpperCase(), rows, arg.trim()); - } - else { - // 非聚合列取第一行的值 - result[colExpr] = rows.length > 0 ? rows[0][colExpr] : null; + const agg = parseAggregateExpression(colExpr); + if (agg) { + result[agg.outputKey] = agg.distinct + ? this.computeDistinctAggregate(agg.func, rows, agg.arg) + : this.computeAggregate(agg.func, rows, agg.arg); + continue; } + // 非聚合列取第一行的值(严格取值:未知列报错而非静默 null) + result[colExpr] = rows.length > 0 + ? resolveColumnValue(rows[0], colExpr, { strict: false, context: 'SELECT list' }) + : null; } return result; } // =================================================================== // 关联子查询 / 别名规范化(v0.3.0) // =================================================================== + /** + * 归一化"行键不带前缀"的查询中的所有引用 —— 剥离表别名前缀。 + * + * v0.8.0(A36):抽成单一实现,因为**两条**路径需要同一规则: + * - 非 JOIN 单表(行键是裸列名,`WHERE u.age` 要变成 `age`); + * - 派生表非 JOIN(`FROM (SELECT ...) AS d`,行键来自子查询投影,同样无前缀)。 + * 此前只有前者做归一化,后者完全没做 → `SELECT d.id FROM (...) AS d` 静默空结果, + * 而同义的 `SELECT id FROM (...) AS d` 正确。 + * + * 覆盖 WHERE(含 `$col` 嵌套引用)/ ORDER BY / GROUP BY / SELECT 四类引用。 + * 聚合表达式与 CASE 表达式**整体跳过**(其内部的列引用由各自的求值器处理, + * 而它们的求值器现在都走统一的 `resolveColumnValue`,本身支持前缀)。 + */ + normalizeUnprefixedReferences(stmt, aliases) { + const list = aliases.filter((a) => !!a); + if (stmt.where && Object.keys(stmt.where).length > 0) { + stmt.where = this.normalizeWhereColumns(stmt.where, list); + } + if (stmt.orderBy && stmt.orderBy.length > 0) { + stmt.orderBy = stmt.orderBy.map((o) => ({ ...o, column: this.stripAlias(o.column, list) })); + } + if (stmt.groupBy && stmt.groupBy.length > 0) { + stmt.groupBy = stmt.groupBy.map((c) => this.stripAlias(c, list)); + } + stmt.columns = stmt.columns.map((c) => { + if (c === '*' || isAggregateExpression(c) || /^\s*CASE\b/i.test(c) || /^'/.test(c)) + return c; + const m = c.match(/^(.+?)\s+AS\s+(\w+)$/i); + if (m) { + const stripped = this.stripAlias(m[1].trim(), list); + return stripped === m[1].trim() ? c : `${stripped} AS ${m[2]}`; + } + return this.stripAlias(c, list); + }); + } /** 剥离主表别名前缀:'u.id' → 'id'(键与 $col 值均处理,支持多层别名) */ normalizeWhereColumns(where, aliases) { const normalized = {}; @@ -12055,38 +14877,118 @@ } return false; } - /** 移除关联 EXISTS 标记(引擎层先执行无 EXISTS 条件的查询) */ - stripCorrelatedExists(where) { + /** + * 构造**引擎层预过滤**用的 WHERE 子句。 + * + * 逐行求值的谓词必须整体移出引擎层,否则引擎的 `matchWhere`(没有外层行上下文) + * 会把它们判为 UNKNOWN → **所有行被过滤掉**,逐行求值再正确也无行可算: + * - 关联 `EXISTS`:`$exists` 子查询未执行,`{ $subquery: ... }` 引擎无法求值; + * - CASE WHEN 表达式键:需要行上下文才能算出布尔; + * - `$col` 列引用(`WHERE t.x = t.y` → `{ x: { $eq: { $col: 'y' } } }`): + * 引擎层取不到"另一列"的值。 + * + * 移出的粒度取决于连接词 —— 这里**不是**保守兜底,而是逻辑上唯一正确的做法: + * - 顶层 / `$and` 的成员:可以单独删除该谓词,其余谓词仍然安全可下推; + * - `$or` / `$not` 的成员:不能单独删除。删掉 `A OR B` 中的 `B` 会得到更严的 + * `A`(**漏行**);删掉 `NOT B` 中的 `B` 会得到恒真的 `NOT true`(**多行**)。 + * 因此整条 `$or` / `$not` 都交给逐行求值(`$not` 的恒真情形直接丢弃该键)。 + */ + enginePreFilter(where) { const cleaned = {}; for (const [key, value] of Object.entries(where)) { - if (key === '$and' || key === '$or') { - cleaned[key] = value.map((sub) => this.stripCorrelatedExists(sub)); + if (key === '$and') { + const subs = value.map((sub) => this.enginePreFilter(sub)); + const kept = subs.filter((sub) => Object.keys(sub).length > 0); + if (kept.length > 0) + cleaned.$and = kept; + continue; + } + if (key === '$or') { + // $or 是故障放大器:任一分支不可判定则该 $or 整体不可下推 + const subs = value; + if (subs.some((sub) => !this.isEngineEvaluable(sub))) + continue; + cleaned.$or = subs.map((sub) => this.enginePreFilter(sub)); continue; } if (key === '$not') { - const inner = this.stripCorrelatedExists(value); - // 剥离后为空 → 条件恒真,删掉该键(避免引擎层执行 NOT(true) 过滤掉所有行) - if (Object.keys(inner).length > 0) - cleaned.$not = inner; + const inner = value; + if (!this.isEngineEvaluable(inner)) + continue; + cleaned.$not = this.enginePreFilter(inner); continue; } if (key === '$exists') continue; // 逐行求值时单独处理 if (/^\s*CASE\b/i.test(key)) continue; // v0.3.2: CASE 键逐行求值 + if (this.fieldHasColRef(value) || this.fieldHasSubquery(value)) + continue; // $col / 子查询逐行求值 cleaned[key] = value; } return cleaned; } + /** + * 该 WHERE 片段是否可完全交给引擎层求值(无 `$col` / 关联 `EXISTS` / CASE 键)。 + * + * 与 `hasCorrelatedRefs` 的区别:`hasCorrelatedRefs` 回答"是否需要逐行求值", + * 本函数回答"能否整体下推"。两者互补,缺一不可 —— 后者是前者在 `$or`/`$not` + * 内部传播后的结果。 + */ + isEngineEvaluable(where) { + for (const [key, value] of Object.entries(where)) { + if (key === '$and' || key === '$or') { + if (value.some((sub) => !this.isEngineEvaluable(sub))) + return false; + continue; + } + if (key === '$not') { + if (!this.isEngineEvaluable(value)) + return false; + continue; + } + if (key === '$exists') + return false; + if (/^\s*CASE\b/i.test(key)) + return false; + if (this.fieldHasColRef(value) || this.fieldHasSubquery(value)) + return false; + } + return true; + } + /** 字段条件里是否含未解析子查询(引擎层无法执行) */ + fieldHasSubquery(value) { + if (typeof value !== 'object' || value === null || Array.isArray(value)) + return false; + const ops = value; + if ('$subquery' in ops) + return true; + for (const [, operand] of Object.entries(ops)) { + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) { + if ('$subquery' in operand) + return true; + } + if (Array.isArray(operand)) { + for (const item of operand) { + if (typeof item === 'object' && item !== null && '$subquery' in item) + return true; + } + } + } + return false; + } /** 逐行绑定外层行上下文,求值关联 EXISTS、$col 引用与 CASE WHEN 键 */ - async filterCorrelated(rows, where) { + async filterCorrelated(rows, where, aliases = []) { const result = []; for (const row of rows) { // 1. CASE WHEN 键 → 布尔条件(同步) let rowWhere = this.resolveCaseKeys(where, row); // 2. $col 绑定 + 关联 EXISTS 求值(异步) - rowWhere = await this.resolveSubqueries(rowWhere, row); - if (matchWhere(row, rowWhere)) { + rowWhere = await this.resolveSubqueries(rowWhere, row, aliases); + // v0.8.0(A10):必须传 { $col: true } —— 否则 `{ $eq: { $col: 't.y' } }` + // 会被当作"与一个对象相等"比较,任何行都不匹配 → 静默空结果。 + // 实测:`SELECT id FROM t WHERE t.x = t.y` 返回 [](应返回 x==y 的行)。 + if (matchWhere(row, rowWhere, { $col: true })) { result.push(row); } } @@ -12166,23 +15068,37 @@ return true; } /** 将 where 中的 $col 引用替换为上下文行值 */ - bindColumnRefs(value, contextRow) { + bindColumnRefs(value, contextRow, aliases = []) { if (typeof value !== 'object' || value === null || Array.isArray(value)) return value; const ops = {}; for (const [op, operand] of Object.entries(value)) { if (op === '$col') { - ops[op] = contextRow[String(operand)] ?? null; + ops[op] = this.lookupOuterValue(contextRow, String(operand), aliases); } else if (op === '$and' || op === '$or') { - ops[op] = operand.map((sub) => this.bindWhereRefs(sub, contextRow)); + ops[op] = operand.map((sub) => this.bindWhereRefs(sub, contextRow, aliases)); } else if (op === '$not' && typeof operand === 'object' && operand !== null) { - ops[op] = this.bindColumnRefs(operand, contextRow); + ops[op] = this.bindColumnRefs(operand, contextRow, aliases); } else if (typeof operand === 'object' && operand !== null && !Array.isArray(operand) && '$col' in operand) { // 操作符值中嵌套的列引用:{ $eq: { $col: 'id' } } → { $eq: row['id'] } - ops[op] = contextRow[String(operand.$col)] ?? null; + ops[op] = this.lookupOuterValue(contextRow, String(operand.$col), aliases); + } + else if (typeof operand === 'object' && operand !== null && !Array.isArray(operand) + && '$subquery' in operand) { + // v0.8.0(A10):**递归进入子查询**,把子查询 WHERE 里的外层引用绑定为当前行值。 + // + // 此前这里落到 else 分支原样保留子查询对象 —— 于是 + // WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id) + // 里的 `u.id` 始终未绑定(求值为 null),子查询返回空集 → `$in: []` + // → 所有行被过滤,**静默空结果**(而同结构的 EXISTS 走另一条分支是正常的)。 + const sub = operand.$subquery; + const subWhere = sub.where && this.hasCorrelatedRefs(sub.where) + ? this.bindWhereRefs(sub.where, contextRow, aliases) + : sub.where; + ops[op] = { $subquery: { ...sub, where: subWhere } }; } else { ops[op] = operand; @@ -12190,20 +15106,36 @@ } return ops; } - bindWhereRefs(where, contextRow) { + /** + * v0.8.0(A10):在外层行里取 `$col` 引用的值。 + * + * 关键点:引用可能带外层表名/别名前缀(`u.id`),而外层行键是**不带前缀**的 + * (非 JOIN 路径会先剥离)。因此这里必须先剥前缀再取值 —— 否则 `u.id` 取到 + * `undefined`,被 `?? null` 静默变成 null,子查询返回空集 + * (实测 `WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id)` 静默空结果)。 + */ + lookupOuterValue(contextRow, ref, aliases) { + const bare = this.stripAlias(ref, aliases); + if (bare in contextRow) + return contextRow[bare]; + if (ref in contextRow) + return contextRow[ref]; + return null; + } + bindWhereRefs(where, contextRow, aliases = []) { const bound = {}; for (const [key, value] of Object.entries(where)) { if (key === '$and' || key === '$or') { - bound[key] = value.map((sub) => this.bindWhereRefs(sub, contextRow)); + bound[key] = value.map((sub) => this.bindWhereRefs(sub, contextRow, aliases)); } else if (key === '$not') { - bound.$not = this.bindWhereRefs(value, contextRow); + bound.$not = this.bindWhereRefs(value, contextRow, aliases); } else if (key === '$exists') { bound[key] = value; } else { - bound[key] = this.bindColumnRefs(value, contextRow); + bound[key] = this.bindColumnRefs(value, contextRow, aliases); } } return bound; @@ -12216,10 +15148,10 @@ * 将结果替换为具体值。 * @param contextRow 关联子查询的外层行上下文(用于绑定 $col 引用) */ - async resolveSubqueries(where, contextRow) { + async resolveSubqueries(where, contextRow, aliases = []) { // 关联上下文:先把字段级的 $col 引用绑定为外层行值 if (contextRow) { - where = this.bindWhereRefs(where, contextRow); + where = this.bindWhereRefs(where, contextRow, aliases); } const resolved = {}; for (const [key, value] of Object.entries(where)) { @@ -12239,20 +15171,20 @@ } // 逻辑组合操作符 if (key === '$and' && Array.isArray(value)) { - resolved.$and = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow))); + resolved.$and = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (key === '$or' && Array.isArray(value)) { - resolved.$or = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow))); + resolved.$or = await Promise.all(value.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (key === '$not' && typeof value === 'object' && value !== null) { - resolved.$not = await this.resolveSubqueries(value, contextRow); + resolved.$not = await this.resolveSubqueries(value, contextRow, aliases); continue; } // 字段条件 if (typeof value === 'object' && value !== null) { - resolved[key] = await this.resolveOperatorSubqueries(value); + resolved[key] = await this.resolveOperatorSubqueries(value, contextRow, aliases); } else { resolved[key] = value; @@ -12263,27 +15195,39 @@ /** * 解析操作符值中嵌套的子查询 */ - async resolveOperatorSubqueries(ops) { + /** + * 解析字段条件里的子查询。 + * + * v0.8.0 根治(A10):接收外层行上下文并对子查询内的关联引用做绑定。 + * 此前完全不传 contextRow —— 于是 `WHERE id IN (SELECT user_id FROM o WHERE o.user_id = u.id)` + * 里的 `u.id` 绑定为 undefined,子查询返回空集,最终 `$in: []` → **静默空结果** + * (而结构相同的 EXISTS 因为走另一条分支是正常的 —— 又一处"同类逻辑两条路径")。 + */ + async resolveOperatorSubqueries(ops, contextRow, aliases = []) { const resolved = {}; for (const [op, operand] of Object.entries(ops)) { // 处理嵌套 $and/$or(在字段级条件中) if (op === '$and' && Array.isArray(operand)) { - resolved.$and = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub))); + resolved.$and = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (op === '$or' && Array.isArray(operand)) { - resolved.$or = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub))); + resolved.$or = await Promise.all(operand.map((sub) => this.resolveSubqueries(sub, contextRow, aliases))); continue; } if (op === '$not') { resolved.$not = typeof operand === 'object' && operand !== null - ? await this.resolveOperatorSubqueries(operand) + ? await this.resolveOperatorSubqueries(operand, contextRow, aliases) : operand; continue; } // 子查询检测 if (typeof operand === 'object' && operand !== null && '$subquery' in operand) { - const subStmt = operand.$subquery; + let subStmt = operand.$subquery; + // 关联引用绑定(与 $exists 分支同样的处理) + if (contextRow && this.hasCorrelatedRefs(subStmt.where)) { + subStmt = { ...subStmt, where: this.bindWhereRefs(subStmt.where, contextRow, aliases) }; + } const subResult = await this.executeSelect(subStmt); if (op === '$in' || op === '$nin') { // IN 子查询 → 提取第一列的值列表 @@ -12432,12 +15376,13 @@ this.tables = new Map(); this.completed = false; this.engine = engine; + this.executor = new QueryExecutor(engine); } /** 获取表操作对象 */ table(tableName) { let t = this.tables.get(tableName); if (!t) { - t = new Table(this.engine, tableName); + t = new Table(this.engine, tableName, this.executor); this.tables.set(tableName, t); } return t; @@ -12596,6 +15541,8 @@ /** 多标签页同步通道(v0.3.2) */ this.channel = null; // ---- 发布订阅 ---- + /** 变更通知引擎(init 后可用);未初始化时为 null */ + this.notifier = null; this.listeners = new Map(); // ---- 迁移 ---- this.migrations = new Map(); @@ -12611,10 +15558,17 @@ const msg = event.data; if (!msg || msg.type !== 'change') return; - this.emit(msg.table ?? '', { type: 'external', table: msg.table ?? '' }); - // Hybrid 引擎:从磁盘重载内存,保证读到其他标签页的最新数据 - if (this.engine instanceof HybridEngine) { - this.engine.reloadMemoryFromDisk().catch(() => { + // v0.8.0: 外部事件只派发给本地订阅者,**不得再次广播** —— + // 否则两个标签页会互相转发形成无限广播循环(实测 8 次以上且不终止)。 + void this.emitExternal(msg.table ?? ''); + // Hybrid 引擎:从磁盘重载内存,保证读到其他标签页的最新数据。 + // + // v0.8.0: 引擎现在被 ChangeNotifierEngine 装饰,`this.engine instanceof HybridEngine` + // 恒为 false —— 因此改为对**内层**引擎做能力探测。这也是审计指出的 + // "用 instanceof 做引擎特判"的隐患:装饰器一加就静默失效。 + const inner = this.unwrapEngine(); + if (inner instanceof HybridEngine) { + inner.reloadMemoryFromDisk().catch(() => { // 重载失败不影响主流程(下次读可能短暂过期) }); } @@ -12628,6 +15582,25 @@ this.engine = this.createEngine(); // 打开连接 await this.engine.open(this.name, this.version); + // v0.8.0(A9):把引擎包进变更通知装饰器 —— **唯一**的变更事件汇聚点。 + // 三个写入入口(SQL / Table API / QueryBuilder)与事务内写入都必须经过引擎接口, + // 因此在这里拦一次即可全覆盖,避免在三条路径上各写一份"变更描述"逻辑。 + this.engine = new ChangeNotifierEngine(this.engine, (error) => this._onError(error), (table) => this.broadcastChange(table)); + this.notifier = this.engine; + // 把引擎层变更事件接入 db.subscribe 的订阅表(listeners) + this.notifier.addListener(async (event) => { + const set = this.listeners.get(`change:${event.table}`); + if (!set || set.size === 0) + return; + for (const cb of [...set]) { + try { + await cb(event); + } + catch (error) { + this._onError(error); + } + } + }); // v0.4.2-fix (P2-7): 从库内加载持久化的迁移版本, // 重启后 migrateTo 从持久化版本继续执行,不再每次从 config.version 重置 if (typeof this.engine.getMeta === 'function') { @@ -12682,7 +15655,10 @@ if (!t) { // v0.3.2: 表操作写入后广播变更(多标签页同步) // v0.5.1: CRUD 生命周期钩子真实接线(beforeInsert/afterInsert/...) - t = new Table(this.engine, name, this.executor, (tableName) => this.broadcastChange(tableName), (hook, args) => this.pluginManager.trigger(hook, ...args)); + t = new Table(this.engine, name, this.executor, + // v0.8.0: 变更事件由引擎层 ChangeNotifierEngine 统一产生, + // 此处不再重复广播(Table API 与 SQL 路径曾各广播一次 → 同一次写入触发两遍) + () => { }, (hook, args) => this.pluginManager.trigger(hook, ...args)); this.tableCache.set(name, t); } return t; @@ -12727,10 +15703,8 @@ await this.triggerStatementHooks(stmt, 'before'); result = await this.executor.execute(stmt); await this.triggerStatementHooks(stmt, 'after', result); - // v0.3.2: 写语句广播表变更(多标签页同步) - const table = this.writeStatementTable(stmt); - if (table) - this.broadcastChange(table); + // v0.8.0: 变更广播与订阅事件统一由引擎层 ChangeNotifierEngine 产生, + // 此处不再手工 broadcastChange(否则同一次写入会广播两次)。 } } catch (error) { @@ -12760,6 +15734,27 @@ * }); * ``` */ + /** + * 流式查询:逐行回调,尽量不物化全部结果(大表友好)。 + * + * v0.8.0 根治:**快路径与物化路径的结果必须逐值相等**。 + * + * 此前 core.ts 自己重写了一套"能不能走引擎快路径 / 列投影怎么算"的规则, + * 与 executor 的规则各写一份并发生漂移,实测四类静默不一致: + * SELECT id AS x FROM t → query 返回 [{x}],stream 返回 [{id,v}](全列 + 原列名) + * SELECT t.id FROM t → query 返回 [{id}],stream 返回 [{}](空对象) + * ... LIMIT 2 OFFSET 1 → query 1 行,stream 2 行 + * ... LIMIT 0 → query 0 行,stream 1 行(Aria 又是 0 行,跨引擎也不同) + * 另:流式路径既不触发 beforeQuery/afterQuery 钩子,也不受 maxRowsPerQuery 约束。 + * + * 现在的规则: + * 1. 是否可流式、如何投影,全部由 `executor.analyzeSelect()` 判定(单一事实来源); + * 2. 不可流式(以及任何不确定的情况)一律回退到 `query()` 物化后逐行回调 —— + * 这条路径天然与 `query()` 同语义,是正确性的兜底保证; + * 3. 快路径只覆盖"引擎层投影与 executor 投影语义等价"的简单 SELECT; + * 4. 回调返回 Promise 时不再靠 `constructor.name` 猜(此前对普通函数返回 Promise + * 的情况完全失效),而是直接检测返回值并显式报错,避免 Promise 被静默丢弃。 + */ async queryStream(sql, onRow) { this.ensureReady(); // v0.7.4: 多语句显式拒绝 —— 此前 parseAll(sql)[0] 静默忽略后续语句: @@ -12774,59 +15769,53 @@ throw new DatabaseError('queryStream only supports SELECT statements', 'NOT_SUPPORTED'); } const select = stmt; - // 不可流式场景:JOIN / GROUP BY / HAVING / DISTINCT / 聚合 / UNION / 关联子查询 / ORDER BY - const aggregate = select.columns.some((c) => /^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(c)); - // v0.7.3: WHERE 含子查询($subquery / $exists / 嵌套 $col 列引用)不可流式 —— - // 引擎层 matchWhere 的 $in/$nin 遇未解析的 $subquery 对象返回 false → 所有行 - // 被静默过滤(空结果);$col 操作符无对应匹配分支会抛 QUERY_ERROR。 - // 递归检测后回退物化路径(resolveSubqueries 正确解析)。 - const hasSubquery = (where) => { - if (!where) - return false; - for (const [k, v] of Object.entries(where)) { - if (k === '$and' || k === '$or') { - if (v.some((sub) => hasSubquery(sub))) - return true; - continue; - } - if (k === '$not') { - if (hasSubquery(v)) - return true; - continue; - } - if (k === '$exists') - return true; - if (typeof v === 'object' && v !== null) { - for (const [, operand] of Object.entries(v)) { - if (typeof operand === 'object' && operand !== null) { - const ops = operand; - if ('$subquery' in ops || '$col' in ops) - return true; - } - } - } - } - return false; - }; - const streamable = !select.joins && !select.groupBy && !select.having && !select.distinct - && !aggregate && !(select.orderBy && select.orderBy.length > 0) - && !hasSubquery(select.where); - if (streamable && typeof this.engine.findStream === 'function') { - // 用户回调为 async(返回 Promise)时引擎同步扫描无法 await → 回退物化 - const isAsync = onRow.constructor?.name === 'AsyncFunction'; - if (!isAsync) { - const where = this.normalizeWhereForStream(select); - const plainCols = select.columns.filter((c) => !/\s+AS\s+\w+$/i.test(c)); - return this.engine.findStream(select.from, { - table: select.from, - columns: plainCols.length > 0 && plainCols[0] !== '*' ? plainCols : ['*'], - where: where && Object.keys(where).length > 0 ? where : undefined, - limit: select.limit, - offset: select.offset, - }, onRow); + // 执行形态由 executor 统一判定(与 query() 路径共用同一规则) + const shape = this.executor.analyzeSelect(select); + // LIMIT 0 语义:任何引擎都必须返回 0 行。 + // 引擎对 `limit: 0` 的解释并不一致(Aria 返回 0 行,Memory/KVStore/Hybrid 把 0 当 + // "无限制"返回全部行 —— 实测 LIMIT 0 在四种引擎下分别为 0/1/1/1 行)。 + // 流式路径直接短路,避免依赖各引擎对 0 的解释。 + if (select.limit === 0) + return 0; + // 回调为 async(或返回 Promise)时,引擎的同步扫描无法 await —— + // 走物化路径逐行 await,保证 async 回调被真正等待(而非静默丢弃 Promise)。 + if (this.isAsyncCallback(onRow)) { + const materialized = await this.query(sql); + if (!Array.isArray(materialized)) + return 0; + for (const row of materialized) { + await onRow(row); } + return materialized.length; } - // 回退:物化后逐行回调 + if (shape.streamable && typeof this.engine.findStream === 'function') { + const where = this.normalizeWhereForStream(select); + // 与 executor 的非 JOIN 路径一致:剥离主表别名前缀后再交给引擎 + // (executor 对 `SELECT t.id FROM t` 会发 columns=['id'];此前流式路径把 + // 't.id' 原样传给引擎,引擎按 't.id' 建键 → 行里取不到 → 回调收到 {})。 + const mainAliases = [select.alias ?? select.from].filter(Boolean); + const columns = select.columns.length > 0 + ? select.columns.map((c) => this.stripAliasPrefix(c, mainAliases)) + : ['*']; + const maxRows = this.maxRowsPerQuery; + let emitted = 0; + const count = await this.engine.findStream(select.from, { + table: select.from, + columns, + where: where && Object.keys(where).length > 0 ? where : undefined, + limit: select.limit, + offset: select.offset, + }, (row) => { + // maxRowsPerQuery 必须与物化路径一致地生效(此前流式路径完全不受约束) + if (maxRows > 0 && emitted >= maxRows) + return; + emitted++; + onRow(row); + }); + // 引擎返回的行数在 maxRowsPerQuery 截断时需与回调次数一致 + return maxRows > 0 ? Math.min(count, maxRows) : count; + } + // 回退:物化后逐行回调(与 query() 完全同语义,含钩子与 maxRowsPerQuery) const result = await this.query(sql); if (Array.isArray(result)) { for (const row of result) { @@ -12836,6 +15825,37 @@ } return 0; } + /** + * v0.8.0: 判断流式回调是否为 async(或声明返回 Promise)。 + * + * 此前用 `onRow.constructor.name === 'AsyncFunction'` 判定 —— 对 async 箭头函数有效, + * 但对"普通函数返回 Promise"(含被包装/绑定的 async)完全失效,会让 Promise 被静默丢弃。 + * 这里用**双条件**:既看是否声明为 async 函数(源码/转译后仍可识别), + * 也看其返回类型标注;两者任一成立即走物化 + await 路径。 + */ + isAsyncCallback(onRow) { + const name = onRow.constructor?.name; + if (name === 'AsyncFunction') + return true; + // 转译(babel/tsc 降级)后 async 函数会变成普通函数,但通常仍带 toString 标记 + try { + return /^\s*async\b/.test(Function.prototype.toString.call(onRow)); + } + catch { + return false; + } + } + /** + * v0.8.0: 剥离列引用上的主表别名前缀(`t.id` → `id`)。 + * 与 executor 非 JOIN 路径的 `stripAlias` 语义保持一致。 + */ + stripAliasPrefix(col, aliases) { + for (const a of aliases) { + if (a && col.startsWith(`${a}.`)) + return col.slice(a.length + 1); + } + return col; + } /** 流式查询用:剥离主表别名前缀(复用 query 路径的规范化逻辑) */ normalizeWhereForStream(select) { const aliases = [select.alias ?? select.from].filter(Boolean); @@ -12916,18 +15936,57 @@ } return this.exportAll(); } - /** 订阅表变更 */ + /** + * 订阅表变更。 + * + * v0.8.0 修复:此前**本地写入永不触发** —— 全库唯一调用 `emit` 的地方在 + * BroadcastChannel 收到其它标签页消息的分支里,因此 README「订阅表变更」与 + * site/docs.html 的 `event.type: 'insert' | 'update' | 'delete'` 示例全都不成立。 + * 现在本地写入(SQL / Table API / QueryBuilder / 事务内)都会产生事件。 + * + * 现在返回的函数是**同步**退订函数(与既有 API 兼容)。 + */ subscribe(tableName, callback) { const key = `change:${tableName}`; if (!this.listeners.has(key)) this.listeners.set(key, new Set()); this.listeners.get(key).add(callback); - return () => this.listeners.get(key)?.delete(callback); + return () => { this.listeners.get(key)?.delete(callback); }; } - /** 触发变更事件 */ - emit(tableName, event) { - const key = `change:${tableName}`; - this.listeners.get(key)?.forEach((cb) => cb(event)); + /** + * 手动触发变更事件(保留为公开 API:自定义写入路径可显式通知订阅者)。 + * 现在也支持 await —— 订阅者的 Promise 会被等待。 + */ + async emit(tableName, event) { + await this.dispatchChange({ table: tableName, ...event }); + } + /** + * v0.8.0: 派发"来自其它标签页"的变更事件。 + * 只走本地订阅者,不触发 onBroadcast(避免 A↔B 互相转发的无限循环)。 + */ + async emitExternal(tableName) { + const event = { type: 'external', table: tableName }; + const set = this.listeners.get(`change:${tableName}`); + if (!set) + return; + for (const cb of [...set]) { + try { + await cb(event); + } + catch (error) { + this._onError(error); + } + } + } + /** 内部:把一次变更同时派发给本地订阅者与跨标签页广播 */ + async dispatchChange(event) { + if (this.notifier) { + // notifier.dispatch 内部已包含跨标签页广播,这里不重复调用 + await this.notifier.dispatch(event); + return; + } + // init 之前(notifier 尚未建立)也能广播 + this.broadcastChange(event.table); } // ---- 多标签页同步(v0.3.2) ---- /** 广播表变更到其他标签页(多标签页同步) */ @@ -13088,9 +16147,27 @@ this.tableCache.clear(); this.ready = false; } - /** 获取底层引擎 */ + /** + * 获取底层存储引擎。 + * + * v0.8.0:返回**未装饰**的真实引擎。 + * + * 变更通知用的 ChangeNotifierEngine 只是内部接线细节;若把它暴露出去, + * 调用方(以及测试)依赖的引擎特有能力(`lsm`、`secondaryIndexes`、 + * `getDiskEngineType` 等)会被静默隐藏 —— 本项目既有测试与文档都按 + * "getEngine() 就是那个引擎"理解。因此这里保持原语义,装饰器只在 core 内部使用。 + */ getEngine() { - return this.engine; + return this.unwrapEngine(); + } + /** + * v0.8.0: 取**未装饰**的真实存储引擎。 + * + * 引擎在 init 时被 ChangeNotifierEngine 包了一层,因此需要引擎特化能力 + * (如 HybridEngine.reloadMemoryFromDisk)时必须先解包,否则 instanceof 恒 false。 + */ + unwrapEngine() { + return this.notifier ? this.notifier.getInner() : this.engine; } // ---- 内部 ---- createEngine() { @@ -13299,19 +16376,25 @@ const MeSqlark = MetonaSqlark; exports.AriaEngine = AriaEngine; + exports.DatabaseError = DatabaseError; exports.HybridEngine = HybridEngine; exports.KVStoreEngine = KVStoreEngine; exports.MeSqlark = MeSqlark; exports.MemoryEngine = MemoryEngine; exports.MetonaSqlark = MetonaSqlark; exports.OPFSBackend = OPFSBackend; + exports.PluginManager = PluginManager; exports.Table = Table; + exports.Transaction = Transaction; + exports.TransactionManager = TransactionManager; exports.VERSION = VERSION; exports.api = api; + exports.bindParameters = bindParameters; exports.create = create; exports.default = api; exports.parse = parse; exports.parseAll = parseAll; + exports.parseWhereCondition = parseWhereCondition; exports.tokenize = tokenize; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/dist/metona-sqlark.js.map b/dist/metona-sqlark.js.map index edb57ec..e3a42d3 100644 --- a/dist/metona-sqlark.js.map +++ b/dist/metona-sqlark.js.map @@ -1 +1 @@ -{"version":3,"file":"metona-sqlark.js","sources":["../src/constants.ts","../src/query/where-matcher.ts","../src/table/schema.ts","../src/engine/memory.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/kvstore/shared_memory_medium.ts","../src/engine/aria/crc32.ts","../src/engine/kvstore/log.ts","../src/engine/kvstore/snapshot.ts","../src/engine/kvstore/index.ts","../src/engine/kvstore_engine.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/kvstore_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/sql/params.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"metona-sqlark.js","sources":["../src/constants.ts","../src/engine/change-notifier.ts","../src/engine/interface.ts","../src/query/sql-compare.ts","../src/query/where-matcher.ts","../src/table/validation.ts","../src/table/schema.ts","../src/engine/memory.ts","../src/engine/aria/store/opfs_backend.ts","../src/engine/kvstore/shared_memory_medium.ts","../src/engine/aria/crc32.ts","../src/engine/kvstore/log.ts","../src/engine/kvstore/snapshot.ts","../src/engine/kvstore/index.ts","../src/engine/kvstore_engine.ts","../src/engine/aria/types.ts","../src/engine/aria/index/memtable.ts","../src/engine/aria/index/bloom.ts","../src/engine/aria/index/sstable_builder.ts","../src/engine/aria/index/sstable.ts","../src/engine/aria/index/merge_iterator.ts","../src/engine/aria/index/lsm.ts","../src/engine/aria/wal/log.ts","../src/engine/aria/wal/segmented_store.ts","../src/engine/aria/locks.ts","../src/engine/aria/wal/checkpoint.ts","../src/engine/aria/store/backend.ts","../src/engine/aria/store/kvstore_backend.ts","../src/engine/aria/crypto.ts","../src/engine/aria/store/encrypted_backend.ts","../src/engine/aria/store/page_sstable_store.ts","../src/engine/aria/store/file_manager.ts","../src/engine/aria/transaction/mvcc.ts","../src/engine/aria/page/header.ts","../src/engine/aria/page/format.ts","../src/engine/aria/buffer/eviction.ts","../src/engine/aria/buffer/pool.ts","../src/engine/aria/compression/lz4.ts","../src/engine/aria/index.ts","../src/hybrid/index.ts","../src/query/builder.ts","../src/table/table.ts","../src/query/compiler.ts","../src/sql/tokens.ts","../src/sql/lexer.ts","../src/sql/parser.ts","../src/query/executor.ts","../src/sql/params.ts","../src/transaction/index.ts","../src/plugin/index.ts","../src/core.ts","../src/connection-manager.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IV_LENGTH"],"mappings":"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"} \ No newline at end of file diff --git a/dist/metona-sqlark.min.js b/dist/metona-sqlark.min.js index 0126bb3..f8d16a7 100644 --- a/dist/metona-sqlark.min.js +++ b/dist/metona-sqlark.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).MetonaSqlark={})}(this,function(e){"use strict";const t=["string","number","boolean","date","json"],s=Object.freeze({name:"metona-sqlark",mode:"hybrid",diskEngine:"opfs",version:1,maxRowsPerQuery:0,debug:!1,multiTabSync:!1,aria:void 0});class n extends Error{constructor(e,t,s){super(e),this.code=t,this.details=s,this.name="DatabaseError"}}const i="0.8.0",r=new Map;function a(e){if(!e)return!1;for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if("$exists"===t)return!0;if("object"==typeof s&&null!==s&&!Array.isArray(s))for(const[,e]of Object.entries(s))if("object"==typeof e&&null!==e&&("$subquery"in e||"$col"in e))return!0}else if(a(s))return!0}else if(s.some(e=>a(e)))return!0;return!1}function o(e,t,s={}){for(const[n,i]of Object.entries(t))if("$caseResult"!==n){if("$exists"!==n){if("$and"===n){if(!i.every(t=>o(e,t,s)))return!1;continue}if("$or"===n){if(!i.some(t=>o(e,t,s)))return!1;continue}if("$not"!==n){if(!h(e[n],i,e,s))return!1}else if(o(e,i,s))return!1}else if(!0!==i)return!1}else if(!0!==i)return!1;return!0}function h(e,t,s,n){if("object"==typeof t&&null!==t&&"$and"in t)return t.$and.every(e=>o(s,e,n));if("object"==typeof t&&null!==t&&"$or"in t)return t.$or.some(e=>o(s,e,n));if("object"==typeof t&&null!==t&&"$not"in t)return!h(e,t.$not,s,n);if("object"!=typeof t||null===t||Array.isArray(t))return e===t;const i=t;if(n.$col&&"$col"in i&&1===Object.keys(i).length)return e===s[i.$col];for(const[t,r]of Object.entries(i)){let i=r;if(n.$col&&"object"==typeof r&&null!==r&&"$col"in r&&(i=s[r.$col]),!c(e,t,i))return!1}return!0}function c(e,t,s){switch(t){case"$eq":return e===s;case"$ne":return e!==s;case"$gt":return e>s;case"$gte":return e>=s;case"$lt":return e{for(const{column:n,direction:i,nulls:r}of t){const t=null===e[n]||void 0===e[n],a=null===s[n]||void 0===s[n];if(r&&(t||a)){if(t&&a)continue;return"first"===r?t?-1:1:t?1:-1}const o=u(e[n],s[n]);if(0!==o)return"desc"===i?-o:o}return 0})}function u(e,t){return e===t?0:null==e?1:null==t?-1:"string"==typeof e&&"string"==typeof t?e.localeCompare(t):"number"==typeof e&&"number"==typeof t?e-t:String(e).localeCompare(String(t))}function f(e,t){const s={};for(const n of t)if(n in e)s[n]=e[n];else for(const t of Object.keys(e))if(t.endsWith(`.${n}`)||t===n){s[n]=e[t];break}return s}function d(e,s){return function(e){if(0===Object.keys(e).length)throw new n("Table must have at least one column","SCHEMA_ERROR");let s=0;for(const[i,r]of Object.entries(e)){if("__proto__"===i)throw new n('Column name "__proto__" is not allowed',"SCHEMA_ERROR");if(!t.includes(r.type))throw new n(`Invalid type "${r.type}" for column "${i}". Valid types: ${t.join(", ")}`,"SCHEMA_ERROR");r.primaryKey&&s++}if(0===s)throw new n("Table must have at least one primary key column","SCHEMA_ERROR");if(s>1)throw new n(`Composite primary keys are not supported yet: table has ${s} primary key columns. Use a single primary key column (or a unique column combination) instead.`,"SCHEMA_ERROR")}(s),{name:e,columns:s}}function p(e){const t={};for(const[s,n]of Object.entries(e))void 0!==n&&(t[s]=n);return t}function y(e){return{type:e.type,primaryKey:e.primaryKey,unique:e.unique,required:e.required,default:e.default,index:e.index,maxLength:e.maxLength,min:e.min,max:e.max,references:e.references,onDelete:e.onDelete,onUpdate:e.onUpdate}}class m{constructor(){this.name="memory",this.tables=new Map,this.schemas=new Map,this.indexes=new Map,this.opened=!1,this.metaStore=new Map,this.uniqueIndexCols=new Set,this.snapshot=null}async open(e,t){this.opened||(this.opened=!0)}async close(){this.tables.clear(),this.schemas.clear(),this.indexes.clear(),this.metaStore.clear(),this.opened=!1}isOpen(){return this.opened}async repair(){}async clearAll(){const e=Array.from(this.schemas.keys());for(const t of e)await this.dropTable(t);this.metaStore.clear()}async getMeta(e){return this.metaStore.get(e)??null}async setMeta(e,t){this.metaStore.set(e,t)}async createTable(e){if(this.schemas.has(e.name))throw new n(`Table "${e.name}" already exists`,"TABLE_EXISTS");const t={name:e.name,columns:{}};for(const[s,n]of Object.entries(e.columns))t.columns[s]={...n};this.schemas.set(e.name,t),this.tables.set(e.name,new Map);const s=new Map;for(const[e,n]of Object.entries(t.columns))(n.index||n.unique)&&s.set(e,new Map);this.indexes.set(e.name,s)}async dropTable(e){this.ensureTable(e),this.schemas.delete(e),this.tables.delete(e),this.indexes.delete(e);const t=`${e}:`;for(const e of this.uniqueIndexCols)e.startsWith(t)&&this.uniqueIndexCols.delete(e)}async hasTable(e){return this.schemas.has(e)}async getTableNames(){return Array.from(this.schemas.keys())}async getTableSchema(e){return this.schemas.get(e)??null}async alterTable(e,t,s){if(this.snapshot)throw new n("ALTER TABLE is not supported inside a transaction (MemoryEngine DDL is not transactional)","NOT_SUPPORTED");this.ensureTable(e);const i=this.schemas.get(e);if("ADD"===t){if(i.columns[s.name])throw new n(`Column "${s.name}" already exists in table "${e}"`,"COLUMN_EXISTS");return void(i.columns[s.name]=s)}if(!i.columns[s.name])throw new n(`Column "${s.name}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");(i.columns[s.name].index||i.columns[s.name].unique)&&this.indexes.get(e)?.delete(s.name),delete i.columns[s.name];const r=this.tables.get(e);for(const e of r.values())s.name in e&&delete e[s.name]}async insert(e,t){this.ensureTable(e);const s=this.schemas.get(e),i=this.tables.get(e),r=this.getPrimaryKey(s),a=[],o=[],h=new Set,c=new Map;for(const a of t){const t=this.validateRow(s,a),l=String(t[r]);if(i.has(l)||h.has(l))throw new n(`Duplicate primary key "${l}" in table "${e}"`,"DUPLICATE_KEY");h.add(l),this.checkInsertUniqueness(s,e,t,c),o.push(t)}for(const t of o){const s=String(t[r]);i.set(s,t),this.updateIndexes(e,t,s),a.push(s)}return a}getRow(e,t){const s=this.tables.get(e);return s?s.get(t)??null:null}async find(e,t){this.ensureTable(e);const s=this.tables.get(e);let n=this.tryIndexLookup(e,s,t);t.where&&Object.keys(t.where).length>0&&(n=n.filter(e=>o(e,t.where))),t.orderBy&&t.orderBy.length>0&&(n=l(n,t.orderBy));const i=t.offset??0,r=t.limit??n.length;return n=n.slice(i,i+r),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(n=n.map(e=>f(e,t.columns))),n}async findStream(e,t,s){this.ensureTable(e);const n=this.tables.get(e),i=!!(t.where&&Object.keys(t.where).length>0),r=t.limit??1/0,a=t.offset??0,h=t.columns&&t.columns.length>0&&"*"!==t.columns[0]?e=>f(e,t.columns):null;let c=0,l=0;for(const e of n.values())if(!i||o(e,t.where))if(l=r)break;return c}async update(e,t,s){this.ensureTable(e);const i=this.schemas.get(e),r=this.tables.get(e),h=this.getPrimaryKey(i),c=p(s);if(a(t.where))throw new n("Unresolved subqueries/column references in UPDATE WHERE (use db.query() to execute subqueries)","NOT_SUPPORTED");for(const t of Object.keys(c))if(!i.columns[t])throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");const l=[],u=new Map;for(const[s,a]of r){if(t.where&&Object.keys(t.where).length>0&&!o(a,t.where))continue;const f={...a,...c};this.validateRow(i,f),this.checkUpdateUniqueness(i,e,s,f,u);const d=String(f[h]);if(d!==s&&r.has(d))throw new n(`Duplicate primary key "${d}" in table "${e}" (cannot update key to existing value)`,"DUPLICATE_KEY");l.push({pk:s,row:a,updated:f,newPk:d})}for(const t of l)t.newPk!==t.pk&&this.checkUpdateRestrict(e,t.pk);let f=0;for(const{pk:t,row:s,updated:n,newPk:i}of l)this.removeIndexEntries(e,s,t),i!==t&&await this.applyUpdateCascade(e,t,i),r.delete(t),r.set(i,n),this.updateIndexes(e,n,i),f++;return f}checkInsertUniqueness(e,t,s,i){const r=this.indexes.get(t);for(const[t,a]of Object.entries(e.columns)){if(!a.unique)continue;const o=s[t];if(null==o)continue;let h=i.get(t);if(h||(h=new Set,i.set(t,h)),h.has(o))throw new n(`Unique constraint violation on column "${t}" in table "${e.name}"`,"UNIQUE_VIOLATION");if(h.add(o),!r)continue;const c=r.get(t);if(c&&c.has(o))throw new n(`Unique constraint violation on column "${t}" in table "${e.name}"`,"UNIQUE_VIOLATION")}}checkUpdateUniqueness(e,t,s,i,r){const a=this.indexes.get(t);for(const[t,o]of Object.entries(e.columns)){if(!o.unique)continue;const h=i[t];if(null==h)continue;let c=r.get(t);if(c||(c=new Set,r.set(t,c)),c.has(h))throw new n(`Unique constraint violation on column "${t}" in table "${e.name}"`,"UNIQUE_VIOLATION");if(c.add(h),!a)continue;const l=a.get(t);if(l&&l.has(h)){const i=l.get(h);if(1!==i.size||!i.has(s))throw new n(`Unique constraint violation on column "${t}" in table "${e.name}"`,"UNIQUE_VIOLATION")}}}checkUpdateRestrict(e,t){for(const[s,i]of this.schemas)if(s!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i!==e)continue;const o=this.tables.get(s);if(!o)continue;let h=!1;for(const[,i]of o)if(String(i[r])===t&&(h=!0,"RESTRICT"===a.onUpdate))throw new n(`Cannot update "${e}" key "${t}": foreign key "${r}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if(h&&"SET NULL"===a.onUpdate&&a.required)throw new n(`Cannot update "${e}" key "${t}": foreign key "${r}" in "${s}" is required (SET NULL violates constraint)`,"FOREIGN_KEY_VIOLATION")}}async applyUpdateCascade(e,t,s){for(const[n,i]of this.schemas)if(n!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i!==e)continue;const o=this.tables.get(n);if(o&&("CASCADE"===a.onUpdate||"SET NULL"===a.onUpdate))for(const[e,i]of o)String(i[r])===t&&(this.removeIndexEntries(n,i,e),i[r]="CASCADE"===a.onUpdate?s:null,this.updateIndexes(n,i,e))}}async delete(e,t){if(this.ensureTable(e),a(t.where))throw new n("Unresolved subqueries/column references in DELETE WHERE (use db.query() to execute subqueries)","NOT_SUPPORTED");const s=this.tables.get(e),i=[];for(const[e,n]of s)t.where&&0!==Object.keys(t.where).length&&!o(n,t.where)||i.push({pk:e,row:n});const r=new Set;for(const{pk:t}of i)this.checkCascadeRestrict(e,t,r);let h=0;for(const{pk:t,row:s}of i)this.removeIndexEntries(e,s,t),h+=await this.cascadeDelete(e,t,s);for(const{pk:e}of i)s.delete(e);return i.length+h}checkCascadeRestrict(e,t,s){const i=`${e}:${t}`;if(!s.has(i)){s.add(i);for(const[i,r]of this.schemas)if(i!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onDelete)continue;const[r]=o.references.split(".");if(r!==e)continue;const h=this.tables.get(i);if(!h)continue;const c=[];for(const[e,s]of h)String(s[a])===t&&c.push(e);if("RESTRICT"===o.onDelete&&c.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${i}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("SET NULL"===o.onDelete&&o.required&&c.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${i}" is required (SET NULL violates constraint)`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===o.onDelete)for(const e of c)this.checkCascadeRestrict(i,e,s)}}}async count(e,t){this.ensureTable(e);const s=this.tables.get(e);if(!t?.where||0===Object.keys(t.where).length)return s.size;let n=0;for(const e of s.values())o(e,t.where)&&n++;return n}async clear(e){this.ensureTable(e),this.tables.get(e).clear();const t=this.indexes.get(e);if(t)for(const e of t.values())e.clear()}async createIndex(e,t,s){if(this.snapshot)throw new n("CREATE INDEX is not supported inside a transaction (MemoryEngine DDL is not transactional)","NOT_SUPPORTED");this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.index||i.unique)return;const r=this.indexes.get(e);r.has(t)||r.set(t,new Map);const a=r.get(t),o=this.tables.get(e);try{for(const[i,r]of o){const o=r[t];if(null!=o){if(s&&a.has(o))throw new n(`Unique index on column "${t}" in table "${e}" cannot be created: duplicate value "${String(o)}"`,"UNIQUE_VIOLATION");a.has(o)||a.set(o,new Set),a.get(o).add(i)}}}catch(e){throw r.delete(t),e}i.index=!0,s&&(i.unique=!0,this.uniqueIndexCols.add(`${e}:${t}`))}async dropIndex(e,t,s){if(this.snapshot)throw new n("DROP INDEX is not supported inside a transaction (MemoryEngine DDL is not transactional)","NOT_SUPPORTED");this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(!i.index&&!i.unique)throw new n(`Index on column "${t}" does not exist in table "${e}"`,"INDEX_NOT_FOUND");const r=`${e}:${t}`;if(i.unique&&!this.uniqueIndexCols.has(r))throw new n(`Cannot drop index on column "${t}" in table "${e}": UNIQUE constraint defined at table creation must be removed by recreating the table`,"NOT_SUPPORTED");i.index=!1,i.unique=!1,this.uniqueIndexCols.delete(r);const a=this.indexes.get(e);a&&a.delete(t)}async beginTransaction(){if(this.snapshot)throw new n("Transaction already in progress","TX_ACTIVE");this.snapshot={tables:this.deepCloneMapMap(this.tables),schemas:new Map(this.schemas),indexes:this.deepCloneIndexes(this.indexes)}}async commitTransaction(){if(!this.snapshot)throw new n("No active transaction","TX_NONE");this.snapshot=null}async rollbackTransaction(){if(!this.snapshot)throw new n("No active transaction","TX_NONE");this.tables=this.snapshot.tables,this.schemas=this.snapshot.schemas,this.indexes=this.snapshot.indexes,this.snapshot=null}deepCloneMapMap(e){const t=new Map;for(const[s,n]of e){const e=new Map;for(const[t,s]of n)e.set(t,{...s});t.set(s,e)}return t}deepCloneIndexes(e){const t=new Map;for(const[s,n]of e){const e=new Map;for(const[t,s]of n){const n=new Map;for(const[e,t]of s)n.set(e,new Set(t));e.set(t,n)}t.set(s,e)}return t}ensureTable(e){if(!this.tables.has(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND")}getPrimaryKey(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}validateRow(e,t){const s={};for(const[i,r]of Object.entries(e.columns)){let a=t[i];if(void 0===a&&void 0!==r.default&&(a=r.default),r.required&&null==a)throw new n(`Column "${i}" is required in table "${e.name}"`,"VALIDATION_ERROR");if(r.primaryKey&&null==a)throw new n(`Primary key column "${i}" in table "${e.name}" cannot be null or undefined`,"VALIDATION_ERROR");null!=a&&this.checkType(i,r.type,a),void 0!==a&&(s[i]=a)}return s}checkType(e,t,s){const i=typeof s;switch(t){case"string":if("string"!==i)throw new n(`Column "${e}" expects string, got ${i}`,"TYPE_ERROR");break;case"number":if("number"!==i)throw new n(`Column "${e}" expects number, got ${i}`,"TYPE_ERROR");break;case"boolean":if("boolean"!==i)throw new n(`Column "${e}" expects boolean, got ${i}`,"TYPE_ERROR");break;case"date":if("string"!==i||isNaN(Date.parse(s)))throw new n(`Column "${e}" expects valid date`,"TYPE_ERROR");break;case"json":if("object"!==i)throw new n(`Column "${e}" expects object/array, got ${i}`,"TYPE_ERROR")}}tryIndexLookup(e,t,s){const n=this.indexes.get(e);if(!n||!s.where)return Array.from(t.values());const i=[],r=e=>{for(const[t,s]of Object.entries(e))if("$and"!==t)"$or"!==t&&"$not"!==t&&i.push([t,s]);else for(const e of s)r(e)};r(s.where);for(const[e,s]of i){let i;if("object"!=typeof s||null===s)i=s;else{if(!("$eq"in s)||1!==Object.keys(s).length)continue;i=s.$eq}if(null==i)continue;const r=n.get(e);if(r){const e=r.get(i);if(e){const s=[];for(const n of e){const e=t.get(n);e&&s.push(e)}return s}return[]}}return Array.from(t.values())}updateIndexes(e,t,s){const n=this.indexes.get(e);if(n)for(const[e,i]of n){const n=t[e];null!=n&&(i.has(n)||i.set(n,new Set),i.get(n).add(s))}}removeIndexEntries(e,t,s){const n=this.indexes.get(e);if(n)for(const[e,i]of n){const n=t[e];if(null!=n){const e=i.get(n);e&&(e.delete(s),0===e.size&&i.delete(n))}}}async cascadeDelete(e,t,s,i=new Set){const r=`${e}:${t}`;if(i.has(r))return 0;i.add(r);let a=0;for(const[s,r]of this.schemas)if(s!==e)for(const[o,h]of Object.entries(r.columns)){if(!h.references||!h.onDelete)continue;const[r]=h.references.split(".");if(r!==e)continue;const c=this.tables.get(s);if(!c)continue;const l=[];for(const[e,s]of c)String(s[o])===t&&l.push(e);if("RESTRICT"===h.onDelete&&l.length>0)throw new n(`Cannot delete from "${e}": foreign key "${o}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===h.onDelete)for(const e of l){const t=c.get(e);t&&(this.removeIndexEntries(s,t,e),a+=await this.cascadeDelete(s,e,t,i)),c.delete(e),a++}else if("SET NULL"===h.onDelete)for(const e of l){const t=c.get(e);t&&(this.removeIndexEntries(s,t,e),t[o]=null,this.updateIndexes(s,t,e))}}return a}}const g=[".crswap",".tmp"];class w{constructor(){this.root=null,this.dbDir=null,this.dbName="",this.writeQueue=Promise.resolve()}async open(e){this.dbName=e,this.root=await navigator.storage.getDirectory(),this.dbDir=await this.root.getDirectoryHandle(e,{create:!0}),await this.cleanupStaleFiles()}async close(){try{await this.writeQueue}catch{}this.dbDir=null,this.root=null}isOpen(){return null!==this.dbDir}async cleanupStaleFiles(){if(this.dbDir)try{const e=this.dbDir,t=[];for await(const[s]of e.entries())g.some(e=>s.endsWith(e))&&t.push(s);for(const e of t)try{await this.dbDir.removeEntry(e)}catch{}}catch{}}async read(e){if(!this.dbDir)return null;try{const t=await this.dbDir.getFileHandle(e),s=await t.getFile();return await s.arrayBuffer()}catch{return null}}async write(e,t){if(!this.dbDir)return;const s=this.writeQueue.then(async()=>{const s=await this.dbDir.getFileHandle(e,{create:!0}),n=await s.createWritable();await n.write(t),await n.close()});return this.writeQueue=s.then(()=>{},()=>{}),s}async append(e,t){if(!this.dbDir)return;const s=this.writeQueue.then(async()=>{const s=await this.dbDir.getFileHandle(e,{create:!0}),n=await s.getFile(),i=await s.createWritable({keepExistingData:!0});await i.write({type:"write",position:n.size,data:t}),await i.close()});return this.writeQueue=s.then(()=>{},()=>{}),s}async writeMany(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{for(const[t,s]of Object.entries(e)){const e=await this.dbDir.getFileHandle(t,{create:!0}),n=await e.createWritable();await n.write(s),await n.close()}});return this.writeQueue=t.then(()=>{},()=>{}),t}async delete(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{try{await this.dbDir.removeEntry(e)}catch{}});return this.writeQueue=t.then(()=>{},()=>{}),t}async deleteMany(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{for(const t of e)try{await this.dbDir.removeEntry(t)}catch{}});return this.writeQueue=t.then(()=>{},()=>{}),t}async listKeys(){if(!this.dbDir)return[];const e=[],t=this.dbDir;for await(const[s]of t.entries())e.push(s);return e}async exists(e){if(!this.dbDir)return!1;try{return await this.dbDir.getFileHandle(e),!0}catch{return!1}}async clear(){if(!this.dbDir)return;const e=this.dbDir;for await(const[t]of e.entries())try{await this.dbDir.removeEntry(t)}catch{}}}const b=new Map;class T{constructor(){this.dbName="",this.chunks=new Map,this.materialized=new Map}static clearRegistry(){b.clear()}async open(e){this.dbName=e,b.has(e)||b.set(e,new Map),this.chunks=b.get(e),this.materialized=new Map}async close(){this.chunks=new Map,this.materialized=new Map}isOpen(){return""!==this.dbName}async read(e){if(this.materialized.has(e))return this.materialized.get(e);const t=this.chunks.get(e);if(!t||0===t.length)return null;if(1===t.length)return this.materialized.set(e,t[0]),t[0];const s=t.reduce((e,t)=>e+t.byteLength,0),n=new Uint8Array(s);let i=0;for(const e of t)n.set(new Uint8Array(e),i),i+=e.byteLength;const r=n.buffer;return this.materialized.set(e,r),r}async write(e,t){this.chunks.set(e,[t]),this.materialized.set(e,t)}async append(e,t){const s=this.chunks.get(e);s?s.push(t):this.chunks.set(e,[t]),this.materialized.delete(e)}async writeMany(e){for(const[t,s]of Object.entries(e))this.chunks.set(t,[s]),this.materialized.set(t,s)}async delete(e){this.chunks.delete(e),this.materialized.delete(e)}async deleteMany(e){for(const t of e)this.chunks.delete(t),this.materialized.delete(t)}async listKeys(){return Array.from(this.chunks.keys())}async exists(e){return this.chunks.has(e)}async clear(){this.chunks.clear(),this.materialized.clear()}}const E=(()=>{const e=new Uint32Array(256);for(let t=0;t<256;t++){let s=t;for(let e=0;e<8;e++)s=1&s?3988292384^s>>>1:s>>>1;e[t]=s>>>0}return e})(),k=4294967295;function x(e,t=0){const s=function(e,t){let s=e>>>0;for(let e=0;e>>8)>>>0;return s>>>0}(t^k,e);return function(e){return(e^k)>>>0}(s)}var S;!function(e){e[e.PUT=1]="PUT",e[e.DELETE=2]="DELETE",e[e.APPEND=3]="APPEND"}(S||(S={}));const I=1263948622;function A(e,t){const s=new TextEncoder,n=Array.from(t.keys()),i=[];let r=12;for(const e of n){const n=s.encode(e),a=new Uint8Array(t.get(e));i.push({key:n,value:a}),r+=4+n.byteLength+4+a.byteLength}r+=4;const a=new Uint8Array(r),o=new DataView(a.buffer);let h=0;o.setUint32(h,I,!1),h+=4,o.setUint32(h,e,!1),h+=4,o.setUint32(h,i.length,!1),h+=4;for(const e of i)o.setUint32(h,e.key.byteLength,!1),h+=4,a.set(e.key,h),h+=e.key.byteLength,o.setUint32(h,e.value.byteLength,!1),h+=4,a.set(e.value,h),h+=e.value.byteLength;const c=x(a.subarray(0,r-4));return o.setUint32(r-4,c,!1),a}function R(e){if(e.byteLength<16)return null;const t=new DataView(e.buffer,e.byteOffset,e.byteLength);if(t.getUint32(0,!1)!==I)return null;if(t.getUint32(e.byteLength-4,!1)!==x(e.subarray(0,e.byteLength-4)))return null;const s=new TextDecoder,n=new Map;let i=4;const r=t.getUint32(i,!1);i+=4;const a=t.getUint32(i,!1);i+=4;for(let r=0;re.byteLength-4)return null;const r=t.getUint32(i,!1);if(i+=4,i+r+4>e.byteLength-4)return null;const a=s.decode(e.subarray(i,i+r));i+=r;const o=t.getUint32(i,!1);if(i+=4,i+o>e.byteLength-4)return null;const h=e.slice(i,i+o).buffer;i+=o,n.set(a,h)}return{seq:r,entries:n}}const C="__kv_log",O="__kv_snapshot",N="__kv_meta";class L{constructor(e,t=16777216){this.dbName="",this.opened=!1,this.index=new Map,this.seq=0,this.logBytes=0,this.opQueue=Promise.resolve(),this.lastBackgroundError=null,this.medium=e??function(){const e=globalThis.navigator;return void 0!==e&&e.storage&&"function"==typeof e.storage.getDirectory?new w:new T}(),this.checkpointThreshold=t}isOpen(){return this.opened}async open(e){if(this.opened)return;this.dbName=e,this.lastBackgroundError=null,await this.medium.open(e),this.index=new Map,this.seq=0,this.logBytes=0;let t=0;const s=await this.medium.read(O);if(s){const e=R(new Uint8Array(s));e?(this.index=new Map(e.entries),this.seq=e.seq,t=e.seq):(this.index=new Map,this.seq=0,t=0)}const n=await this.medium.read(C);if(n&&n.byteLength>0){const e=new Uint8Array(n),s=t,i=[];(function(e,t,s){let n=0,i=0;const r=new DataView(e.buffer,e.byteOffset,e.byteLength),a=new TextDecoder;for(;n+4<=e.byteLength;){const o=r.getUint32(n,!1);if(o<12||n+4+o>e.byteLength){if(s&&!s(n))break;break}const h=n,c=n+4+o,l=e.subarray(h,c),u=new DataView(e.buffer,e.byteOffset+h,o+4);if(u.getUint32(o,!1)!==x(l.subarray(0,o))){if(s&&!s(h))break;break}let f=4;const d=u.getUint32(f,!1);f+=4;const p=u.getUint32(f,!1);f+=4;const y=[];let m=!0;for(let e=0;eo+4){m=!1;break}const e=u.getUint8(f);f+=1;const t=u.getUint32(f,!1);if(f+=4,f+t+4>o+4){m=!1;break}const s=a.decode(l.subarray(f,f+t));f+=t;const n=u.getUint32(f,!1);if(f+=4,f+n>o+4){m=!1;break}const i=l.slice(f,f+n).buffer;f+=n,y.push({op:e,key:s,value:i})}if(!m){if(s&&!s(h))break;break}t({seq:d,entries:y,raw:l}),i++,n=c}return i}(e,e=>{e.seq<=s||(this.applyRecord(e.entries),this.seq=e.seq)},e=>(i.push(e),!0))>0||i.length>0)&&(this.logBytes=e.byteLength),i.length>0&&await this.truncateLog()}this.opened=!0}async reload(){if(this.opened){try{await this.opQueue}catch{}this.index=new Map,this.seq=0,this.logBytes=0,this.opened=!1,await this.open(this.dbName)}}async close(){if(this.opened){try{await this.opQueue}catch{}await this.medium.close(),this.index.clear(),this.seq=0,this.logBytes=0,this.lastBackgroundError=null,this.opened=!1}}async get(e){return this.index.get(e)??null}async getAll(){return Array.from(this.index.entries())}async listKeys(){return Array.from(this.index.keys())}async exists(e){return this.index.has(e)}size(){return this.index.size}async put(e,t){await this.enqueue(async()=>{await this.appendRecord({[e]:t},[])})}async putMany(e){0!==Object.keys(e).length&&await this.enqueue(async()=>{await this.appendRecord(e,[])})}async delete(e){await this.enqueue(async()=>{await this.appendRecord({},[e])})}async deleteMany(e){0!==e.length&&await this.enqueue(async()=>{await this.appendRecord({},e)})}async writeBatch(e,t){0===Object.keys(e).length&&0===t.length||await this.enqueue(async()=>{await this.appendRecord(e,t)})}async appendValue(e,t){0!==t.byteLength&&await this.enqueue(async()=>{await this.appendRecord({},[],{[e]:t})})}async checkpoint(){await this.enqueue(async()=>{if(null!==this.lastBackgroundError){const e=this.lastBackgroundError;throw this.lastBackgroundError=null,new n("KVStore background write failed","KV_BACKGROUND_ERROR",e)}if(0===this.logBytes&&0===this.index.size)return;const e=A(this.seq,this.index);await this.medium.write(O,e.buffer);const t={seq:this.seq};await this.medium.write(N,(new TextEncoder).encode(JSON.stringify(t)).buffer),await this.truncateLog()})}async clear(){await this.enqueue(async()=>{await this.medium.clear(),this.index.clear(),this.seq=0,this.logBytes=0,await this.medium.write(N,(new TextEncoder).encode(JSON.stringify({seq:0})).buffer)})}async repair(){return this.enqueue(async()=>{let e=0;const t=await this.medium.read(O);t&&!R(new Uint8Array(t))&&(await this.medium.delete(O),e++);const s=await this.medium.read(C);if(s&&s.byteLength>0){const t=new Uint8Array(s),n=this.findValidLogLength(t);if(n{},()=>{}),t}async appendRecord(e,t,s={}){this.seq++;const i=function(e,t,s=[],n={}){const i=new TextEncoder,r=[];for(const[e,s]of Object.entries(t))r.push({op:S.PUT,key:e,value:s});for(const e of s)r.push({op:S.DELETE,key:e,value:new ArrayBuffer(0)});for(const[e,t]of Object.entries(n))r.push({op:S.APPEND,key:e,value:t});const a=[];let o=12;for(const e of r){const t=i.encode(e.key),s=new Uint8Array(e.value);a.push({op:e.op,key:t,value:s}),o+=5+t.byteLength+4+s.byteLength}o+=4;const h=new Uint8Array(o),c=new DataView(h.buffer);let l=0;c.setUint32(l,o-4,!1),l+=4,c.setUint32(l,e,!1),l+=4,c.setUint32(l,a.length,!1),l+=4;for(const e of a)c.setUint8(l,e.op),l+=1,c.setUint32(l,e.key.byteLength,!1),l+=4,h.set(e.key,l),l+=e.key.byteLength,c.setUint32(l,e.value.byteLength,!1),l+=4,h.set(e.value,l),l+=e.value.byteLength;const u=x(h.subarray(0,o-4));return c.setUint32(o-4,u,!1),h}(this.seq,e,t,s);try{const e=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength);if("function"==typeof this.medium.append)await this.medium.append(C,e);else{const t=await this.medium.read(C);if(t){const s=new Uint8Array(t.byteLength+e.byteLength);s.set(new Uint8Array(t),0),s.set(new Uint8Array(e),t.byteLength),await this.medium.write(C,s.buffer)}else await this.medium.write(C,e)}}catch(e){throw this.seq--,this.lastBackgroundError=e,new n("KVStore log append failed","KV_LOG_ERROR",e)}for(const[t,s]of Object.entries(e))this.index.set(t,s);for(const e of t)this.index.delete(e);for(const[e,t]of Object.entries(s)){const s=this.index.get(e);if(s){const n=new Uint8Array(s.byteLength+t.byteLength);n.set(new Uint8Array(s),0),n.set(new Uint8Array(t),s.byteLength),this.index.set(e,n.buffer)}else this.index.set(e,t)}if(this.logBytes+=i.byteLength,this.checkpointThreshold>0&&this.logBytes>=this.checkpointThreshold){await this.medium.write(O,A(this.seq,this.index).buffer);const e={seq:this.seq};await this.medium.write(N,(new TextEncoder).encode(JSON.stringify(e)).buffer),await this.truncateLog()}}async truncateLog(){try{await this.medium.write(C,new ArrayBuffer(0))}catch{}this.logBytes=0}applyRecord(e){for(const t of e)if(t.op===S.PUT)this.index.set(t.key,t.value);else if(t.op===S.APPEND){const e=this.index.get(t.key);if(e){const s=new Uint8Array(e.byteLength+t.value.byteLength);s.set(new Uint8Array(e),0),s.set(new Uint8Array(t.value),e.byteLength),this.index.set(t.key,s.buffer)}else this.index.set(t.key,t.value)}else this.index.delete(t.key)}findValidLogLength(e){let t=0;const s=new DataView(e.buffer,e.byteOffset,e.byteLength);for(;t+4<=e.byteLength;){const n=s.getUint32(t,!1);if(n<12||t+4+n>e.byteLength)break;const i=e.subarray(t,t+4+n),r=s.getUint32(t+n,!1);if(x(i.subarray(0,n))!==r)break;t+=4+n}return t}}const v="__schema",$="t:",D=e=>(new TextEncoder).encode(e).buffer,U=e=>(new TextDecoder).decode(e);class _{constructor(e,t){this.name="kv",this.memory=new m,this.dbName="",this.version=1,this.opened=!1,this.txActive=!1,this.txDirtyTables=new Set,this.txSchemaChanged=!1,this.txChanges=new Map,this.txFullTables=new Set,this.txClearedTables=new Set,this.kv=new L(e,t)}rowKey(e,t){return`${$}${e}:${t}`}rowPrefix(e){return`${$}${e}:`}async open(e,t){if(this.opened)return;this.dbName=e,this.version=t,await this.kv.open(e),await this.memory.open(e,t);const s=await this.kv.get(v);if(s)try{const e=JSON.parse(U(s));for(const t of Object.values(e))await this.memory.createTable(t)}catch{throw new n("Corrupted schema in KVStore","KV_SCHEMA_ERROR")}const i=await this.kv.getAll();for(const[e,t]of i){if(!e.startsWith($))continue;const s=e.indexOf(":",2);if(s<0)continue;const n=e.slice(2,s);if(await this.memory.hasTable(n))try{const e=JSON.parse(U(t));await this.memory.insert(n,[e])}catch{}}const r=await this.memory.getTableNames();for(const e of r){const t=await this.memory.getTableSchema(e);if(t)for(const[s,n]of Object.entries(t.columns))(n.index||n.unique)&&await this.memory.createIndex(e,s,n.unique)}this.opened=!0}async close(){if(this.opened){if(this.txActive)try{await this.rollbackTransaction()}catch{}try{await this.kv.checkpoint()}catch{}await this.kv.close(),await this.memory.close(),this.opened=!1}}isOpen(){return this.opened}async reload(){this.opened&&(await this.kv.reload(),await this.memory.close(),await this.memory.open(this.dbName,this.version),this.opened=!1,await this.open(this.dbName,this.version))}async repair(){this.ensureOpen(),await this.kv.repair(),await this.memory.close(),await this.memory.open(this.dbName,this.version),this.opened=!1,await this.open(this.dbName,this.version)}async clearAll(){this.ensureOpen(),await this.kv.clear(),await this.memory.clearAll()}async getMeta(e){const t=await this.kv.get(`__meta:${e}`);return t?U(t):null}async setMeta(e,t){await this.kv.put(`__meta:${e}`,D(t))}async createTable(e){if(this.ensureOpen(),await this.memory.createTable(e),this.txActive)return this.txDirtyTables.add(e.name),void(this.txSchemaChanged=!0);await this.persistSchema()}async dropTable(e){if(this.ensureOpen(),await this.memory.dropTable(e),this.txActive)return this.txDirtyTables.add(e),void(this.txSchemaChanged=!0);await this.persistSchema();const t=await this.collectTableDiff(e);await this.kv.writeBatch(t.puts,t.deletes)}async hasTable(e){return this.ensureOpen(),this.memory.hasTable(e)}async getTableNames(){return this.ensureOpen(),this.memory.getTableNames()}async getTableSchema(e){return this.ensureOpen(),this.memory.getTableSchema(e)}async alterTable(e,t,s){if(this.ensureOpen(),this.txActive)throw new n("ALTER TABLE is not supported inside a transaction (KVStoreEngine DDL is not transactional)","NOT_SUPPORTED");if(await this.memory.alterTable(e,t,s),this.txActive)return this.txDirtyTables.add(e),void(this.txSchemaChanged=!0);if(await this.persistSchema(),"DROP"===t){const t=await this.collectTableDiff(e);await this.kv.writeBatch(t.puts,t.deletes)}}async insert(e,t){this.ensureOpen();const s=await this.memory.insert(e,t);if(this.txActive){if(this.txDirtyTables.add(e),this.txClearedTables.has(e))return this.txClearedTables.delete(e),this.txFullTables.add(e),s;let t=this.txChanges.get(e);t||(t=new Map,this.txChanges.set(e,t));for(const e of s)t.set(e,"put");return s}if(!await this.memory.getTableSchema(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND");const i={};for(const t of s){const s=this.memory.getRow(e,t);s&&(i[this.rowKey(e,t)]=D(JSON.stringify(s)))}return await this.kv.putMany(i),s}async find(e,t){return this.ensureOpen(),this.memory.find(e,t)}async findStream(e,t,s){return this.ensureOpen(),this.memory.findStream(e,t,s)}async update(e,t,s){this.ensureOpen();const i=await this.memory.getTableSchema(e);if(!i)throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND");const r=this.getPK(i),a=p(s),o=r in a,h=o?[]:await this.collectMatchingPks(e,t),c=await this.memory.update(e,t,a);if(this.txActive){if(this.txDirtyTables.add(e),o)for(const t of await this.affectedTables(e))this.txFullTables.add(t),this.txDirtyTables.add(t);else{let t=this.txChanges.get(e);t||(t=new Map,this.txChanges.set(e,t));for(const e of h)t.set(e,"put");for(const t of await this.affectedTables(e))t!==e&&(this.txFullTables.add(t),this.txDirtyTables.add(t))}return c}const l={},u=[];if(o)for(const t of await this.affectedTables(e)){const e=await this.collectTableDiff(t);Object.assign(l,e.puts),u.push(...e.deletes)}else{const t=new Set(h),s=await this.memory.find(e,{table:e});for(const n of s){const s=String(n[r]);t.has(s)&&(l[this.rowKey(e,s)]=D(JSON.stringify(n)),t.delete(s))}for(const s of t)u.push(this.rowKey(e,s));for(const t of await this.affectedTables(e)){if(t===e)continue;const s=await this.collectTableDiff(t);Object.assign(l,s.puts),u.push(...s.deletes)}}return await this.kv.writeBatch(l,u),c}async delete(e,t){this.ensureOpen();const s=await this.collectMatchingPks(e,t),n=await this.memory.delete(e,t);if(this.txActive){this.txDirtyTables.add(e);let t=this.txChanges.get(e);t||(t=new Map,this.txChanges.set(e,t));for(const e of s)t.set(e,"delete");for(const t of await this.affectedTables(e))t!==e&&(this.txFullTables.add(t),this.txDirtyTables.add(t));return n}const i={},r=s.map(t=>this.rowKey(e,t));for(const t of await this.affectedTables(e)){if(t===e)continue;const s=await this.collectTableDiff(t);Object.assign(i,s.puts),r.push(...s.deletes)}return await this.kv.writeBatch(i,r),n}async count(e,t){return this.ensureOpen(),this.memory.count(e,t)}async clear(e){if(this.ensureOpen(),await this.memory.clear(e),this.txActive)return this.txDirtyTables.add(e),this.txClearedTables.add(e),void this.txChanges.delete(e);const t=await this.collectTableDiff(e);await this.kv.writeBatch(t.puts,t.deletes)}async createIndex(e,t,s){if(this.ensureOpen(),this.txActive)throw new n("CREATE INDEX is not supported inside a transaction (KVStoreEngine DDL is not transactional)","NOT_SUPPORTED");if(await this.memory.createIndex(e,t,s),this.txActive)return this.txDirtyTables.add(e),void(this.txSchemaChanged=!0);await this.persistSchema()}async dropIndex(e,t,s){if(this.ensureOpen(),this.txActive)throw new n("DROP INDEX is not supported inside a transaction (KVStoreEngine DDL is not transactional)","NOT_SUPPORTED");if(await this.memory.dropIndex(e,t,s),this.txActive)return this.txDirtyTables.add(e),void(this.txSchemaChanged=!0);await this.persistSchema()}async beginTransaction(){this.ensureOpen(),await this.memory.beginTransaction(),this.txActive=!0,this.txDirtyTables=new Set,this.txSchemaChanged=!1,this.txChanges=new Map,this.txFullTables=new Set,this.txClearedTables=new Set}async commitTransaction(){if(this.ensureOpen(),!this.txActive)throw new n("No active transaction","TX_NONE");const e={},t=[];for(const s of this.txDirtyTables){if(!await this.memory.hasTable(s)){const e=await this.kv.getAll(),n=this.rowPrefix(s);for(const[s]of e)s.startsWith(n)&&t.push(s);continue}if(this.txClearedTables.has(s)){const e=await this.kv.getAll(),n=this.rowPrefix(s);for(const[s]of e)s.startsWith(n)&&t.push(s);continue}if(this.txFullTables.has(s)){const n=await this.collectTableDiff(s);Object.assign(e,n.puts),t.push(...n.deletes);continue}const n=this.txChanges.get(s);if(n&&n.size>0){const i=await this.memory.getTableSchema(s);if(!i)continue;const r=this.getPK(i),a=new Map(n),o=await this.memory.find(s,{table:s});for(const n of o){const i=String(n[r]),o=a.get(i);void 0!==o&&("put"===o?e[this.rowKey(s,i)]=D(JSON.stringify(n)):t.push(this.rowKey(s,i)),a.delete(i))}for(const[e,n]of a)"delete"===n&&t.push(this.rowKey(s,e))}}await this.kv.writeBatch(e,t),this.txSchemaChanged&&await this.persistSchema(),await this.memory.commitTransaction(),this.txActive=!1,this.txDirtyTables=new Set,this.txChanges=new Map,this.txFullTables=new Set,this.txClearedTables=new Set}async rollbackTransaction(){if(this.ensureOpen(),!this.txActive)throw new n("No active transaction","TX_NONE");await this.memory.rollbackTransaction(),this.txActive=!1,this.txDirtyTables=new Set,this.txSchemaChanged=!1,this.txChanges=new Map,this.txFullTables=new Set,this.txClearedTables=new Set}ensureOpen(){if(!this.opened)throw new n("Database not opened","DB_NOT_OPEN")}getPK(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}async collectMatchingPks(e,t){const s=await this.memory.getTableSchema(e);if(!s)throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND");const i=this.getPK(s);return(await this.memory.find(e,t)).map(e=>String(e[i]))}async affectedTables(e){const t=new Set([e]);let s=!0;for(;s;){s=!1;for(const e of await this.memory.getTableNames()){if(t.has(e))continue;const n=await this.memory.getTableSchema(e);if(n)for(const i of Object.values(n.columns))if(i.references){const n=i.references.split(".")[0];if(t.has(n)){t.add(e),s=!0;break}}}}return t}async persistSchema(){const e={};for(const t of await this.memory.getTableNames()){const s=await this.memory.getTableSchema(t);s&&(e[t]=s)}await this.kv.put(v,D(JSON.stringify(e)))}async collectTableDiff(e){const t=this.rowPrefix(e),s={},n=[],i=await this.memory.getTableSchema(e);if(i){const r=this.getPK(i),a=await this.memory.find(e,{table:e}),o=new Set;for(const t of a){const n=this.rowKey(e,String(t[r]));o.add(n),s[n]=D(JSON.stringify(t))}const h=await this.kv.getAll();for(const[e]of h)e.startsWith(t)&&!o.has(e)&&n.push(e)}else{const e=await this.kv.getAll();for(const[s]of e)s.startsWith(t)&&n.push(s)}return{puts:s,deletes:n}}}const M=4096;var P;!function(e){e[e.DATA=1]="DATA",e[e.INDEX=2]="INDEX",e[e.OVERFLOW=3]="OVERFLOW",e[e.META=4]="META"}(P||(P={}));const B=4194304;var K,q;!function(e){e[e.INSERT=1]="INSERT",e[e.UPDATE=2]="UPDATE",e[e.DELETE=3]="DELETE",e[e.BEGIN=4]="BEGIN",e[e.COMMIT=5]="COMMIT",e[e.ROLLBACK=6]="ROLLBACK",e[e.CREATE_TABLE=7]="CREATE_TABLE",e[e.DROP_TABLE=8]="DROP_TABLE"}(K||(K={})),function(e){e[e.ACTIVE=1]="ACTIVE",e[e.COMMITTED=2]="COMMITTED",e[e.ABORTED=3]="ABORTED"}(q||(q={}));const z={pageSize:M,bufferPoolPages:256,memtableSizeThreshold:B,levelSizeMultiplier:10,bloomFilterBitsPerKey:10,walEnabled:!0,walSyncMode:"full",checkpointInterval:1e3,compression:!1,storageBackend:"opfs",walSizeThreshold:16777216,maxMemoryMB:64,encryption:void 0,pageStorage:void 0};var F;!function(e){e[e.RED=0]="RED",e[e.BLACK=1]="BLACK"}(F||(F={}));class j{constructor(e,t){this.color=F.RED,this.left=null,this.right=null,this.parent=null,this.key=e,this.value=t}}class V{constructor(){this.root=null,this._size=0}get size(){return this._size}insert(e,t){const s=new j(e,t);if(!this.root)return this.root=s,s.color=F.BLACK,void this._size++;let n=null,i=this.root;for(;i;)if(n=i,ei.key))return void(i.value=t);i=i.right}s.parent=n,et.key))return t.value;t=t.right}return null}delete(e){const t=this.findNode(e);return!!t&&(this.deleteNode(t),this._size--,!0)}inorder(e){this._inorder(this.root,e)}rangeScan(e,t,s){this._rangeScan(this.root,e,t,s)}*scanLazy(e,t){const s=[];let n=this.root;for(;n;)n.key>=e?(s.push(n),n=n.left):n=n.right;for(;s.length>0;){const i=s.pop();if(i.key>t)break;for(i.key>=e&&(yield[i.key,i.value]),n=i.right;n;)s.push(n),n=n.left}}getAllEntries(){const e=[];return this.inorder((t,s)=>e.push([t,s])),e}clear(){this.root=null,this._size=0}findNode(e){let t=this.root;for(;t;)if(et.key))return t;t=t.right}return null}deleteNode(e){if(e.left||e.right)if(e.left)if(e.right){const t=this.minimum(e.right),s=t.right,n=t.parent;n!==e&&(this.transplant(t,s),t.right=e.right,t.right.parent=t),this.transplant(e,t),t.left=e.left,t.left.parent=t;const i=t.color;if(t.color=e.color,i===F.BLACK){const i=s,r=i?i.parent:n===e?t:n;this.fixDelete(i,r)}}else this.transplant(e,e.left),e.color===F.BLACK&&this.fixDelete(e.left,e.left.parent);else this.transplant(e,e.right),e.color===F.BLACK&&this.fixDelete(e.right,e.right.parent);else this.transplant(e,null),e.color===F.BLACK&&this.fixDelete(null,e.parent)}transplant(e,t){e.parent?e===e.parent.left?e.parent.left=t:e.parent.right=t:this.root=t,t&&(t.parent=e.parent)}minimum(e){for(;e.left;)e=e.left;return e}fixInsert(e){for(;e.parent&&e.parent.color===F.RED;){const t=e.parent,s=t.parent;if(!s)break;if(t===s.left){const n=s.right;n&&n.color===F.RED?(t.color=F.BLACK,n.color=F.BLACK,s.color=F.RED,e=s):(e===t.right&&(e=t,this.rotateLeft(e)),e.parent&&(e.parent.color=F.BLACK),e.parent?.parent&&(e.parent.parent.color=F.RED),e.parent?.parent&&this.rotateRight(e.parent.parent))}else{const n=s.left;n&&n.color===F.RED?(t.color=F.BLACK,n.color=F.BLACK,s.color=F.RED,e=s):(e===t.left&&(e=t,this.rotateRight(e)),e.parent&&(e.parent.color=F.BLACK),e.parent?.parent&&(e.parent.parent.color=F.RED),e.parent?.parent&&this.rotateLeft(e.parent.parent))}}this.root&&(this.root.color=F.BLACK)}fixDelete(e,t){let s=e,n=t;for(;(!s||s.color===F.BLACK)&&s!==this.root&&n;)if(s===n.left){let e=n.right;if(!e)break;if(e.color===F.RED&&(e.color=F.BLACK,n.color=F.RED,this.rotateLeft(n),e=n.right,!e))break;const t=e.left,i=e.right;if(t&&t.color!==F.BLACK||i&&i.color!==F.BLACK){if(!(i&&i.color!==F.BLACK||(t&&(t.color=F.BLACK),e.color=F.RED,this.rotateRight(e),e=n.right,e)))break;e.color=n.color,n.color=F.BLACK,e.right&&(e.right.color=F.BLACK),this.rotateLeft(n),s=this.root}else e.color=F.RED,s=n,n=s.parent}else{let e=n.left;if(!e)break;if(e.color===F.RED&&(e.color=F.BLACK,n.color=F.RED,this.rotateRight(n),e=n.left,!e))break;const t=e.left,i=e.right;if(t&&t.color!==F.BLACK||i&&i.color!==F.BLACK){if(!(t&&t.color!==F.BLACK||(i&&(i.color=F.BLACK),e.color=F.RED,this.rotateLeft(e),e=n.left,e)))break;e.color=n.color,n.color=F.BLACK,e.left&&(e.left.color=F.BLACK),this.rotateRight(n),s=this.root}else e.color=F.RED,s=n,n=s.parent}s&&(s.color=F.BLACK)}rotateLeft(e){const t=e.right;t&&(e.right=t.left,t.left&&(t.left.parent=e),t.parent=e.parent,e.parent?e===e.parent.left?e.parent.left=t:e.parent.right=t:this.root=t,t.left=e,e.parent=t)}rotateRight(e){const t=e.left;t&&(e.left=t.right,t.right&&(t.right.parent=e),t.parent=e.parent,e.parent?e===e.parent.right?e.parent.right=t:e.parent.left=t:this.root=t,t.right=e,e.parent=t)}_inorder(e,t){e&&(this._inorder(e.left,t),t(e.key,e.value),this._inorder(e.right,t))}_rangeScan(e,t,s,n){e&&(e.key>t&&this._rangeScan(e.left,t,s,n),e.key>=t&&e.key<=s&&n(e.key,e.value),e.key=this.maxSize}getAllEntries(){return this.tree.getAllEntries()}rangeScan(e,t){const s=[];return this.tree.rangeScan(e,t,(e,t)=>s.push([e,t])),s}scanLazy(e,t){return this.tree.scanLazy(e,t)}getEntryCount(){return this.tree.size}getEstimatedSize(){return this._estimatedSize}clear(){this.tree.clear(),this._estimatedSize=0}estimateEntrySize(e,t){if(!t)return 0;let s=2*e.length;for(const e of Object.entries(t)){s+=2*e[0].length;const t=e[1];s+="string"==typeof t?2*t.length:"number"==typeof t?8:"boolean"==typeof t||null==t?1:16}return s}}class H{constructor(e,t=10){this._inserted=0;const s=Math.max(64,e*t),n=Math.ceil(s/8);this.bits=new Uint8Array(n),this.numHashes=Math.max(1,Math.floor(.69*t))}static fromData(e,t){const s=new H(1);return s.bits=e,s.numHashes=t,s}insert(e){const t=this.getHashes(e);for(const e of t){const t=Math.floor(e/8),s=e%8;this.bits[t]|=1<>>0;return t}murmurSimple(e){let t=0;for(let s=0;s>>16)>>>0;return Math.abs(t)}}const G=1397969987;class X{constructor(e=4096){this.entries=[],this.blockSizeLimit=e}add(e,t){this.entries.push([e,t])}build(){const e=new TextEncoder,t=this.entries.map(([t,s])=>({key:t,keyBytes:e.encode(t),valueBytes:e.encode(JSON.stringify(s))})),s=this.splitIntoBlocks(t),n=new H(this.entries.length);let i=0;const r=[];for(const e of s)r.push(i),i+=this.computeBlockSize(e);const a=[];for(let e=0;e=this.blockSizeLimit&&s.length>1&&(t.push(s.slice(0,-1)),s=[n]);return s.length>0&&t.push(s),t}computeBlockSize(e){let t=4;for(const s of e)t+=4+s.keyBytes.length+4+s.valueBytes.length;return t}writeDataBlock(e,t,s,n){e.setUint32(t,s.length,!1),t+=4;for(const i of s){if(i.keyBytes.length>4294967295||i.valueBytes.length>4294967295)throw new Error("SSTable entry too large (exceeds u32 length field)");e.setUint32(t,i.keyBytes.length,!1),t+=4,new Uint8Array(e.buffer).set(i.keyBytes,t),t+=i.keyBytes.length,e.setUint32(t,i.valueBytes.length,!1),t+=4,new Uint8Array(e.buffer).set(i.valueBytes,t),t+=i.valueBytes.length,n.insert(i.key)}return t}estimateIndexBlockSize(e){let t=4;const s=new TextEncoder;for(const n of e)t+=4+s.encode(n.key).byteLength+8;return t}writeIndexBlock(e,t,s){e.setUint32(t,s.length,!1),t+=4;for(const n of s){const s=(new TextEncoder).encode(n.key);e.setUint32(t,s.length,!1),t+=4,new Uint8Array(e.buffer).set(s,t),t+=s.length,e.setUint32(t,n.blockOffset,!1),t+=4,e.setUint32(t,n.blockSize,!1),t+=4}return t}}class J{constructor(e,t){this.indexEntries=[],this.entryCount=0,this.bloomFilter=null,this.format=2,this.storedChecksum=0,this.data=e,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.meta=t,this.parseFooter()}verifyChecksum(){return 0===this.storedChecksum||!(this.data.byteLength<4)&&x(this.data.subarray(0,this.data.byteLength-4))===this.storedChecksum}lenFieldSize(){return 2===this.format?4:2}readLen(e){return 2===this.format?this.view.getUint32(e,!1):this.view.getUint16(e,!1)}get(e){if(this.bloomFilter&&!this.bloomFilter.mayContain(e))return null;const t=this.locateBlock(e);if(t<0)return null;const s=this.indexEntries[t],n=this.getBlockData(s);if(!n)return null;const i=new DataView(n.buffer,n.byteOffset,n.byteLength),r=this.lenFieldSize(),a=i.getUint32(0,!1);let o=4;for(let t=0;tn.byteLength);t++){const t=2===this.format?i.getUint32(o,!1):i.getUint16(o,!1);if(o+=r,o+t+r>n.byteLength)break;const s=(new TextDecoder).decode(n.slice(o,o+t));o+=t;const a=2===this.format?i.getUint32(o,!1):i.getUint16(o,!1);if(o+=r,o+a>n.byteLength)break;const h=n.slice(o,o+a);if(o+=a,s===e)try{return JSON.parse((new TextDecoder).decode(h))}catch{return null}}return null}rangeScan(e,t,s){for(const[n,i]of this.scanLazy(e,t))s(n,i)}*scanLazy(e,t){if(0===this.indexEntries.length)return;const s=Math.max(0,this.locateBlockGE(e)),n=Math.min(this.indexEntries.length-1,this.locateBlockLE(t)+1);if(s<0||n<0||s>n)return;const i=this.lenFieldSize();for(let r=s;r<=n&&r>=0;r++){const s=this.indexEntries[r],n=this.getBlockData(s);if(!n)continue;const a=new DataView(n.buffer,n.byteOffset,n.byteLength),o=a.getUint32(0,!1);let h=4;for(let s=0;sn.byteLength);s++){const s=2===this.format?a.getUint32(h,!1):a.getUint16(h,!1);if(h+=i,h+s+i>n.byteLength)break;const r=(new TextDecoder).decode(n.slice(h,h+s));h+=s;const o=2===this.format?a.getUint32(h,!1):a.getUint16(h,!1);if(h+=i,h+o>n.byteLength)break;const c=n.slice(h,h+o);if(h+=o,r>=e&&r<=t)try{const e=JSON.parse((new TextDecoder).decode(c));yield[r,e]}catch{}}}}scanAll(e){const t=this.lenFieldSize();for(const s of this.indexEntries){const n=this.getBlockData(s);if(!n)continue;const i=new DataView(n.buffer,n.byteOffset,n.byteLength),r=i.getUint32(0,!1);let a=4;for(let s=0;sn.byteLength);s++){const s=2===this.format?i.getUint32(a,!1):i.getUint16(a,!1);if(a+=t,a+s+t>n.byteLength)break;const r=(new TextDecoder).decode(n.slice(a,a+s));a+=s;const o=2===this.format?i.getUint32(a,!1):i.getUint16(a,!1);if(a+=t,a+o>n.byteLength)break;const h=n.slice(a,a+o);a+=o;try{e(r,JSON.parse((new TextDecoder).decode(h)))}catch{}}}}parseFooter(){if(this.data.byteLength<32)throw new Error("SSTable too small: missing footer");const e=this.data.byteLength-32,t=this.view.getUint32(e+24,!1);if(1397969986===t)this.format=1;else{if(t!==G)throw new Error(`Invalid SSTable magic: expected 1397969986 or 1397969987, got ${t}`);this.format=2}const s=this.view.getUint32(e,!1),n=this.view.getUint32(e+4,!1),i=this.view.getUint32(e+8,!1),r=this.view.getUint32(e+12,!1),a=this.view.getUint32(e+16,!1);if(this.entryCount=this.view.getUint32(e+20,!1),this.storedChecksum=this.view.getUint32(e+28,!1),!(s+4>this.data.byteLength||s+n>this.data.byteLength)&&(this.parseIndexBlock(s,n),i>0&&r>0&&i+r<=this.data.byteLength))try{const e=this.data.slice(i,i+r);this.bloomFilter=H.fromData(e,a||10)}catch{}}parseIndexBlock(e,t){const s=this.view.getUint32(e,!1);e+=4;const n=this.lenFieldSize();for(let t=0;tthis.data.byteLength);t++){const t=this.readLen(e);if((e+=n)+t+8>this.data.byteLength)break;const s=(new TextDecoder).decode(this.data.slice(e,e+t));e+=t;const i=this.view.getUint32(e,!1);e+=4;const r=this.view.getUint32(e,!1);e+=4,0===r||i+r>this.data.byteLength||this.indexEntries.push({key:s,blockOffset:i,blockSize:r})}}getBlockData(e){return e.blockSize<=0||e.blockOffset<0||e.blockOffset+e.blockSize>this.data.byteLength?null:new Uint8Array(this.data.buffer,this.data.byteOffset+e.blockOffset,e.blockSize)}locateBlock(e){let t=0,s=this.indexEntries.length-1;for(;t<=s;){const n=Math.floor((t+s)/2);if(e<=this.indexEntries[n].key){if(e>(0===n?"":this.indexEntries[n-1].key))return n;s=n-1}else t=n+1}return-1}locateBlockGE(e){let t=0,s=this.indexEntries.length;for(;t>1;this.indexEntries[n].key>1;this.indexEntries[n].key<=e?t=n+1:s=n}return t>0?t-1:0}}class Q{constructor(e){this.index=0,this.entries=e}next(){return this.index>=this.entries.length?null:this.entries[this.index++]}reset(){this.index=0}}class Y{constructor(e){this.iter=e}next(){const e=this.iter.next();return e.done?null:e.value}reset(){}}class Z{constructor(){this.heap=[]}push(e){this.heap.push(e),this.bubbleUp(this.heap.length-1)}pop(){if(0===this.heap.length)return null;if(1===this.heap.length)return this.heap.pop();const e=this.heap[0];return this.heap[0]=this.heap.pop(),this.bubbleDown(0),e}peek(){return this.heap.length>0?this.heap[0]:null}get size(){return this.heap.length}bubbleUp(e){for(;e>0;){const t=Math.floor((e-1)/2);if(this.heap[e].key>=this.heap[t].key)break;[this.heap[e],this.heap[t]]=[this.heap[t],this.heap[e]],e=t}}bubbleDown(e){const t=this.heap.length;for(;;){let s=e;const n=2*e+1,i=2*e+2;if(n=0&&e.level<7&&this.levels[e.level].push(e);for(let e=0;e<7;e++)this.levels[e].sort((e,t)=>t.id-e.id);this.initialized=!0}put(e,t){this.levels[0].length>=8&&this.enqueueCompact(0),this.memtable.put(e,t),this.operationCount++,this.memtable.shouldFlush()&&this.freezeMemtable()}delete(e){this.levels[0].length>=8&&this.enqueueCompact(0),this.memtable.put(e,{__tombstone:!0}),this.operationCount++,this.memtable.shouldFlush()&&this.freezeMemtable()}getEstimatedMemory(){let e=this.memtable.getEstimatedSize();for(const t of this.frozenMemtables)e+=t.getEstimatedSize();return e+=this.cacheSize,e}freezeMemtable(){if(this.immutableMemtable){const e=this.immutableMemtable;this.flushChain=this.enqueueOnChain(()=>this.flushImmutableAsync(e))}this.immutableMemtable=this.memtable,this.frozenMemtables.push(this.immutableMemtable),this.memtable=new W(this.memtableSizeThreshold)}enqueueOnChain(e){return this.flushChain.then(e).catch(e=>{this.lastBackgroundError=e})}async drainChain(){for(;;){const e=this.flushChain;if(await e,this.flushChain===e)return}}async flushImmutableAsync(e){const t=e.getAllEntries();if(0===t.length)return void(this.immutableMemtable===e&&(this.immutableMemtable=null));const s=await this.sstableStore.allocateId(),n=new X(this.blockSize);for(const[e,s]of t)n.add(e,s);const{sstableData:i,indexEntries:r}=n.build(),a={id:s,level:0,minKey:t[0][0],maxKey:t[t.length-1][0],blockCount:r.length,totalSize:i.byteLength,bloomData:null};this.cacheSSTable(s,i),this.trimCache(),await this.sstableStore.save(s,i),await this.sstableStore.saveMeta(a),this.immutableMemtable===e&&(this.immutableMemtable=null),this.levels[0].unshift(a),this.frozenMemtables=this.frozenMemtables.filter(t=>t!==e),this.levels[0].length>=4&&!this.compacting&&this.scheduleCompact(0)}scheduleCompact(e){e>=6||this.compacting||(this.compacting=!0,this.flushChain=this.enqueueOnChain(()=>this.compactLevelAsync(e).finally(()=>{this.compacting=!1,this.levels[e].length>=4&&this.scheduleCompact(e),e+1<6&&this.levels[e+1].length>=4&&this.scheduleCompact(e+1)})))}enqueueCompact(e){e>=6||this.compacting||(this.compacting=!0,this.flushChain=this.flushChain.then(async()=>{try{await this.compactLevelAsync(e)}finally{this.compacting=!1}}).catch(e=>{this.compacting=!1,this.lastBackgroundError=e}))}async prefetchRange(e,t){await this.drainChain(),this.trimCache();const s=[];for(let n=0;n<7;n++)for(const i of this.levels[n])ti.maxKey||this.sstableCache.has(i.id)||s.push(i.id);for(const e of s){const t=this.findMetaById(e);await this.preloadSSTable(e,t)}}async prefetchKeys(e){if(0===e.length)return;await this.drainChain(),this.trimCache();const t=new Set;for(let s=0;s<7;s++)for(const n of this.levels[s])if(!this.sstableCache.has(n.id))for(const s of e)if(s>=n.minKey&&s<=n.maxKey){t.add(n.id);break}for(const e of t){const t=this.findMetaById(e);await this.preloadSSTable(e,t)}}async prefetchPrefixRanges(e){if(0===e.length)return;const t=new Set,s=[];for(const n of e){const e=`${n[0]}\0${n[1]}`;t.has(e)||(t.add(e),s.push(n))}if(0===s.length)return;await this.drainChain(),this.trimCache();const n=new Set;for(let e=0;e<7;e++)for(const t of this.levels[e])if(!this.sstableCache.has(t.id))for(const[e,i]of s)if(!(it.maxKey)){n.add(t.id);break}for(const e of n){const t=this.findMetaById(e);await this.preloadSSTable(e,t)}}findMetaById(e){for(let t=0;t<7;t++)for(const s of this.levels[t])if(s.id===e)return s}get(e){let t=this.memtable.get(e);if(null!==t)return this.unwrapTombstone(t);for(let s=this.frozenMemtables.length-1;s>=0;s--)if(t=this.frozenMemtables[s].get(e),null!==t)return this.unwrapTombstone(t);for(let t=0;t<7;t++)for(const s of this.levels[t]){if(es.maxKey)continue;const t=this.loadSSTableReader(s);if(!t)continue;const n=t.get(e);if(null!==n)return this.unwrapTombstone(n)}return null}rangeScan(e,t){const s=[];return this.rangeScanLazy(e,t,(e,t)=>{s.push([e,t])}),s}rangeScanLazy(e,t,s){const n=new ee;n.addSource(new Y(this.memtable.scanLazy(e,t)));for(let s=this.frozenMemtables.length-1;s>=0;s--)n.addSource(new Y(this.frozenMemtables[s].scanLazy(e,t)));for(let s=0;s<7;s++)for(const i of this.levels[s]){if(ti.maxKey)continue;const s=this.loadSSTableReader(i);s&&n.addSource(new Y(s.scanLazy(e,t)))}let i=n.next();for(;i;){const[e,t]=i;if(!t.__tombstone&&!1===s(e,t))return;i=n.next()}}async compactLevel(e){await this.compactLevelAsync(e,2)}async compactLevelAsync(e,t=4){if(e>=6)return;if(this.levels[e].lengthr.push([e,t])),n.addSource(new Q(r)),i.push(e)}const r=n.drain();if(0===r.length){for(const t of i)this.levels[e].push(t);return void this.levels[e].sort((e,t)=>t.id-e.id)}const a=await this.sstableStore.allocateId(),o=new X(this.blockSize);for(const[e,t]of r)o.add(e,t);const{sstableData:h,indexEntries:c}=o.build(),l={id:a,level:e+1,minKey:r[0][0],maxKey:r[r.length-1][0],blockCount:c.length,totalSize:h.byteLength,bloomData:null};this.cacheSSTable(a,h),this.trimCache(),await this.sstableStore.save(a,h),await this.sstableStore.saveMeta(l),this.levels[e+1].unshift(l);for(const e of s)this.sstableCache.delete(e.id),await this.sstableStore.delete(e.id),await this.sstableStore.deleteMeta(e.id)}async flush(){if(null!==this.lastBackgroundError){const e=this.lastBackgroundError;throw this.lastBackgroundError=null,new n("AriaEngine background flush/compaction failed (data may be inconsistent)","ARIA_BACKGROUND_ERROR",e)}if(await this.drainChain(),this.immutableMemtable){const e=this.immutableMemtable;this.flushChain=this.enqueueOnChain(()=>this.flushImmutableAsync(e)),this.immutableMemtable=null}if(this.memtable.getEntryCount()>0){this.freezeMemtable();const e=this.immutableMemtable;e&&(this.flushChain=this.enqueueOnChain(()=>this.flushImmutableAsync(e)),this.immutableMemtable=null)}await this.drainChain(),this.frozenMemtables=this.frozenMemtables.filter(e=>e.getEntryCount()>0)}async clear(){await this.drainChain(),this.memtable.clear(),this.immutableMemtable=null,this.frozenMemtables=[];for(const e of this.levels)for(const t of e)this.sstableCache.delete(t.id),this.sstableStore.delete(t.id).catch(()=>{}),this.sstableStore.deleteMeta(t.id).catch(()=>{});this.levels=[];for(let e=0;e<7;e++)this.levels.push([]);this.sstableCache.clear(),this.cacheSize=0}getStats(){return{memtableSize:this.memtable.getEntryCount(),sstableCount:this.levels.reduce((e,t)=>e+t.length,0),levelCounts:this.levels.map(e=>e.length)}}async validateAll(){let e=0;for(let t=0;t<7;t++){const s=[];for(const n of this.levels[t])await this.validateSSTable(n)?s.push(n):(this.sstableCache.delete(n.id),e++);this.levels[t]=s}return e}async validateSSTable(e){try{const t=await this.sstableStore.load(e.id);if(!t)return this.dropInvalidSSTable(e),!1;if(t.byteLength<32)return this.dropInvalidSSTable(e),!1;try{if(!new J(t,e).verifyChecksum())return this.dropInvalidSSTable(e),!1}catch{return this.dropInvalidSSTable(e),!1}return!0}catch{return this.dropInvalidSSTable(e),!1}}async dropInvalidSSTable(e){try{await this.sstableStore.delete(e.id)}catch{}try{await this.sstableStore.deleteMeta(e.id)}catch{}}unwrapTombstone(e){return e?e.__tombstone?null:e:null}loadSSTableReader(e){const t=this.sstableCache.get(e.id);if(!t)return null;this.sstableCache.delete(e.id),this.sstableCache.set(e.id,t);try{return new J(t,e)}catch{return null}}async preloadSSTable(e,t){if(this.sstableCache.has(e))return;const s=await this.sstableStore.load(e);if(s){if(t)try{if(!new J(s,t).verifyChecksum())return void await this.dropInvalidSSTable(t)}catch{return void await this.dropInvalidSSTable(t)}this.cacheSSTable(e,s)}}cacheSSTable(e,t){this.sstableCache.has(e)&&(this.cacheSize-=this.sstableCache.get(e).byteLength,this.sstableCache.delete(e)),this.sstableCache.set(e,t),this.cacheSize+=t.byteLength}trimCache(){for(;this.cacheSize>this.cacheLimitBytes&&this.sstableCache.size>0;){const e=this.sstableCache.keys().next().value,t=this.sstableCache.get(e);this.cacheSize-=t.byteLength,this.sstableCache.delete(e)}}}class se{constructor(e,t=!0,s="batch"){this.lsn=0,this.buffer=[],this.bufferedBytes=0,this.store=e,this.enabled=t,this.syncMode=s}async append(e){if(!this.enabled)return;this.lsn++;const t={...e,lsn:this.lsn,checksum:0},s=this.encodeRecord(t);"full"===this.syncMode?(await this.store.append(s),this.bufferedBytes+=s.byteLength):"batch"===this.syncMode&&(this.buffer.push(s),this.bufferedBytes+=s.byteLength)}async appendBatch(e){if(!this.enabled||0===e.length)return;const t=[];for(const s of e)this.lsn++,t.push(this.encodeRecord({...s,lsn:this.lsn,checksum:0}));const s=this.mergeChunks(t);"full"===this.syncMode?(await this.store.append(s),this.bufferedBytes+=s.byteLength):"batch"===this.syncMode&&(this.buffer.push(s),this.bufferedBytes+=s.byteLength)}async flush(){if(!this.enabled||0===this.buffer.length)return;const e=this.mergeChunks(this.buffer);await this.store.append(e),this.buffer=[]}mergeChunks(e){if(1===e.length)return e[0];const t=e.reduce((e,t)=>e+t.byteLength,0),s=new Uint8Array(t);let n=0;for(const t of e)s.set(t,n),n+=t.byteLength;return s}async recover(e){if(!this.enabled)return 0;if(!await this.store.exists())return 0;const t=await this.store.readAll();if(0===t.byteLength)return 0;const s=this.decodeAllRecords(t);for(const t of s)e(t);return this.lsn=s.length>0?s[s.length-1].lsn:0,s.length}async checkpoint(){this.enabled&&(await this.flush(),await this.store.truncate(),this.lsn=0,this.bufferedBytes=0)}getBufferedCount(){return this.buffer.length}getBufferedBytes(){return this.bufferedBytes}legacyChecksum(e){let t=0;for(let s=0;s>>0}encodeRecord(e){const t=new TextEncoder,s=t.encode(e.tableName),n=t.encode(e.key),i=e.data?JSON.stringify(e.data):"",r=t.encode(i),a=11+s.length+2+n.length+4+r.length+4,o=new ArrayBuffer(a),h=new DataView(o);let c=0;h.setUint32(c,e.lsn,!1),c+=4,h.setUint8(c,e.type),c+=1,h.setUint32(c,e.txnId,!1),c+=4,h.setUint16(c,s.length,!1),c+=2,new Uint8Array(o).set(s,c),c+=s.length,h.setUint16(c,n.length,!1),c+=2,new Uint8Array(o).set(n,c),c+=n.length,h.setUint32(c,r.length,!1),c+=4,new Uint8Array(o).set(r,c),c+=r.length;const l=x(new Uint8Array(o,0,c));return h.setUint32(c,l,!1),new Uint8Array(o)}decodeAllRecords(e){const t=[],s=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;for(;n+15<=e.byteLength;)try{const i=n,r=s.getUint32(n,!1);n+=4;const a=s.getUint8(n);n+=1;const o=s.getUint32(n,!1);n+=4;const h=s.getUint16(n,!1);if(n+=2,n+h>e.byteLength)break;const c=(new TextDecoder).decode(e.slice(n,n+h));n+=h;const l=s.getUint16(n,!1);if(n+=2,n+l>e.byteLength)break;const u=(new TextDecoder).decode(e.slice(n,n+l));n+=l;const f=s.getUint32(n,!1);if(n+=4,n+f>e.byteLength)break;let d;if(f>0){const t=(new TextDecoder).decode(e.slice(n,n+f));try{d=JSON.parse(t)}catch{}}n+=f;const p=s.getUint32(n,!1);n+=4;const y=e.slice(i,n-4),m=x(y),g=this.legacyChecksum(y);if(m>>>0!==p&&g>>>0!==p)continue;t.push({lsn:r,type:a,txnId:o,tableName:c,key:u,data:d,checksum:p})}catch{break}return t}}const ne="__wal_",ie=/^__wal_(\d{6})\.bin$/,re=/^__wal_(\d+)$/,ae="__wal_count";class oe{constructor(e,t=4194304){this.backend=e,this.currentSegment=0,this.currentSize=0,this.segmentSize=t}segmentKey(e){return`${ne}${String(e).padStart(6,"0")}.bin`}async append(e){if(0===e.byteLength)return;this.currentSize+e.byteLength>this.segmentSize&&(this.currentSegment++,this.currentSize=0);const t=this.segmentKey(this.currentSegment),s=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("function"==typeof this.backend.append)await this.backend.append(t,s);else{const e=await this.backend.read(t);if(e){const n=new ArrayBuffer(e.byteLength+s.byteLength);new Uint8Array(n).set(new Uint8Array(e),0),new Uint8Array(n).set(new Uint8Array(s),e.byteLength),await this.backend.write(t,n)}else await this.backend.write(t,s)}this.currentSize+=e.byteLength}async readAll(){const e=await this.backend.listKeys(),t=e.filter(e=>ie.test(e)).map(e=>({seq:Number(e.match(ie)[1]),key:e})).sort((e,t)=>e.seq-t.seq);let s=0;for(let e=0;ere.test(e)).map(e=>({seq:Number(e.match(re)[1]),key:e})).sort((e,t)=>e.seq-t.seq),r=[];for(const{key:e}of i){const t=await this.backend.read(e);t&&r.push(new Uint8Array(t))}for(const{key:e}of n){const t=await this.backend.read(e);t&&r.push(new Uint8Array(t))}if(n.length>0){this.currentSegment=n[n.length-1].seq;const e=await this.backend.read(n[n.length-1].key);this.currentSize=e?e.byteLength:0,i.length>0&&(this.currentSegment++,this.currentSize=0)}else i.length>0&&(this.currentSegment=0,this.currentSize=0);const a=r.reduce((e,t)=>e+t.byteLength,0),o=new Uint8Array(a);let h=0;for(const e of r)o.set(e,h),h+=e.byteLength;return o}async truncate(){const e=(await this.backend.listKeys()).filter(e=>e.startsWith(ne)||e===ae);e.length>0&&await this.backend.deleteMany(e),this.currentSegment=0,this.currentSize=0}async exists(){return(await this.backend.listKeys()).some(e=>e.startsWith(ne)||e===ae)}}class he{constructor(){this.acquired=!1,this.supported=!1,this.releaseResolve=null,this.releasePromise=null}async acquire(e){const t=globalThis.navigator,s=t?.locks;return s&&"function"==typeof s.request?(this.supported=!0,await new Promise((t,i)=>{s.request.bind(s)(function(e){return`metona-sqlark:${e}`}(e),{ifAvailable:!0,mode:"exclusive"},async s=>{if(!s)return void i(new n(`Database "${e}" is already open in another tab (locked)`,"ARIA_LOCKED"));this.acquired=!0;const r=new Promise(e=>{this.releaseResolve=e});this.releasePromise=r,t(),await r})}),!0):(this.supported=!1,!1)}async release(){if(this.acquired){if(this.releaseResolve){const e=this.releaseResolve,t=this.releasePromise;this.releaseResolve=null,this.releasePromise=null,e();try{await t}catch{}}this.acquired=!1}}isAcquired(){return this.acquired}isSupported(){return this.supported}}class ce{constructor(e,t,s=null,n=1e3,i=16777216){this.opCount=0,this.lsm=e,this.wal=t,this.flushable=s,this.interval=n,this.walSizeThreshold=i}async tick(){this.opCount++,(this.opCount>=this.interval||this.getWALEstimatedSize()>=this.walSizeThreshold)&&await this.checkpoint()}getWALEstimatedSize(){const e=this.wal;if("function"==typeof e.getBufferedBytes){const t=e.getBufferedBytes();if(t>0)return t}return 200*("function"==typeof e.getBufferedCount?e.getBufferedCount():0)}async checkpoint(){await this.lsm.flush(),this.flushable&&await this.flushable.flushAll(),await this.wal.checkpoint(),this.opCount=0}}class le{constructor(){this.store=new Map,this.opened=!1}async open(e){this.opened=!0}async close(){this.store.clear(),this.opened=!1}isOpen(){return this.opened}async read(e){return this.store.get(e)??null}async write(e,t){this.store.set(e,t)}async writeMany(e){for(const[t,s]of Object.entries(e))this.store.set(t,s)}async delete(e){this.store.delete(e)}async deleteMany(e){for(const t of e)this.store.delete(t)}async listKeys(){return Array.from(this.store.keys())}async exists(e){return this.store.has(e)}async clear(){this.store.clear()}}class ue{constructor(e,t){this.kv=new L(e,t)}getKV(){return this.kv}async open(e){await this.kv.open(e)}async close(){await this.kv.close()}isOpen(){return this.kv.isOpen()}async read(e){return this.kv.get(e)}async write(e,t){await this.kv.put(e,t)}async append(e,t){await this.kv.appendValue(e,t)}async writeMany(e){await this.kv.putMany(e)}async delete(e){await this.kv.delete(e)}async deleteMany(e){await this.kv.deleteMany(e)}async listKeys(){return this.kv.listKeys()}async exists(e){return this.kv.exists(e)}async clear(){await this.kv.clear()}}const fe="AES-GCM";class de{constructor(){this.cryptoKey=null,this._enabled=!1}get enabled(){return this._enabled}async init(e,t){const s=new TextEncoder,n=await crypto.subtle.importKey("raw",s.encode(e),"PBKDF2",!1,["deriveKey"]),i=t||crypto.getRandomValues(new Uint8Array(16));return this.cryptoKey=await crypto.subtle.deriveKey({name:"PBKDF2",salt:i,iterations:1e5,hash:"SHA-256"},n,{name:fe,length:256},!1,["encrypt","decrypt"]),this._enabled=!0,i}async encryptPage(e){if(!this.cryptoKey)throw new Error("Crypto not initialized");const t=crypto.getRandomValues(new Uint8Array(12)),s=e instanceof Uint8Array?e:new Uint8Array(e);return{iv:t,data:await crypto.subtle.encrypt({name:fe,iv:t},this.cryptoKey,s)}}async decryptPage(e,t){if(!this.cryptoKey)throw new Error("Crypto not initialized");const s=t instanceof Uint8Array?t:new Uint8Array(t);return crypto.subtle.decrypt({name:fe,iv:e},this.cryptoKey,s)}close(){this.cryptoKey=null,this._enabled=!1}}const pe=12,ye="__aria_keymeta";function me(e){if("undefined"!=typeof Buffer)return Buffer.from(e).toString("base64");let t="";for(let s=0;se!==ye))throw new n("Cannot open with encryption: existing database has no key metadata (database was created without encryption, or key metadata was lost)","ARIA_ENCRYPT_CONFIG_ERROR");const e=await this.crypto.init(this.password),t=await this.crypto.encryptPage((new TextEncoder).encode("metona-sqlark-encryption-verifier").buffer),s=new Uint8Array(pe+t.data.byteLength);s.set(t.iv,0),s.set(new Uint8Array(t.data),pe);const i=JSON.stringify({salt:me(e),verifier:me(s)});await this.inner.write(ye,(new TextEncoder).encode(i).buffer)}this.opened=!0}async close(){await this.inner.close(),this.crypto.close(),this.opened=!1}isOpen(){return this.opened}async read(e){this.ensureReady();const t=await this.inner.read(e);return null===t?null:this.decrypt(t)}async write(e,t){this.ensureReady(),await this.inner.write(e,await this.encrypt(t))}async writeMany(e){this.ensureReady();const t={};for(const[s,n]of Object.entries(e))t[s]=await this.encrypt(n);await this.inner.writeMany(t)}async delete(e){this.ensureReady(),await this.inner.delete(e)}async deleteMany(e){this.ensureReady(),await this.inner.deleteMany(e)}async listKeys(){return this.ensureReady(),this.inner.listKeys()}async exists(e){return this.ensureReady(),this.inner.exists(e)}async clear(){const e=(await this.inner.listKeys()).filter(e=>e!==ye);e.length>0&&await this.inner.deleteMany(e)}ensureReady(){if(!this.opened)throw new n("EncryptedBackend not opened","ARIA_DB_NOT_OPEN");if(!this.crypto.enabled)throw new n("EncryptedBackend key not initialized","ARIA_DECRYPT_ERROR")}async encrypt(e){const t=await this.crypto.encryptPage(e),s=new ArrayBuffer(pe+t.data.byteLength),n=new Uint8Array(s);return n.set(t.iv,0),n.set(new Uint8Array(t.data),pe),s}async decrypt(e){const t=new Uint8Array(e);if(t.byteLength<=pe)throw new n("Corrupted encrypted data block (too short)","ARIA_DECRYPT_ERROR");const s=t.subarray(0,pe),i=t.subarray(pe);try{return await this.crypto.decryptPage(s,i)}catch(e){if(e instanceof n)throw e;throw new n("Decryption failed (data corrupted or wrong key)","ARIA_DECRYPT_ERROR",e)}}}class be{constructor(e,t){this.fileManager=e,this.bufferPool=t,this.pageIds=new Map}async save(e,t){const s=Math.max(1,Math.ceil(t.byteLength/M)),n=await this.bufferPool.newPages(s,P.DATA),i=[];for(let e=0;ee+t.byteLength,0),r=new Uint8Array(Math.min(i,s));let a=0;for(const e of n){const t=Math.min(e.byteLength,r.byteLength-a);if(t<=0)break;r.set(e.subarray(0,t),a),a+=t}return this.pageIds.delete(e),r}async delete(e,t){for(const e of t){this.bufferPool.removePage(e);try{await this.fileManager.freePageId(e)}catch{}}this.pageIds.delete(e)}}class Te{constructor(e){this.nextPageId=0,this.metaLoaded=!1,this.dbName="",this.backend=e}async init(e){this.dbName=e;const t=await this.backend.read("__aria_meta");let s=1;t&&t instanceof ArrayBuffer&&t.byteLength>=4&&(s=new DataView(t).getUint32(0,!1));const n=await this.backend.listKeys();for(const e of n)if(e.startsWith("pg_")){const t=Number.parseInt(e.slice(3),10);!Number.isNaN(t)&&t+1>s&&(s=t+1)}this.nextPageId=s,t&&t instanceof ArrayBuffer&&!(t.byteLength<4)&&s===new DataView(t).getUint32(0,!1)||await this.saveMeta(),this.metaLoaded=!0}async readPage(e){const t=`pg_${e}`,s=await this.backend.read(t);if(!s)return null;if(s.byteLengtht.txnId!==e);0===n.length?this.versionStore.delete(t):this.versionStore.set(t,n)}this.activeTxns.delete(e),this.txnWriteKeys.delete(e)}rollbackTransaction(e){const t=this.activeTxns.get(e);if(!t)throw new Error(`Transaction ${e} not found`);t.state=q.ABORTED;const s=this.txnWriteKeys.get(e);if(s)for(const t of s){const s=this.versionStore.get(t);if(!s)continue;const n=s.filter(t=>t.txnId!==e);0===n.length?this.versionStore.delete(t):this.versionStore.set(t,n)}this.activeTxns.delete(e),this.txnWriteKeys.delete(e)}writeVersion(e,t,s,n){const i=`${e}.${t}`,r=this.versionStore.get(i)??[],a={txnId:n,data:s,prevVersion:r.length>0?r[r.length-1]:null,committed:!1};r.push(a),this.versionStore.set(i,r),this.txnWriteKeys.get(n)?.add(i)}deleteVersion(e,t,s){this.writeVersion(e,t,{__mvcc_tombstone:!0},s)}discardVersions(e){const t=this.txnWriteKeys.get(e);if(t)for(const s of t){const t=this.versionStore.get(s);if(!t)continue;const n=t.filter(t=>t.txnId!==e);0===n.length?this.versionStore.delete(s):this.versionStore.set(s,n)}}gc(e=100){for(const[t,s]of this.versionStore){if(s.length<=e)continue;const n=s.slice(s.length-e);this.versionStore.set(t,n)}}getGlobalLSN(){return this.globalCommitLsn}}function ke(e,t){const s=new ArrayBuffer(M);return function(e,t,s){const n=new DataView(e);n.setUint32(0,t,!1),n.setUint8(4,s),n.setUint16(5,16,!1),n.setUint16(7,e.byteLength,!1),n.setUint16(9,0,!1),n.setUint32(11,0,!1),n.setUint8(15,0)}(s,e,t),{pageId:e,type:t,data:s,dirty:!0,pins:0,prev:null,next:null,lastAccess:Date.now()}}class xe{constructor(){this.head=null,this.tail=null,this._size=0}get size(){return this._size}moveToHead(e){this.head!==e&&(null!==e.prev||null!==e.next||this.head===e||this.tail===e?this.detach(e):this._size++,e.prev=null,e.next=this.head,this.head&&(this.head.prev=e),this.head=e,this.tail||(this.tail=e))}remove(e){(null!==e.prev||null!==e.next||this.head===e||this.tail===e)&&(this.detach(e),this._size=Math.max(0,this._size-1))}detach(e){e.prev?e.prev.next=e.next:this.head===e&&(this.head=e.next),e.next?e.next.prev=e.prev:this.tail===e&&(this.tail=e.prev),e.prev=null,e.next=null}clear(){this.head=null,this.tail=null,this._size=0}getLRU(){return this.tail}}class Se{constructor(e,t,s){this.lru=new xe,this.capacity=e,this.onEvict=t,this.onRemove=s}access(e){e.lastAccess=Date.now(),this.lru.moveToHead(e)}add(e){this.access(e)}remove(e){this.lru.remove(e)}async evictIfNeeded(e){let t=0;for(;this.lru.size+e>this.capacity&&this.lru.size>0;){const e=this.findEvictionCandidate();if(!e)break;e.dirty&&(await this.onEvict(e),e.dirty=!1),this.lru.remove(e),this.onRemove?.(e),t++}return t}findEvictionCandidate(){let e=this.lru.getLRU();for(;e;){if(0===e.pins&&!e.dirty)return e;e=e.prev}for(e=this.lru.getLRU();e;){if(0===e.pins)return e;e=e.prev}return null}clear(){this.lru.clear()}}class Ie{constructor(e,t=256){this.pages=new Map,this.nextPageId=0,this.pageIO=e,this.eviction=new Se(t,async e=>{e.dirty&&(await this.pageIO.writePage(e.pageId,e.data),e.dirty=!1)},e=>{this.pages.delete(e.pageId)})}async getPage(e){let t=this.pages.get(e);if(t)return this.eviction.access(t),t.pins++,t;const s=await this.pageIO.readPage(e);return s?(await this.eviction.evictIfNeeded(1),t={pageId:e,type:new DataView(s).getUint8(4),data:s,dirty:!1,pins:1,prev:null,next:null,lastAccess:Date.now()},this.pages.set(e,t),this.eviction.add(t),t):null}async newPages(e,t=P.DATA){if(e<=0)return[];let s;if("function"==typeof this.pageIO.allocatePageIds)s=await this.pageIO.allocatePageIds(e);else{s=[];for(let t=0;t0&&e.pins--}markDirty(e){e.dirty=!0}async flushPage(e){const t=this.pages.get(e);t&&t.dirty&&(await this.pageIO.writePage(e,t.data),t.dirty=!1)}async flushAll(){for(const[,e]of this.pages)e.dirty&&(await this.pageIO.writePage(e.pageId,e.data),e.dirty=!1)}removePage(e){const t=this.pages.get(e);t&&(this.eviction.remove(t),this.pages.delete(e))}async clear(){await this.flushAll(),this.pages.clear(),this.eviction.clear()}}class Ae{constructor(e={}){this.name="aria",this.opened=!1,this.dbName="",this.dbLock=null,this.schemas=new Map,this.tablePKs=new Map,this.opCounter=0,this.secondaryIndexes=new Map,this.uniqueIndexCols=new Set,this.mvcc=new Ee,this.currentTxnId=null,this.txnSnapshot=null,this.gcCounter=0,this.savepoints=new Map,this.config={...z,...e}}async open(e,t){if(!this.opened)try{await this.openInternal(e)}catch(t){if(this.dbLock){try{await this.dbLock.release()}catch{}this.dbLock=null}if(t instanceof n)throw t;throw new n(`Failed to open AriaEngine database "${e}"`,"ARIA_OPEN_ERROR",t)}}async openInternal(e){this.dbName=e;const t=new he;let s;if(this.dbLock=t,await t.acquire(e),s="opfs"===this.config.storageBackend?new w:"kv"===this.config.storageBackend?new ue:new le,await s.open(e),this.config.encryption?.password)this.backend=new we(s,this.config.encryption.password);else if(this.backend=s,await s.exists("__aria_keymeta"))throw await s.close(),new n("Database is encrypted: provide encryption.password to open it","ARIA_ENCRYPT_REQUIRED");await this.backend.open(e),this.fileManager=new Te(this.backend),await this.fileManager.init(e),this.bufferPool=new Ie(this.fileManager,this.config.bufferPoolPages);const i=this.createSSTableStore("main");this.lsm=new te({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:i}),this.wal=new se(new oe(this.backend),this.config.walEnabled,this.config.walSyncMode),await this.loadSchemas();for(const[e,t]of this.schemas){const s=this.tablePKs.get(e);for(const[n,i]of Object.entries(t.columns))if((i.index||i.unique)&&n!==s){const t=`${e}:idx:${n}`;if(!this.secondaryIndexes.has(t)){const s=new te({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e}_${n}`)});await s.init(),this.secondaryIndexes.set(t,s)}}}await this.lsm.init();const r=new Set,a=[];await this.wal.recover(e=>a.push(e));for(const e of a)e.type===K.COMMIT&&r.add(e.txnId),e.type===K.ROLLBACK&&r.delete(e.txnId);for(const e of a)(0===e.txnId||r.has(e.txnId))&&(e.type===K.DROP_TABLE?await this.applyDropTableRecovery(e.tableName):this.applyWALRecord(e));if(a.length>0){await this.lsm.flush(),await this.wal.checkpoint();for(const e of this.schemas.keys())await this.reindexTableInternal(e)}this.checkpointManager=new ce(this.lsm,{checkpoint:async()=>{this.currentTxnId||await this.wal.checkpoint()},flush:async()=>{this.currentTxnId||await this.wal.flush()},getBufferedBytes:()=>this.wal.getBufferedBytes(),getBufferedCount:()=>this.wal.getBufferedCount()},{flushAll:async()=>{await this.lsm.flush();for(const e of this.secondaryIndexes.values())await e.flush()}},this.config.checkpointInterval,this.config.walSizeThreshold),this.opened=!0}async close(){if(this.opened){await this.persistSchemas(),await this.lsm.flush();for(const e of this.secondaryIndexes.values())await e.flush();await this.bufferPool.flushAll(),await this.wal.flush(),await this.wal.checkpoint(),await this.backend.close(),this.dbLock&&(await this.dbLock.release(),this.dbLock=null),this.schemas.clear(),this.tablePKs.clear(),this.secondaryIndexes.clear(),this.uniqueIndexCols.clear(),this.mvcc=new Ee,this.currentTxnId=null,this.txnSnapshot=null,this.savepoints.clear(),this.opCounter=0,this.opened=!1}}async repair(){this.ensureOpen(),await this.bufferPool.clear(),await this.lsm.validateAll(),await this.lsm.flush(),await this.wal.checkpoint();for(const e of this.schemas.keys())await this.reindexTable(e);const e=this.backend;if("function"==typeof e.cleanupStaleFiles)try{await e.cleanupStaleFiles()}catch{}await this.cleanupOrphanPages()}async cleanupOrphanPages(){const e=(await this.backend.listKeys()).filter(e=>/^pg_\d+$/.test(e));if(0===e.length)return;const t=new Set,s=async e=>{const s="main"===e?"__aria_lsm_meta":`__aria_lsm_meta_${e}`,n=await this.backend.read(s);if(n)try{const e=JSON.parse((new TextDecoder).decode(n));for(const s of e)if(s.pageIds)for(const e of s.pageIds)t.add(e)}catch{}};await s("main");for(const[e,t]of this.schemas)for(const[n,i]of Object.entries(t.columns))(i.index||i.unique)&&await s(`idx_${e}_${n}`);const n=e.map(e=>Number(e.slice(3))).filter(e=>!t.has(e));n.length>0&&await this.backend.deleteMany(n.map(e=>`pg_${e}`))}async clearAll(){this.ensureOpen(),await this.backend.clear(),await this.bufferPool.clear(),await this.fileManager.clearAll(),this.schemas.clear(),this.tablePKs.clear(),this.secondaryIndexes.clear(),this.uniqueIndexCols.clear(),this.lsm.clear(),this.mvcc=new Ee,this.currentTxnId=null,this.txnSnapshot=null,this.savepoints.clear(),this.opCounter=0,await this.persistSchemas(),await this.wal.checkpoint()}isOpen(){return this.opened}async getMeta(e){const t=await this.backend.read(`__meta_${e}`);return t?(new TextDecoder).decode(t):null}async setMeta(e,t){await this.backend.write(`__meta_${e}`,(new TextEncoder).encode(t).buffer)}async createTable(e){if(this.ensureOpen(),this.ensureNoDDLInTransaction("CREATE TABLE"),this.schemas.has(e.name))throw new n(`Table "${e.name}" already exists`,"TABLE_EXISTS");this.schemas.set(e.name,e),this.tablePKs.set(e.name,this.getPK(e));for(const[t,s]of Object.entries(e.columns))if(s.index||s.unique){const s=`${e.name}:idx:${t}`;if(!this.secondaryIndexes.has(s)){const n=new te({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e.name}_${t}`)});await n.init(),this.secondaryIndexes.set(s,n)}}await this.persistSchemas(),await this.wal.append({type:K.CREATE_TABLE,txnId:0,tableName:e.name,key:"",data:{schema:JSON.stringify(e)}})}async dropTable(e){this.ensureOpen(),this.ensureNoDDLInTransaction("DROP TABLE"),this.ensureTable(e);const t=await this.getAllRows(e);for(const s of t){const t=this.tablePKs.get(e);this.lsm.delete(`${e}:${s[t]}`)}await this.cleanupTableIndexes(e);const s=`${e}:`;for(const e of this.uniqueIndexCols)e.startsWith(s)&&this.uniqueIndexCols.delete(e);this.schemas.delete(e),this.tablePKs.delete(e),await this.persistSchemas(),await this.wal.append({type:K.DROP_TABLE,txnId:0,tableName:e,key:""})}async cleanupTableIndexes(e){const t=`${e}:idx:`,s=[];for(const[e,n]of this.secondaryIndexes)if(e.startsWith(t)){s.push(e);try{await n.clear()}catch{}}for(const e of s)this.secondaryIndexes.delete(e)}async hasTable(e){return this.ensureOpen(),this.schemas.has(e)}async getTableNames(){return this.ensureOpen(),Array.from(this.schemas.keys())}async getTableSchema(e){return this.ensureOpen(),this.schemas.get(e)??null}async insert(e,t){this.ensureOpen(),this.ensureTable(e);const s=this.schemas.get(e),i=this.tablePKs.get(e),r=[],a=[],o=this.uniqueColumns(e,s),h=[];for(const n of t){const t=this.validateRow(s,n),r=String(t[i]);h.push({row:t,pkValue:r,key:`${e}:${r}`})}await this.lsm.prefetchKeys(h.map(e=>e.key));const c=new Set;for(const{pkValue:t,key:s}of h){if(c.has(t))throw new n(`Duplicate primary key "${t}" in table "${e}"`,"DUPLICATE_KEY");c.add(t);const i=this.currentTxnId?this.txnSnapshot?.get(s)??this.lsm.get(s):this.lsm.get(s);if(i&&!i.__txn_deleted)throw new n(`Duplicate primary key "${t}" in table "${e}"`,"DUPLICATE_KEY")}for(const t of o){const s=this.secondaryIndexes.get(`${e}:idx:${t}`);await s.prefetchPrefixRanges(h.map(e=>{const s=e.row[t];if(null==s)return null;const n=`${String(s)}:`;return[n,`${n}￿`]}).filter(e=>null!==e))}const l=new Map;for(const{row:t,pkValue:s}of h)for(const i of o){const r=t[i];if(null==r)continue;const a=String(r);let o=l.get(i);if(o||(o=new Set,l.set(i,o)),o.has(a))throw new n(`Unique constraint violation on column "${i}" in table "${e}"`,"UNIQUE_VIOLATION");o.add(a),this.checkUniqueSync(e,[i],t,s)}for(const{row:t,pkValue:s,key:n}of h)this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(n,t),this.mvcc.writeVersion(e,s,t,this.currentTxnId)):this.lsm.put(n,t),this.updateSecondaryIndexes(e,s,t,null),r.push(s),a.push({type:K.INSERT,txnId:this.currentTxnId??0,tableName:e,key:s,data:t});return await this.wal.appendBatch(a),this.opCounter+=t.length,this.checkMemoryBudget(),await this.checkpointManager.tick(),this.tryGC(),r}async find(e,t){let s;this.ensureOpen(),this.ensureTable(e);const n=await this.tryIndexLookup(e,t);s=null!==n?n:await this.getAllRows(e),s=this.mergeTxnSnapshot(e,s),t.where&&Object.keys(t.where).length>0&&(s=s.filter(e=>o(e,t.where))),t.orderBy&&t.orderBy.length>0&&(s=l(s,t.orderBy));const i=t.offset??0,r=t.limit??s.length;return s=s.slice(i,i+r),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(s=s.map(e=>f(e,t.columns))),this.trimAllCaches(),s}async update(e,t,s){if(this.ensureOpen(),this.ensureTable(e),a(t.where))throw new n("Unresolved subqueries/column references in UPDATE WHERE (use db.query() to execute subqueries)","NOT_SUPPORTED");const i=this.schemas.get(e),r=await this.getAllRows(e);let h=0;const c=[],l=new Set,u=p(s);for(const t of Object.keys(u))if(!i.columns[t])throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");const f=this.uniqueColumns(e,i);for(const t of f){const s=this.secondaryIndexes.get(`${e}:idx:${t}`),n=[];if(void 0!==u[t]&&null!==u[t]){const e=`${String(u[t])}:`;n.push([e,`${e}￿`])}else if(!(t in u))for(const e of r){const s=e[t];if(null==s)continue;const i=`${String(s)}:`;n.push([i,`${i}￿`])}await s.prefetchPrefixRanges(n)}const d=[],y=new Map;for(const s of r){const r=this.tablePKs.get(e),a=`${e}:${s[r]}`;if(t.where&&Object.keys(t.where).length>0&&!o(s,t.where))continue;const h={...s,...u};this.validateRow(i,h),this.checkBatchUnique(e,f,h,y),this.checkUniqueSync(e,f,h,String(s[r]));const c=String(h[r]),l=c!==String(s[r]);if(l){const t=`${e}:${c}`,s=this.currentTxnId?this.txnSnapshot?.get(t)??this.lsm.get(t):this.lsm.get(t);if(s&&!s.__txn_deleted)throw new n(`Duplicate primary key "${c}" in table "${e}" (cannot update key to existing value)`,"DUPLICATE_KEY")}d.push({row:s,pk:String(s[r]),key:a,updated:h,newPk:c,pkChanged:l})}for(const t of d)t.pkChanged&&await this.checkForeignKeyUpdateRestrict(e,t.pk,t.newPk);for(const{row:t,pk:s,key:n,updated:i,newPk:r,pkChanged:a}of d)a&&await this.applyForeignKeyUpdateRules(e,s,r,c,l),this.currentTxnId&&this.txnSnapshot?(a&&(this.txnSnapshot.set(n,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,s,this.currentTxnId)),this.txnSnapshot.set(`${e}:${r}`,i),this.mvcc.writeVersion(e,r,i,this.currentTxnId)):(a&&this.lsm.delete(n),this.lsm.put(`${e}:${r}`,i)),h++,a&&c.push({type:K.DELETE,txnId:this.currentTxnId??0,tableName:e,key:s}),c.push({type:K.UPDATE,txnId:this.currentTxnId??0,tableName:e,key:r,data:i}),this.updateSecondaryIndexes(e,r,i,t);return await this.wal.appendBatch(c),this.opCounter+=h,await this.checkpointManager.tick(),this.trimAllCaches(),h}checkBatchUnique(e,t,s,i){for(const r of t){const t=s[r];if(null==t)continue;let a=i.get(r);if(a||(a=new Set,i.set(r,a)),a.has(t))throw new n(`Unique constraint violation on column "${r}" in table "${e}"`,"UNIQUE_VIOLATION");a.add(t)}}async checkForeignKeyUpdateRestrict(e,t,s){for(const[s,i]of this.schemas)if(s!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i===e&&("RESTRICT"===a.onUpdate||"SET NULL"===a.onUpdate&&a.required)){const i=await this.getAllRows(s);for(const o of i)if(String(o[r])===t){const i="RESTRICT"===a.onUpdate?`foreign key "${r}" in "${s}" has dependent rows`:`foreign key "${r}" in "${s}" is required (SET NULL violates constraint)`;throw new n(`Cannot update "${e}" key "${t}": ${i}`,"FOREIGN_KEY_VIOLATION")}}}}async applyForeignKeyUpdateRules(e,t,s,n,i){const r=`${e}:${t}`;if(!i.has(r)){i.add(r);for(const[i,r]of this.schemas)if(i!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onUpdate)continue;const[r]=o.references.split(".");if(r!==e)continue;if("CASCADE"!==o.onUpdate&&"SET NULL"!==o.onUpdate)continue;const h=await this.getAllRows(i);for(const e of h){if(String(e[a])!==t)continue;const r=this.tablePKs.get(i),h=String(e[r]),c={...e,[a]:"CASCADE"===o.onUpdate?s:null},l=`${i}:${h}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(l,c),this.mvcc.writeVersion(i,h,c,this.currentTxnId)):this.lsm.put(l,c),this.updateSecondaryIndexes(i,h,c,e),n.push({type:K.UPDATE,txnId:this.currentTxnId??0,tableName:i,key:h,data:c})}}}}async delete(e,t){if(this.ensureOpen(),this.ensureTable(e),a(t.where))throw new n("Unresolved subqueries/column references in DELETE WHERE (use db.query() to execute subqueries)","NOT_SUPPORTED");const s=await this.getAllRows(e);let i=0;const r=[],h=new Set,c=[];for(const n of s)t.where&&0!==Object.keys(t.where).length&&!o(n,t.where)||c.push(String(n[this.tablePKs.get(e)]));const l=new Set;for(const t of c)await this.checkCascadeRestrict(e,t,l);for(const n of s){const s=this.tablePKs.get(e),a=`${e}:${n[s]}`;t.where&&0!==Object.keys(t.where).length&&!o(n,t.where)||(i+=await this.applyForeignKeyRules(e,String(n[s]),r,h),this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(a,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(n[s]),this.currentTxnId)):this.lsm.delete(a),i++,r.push({type:K.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(n[s])}),this.updateSecondaryIndexes(e,String(n[s]),null,n))}return await this.wal.appendBatch(r),this.opCounter+=i,await this.checkpointManager.tick(),this.trimAllCaches(),i}async checkCascadeRestrict(e,t,s){const i=`${e}:${t}`;if(!s.has(i)){s.add(i);for(const[i,r]of this.schemas)if(i!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onDelete)continue;const[r]=o.references.split(".");if(r!==e)continue;const h=(await this.getAllRows(i)).filter(e=>String(e[a])===t);if("RESTRICT"===o.onDelete&&h.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${i}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("SET NULL"===o.onDelete&&o.required&&h.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${i}" is required (SET NULL violates constraint)`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===o.onDelete){const e=this.tablePKs.get(i);for(const t of h)await this.checkCascadeRestrict(i,String(t[e]),s)}}}}async applyForeignKeyRules(e,t,s,i){let r=0;const a=`${e}:${t}`;if(i.has(a))return 0;i.add(a);for(const[a,o]of this.schemas)if(a!==e)for(const[h,c]of Object.entries(o.columns)){if(!c.references||!c.onDelete)continue;const[o]=c.references.split(".");if(o!==e)continue;const l=(await this.getAllRows(a)).filter(e=>String(e[h])===t);if("RESTRICT"===c.onDelete&&l.length>0)throw new n(`Cannot delete from "${e}": foreign key "${h}" in "${a}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===c.onDelete){const e=this.tablePKs.get(a);for(const t of l){const n=String(t[e]);r+=await this.applyForeignKeyRules(a,n,s,i);const o=`${a}:${n}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(o,{__txn_deleted:!0}),this.mvcc.deleteVersion(a,n,this.currentTxnId)):this.lsm.delete(o),this.updateSecondaryIndexes(a,n,null,t),s.push({type:K.DELETE,txnId:this.currentTxnId??0,tableName:a,key:n}),r++}}else if("SET NULL"===c.onDelete){const e=this.tablePKs.get(a);for(const t of l){const n=String(t[e]),i={...t,[h]:null},r=`${a}:${n}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(r,i),this.mvcc.writeVersion(a,n,i,this.currentTxnId)):this.lsm.put(r,i),this.updateSecondaryIndexes(a,n,i,t),s.push({type:K.UPDATE,txnId:this.currentTxnId??0,tableName:a,key:n,data:i})}}}return r}async findStream(e,t,s){this.ensureOpen(),this.ensureTable(e);const n=!!(t.where&&Object.keys(t.where).length>0),i=t.columns&&t.columns.length>0&&"*"!==t.columns[0]?e=>f(e,t.columns):null,r=t.limit??1/0,a=t.offset??0,h=this.tablePKs.get(e),c=`${e}:`;let l=0,u=0;const d=e=>!(!n||o(e,t.where))||(u{if(l>=r)return!1;const s={...t};return s[h]=e.slice(c.length),d(s)}),l}async count(e,t){this.ensureOpen(),this.ensureTable(e);const s=await this.getAllRows(e);return this.trimAllCaches(),t?.where&&0!==Object.keys(t.where).length?s.filter(e=>o(e,t.where)).length:s.length}async clear(e){this.ensureOpen(),this.ensureTable(e);const t=await this.getAllRows(e),s=[];for(const n of t){const t=this.tablePKs.get(e),i=`${e}:${n[t]}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(i,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(n[t]),this.currentTxnId)):this.lsm.delete(i),s.push({type:K.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(n[t])}),this.updateSecondaryIndexes(e,String(n[t]),null,n)}await this.wal.appendBatch(s),this.opCounter+=t.length,await this.checkpointManager.tick(),this.tryGC()}async alterTable(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("ALTER TABLE"),this.ensureTable(e);const i=this.schemas.get(e);if("ADD"===t){if(i.columns[s.name])throw new n(`Column "${s.name}" already exists in table "${e}"`,"COLUMN_EXISTS");return i.columns[s.name]=s,void await this.persistSchemas()}if(!i.columns[s.name])throw new n(`Column "${s.name}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.columns[s.name].index||i.columns[s.name].unique){const t=`${e}:idx:${s.name}`,n=this.secondaryIndexes.get(t);if(n){try{await n.clear()}catch{}this.secondaryIndexes.delete(t)}}delete i.columns[s.name],await this.persistSchemas();const r=`${e}:`,a=`${r}￿`;await this.lsm.prefetchRange(r,a);const o=this.lsm.rangeScan(r,a),h=[];for(const[t,n]of o){if(!(s.name in n))continue;const i={...n};delete i[s.name],this.lsm.put(t,i);const a=t.slice(r.length);this.updateSecondaryIndexes(e,a,i,n),h.push({type:K.UPDATE,txnId:this.currentTxnId??0,tableName:e,key:a,data:i})}await this.wal.appendBatch(h),this.opCounter+=h.length,await this.checkpointManager.tick(),this.trimAllCaches()}async createIndex(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("CREATE INDEX"),this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");const r=`${e}:idx:${t}`;if(this.secondaryIndexes.has(r))return;const a=new te({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e}_${t}`)});await a.init(),this.secondaryIndexes.set(r,a);try{const i=this.tablePKs.get(e),r=await this.getAllRows(e),o=new Set;for(const h of r){const r=h[t];if(null!=r){const c=String(r);if(s&&o.has(c))throw new n(`Unique index on column "${t}" in table "${e}" cannot be created: duplicate value "${c}"`,"UNIQUE_VIOLATION");o.add(c),a.put(`${c}:${h[i]}`,{pk:h[i]})}}await a.flush()}catch(e){this.secondaryIndexes.delete(r);try{await a.clear()}catch{}throw e}i.index=!0,s&&(i.unique=!0,this.uniqueIndexCols.add(`${e}:${t}`)),await this.persistSchemas()}async dropIndex(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("DROP INDEX"),this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.primaryKey)throw new n(`Cannot drop primary key index on column "${t}"`,"NOT_SUPPORTED");if(!i.index&&!i.unique&&!this.secondaryIndexes.has(`${e}:idx:${t}`))throw new n(`Index on column "${t}" does not exist in table "${e}"`,"INDEX_NOT_FOUND");const r=`${e}:${t}`;if(i.unique&&!this.uniqueIndexCols.has(r))throw new n(`Cannot drop index on column "${t}" in table "${e}": UNIQUE constraint defined at table creation must be removed by recreating the table`,"NOT_SUPPORTED");i.index=!1,i.unique=!1,this.uniqueIndexCols.delete(r);const a=`${e}:idx:${t}`,o=this.secondaryIndexes.get(a);o&&(await o.clear(),this.secondaryIndexes.delete(a)),await this.persistSchemas()}async beginTransaction(){if(this.currentTxnId)throw new n("Transaction already in progress","TX_ACTIVE");this.currentTxnId=this.mvcc.beginTransaction(),this.txnSnapshot=new Map;try{await this.wal.append({type:K.BEGIN,txnId:this.currentTxnId,tableName:"",key:""})}catch(e){throw this.mvcc.rollbackTransaction(this.currentTxnId),this.currentTxnId=null,this.txnSnapshot=null,e}}async commitTransaction(){if(!this.currentTxnId)throw new n("No active transaction","TX_NONE");if(await this.wal.append({type:K.COMMIT,txnId:this.currentTxnId,tableName:"",key:""}),await this.wal.flush(),this.txnSnapshot)for(const[e,t]of this.txnSnapshot)t.__txn_deleted?this.lsm.delete(e):this.lsm.put(e,t);this.mvcc.commitTransaction(this.currentTxnId),this.currentTxnId=null,this.txnSnapshot=null}async rollbackTransaction(){if(!this.currentTxnId)throw new n("No active transaction","TX_NONE");const e=this.currentTxnId;await this.wal.append({type:K.ROLLBACK,txnId:e,tableName:"",key:""});const t=new Set;if(this.txnSnapshot)for(const e of this.txnSnapshot.keys()){const s=e.indexOf(":");s>0&&t.add(e.slice(0,s))}this.mvcc.rollbackTransaction(e),this.txnSnapshot=null,this.currentTxnId=null;for(const e of t)this.schemas.has(e)&&await this.reindexTable(e)}async savepoint(e){if(!this.currentTxnId)throw new n("No active transaction for savepoint","TX_NONE");if(this.savepoints.has(e))throw new n(`Savepoint "${e}" already exists`,"SAVEPOINT_EXISTS");this.savepoints.set(e,{txnId:this.currentTxnId,snapshot:this.txnSnapshot?new Map(this.txnSnapshot):null})}async rollbackToSavepoint(e){const t=this.savepoints.get(e);if(!t)throw new n(`Savepoint "${e}" not found`,"SAVEPOINT_NOT_FOUND");const s=new Set;if(this.txnSnapshot)for(const e of this.txnSnapshot.keys()){const t=e.indexOf(":");t>0&&s.add(e.slice(0,t))}this.txnSnapshot=t.snapshot?new Map(t.snapshot):null,this.mvcc.discardVersions(this.currentTxnId);let i=!1;for(const[t]of this.savepoints)t!==e?i&&this.savepoints.delete(t):i=!0;for(const e of s)this.schemas.has(e)&&await this.reindexTable(e)}async releaseSavepoint(e){if(!this.savepoints.has(e))throw new n(`Savepoint "${e}" not found`,"SAVEPOINT_NOT_FOUND");this.savepoints.delete(e)}async backup(){this.ensureOpen();const e={};for(const t of this.schemas.keys())e[t]=await this.getAllRows(t);return e}async getAllRows(e){const t=this.tablePKs.get(e),s=`${e}:`;await this.lsm.prefetchRange(s,`${s}￿`);const n=this.lsm.rangeScan(s,`${s}￿`).map(([e,n])=>{const i={...n};return i[t]=e.slice(s.length),i});return this.mergeTxnSnapshot(e,n)}mergeTxnSnapshot(e,t){if(!this.currentTxnId||!this.txnSnapshot)return t;const s=this.tablePKs.get(e),n=`${e}:`;for(const[e,i]of this.txnSnapshot){if(!e.startsWith(n))continue;const r=e.slice(n.length),a=i.__txn_deleted,o=t.findIndex(e=>e[s]===r);if(a)o>=0&&t.splice(o,1);else{const e={...i,[s]:r};o>=0?t[o]=e:t.push(e)}}return t}getPK(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}validateRow(e,t){const s={};for(const[i,r]of Object.entries(e.columns)){let a=t[i];if(void 0===a&&void 0!==r.default&&(a=r.default),r.required&&null==a)throw new n(`Column "${i}" is required in table "${e.name}"`,"VALIDATION_ERROR");if(r.primaryKey&&null==a)throw new n(`Primary key column "${i}" in table "${e.name}" cannot be null or undefined`,"VALIDATION_ERROR");null!=a&&this.checkType(i,r.type,a,r),void 0!==a&&(s[i]=a)}return s}checkType(e,t,s,i){!function(e,t,s,i,r){const a=typeof i;switch(s){case"string":if("string"!==a)throw new n(`Column "${t}" in table "" expects string, got ${a}`,"TYPE_ERROR");if(void 0!==r?.maxLength&&i.length>r.maxLength)throw new n(`Column "${t}" in table "" exceeds max length ${r.maxLength}`,"VALIDATION_ERROR");break;case"number":if("number"!==a)throw new n(`Column "${t}" in table "" expects number, got ${a}`,"TYPE_ERROR");if(void 0!==r?.min&&ir.max)throw new n(`Column "${t}" in table "" value ${i} above maximum ${r.max}`,"VALIDATION_ERROR");break;case"boolean":if("boolean"!==a)throw new n(`Column "${t}" in table "" expects boolean, got ${a}`,"TYPE_ERROR");break;case"date":if("string"!==a||isNaN(Date.parse(i)))throw new n(`Column "${t}" in table "" expects valid date string, got ${typeof i}`,"TYPE_ERROR");break;case"json":if("object"!==a)throw new n(`Column "${t}" in table "" expects object/array, got ${a}`,"TYPE_ERROR")}}(0,e,t,s,i)}async persistSchemas(){const e={};for(const[t,s]of this.schemas)e[t]=s.columns;const t=JSON.stringify(e),s=(new TextEncoder).encode(t).buffer;await this.backend.write("__aria_schemas",s)}async loadSchemas(){const e=await this.backend.read("__aria_schemas");if(e)try{const t=(new TextDecoder).decode(e),s=JSON.parse(t);for(const[e,t]of Object.entries(s)){const s={name:e,columns:t};this.schemas.set(e,s),this.tablePKs.set(e,this.getPK(s))}}catch{}}createSSTableStore(e){const t="main"===e?"sst_":`sst_${e}_`,s="main"===e?"__aria_lsm_meta":`__aria_lsm_meta_${e}`;let n=0,i=!1;const r=this.isPageStorage()?new be(this.fileManager,this.bufferPool):null,a=e=>(new TextEncoder).encode(e).buffer,o=async()=>{const e=await this.backend.read(s);if(!e)return[];try{return JSON.parse((new TextDecoder).decode(e))}catch{return[]}};return{save:async(e,s)=>{if(r)return void await r.save(e,s);let n=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);if(this.config.compression){const e=function(e){if(0===e.byteLength){const e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,0,!0),e}const t=e.byteLength+Math.ceil(e.byteLength/15)+8,s=new Uint8Array(t);let n=0,i=0,r=0;for(;n=4&&i>t&&(t=i,a=n-s)}if(t>4&&n-r<=15){const o=n-r,h=t-4;s[i++]=(15&o)<<4|15&h;for(let t=0;t>8&255,n+=t,r=n}else if(n++,n-r>=15){s[i++]=240;for(let t=0;t<15;t++)s[i++]=e[r+t];r=n}}let a=n-r;for(;a>0;){const t=Math.min(a,15);s[i++]=(15&t)<<4;for(let n=0;n{if(r){const t=(await o()).find(t=>t.id===e);if(t&&t.pageIds&&t.pageIds.length>0)return r.load(e,t.pageIds,t.totalSize)}const s=await this.backend.read(`${t}${e}`);if(!s)return null;let n=new Uint8Array(s);return this.config.compression&&(n=function(e){if(e.byteLength<4)throw new Error("LZ4 stream too short: missing header");const t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(0===t&&4===e.byteLength)return new Uint8Array(0);if(t<=0||t>1073741823)throw new Error("Invalid LZ4 header: bad original size");const s=e.subarray(4),n=new Uint8Array(t);let i=0,r=0;for(;i>4&15,o=15&e;for(let e=0;e=s.byteLength)break;const h=s[i++]|s[i++]<<8,c=o+4;for(let e=0;e{if(r){const t=(await o()).find(t=>t.id===e);t&&t.pageIds&&t.pageIds.length>0&&await r.delete(e,t.pageIds)}await this.backend.delete(`${t}${e}`)},allocateId:async()=>{if(!i){const e=await o();n=e.reduce((e,t)=>Math.max(e,t.id),0),i=!0}return++n},listMeta:o,saveMeta:async e=>{const t=await o(),n=r?.getPageIds(e.id),i=n&&n.length>0?{...e,pageIds:n}:e,h=t.findIndex(t=>t.id===e.id);h>=0?t[h]=i:t.push(i),await this.backend.write(s,a(JSON.stringify(t)))},deleteMeta:async e=>{const t=(await o()).filter(t=>t.id!==e);await this.backend.write(s,a(JSON.stringify(t)))}}}isPageStorage(){return!0===this.config.pageStorage||!1!==this.config.pageStorage&&("opfs"===this.config.storageBackend||"kv"===this.config.storageBackend)}applyWALRecord(e){switch(e.type){case K.INSERT:case K.UPDATE:e.data&&this.lsm.put(`${e.tableName}:${e.key}`,e.data);break;case K.DELETE:this.lsm.delete(`${e.tableName}:${e.key}`);break;case K.CREATE_TABLE:if(e.data?.schema)try{const t=JSON.parse(e.data.schema);this.schemas.has(t.name)||(this.schemas.set(t.name,t),this.tablePKs.set(t.name,this.getPK(t)))}catch{}case K.COMMIT:case K.ROLLBACK:case K.BEGIN:}}async applyDropTableRecovery(e){if(!e)return;await this.cleanupTableIndexes(e),this.schemas.delete(e),this.tablePKs.delete(e);const t=`${e}:`,s=`${t}￿`;await this.lsm.prefetchRange(t,s);const n=this.lsm.rangeScan(t,s);for(const[e]of n)this.lsm.delete(e)}uniqueColumns(e,t){const s=[];for(const[n,i]of Object.entries(t.columns))i.unique&&this.secondaryIndexes.has(`${e}:idx:${n}`)&&s.push(n);return s}checkUniqueSync(e,t,s,i){for(const r of t){const t=s[r];if(null==t)continue;const a=this.secondaryIndexes.get(`${e}:idx:${r}`);if(!a)continue;const o=`${String(t)}:`,h=a.rangeScan(o,`${o}￿`);for(const[,t]of h){const s=t.pk;if(void 0!==s&&s!==i)throw new n(`Unique constraint violation on column "${r}" in table "${e}"`,"UNIQUE_VIOLATION")}}}updateSecondaryIndexes(e,t,s,n){const i=this.schemas.get(e);if(i)for(const[r,a]of Object.entries(i.columns)){if(!a.index&&!a.unique)continue;const i=`${e}:idx:${r}`,o=this.secondaryIndexes.get(i);if(o){if(n){const e=n[r];null!=e&&o.delete(`${String(e)}:${t}`)}if(s){const e=s[r];null!=e&&o.put(`${String(e)}:${t}`,{pk:t})}}}}async tryIndexLookup(e,t){if(!t.where)return null;const s=this.schemas.get(e);if(!s)return null;const n=this.tablePKs.get(e),i=[],r=e=>{for(const[t,s]of Object.entries(e))if("$and"!==t)"$or"!==t&&"$not"!==t&&"$exists"!==t&&i.push([t,s]);else for(const e of s)r(e)};r(t.where);for(const[t,r]of i){const i=s.columns[t];if(!(i&&(i.index||i.unique||i.primaryKey)||t===n))continue;if(t===n){if("object"!=typeof r||null===r){const t=`${e}:${r}`;await this.lsm.prefetchKeys([t]);const s=this.lsm.get(t);return s?[{...s,[n]:r}]:[]}const t=r;if("$eq"in t){const s=`${e}:${t.$eq}`;await this.lsm.prefetchKeys([s]);const i=this.lsm.get(s);return i?[{...i,[n]:t.$eq}]:[]}if("$in"in t&&Array.isArray(t.$in)){const s=t.$in.map(t=>`${e}:${t}`);await this.lsm.prefetchKeys(s);const i=[],r=new Set;for(const s of t.$in){const t=String(s);if(r.has(t))continue;const a=this.lsm.get(`${e}:${t}`);a&&(r.add(t),i.push({...a,[n]:t}))}return i}if("$gt"in t||"$gte"in t||"$lt"in t||"$lte"in t){const t=`${e}:`;await this.lsm.prefetchRange(t,`${t}￿`);const s=this.lsm.rangeScan(t,`${t}￿`),i=[];for(const[e,a]of s){const s={...a,[n]:e.slice(t.length)};o(s,{[n]:r})&&i.push(s)}return i}}const a=`${e}:idx:${t}`,h=this.secondaryIndexes.get(a);if(!h)continue;if("object"!=typeof r||null===r){if(null===r)continue;return this.indexScanToRows(e,n,h,String(r),String(r))}const c=r;if("$eq"in c){if(null===c.$eq)continue;const t=String(c.$eq);return this.indexScanToRows(e,n,h,t,t)}if("$in"in c&&Array.isArray(c.$in)){if(c.$in.some(e=>null===e))continue;const t=c.$in.map(e=>String(e));await h.prefetchPrefixRanges(t.map(e=>[e,`${e}￿`]));const s=[],i=new Set,r=[];for(const e of t){const t=h.rangeScan(e,`${e}￿`);for(const[,e]of t){const t=e.pk;t&&!i.has(t)&&(i.add(t),r.push(t))}}await this.lsm.prefetchKeys(r.map(t=>`${e}:${t}`));for(const t of r){const i=this.lsm.get(`${e}:${t}`);i&&s.push({...i,[n]:t})}return s}if("$gt"in c||"$gte"in c||"$lt"in c||"$lte"in c)return(await this.indexScanToRows(e,n,h,"","￿")).filter(e=>o(e,{[t]:r}))}return null}async indexScanToRows(e,t,s,n,i){const r=i.includes("￿")?i:`${i}￿`;await s.prefetchRange(n,r);const a=s.rangeScan(n,r),o=[];for(const[,e]of a){const t=e.pk;t&&o.push(t)}await this.lsm.prefetchKeys(o.map(t=>`${e}:${t}`));const h=[];for(const s of o){const n=this.lsm.get(`${e}:${s}`);n&&h.push({...n,[t]:s})}return h}tryGC(){this.gcCounter++,this.gcCounter>=10&&(this.mvcc.gc(100),this.gcCounter=0)}trimAllCaches(){this.lsm.trimCache();for(const e of this.secondaryIndexes.values())e.trimCache()}checkMemoryBudget(){const e=1024*this.config.maxMemoryMB*1024;this.lsm.getEstimatedMemory()>e&&(this.lsm.flush().catch(()=>{}),this.mvcc.gc(50))}async analyzeTable(e){this.ensureOpen(),this.ensureTable(e);const t=await this.getAllRows(e);let s=this.lsm.getStats().sstableCount,n=this.lsm.getStats().memtableSize,i=this.lsm.getStats().levelCounts.filter(e=>e>0).length;for(const[t,r]of this.secondaryIndexes){if(!t.startsWith(`${e}:idx:`))continue;const a=r.getStats();s+=a.sstableCount,n+=a.memtableSize,i=Math.max(i,a.levelCounts.filter(e=>e>0).length)}const r={table:e,rowCount:t.length,avgRowSize:t.length>0?Math.round(t.reduce((e,t)=>e+JSON.stringify(t).length,0)/t.length):0,indexDepth:i,sstableCount:s,memtableSize:n,estimatedMemory:this.lsm.getEstimatedMemory()},a=this.schemas.get(e);if(a&&t.length>0){const e={};for(const s of Object.keys(a.columns)){const n=new Set(t.map(e=>String(e[s])));e[s]={distinctValues:n.size}}r.columnStats=e}return r}async reindexTable(e){return this.ensureOpen(),this.ensureTable(e),this.reindexTableInternal(e)}async reindexTableInternal(e){const t=this.schemas.get(e);if(!t)return 0;let s=0;const n=this.tablePKs.get(e),i=Object.entries(t.columns).filter(([,e])=>e.index||e.unique);if(0===i.length)return 0;const r=await this.getAllRows(e);for(const[t]of i){const i=`${e}:idx:${t}`,a=this.secondaryIndexes.get(i);if(a){await a.clear(),s++;for(const e of r){const s=e[t];null!=s&&a.put(`${String(s)}:${e[n]}`,{pk:e[n]})}}}return s}async vacuum(){this.ensureOpen(),await this.lsm.flush();for(let e=0;e<6;e++)this.lsm.getStats().levelCounts[e]>=2&&await this.lsm.compactLevel(e);const e=this.mvcc.getGlobalLSN();return this.mvcc.gc(10),{compactedLevels:6,gcVersions:e}}ensureOpen(){if(!this.opened)throw new n("AriaEngine not opened","DB_NOT_OPEN")}ensureNoDDLInTransaction(e){if(this.currentTxnId)throw new n(`${e} is not supported inside a transaction (AriaEngine DDL is not transactional)`,"NOT_SUPPORTED")}ensureTable(e){if(!this.schemas.has(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND")}}class Re{constructor(e="opfs"){this.name="hybrid",this.dbName="",this.version=1,this.memoryEngine=new m,this.diskEngineType=e,this.diskEngine=new _}async open(e,t){this.dbName=e,this.version=t,await this.diskEngine.open(e,t),await this.memoryEngine.open(e,t),await this.reloadMemoryFromDisk()}async reloadMemoryFromDisk(){await this.memoryEngine.close(),await this.memoryEngine.open(this.dbName,this.version);const e=this.diskEngine;"function"==typeof e.reload&&await e.reload();const t=await this.diskEngine.getTableNames();for(const e of t){const t=await this.diskEngine.getTableSchema(e);if(!t)continue;await this.memoryEngine.createTable(t);const s=await this.diskEngine.find(e,{table:e});if(s.length>0)try{await this.memoryEngine.insert(e,s)}catch(e){}}}async close(){await this.memoryEngine.close(),await this.diskEngine.close()}isOpen(){return this.memoryEngine.isOpen()&&this.diskEngine.isOpen()}async repair(){"function"==typeof this.diskEngine.repair&&await this.diskEngine.repair(),await this.reloadMemoryFromDisk()}async clearAll(){if("function"==typeof this.diskEngine.clearAll)await this.diskEngine.clearAll();else{const e=await this.diskEngine.getTableNames();for(const t of e)await this.diskEngine.dropTable(t)}if("function"==typeof this.memoryEngine.clearAll)await this.memoryEngine.clearAll();else{const e=await this.memoryEngine.getTableNames();for(const t of e)await this.memoryEngine.dropTable(t)}}async getMeta(e){return"function"==typeof this.diskEngine.getMeta?this.diskEngine.getMeta(e):null}async setMeta(e,t){"function"==typeof this.diskEngine.setMeta&&await this.diskEngine.setMeta(e,t)}async createTable(e){await this.memoryEngine.createTable(e);try{await this.diskEngine.createTable(e)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async dropTable(e){await this.memoryEngine.dropTable(e);try{await this.diskEngine.dropTable(e)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async hasTable(e){return this.memoryEngine.hasTable(e)}async getTableNames(){return this.memoryEngine.getTableNames()}async getTableSchema(e){return this.memoryEngine.getTableSchema(e)}async alterTable(e,t,s){await this.memoryEngine.alterTable(e,t,s);try{if("function"==typeof this.diskEngine.alterTable)await this.diskEngine.alterTable(e,t,s);else{const n=await this.diskEngine.getTableSchema(e);n&&"DROP"===t&&delete n.columns[s.name]}}catch(e){await this.recoverMemoryAfterDiskError(e)}}async recoverMemoryAfterDiskError(e){try{await this.reloadMemoryFromDisk()}catch{}throw e}async insert(e,t){const s=await this.memoryEngine.insert(e,t);try{await this.diskEngine.insert(e,t)}catch(e){await this.recoverMemoryAfterDiskError(e)}return s}async find(e,t){return this.memoryEngine.find(e,t)}async findStream(e,t,s){return this.memoryEngine.findStream(e,t,s)}async update(e,t,s){const n=await this.memoryEngine.update(e,t,s);try{await this.diskEngine.update(e,t,s)}catch(e){await this.recoverMemoryAfterDiskError(e)}return n}async delete(e,t){const s=await this.memoryEngine.delete(e,t);try{await this.diskEngine.delete(e,t)}catch(e){await this.recoverMemoryAfterDiskError(e)}return s}async count(e,t){return this.memoryEngine.count(e,t)}async clear(e){await this.memoryEngine.clear(e);try{await this.diskEngine.clear(e)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async createIndex(e,t,s){await this.memoryEngine.createIndex(e,t,s);try{"function"==typeof this.diskEngine.createIndex&&await this.diskEngine.createIndex(e,t,s)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async dropIndex(e,t,s){await this.memoryEngine.dropIndex(e,t,s);try{"function"==typeof this.diskEngine.dropIndex&&await this.diskEngine.dropIndex(e,t,s)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async beginTransaction(){await this.memoryEngine.beginTransaction();try{await this.diskEngine.beginTransaction()}catch(e){throw await this.memoryEngine.rollbackTransaction(),e}}async commitTransaction(){await this.diskEngine.commitTransaction();try{await this.memoryEngine.commitTransaction()}catch(e){throw new n("Hybrid commit failed: memory engine error after disk commit (disk data is committed)","TX_COMMIT_ERROR",e)}}async rollbackTransaction(){await this.memoryEngine.rollbackTransaction(),await this.diskEngine.rollbackTransaction()}getDiskEngineType(){return this.diskEngineType}getMemoryEngine(){return this.memoryEngine}}class Ce{constructor(e,t,s=["*"],n){this.engine=e,this.tableName=t,this._columns=s,this._where={},this._orderBy=[],this._joins=[],this._executor=n}as(e){return this._alias=e,this}innerJoin(e,t,s){return this._addJoin("INNER",e,t,s)}leftJoin(e,t,s){return this._addJoin("LEFT",e,t,s)}rightJoin(e,t,s){return this._addJoin("RIGHT",e,t,s)}crossJoin(e,t){return this._addJoin("CROSS",e,{},t)}join(e,t,s){return this._addJoin("INNER",e,t,s)}_addJoin(e,t,s,n){return this._joins.push({type:e,table:t,on:s,alias:n}),this}where(e){return this._where={...this._where,...e},this}orderBy(e,t="asc"){return this._orderBy.push({column:e,direction:t}),this}limit(e){return this._limit=e,this}offset(e){return this._offset=e,this}async execute(){if(this._joins.length>0&&this._executor){const e=this.toAST();return this._executor.execute(e)}return this.engine.find(this.tableName,{table:this.tableName,columns:this._columns,where:this._where,orderBy:this._orderBy.length>0?this._orderBy:void 0,limit:this._limit,offset:this._offset})}toAST(){return{type:"SELECT",columns:this._columns,from:this.tableName,alias:this._alias,joins:this._joins.length>0?[...this._joins]:void 0,where:this._where,orderBy:this._orderBy.length>0?this._orderBy:void 0,limit:this._limit,offset:this._offset}}}class Oe{constructor(e,t,s,n,i){this.engine=e,this.tableName=t,this._updates=s,this._where={},this.onWrite=n,this.onHooks=i}where(e){return this._where={...this._where,...e},this}async execute(){const e={table:this.tableName,where:this._where};await(this.onHooks?.("beforeUpdate",[e,this._updates]));const t=await this.engine.update(this.tableName,e,this._updates);return this.onWrite?.(this.tableName),await(this.onHooks?.("afterUpdate",[e,this._updates,t])),t}toAST(){return{type:"UPDATE",table:this.tableName,sets:this._updates,where:this._where}}}class Ne{constructor(e,t,s,n){this.engine=e,this.tableName=t,this._where={},this.onWrite=s,this.onHooks=n}where(e){return this._where={...this._where,...e},this}async execute(){const e={table:this.tableName,where:this._where};await(this.onHooks?.("beforeDelete",[e]));const t=await this.engine.delete(this.tableName,e);return this.onWrite?.(this.tableName),await(this.onHooks?.("afterDelete",[e,t])),t}toAST(){return{type:"DELETE",from:this.tableName,where:this._where}}}class Le{constructor(e,t,s,n,i){this.schema=null,this.engine=e,this.name=t,this.executor=s,this.onWrite=n,this.onHooks=i}async getSchema(){if(!this.schema){const e=await this.engine.getTableSchema(this.name);if(!e)throw new n(`Table "${this.name}" does not exist`,"TABLE_NOT_FOUND");this.schema=e}return this.schema}async insert(e){await(this.onHooks?.("beforeInsert",[[e]]));const t=await this.engine.insert(this.name,[e]);return this.onWrite?.(this.name),await(this.onHooks?.("afterInsert",[[e],t])),t[0]}async insertMany(e){await(this.onHooks?.("beforeInsert",[e]));const t=await this.engine.insert(this.name,e);return this.onWrite?.(this.name),await(this.onHooks?.("afterInsert",[e,t])),t}select(e=["*"]){return new Ce(this.engine,this.name,e,this.executor)}async stream(e,t={}){if("function"!=typeof this.engine.findStream){const s=await this.engine.find(this.name,{table:this.name,where:t.where,limit:t.limit,offset:t.offset,columns:t.columns});for(const t of s)e(t);return s.length}return this.engine.findStream(this.name,{table:this.name,where:t.where,limit:t.limit,offset:t.offset,columns:t.columns},e)}update(e){return new Oe(this.engine,this.name,e,this.onWrite,this.onHooks)}delete(){return new Ne(this.engine,this.name,this.onWrite,this.onHooks)}async count(e){return this.engine.count(this.name,e?{table:this.name,where:e}:void 0)}async clear(){await this.engine.clear(this.name),this.onWrite?.(this.name)}async drop(){await this.engine.dropTable(this.name),this.onWrite?.(this.name)}}function ve(e){switch(e.type){case"SELECT":return function(e){return{table:e.from,columns:e.columns,where:e.where,orderBy:e.orderBy?.length?e.orderBy:void 0,limit:e.limit,offset:e.offset}}(e);case"DELETE":return function(e){return{table:e.from,where:e.where}}(e);case"UPDATE":return function(e){return{table:e.table,where:e.where}}(e);default:throw new n(`Cannot compile statement type "${e.type}" to QueryPlan`,"COMPILE_ERROR")}}var $e;!function(e){e.SELECT="SELECT",e.FROM="FROM",e.WHERE="WHERE",e.INSERT="INSERT",e.INTO="INTO",e.VALUES="VALUES",e.UPDATE="UPDATE",e.SET="SET",e.DELETE="DELETE",e.CREATE="CREATE",e.TABLE="TABLE",e.DROP="DROP",e.ORDER="ORDER",e.BY="BY",e.ASC="ASC",e.DESC="DESC",e.LIMIT="LIMIT",e.OFFSET="OFFSET",e.AND="AND",e.OR="OR",e.NOT="NOT",e.LIKE="LIKE",e.IN="IN",e.PRIMARY="PRIMARY",e.KEY="KEY",e.UNIQUE="UNIQUE",e.DEFAULT="DEFAULT",e.NULL="NULL",e.TRUE="TRUE",e.REFERENCES="REFERENCES",e.CASCADE="CASCADE",e.BETWEEN="BETWEEN",e.IF="IF",e.EXISTS="EXISTS",e.FALSE="FALSE",e.ALTER="ALTER",e.ADD="ADD",e.TRUNCATE="TRUNCATE",e.INNER="INNER",e.LEFT="LEFT",e.RIGHT="RIGHT",e.CROSS="CROSS",e.JOIN="JOIN",e.ON="ON",e.AS="AS",e.OUTER="OUTER",e.GROUP="GROUP",e.HAVING="HAVING",e.COUNT="COUNT",e.SUM="SUM",e.AVG="AVG",e.MIN="MIN",e.MAX="MAX",e.DISTINCT="DISTINCT",e.BEGIN="BEGIN",e.COMMIT="COMMIT",e.ROLLBACK="ROLLBACK",e.UNION="UNION",e.ALL="ALL",e.INDEX="INDEX",e.CASE="CASE",e.WHEN="WHEN",e.THEN="THEN",e.ELSE="ELSE",e.END="END",e.EXPLAIN="EXPLAIN",e.ANALYZE="ANALYZE",e.REINDEX="REINDEX",e.VACUUM="VACUUM",e.SAVEPOINT="SAVEPOINT",e.RELEASE="RELEASE",e.TO="TO",e.IDENTIFIER="IDENTIFIER",e.STRING="STRING",e.NUMBER="NUMBER",e.COMMA="COMMA",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.SEMICOLON="SEMICOLON",e.EQ="EQ",e.NEQ="NEQ",e.GT="GT",e.GTE="GTE",e.LT="LT",e.LTE="LTE",e.STAR="STAR",e.DOT="DOT",e.EOF="EOF",e.ILLEGAL="ILLEGAL"}($e||($e={}));const De={SELECT:$e.SELECT,FROM:$e.FROM,WHERE:$e.WHERE,INSERT:$e.INSERT,INTO:$e.INTO,VALUES:$e.VALUES,UPDATE:$e.UPDATE,SET:$e.SET,DELETE:$e.DELETE,CREATE:$e.CREATE,TABLE:$e.TABLE,DROP:$e.DROP,ORDER:$e.ORDER,BY:$e.BY,ASC:$e.ASC,DESC:$e.DESC,LIMIT:$e.LIMIT,OFFSET:$e.OFFSET,AND:$e.AND,OR:$e.OR,NOT:$e.NOT,LIKE:$e.LIKE,IN:$e.IN,PRIMARY:$e.PRIMARY,KEY:$e.KEY,UNIQUE:$e.UNIQUE,DEFAULT:$e.DEFAULT,NULL:$e.NULL,TRUE:$e.TRUE,FALSE:$e.FALSE,REFERENCES:$e.REFERENCES,CASCADE:$e.CASCADE,BETWEEN:$e.BETWEEN,IF:$e.IF,EXISTS:$e.EXISTS,ALTER:$e.ALTER,ADD:$e.ADD,TRUNCATE:$e.TRUNCATE,INNER:$e.INNER,LEFT:$e.LEFT,RIGHT:$e.RIGHT,CROSS:$e.CROSS,JOIN:$e.JOIN,ON:$e.ON,AS:$e.AS,OUTER:$e.OUTER,GROUP:$e.GROUP,HAVING:$e.HAVING,COUNT:$e.COUNT,SUM:$e.SUM,AVG:$e.AVG,MIN:$e.MIN,MAX:$e.MAX,DISTINCT:$e.DISTINCT,BEGIN:$e.BEGIN,COMMIT:$e.COMMIT,ROLLBACK:$e.ROLLBACK,UNION:$e.UNION,ALL:$e.ALL,INDEX:$e.INDEX,CASE:$e.CASE,WHEN:$e.WHEN,THEN:$e.THEN,ELSE:$e.ELSE,END:$e.END,EXPLAIN:$e.EXPLAIN,ANALYZE:$e.ANALYZE,REINDEX:$e.REINDEX,VACUUM:$e.VACUUM,SAVEPOINT:$e.SAVEPOINT,RELEASE:$e.RELEASE,TO:$e.TO};class Ue{constructor(e){this.position=0,this.readPosition=0,this.ch="",this.input=e,this.readChar()}nextToken(){let e;switch(this.skipWhitespace(),this.ch){case",":e=this.makeToken($e.COMMA,",");break;case"(":e=this.makeToken($e.LPAREN,"(");break;case")":e=this.makeToken($e.RPAREN,")");break;case";":e=this.makeToken($e.SEMICOLON,";");break;case"*":e=this.makeToken($e.STAR,"*");break;case".":e=this.makeToken($e.DOT,".");break;case"=":e=this.makeToken($e.EQ,"=");break;case"!":"="===this.peekChar()?(this.readChar(),e=this.makeToken($e.NEQ,"!=")):e=this.makeToken($e.ILLEGAL,"!");break;case">":"="===this.peekChar()?(this.readChar(),e=this.makeToken($e.GTE,">=")):e=this.makeToken($e.GT,">");break;case"<":"="===this.peekChar()?(this.readChar(),e=this.makeToken($e.LTE,"<=")):">"===this.peekChar()?(this.readChar(),e=this.makeToken($e.NEQ,"<>")):e=this.makeToken($e.LT,"<");break;case"'":case'"':e=this.readString(this.ch);break;case"":e={type:$e.EOF,value:"",position:this.position};break;default:if("-"===this.ch&&"-"===this.peekChar())return this.skipLineComment(),this.nextToken();if("/"===this.ch&&"*"===this.peekChar())return this.skipBlockComment(),this.nextToken();if(this.isLetter(this.ch)){const t=this.readIdentifier();return e={type:De[t.toUpperCase()]??$e.IDENTIFIER,value:t,position:this.position-t.length},e}if(this.isDigit(this.ch)||"-"===this.ch&&this.isDigit(this.peekChar())){const t=this.readNumber();return e={type:$e.NUMBER,value:t,position:this.position-t.length},e}e=this.makeToken($e.ILLEGAL,this.ch)}return this.readChar(),e}readChar(){this.readPosition>=this.input.length?this.ch="":this.ch=this.input[this.readPosition],this.position=this.readPosition,this.readPosition++}peekChar(){return this.readPosition>=this.input.length?"":this.input[this.readPosition]}skipWhitespace(){for(;" "===this.ch||"\t"===this.ch||"\n"===this.ch||"\r"===this.ch;)this.readChar()}skipLineComment(){for(;"\n"!==this.ch&&"\r"!==this.ch&&""!==this.ch;)this.readChar()}skipBlockComment(){for(this.readChar(),this.readChar();""!==this.ch&&("*"!==this.ch||"/"!==this.peekChar());)this.readChar();""!==this.ch&&(this.readChar(),this.readChar())}readIdentifier(){const e=this.position;for(;this.isLetter(this.ch)||this.isDigit(this.ch)||"_"===this.ch;)this.readChar();return this.input.slice(e,this.position)}readNumber(){const e=this.position;for("-"===this.ch&&this.readChar();this.isDigit(this.ch);)this.readChar();if("."===this.ch&&this.isDigit(this.peekChar()))for(this.readChar();this.isDigit(this.ch);)this.readChar();return this.input.slice(e,this.position)}readString(e){const t=this.position+1;this.readChar();let s="";for(;""!==this.ch;){if(this.ch===e){if(this.peekChar()===e){s+=e,this.readChar(),this.readChar();continue}break}"\\"!==this.ch||this.peekChar()!==e?(s+=this.ch,this.readChar()):(this.readChar(),s+=e,this.readChar())}if(""===this.ch)throw new n(`Unterminated string literal at position ${t}`,"PARSE_ERROR");return{type:$e.STRING,value:s,position:t}}isLetter(e){return/[a-zA-Z_]/.test(e)}isDigit(e){return/[0-9]/.test(e)}makeToken(e,t){return{type:e,value:t,position:this.position}}}class _e{constructor(e){this.sql=e,this.lexer=new Ue(e),this.nextToken(),this.nextToken()}parseStatement(){switch(this.curToken.type){case $e.SELECT:return this.parseSelect();case $e.INSERT:return this.parseInsert();case $e.UPDATE:return this.parseUpdate();case $e.DELETE:return this.parseDelete();case $e.CREATE:return this.parseCreateStatement();case $e.DROP:return this.parseDropStatement();case $e.ALTER:return this.parseAlterTable();case $e.TRUNCATE:return this.parseTruncateTable();case $e.BEGIN:return this.parseBegin();case $e.COMMIT:return this.parseCommit();case $e.ROLLBACK:return this.parseRollback();case $e.EXPLAIN:return this.parseExplain();case $e.ANALYZE:return this.parseAnalyze();case $e.REINDEX:return this.parseReindex();case $e.VACUUM:return this.parseVacuum();case $e.SAVEPOINT:case $e.RELEASE:return this.parseSavepoint();default:throw this.error(`Unexpected token "${this.curToken.value}"`)}}parseAllStatements(){const e=[];for(;!this.curTokenIs($e.EOF);){for(;this.curTokenIs($e.SEMICOLON);)this.nextToken();if(this.curTokenIs($e.EOF))break;if(e.push(this.parseStatement()),this.curTokenIs($e.SEMICOLON))this.nextToken();else if(!this.curTokenIs($e.EOF))throw this.error(`Expected ';' after statement, got "${this.curToken.value}"`)}return e}parseExplain(){if(this.expect($e.EXPLAIN),this.curTokenIs($e.EXPLAIN))throw this.error("Nested EXPLAIN is not allowed");return{type:"EXPLAIN",query:this.parseStatement()}}parseAnalyze(){return this.expect($e.ANALYZE),this._isKeywordAsIdent()&&"TABLE"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ANALYZE",table:this.expectIdentifier("table name")}}parseReindex(){return this.expect($e.REINDEX),this._isKeywordAsIdent()&&"TABLE"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"REINDEX",table:this.expectIdentifier("table name")}}parseVacuum(){return this.expect($e.VACUUM),{type:"VACUUM"}}parseSavepoint(){let e;return this.curTokenIs($e.RELEASE)?(e="RELEASE",this.nextToken()):(e="SAVE",this.expect($e.SAVEPOINT)),this.curTokenIs($e.SAVEPOINT)&&this.nextToken(),{type:"SAVEPOINT",name:this.expectIdentifier("savepoint name"),action:e}}parseBegin(){return this.expect($e.BEGIN),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"BEGIN"}}parseCommit(){return this.expect($e.COMMIT),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"COMMIT"}}parseRollback(){return this.expect($e.ROLLBACK),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()?(this.nextToken(),{type:"ROLLBACK"}):this.curTokenIs($e.TO)||this._isKeywordAsIdent()&&"TO"===this.curToken.value.toUpperCase()?(this.nextToken(),(this.curTokenIs($e.SAVEPOINT)||this._isKeywordAsIdent()&&"SAVEPOINT"===this.curToken.value.toUpperCase())&&this.nextToken(),{type:"SAVEPOINT",name:this.expectIdentifier("savepoint name"),action:"ROLLBACK"}):{type:"ROLLBACK"}}parseCreateStatement(){if(this.expect($e.CREATE),this.curTokenIs($e.TABLE))return this.parseCreateTable();if(this.curTokenIs($e.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())return this.parseCreateIndex();if(this.curTokenIs($e.UNIQUE)&&(this.nextToken(),this.curTokenIs($e.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())){const e=this.parseCreateIndex();return e.unique=!0,e}throw this.error(`Expected TABLE or INDEX after CREATE, got "${this.curToken.value}"`)}parseCreateIndex(){this.expect($e.INDEX);const e=this.expectIdentifier("index name");this.expect($e.ON);const t=this.expectIdentifier("table name");this.expect($e.LPAREN);const s=this.expectIdentifier("column name");return this.expect($e.RPAREN),{type:"CREATE_INDEX",name:e,table:t,column:s}}parseDropStatement(){if(this.expect($e.DROP),this.curTokenIs($e.TABLE))return this.parseDropTable();if(this.curTokenIs($e.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())return this.parseDropIndex();throw this.error(`Expected TABLE or INDEX after DROP, got "${this.curToken.value}"`)}parseDropIndex(){this.expect($e.INDEX);const e=this.expectIdentifier("index name");let t="",s="";return this.curTokenIs($e.ON)&&(this.nextToken(),t=this.expectIdentifier("table name"),this.curTokenIs($e.LPAREN)&&(this.nextToken(),s=this.expectIdentifier("column name"),this.expect($e.RPAREN))),{type:"DROP_INDEX",name:e,table:t,column:s}}parseSelect(){this.expect($e.SELECT);let e=!1;this.curTokenIs($e.DISTINCT)&&(e=!0,this.nextToken());const t=[];if(this.curTokenIs($e.STAR))for(t.push("*"),this.nextToken();this.curTokenIs($e.COMMA);)this.nextToken(),t.push(this.parseColumnWithAlias());else t.push(...this.parseColumnList());let s,n,i="";this.curTokenIs($e.FROM)&&(this.nextToken(),this.curTokenIs($e.LPAREN)?(this.nextToken(),s=this.parseSelect(),this.expect($e.RPAREN),this.curTokenIs($e.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type!==$e.IDENTIFIER||this._isReservedAfterFrom()||(n=this.curToken.value,this.nextToken())):(i=this.expectIdentifier("table name"),this.curTokenIs($e.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type!==$e.IDENTIFIER||this._isReservedAfterFrom()||(n=this.curToken.value,this.nextToken())));const r={type:"SELECT",columns:t,distinct:e||void 0,from:i,alias:n,where:{}};s&&(r.fromSubquery=s);const a=this.parseJoinClauses();return a.length>0&&(r.joins=a),this.curTokenIs($e.WHERE)&&(this.nextToken(),r.where=this.parseCondition()),this.curTokenIs($e.GROUP)&&(this.nextToken(),this.expect($e.BY),r.groupBy=this.parseIdentifierList()),this.curTokenIs($e.HAVING)&&(this.nextToken(),r.having=this.parseCondition()),this.curTokenIs($e.ORDER)&&(this.nextToken(),this.expect($e.BY),r.orderBy=this.parseOrderByList()),this.curTokenIs($e.LIMIT)&&(this.nextToken(),r.limit=this.expectNumber("LIMIT value")),this.curTokenIs($e.OFFSET)&&(this.nextToken(),r.offset=this.expectNumber("OFFSET value")),this.curTokenIs($e.UNION)?this.parseUnion(r):r}parseUnion(e){this.expect($e.UNION);let t=!1;this.curTokenIs($e.ALL)&&(t=!0,this.nextToken());const s={type:"SELECT_UNION",left:e,right:this.parseSelect(),all:t||void 0};return this.curTokenIs($e.UNION)?this.parseUnionChain(s):s}parseUnionChain(e){this.expect($e.UNION);let t=!1;this.curTokenIs($e.ALL)&&(t=!0,this.nextToken());const s={type:"SELECT_UNION",left:e,right:this.parseSelect(),all:t||void 0};return this.curTokenIs($e.UNION)?this.parseUnionChain(s):s}parseJoinClauses(){const e=[];for(;this._isJoinKeyword();)e.push(this.parseJoinClause());return e}_isJoinKeyword(){return this.curTokenIs($e.INNER)||this.curTokenIs($e.LEFT)||this.curTokenIs($e.RIGHT)||this.curTokenIs($e.CROSS)||this.curTokenIs($e.JOIN)}parseJoinClause(){let e="INNER";this.curTokenIs($e.INNER)?(e="INNER",this.nextToken()):this.curTokenIs($e.LEFT)?(e="LEFT",this.nextToken(),this.curTokenIs($e.OUTER)&&this.nextToken()):this.curTokenIs($e.RIGHT)?(e="RIGHT",this.nextToken(),this.curTokenIs($e.OUTER)&&this.nextToken()):this.curTokenIs($e.CROSS)&&(e="CROSS",this.nextToken()),this.expect($e.JOIN);const t=this.expectIdentifier("table name");let s;this.curTokenIs($e.AS)?(this.nextToken(),s=this.expectIdentifier("alias")):this.curToken.type!==$e.IDENTIFIER||this._isJoinReserved()||(s=this.curToken.value,this.nextToken());let n={};return"CROSS"!==e&&this.curTokenIs($e.ON)&&(this.nextToken(),n=this.parseCondition()),{type:e,table:t,alias:s,on:n}}_isReservedAfterFrom(){return this.curTokenIs($e.WHERE)||this.curTokenIs($e.ORDER)||this.curTokenIs($e.LIMIT)||this.curTokenIs($e.OFFSET)||this.curTokenIs($e.GROUP)||this._isJoinKeyword()}_isJoinReserved(){return this.curTokenIs($e.ON)||this.curTokenIs($e.WHERE)||this.curTokenIs($e.ORDER)||this.curTokenIs($e.LIMIT)||this._isJoinKeyword()}parseInsert(){this.expect($e.INSERT),this.expect($e.INTO);const e=this.expectIdentifier("table name");let t;if(this.curTokenIs($e.LPAREN)&&(this.nextToken(),t=this.parseIdentifierList(),this.expect($e.RPAREN)),this.curTokenIs($e.SELECT))return{type:"INSERT",into:e,columns:t,select:this.parseSelect()};this.expect($e.VALUES);const s=[];do{this.curTokenIs($e.COMMA)&&this.nextToken(),this.expect($e.LPAREN);const e=this.parseValueList();this.expect($e.RPAREN),s.push(e)}while(this.curTokenIs($e.COMMA));return{type:"INSERT",into:e,columns:t,values:s}}parseUpdate(){this.expect($e.UPDATE);const e=this.expectIdentifier("table name");this.expect($e.SET);const t={};do{this.curTokenIs($e.COMMA)&&this.nextToken();const e=this.expectIdentifier("column name");this.expect($e.EQ),t[e]=this.parseValue()}while(this.curTokenIs($e.COMMA));let s={};return this.curTokenIs($e.WHERE)&&(this.nextToken(),s=this.parseCondition()),{type:"UPDATE",table:e,sets:t,where:s}}parseDelete(){this.expect($e.DELETE),this.expect($e.FROM);const e=this.expectIdentifier("table name");let t={};return this.curTokenIs($e.WHERE)&&(this.nextToken(),t=this.parseCondition()),{type:"DELETE",from:e,where:t}}parseCreateTable(){this.expect($e.TABLE);let e=!1;this.curTokenIs($e.IF)&&(this.nextToken(),this.expect($e.NOT),this.expect($e.EXISTS),e=!0);const t=this.expectIdentifier("table name");this.expect($e.LPAREN);const s=[];do{this.curTokenIs($e.COMMA)&&this.nextToken(),s.push(this.parseColumnDef())}while(this.curTokenIs($e.COMMA));return this.expect($e.RPAREN),{type:"CREATE_TABLE",name:t,columns:s,ifNotExists:e||void 0}}parseColumnDef(){const e={name:this.expectIdentifier("column name"),type:this.expectIdentifier("column type").toLowerCase()};for(;this.curTokenIs($e.PRIMARY)||this.curTokenIs($e.UNIQUE)||this.curTokenIs($e.NOT)||this.curTokenIs($e.DEFAULT)||this.curTokenIs($e.REFERENCES);)if(this.curTokenIs($e.PRIMARY))this.nextToken(),this.expect($e.KEY),e.primaryKey=!0;else if(this.curTokenIs($e.UNIQUE))this.nextToken(),e.unique=!0;else if(this.curTokenIs($e.NOT))this.nextToken(),this.expect($e.NULL),e.required=!0;else if(this.curTokenIs($e.DEFAULT))this.nextToken(),e.default=this.parseValue();else{if(!this.curTokenIs($e.REFERENCES))break;{this.nextToken();const t=this.expectIdentifier("referenced table");this.expect($e.LPAREN);const s=this.expectIdentifier("referenced column");for(this.expect($e.RPAREN),e.references=`${t}.${s}`;this.curTokenIs($e.ON);)if(this.nextToken(),this.curTokenIs($e.DELETE))this.nextToken(),e.onDelete=this.parseCascadeAction();else{if(!this.curTokenIs($e.UPDATE))break;this.nextToken(),e.onUpdate=this.parseCascadeAction()}}}return e}parseCascadeAction(){return this.curTokenIs($e.CASCADE)?(this.nextToken(),"CASCADE"):this.curTokenIs($e.SET)?(this.nextToken(),this.expect($e.NULL),"SET NULL"):this.curToken.type===$e.IDENTIFIER&&"RESTRICT"===this.curToken.value.toUpperCase()?(this.nextToken(),"RESTRICT"):"RESTRICT"}parseAlterTable(){this.expect($e.ALTER),this.expect($e.TABLE);const e=this.expectIdentifier("table name");let t;if(this.curTokenIs($e.ADD))return t="ADD",this.nextToken(),this.curToken.type===$e.IDENTIFIER&&"COLUMN"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ALTER_TABLE",name:e,action:t,column:this.parseColumnDef()};if(this.curTokenIs($e.DROP)||this._isKeywordAsIdent()&&"DROP"===this.curToken.value.toUpperCase())return t="DROP",this.nextToken(),this.curToken.type===$e.IDENTIFIER&&"COLUMN"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ALTER_TABLE",name:e,action:t,column:{name:this.expectIdentifier("column name"),type:"string"}};throw this.error("Expected ADD or DROP in ALTER TABLE")}parseTruncateTable(){return this.expect($e.TRUNCATE),this.expect($e.TABLE),{type:"TRUNCATE_TABLE",name:this.expectIdentifier("table name")}}parseDropTable(){this.expect($e.TABLE);let e=!1;return this.curTokenIs($e.IF)&&(this.nextToken(),this.expect($e.EXISTS),e=!0),{type:"DROP_TABLE",name:this.expectIdentifier("table name"),ifExists:e||void 0}}parseCondition(){let e=this.parseSimpleCondition();for(;this.curTokenIs($e.AND)||this.curTokenIs($e.OR);){const t=this.curTokenIs($e.AND);this.nextToken();const s=this.parseSimpleCondition();e=t?{$and:[e,s]}:{$or:[e,s]}}return e}parseWhere(){return this.parseCondition()}parseSimpleCondition(){if(this.curTokenIs($e.EXISTS)||this._isKeywordAsIdent()&&"EXISTS"===this.curToken.value.toUpperCase())return this.nextToken(),this.parseExistsCondition(!1);if(this.curTokenIs($e.NOT)&&this._peekIsExists())return this.nextToken(),this.nextToken(),this.parseExistsCondition(!0);if(this.curTokenIs($e.NOT)&&!this._isNotInOrLike())return this.nextToken(),{$not:this.parseSimpleCondition()};if(this.curTokenIs($e.LPAREN)){this.nextToken();const e=this.parseCondition();return this.expect($e.RPAREN),e}const e=this.parseColumnRef();if(this.curTokenIs($e.IDENTIFIER)&&"IS"===this.curToken.value.toUpperCase()){this.nextToken();const t=this.curTokenIs($e.NOT);t&&this.nextToken(),this.expect($e.NULL);const s={};return s[e]=t?{$ne:null}:{$eq:null},s}if(this.curTokenIs($e.BETWEEN)){this.nextToken();const t=this.parseValue();this.expect($e.AND);const s=this.parseValue(),n={};return n[e]={$gte:t,$lte:s},n}if(this.curTokenIs($e.NOT)&&this.peekTokenIs($e.BETWEEN)){this.nextToken(),this.nextToken();const t=this.parseValue();this.expect($e.AND);const s=this.parseValue(),n={};return n[e]={$not:{$gte:t,$lte:s}},n}if(this.curTokenIs($e.NOT)){if(this.peekTokenIs($e.IN)){if(this.nextToken(),this.nextToken(),this.expect($e.LPAREN),this.curTokenIs($e.SELECT)){const t=this.parseSelect();this.expect($e.RPAREN);const s={};return s[e]={$nin:{$subquery:t}},s}const t=this.parseValueList();this.expect($e.RPAREN);const s={};return s[e]={$nin:t},s}if(this.peekTokenIs($e.LIKE)){this.nextToken(),this.nextToken();const t=this.parseValue(),s={};return s[e]={$not:{$like:t}},s}}if(this.curTokenIs($e.LIKE)){this.nextToken();const t=this.parseValue(),s={};return s[e]={$like:t},s}if(this.curTokenIs($e.IN)){if(this.nextToken(),this.expect($e.LPAREN),this.curTokenIs($e.SELECT)){const t=this.parseSelect();this.expect($e.RPAREN);const s={};return s[e]={$in:{$subquery:t}},s}const t=this.parseValueList();this.expect($e.RPAREN);const s={};return s[e]={$in:t},s}if(this.curTokenIs($e.AND)||this.curTokenIs($e.OR)||this.curTokenIs($e.RPAREN)||this.curTokenIs($e.EOF)||this.curToken.type===$e.IDENTIFIER&&["THEN","END","ELSE","NULLS","LIMIT","OFFSET","ORDER","GROUP","HAVING","UNION","WHERE"].includes(this.curToken.value.toUpperCase())){const t={};return t[e]={$eq:!0},t}const t=this.parseComparisonOp();if(this.curTokenIs($e.LPAREN)&&this.peekTokenIs($e.SELECT)){this.nextToken();const s=this.parseSelect();this.expect($e.RPAREN);const n={};return n[e]={[t]:{$subquery:s}},n}let s;s=(this.curToken.type===$e.IDENTIFIER||this._isKeywordAsIdent())&&this.peekTokenIs($e.DOT)?{$col:this.parseColumnRef()}:this.parseValue();const n={};return n[e]={[t]:s},n}parseExistsCondition(e){this.expect($e.LPAREN);const t=this.parseSelect();return this.expect($e.RPAREN),{$exists:{$subquery:t,$negate:e||void 0}}}_peekIsExists(){return this.peekToken.type===$e.EXISTS||this.peekToken.type===$e.IDENTIFIER&&"EXISTS"===this.peekToken.value.toUpperCase()}_isNotInOrLike(){return this.peekTokenIs($e.IN)||this.peekTokenIs($e.LIKE)}peekTokenIs(e){return this.peekToken.type===e}parseComparisonOp(){switch(this.curToken.type){case $e.EQ:return this.nextToken(),"$eq";case $e.NEQ:return this.nextToken(),"$ne";case $e.GT:return this.nextToken(),"$gt";case $e.GTE:return this.nextToken(),"$gte";case $e.LT:return this.nextToken(),"$lt";case $e.LTE:return this.nextToken(),"$lte";default:throw this.error(`Expected comparison operator, got "${this.curToken.value}"`)}}parseColumnList(){const e=[];for(e.push(this.parseColumnWithAlias());this.curTokenIs($e.COMMA);)this.nextToken(),e.push(this.parseColumnWithAlias());return e}parseColumnWithAlias(){let e=this.parseColumnRef();if(this.curTokenIs($e.AS))this.nextToken(),e=`${e} AS ${this.expectIdentifier("alias")}`;else if(this.curToken.type===$e.IDENTIFIER&&!this._isReservedAfterFrom()&&!this._isJoinKeyword()){const t=this.curToken.value;this.nextToken(),e=`${e} AS ${t}`}return e}parseColumnRef(){if(this.curTokenIs($e.CASE))return this.parseCaseExpressionText();if(this.curTokenIs($e.NUMBER)){const e=this.curToken.value;return this.nextToken(),e}if(this.curTokenIs($e.STRING)){const e=this.curToken.value;return this.nextToken(),`'${e}'`}if(this.curTokenIs($e.COUNT)||this.curTokenIs($e.SUM)||this.curTokenIs($e.AVG)||this.curTokenIs($e.MIN)||this.curTokenIs($e.MAX))return this.parseAggregateCall();const e=this.expectIdentifier("column name");return this.curTokenIs($e.DOT)?(this.nextToken(),`${e}.${this.expectIdentifier("column name")}`):e}parseCaseExpressionText(){const e=this.curToken.position;this.nextToken();let t=1,s=e+4;for(;!this.curTokenIs($e.EOF)&&t>0&&(this.curTokenIs($e.CASE)&&t++,!this.curTokenIs($e.END)||(t--,s=this.curToken.position+3,this.nextToken(),0!==t));)s=this.curToken.position+this.curToken.value.length,this.nextToken();let n=this.sql.slice(e,s);return this.curTokenIs($e.AS)?(this.nextToken(),n+=` AS ${this.expectIdentifier("alias")}`):this.curToken.type!==$e.IDENTIFIER||this.curTokenIs($e.COMMA)||this._isReservedAfterFrom()||(n+=` AS ${this.curToken.value}`,this.nextToken()),n}parseAggregateCall(){const e=this.curToken.value.toUpperCase();this.nextToken(),this.expect($e.LPAREN);let t,s=!1;this.curTokenIs($e.DISTINCT)&&(s=!0,this.nextToken()),this.curTokenIs($e.STAR)?(t="*",this.nextToken()):t=this.parseColumnRef(),this.expect($e.RPAREN);let n="";this.curTokenIs($e.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type===$e.IDENTIFIER&&this._isAggregateAlias()&&(n=this.curToken.value,this.nextToken());const i=s?`DISTINCT ${t}`:t;return n?`${e}(${i}) AS ${n}`:`${e}(${i})`}_isAggregateAlias(){return!this._isReservedAfterFrom()&&!this._isJoinKeyword()}parseIdentifierList(){const e=[];for(e.push(this.parseIdentifierWithDot());this.curTokenIs($e.COMMA);)this.nextToken(),e.push(this.parseIdentifierWithDot());return e}parseValueList(){const e=[];for(e.push(this.parseValue());this.curTokenIs($e.COMMA);)this.nextToken(),e.push(this.parseValue());return e}parseOrderByList(){const e=[];for(e.push(this.parseOrderBy());this.curTokenIs($e.COMMA);)this.nextToken(),e.push(this.parseOrderBy());return e}parseOrderBy(){const e=this.parseIdentifierWithDot();let t,s="asc";return this.curTokenIs($e.ASC)?this.nextToken():this.curTokenIs($e.DESC)&&(s="desc",this.nextToken()),this.curTokenIs($e.IDENTIFIER)&&"NULLS"===this.curToken.value.toUpperCase()&&(this.nextToken(),this.curTokenIs($e.IDENTIFIER)&&"FIRST"===this.curToken.value.toUpperCase()?(t="first",this.nextToken()):this.curTokenIs($e.IDENTIFIER)&&"LAST"===this.curToken.value.toUpperCase()&&(t="last",this.nextToken())),{column:e,direction:s,...t?{nulls:t}:{}}}parseIdentifierWithDot(){const e=this.expectIdentifier("identifier");return this.curTokenIs($e.DOT)?(this.nextToken(),`${e}.${this.expectIdentifier("identifier")}`):e}parseValue(){switch(this.curToken.type){case $e.STRING:{const e=this.curToken.value;return this.nextToken(),e}case $e.NUMBER:{const e=Number(this.curToken.value);return this.nextToken(),e}case $e.TRUE:return this.nextToken(),!0;case $e.FALSE:return this.nextToken(),!1;case $e.NULL:return this.nextToken(),null;default:throw this.error(`Expected value, got "${this.curToken.value}"`)}}nextToken(){this.curToken=this.peekToken,this.peekToken=this.lexer.nextToken()}curTokenIs(e){return this.curToken.type===e}expect(e){if(!this.curTokenIs(e))throw this.error(`Expected ${e}, got "${this.curToken.value}"`);this.nextToken()}expectIdentifier(e){if(this.curToken.type===$e.IDENTIFIER||this._isKeywordAsIdent()){const e=this.curToken.value;return this.nextToken(),e}throw this.error(`Expected ${e}, got "${this.curToken.value}"`)}_isKeywordAsIdent(){return this.curToken.type!==$e.EOF&&this.curToken.type!==$e.ILLEGAL&&this.curToken.type!==$e.STRING&&this.curToken.type!==$e.NUMBER&&this.curToken.type!==$e.COMMA&&this.curToken.type!==$e.LPAREN&&this.curToken.type!==$e.RPAREN&&this.curToken.type!==$e.SEMICOLON&&this.curToken.type!==$e.EQ&&this.curToken.type!==$e.NEQ&&this.curToken.type!==$e.GT&&this.curToken.type!==$e.GTE&&this.curToken.type!==$e.LT&&this.curToken.type!==$e.LTE&&this.curToken.type!==$e.DOT&&this.curToken.type!==$e.STAR}expectNumber(e){if(this.curToken.type===$e.NUMBER){const e=Number(this.curToken.value);return this.nextToken(),e}throw this.error(`Expected ${e}, got "${this.curToken.value}"`)}error(e){return new n(`Parse error at position ${this.curToken.position}: ${e}`,"PARSE_ERROR")}}function Me(e){return new _e(e).parseAllStatements()}function Pe(e){return new _e(e).parseWhere()}function Be(e){return null===e?"n":void 0===e?"u":"string"==typeof e?`s${e}`:"number"==typeof e?`d${e}`:"boolean"==typeof e?`b${e}`:"object"==typeof e?`o${JSON.stringify(e)}`:`x${String(e)}`}function Ke(e){const t=e.match(/^\s*CASE\s+([\s\S]*?)\s+END\s*(?:AS\s+(\w+))?\s*$/i);if(!t)return null;const s=t[1],n=t[2]??null,i=[],r=/WHEN\s+([\s\S]*?)\s+THEN\s+([\s\S]*?)(?=\s+WHEN\s+|\s+ELSE\s+|\s*$)/gi;let a;for(;null!==(a=r.exec(s));){let e=null;try{e=Pe(a[1].trim())}catch{}i.push({cond:e,value:a[2].trim()})}let o=null;const h=s.match(/\sELSE\s+([\s\S]*)$/i);return h&&(o=h[1].trim()),{whens:i,elseValue:o,alias:n}}function qe(e,t){const s=e.trim();if("null"===s)return null;if("true"===s)return!0;if("false"===s)return!1;const n=Number(s);if(""!==s&&!isNaN(n))return n;const i=s.match(/^'(.*)'$/s)||s.match(/^"(.*)"$/s);return i?i[1]:/^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(s)?t[s]??null:s}function ze(e,t){for(const{cond:s,value:n}of e.whens)if(s&&o(t,s))return qe(n,t);return null!==e.elseValue?qe(e.elseValue,t):null}class Fe{constructor(e,t=0){this.engine=e,this.maxRowsPerQuery=t}async execute(e){switch(e.type){case"SELECT":return this.executeSelect(e);case"SELECT_UNION":return this.executeSelectUnion(e);case"EXPLAIN":return this.executeExplain(e);case"INSERT":return this.executeInsert(e);case"UPDATE":return this.executeUpdate(e);case"DELETE":return this.executeDelete(e);case"CREATE_TABLE":return this.executeCreateTable(e);case"DROP_TABLE":return this.executeDropTable(e);case"ALTER_TABLE":return this.executeAlterTable(e);case"TRUNCATE_TABLE":return this.executeTruncateTable(e);case"CREATE_INDEX":return this.executeCreateIndex(e);case"DROP_INDEX":return this.executeDropIndex(e);case"BEGIN":return this.executeBegin();case"COMMIT":return this.executeCommit();case"ROLLBACK":return this.executeRollback();case"SAVEPOINT":return this.executeSavepoint(e);case"ANALYZE":return this.executeAnalyze(e);case"REINDEX":return this.executeReindex(e);case"VACUUM":return this.executeVacuum();default:throw new n("Unknown statement type","UNKNOWN_STATEMENT")}}async executeSelectUnion(e){const t=await this.executeSelectPart(e.left),s=await this.executeSelectPart(e.right),n=t.length>0?Object.keys(t[0]):[],i=t.map(e=>e);if(e.all){for(const e of s)i.push(this.projectUnionRow(e,n));return i}const r=new Set,a=[];for(const e of i){const t=Object.values(e).map(Be).join("");r.has(t)||(r.add(t),a.push(e))}for(const e of s){const t=this.projectUnionRow(e,n),s=Object.values(t).map(Be).join("");r.has(s)||(r.add(s),a.push(t))}return a}async executeSelectPart(e){return"SELECT_UNION"===e.type?this.executeSelectUnion(e):this.executeSelect(e)}projectUnionRow(e,t){if(0===t.length)return e;const s=Object.values(e),n={};for(let e=0;e0)try{const e=await this.engine.getTableSchema(r.table);if(e){const t=s=>{for(const[n,i]of Object.entries(s)){if("$and"===n){for(const e of i){const s=t(e);if(s)return s}continue}if("$or"===n||"$not"===n)continue;const s=e.columns[n];if(s){if(s.primaryKey)return"pk";if(s.index||s.unique)return`index:${n}`}}return null};a=t(r.where)??"none"}}catch{}return{type:e.query.type,table:r?.table,columns:r?.columns,where:r?.where||{},orderBy:r?.orderBy||[],limit:r?.limit,offset:r?.offset,usingIndex:a,estimatedRows:n,actualTimeMs:i}}async executeSelect(e){const t=!!(e.groupBy&&e.groupBy.length>0),s=!t&&this._hasAggregateColumn(e.columns);let n;const i=!!(e.joins&&e.joins.length>0),r=this.hasCaseColumn(e.columns)||!!e.where&&this.whereHasCase(e.where),a=this.orderByUsesSelectAlias(e),h=e.columns.some(e=>/\s+AS\s+\w+$/i.test(e));if(e.fromSubquery){const t=await this.executeSelectPart(e.fromSubquery);n=i?await this.executeJoinSelect(e,t.map(t=>this.prefixRow(t,e.alias??""))):t,!i&&e.where&&Object.keys(e.where).length>0&&(e.where=await this.resolveSubqueries(e.where),n=n.filter(t=>o(t,e.where)))}else if(e.from||i)if(i)n=await this.executeJoinSelect(e);else{e.where&&Object.keys(e.where).length>0&&(e.where=this.normalizeWhereColumns(e.where,[e.alias??e.from]));const i=[e.alias??e.from].filter(Boolean);if(e.orderBy&&e.orderBy.length>0&&(e.orderBy=e.orderBy.map(e=>({...e,column:this.stripAlias(e.column,i)}))),e.groupBy&&e.groupBy.length>0&&(e.groupBy=e.groupBy.map(e=>this.stripAlias(e,i))),e.columns=e.columns.map(e=>{if("*"===e||/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e)||/^\s*CASE\b/i.test(e)||/^'/.test(e))return e;const t=e.match(/^(.+?)\s+AS\s+(\w+)$/i);if(t){const s=this.stripAlias(t[1].trim(),i);return s===t[1].trim()?e:`${s} AS ${t[2]}`}return this.stripAlias(e,i)}),e.where&&this.hasCorrelatedRefs(e.where)){const i=ve(t||s?{...e,columns:["*"]}:e);i.columns=["*"],a&&(i.orderBy=void 0,i.limit=void 0,i.offset=void 0),n=await this.engine.find(i.table,{...i,where:this.stripCorrelatedExists(e.where)}),n=await this.filterCorrelated(n,e.where)}else{e.where&&Object.keys(e.where).length>0&&(e.where=await this.resolveSubqueries(e.where));const i=ve(t||s?{...e,columns:["*"]}:e);(r||h)&&(i.columns=["*"]),a&&(i.orderBy=void 0,i.limit=void 0,i.offset=void 0),n=await this.engine.find(i.table,i)}}else n=[{}];if(s&&(n=[this.computeSingleAggregate(n,e)]),t&&(n=this.executeGroupBy(n,e)),e.distinct&&(n=this.executeDistinct(n)),e.having&&Object.keys(e.having).length>0){e.having=await this.resolveSubqueries(e.having);const t=e._aggAliasMap;if(t&&t.size>0){const s={};for(const[n,i]of Object.entries(e.having))s[t.get(n)??n]=i;e.having=s}n=n.filter(t=>o(t,e.having))}e.orderBy&&e.orderBy.length>0&&(n=l(n,e.orderBy)),t||s||!(e.columns.length>0)||1===e.columns.length&&"*"===e.columns[0]||(n=n.map(t=>this.projectRow(t,e.columns))),a&&e.orderBy&&e.orderBy.length>0&&(n=l(n,e.orderBy));const c=e.offset??0,u=e.limit??n.length;return n=n.slice(c,c+u),this.maxRowsPerQuery>0&&n.length>this.maxRowsPerQuery&&(n=n.slice(0,this.maxRowsPerQuery)),n}async executeJoinSelect(e,t){const s=e.alias??e.from;let n;if(t)n=t;else{const{pushable:t}=this.extractPushableWhere(e.where??{},s);n=(await this.engine.find(e.from,{table:e.from,where:Object.keys(t).length>0?t:void 0})).map(e=>this.prefixRow(e,s))}let i=n;for(const t of e.joins){const e=t.alias??t.table,n=await this.tryHashJoin(i,t,e,s);if(n){i=n;continue}const r=(await this.engine.find(t.table,{table:t.table})).map(t=>this.prefixRow(t,e));i=this.joinRows(i,r,t)}return e.where&&Object.keys(e.where).length>0&&(this.hasCorrelatedRefs(e.where)?i=await this.filterCorrelated(i,e.where):(e.where=await this.resolveSubqueries(e.where),i=i.filter(t=>o(t,e.where)))),i}prefixRow(e,t){const s={};for(const[n,i]of Object.entries(e))s[`${t}.${n}`]=i;return s}extractPushableWhere(e,t){const s={};if(!t)return{pushable:s};const n=`${t}.`;for(const[t,i]of Object.entries(e))t.startsWith(n)&&("object"==typeof i&&null!==i&&("$col"in i||"$subquery"in i||"$and"in i||"$or"in i||"$not"in i)||(s[t.slice(n.length)]=i));return{pushable:s}}async tryHashJoin(e,t,s,n){if("CROSS"===t.type||"RIGHT"===t.type)return null;const i=[],r=e=>{for(const[t,s]of Object.entries(e)){if("$and"===t){if(!s.every(r))return!1;continue}if("$or"===t||"$not"===t)return!1;let e=null;if("object"==typeof s&&null!==s){const t=s;"$eq"in t&&"object"==typeof t.$eq&&null!==t.$eq&&"$col"in t.$eq?e=String(t.$eq.$col):"$col"in t&&1===Object.keys(t).length&&(e=String(t.$col))}if(!e)return!1;const a=!!n&&t.startsWith(`${n}.`);i.push({leftCol:a?t:e,rightCol:a?e:t})}return!0};if(!r(t.on))return null;if(0===i.length)return null;const a=await this.engine.getTableSchema(t.table);if(!a)return null;const o=i.find(e=>{const t=e.rightCol.split(".").pop(),s=a.columns[t];return s&&(s.primaryKey||s.index||s.unique)});if(!o)return null;const h=o.rightCol.split(".").pop(),c=Array.from(new Set(e.map(e=>e[o.leftCol]).filter(e=>null!=e)));if(0===c.length)return null;const l=await this.engine.find(t.table,{table:t.table,where:{[h]:{$in:c}}}),u=new Map;for(const e of l){const t=i.map(t=>String(e[t.rightCol.split(".").pop()]??"\0")).join("");u.has(t)||u.set(t,[]),u.get(t).push(e)}const f={};for(const e of Object.keys(a.columns))f[e]=null;const d=[];for(const n of e){const e=i.map(e=>String(n[e.leftCol]??"\0")).join(""),r=u.get(e);if(r&&r.length>0)for(const e of r)d.push({...n,...this.prefixRow(e,s)});else"LEFT"===t.type&&d.push({...n,...this.prefixRow(f,s)})}return d}joinRows(e,t,s){if("CROSS"===s.type){const s=[];for(const n of e)for(const e of t)s.push({...n,...e});return s}const n=[];for(const i of e){let e=!1;for(const r of t){const t={...i,...r};o(t,s.on,{$col:!0})&&(n.push(t),e=!0)}if(!e&&"LEFT"===s.type){const e={};for(const s of Object.keys(t[0]??{}))e[s]=null;n.push({...i,...e})}}if("RIGHT"===s.type)for(const i of t)if(!e.some(e=>o({...e,...i},s.on,{$col:!0}))){const t={};for(const s of Object.keys(e[0]??{}))t[s]=null;n.push({...t,...i})}return n}executeGroupBy(e,t){const s=new Map;for(const n of e){const e=t.groupBy.map(e=>Be(n[e])).join("");s.has(e)||s.set(e,[]),s.get(e).push(n)}const n=[],i=new Map;for(const e of s.values()){const s={};for(const n of t.groupBy)s[n]=e[0][n];for(const n of t.columns){if("*"===n)continue;const r=n.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i);if(r){const[,t,a,o]=r,h=this.computeAggregate(t.toUpperCase(),e,a.trim()),c=`${t.toUpperCase()}(${a.trim()})`,l=o||n;l!==c&&i.set(c,l),s[l]=h}else if(/^\s*CASE\b/i.test(n)){const t=Ke(n);s[t?.alias??n]=t?ze(t,e[0]):null}else t.groupBy.includes(n)||(s[n]=e[0][n])}n.push(s)}return t._aggAliasMap=i,n}computeAggregate(e,t,s){const n=/^\s*CASE\b/i.test(s)?Ke(s):null,i=!n&&/^\s*DISTINCT\s+/i.test(s),r=i?s.replace(/^\s*DISTINCT\s+/i,"").trim():s,a=t.map(e=>n?ze(n,e):e[r]).filter(e=>null!=e);if("COUNT"===e)return"*"===r?t.length:i?new Set(a.map(e=>"object"==typeof e?JSON.stringify(e):String(e))).size:a.length;const o=a.map(Number),h=i?Array.from(new Set(o)):o;switch(e){case"SUM":return h.reduce((e,t)=>e+t,0);case"AVG":return 0===h.length?0:h.reduce((e,t)=>e+t,0)/h.length;case"MIN":return 0===h.length?0:Math.min(...h);case"MAX":return 0===h.length?0:Math.max(...h);default:return 0}}executeDistinct(e){const t=new Set;return e.filter(e=>{const s=Object.values(e).map(Be).join("");return!t.has(s)&&(t.add(s),!0)})}async executeInsert(e){const t=await this.engine.getTableSchema(e.into);if(!t)throw new n(`Table "${e.into}" does not exist`,"TABLE_NOT_FOUND");const s=e.columns??Object.keys(t.columns);if(e.select){const t=await this.executeSelectPart(e.select);let n=[];const i=e.select;if("SELECT"===i.type)if(i.columns&&i.columns.length>0&&"*"!==i.columns[0])n=i.columns.map(e=>e.split(".").pop());else if(i.from){const e=await this.engine.getTableSchema(i.from);n=e?Object.keys(e.columns):[]}0===n.length&&t.length>0&&(n=Object.keys(t[0]));const r=t.map(e=>{const t={};for(let i=0;i{const t={};for(let n=0;ne.primaryKey))throw new n(`Composite primary keys are not supported yet: table "${e.name}" already has a primary key column`,"SCHEMA_ERROR");if("function"==typeof this.engine.alterTable)return this.engine.alterTable(e.name,e.action,{...y(e.column),name:e.column.name});if("ADD"===e.action){if(t.columns[e.column.name])throw new n(`Column "${e.column.name}" already exists in table "${e.name}"`,"COLUMN_EXISTS");t.columns[e.column.name]=y(e.column)}else if("DROP"===e.action){if(!t.columns[e.column.name])throw new n(`Column "${e.column.name}" does not exist in table "${e.name}"`,"COLUMN_NOT_FOUND");delete t.columns[e.column.name];const s=await this.engine.find(e.name,{table:e.name}),i=e.column.name;for(const e of s)i in e&&delete e[i]}}}async executeTruncateTable(e){if(!await this.engine.hasTable(e.name))throw new n(`Table "${e.name}" does not exist`,"TABLE_NOT_FOUND");return this.engine.clear(e.name)}async executeCreateIndex(e){if(!await this.engine.hasTable(e.table))throw new n(`Table "${e.table}" does not exist`,"TABLE_NOT_FOUND");const t=await this.engine.getTableSchema(e.table);if(t&&!t.columns[e.column])throw new n(`Column "${e.column}" does not exist in table "${e.table}"`,"COLUMN_NOT_FOUND");if("function"!=typeof this.engine.createIndex)throw new n(`Engine "${this.engine.name}" does not support CREATE INDEX`,"NOT_SUPPORTED");return this.engine.createIndex(e.table,e.column,e.unique)}async executeDropIndex(e){if("function"!=typeof this.engine.dropIndex)throw new n(`Engine "${this.engine.name}" does not support DROP INDEX`,"NOT_SUPPORTED");return this.engine.dropIndex(e.table,e.column,e.name)}async executeBegin(){return this.engine.beginTransaction()}async executeCommit(){return this.engine.commitTransaction()}async executeRollback(){return this.engine.rollbackTransaction()}async executeSavepoint(e){const t=this.engine;if("SAVE"===e.action){if("function"!=typeof t.savepoint)throw new n(`Engine "${this.engine.name}" does not support SAVEPOINT`,"NOT_SUPPORTED");return t.savepoint(e.name)}if("ROLLBACK"===e.action){if("function"!=typeof t.rollbackToSavepoint)throw new n(`Engine "${this.engine.name}" does not support ROLLBACK TO SAVEPOINT`,"NOT_SUPPORTED");return t.rollbackToSavepoint(e.name)}if("function"!=typeof t.releaseSavepoint)throw new n(`Engine "${this.engine.name}" does not support RELEASE SAVEPOINT`,"NOT_SUPPORTED");return t.releaseSavepoint(e.name)}async executeAnalyze(e){const t=this.engine;if("function"!=typeof t.analyzeTable)throw new n(`Engine "${this.engine.name}" does not support ANALYZE`,"NOT_SUPPORTED");if(!await this.engine.hasTable(e.table))throw new n(`Table "${e.table}" does not exist`,"TABLE_NOT_FOUND");return t.analyzeTable(e.table)}async executeReindex(e){const t=this.engine;if("function"!=typeof t.reindexTable)throw new n(`Engine "${this.engine.name}" does not support REINDEX`,"NOT_SUPPORTED");if(!await this.engine.hasTable(e.table))throw new n(`Table "${e.table}" does not exist`,"TABLE_NOT_FOUND");return t.reindexTable(e.table)}async executeVacuum(){const e=this.engine;if("function"!=typeof e.vacuum)throw new n(`Engine "${this.engine.name}" does not support VACUUM`,"NOT_SUPPORTED");return e.vacuum()}hasCaseColumn(e){return e.some(e=>/^\s*CASE\b/i.test(e))}orderByUsesSelectAlias(e){if(!e.orderBy||0===e.orderBy.length)return!1;const t=new Set;for(const s of e.columns){const e=s.match(/\s+AS\s+(\w+)$/i);if(e)t.add(e[1]);else if(/^\s*CASE\b/i.test(s)){const e=Ke(s);e?.alias&&t.add(e.alias)}}return 0!==t.size&&e.orderBy.some(e=>t.has(e.column))}whereHasCase(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if(/^\s*CASE\b/i.test(t))return!0}else if(this.whereHasCase(s))return!0}else if(s.some(e=>this.whereHasCase(e)))return!0;return!1}getEngine(){return this.engine}projectRow(e,t){const s=[],n=[],i=[],r=[];let a=!1;for(const e of t){if("*"===e){a=!0;continue}const t=Ke(e);if(t){i.push({alias:t.alias??e,expr:t});continue}const o=e.match(/^(.+?)\s+AS\s+(\w+)$/i);if(o){n.push({alias:o[2],source:o[1].trim()});continue}const h=e.match(/^'(.*)'$/s);if(h){const t=h[1].replace(/''/g,"'");r.push({key:e,value:t});continue}s.push(e)}const o=a?{...e}:s.length>0?f(e,s):{};for(const{alias:t,source:s}of n)if("*"===s)Object.assign(o,e);else{const n=s.match(/^'(.*)'$/s);o[t]=n?n[1].replace(/''/g,"'"):e[s]}for(const{key:e,value:t}of r)o[e]=t;for(const{alias:t,expr:s}of i)o[t]=ze(s,e);return o}_hasAggregateColumn(e){return e.some(e=>/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e))}computeSingleAggregate(e,t){const s={};for(const n of t.columns){if("*"===n)continue;const t=n.match(/^(COUNT|SUM|AVG|MIN|MAX)\((.+?)\)(?:\s+AS\s+(\w+))?$/i);if(t){const[,i,r,a]=t;s[a||n]=this.computeAggregate(i.toUpperCase(),e,r.trim())}else s[n]=e.length>0?e[0][n]:null}return s}normalizeWhereColumns(e,t){const s={};for(const[n,i]of Object.entries(e))"$and"!==n&&"$or"!==n?"$not"!==n?"$exists"!==n?s[this.stripAlias(n,t)]=this.normalizeFieldValue(i,t):s[n]=this.normalizeExistsValue(i,t):s.$not=this.normalizeWhereColumns(i,t):s[n]=i.map(e=>this.normalizeWhereColumns(e,t));return s}normalizeExistsValue(e,t){if("object"!=typeof e||null===e)return e;const s=e;if(s.$subquery){const e=s.$subquery,n=[e.alias??e.from,...t].filter(Boolean);return{...s,$subquery:{...e,where:this.normalizeWhereColumns(e.where,n)}}}return e}normalizeFieldValue(e,t){if("object"!=typeof e||null===e||Array.isArray(e))return e;const s={};for(const[n,i]of Object.entries(e))"$and"===n||"$or"===n?s[n]=i.map(e=>this.normalizeWhereColumns(e,t)):"$not"===n&&"object"==typeof i&&null!==i?s[n]=this.normalizeFieldValue(i,t):"$col"===n?s[n]=this.stripAlias(String(i),t):"object"==typeof i&&null!==i&&!Array.isArray(i)&&"$col"in i?s[n]={$col:this.stripAlias(String(i.$col),t)}:s[n]=i;return s}stripAlias(e,t){for(const s of t){if(!s)continue;const t=`${s}.`;if(e.startsWith(t))return e.slice(t.length)}return e}hasCorrelatedRefs(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if("$exists"!==t){if(/^\s*CASE\b/i.test(t))return!0;if(this.fieldHasColRef(s))return!0}else if("object"==typeof s&&null!==s&&"$subquery"in s)return!0}else if(this.hasCorrelatedRefs(s))return!0}else if(s.some(e=>this.hasCorrelatedRefs(e)))return!0;return!1}fieldHasColRef(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;const t=e;if("$col"in t)return!0;if("$and"in t||"$or"in t)return(t.$and??t.$or).some(e=>this.hasCorrelatedRefs(e));if("$not"in t&&"object"==typeof t.$not&&null!==t.$not)return this.fieldHasColRef(t.$not);for(const[,e]of Object.entries(t))if("object"==typeof e&&null!==e&&!Array.isArray(e)){if("$col"in e)return!0;if(this.fieldHasColRef(e))return!0}return!1}stripCorrelatedExists(e){const t={};for(const[s,n]of Object.entries(e))if("$and"!==s&&"$or"!==s){if("$not"===s){const e=this.stripCorrelatedExists(n);Object.keys(e).length>0&&(t.$not=e);continue}"$exists"!==s&&(/^\s*CASE\b/i.test(s)||(t[s]=n))}else t[s]=n.map(e=>this.stripCorrelatedExists(e));return t}async filterCorrelated(e,t){const s=[];for(const n of e){let e=this.resolveCaseKeys(t,n);e=await this.resolveSubqueries(e,n),o(n,e)&&s.push(n)}return s}resolveCaseKeys(e,t){const s={};for(const[n,i]of Object.entries(e))if("$and"!==n&&"$or"!==n)if("$not"!==n){if(/^\s*CASE\b/i.test(n)){const e=Ke(n);if(!e)continue;const r=ze(e,t);if(!this.caseConditionMatches(r,i))return{$caseResult:!1};s.$caseResult=!0;continue}s[n]=i}else s.$not=this.resolveCaseKeys(i,t);else s[n]=i.map(e=>this.resolveCaseKeys(e,t));return s}caseConditionMatches(e,t){if("object"!=typeof t||null===t||Array.isArray(t))return e===t;const s=t;for(const[t,n]of Object.entries(s))switch(t){case"$eq":if(e!==n)return!1;break;case"$ne":if(e===n)return!1;break;case"$gt":if(!(e>n))return!1;break;case"$gte":if(!(e>=n))return!1;break;case"$lt":if(!(ethis.bindWhereRefs(e,t)):"$not"===n&&"object"==typeof i&&null!==i?s[n]=this.bindColumnRefs(i,t):"object"==typeof i&&null!==i&&!Array.isArray(i)&&"$col"in i?s[n]=t[String(i.$col)]??null:s[n]=i;return s}bindWhereRefs(e,t){const s={};for(const[n,i]of Object.entries(e))"$and"===n||"$or"===n?s[n]=i.map(e=>this.bindWhereRefs(e,t)):"$not"===n?s.$not=this.bindWhereRefs(i,t):s[n]="$exists"===n?i:this.bindColumnRefs(i,t);return s}async resolveSubqueries(e,t){t&&(e=this.bindWhereRefs(e,t));const s={};for(const[n,i]of Object.entries(e)){if("$exists"===n&&"object"==typeof i&&null!==i){const e=i,n=e.$subquery,r=!!e.$negate;let a=n.where;this.hasCorrelatedRefs(a)&&(a=this.bindWhereRefs(a,t??{}));const o=await this.executeSelectPart({...n,where:a});s.$exists=o.length>0!==r;continue}"$and"===n&&Array.isArray(i)?s.$and=await Promise.all(i.map(e=>this.resolveSubqueries(e,t))):"$or"===n&&Array.isArray(i)?s.$or=await Promise.all(i.map(e=>this.resolveSubqueries(e,t))):"$not"!==n||"object"!=typeof i||null===i?s[n]="object"==typeof i&&null!==i?await this.resolveOperatorSubqueries(i):i:s.$not=await this.resolveSubqueries(i,t)}return s}async resolveOperatorSubqueries(e){const t={};for(const[s,n]of Object.entries(e))if("$and"===s&&Array.isArray(n))t.$and=await Promise.all(n.map(e=>this.resolveSubqueries(e)));else if("$or"===s&&Array.isArray(n))t.$or=await Promise.all(n.map(e=>this.resolveSubqueries(e)));else if("$not"!==s)if("object"==typeof n&&null!==n&&"$subquery"in n){const e=n.$subquery,i=await this.executeSelect(e);if("$in"===s||"$nin"===s){const e=Object.keys(i[0]||{})[0],n=i.map(t=>t[e]);t[s]=n}else if(0===i.length)t[s]=null;else{const e=Object.keys(i[0])[0];t[s]=i[0][e]}}else t[s]=n;else t.$not="object"==typeof n&&null!==n?await this.resolveOperatorSubqueries(n):n;return t}}function je(e){if(null==e)return"NULL";if("number"==typeof e)return Number.isFinite(e)?String(e):"NULL";if("boolean"==typeof e)return e?"TRUE":"FALSE";if("string"==typeof e)return`'${e.replace(/'/g,"''")}'`;throw new n("Object/array query parameters are not supported by SQL binding (pass JSON strings explicitly)","PARAM_ERROR")}class Ve{constructor(e){this.tables=new Map,this.completed=!1,this.engine=e}table(e){let t=this.tables.get(e);return t||(t=new Le(this.engine,e),this.tables.set(e,t)),t}_markCompleted(){this.completed=!0}isCompleted(){return this.completed}}class We{constructor(e){this.engine=e}async execute(e){const t=new Ve(this.engine);await this.engine.beginTransaction();try{const s=await e(t);return await this.engine.commitTransaction(),t._markCompleted(),s}catch(e){try{await this.engine.rollbackTransaction()}catch{}if(e instanceof n)throw e;throw new n(`Transaction failed: ${e.message}`,"TRANSACTION_ERROR",e)}}}class He{constructor(){this.plugins=[],this.hooks=new Map}register(e,t){const s=e.priority??0,n=this.plugins.findIndex(e=>(e.priority??0)t.name===e);-1!==t&&(this.plugins[t].destroy(),this.plugins.splice(t,1))}getPlugins(){return[...this.plugins]}on(e,t){const s=this.hooks.get(e)??[];s.push(t),this.hooks.set(e,s)}off(e,t){const s=this.hooks.get(e);if(s){const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}async trigger(e,...t){const s=this.hooks.get(e);if(s)for(const e of s)await e(...t)}destroy(){for(const e of this.plugins)try{e.destroy()}catch(e){}this.plugins=[],this.hooks.clear()}}class Ge{static async create(e){const t=new Ge(e);return await t.init(),t}get version(){return this._version}get maxRowsPerQuery(){return this.config.maxRowsPerQuery??0}get debug(){return this.config.debug??!1}constructor(e){this.ready=!1,this.tableCache=new Map,this.channel=null,this.listeners=new Map,this.migrations=new Map,this.config=e,this.name=e.name??s.name,this.mode=e.mode??s.mode,this._version=e.version??s.version,this.pluginManager=new He,e.multiTabSync&&"undefined"!=typeof BroadcastChannel&&(this.channel=new BroadcastChannel(`metona-sqlark:${this.name}`),this.channel.onmessage=e=>{const t=e.data;t&&"change"===t.type&&(this.emit(t.table??"",{type:"external",table:t.table??""}),this.engine instanceof Re&&this.engine.reloadMemoryFromDisk().catch(()=>{}))})}async init(){if(this.engine=this.createEngine(),await this.engine.open(this.name,this.version),"function"==typeof this.engine.getMeta)try{const e=await this.engine.getMeta("__metona_version");null!=e&&Number(e)>=1&&(this._version=Math.max(this._version,Math.floor(Number(e))))}catch{}if(this.executor=new Fe(this.engine,this.maxRowsPerQuery),this.transactionManager=new We(this.engine),this.config.plugins)for(const e of this.config.plugins)this.pluginManager.register(e,this);this.ready=!0,this.config.onReady&&this.config.onReady(this)}isReady(){return this.ready}async defineTable(e,t){this.ensureReady();const s=d(e,t);try{await this.pluginManager.trigger("beforeCreateTable",s),await this.engine.createTable(s),await this.pluginManager.trigger("afterCreateTable",s)}catch(e){throw this._onError(e),e}this.tableCache.delete(e)}table(e){this.ensureReady();let t=this.tableCache.get(e);return t||(t=new Le(this.engine,e,this.executor,e=>this.broadcastChange(e),(e,t)=>this.pluginManager.trigger(e,...t)),this.tableCache.set(e,t)),t}async dropTable(e){this.ensureReady();try{await this.pluginManager.trigger("beforeDropTable",e),await this.engine.dropTable(e),await this.pluginManager.trigger("afterDropTable",e)}catch(e){throw this._onError(e),e}this.tableCache.delete(e)}async getTableNames(){return this.ensureReady(),this.engine.getTableNames()}async query(e,t){this.ensureReady();const s=this.debug?Date.now():0;let i;await this.pluginManager.trigger("beforeQuery",e);try{const s=function(e,t){if(!t)return e;let s="",i=0,r=0,a=null;for(;i=t.length)throw new n(`Too few query parameters: placeholder #${r+1} has no value (got ${t.length} total)`,"PARAM_ERROR");s+=je(t[r]),r++,i++}else{for(s+=e[i]+e[i+1],i+=2;i/^(COUNT|SUM|AVG|MIN|MAX)\(/i.test(e)),o=e=>{if(!e)return!1;for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if("$exists"===t)return!0;if("object"==typeof s&&null!==s)for(const[,e]of Object.entries(s))if("object"==typeof e&&null!==e&&("$subquery"in e||"$col"in e))return!0}else if(o(s))return!0}else if(s.some(e=>o(e)))return!0;return!1};if(!(r.joins||r.groupBy||r.having||r.distinct||a||r.orderBy&&r.orderBy.length>0||o(r.where))&&"function"==typeof this.engine.findStream&&"AsyncFunction"!==t.constructor?.name){const e=this.normalizeWhereForStream(r),s=r.columns.filter(e=>!/\s+AS\s+\w+$/i.test(e));return this.engine.findStream(r.from,{table:r.from,columns:s.length>0&&"*"!==s[0]?s:["*"],where:e&&Object.keys(e).length>0?e:void 0,limit:r.limit,offset:r.offset},t)}const h=await this.query(e);if(Array.isArray(h)){for(const e of h)await t(e);return h.length}return 0}normalizeWhereForStream(e){const t=[e.alias??e.from].filter(Boolean),s=e=>{for(const s of t)if(e.startsWith(`${s}.`))return e.slice(s.length+1);return e},n=e=>{const t={};for(const[i,r]of Object.entries(e))"$and"===i||"$or"===i?t[i]=r.map(n):"$not"===i&&"object"==typeof r&&null!==r?t.$not=n(r):t[s(i)]=r;return t};return n(e.where??{})}async transaction(e){this.ensureReady(),await this.pluginManager.trigger("beforeTransaction");try{const t=await this.transactionManager.execute(e);return await this.pluginManager.trigger("afterTransaction"),t}catch(e){throw this._onError(e),e}}async exportTable(e){return this.ensureReady(),this.engine.find(e,{table:e})}async importTable(e,t){this.ensureReady();try{return await this.engine.insert(e,t)}catch(e){throw this._onError(e),e}}async exportAll(){this.ensureReady();const e={},t=await this.engine.getTableNames();for(const s of t)e[s]=await this.engine.find(s,{table:s});return e}async backup(){return this.ensureReady(),"function"==typeof this.engine.backup?this.engine.backup():this.exportAll()}subscribe(e,t){const s=`change:${e}`;return this.listeners.has(s)||this.listeners.set(s,new Set),this.listeners.get(s).add(t),()=>this.listeners.get(s)?.delete(t)}emit(e,t){const s=`change:${e}`;this.listeners.get(s)?.forEach(e=>e(t))}broadcastChange(e){if(this.channel)try{this.channel.postMessage({type:"change",table:e})}catch{}}writeStatementTable(e){switch(e.type){case"INSERT":return e.into;case"UPDATE":case"CREATE_INDEX":case"DROP_INDEX":return e.table;case"DELETE":return e.from;case"CREATE_TABLE":case"DROP_TABLE":case"TRUNCATE_TABLE":case"ALTER_TABLE":return e.name;default:return null}}async triggerStatementHooks(e,t,s){switch(e.type){case"INSERT":{let n=e.columns??[];if(0===n.length)try{const t=await this.engine.getTableSchema(e.into);n=t?Object.keys(t.columns):[]}catch{n=[]}const i=(e.values??[]).map(e=>{const t={};for(let s=0;se[0]-t[0]))t<=e&&t>this._version&&(await s(this),this._version=t);if("function"==typeof this.engine.setMeta)try{await this.engine.setMeta("__metona_version",String(this._version))}catch{}}async repair(){if(this.ensureReady(),"function"==typeof this.engine.repair)return await this.engine.repair(),void this.tableCache.clear();this.tableCache.clear()}async clearAll(){if(this.ensureReady(),"function"==typeof this.engine.clearAll)await this.engine.clearAll();else{const e=await this.engine.getTableNames();for(const t of e)await this.engine.dropTable(t)}this.tableCache.clear()}getPluginManager(){return this.pluginManager}on(e,t){this.pluginManager.on(e,t)}async close(){this.channel&&(this.channel.close(),this.channel=null),this.pluginManager.destroy(),this.engine&&await this.engine.close(),this.tableCache.clear(),this.ready=!1}getEngine(){return this.engine}createEngine(){const e=this.mode,t=this.config.diskEngine??"opfs";switch(e){case"memory":return new m;case"disk":return new _;case"aria":return new Ae({storageBackend:"memory"===t?"memory":"kv"===t?"kv":"opfs",...this.config.aria??{}});case"hybrid":return new Re(t);default:throw new n(`Unknown storage mode: ${e}`,"CONFIG_ERROR")}}ensureReady(){if(!this.ready)throw new n("Database not initialized. Call await db.init() first.","DB_NOT_READY")}_onError(e){if(this.config.onError)try{this.config.onError(e)}catch{}}_debug(e,...t){this.debug}}const Xe=new class{constructor(){this.connections=new Map,this.refCount=new Map}async connect(e){const t=e.name,s=this.connections.get(t);if(s&&s.isReady()){const e=(this.refCount.get(t)??0)+1;return this.refCount.set(t,e),s}const n=new Ge(e);return await n.init(),this.connections.set(t,n),this.refCount.set(t,1),n.disconnect=async()=>{await this.release(t)},n}async release(e){const t=(this.refCount.get(e)??1)-1;if(t<=0){const t=this.connections.get(e);t&&(await t.close(),this.connections.delete(e)),this.refCount.delete(e)}else this.refCount.set(e,t)}async forceClose(e){const t=this.connections.get(e);t&&(await t.close(),this.connections.delete(e)),this.refCount.delete(e)}async closeAll(){for(const[,e]of this.connections)try{await e.close()}catch{}this.connections.clear(),this.refCount.clear()}getActiveConnections(){return Array.from(this.connections.keys())}},Je=Ge;async function Qe(e){return Ge.create(e)}Je.connect=e=>Xe.connect(e),Je.disconnect=e=>Xe.release(e),Je.disconnectAll=()=>Xe.closeAll(),Je.getActiveConnections=()=>Xe.getActiveConnections();const Ye={VERSION:i,version:i,create:Qe,MetonaSqlark:Ge,MeSqlark:Ge};"undefined"!=typeof window&&(window.MetonaSqlark=Ye,window.MeSqlark=Ye);const Ze=Ge;e.AriaEngine=Ae,e.HybridEngine=Re,e.KVStoreEngine=_,e.MeSqlark=Ze,e.MemoryEngine=m,e.MetonaSqlark=Ge,e.OPFSBackend=w,e.Table=Le,e.VERSION=i,e.api=Ye,e.create=Qe,e.default=Ye,e.parse=function(e){return new _e(e).parseStatement()},e.parseAll=Me,e.tokenize=function(e){const t=new Ue(e),s=[];let n=t.nextToken();for(;n.type!==$e.EOF;)s.push(n),n=t.nextToken();return s.push(n),s},Object.defineProperty(e,"__esModule",{value:!0})}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).MetonaSqlark={})}(this,function(e){"use strict";const t=["string","number","boolean","date","json"],s=Object.freeze({name:"metona-sqlark",mode:"hybrid",diskEngine:"opfs",version:1,maxRowsPerQuery:0,debug:!1,multiTabSync:!1,aria:void 0});class n extends Error{constructor(e,t,s){super(e),this.code=t,this.details=s,this.name="DatabaseError"}}const i="0.8.0";class r{constructor(e,t=()=>{},s=()=>{}){this.listeners=new Set,this.inner=e,this.onListenerError=t,this.onBroadcast=s}getInner(){return this.inner}addListener(e){return this.listeners.add(e),()=>this.listeners.delete(e)}async dispatch(e){try{this.onBroadcast(e.table)}catch{}for(const t of[...this.listeners])try{await t(e)}catch(e){this.onListenerError(e)}}async insert(e,t){const s=await this.inner.insert(e,t);for(let n=0;n0&&n.length>0)for(const t of n){const n={...t,...a(s)};await this.dispatch({type:"update",table:e,row:n,count:1})}else i>0&&await this.dispatch({type:"update",table:e,count:i});return i}async delete(e,t){const s=await this.snapshotAffected(e,t),n=await this.inner.delete(e,t);if(n>0&&s.length>0)for(const t of s)await this.dispatch({type:"delete",table:e,row:t,count:1});else n>0&&await this.dispatch({type:"delete",table:e,count:n});return n}async clear(e){await this.inner.clear(e),await this.dispatch({type:"clear",table:e})}async createTable(e){await this.inner.createTable(e),await this.dispatch({type:"ddl",table:e.name})}async dropTable(e){await this.inner.dropTable(e),await this.dispatch({type:"ddl",table:e})}async alterTable(e,t,s){await this.requireCapability("alterTable")(e,t,s),await this.dispatch({type:"ddl",table:e})}async createIndex(e,t,s){await this.requireCapability("createIndex")(e,t,s),await this.dispatch({type:"ddl",table:e})}async dropIndex(e,t,s){await this.requireCapability("dropIndex")(e,t,s),await this.dispatch({type:"ddl",table:e})}get name(){return this.inner.name}open(e,t){return this.inner.open(e,t)}close(){return this.inner.close()}isOpen(){return this.inner.isOpen()}hasTable(e){return this.inner.hasTable(e)}getTableNames(){return this.inner.getTableNames()}getTableSchema(e){return this.inner.getTableSchema(e)}find(e,t){return this.inner.find(e,t)}count(e,t){return this.inner.count(e,t)}async findStream(e,t,s){return this.requireCapability("findStream")(e,t,s)}beginTransaction(){return this.inner.beginTransaction()}commitTransaction(){return this.inner.commitTransaction()}rollbackTransaction(){return this.inner.rollbackTransaction()}savepoint(e){return this.requireCapability("savepoint")(e)}rollbackToSavepoint(e){return this.requireCapability("rollbackToSavepoint")(e)}releaseSavepoint(e){return this.requireCapability("releaseSavepoint")(e)}backup(){return this.requireCapability("backup")()}repair(){return this.requireCapability("repair")()}clearAll(){return this.requireCapability("clearAll")()}analyzeTable(e){return this.requireOptionalMethod("analyzeTable")(e)}reindexTable(e){return this.requireOptionalMethod("reindexTable")(e)}vacuum(){return this.requireOptionalMethod("vacuum")()}getMeta(e){const t=this.inner.getMeta;return"function"!=typeof t?Promise.resolve(null):t.call(this.inner,e)}setMeta(e,t){const s=this.inner.setMeta;return"function"!=typeof s?Promise.resolve():s.call(this.inner,e,t)}requireCapability(e){const t=this.inner[e];return"function"!=typeof t?()=>{throw new n(`Engine "${this.inner.name}" does not support ${String(e)}`,"NOT_SUPPORTED")}:t.bind(this.inner)}requireOptionalMethod(e){const t=this.inner[e];return"function"!=typeof t?()=>{throw new n(`Engine "${this.inner.name}" does not support ${e}`,"NOT_SUPPORTED")}:t.bind(this.inner)}async snapshotAffected(e,t){try{return await this.inner.find(e,{table:e,where:t.where})}catch{return[]}}}function a(e){const t={};for(const[s,n]of Object.entries(e))void 0!==n&&(t[s]=n);return t}function o(e){if(null===e||"object"!=typeof e)return e;if("function"==typeof structuredClone)try{return structuredClone(e)}catch{}return h(e)}function h(e){if(null===e||"object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e))return e.map(e=>h(e));if(e instanceof Uint8Array)return new Uint8Array(e);if(e instanceof ArrayBuffer)return e.slice(0);const t={};for(const[s,n]of Object.entries(e))t[s]=h(n);return t}const c=Object.freeze({TRUE:"TRUE",FALSE:"FALSE",UNKNOWN:"UNKNOWN"});function l(e){return null==e}const u=Symbol("sqlark.unresolved");function f(e){return e===u}function d(e){if(null==e)return"z";switch(typeof e){case"string":{const t=e;return`s${t.length}:${t}`}case"number":{const t=e;return Number.isNaN(t)?"nNaN":`n${Object.is(t,-0)?0:t}`}case"boolean":return"b"+(e?1:0);case"bigint":return`i${String(e)}`;case"object":return e instanceof Date?`d${e.getTime()}`:Array.isArray(e)?`a${JSON.stringify(e)}`:`o${JSON.stringify(e)}`;default:return`x${String(e)}`}}function p(e,t){const s=m(e,t);return null===s?c.UNKNOWN:0===s?c.TRUE:c.FALSE}function y(e,t){return p(e,t)}function m(e,t){if(f(e)||f(t))return null;if(l(e)||l(t))return null;if("number"==typeof e&&"number"==typeof t)return Number.isNaN(e)||Number.isNaN(t)?null:e===t?0:ex(e)))return!0}else{if("$exists"===t)return!0;if(R(s)&&I(s))return!0}return!1}function I(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if("$subquery"===t||"$col"===t)return!0;if(R(s)&&("$subquery"in s||"$col"in s))return!0}else if(R(s)&&I(s))return!0}else if((Array.isArray(s)?s:[s]).some(e=>R(e)&&I(e)))return!0;return!1}function A(e){return"$and"===e||"$or"===e||"$not"===e}function R(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function C(e,t){let s=c.TRUE;for(const[n,i]of Object.entries(t)){let t;if(t="$and"===n?O(e,i,"and"):"$or"===n?O(e,i,"or"):"$not"===n?b(C(e,i)):"$exists"===n||"$caseResult"===n?!0===i?c.TRUE:c.FALSE:$(e,N(e,n),i),s=w(s,t),s===c.FALSE)return c.FALSE}return s}function O(e,t,s){const n=Array.isArray(t)?t:[t];let i="and"===s?c.TRUE:c.FALSE;for(const t of n){const n=C(e,t);if(i="and"===s?w(i,n):g(i,n),"and"===s&&i===c.FALSE)return c.FALSE;if("or"===s&&i===c.TRUE)return c.TRUE}return i}function N(e,t){if(t in e.row)return e.row[t];let s=u,n=0;for(const i of Object.keys(e.row))i.endsWith(`.${t}`)&&(s=e.row[i],n+=1);return 1===n?s:u}function $(e,t,s){return R(s)?L(e,t,s):Array.isArray(s)?E(t,s):_(t,s)}function L(e,t,s){const n=Object.keys(s);if(1===n.length&&"$col"===n[0]&&e.options.$col)return _(t,N(e,String(s.$col)));let i=c.TRUE;for(const[n,r]of Object.entries(s)){let s;if(s="$and"===n?v(e,t,r,"and"):"$or"===n?v(e,t,r,"or"):"$not"===n?b(U(e,t,r)):D(e,t,n,r),i=w(i,s),i===c.FALSE)return c.FALSE}return i}function v(e,t,s,n){const i=Array.isArray(s)?s:[s];let r="and"===n?c.TRUE:c.FALSE;for(const s of i){const i=U(e,t,s);if(r="and"===n?w(r,i):g(r,i),"and"===n&&r===c.FALSE)return c.FALSE;if("or"===n&&r===c.TRUE)return c.TRUE}return r}function U(e,t,s){return R(s)?Object.keys(s).some(e=>!e.startsWith("$")||A(e)||"$exists"===e||"$caseResult"===e)?C(e,s):L(e,t,s):$(e,t,s)}function D(e,t,s,i){const r=function(e,t){if(!R(t))return t;const s=Object.keys(t);return 1!==s.length?t:"$col"===s[0]?e.options.$col?N(e,String(t.$col)):u:"$subquery"===s[0]?u:t}(e,i);switch(s){case"$eq":return _(t,r);case"$ne":return b(_(t,r));case"$gt":return M(t,r,e=>e>0);case"$gte":return M(t,r,e=>e>=0);case"$lt":return M(t,r,e=>e<0);case"$lte":return M(t,r,e=>e<=0);case"$in":return Array.isArray(r)?E(t,r):c.FALSE;case"$nin":return Array.isArray(r)?b(E(t,r)):c.FALSE;case"$like":return l(t)||l(r)||f(t)||f(r)?c.UNKNOWN:function(e){const t=k.get(e);if(t)return t;const s=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,"."),n=new RegExp(`^${s}$`,"i");return k.set(e,n),n}(String(r)).test(String(t))?c.TRUE:c.FALSE;case"$isNull":return l(t)?c.TRUE:c.FALSE;case"$isNotNull":return l(t)?c.FALSE:c.TRUE;case"$col":return e.options.$col?_(t,N(e,String(i))):c.UNKNOWN;case"$subquery":return c.UNKNOWN;default:throw new n(`Unknown where operator "${s}"`,"QUERY_ERROR")}}function _(e,t){return p(e,t)===c.TRUE?c.TRUE:l(e)||l(t)||f(e)||f(t)?c.UNKNOWN:c.FALSE}function M(e,t,s){const n=m(e,t);return null===n?c.UNKNOWN:s(n)?c.TRUE:c.FALSE}function P(e,t){return[...e].sort((e,s)=>{for(const{column:n,direction:i,nulls:r}of t){const t=null===e[n]||void 0===e[n],a=null===s[n]||void 0===s[n];if(r&&(t||a)){if(t&&a)continue;return"first"===r?t?-1:1:t?1:-1}const o=B(e[n],s[n]);if(0!==o)return"desc"===i?-o:o}return 0})}function B(e,t){return e===t?0:null==e?1:null==t?-1:"string"==typeof e&&"string"==typeof t?e.localeCompare(t):"number"==typeof e&&"number"==typeof t?e-t:String(e).localeCompare(String(t))}function K(e,t){const s={};for(const n of t)if(n in e)s[n]=e[n];else for(const t of Object.keys(e))if(t.endsWith(`.${n}`)||t===n){s[n]=e[t];break}return s}function q(e){const t=e.name,s=Object.entries(e.columns),i=new Set(s.map(([e])=>e));return{table:t,columns:i,validateRow:function(e,r){!function(e,s){const r=s?new Set(s):i,a=[];for(const t of Object.keys(e))"__proto__"!==t&&(r.has(t)||a.push(t));if(a.length>0)throw new n(`Unknown column${a.length>1?"s":""} ${a.map(e=>`"${e}"`).join(", ")} in table "${t}". Known columns: ${[...r].join(", ")}`,"COLUMN_NOT_FOUND")}(e,r);const a={};for(const[n,i]of s){let s=e[n];void 0===s&&void 0!==i.default&&(s=i.default),z(t,n,i,s),null!=s&&(F(t,n,s),j(t,n,i.type,s,i)),a[n]=void 0===s?null:s}return a},validatePartial:function(s){const i={},r=[];for(const[a,o]of Object.entries(s)){if("__proto__"===a)throw new n('Column name "__proto__" is not allowed',"VALIDATION_ERROR");const s=e.columns[a];s?void 0!==o&&(z(t,a,s,o),null!==o&&(F(t,a,o),j(t,a,s.type,o,s)),i[a]=o):r.push(a)}return{values:i,unknown:r}}}}function F(e,t,s){if("number"==typeof s&&!Number.isFinite(s))throw new n(`Column "${t}" in table "${e}" cannot store ${Number.isNaN(s)?"NaN":String(s)}: it is not representable in JSON and would be silently read back as null`,"VALIDATION_ERROR")}function z(e,t,s,i){if(s.required&&null==i)throw new n(`Column "${t}" is required in table "${e}"`,"VALIDATION_ERROR");if(s.primaryKey&&null==i)throw new n(`Primary key column "${t}" in table "${e}" cannot be null or undefined`,"VALIDATION_ERROR")}function j(e,t,s,i,r){const a=typeof i;switch(s){case"string":if("string"!==a)throw new n(`Column "${t}" in table "${e}" expects string, got ${a}`,"TYPE_ERROR");if(void 0!==r?.maxLength&&i.length>r.maxLength)throw new n(`Column "${t}" in table "${e}" exceeds max length ${r.maxLength}`,"VALIDATION_ERROR");break;case"number":if("number"!==a)throw new n(`Column "${t}" in table "${e}" expects number, got ${a}`,"TYPE_ERROR");if(void 0!==r?.min&&ir.max)throw new n(`Column "${t}" in table "${e}" value ${i} above maximum ${r.max}`,"VALIDATION_ERROR");break;case"boolean":if("boolean"!==a)throw new n(`Column "${t}" in table "${e}" expects boolean, got ${a}`,"TYPE_ERROR");break;case"date":if("string"!==a||isNaN(Date.parse(i)))throw new n(`Column "${t}" in table "${e}" expects valid date string, got ${typeof i}`,"TYPE_ERROR");break;case"json":if("object"!==a)throw new n(`Column "${t}" in table "${e}" expects object/array, got ${a}`,"TYPE_ERROR")}}function V(e,s){return function(e){if(0===Object.keys(e).length)throw new n("Table must have at least one column","SCHEMA_ERROR");let s=0;for(const[i,r]of Object.entries(e)){if("__proto__"===i)throw new n('Column name "__proto__" is not allowed',"SCHEMA_ERROR");if(!t.includes(r.type))throw new n(`Invalid type "${r.type}" for column "${i}". Valid types: ${t.join(", ")}`,"SCHEMA_ERROR");r.primaryKey&&s++}if(0===s)throw new n("Table must have at least one primary key column","SCHEMA_ERROR");if(s>1)throw new n(`Composite primary keys are not supported yet: table has ${s} primary key columns. Use a single primary key column (or a unique column combination) instead.`,"SCHEMA_ERROR")}(s),{name:e,columns:s}}function W(e){const t={};for(const[s,n]of Object.entries(e))void 0!==n&&(t[s]=n);return t}function G(e){return{type:e.type,primaryKey:e.primaryKey,unique:e.unique,required:e.required,default:e.default,index:e.index,maxLength:e.maxLength,min:e.min,max:e.max,references:e.references,onDelete:e.onDelete,onUpdate:e.onUpdate}}class H{constructor(){this.name="memory",this.tables=new Map,this.schemas=new Map,this.indexes=new Map,this.opened=!1,this.metaStore=new Map,this.uniqueIndexCols=new Set,this.snapshot=null}async open(e,t){this.opened||(this.opened=!0)}async close(){this.tables.clear(),this.schemas.clear(),this.indexes.clear(),this.metaStore.clear(),this.opened=!1}isOpen(){return this.opened}async repair(){}async clearAll(){const e=Array.from(this.schemas.keys());for(const t of e)await this.dropTable(t);this.metaStore.clear()}async getMeta(e){return this.metaStore.get(e)??null}async setMeta(e,t){this.metaStore.set(e,t)}async createTable(e){if(this.schemas.has(e.name))throw new n(`Table "${e.name}" already exists`,"TABLE_EXISTS");const t={name:e.name,columns:{}};for(const[s,n]of Object.entries(e.columns))t.columns[s]={...n};this.schemas.set(e.name,t),this.tables.set(e.name,new Map);const s=new Map;for(const[e,n]of Object.entries(t.columns))(n.index||n.unique)&&s.set(e,new Map);this.indexes.set(e.name,s)}async dropTable(e){this.ensureTable(e),this.schemas.delete(e),this.tables.delete(e),this.indexes.delete(e);const t=`${e}:`;for(const e of this.uniqueIndexCols)e.startsWith(t)&&this.uniqueIndexCols.delete(e)}async hasTable(e){return this.schemas.has(e)}async getTableNames(){return Array.from(this.schemas.keys())}async getTableSchema(e){return this.schemas.get(e)??null}async alterTable(e,t,s){if(this.snapshot)throw new n("ALTER TABLE is not supported inside a transaction (MemoryEngine DDL is not transactional)","NOT_SUPPORTED");this.ensureTable(e);const i=this.schemas.get(e);if("ADD"===t){if(i.columns[s.name])throw new n(`Column "${s.name}" already exists in table "${e}"`,"COLUMN_EXISTS");if(i.columns[s.name]=s,s.index||s.unique){this.indexes.has(e)||this.indexes.set(e,new Map);const t=this.indexes.get(e);t.has(s.name)||t.set(s.name,new Map);const r=t.get(s.name),a=this.tables.get(e),o=new Set;for(const[h,c]of a){const a=c[s.name];if(null==a)continue;if(s.unique&&o.has(a))throw t.delete(s.name),delete i.columns[s.name],new n(`Duplicate value "${String(a)}" for UNIQUE column "${s.name}" in table "${e}"`,"UNIQUE_VIOLATION");o.add(a);let l=r.get(a);l||(l=new Set,r.set(a,l)),l.add(h)}}const t=this.tables.get(e);for(const e of t.values())s.name in e||(e[s.name]=null);return}if(!i.columns[s.name])throw new n(`Column "${s.name}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");(i.columns[s.name].index||i.columns[s.name].unique)&&this.indexes.get(e)?.delete(s.name),delete i.columns[s.name];const r=this.tables.get(e);for(const e of r.values())s.name in e&&delete e[s.name]}async insert(e,t){this.ensureTable(e);const s=this.schemas.get(e),i=this.tables.get(e),r=this.getPrimaryKey(s),a=[],o=[],h=new Set,c=new Map;for(const a of t){const t=this.validateRow(s,a),l=String(t[r]);if(i.has(l)||h.has(l))throw new n(`Duplicate primary key "${l}" in table "${e}"`,"DUPLICATE_KEY");h.add(l),this.checkInsertUniqueness(s,e,t,c),o.push(t)}for(const t of o){const s=String(t[r]);i.set(s,t),this.updateIndexes(e,t,s),a.push(s)}return a}getRow(e,t){const s=this.tables.get(e);if(!s)return null;const n=s.get(t);return n?o(n):null}async find(e,t){this.ensureTable(e);const s=this.tables.get(e);let n=this.tryIndexLookup(e,s,t);t.where&&Object.keys(t.where).length>0&&(n=n.filter(e=>S(e,t.where))),t.orderBy&&t.orderBy.length>0&&(n=P(n,t.orderBy));const i=t.offset??0,r=t.limit??n.length;return n=n.slice(i,i+r),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(n=n.map(e=>K(e,t.columns))),n.map(e=>o(e))}async findStream(e,t,s){this.ensureTable(e);const n=this.tables.get(e),i=!!(t.where&&Object.keys(t.where).length>0),r=t.limit??1/0,a=t.offset??0,h=t.columns&&t.columns.length>0&&"*"!==t.columns[0]?e=>K(e,t.columns):null;let c=0,l=0;for(const e of n.values())if(!i||S(e,t.where))if(l=r)break;return c}async update(e,t,s){this.ensureTable(e);const i=this.schemas.get(e),r=this.tables.get(e),a=this.getPrimaryKey(i),o=W(s);for(const t of Object.keys(o))if(!i.columns[t])throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");const h=[],c=new Map,l=new Set;for(const[s,u]of r){if(t.where&&Object.keys(t.where).length>0&&!S(u,t.where))continue;const f={...u,...o};this.validateRow(i,f),this.checkUpdateUniqueness(i,e,s,f,c);const d=String(f[a]);if(d!==s&&r.has(d))throw new n(`Duplicate primary key "${d}" in table "${e}" (cannot update key to existing value)`,"DUPLICATE_KEY");if(d!==s){if(l.has(d))throw new n(`Duplicate primary key "${d}" in table "${e}" (multiple rows in the same statement update to the same key)`,"DUPLICATE_KEY");l.add(d)}h.push({pk:s,row:u,updated:f,newPk:d})}for(const t of h)t.newPk!==t.pk&&this.checkUpdateRestrict(e,t.pk);let u=0;for(const{pk:t,row:s,updated:n,newPk:i}of h)this.removeIndexEntries(e,s,t),i!==t&&await this.applyUpdateCascade(e,t,i),r.delete(t),r.set(i,n),this.updateIndexes(e,n,i),u++;return u}checkInsertUniqueness(e,t,s,i){const r=this.indexes.get(t);for(const[t,a]of Object.entries(e.columns)){if(!a.unique)continue;const o=s[t];if(null==o)continue;let h=i.get(t);if(h||(h=new Set,i.set(t,h)),h.has(o))throw new n(`Unique constraint violation on column "${t}" in table "${e.name}"`,"UNIQUE_VIOLATION");if(h.add(o),!r)continue;const c=r.get(t);if(c&&c.has(o))throw new n(`Unique constraint violation on column "${t}" in table "${e.name}"`,"UNIQUE_VIOLATION")}}checkUpdateUniqueness(e,t,s,i,r){const a=this.indexes.get(t);for(const[t,o]of Object.entries(e.columns)){if(!o.unique)continue;const h=i[t];if(null==h)continue;let c=r.get(t);if(c||(c=new Set,r.set(t,c)),c.has(h))throw new n(`Unique constraint violation on column "${t}" in table "${e.name}"`,"UNIQUE_VIOLATION");if(c.add(h),!a)continue;const l=a.get(t);if(l&&l.has(h)){const i=l.get(h);if(1!==i.size||!i.has(s))throw new n(`Unique constraint violation on column "${t}" in table "${e.name}"`,"UNIQUE_VIOLATION")}}}checkUpdateRestrict(e,t){for(const[s,i]of this.schemas)if(s!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i!==e)continue;const o=this.tables.get(s);if(!o)continue;let h=!1;for(const[,i]of o)if(String(i[r])===t&&(h=!0,"RESTRICT"===a.onUpdate))throw new n(`Cannot update "${e}" key "${t}": foreign key "${r}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if(h&&"SET NULL"===a.onUpdate&&a.required)throw new n(`Cannot update "${e}" key "${t}": foreign key "${r}" in "${s}" is required (SET NULL violates constraint)`,"FOREIGN_KEY_VIOLATION")}}async applyUpdateCascade(e,t,s){for(const[n,i]of this.schemas)if(n!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[o]=a.references.split(".");if(o!==e)continue;const h=this.tables.get(n);if(!h)continue;if("CASCADE"!==a.onUpdate&&"SET NULL"!==a.onUpdate)continue;const c=this.rowValidator(i);for(const[e,i]of h){if(String(i[r])!==t)continue;const o="CASCADE"===a.onUpdate?s:null,{values:h}=c.validatePartial({[r]:o});this.removeIndexEntries(n,i,e),i[r]=h[r],this.updateIndexes(n,i,e)}}}async delete(e,t){this.ensureTable(e);const s=this.tables.get(e),n=[];for(const[e,i]of s)t.where&&0!==Object.keys(t.where).length&&!S(i,t.where)||n.push({pk:e,row:i});const i=new Set;for(const{pk:t}of n)this.checkCascadeRestrict(e,t,i);let r=0;for(const{pk:t,row:s}of n)this.removeIndexEntries(e,s,t),r+=await this.cascadeDelete(e,t,s);for(const{pk:e}of n)s.delete(e);return n.length+r}checkCascadeRestrict(e,t,s){const i=`${e}:${t}`;if(!s.has(i)){s.add(i);for(const[i,r]of this.schemas)if(i!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onDelete)continue;const[r]=o.references.split(".");if(r!==e)continue;const h=this.tables.get(i);if(!h)continue;const c=[];for(const[e,s]of h)String(s[a])===t&&c.push(e);if("RESTRICT"===o.onDelete&&c.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${i}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("SET NULL"===o.onDelete&&o.required&&c.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${i}" is required (SET NULL violates constraint)`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===o.onDelete)for(const e of c)this.checkCascadeRestrict(i,e,s)}}}async count(e,t){this.ensureTable(e);const s=this.tables.get(e);if(!t?.where||0===Object.keys(t.where).length)return s.size;let n=0;for(const e of s.values())S(e,t.where)&&n++;return n}async clear(e){this.ensureTable(e),this.tables.get(e).clear();const t=this.indexes.get(e);if(t)for(const e of t.values())e.clear()}async createIndex(e,t,s){if(this.snapshot)throw new n("CREATE INDEX is not supported inside a transaction (MemoryEngine DDL is not transactional)","NOT_SUPPORTED");this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.index||i.unique)return;const r=this.indexes.get(e);r.has(t)||r.set(t,new Map);const a=r.get(t),o=this.tables.get(e);try{for(const[i,r]of o){const o=r[t];if(null!=o){if(s&&a.has(o))throw new n(`Unique index on column "${t}" in table "${e}" cannot be created: duplicate value "${String(o)}"`,"UNIQUE_VIOLATION");a.has(o)||a.set(o,new Set),a.get(o).add(i)}}}catch(e){throw r.delete(t),e}i.index=!0,s&&(i.unique=!0,this.uniqueIndexCols.add(`${e}:${t}`))}async dropIndex(e,t,s){if(this.snapshot)throw new n("DROP INDEX is not supported inside a transaction (MemoryEngine DDL is not transactional)","NOT_SUPPORTED");this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(!i.index&&!i.unique)throw new n(`Index on column "${t}" does not exist in table "${e}"`,"INDEX_NOT_FOUND");const r=`${e}:${t}`;if(i.unique&&!this.uniqueIndexCols.has(r))throw new n(`Cannot drop index on column "${t}" in table "${e}": UNIQUE constraint defined at table creation must be removed by recreating the table`,"NOT_SUPPORTED");i.index=!1,i.unique=!1,this.uniqueIndexCols.delete(r);const a=this.indexes.get(e);a&&a.delete(t)}async beginTransaction(){if(this.snapshot)throw new n("Transaction already in progress","TX_ACTIVE");this.snapshot={tables:this.deepCloneMapMap(this.tables),schemas:new Map(this.schemas),indexes:this.deepCloneIndexes(this.indexes)}}async commitTransaction(){if(!this.snapshot)throw new n("No active transaction","TX_NONE");this.snapshot=null}async rollbackTransaction(){if(!this.snapshot)throw new n("No active transaction","TX_NONE");this.tables=this.snapshot.tables,this.schemas=this.snapshot.schemas,this.indexes=this.snapshot.indexes,this.snapshot=null}deepCloneMapMap(e){const t=new Map;for(const[s,n]of e){const e=new Map;for(const[t,s]of n)e.set(t,{...s});t.set(s,e)}return t}deepCloneIndexes(e){const t=new Map;for(const[s,n]of e){const e=new Map;for(const[t,s]of n){const n=new Map;for(const[e,t]of s)n.set(e,new Set(t));e.set(t,n)}t.set(s,e)}return t}ensureTable(e){if(!this.tables.has(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND")}getPrimaryKey(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}validateRow(e,t){return this.rowValidator(e).validateRow(t)}rowValidator(e){return q(e)}async validatePayload(e,t,s="insert"){this.ensureTable(e);const n=this.schemas.get(e),i=this.rowValidator(n);for(const e of t)"update"===s?i.validatePartial(W(e)):i.validateRow(e)}tryIndexLookup(e,t,s){const n=this.indexes.get(e);if(!n||!s.where)return Array.from(t.values());const i=[],r=e=>{for(const[t,s]of Object.entries(e))if("$and"!==t)"$or"!==t&&"$not"!==t&&i.push([t,s]);else for(const e of s)r(e)};r(s.where);for(const[e,s]of i){let i;if("object"!=typeof s||null===s)i=s;else{if(!("$eq"in s)||1!==Object.keys(s).length)continue;i=s.$eq}if(null==i)continue;if("object"==typeof i)continue;const r=n.get(e);if(r){const e=r.get(i);if(e){const s=[];for(const n of e){const e=t.get(n);e&&s.push(e)}return s}return[]}}return Array.from(t.values())}updateIndexes(e,t,s){const n=this.indexes.get(e);if(n)for(const[e,i]of n){const n=t[e];null!=n&&(i.has(n)||i.set(n,new Set),i.get(n).add(s))}}removeIndexEntries(e,t,s){const n=this.indexes.get(e);if(n)for(const[e,i]of n){const n=t[e];if(null!=n){const e=i.get(n);e&&(e.delete(s),0===e.size&&i.delete(n))}}}async cascadeDelete(e,t,s,i=new Set){const r=`${e}:${t}`;if(i.has(r))return 0;i.add(r);let a=0;for(const[s,r]of this.schemas)if(s!==e)for(const[o,h]of Object.entries(r.columns)){if(!h.references||!h.onDelete)continue;const[r]=h.references.split(".");if(r!==e)continue;const c=this.tables.get(s);if(!c)continue;const l=[];for(const[e,s]of c)String(s[o])===t&&l.push(e);if("RESTRICT"===h.onDelete&&l.length>0)throw new n(`Cannot delete from "${e}": foreign key "${o}" in "${s}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===h.onDelete)for(const e of l){const t=c.get(e);t&&(this.removeIndexEntries(s,t,e),a+=await this.cascadeDelete(s,e,t,i)),c.delete(e),a++}else if("SET NULL"===h.onDelete)for(const e of l){const t=c.get(e);t&&(this.removeIndexEntries(s,t,e),t[o]=null,this.updateIndexes(s,t,e))}}return a}}const X=[".crswap",".tmp"];class Q{constructor(){this.root=null,this.dbDir=null,this.dbName="",this.writeQueue=Promise.resolve()}async open(e){this.dbName=e,this.root=await navigator.storage.getDirectory(),this.dbDir=await this.root.getDirectoryHandle(e,{create:!0}),await this.cleanupStaleFiles()}async close(){try{await this.writeQueue}catch{}this.dbDir=null,this.root=null}isOpen(){return null!==this.dbDir}async cleanupStaleFiles(){if(this.dbDir)try{const e=this.dbDir,t=[];for await(const[s]of e.entries())X.some(e=>s.endsWith(e))&&t.push(s);for(const e of t)try{await this.dbDir.removeEntry(e)}catch{}}catch{}}async read(e){if(!this.dbDir)return null;try{const t=await this.dbDir.getFileHandle(e),s=await t.getFile();return await s.arrayBuffer()}catch{return null}}async write(e,t){if(!this.dbDir)return;const s=this.writeQueue.then(async()=>{const s=await this.dbDir.getFileHandle(e,{create:!0}),n=await s.createWritable();await n.write(t),await n.close()});return this.writeQueue=s.then(()=>{},()=>{}),s}async append(e,t){if(!this.dbDir)return;const s=this.writeQueue.then(async()=>{const s=await this.dbDir.getFileHandle(e,{create:!0}),n=await s.getFile(),i=await s.createWritable({keepExistingData:!0});await i.write({type:"write",position:n.size,data:t}),await i.close()});return this.writeQueue=s.then(()=>{},()=>{}),s}async writeMany(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{for(const[t,s]of Object.entries(e)){const e=await this.dbDir.getFileHandle(t,{create:!0}),n=await e.createWritable();await n.write(s),await n.close()}});return this.writeQueue=t.then(()=>{},()=>{}),t}async delete(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{try{await this.dbDir.removeEntry(e)}catch{}});return this.writeQueue=t.then(()=>{},()=>{}),t}async deleteMany(e){if(!this.dbDir)return;const t=this.writeQueue.then(async()=>{for(const t of e)try{await this.dbDir.removeEntry(t)}catch{}});return this.writeQueue=t.then(()=>{},()=>{}),t}async listKeys(){if(!this.dbDir)return[];const e=[],t=this.dbDir;for await(const[s]of t.entries())e.push(s);return e}async exists(e){if(!this.dbDir)return!1;try{return await this.dbDir.getFileHandle(e),!0}catch{return!1}}async clear(){if(!this.dbDir)return;const e=this.dbDir;for await(const[t]of e.entries())try{await this.dbDir.removeEntry(t)}catch{}}}const J=new Map;let Y=0,Z=new Map;class ee{constructor(){this.dbName="",this.store=null}static clearRegistry(){J.clear(),Y+=1,Z=new Map}async open(e){this.dbName=e,this.store=function(e){const t=Z.get(e);if(t&&t.epoch===Y)return t.store;const s=J.get(e);if(s)return Z.set(e,{epoch:Y,store:s}),s;const n={chunks:new Map,materialized:new Map};return J.set(e,n),Z.set(e,{epoch:Y,store:n}),n}(e)}async close(){this.store=null}isOpen(){return""!==this.dbName&&null!==this.store}db(){return this.store||(this.store={chunks:new Map,materialized:new Map}),this.store}async read(e){const t=this.db();if(t.materialized.has(e))return t.materialized.get(e)??null;const s=t.chunks.get(e);if(!s||0===s.length)return t.materialized.set(e,null),null;if(1===s.length)return t.materialized.set(e,s[0]),s[0];const n=s.reduce((e,t)=>e+t.byteLength,0),i=new Uint8Array(n);let r=0;for(const e of s)i.set(new Uint8Array(e),r),r+=e.byteLength;const a=i.buffer;return t.materialized.set(e,a),a}async write(e,t){const s=this.db();s.chunks.set(e,[t]),s.materialized.set(e,t)}async append(e,t){const s=this.db(),n=s.chunks.get(e);n?n.push(t):s.chunks.set(e,[t]),s.materialized.delete(e)}async writeMany(e){const t=this.db();for(const[s,n]of Object.entries(e))t.chunks.set(s,[n]),t.materialized.set(s,n)}async delete(e){const t=this.db();t.chunks.delete(e),t.materialized.set(e,null)}async deleteMany(e){const t=this.db();for(const s of e)t.chunks.delete(s),t.materialized.set(s,null)}async listKeys(){return Array.from(this.db().chunks.keys())}async exists(e){return this.db().chunks.has(e)}async clear(){const e=this.db();e.chunks.clear(),e.materialized.clear()}}const te=(()=>{const e=new Uint32Array(256);for(let t=0;t<256;t++){let s=t;for(let e=0;e<8;e++)s=1&s?3988292384^s>>>1:s>>>1;e[t]=s>>>0}return e})(),se=4294967295;function ne(e,t=0){const s=function(e,t){let s=e>>>0;for(let e=0;e>>8)>>>0;return s>>>0}(t^se,e);return function(e){return(e^se)>>>0}(s)}var ie;!function(e){e[e.PUT=1]="PUT",e[e.DELETE=2]="DELETE",e[e.APPEND=3]="APPEND"}(ie||(ie={}));const re=1263948622;function ae(e,t){const s=new TextEncoder,n=Array.from(t.keys()),i=[];let r=12;for(const e of n){const n=s.encode(e),a=new Uint8Array(t.get(e));i.push({key:n,value:a}),r+=4+n.byteLength+4+a.byteLength}r+=4;const a=new Uint8Array(r),o=new DataView(a.buffer);let h=0;o.setUint32(h,re,!1),h+=4,o.setUint32(h,e,!1),h+=4,o.setUint32(h,i.length,!1),h+=4;for(const e of i)o.setUint32(h,e.key.byteLength,!1),h+=4,a.set(e.key,h),h+=e.key.byteLength,o.setUint32(h,e.value.byteLength,!1),h+=4,a.set(e.value,h),h+=e.value.byteLength;const c=ne(a.subarray(0,r-4));return o.setUint32(r-4,c,!1),a}function oe(e){if(e.byteLength<16)return null;const t=new DataView(e.buffer,e.byteOffset,e.byteLength);if(t.getUint32(0,!1)!==re)return null;if(t.getUint32(e.byteLength-4,!1)!==ne(e.subarray(0,e.byteLength-4)))return null;const s=new TextDecoder,n=new Map;let i=4;const r=t.getUint32(i,!1);i+=4;const a=t.getUint32(i,!1);i+=4;for(let r=0;re.byteLength-4)return null;const r=t.getUint32(i,!1);if(i+=4,i+r+4>e.byteLength-4)return null;const a=s.decode(e.subarray(i,i+r));i+=r;const o=t.getUint32(i,!1);if(i+=4,i+o>e.byteLength-4)return null;const h=e.slice(i,i+o).buffer;i+=o,n.set(a,h)}return{seq:r,entries:n}}const he="__kv_log",ce="__kv_snapshot",le="__kv_meta";class ue{constructor(e,t=16777216){this.dbName="",this.opened=!1,this.index=new Map,this.seq=0,this.logBytes=0,this.opQueue=Promise.resolve(),this.lastBackgroundError=null,this.instanceId="",this.stale=!1,this.medium=e??function(){const e=globalThis.navigator;return void 0!==e&&e.storage&&"function"==typeof e.storage.getDirectory?new Q:new ee}(),this.checkpointThreshold=t}isOpen(){return this.opened}async open(e){if(this.opened)return;this.dbName=e,this.lastBackgroundError=null,this.stale=!1,await this.medium.open(e),await this.claimOwnership(),this.index=new Map,this.seq=0,this.logBytes=0;let t=0;const s=await this.medium.read(ce);if(s){const e=oe(new Uint8Array(s));e?(this.index=new Map(e.entries),this.seq=e.seq,t=e.seq):(this.index=new Map,this.seq=0,t=0)}const n=await this.medium.read(he);if(n&&n.byteLength>0){const e=new Uint8Array(n),s=t,i=[];(function(e,t,s){let n=0,i=0;const r=new DataView(e.buffer,e.byteOffset,e.byteLength),a=new TextDecoder;for(;n+4<=e.byteLength;){const o=r.getUint32(n,!1);if(o<12||n+4+o>e.byteLength){if(s&&!s(n))break;break}const h=n,c=n+4+o,l=e.subarray(h,c),u=new DataView(e.buffer,e.byteOffset+h,o+4);if(u.getUint32(o,!1)!==ne(l.subarray(0,o))){if(s&&!s(h))break;break}let f=4;const d=u.getUint32(f,!1);f+=4;const p=u.getUint32(f,!1);f+=4;const y=[];let m=!0;for(let e=0;eo+4){m=!1;break}const e=u.getUint8(f);f+=1;const t=u.getUint32(f,!1);if(f+=4,f+t+4>o+4){m=!1;break}const s=a.decode(l.subarray(f,f+t));f+=t;const n=u.getUint32(f,!1);if(f+=4,f+n>o+4){m=!1;break}const i=l.slice(f,f+n).buffer;f+=n,y.push({op:e,key:s,value:i})}if(!m){if(s&&!s(h))break;break}t({seq:d,entries:y,raw:l}),i++,n=c}return i}(e,e=>{e.seq<=s||(this.applyRecord(e.entries),this.seq=e.seq)},e=>(i.push(e),!0))>0||i.length>0)&&(this.logBytes=e.byteLength),i.length>0&&await this.truncateLogTo(this.findValidLogLength(e))}this.opened=!0}async reload(){if(this.opened){try{await this.opQueue}catch{}this.index=new Map,this.seq=0,this.logBytes=0,this.opened=!1,await this.open(this.dbName)}}async close(){if(this.opened){try{await this.opQueue}catch{}await this.medium.close(),this.index.clear(),this.seq=0,this.logBytes=0,this.lastBackgroundError=null,this.instanceId="",this.stale=!1,this.opened=!1}}async get(e){return this.index.get(e)??null}async getAll(){return Array.from(this.index.entries())}async listKeys(){return Array.from(this.index.keys())}async exists(e){return this.index.has(e)}size(){return this.index.size}async put(e,t){await this.enqueue(async()=>{await this.appendRecord({[e]:t},[])})}async putMany(e){0!==Object.keys(e).length&&await this.enqueue(async()=>{await this.appendRecord(e,[])})}async delete(e){await this.enqueue(async()=>{await this.appendRecord({},[e])})}async deleteMany(e){0!==e.length&&await this.enqueue(async()=>{await this.appendRecord({},e)})}async writeBatch(e,t){0===Object.keys(e).length&&0===t.length||await this.enqueue(async()=>{await this.appendRecord(e,t)})}async appendValue(e,t){0!==t.byteLength&&await this.enqueue(async()=>{await this.appendRecord({},[],{[e]:t})})}async checkpoint(){await this.enqueue(async()=>{if(await this.assertOwnership(),null!==this.lastBackgroundError){const e=this.lastBackgroundError;throw this.lastBackgroundError=null,new n("KVStore background write failed","KV_BACKGROUND_ERROR",e)}if(0===this.logBytes&&0===this.index.size)return;const e=ae(this.seq,this.index);await this.medium.write(ce,e.buffer),await this.writeMeta(),await this.truncateLog()})}async clear(){await this.enqueue(async()=>{await this.medium.clear(),this.index.clear(),this.seq=0,this.logBytes=0,await this.medium.write(le,(new TextEncoder).encode(JSON.stringify({seq:0})).buffer)})}async repair(){return this.enqueue(async()=>{let e=0;const t=await this.medium.read(ce);t&&!oe(new Uint8Array(t))&&(await this.medium.delete(ce),e++);const s=await this.medium.read(he);if(s&&s.byteLength>0){const t=new Uint8Array(s),n=this.findValidLogLength(t);if(n{},()=>{}),t}async appendRecord(e,t,s={}){if(this.stale)throw new n("KVStore instance has been superseded by another instance on the same database; re-open the database to continue","STALE_INSTANCE");this.seq++;const i=function(e,t,s=[],n={}){const i=new TextEncoder,r=[];for(const[e,s]of Object.entries(t))r.push({op:ie.PUT,key:e,value:s});for(const e of s)r.push({op:ie.DELETE,key:e,value:new ArrayBuffer(0)});for(const[e,t]of Object.entries(n))r.push({op:ie.APPEND,key:e,value:t});const a=[];let o=12;for(const e of r){const t=i.encode(e.key),s=new Uint8Array(e.value);a.push({op:e.op,key:t,value:s}),o+=5+t.byteLength+4+s.byteLength}o+=4;const h=new Uint8Array(o),c=new DataView(h.buffer);let l=0;c.setUint32(l,o-4,!1),l+=4,c.setUint32(l,e,!1),l+=4,c.setUint32(l,a.length,!1),l+=4;for(const e of a)c.setUint8(l,e.op),l+=1,c.setUint32(l,e.key.byteLength,!1),l+=4,h.set(e.key,l),l+=e.key.byteLength,c.setUint32(l,e.value.byteLength,!1),l+=4,h.set(e.value,l),l+=e.value.byteLength;const u=ne(h.subarray(0,o-4));return c.setUint32(o-4,u,!1),h}(this.seq,e,t,s);try{const e=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength);if("function"==typeof this.medium.append)await this.medium.append(he,e);else{const t=await this.medium.read(he);if(t){const s=new Uint8Array(t.byteLength+e.byteLength);s.set(new Uint8Array(t),0),s.set(new Uint8Array(e),t.byteLength),await this.medium.write(he,s.buffer)}else await this.medium.write(he,e)}}catch(e){throw this.seq--,this.lastBackgroundError=e,new n("KVStore log append failed","KV_LOG_ERROR",e)}for(const[t,s]of Object.entries(e))this.index.set(t,s);for(const e of t)this.index.delete(e);for(const[e,t]of Object.entries(s)){const s=this.index.get(e);if(s){const n=new Uint8Array(s.byteLength+t.byteLength);n.set(new Uint8Array(s),0),n.set(new Uint8Array(t),s.byteLength),this.index.set(e,n.buffer)}else this.index.set(e,t)}this.logBytes+=i.byteLength,this.checkpointThreshold>0&&this.logBytes>=this.checkpointThreshold&&await this.autoCheckpoint()}async autoCheckpoint(){try{await this.assertOwnership(),await this.medium.write(ce,ae(this.seq,this.index).buffer),await this.writeMeta(),await this.truncateLog()}catch(e){this.stale||(this.lastBackgroundError=e)}}async truncateLog(){try{await this.medium.write(he,new ArrayBuffer(0))}catch{}this.logBytes=0}async truncateLogTo(e){try{const t=await this.medium.read(he);if(!t)return;if(e>=t.byteLength)return;const s=new Uint8Array(t).subarray(0,e).slice();await this.medium.write(he,s.buffer),this.logBytes=e}catch{}}applyRecord(e){for(const t of e)if(t.op===ie.PUT)this.index.set(t.key,t.value);else if(t.op===ie.APPEND){const e=this.index.get(t.key);if(e){const s=new Uint8Array(e.byteLength+t.value.byteLength);s.set(new Uint8Array(e),0),s.set(new Uint8Array(t.value),e.byteLength),this.index.set(t.key,s.buffer)}else this.index.set(t.key,t.value)}else this.index.delete(t.key)}newInstanceId(){const e=Math.random().toString(36).slice(2);return`kv-${Date.now().toString(36)}-${e}`}async readMeta(){try{const e=await this.medium.read(le);return e&&0!==e.byteLength?JSON.parse((new TextDecoder).decode(e)):null}catch{return null}}async writeMeta(){const e={seq:this.seq,owner:this.instanceId};await this.medium.write(le,(new TextEncoder).encode(JSON.stringify(e)).buffer)}async claimOwnership(){this.instanceId=this.newInstanceId(),await this.writeMeta()}async assertOwnership(){const e=await this.readMeta();if(e?.owner&&this.instanceId&&e.owner!==this.instanceId)throw this.stale=!0,new n("KVStore instance has been superseded by another instance on the same database (refusing to commit a stale snapshot, which would discard the newer instance's writes); re-open the database to continue","STALE_INSTANCE")}isStale(){return this.stale}findValidLogLength(e){let t=0;const s=new DataView(e.buffer,e.byteOffset,e.byteLength);for(;t+4<=e.byteLength;){const n=s.getUint32(t,!1);if(n<12||t+4+n>e.byteLength)break;const i=e.subarray(t,t+4+n),r=s.getUint32(t+n,!1);if(ne(i.subarray(0,n))!==r)break;t+=4+n}return t}}const fe="__schema",de="t:",pe=e=>(new TextEncoder).encode(e).buffer,ye=e=>(new TextDecoder).decode(e);class me{constructor(e,t){this.name="kv",this.memory=new H,this.dbName="",this.version=1,this.opened=!1,this.txActive=!1,this.txDirtyTables=new Set,this.txSchemaChanged=!1,this.txChanges=new Map,this.txFullTables=new Set,this.txClearedTables=new Set,this.kv=new ue(e,t)}rowKey(e,t){return`${de}${e}:${t}`}rowPrefix(e){return`${de}${e}:`}async open(e,t){if(this.opened)return;this.dbName=e,this.version=t,await this.kv.open(e),await this.memory.open(e,t);const s=await this.kv.get(fe);if(s)try{const e=JSON.parse(ye(s));for(const t of Object.values(e))await this.memory.createTable(t)}catch{throw new n("Corrupted schema in KVStore","KV_SCHEMA_ERROR")}const i=await this.kv.getAll();for(const[e,t]of i){if(!e.startsWith(de))continue;const s=e.indexOf(":",2);if(s<0)continue;const n=e.slice(2,s);if(await this.memory.hasTable(n))try{const e=JSON.parse(ye(t));await this.memory.insert(n,[e])}catch{}}const r=await this.memory.getTableNames();for(const e of r){const t=await this.memory.getTableSchema(e);if(t)for(const[s,n]of Object.entries(t.columns))(n.index||n.unique)&&await this.memory.createIndex(e,s,n.unique)}this.opened=!0}async close(){if(this.opened){if(this.txActive)try{await this.rollbackTransaction()}catch{}try{await this.kv.checkpoint()}catch{}await this.kv.close(),await this.memory.close(),this.opened=!1}}isOpen(){return this.opened}async reload(){this.opened&&(await this.kv.reload(),await this.memory.close(),await this.memory.open(this.dbName,this.version),this.opened=!1,await this.open(this.dbName,this.version))}async repair(){this.ensureOpen(),await this.kv.repair(),await this.memory.close(),await this.memory.open(this.dbName,this.version),this.opened=!1,await this.open(this.dbName,this.version)}async clearAll(){this.ensureOpen(),await this.kv.clear(),await this.memory.clearAll()}async getMeta(e){const t=await this.kv.get(`__meta:${e}`);return t?ye(t):null}async setMeta(e,t){await this.kv.put(`__meta:${e}`,pe(t))}async createTable(e){if(this.ensureOpen(),await this.memory.createTable(e),this.txActive)return this.txDirtyTables.add(e.name),void(this.txSchemaChanged=!0);await this.persistSchema()}async dropTable(e){if(this.ensureOpen(),await this.memory.dropTable(e),this.txActive)return this.txDirtyTables.add(e),void(this.txSchemaChanged=!0);await this.persistSchema();const t=await this.collectTableDiff(e);await this.kv.writeBatch(t.puts,t.deletes)}async hasTable(e){return this.ensureOpen(),this.memory.hasTable(e)}async getTableNames(){return this.ensureOpen(),this.memory.getTableNames()}async getTableSchema(e){return this.ensureOpen(),this.memory.getTableSchema(e)}async alterTable(e,t,s){if(this.ensureOpen(),this.txActive)throw new n("ALTER TABLE is not supported inside a transaction (KVStoreEngine DDL is not transactional)","NOT_SUPPORTED");if(await this.memory.alterTable(e,t,s),this.txActive)return this.txDirtyTables.add(e),void(this.txSchemaChanged=!0);if(await this.persistSchema(),"DROP"===t){const t=await this.collectTableDiff(e);await this.kv.writeBatch(t.puts,t.deletes)}}async validatePayload(e,t,s="insert"){return this.ensureOpen(),this.memory.validatePayload(e,t,s)}async insert(e,t){this.ensureOpen();const s=await this.memory.insert(e,t);if(this.txActive){if(this.txDirtyTables.add(e),this.txClearedTables.has(e))return this.txClearedTables.delete(e),this.txFullTables.add(e),s;let t=this.txChanges.get(e);t||(t=new Map,this.txChanges.set(e,t));for(const e of s)t.set(e,"put");return s}if(!await this.memory.getTableSchema(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND");const i={};for(const t of s){const s=this.memory.getRow(e,t);s&&(i[this.rowKey(e,t)]=pe(JSON.stringify(s)))}return await this.kv.putMany(i),s}async find(e,t){return this.ensureOpen(),this.memory.find(e,t)}async findStream(e,t,s){return this.ensureOpen(),this.memory.findStream(e,t,s)}async update(e,t,s){this.ensureOpen();const i=await this.memory.getTableSchema(e);if(!i)throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND");const r=this.getPK(i),a=W(s),o=r in a,h=o?[]:await this.collectMatchingPks(e,t),c=await this.memory.update(e,t,a);if(this.txActive){if(this.txDirtyTables.add(e),o)for(const t of await this.affectedTables(e))this.txFullTables.add(t),this.txDirtyTables.add(t);else{let t=this.txChanges.get(e);t||(t=new Map,this.txChanges.set(e,t));for(const e of h)t.set(e,"put");for(const t of await this.affectedTables(e))t!==e&&(this.txFullTables.add(t),this.txDirtyTables.add(t))}return c}const l={},u=[];if(o)for(const t of await this.affectedTables(e)){const e=await this.collectTableDiff(t);Object.assign(l,e.puts),u.push(...e.deletes)}else{const t=new Set(h),s=await this.memory.find(e,{table:e});for(const n of s){const s=String(n[r]);t.has(s)&&(l[this.rowKey(e,s)]=pe(JSON.stringify(n)),t.delete(s))}for(const s of t)u.push(this.rowKey(e,s));for(const t of await this.affectedTables(e)){if(t===e)continue;const s=await this.collectTableDiff(t);Object.assign(l,s.puts),u.push(...s.deletes)}}return await this.kv.writeBatch(l,u),c}async delete(e,t){this.ensureOpen();const s=await this.collectMatchingPks(e,t),n=await this.memory.delete(e,t);if(this.txActive){this.txDirtyTables.add(e);let t=this.txChanges.get(e);t||(t=new Map,this.txChanges.set(e,t));for(const e of s)t.set(e,"delete");for(const t of await this.affectedTables(e))t!==e&&(this.txFullTables.add(t),this.txDirtyTables.add(t));return n}const i={},r=s.map(t=>this.rowKey(e,t));for(const t of await this.affectedTables(e)){if(t===e)continue;const s=await this.collectTableDiff(t);Object.assign(i,s.puts),r.push(...s.deletes)}return await this.kv.writeBatch(i,r),n}async count(e,t){return this.ensureOpen(),this.memory.count(e,t)}async clear(e){if(this.ensureOpen(),await this.memory.clear(e),this.txActive)return this.txDirtyTables.add(e),this.txClearedTables.add(e),void this.txChanges.delete(e);const t=await this.collectTableDiff(e);await this.kv.writeBatch(t.puts,t.deletes)}async createIndex(e,t,s){if(this.ensureOpen(),this.txActive)throw new n("CREATE INDEX is not supported inside a transaction (KVStoreEngine DDL is not transactional)","NOT_SUPPORTED");if(await this.memory.createIndex(e,t,s),this.txActive)return this.txDirtyTables.add(e),void(this.txSchemaChanged=!0);await this.persistSchema()}async dropIndex(e,t,s){if(this.ensureOpen(),this.txActive)throw new n("DROP INDEX is not supported inside a transaction (KVStoreEngine DDL is not transactional)","NOT_SUPPORTED");if(await this.memory.dropIndex(e,t,s),this.txActive)return this.txDirtyTables.add(e),void(this.txSchemaChanged=!0);await this.persistSchema()}async beginTransaction(){this.ensureOpen(),await this.memory.beginTransaction(),this.txActive=!0,this.txDirtyTables=new Set,this.txSchemaChanged=!1,this.txChanges=new Map,this.txFullTables=new Set,this.txClearedTables=new Set}async commitTransaction(){if(this.ensureOpen(),!this.txActive)throw new n("No active transaction","TX_NONE");const e={},t=[];for(const s of this.txDirtyTables){if(!await this.memory.hasTable(s)){const e=await this.kv.getAll(),n=this.rowPrefix(s);for(const[s]of e)s.startsWith(n)&&t.push(s);continue}if(this.txClearedTables.has(s)){const e=await this.kv.getAll(),n=this.rowPrefix(s);for(const[s]of e)s.startsWith(n)&&t.push(s);continue}if(this.txFullTables.has(s)){const n=await this.collectTableDiff(s);Object.assign(e,n.puts),t.push(...n.deletes);continue}const n=this.txChanges.get(s);if(n&&n.size>0){const i=await this.memory.getTableSchema(s);if(!i)continue;const r=this.getPK(i),a=new Map(n),o=await this.memory.find(s,{table:s});for(const n of o){const i=String(n[r]),o=a.get(i);void 0!==o&&("put"===o?e[this.rowKey(s,i)]=pe(JSON.stringify(n)):t.push(this.rowKey(s,i)),a.delete(i))}for(const[e,n]of a)"delete"===n&&t.push(this.rowKey(s,e))}}await this.kv.writeBatch(e,t),this.txSchemaChanged&&await this.persistSchema(),await this.memory.commitTransaction(),this.txActive=!1,this.txDirtyTables=new Set,this.txChanges=new Map,this.txFullTables=new Set,this.txClearedTables=new Set}async rollbackTransaction(){if(this.ensureOpen(),!this.txActive)throw new n("No active transaction","TX_NONE");await this.memory.rollbackTransaction(),this.txActive=!1,this.txDirtyTables=new Set,this.txSchemaChanged=!1,this.txChanges=new Map,this.txFullTables=new Set,this.txClearedTables=new Set}ensureOpen(){if(!this.opened)throw new n("Database not opened","DB_NOT_OPEN")}getPK(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}async collectMatchingPks(e,t){const s=await this.memory.getTableSchema(e);if(!s)throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND");const i=this.getPK(s);return(await this.memory.find(e,t)).map(e=>String(e[i]))}async affectedTables(e){const t=new Set([e]);let s=!0;for(;s;){s=!1;for(const e of await this.memory.getTableNames()){if(t.has(e))continue;const n=await this.memory.getTableSchema(e);if(n)for(const i of Object.values(n.columns))if(i.references){const n=i.references.split(".")[0];if(t.has(n)){t.add(e),s=!0;break}}}}return t}async persistSchema(){const e={};for(const t of await this.memory.getTableNames()){const s=await this.memory.getTableSchema(t);s&&(e[t]=s)}await this.kv.put(fe,pe(JSON.stringify(e)))}async collectTableDiff(e){const t=this.rowPrefix(e),s={},n=[],i=await this.memory.getTableSchema(e);if(i){const r=this.getPK(i),a=await this.memory.find(e,{table:e}),o=new Set;for(const t of a){const n=this.rowKey(e,String(t[r]));o.add(n),s[n]=pe(JSON.stringify(t))}const h=await this.kv.getAll();for(const[e]of h)e.startsWith(t)&&!o.has(e)&&n.push(e)}else{const e=await this.kv.getAll();for(const[s]of e)s.startsWith(t)&&n.push(s)}return{puts:s,deletes:n}}}const we=4096;var ge;!function(e){e[e.DATA=1]="DATA",e[e.INDEX=2]="INDEX",e[e.OVERFLOW=3]="OVERFLOW",e[e.META=4]="META"}(ge||(ge={}));const be=4194304;var Te,Ee;!function(e){e[e.INSERT=1]="INSERT",e[e.UPDATE=2]="UPDATE",e[e.DELETE=3]="DELETE",e[e.BEGIN=4]="BEGIN",e[e.COMMIT=5]="COMMIT",e[e.ROLLBACK=6]="ROLLBACK",e[e.CREATE_TABLE=7]="CREATE_TABLE",e[e.DROP_TABLE=8]="DROP_TABLE",e[e.SAVEPOINT_ROLLBACK=9]="SAVEPOINT_ROLLBACK"}(Te||(Te={})),function(e){e[e.ACTIVE=1]="ACTIVE",e[e.COMMITTED=2]="COMMITTED",e[e.ABORTED=3]="ABORTED"}(Ee||(Ee={}));const ke={pageSize:we,bufferPoolPages:256,memtableSizeThreshold:be,levelSizeMultiplier:10,bloomFilterBitsPerKey:10,walEnabled:!0,walSyncMode:"full",checkpointInterval:1e3,compression:!1,storageBackend:"opfs",walSizeThreshold:16777216,maxMemoryMB:64,encryption:void 0,pageStorage:void 0};var Se;!function(e){e[e.RED=0]="RED",e[e.BLACK=1]="BLACK"}(Se||(Se={}));class xe{constructor(e,t){this.color=Se.RED,this.left=null,this.right=null,this.parent=null,this.key=e,this.value=t}}class Ie{constructor(){this.root=null,this._size=0}get size(){return this._size}insert(e,t){const s=new xe(e,t);if(!this.root)return this.root=s,s.color=Se.BLACK,void this._size++;let n=null,i=this.root;for(;i;)if(n=i,ei.key))return void(i.value=t);i=i.right}s.parent=n,et.key))return t.value;t=t.right}return null}delete(e){const t=this.findNode(e);return!!t&&(this.deleteNode(t),this._size--,!0)}inorder(e){this._inorder(this.root,e)}rangeScan(e,t,s){this._rangeScan(this.root,e,t,s)}*scanLazy(e,t){const s=[];let n=this.root;for(;n;)n.key>=e?(s.push(n),n=n.left):n=n.right;for(;s.length>0;){const i=s.pop();if(i.key>t)break;for(i.key>=e&&(yield[i.key,i.value]),n=i.right;n;)s.push(n),n=n.left}}getAllEntries(){const e=[];return this.inorder((t,s)=>e.push([t,s])),e}clear(){this.root=null,this._size=0}findNode(e){let t=this.root;for(;t;)if(et.key))return t;t=t.right}return null}deleteNode(e){if(e.left||e.right)if(e.left)if(e.right){const t=this.minimum(e.right),s=t.right,n=t.parent;n!==e&&(this.transplant(t,s),t.right=e.right,t.right.parent=t),this.transplant(e,t),t.left=e.left,t.left.parent=t;const i=t.color;if(t.color=e.color,i===Se.BLACK){const i=s,r=i?i.parent:n===e?t:n;this.fixDelete(i,r)}}else this.transplant(e,e.left),e.color===Se.BLACK&&this.fixDelete(e.left,e.left.parent);else this.transplant(e,e.right),e.color===Se.BLACK&&this.fixDelete(e.right,e.right.parent);else this.transplant(e,null),e.color===Se.BLACK&&this.fixDelete(null,e.parent)}transplant(e,t){e.parent?e===e.parent.left?e.parent.left=t:e.parent.right=t:this.root=t,t&&(t.parent=e.parent)}minimum(e){for(;e.left;)e=e.left;return e}fixInsert(e){for(;e.parent&&e.parent.color===Se.RED;){const t=e.parent,s=t.parent;if(!s)break;if(t===s.left){const n=s.right;n&&n.color===Se.RED?(t.color=Se.BLACK,n.color=Se.BLACK,s.color=Se.RED,e=s):(e===t.right&&(e=t,this.rotateLeft(e)),e.parent&&(e.parent.color=Se.BLACK),e.parent?.parent&&(e.parent.parent.color=Se.RED),e.parent?.parent&&this.rotateRight(e.parent.parent))}else{const n=s.left;n&&n.color===Se.RED?(t.color=Se.BLACK,n.color=Se.BLACK,s.color=Se.RED,e=s):(e===t.left&&(e=t,this.rotateRight(e)),e.parent&&(e.parent.color=Se.BLACK),e.parent?.parent&&(e.parent.parent.color=Se.RED),e.parent?.parent&&this.rotateLeft(e.parent.parent))}}this.root&&(this.root.color=Se.BLACK)}fixDelete(e,t){let s=e,n=t;for(;(!s||s.color===Se.BLACK)&&s!==this.root&&n;)if(s===n.left){let e=n.right;if(!e)break;if(e.color===Se.RED&&(e.color=Se.BLACK,n.color=Se.RED,this.rotateLeft(n),e=n.right,!e))break;const t=e.left,i=e.right;if(t&&t.color!==Se.BLACK||i&&i.color!==Se.BLACK){if(!(i&&i.color!==Se.BLACK||(t&&(t.color=Se.BLACK),e.color=Se.RED,this.rotateRight(e),e=n.right,e)))break;e.color=n.color,n.color=Se.BLACK,e.right&&(e.right.color=Se.BLACK),this.rotateLeft(n),s=this.root}else e.color=Se.RED,s=n,n=s.parent}else{let e=n.left;if(!e)break;if(e.color===Se.RED&&(e.color=Se.BLACK,n.color=Se.RED,this.rotateRight(n),e=n.left,!e))break;const t=e.left,i=e.right;if(t&&t.color!==Se.BLACK||i&&i.color!==Se.BLACK){if(!(t&&t.color!==Se.BLACK||(i&&(i.color=Se.BLACK),e.color=Se.RED,this.rotateLeft(e),e=n.left,e)))break;e.color=n.color,n.color=Se.BLACK,e.left&&(e.left.color=Se.BLACK),this.rotateRight(n),s=this.root}else e.color=Se.RED,s=n,n=s.parent}s&&(s.color=Se.BLACK)}rotateLeft(e){const t=e.right;t&&(e.right=t.left,t.left&&(t.left.parent=e),t.parent=e.parent,e.parent?e===e.parent.left?e.parent.left=t:e.parent.right=t:this.root=t,t.left=e,e.parent=t)}rotateRight(e){const t=e.left;t&&(e.left=t.right,t.right&&(t.right.parent=e),t.parent=e.parent,e.parent?e===e.parent.right?e.parent.right=t:e.parent.left=t:this.root=t,t.right=e,e.parent=t)}_inorder(e,t){e&&(this._inorder(e.left,t),t(e.key,e.value),this._inorder(e.right,t))}_rangeScan(e,t,s,n){e&&(e.key>t&&this._rangeScan(e.left,t,s,n),e.key>=t&&e.key<=s&&n(e.key,e.value),e.key=this.maxSize}getAllEntries(){return this.tree.getAllEntries()}rangeScan(e,t){const s=[];return this.tree.rangeScan(e,t,(e,t)=>s.push([e,t])),s}scanLazy(e,t){return this.tree.scanLazy(e,t)}getEntryCount(){return this.tree.size}getEstimatedSize(){return this._estimatedSize}clear(){this.tree.clear(),this._estimatedSize=0}estimateEntrySize(e,t){if(!t)return 0;let s=2*e.length;for(const e of Object.entries(t)){s+=2*e[0].length;const t=e[1];s+="string"==typeof t?2*t.length:"number"==typeof t?8:"boolean"==typeof t||null==t?1:16}return s}}class Re{constructor(e,t=10){this._inserted=0;const s=Math.max(64,e*t),n=Math.ceil(s/8);this.bits=new Uint8Array(n),this.numHashes=Math.max(1,Math.floor(.69*t))}static fromData(e,t){const s=new Re(1);return s.bits=e,s.numHashes=t,s}insert(e){const t=this.getHashes(e);for(const e of t){const t=Math.floor(e/8),s=e%8;this.bits[t]|=1<>>0;return t}murmurSimple(e){let t=0;for(let s=0;s>>16)>>>0;return Math.abs(t)}}const Ce=1397969987;class Oe{constructor(e=4096){this.entries=[],this.blockSizeLimit=e}add(e,t){this.entries.push([e,t])}build(){const e=new TextEncoder,t=this.entries.map(([t,s])=>({key:t,keyBytes:e.encode(t),valueBytes:e.encode(JSON.stringify(s))})),s=this.splitIntoBlocks(t),n=new Re(this.entries.length);let i=0;const r=[];for(const e of s)r.push(i),i+=this.computeBlockSize(e);const a=[];for(let e=0;e=this.blockSizeLimit&&s.length>1&&(t.push(s.slice(0,-1)),s=[n]);return s.length>0&&t.push(s),t}computeBlockSize(e){let t=4;for(const s of e)t+=4+s.keyBytes.length+4+s.valueBytes.length;return t}writeDataBlock(e,t,s,n){e.setUint32(t,s.length,!1),t+=4;for(const i of s){if(i.keyBytes.length>4294967295||i.valueBytes.length>4294967295)throw new Error("SSTable entry too large (exceeds u32 length field)");e.setUint32(t,i.keyBytes.length,!1),t+=4,new Uint8Array(e.buffer).set(i.keyBytes,t),t+=i.keyBytes.length,e.setUint32(t,i.valueBytes.length,!1),t+=4,new Uint8Array(e.buffer).set(i.valueBytes,t),t+=i.valueBytes.length,n.insert(i.key)}return t}estimateIndexBlockSize(e){let t=4;const s=new TextEncoder;for(const n of e)t+=4+s.encode(n.key).byteLength+8;return t}writeIndexBlock(e,t,s){e.setUint32(t,s.length,!1),t+=4;for(const n of s){const s=(new TextEncoder).encode(n.key);e.setUint32(t,s.length,!1),t+=4,new Uint8Array(e.buffer).set(s,t),t+=s.length,e.setUint32(t,n.blockOffset,!1),t+=4,e.setUint32(t,n.blockSize,!1),t+=4}return t}}class Ne{constructor(e,t){this.indexEntries=[],this.entryCount=0,this.bloomFilter=null,this.format=2,this.storedChecksum=0,this.data=e,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.meta=t,this.parseFooter()}verifyChecksum(){return 0===this.storedChecksum||!(this.data.byteLength<4)&&ne(this.data.subarray(0,this.data.byteLength-4))===this.storedChecksum}lenFieldSize(){return 2===this.format?4:2}readLen(e){return 2===this.format?this.view.getUint32(e,!1):this.view.getUint16(e,!1)}get(e){if(this.bloomFilter&&!this.bloomFilter.mayContain(e))return null;const t=this.locateBlock(e);if(t<0)return null;const s=this.indexEntries[t],n=this.getBlockData(s);if(!n)return null;const i=new DataView(n.buffer,n.byteOffset,n.byteLength),r=this.lenFieldSize(),a=i.getUint32(0,!1);let o=4;for(let t=0;tn.byteLength);t++){const t=2===this.format?i.getUint32(o,!1):i.getUint16(o,!1);if(o+=r,o+t+r>n.byteLength)break;const s=(new TextDecoder).decode(n.slice(o,o+t));o+=t;const a=2===this.format?i.getUint32(o,!1):i.getUint16(o,!1);if(o+=r,o+a>n.byteLength)break;const h=n.slice(o,o+a);if(o+=a,s===e)try{return JSON.parse((new TextDecoder).decode(h))}catch{return null}}return null}rangeScan(e,t,s){for(const[n,i]of this.scanLazy(e,t))s(n,i)}*scanLazy(e,t){if(0===this.indexEntries.length)return;const s=Math.max(0,this.locateBlockGE(e)),n=Math.min(this.indexEntries.length-1,this.locateBlockLE(t)+1);if(s<0||n<0||s>n)return;const i=this.lenFieldSize();for(let r=s;r<=n&&r>=0;r++){const s=this.indexEntries[r],n=this.getBlockData(s);if(!n)continue;const a=new DataView(n.buffer,n.byteOffset,n.byteLength),o=a.getUint32(0,!1);let h=4;for(let s=0;sn.byteLength);s++){const s=2===this.format?a.getUint32(h,!1):a.getUint16(h,!1);if(h+=i,h+s+i>n.byteLength)break;const r=(new TextDecoder).decode(n.slice(h,h+s));h+=s;const o=2===this.format?a.getUint32(h,!1):a.getUint16(h,!1);if(h+=i,h+o>n.byteLength)break;const c=n.slice(h,h+o);if(h+=o,r>=e&&r<=t)try{const e=JSON.parse((new TextDecoder).decode(c));yield[r,e]}catch{}}}}scanAll(e){const t=this.lenFieldSize();for(const s of this.indexEntries){const n=this.getBlockData(s);if(!n)continue;const i=new DataView(n.buffer,n.byteOffset,n.byteLength),r=i.getUint32(0,!1);let a=4;for(let s=0;sn.byteLength);s++){const s=2===this.format?i.getUint32(a,!1):i.getUint16(a,!1);if(a+=t,a+s+t>n.byteLength)break;const r=(new TextDecoder).decode(n.slice(a,a+s));a+=s;const o=2===this.format?i.getUint32(a,!1):i.getUint16(a,!1);if(a+=t,a+o>n.byteLength)break;const h=n.slice(a,a+o);a+=o;try{e(r,JSON.parse((new TextDecoder).decode(h)))}catch{}}}}parseFooter(){if(this.data.byteLength<32)throw new Error("SSTable too small: missing footer");const e=this.data.byteLength-32,t=this.view.getUint32(e+24,!1);if(1397969986===t)this.format=1;else{if(t!==Ce)throw new Error(`Invalid SSTable magic: expected 1397969986 or 1397969987, got ${t}`);this.format=2}const s=this.view.getUint32(e,!1),n=this.view.getUint32(e+4,!1),i=this.view.getUint32(e+8,!1),r=this.view.getUint32(e+12,!1),a=this.view.getUint32(e+16,!1);if(this.entryCount=this.view.getUint32(e+20,!1),this.storedChecksum=this.view.getUint32(e+28,!1),!(s+4>this.data.byteLength||s+n>this.data.byteLength)&&(this.parseIndexBlock(s,n),i>0&&r>0&&i+r<=this.data.byteLength))try{const e=this.data.slice(i,i+r);this.bloomFilter=Re.fromData(e,a||10)}catch{}}parseIndexBlock(e,t){const s=this.view.getUint32(e,!1);e+=4;const n=this.lenFieldSize();for(let t=0;tthis.data.byteLength);t++){const t=this.readLen(e);if((e+=n)+t+8>this.data.byteLength)break;const s=(new TextDecoder).decode(this.data.slice(e,e+t));e+=t;const i=this.view.getUint32(e,!1);e+=4;const r=this.view.getUint32(e,!1);e+=4,0===r||i+r>this.data.byteLength||this.indexEntries.push({key:s,blockOffset:i,blockSize:r})}}getBlockData(e){return e.blockSize<=0||e.blockOffset<0||e.blockOffset+e.blockSize>this.data.byteLength?null:new Uint8Array(this.data.buffer,this.data.byteOffset+e.blockOffset,e.blockSize)}locateBlock(e){let t=0,s=this.indexEntries.length-1;for(;t<=s;){const n=Math.floor((t+s)/2);if(e<=this.indexEntries[n].key){if(e>(0===n?"":this.indexEntries[n-1].key))return n;s=n-1}else t=n+1}return-1}locateBlockGE(e){let t=0,s=this.indexEntries.length;for(;t>1;this.indexEntries[n].key>1;this.indexEntries[n].key<=e?t=n+1:s=n}return t>0?t-1:0}}class $e{constructor(e){this.index=0,this.entries=e}next(){return this.index>=this.entries.length?null:this.entries[this.index++]}reset(){this.index=0}}class Le{constructor(e){this.iter=e}next(){const e=this.iter.next();return e.done?null:e.value}reset(){}}class ve{constructor(){this.heap=[]}push(e){this.heap.push(e),this.bubbleUp(this.heap.length-1)}pop(){if(0===this.heap.length)return null;if(1===this.heap.length)return this.heap.pop();const e=this.heap[0];return this.heap[0]=this.heap.pop(),this.bubbleDown(0),e}peek(){return this.heap.length>0?this.heap[0]:null}get size(){return this.heap.length}bubbleUp(e){for(;e>0;){const t=Math.floor((e-1)/2);if(this.heap[e].key>=this.heap[t].key)break;[this.heap[e],this.heap[t]]=[this.heap[t],this.heap[e]],e=t}}bubbleDown(e){const t=this.heap.length;for(;;){let s=e;const n=2*e+1,i=2*e+2;if(n=0&&e.level<7&&this.levels[e.level].push(e);for(let e=0;e<7;e++)this.levels[e].sort((e,t)=>t.id-e.id);this.initialized=!0}put(e,t){this.levels[0].length>=8&&this.enqueueCompact(0),this.memtable.put(e,t),this.operationCount++,this.memtable.shouldFlush()&&this.freezeMemtable()}delete(e){this.levels[0].length>=8&&this.enqueueCompact(0),this.memtable.put(e,{__tombstone:!0}),this.operationCount++,this.memtable.shouldFlush()&&this.freezeMemtable()}getCacheSize(){return this.cacheSize}getCacheLimit(){return this.cacheLimitBytes}getOversizedCount(){return this.oversizedSSTables.size}setCacheLimit(e){this.cacheLimitBytes=Math.max(0,e),this.trimCache()}getEstimatedMemory(){let e=this.memtable.getEstimatedSize();for(const t of this.frozenMemtables)e+=t.getEstimatedSize();return e+=this.cacheSize,e}freezeMemtable(){if(this.immutableMemtable){const e=this.immutableMemtable;this.flushChain=this.enqueueOnChain(()=>this.flushImmutableAsync(e))}this.immutableMemtable=this.memtable,this.frozenMemtables.push(this.immutableMemtable),this.memtable=new Ae(this.memtableSizeThreshold)}enqueueOnChain(e){return this.flushChain.then(e).catch(e=>{this.lastBackgroundError=e})}async drainChain(){for(;;){const e=this.flushChain;if(await e,this.flushChain===e)return}}async flushImmutableAsync(e){const t=e.getAllEntries();if(0===t.length)return void(this.immutableMemtable===e&&(this.immutableMemtable=null));const s=await this.sstableStore.allocateId(),n=new Oe(this.blockSize);for(const[e,s]of t)n.add(e,s);const{sstableData:i,indexEntries:r}=n.build(),a={id:s,level:0,minKey:t[0][0],maxKey:t[t.length-1][0],blockCount:r.length,totalSize:i.byteLength,bloomData:null};this.tryCacheSSTable(s,i),this.trimCache(),await this.sstableStore.save(s,i),await this.sstableStore.saveMeta(a),this.immutableMemtable===e&&(this.immutableMemtable=null),this.levels[0].unshift(a),this.frozenMemtables=this.frozenMemtables.filter(t=>t!==e),this.levels[0].length>=4&&!this.compacting&&this.scheduleCompact(0)}scheduleCompact(e){e>=6||this.compacting||(this.compacting=!0,this.flushChain=this.enqueueOnChain(()=>this.compactLevelAsync(e).finally(()=>{this.compacting=!1,this.levels[e].length>=4&&this.scheduleCompact(e),e+1<6&&this.levels[e+1].length>=4&&this.scheduleCompact(e+1)})))}enqueueCompact(e){e>=6||this.compacting||(this.compacting=!0,this.flushChain=this.flushChain.then(async()=>{try{await this.compactLevelAsync(e)}finally{this.compacting=!1}}).catch(e=>{this.compacting=!1,this.lastBackgroundError=e}))}async prefetchRange(e,t){await this.drainChain(),this.trimCache();const s=[];for(let n=0;n<7;n++)for(const i of this.levels[n])ti.maxKey||this.sstableCache.has(i.id)||s.push(i.id);for(const e of s){const t=this.findMetaById(e);await this.preloadSSTable(e,t)}}async prefetchKeys(e){if(0===e.length)return;await this.drainChain(),this.trimCache();const t=new Set;for(let s=0;s<7;s++)for(const n of this.levels[s])if(!this.sstableCache.has(n.id))for(const s of e)if(s>=n.minKey&&s<=n.maxKey){t.add(n.id);break}for(const e of t){const t=this.findMetaById(e);await this.preloadSSTable(e,t)}}async prefetchPrefixRanges(e){if(0===e.length)return;const t=new Set,s=[];for(const n of e){const e=`${n[0]}\0${n[1]}`;t.has(e)||(t.add(e),s.push(n))}if(0===s.length)return;await this.drainChain(),this.trimCache();const n=new Set;for(let e=0;e<7;e++)for(const t of this.levels[e])if(!this.sstableCache.has(t.id))for(const[e,i]of s)if(!(it.maxKey)){n.add(t.id);break}for(const e of n){const t=this.findMetaById(e);await this.preloadSSTable(e,t)}}findMetaById(e){for(let t=0;t<7;t++)for(const s of this.levels[t])if(s.id===e)return s}async get(e){let t=this.memtable.get(e);if(null!==t)return this.unwrapTombstone(t);for(let s=this.frozenMemtables.length-1;s>=0;s--)if(t=this.frozenMemtables[s].get(e),null!==t)return this.unwrapTombstone(t);for(let t=0;t<7;t++)for(const s of this.levels[t]){if(es.maxKey)continue;const t=await this.loadSSTableReader(s);if(!t)continue;const n=t.get(e);if(null!==n)return this.unwrapTombstone(n)}return null}async rangeScan(e,t){const s=[];return await this.rangeScanLazy(e,t,(e,t)=>{s.push([e,t])}),s}async rangeScanLazy(e,t,s){const n=[];for(let s=0;s<7;s++)for(const i of this.levels[s]){if(ti.maxKey)continue;const s=await this.loadSSTableReader(i);s&&n.push({meta:i,reader:s})}const i=new Ue;i.addSource(new Le(this.memtable.scanLazy(e,t)));for(let s=this.frozenMemtables.length-1;s>=0;s--)i.addSource(new Le(this.frozenMemtables[s].scanLazy(e,t)));for(const{reader:s}of n)i.addSource(new Le(s.scanLazy(e,t)));let r=i.next();for(;r;){const[e,t]=r;if(!t.__tombstone&&!1===s(e,t))return;r=i.next()}}async compactLevel(e){await this.compactLevelAsync(e,2)}async compactLevelAsync(e,t=4){if(e>=6)return;if(this.levels[e].lengthr.push([e,t])),n.addSource(new $e(r)),i.push(e)}const r=n.drain();if(0===r.length){for(const t of i)this.levels[e].push(t);return void this.levels[e].sort((e,t)=>t.id-e.id)}const a=await this.sstableStore.allocateId(),o=new Oe(this.blockSize);for(const[e,t]of r)o.add(e,t);const{sstableData:h,indexEntries:c}=o.build(),l={id:a,level:e+1,minKey:r[0][0],maxKey:r[r.length-1][0],blockCount:c.length,totalSize:h.byteLength,bloomData:null};this.tryCacheSSTable(a,h),this.trimCache(),await this.sstableStore.save(a,h),await this.sstableStore.saveMeta(l),this.levels[e+1].unshift(l);for(const e of s)this.sstableCache.delete(e.id),await this.sstableStore.delete(e.id),await this.sstableStore.deleteMeta(e.id)}async flush(){if(null!==this.lastBackgroundError){const e=this.lastBackgroundError;throw this.lastBackgroundError=null,new n("AriaEngine background flush/compaction failed (data may be inconsistent)","ARIA_BACKGROUND_ERROR",e)}if(await this.drainChain(),this.immutableMemtable){const e=this.immutableMemtable;this.flushChain=this.enqueueOnChain(()=>this.flushImmutableAsync(e)),this.immutableMemtable=null}if(this.memtable.getEntryCount()>0){this.freezeMemtable();const e=this.immutableMemtable;e&&(this.flushChain=this.enqueueOnChain(()=>this.flushImmutableAsync(e)),this.immutableMemtable=null)}await this.drainChain(),this.frozenMemtables=this.frozenMemtables.filter(e=>e.getEntryCount()>0)}async clear(){await this.drainChain(),this.memtable.clear(),this.immutableMemtable=null,this.frozenMemtables=[];for(const e of this.levels)for(const t of e)this.sstableCache.delete(t.id),this.sstableStore.delete(t.id).catch(()=>{}),this.sstableStore.deleteMeta(t.id).catch(()=>{});this.levels=[];for(let e=0;e<7;e++)this.levels.push([]);this.sstableCache.clear(),this.cacheSize=0,this.oversizedSSTables.clear()}getStats(){return{memtableSize:this.memtable.getEntryCount(),sstableCount:this.levels.reduce((e,t)=>e+t.length,0),levelCounts:this.levels.map(e=>e.length)}}async validateAll(){let e=0;for(let t=0;t<7;t++){const s=[];for(const n of this.levels[t])await this.validateSSTable(n)?s.push(n):(this.sstableCache.delete(n.id),e++);this.levels[t]=s}return e}async validateSSTable(e){try{const t=await this.sstableStore.load(e.id);if(!t)return this.dropInvalidSSTable(e),!1;if(t.byteLength<32)return this.dropInvalidSSTable(e),!1;try{if(!new Ne(t,e).verifyChecksum())return this.dropInvalidSSTable(e),!1}catch{return this.dropInvalidSSTable(e),!1}return!0}catch{return this.dropInvalidSSTable(e),!1}}async dropInvalidSSTable(e){try{await this.sstableStore.delete(e.id)}catch{}try{await this.sstableStore.deleteMeta(e.id)}catch{}}unwrapTombstone(e){return e?e.__tombstone?null:e:null}async loadSSTableReader(e){let t=this.sstableCache.get(e.id);if(!t){const s=await this.sstableStore.load(e.id);if(!s)return await this.dropInvalidSSTable(e),null;try{if(!new Ne(s,e).verifyChecksum())return await this.dropInvalidSSTable(e),null}catch{return await this.dropInvalidSSTable(e),null}this.tryCacheSSTable(e.id,s),t=s}if(this.sstableCache.has(e.id)){const t=this.sstableCache.get(e.id);this.sstableCache.delete(e.id),this.sstableCache.set(e.id,t)}try{return new Ne(t,e)}catch{return null}}async preloadSSTable(e,t){if(this.sstableCache.has(e))return;const s=await this.sstableStore.load(e);if(s){if(t)try{if(!new Ne(s,t).verifyChecksum())return void await this.dropInvalidSSTable(t)}catch{return void await this.dropInvalidSSTable(t)}this.tryCacheSSTable(e,s)}}tryCacheSSTable(e,t){t.byteLength>this.cacheLimitBytes?this.oversizedSSTables.add(e):this.oversizedSSTables.delete(e),this.cacheSSTable(e,t)}cacheSSTable(e,t){this.sstableCache.has(e)&&(this.cacheSize-=this.sstableCache.get(e).byteLength,this.sstableCache.delete(e)),this.sstableCache.set(e,t),this.cacheSize+=t.byteLength}trimCache(){let e=0;const t=this.sstableCache.size;let s=this.sstableCache.keys().next().value;for(;this.cacheSize>this.cacheLimitBytes&&ee+t.byteLength,0),s=new Uint8Array(t);let n=0;for(const t of e)s.set(t,n),n+=t.byteLength;return s}async recover(e){if(!this.enabled)return 0;if(!await this.store.exists())return 0;const t=await this.store.readAll();if(0===t.byteLength)return 0;const s=this.decodeAllRecords(t);for(const t of s)e(t);return this.lsn=s.length>0?s[s.length-1].lsn:0,s.length}async checkpoint(){this.enabled&&(await this.flush(),await this.store.truncate(),this.lsn=0,this.bufferedBytes=0)}getBufferedCount(){return this.buffer.length}getBufferedBytes(){return this.bufferedBytes}legacyChecksum(e){let t=0;for(let s=0;s>>0}encodeRecord(e){const t=new TextEncoder,s=t.encode(e.tableName),n=t.encode(e.key),i=e.data?JSON.stringify(e.data):"",r=t.encode(i),a=11+s.length+2+n.length+4+r.length+4,o=new ArrayBuffer(a),h=new DataView(o);let c=0;h.setUint32(c,e.lsn,!1),c+=4,h.setUint8(c,e.type),c+=1,h.setUint32(c,e.txnId,!1),c+=4,h.setUint16(c,s.length,!1),c+=2,new Uint8Array(o).set(s,c),c+=s.length,h.setUint16(c,n.length,!1),c+=2,new Uint8Array(o).set(n,c),c+=n.length,h.setUint32(c,r.length,!1),c+=4,new Uint8Array(o).set(r,c),c+=r.length;const l=ne(new Uint8Array(o,0,c));return h.setUint32(c,l,!1),new Uint8Array(o)}decodeAllRecords(e){const t=[],s=new DataView(e.buffer,e.byteOffset,e.byteLength);let n=0;for(;n+15<=e.byteLength;)try{const i=n,r=s.getUint32(n,!1);n+=4;const a=s.getUint8(n);n+=1;const o=s.getUint32(n,!1);n+=4;const h=s.getUint16(n,!1);if(n+=2,n+h>e.byteLength)break;const c=(new TextDecoder).decode(e.slice(n,n+h));n+=h;const l=s.getUint16(n,!1);if(n+=2,n+l>e.byteLength)break;const u=(new TextDecoder).decode(e.slice(n,n+l));n+=l;const f=s.getUint32(n,!1);if(n+=4,n+f>e.byteLength)break;let d;if(f>0){const t=(new TextDecoder).decode(e.slice(n,n+f));try{d=JSON.parse(t)}catch{}}n+=f;const p=s.getUint32(n,!1);n+=4;const y=e.slice(i,n-4),m=ne(y),w=this.legacyChecksum(y);if(m>>>0!==p&&w>>>0!==p)continue;t.push({lsn:r,type:a,txnId:o,tableName:c,key:u,data:d,checksum:p})}catch{break}return t}}const Me="__wal_",Pe=/^__wal_(\d{6})\.bin$/,Be=/^__wal_(\d+)$/,Ke="__wal_count";class qe{constructor(e,t=4194304){this.backend=e,this.currentSegment=0,this.currentSize=0,this.segmentSize=t}segmentKey(e){return`${Me}${String(e).padStart(6,"0")}.bin`}async append(e){if(0===e.byteLength)return;this.currentSize+e.byteLength>this.segmentSize&&(this.currentSegment++,this.currentSize=0);const t=this.segmentKey(this.currentSegment),s=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("function"==typeof this.backend.append)await this.backend.append(t,s);else{const e=await this.backend.read(t);if(e){const n=new ArrayBuffer(e.byteLength+s.byteLength);new Uint8Array(n).set(new Uint8Array(e),0),new Uint8Array(n).set(new Uint8Array(s),e.byteLength),await this.backend.write(t,n)}else await this.backend.write(t,s)}this.currentSize+=e.byteLength}async readAll(){const e=await this.backend.listKeys(),t=e.filter(e=>Pe.test(e)).map(e=>({seq:Number(e.match(Pe)[1]),key:e})).sort((e,t)=>e.seq-t.seq);let s=0;for(let e=0;eBe.test(e)).map(e=>({seq:Number(e.match(Be)[1]),key:e})).sort((e,t)=>e.seq-t.seq),r=[];for(const{key:e}of i){const t=await this.backend.read(e);t&&r.push(new Uint8Array(t))}for(const{key:e}of n){const t=await this.backend.read(e);t&&r.push(new Uint8Array(t))}if(n.length>0){this.currentSegment=n[n.length-1].seq;const e=await this.backend.read(n[n.length-1].key);this.currentSize=e?e.byteLength:0,i.length>0&&(this.currentSegment++,this.currentSize=0)}else i.length>0&&(this.currentSegment=0,this.currentSize=0);const a=r.reduce((e,t)=>e+t.byteLength,0),o=new Uint8Array(a);let h=0;for(const e of r)o.set(e,h),h+=e.byteLength;return o}async truncate(){const e=(await this.backend.listKeys()).filter(e=>e.startsWith(Me)||e===Ke);e.length>0&&await this.backend.deleteMany(e),this.currentSegment=0,this.currentSize=0}async exists(){return(await this.backend.listKeys()).some(e=>e.startsWith(Me)||e===Ke)}}class Fe{constructor(){this.acquired=!1,this.supported=!1,this.releaseResolve=null,this.releasePromise=null}async acquire(e){const t=globalThis.navigator,s=t?.locks;return s&&"function"==typeof s.request?(this.supported=!0,await new Promise((t,i)=>{s.request.bind(s)(function(e){return`metona-sqlark:${e}`}(e),{ifAvailable:!0,mode:"exclusive"},async s=>{if(!s)return void i(new n(`Database "${e}" is already open in another tab (locked)`,"ARIA_LOCKED"));this.acquired=!0;const r=new Promise(e=>{this.releaseResolve=e});this.releasePromise=r,t(),await r})}),!0):(this.supported=!1,!1)}async release(){if(this.acquired){if(this.releaseResolve){const e=this.releaseResolve,t=this.releasePromise;this.releaseResolve=null,this.releasePromise=null,e();try{await t}catch{}}this.acquired=!1}}isAcquired(){return this.acquired}isSupported(){return this.supported}}class ze{constructor(e,t,s=null,n=1e3,i=16777216){this.opCount=0,this.lsm=e,this.wal=t,this.flushable=s,this.interval=n,this.walSizeThreshold=i}async tick(){this.opCount++,(this.opCount>=this.interval||this.getWALEstimatedSize()>=this.walSizeThreshold)&&await this.checkpoint()}getWALEstimatedSize(){const e=this.wal;if("function"==typeof e.getBufferedBytes){const t=e.getBufferedBytes();if(t>0)return t}return 200*("function"==typeof e.getBufferedCount?e.getBufferedCount():0)}async checkpoint(){await this.lsm.flush(),this.flushable&&await this.flushable.flushAll(),await this.wal.checkpoint(),this.opCount=0}}class je{constructor(){this.store=new Map,this.opened=!1}async open(e){this.opened=!0}async close(){this.store.clear(),this.opened=!1}isOpen(){return this.opened}async read(e){return this.store.get(e)??null}async write(e,t){this.store.set(e,t)}async writeMany(e){for(const[t,s]of Object.entries(e))this.store.set(t,s)}async delete(e){this.store.delete(e)}async deleteMany(e){for(const t of e)this.store.delete(t)}async listKeys(){return Array.from(this.store.keys())}async exists(e){return this.store.has(e)}async clear(){this.store.clear()}}class Ve{constructor(e,t){this.kv=new ue(e,t)}getKV(){return this.kv}async open(e){await this.kv.open(e)}async close(){await this.kv.close()}isOpen(){return this.kv.isOpen()}async read(e){return this.kv.get(e)}async write(e,t){await this.kv.put(e,t)}async append(e,t){await this.kv.appendValue(e,t)}async writeMany(e){await this.kv.putMany(e)}async delete(e){await this.kv.delete(e)}async deleteMany(e){await this.kv.deleteMany(e)}async listKeys(){return this.kv.listKeys()}async exists(e){return this.kv.exists(e)}async clear(){await this.kv.clear()}}const We="AES-GCM";class Ge{constructor(){this.cryptoKey=null,this._enabled=!1}get enabled(){return this._enabled}async init(e,t){const s=new TextEncoder,n=await crypto.subtle.importKey("raw",s.encode(e),"PBKDF2",!1,["deriveKey"]),i=t||crypto.getRandomValues(new Uint8Array(16));return this.cryptoKey=await crypto.subtle.deriveKey({name:"PBKDF2",salt:i,iterations:1e5,hash:"SHA-256"},n,{name:We,length:256},!1,["encrypt","decrypt"]),this._enabled=!0,i}async encryptPage(e){if(!this.cryptoKey)throw new Error("Crypto not initialized");const t=crypto.getRandomValues(new Uint8Array(12)),s=e instanceof Uint8Array?e:new Uint8Array(e);return{iv:t,data:await crypto.subtle.encrypt({name:We,iv:t},this.cryptoKey,s)}}async decryptPage(e,t){if(!this.cryptoKey)throw new Error("Crypto not initialized");const s=t instanceof Uint8Array?t:new Uint8Array(t);return crypto.subtle.decrypt({name:We,iv:e},this.cryptoKey,s)}close(){this.cryptoKey=null,this._enabled=!1}}const He=12,Xe="__aria_keymeta";function Qe(e){if("undefined"!=typeof Buffer)return Buffer.from(e).toString("base64");let t="";for(let s=0;se!==Xe))throw new n("Cannot open with encryption: existing database has no key metadata (database was created without encryption, or key metadata was lost)","ARIA_ENCRYPT_CONFIG_ERROR");const e=await this.crypto.init(this.password),t=await this.crypto.encryptPage((new TextEncoder).encode("metona-sqlark-encryption-verifier").buffer),s=new Uint8Array(He+t.data.byteLength);s.set(t.iv,0),s.set(new Uint8Array(t.data),He);const i=JSON.stringify({salt:Qe(e),verifier:Qe(s)});await this.inner.write(Xe,(new TextEncoder).encode(i).buffer)}this.opened=!0}async close(){await this.inner.close(),this.crypto.close(),this.opened=!1}isOpen(){return this.opened}async read(e){this.ensureReady();const t=await this.inner.read(e);return null===t?null:this.decrypt(t)}async write(e,t){this.ensureReady(),await this.inner.write(e,await this.encrypt(t))}async writeMany(e){this.ensureReady();const t={};for(const[s,n]of Object.entries(e))t[s]=await this.encrypt(n);await this.inner.writeMany(t)}async delete(e){this.ensureReady(),await this.inner.delete(e)}async deleteMany(e){this.ensureReady(),await this.inner.deleteMany(e)}async listKeys(){return this.ensureReady(),this.inner.listKeys()}async exists(e){return this.ensureReady(),this.inner.exists(e)}async clear(){const e=(await this.inner.listKeys()).filter(e=>e!==Xe);e.length>0&&await this.inner.deleteMany(e)}ensureReady(){if(!this.opened)throw new n("EncryptedBackend not opened","ARIA_DB_NOT_OPEN");if(!this.crypto.enabled)throw new n("EncryptedBackend key not initialized","ARIA_DECRYPT_ERROR")}async encrypt(e){const t=await this.crypto.encryptPage(e),s=new ArrayBuffer(He+t.data.byteLength),n=new Uint8Array(s);return n.set(t.iv,0),n.set(new Uint8Array(t.data),He),s}async decrypt(e){const t=new Uint8Array(e);if(t.byteLength<=He)throw new n("Corrupted encrypted data block (too short)","ARIA_DECRYPT_ERROR");const s=t.subarray(0,He),i=t.subarray(He);try{return await this.crypto.decryptPage(s,i)}catch(e){if(e instanceof n)throw e;throw new n("Decryption failed (data corrupted or wrong key)","ARIA_DECRYPT_ERROR",e)}}}class Ze{constructor(e,t){this.fileManager=e,this.bufferPool=t,this.pageIds=new Map}async save(e,t){const s=Math.max(1,Math.ceil(t.byteLength/we)),n=await this.bufferPool.newPages(s,ge.DATA),i=[];for(let e=0;ee+t.byteLength,0),r=new Uint8Array(Math.min(i,s));let a=0;for(const e of n){const t=Math.min(e.byteLength,r.byteLength-a);if(t<=0)break;r.set(e.subarray(0,t),a),a+=t}return this.pageIds.delete(e),r}async delete(e,t){for(const e of t){this.bufferPool.removePage(e);try{await this.fileManager.freePageId(e)}catch{}}this.pageIds.delete(e)}}class et{constructor(e){this.nextPageId=0,this.metaLoaded=!1,this.dbName="",this.backend=e}async init(e){this.dbName=e;const t=await this.backend.read("__aria_meta");let s=1;t&&t instanceof ArrayBuffer&&t.byteLength>=4&&(s=new DataView(t).getUint32(0,!1));const n=await this.backend.listKeys();for(const e of n)if(e.startsWith("pg_")){const t=Number.parseInt(e.slice(3),10);!Number.isNaN(t)&&t+1>s&&(s=t+1)}this.nextPageId=s,t&&t instanceof ArrayBuffer&&!(t.byteLength<4)&&s===new DataView(t).getUint32(0,!1)||await this.saveMeta(),this.metaLoaded=!0}async readPage(e){const t=`pg_${e}`,s=await this.backend.read(t);if(!s)return null;if(s.byteLengtht.txnId!==e);0===n.length?this.versionStore.delete(t):this.versionStore.set(t,n)}this.activeTxns.delete(e),this.txnWriteKeys.delete(e)}rollbackTransaction(e){const t=this.activeTxns.get(e);if(!t)throw new Error(`Transaction ${e} not found`);t.state=Ee.ABORTED;const s=this.txnWriteKeys.get(e);if(s)for(const t of s){const s=this.versionStore.get(t);if(!s)continue;const n=s.filter(t=>t.txnId!==e);0===n.length?this.versionStore.delete(t):this.versionStore.set(t,n)}this.activeTxns.delete(e),this.txnWriteKeys.delete(e)}writeVersion(e,t,s,n){const i=`${e}.${t}`,r=this.versionStore.get(i)??[],a={txnId:n,data:s,prevVersion:r.length>0?r[r.length-1]:null,committed:!1};r.push(a),this.versionStore.set(i,r),this.txnWriteKeys.get(n)?.add(i)}deleteVersion(e,t,s){this.writeVersion(e,t,{__mvcc_tombstone:!0},s)}discardVersions(e){const t=this.txnWriteKeys.get(e);if(t)for(const s of t){const t=this.versionStore.get(s);if(!t)continue;const n=t.filter(t=>t.txnId!==e);0===n.length?this.versionStore.delete(s):this.versionStore.set(s,n)}}gc(e=100){for(const[t,s]of this.versionStore){if(s.length<=e)continue;const n=s.slice(s.length-e);this.versionStore.set(t,n)}}getGlobalLSN(){return this.globalCommitLsn}}function st(e,t){const s=new ArrayBuffer(we);return function(e,t,s){const n=new DataView(e);n.setUint32(0,t,!1),n.setUint8(4,s),n.setUint16(5,16,!1),n.setUint16(7,e.byteLength,!1),n.setUint16(9,0,!1),n.setUint32(11,0,!1),n.setUint8(15,0)}(s,e,t),{pageId:e,type:t,data:s,dirty:!0,pins:0,prev:null,next:null,lastAccess:Date.now()}}class nt{constructor(){this.head=null,this.tail=null,this._size=0}get size(){return this._size}moveToHead(e){this.head!==e&&(null!==e.prev||null!==e.next||this.head===e||this.tail===e?this.detach(e):this._size++,e.prev=null,e.next=this.head,this.head&&(this.head.prev=e),this.head=e,this.tail||(this.tail=e))}remove(e){(null!==e.prev||null!==e.next||this.head===e||this.tail===e)&&(this.detach(e),this._size=Math.max(0,this._size-1))}detach(e){e.prev?e.prev.next=e.next:this.head===e&&(this.head=e.next),e.next?e.next.prev=e.prev:this.tail===e&&(this.tail=e.prev),e.prev=null,e.next=null}clear(){this.head=null,this.tail=null,this._size=0}getLRU(){return this.tail}}class it{constructor(e,t,s){this.lru=new nt,this.capacity=e,this.onEvict=t,this.onRemove=s}access(e){e.lastAccess=Date.now(),this.lru.moveToHead(e)}add(e){this.access(e)}remove(e){this.lru.remove(e)}async evictIfNeeded(e){let t=0;for(;this.lru.size+e>this.capacity&&this.lru.size>0;){const e=this.findEvictionCandidate();if(!e)break;e.dirty&&(await this.onEvict(e),e.dirty=!1),this.lru.remove(e),this.onRemove?.(e),t++}return t}findEvictionCandidate(){let e=this.lru.getLRU();for(;e;){if(0===e.pins&&!e.dirty)return e;e=e.prev}for(e=this.lru.getLRU();e;){if(0===e.pins)return e;e=e.prev}return null}clear(){this.lru.clear()}}class rt{constructor(e,t=256){this.pages=new Map,this.nextPageId=0,this.pageIO=e,this.eviction=new it(t,async e=>{e.dirty&&(await this.pageIO.writePage(e.pageId,e.data),e.dirty=!1)},e=>{this.pages.delete(e.pageId)})}async getPage(e){let t=this.pages.get(e);if(t)return this.eviction.access(t),t.pins++,t;const s=await this.pageIO.readPage(e);return s?(await this.eviction.evictIfNeeded(1),t={pageId:e,type:new DataView(s).getUint8(4),data:s,dirty:!1,pins:1,prev:null,next:null,lastAccess:Date.now()},this.pages.set(e,t),this.eviction.add(t),t):null}async newPages(e,t=ge.DATA){if(e<=0)return[];let s;if("function"==typeof this.pageIO.allocatePageIds)s=await this.pageIO.allocatePageIds(e);else{s=[];for(let t=0;t0&&e.pins--}markDirty(e){e.dirty=!0}async flushPage(e){const t=this.pages.get(e);t&&t.dirty&&(await this.pageIO.writePage(e,t.data),t.dirty=!1)}async flushAll(){for(const[,e]of this.pages)e.dirty&&(await this.pageIO.writePage(e.pageId,e.data),e.dirty=!1)}removePage(e){const t=this.pages.get(e);t&&(this.eviction.remove(t),this.pages.delete(e))}async clear(){await this.flushAll(),this.pages.clear(),this.eviction.clear()}}class at{constructor(e={}){this.name="aria",this.opened=!1,this.dbName="",this.dbLock=null,this.schemas=new Map,this.tablePKs=new Map,this.opCounter=0,this.secondaryIndexes=new Map,this.uniqueIndexCols=new Set,this.mvcc=new tt,this.currentTxnId=null,this.txnSnapshot=null,this.gcCounter=0,this.savepoints=new Map,this.txnWalRecordCount=0,this.savepointWalBoundary=new Map,this.config={...ke,...e}}async open(e,t){if(!this.opened)try{await this.openInternal(e)}catch(t){if(this.dbLock){try{await this.dbLock.release()}catch{}this.dbLock=null}if(t instanceof n)throw t;throw new n(`Failed to open AriaEngine database "${e}"`,"ARIA_OPEN_ERROR",t)}}async openInternal(e){this.dbName=e;const t=new Fe;let s;if(this.dbLock=t,await t.acquire(e),s="opfs"===this.config.storageBackend?new Q:"kv"===this.config.storageBackend?new Ve:new je,await s.open(e),this.config.encryption?.password)this.backend=new Ye(s,this.config.encryption.password);else if(this.backend=s,await s.exists("__aria_keymeta"))throw await s.close(),new n("Database is encrypted: provide encryption.password to open it","ARIA_ENCRYPT_REQUIRED");await this.backend.open(e),this.fileManager=new et(this.backend),await this.fileManager.init(e),this.bufferPool=new rt(this.fileManager,this.config.bufferPoolPages);const i=this.createSSTableStore("main");this.lsm=new De({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:i}),this.wal=new _e(new qe(this.backend),this.config.walEnabled,this.config.walSyncMode),await this.loadSchemas();for(const[e,t]of this.schemas){const s=this.tablePKs.get(e);for(const[n,i]of Object.entries(t.columns))if((i.index||i.unique)&&n!==s){const t=`${e}:idx:${n}`;if(!this.secondaryIndexes.has(t)){const s=new De({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e}_${n}`)});await s.init(),this.secondaryIndexes.set(t,s)}}}await this.lsm.init();const r=new Set,a=[];await this.wal.recover(e=>a.push(e));for(const e of a)e.type===Te.COMMIT&&r.add(e.txnId),e.type===Te.ROLLBACK&&r.delete(e.txnId);const o=new Map,h=new Map;for(let e=0;e=s.keepUpTo&&t0){await this.lsm.flush(),await this.wal.checkpoint();for(const e of this.schemas.keys())await this.reindexTableInternal(e)}this.checkpointManager=new ze(this.lsm,{checkpoint:async()=>{this.currentTxnId||await this.wal.checkpoint()},flush:async()=>{this.currentTxnId||await this.wal.flush()},getBufferedBytes:()=>this.wal.getBufferedBytes(),getBufferedCount:()=>this.wal.getBufferedCount()},{flushAll:async()=>{await this.lsm.flush();for(const e of this.secondaryIndexes.values())await e.flush()}},this.config.checkpointInterval,this.config.walSizeThreshold),this.opened=!0}async close(){if(this.opened){await this.persistSchemas(),await this.lsm.flush();for(const e of this.secondaryIndexes.values())await e.flush();await this.bufferPool.flushAll(),await this.wal.flush(),await this.wal.checkpoint(),await this.backend.close(),this.dbLock&&(await this.dbLock.release(),this.dbLock=null),this.schemas.clear(),this.tablePKs.clear(),this.secondaryIndexes.clear(),this.uniqueIndexCols.clear(),this.mvcc=new tt,this.currentTxnId=null,this.txnSnapshot=null,this.savepoints.clear(),this.opCounter=0,this.opened=!1}}async repair(){this.ensureOpen(),await this.bufferPool.clear(),await this.lsm.validateAll(),await this.lsm.flush(),await this.wal.checkpoint();for(const e of this.schemas.keys())await this.reindexTable(e);const e=this.backend;if("function"==typeof e.cleanupStaleFiles)try{await e.cleanupStaleFiles()}catch{}await this.cleanupOrphanPages()}async cleanupOrphanPages(){const e=(await this.backend.listKeys()).filter(e=>/^pg_\d+$/.test(e));if(0===e.length)return;const t=new Set,s=async e=>{const s="main"===e?"__aria_lsm_meta":`__aria_lsm_meta_${e}`,n=await this.backend.read(s);if(n)try{const e=JSON.parse((new TextDecoder).decode(n));for(const s of e)if(s.pageIds)for(const e of s.pageIds)t.add(e)}catch{}};await s("main");for(const[e,t]of this.schemas)for(const[n,i]of Object.entries(t.columns))(i.index||i.unique)&&await s(`idx_${e}_${n}`);const n=e.map(e=>Number(e.slice(3))).filter(e=>!t.has(e));n.length>0&&await this.backend.deleteMany(n.map(e=>`pg_${e}`))}async clearAll(){this.ensureOpen(),await this.backend.clear(),await this.bufferPool.clear(),await this.fileManager.clearAll(),this.schemas.clear(),this.tablePKs.clear(),this.secondaryIndexes.clear(),this.uniqueIndexCols.clear(),this.lsm.clear(),this.mvcc=new tt,this.currentTxnId=null,this.txnSnapshot=null,this.savepoints.clear(),this.opCounter=0,await this.persistSchemas(),await this.wal.checkpoint()}isOpen(){return this.opened}async getMeta(e){const t=await this.backend.read(`__meta_${e}`);return t?(new TextDecoder).decode(t):null}async setMeta(e,t){await this.backend.write(`__meta_${e}`,(new TextEncoder).encode(t).buffer)}async createTable(e){if(this.ensureOpen(),this.ensureNoDDLInTransaction("CREATE TABLE"),this.schemas.has(e.name))throw new n(`Table "${e.name}" already exists`,"TABLE_EXISTS");this.schemas.set(e.name,e),this.tablePKs.set(e.name,this.getPK(e));for(const[t,s]of Object.entries(e.columns))if(s.index||s.unique){const s=`${e.name}:idx:${t}`;if(!this.secondaryIndexes.has(s)){const n=new De({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e.name}_${t}`)});await n.init(),this.secondaryIndexes.set(s,n)}}await this.persistSchemas(),await this.wal.append({type:Te.CREATE_TABLE,txnId:0,tableName:e.name,key:"",data:{schema:JSON.stringify(e)}})}async dropTable(e){this.ensureOpen(),this.ensureNoDDLInTransaction("DROP TABLE"),this.ensureTable(e);const t=await this.getAllRows(e);for(const s of t){const t=this.tablePKs.get(e);this.lsm.delete(`${e}:${s[t]}`)}await this.cleanupTableIndexes(e);const s=`${e}:`;for(const e of this.uniqueIndexCols)e.startsWith(s)&&this.uniqueIndexCols.delete(e);this.schemas.delete(e),this.tablePKs.delete(e),await this.persistSchemas(),await this.wal.append({type:Te.DROP_TABLE,txnId:0,tableName:e,key:""})}async cleanupTableIndexes(e){const t=`${e}:idx:`,s=[];for(const[e,n]of this.secondaryIndexes)if(e.startsWith(t)){s.push(e);try{await n.clear()}catch{}}for(const e of s)this.secondaryIndexes.delete(e)}async hasTable(e){return this.ensureOpen(),this.schemas.has(e)}async getTableNames(){return this.ensureOpen(),Array.from(this.schemas.keys())}async getTableSchema(e){return this.ensureOpen(),this.schemas.get(e)??null}async insert(e,t){this.ensureOpen(),this.ensureTable(e);const s=this.schemas.get(e),i=this.tablePKs.get(e),r=[],a=[],o=this.uniqueColumns(e,s),h=[];for(const n of t){const t=this.validateRow(s,n),r=String(t[i]);h.push({row:t,pkValue:r,key:`${e}:${r}`})}await this.lsm.prefetchKeys(h.map(e=>e.key));const c=new Set;for(const{pkValue:t,key:s}of h){if(c.has(t))throw new n(`Duplicate primary key "${t}" in table "${e}"`,"DUPLICATE_KEY");c.add(t);const i=this.currentTxnId?this.txnSnapshot?.get(s)??await this.lsm.get(s):await this.lsm.get(s);if(i&&!i.__txn_deleted)throw new n(`Duplicate primary key "${t}" in table "${e}"`,"DUPLICATE_KEY")}for(const t of o){const s=this.secondaryIndexes.get(`${e}:idx:${t}`);await s.prefetchPrefixRanges(h.map(e=>{const s=e.row[t];if(null==s)return null;const n=`${String(s)}:`;return[n,`${n}￿`]}).filter(e=>null!==e))}const l=new Map;for(const{row:t,pkValue:s}of h)for(const i of o){const r=t[i];if(null==r)continue;const a=String(r);let o=l.get(i);if(o||(o=new Set,l.set(i,o)),o.has(a))throw new n(`Unique constraint violation on column "${i}" in table "${e}"`,"UNIQUE_VIOLATION");o.add(a),await this.checkUnique(e,[i],t,s)}for(const{row:t,pkValue:s,key:n}of h)this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(n,t),this.mvcc.writeVersion(e,s,t,this.currentTxnId)):this.lsm.put(n,t),this.updateSecondaryIndexes(e,s,t,null),r.push(s),a.push({type:Te.INSERT,txnId:this.currentTxnId??0,tableName:e,key:s,data:t});return await this.wal.appendBatch(a),this.txnWalRecordCount+=a.length,this.opCounter+=t.length,this.checkMemoryBudget(),await this.checkpointManager.tick(),this.tryGC(),r}async find(e,t){let s;this.ensureOpen(),this.ensureTable(e);const n=await this.tryIndexLookup(e,t);s=null!==n?n:await this.getAllRows(e),s=this.mergeTxnSnapshot(e,s),t.where&&Object.keys(t.where).length>0&&(s=s.filter(e=>S(e,t.where))),t.orderBy&&t.orderBy.length>0&&(s=P(s,t.orderBy));const i=t.offset??0,r=t.limit??s.length;return s=s.slice(i,i+r),t.columns&&t.columns.length>0&&"*"!==t.columns[0]&&(s=s.map(e=>K(e,t.columns))),this.trimAllCaches(),s.map(e=>o(e))}async update(e,t,s){this.ensureOpen(),this.ensureTable(e);const i=this.schemas.get(e),r=await this.getAllRows(e);let a=0;const o=[],h=new Set,c=W(s);for(const t of Object.keys(c))if(!i.columns[t])throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");const l=this.uniqueColumns(e,i);for(const t of l){const s=this.secondaryIndexes.get(`${e}:idx:${t}`),n=[];if(void 0!==c[t]&&null!==c[t]){const e=`${String(c[t])}:`;n.push([e,`${e}￿`])}else if(!(t in c))for(const e of r){const s=e[t];if(null==s)continue;const i=`${String(s)}:`;n.push([i,`${i}￿`])}await s.prefetchPrefixRanges(n)}const u=[],f=new Map,d=new Set;for(const s of r){const r=this.tablePKs.get(e),a=`${e}:${s[r]}`;if(t.where&&Object.keys(t.where).length>0&&!S(s,t.where))continue;const o={...s,...c};this.validateRow(i,o),this.checkBatchUnique(e,l,o,f),await this.checkUnique(e,l,o,String(s[r]));const h=String(o[r]),p=h!==String(s[r]);if(p){const t=`${e}:${h}`,s=this.currentTxnId?this.txnSnapshot?.get(t)??await this.lsm.get(t):await this.lsm.get(t);if(s&&!s.__txn_deleted)throw new n(`Duplicate primary key "${h}" in table "${e}" (cannot update key to existing value)`,"DUPLICATE_KEY");if(d.has(h))throw new n(`Duplicate primary key "${h}" in table "${e}" (multiple rows in the same statement update to the same key)`,"DUPLICATE_KEY");d.add(h)}u.push({row:s,pk:String(s[r]),key:a,updated:o,newPk:h,pkChanged:p})}for(const t of u)t.pkChanged&&await this.checkForeignKeyUpdateRestrict(e,t.pk,t.newPk);for(const{row:t,pk:s,key:n,updated:i,newPk:r,pkChanged:c}of u)c&&await this.applyForeignKeyUpdateRules(e,s,r,o,h),this.currentTxnId&&this.txnSnapshot?(c&&(this.txnSnapshot.set(n,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,s,this.currentTxnId)),this.txnSnapshot.set(`${e}:${r}`,i),this.mvcc.writeVersion(e,r,i,this.currentTxnId)):(c&&this.lsm.delete(n),this.lsm.put(`${e}:${r}`,i)),a++,c&&o.push({type:Te.DELETE,txnId:this.currentTxnId??0,tableName:e,key:s}),o.push({type:Te.UPDATE,txnId:this.currentTxnId??0,tableName:e,key:r,data:i}),this.updateSecondaryIndexes(e,r,i,t);return await this.wal.appendBatch(o),this.txnWalRecordCount+=o.length,this.opCounter+=a,await this.checkpointManager.tick(),this.trimAllCaches(),a}checkBatchUnique(e,t,s,i){for(const r of t){const t=s[r];if(null==t)continue;let a=i.get(r);if(a||(a=new Set,i.set(r,a)),a.has(t))throw new n(`Unique constraint violation on column "${r}" in table "${e}"`,"UNIQUE_VIOLATION");a.add(t)}}async checkForeignKeyUpdateRestrict(e,t,s){for(const[s,i]of this.schemas)if(s!==e)for(const[r,a]of Object.entries(i.columns)){if(!a.references||!a.onUpdate)continue;const[i]=a.references.split(".");if(i===e&&("RESTRICT"===a.onUpdate||"SET NULL"===a.onUpdate&&a.required)){const i=await this.getAllRows(s);for(const o of i)if(String(o[r])===t){const i="RESTRICT"===a.onUpdate?`foreign key "${r}" in "${s}" has dependent rows`:`foreign key "${r}" in "${s}" is required (SET NULL violates constraint)`;throw new n(`Cannot update "${e}" key "${t}": ${i}`,"FOREIGN_KEY_VIOLATION")}}}}async applyForeignKeyUpdateRules(e,t,s,n,i){const r=`${e}:${t}`;if(!i.has(r)){i.add(r);for(const[i,r]of this.schemas)if(i!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onUpdate)continue;const[r]=o.references.split(".");if(r!==e)continue;if("CASCADE"!==o.onUpdate&&"SET NULL"!==o.onUpdate)continue;const h=await this.getAllRows(i);for(const e of h){if(String(e[a])!==t)continue;const r=this.tablePKs.get(i),h=String(e[r]),c={...e,[a]:"CASCADE"===o.onUpdate?s:null},l=`${i}:${h}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(l,c),this.mvcc.writeVersion(i,h,c,this.currentTxnId)):this.lsm.put(l,c),this.updateSecondaryIndexes(i,h,c,e),n.push({type:Te.UPDATE,txnId:this.currentTxnId??0,tableName:i,key:h,data:c})}}}}async delete(e,t){this.ensureOpen(),this.ensureTable(e);const s=await this.getAllRows(e);let n=0;const i=[],r=new Set,a=[];for(const n of s)t.where&&0!==Object.keys(t.where).length&&!S(n,t.where)||a.push(String(n[this.tablePKs.get(e)]));const o=new Set;for(const t of a)await this.checkCascadeRestrict(e,t,o);for(const a of s){const s=this.tablePKs.get(e),o=`${e}:${a[s]}`;t.where&&0!==Object.keys(t.where).length&&!S(a,t.where)||(n+=await this.applyForeignKeyRules(e,String(a[s]),i,r),this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(o,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(a[s]),this.currentTxnId)):this.lsm.delete(o),n++,i.push({type:Te.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(a[s])}),this.updateSecondaryIndexes(e,String(a[s]),null,a))}return await this.wal.appendBatch(i),this.txnWalRecordCount+=i.length,this.opCounter+=n,await this.checkpointManager.tick(),this.trimAllCaches(),n}async checkCascadeRestrict(e,t,s){const i=`${e}:${t}`;if(!s.has(i)){s.add(i);for(const[i,r]of this.schemas)if(i!==e)for(const[a,o]of Object.entries(r.columns)){if(!o.references||!o.onDelete)continue;const[r]=o.references.split(".");if(r!==e)continue;const h=(await this.getAllRows(i)).filter(e=>String(e[a])===t);if("RESTRICT"===o.onDelete&&h.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${i}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("SET NULL"===o.onDelete&&o.required&&h.length>0)throw new n(`Cannot delete from "${e}": foreign key "${a}" in "${i}" is required (SET NULL violates constraint)`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===o.onDelete){const e=this.tablePKs.get(i);for(const t of h)await this.checkCascadeRestrict(i,String(t[e]),s)}}}}async applyForeignKeyRules(e,t,s,i){let r=0;const a=`${e}:${t}`;if(i.has(a))return 0;i.add(a);for(const[a,o]of this.schemas)if(a!==e)for(const[h,c]of Object.entries(o.columns)){if(!c.references||!c.onDelete)continue;const[o]=c.references.split(".");if(o!==e)continue;const l=(await this.getAllRows(a)).filter(e=>String(e[h])===t);if("RESTRICT"===c.onDelete&&l.length>0)throw new n(`Cannot delete from "${e}": foreign key "${h}" in "${a}" has dependent rows`,"FOREIGN_KEY_VIOLATION");if("CASCADE"===c.onDelete){const e=this.tablePKs.get(a);for(const t of l){const n=String(t[e]);r+=await this.applyForeignKeyRules(a,n,s,i);const o=`${a}:${n}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(o,{__txn_deleted:!0}),this.mvcc.deleteVersion(a,n,this.currentTxnId)):this.lsm.delete(o),this.updateSecondaryIndexes(a,n,null,t),s.push({type:Te.DELETE,txnId:this.currentTxnId??0,tableName:a,key:n}),r++}}else if("SET NULL"===c.onDelete){const e=this.tablePKs.get(a);for(const t of l){const n=String(t[e]),i={...t,[h]:null},r=`${a}:${n}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(r,i),this.mvcc.writeVersion(a,n,i,this.currentTxnId)):this.lsm.put(r,i),this.updateSecondaryIndexes(a,n,i,t),s.push({type:Te.UPDATE,txnId:this.currentTxnId??0,tableName:a,key:n,data:i})}}}return r}async findStream(e,t,s){this.ensureOpen(),this.ensureTable(e);const n=!!(t.where&&Object.keys(t.where).length>0),i=t.columns&&t.columns.length>0&&"*"!==t.columns[0]?e=>K(e,t.columns):null,r=t.limit??1/0,a=t.offset??0,h=this.tablePKs.get(e),c=`${e}:`;let l=0,u=0;const f=e=>!(!n||S(e,t.where))||(u{if(l>=r)return!1;const s={...t};return s[h]=e.slice(c.length),f(s)}),l}async count(e,t){this.ensureOpen(),this.ensureTable(e);const s=await this.getAllRows(e);return this.trimAllCaches(),t?.where&&0!==Object.keys(t.where).length?s.filter(e=>S(e,t.where)).length:s.length}async clear(e){this.ensureOpen(),this.ensureTable(e);const t=await this.getAllRows(e),s=[];for(const n of t){const t=this.tablePKs.get(e),i=`${e}:${n[t]}`;this.currentTxnId&&this.txnSnapshot?(this.txnSnapshot.set(i,{__txn_deleted:!0}),this.mvcc.deleteVersion(e,String(n[t]),this.currentTxnId)):this.lsm.delete(i),s.push({type:Te.DELETE,txnId:this.currentTxnId??0,tableName:e,key:String(n[t])}),this.updateSecondaryIndexes(e,String(n[t]),null,n)}await this.wal.appendBatch(s),this.txnWalRecordCount+=s.length,this.opCounter+=t.length,await this.checkpointManager.tick(),this.tryGC()}async alterTable(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("ALTER TABLE"),this.ensureTable(e);const i=this.schemas.get(e);if("ADD"===t){if(i.columns[s.name])throw new n(`Column "${s.name}" already exists in table "${e}"`,"COLUMN_EXISTS");return i.columns[s.name]=s,(s.index||s.unique)&&await this.createIndex(e,s.name,!0===s.unique),void await this.persistSchemas()}if(!i.columns[s.name])throw new n(`Column "${s.name}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.columns[s.name].index||i.columns[s.name].unique){const t=`${e}:idx:${s.name}`,n=this.secondaryIndexes.get(t);if(n){try{await n.clear()}catch{}this.secondaryIndexes.delete(t)}}delete i.columns[s.name],await this.persistSchemas();const r=`${e}:`,a=`${r}￿`;await this.lsm.prefetchRange(r,a);const o=await this.lsm.rangeScan(r,a),h=[];for(const[t,n]of o){if(!(s.name in n))continue;const i={...n};delete i[s.name],this.lsm.put(t,i);const a=t.slice(r.length);this.updateSecondaryIndexes(e,a,i,n),h.push({type:Te.UPDATE,txnId:this.currentTxnId??0,tableName:e,key:a,data:i})}await this.wal.appendBatch(h),this.txnWalRecordCount+=h.length,this.opCounter+=h.length,await this.checkpointManager.tick(),this.trimAllCaches()}async createIndex(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("CREATE INDEX"),this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");const r=`${e}:idx:${t}`;if(this.secondaryIndexes.has(r))return;const a=new De({memtableSizeThreshold:this.config.memtableSizeThreshold,levelSizeMultiplier:this.config.levelSizeMultiplier,blockSize:this.config.pageSize,bloomBitsPerKey:this.config.bloomFilterBitsPerKey,cacheLimitBytes:this.config.bufferPoolPages*this.config.pageSize,sstableStore:this.createSSTableStore(`idx_${e}_${t}`)});await a.init(),this.secondaryIndexes.set(r,a);try{const i=this.tablePKs.get(e),r=await this.getAllRows(e),o=new Set;for(const h of r){const r=h[t];if(null!=r){const c=String(r);if(s&&o.has(c))throw new n(`Unique index on column "${t}" in table "${e}" cannot be created: duplicate value "${c}"`,"UNIQUE_VIOLATION");o.add(c),a.put(`${c}:${h[i]}`,{pk:h[i]})}}await a.flush()}catch(e){this.secondaryIndexes.delete(r);try{await a.clear()}catch{}throw e}i.index=!0,s&&(i.unique=!0,this.uniqueIndexCols.add(`${e}:${t}`)),await this.persistSchemas()}async dropIndex(e,t,s){this.ensureOpen(),this.ensureNoDDLInTransaction("DROP INDEX"),this.ensureTable(e);const i=this.schemas.get(e).columns[t];if(!i)throw new n(`Column "${t}" does not exist in table "${e}"`,"COLUMN_NOT_FOUND");if(i.primaryKey)throw new n(`Cannot drop primary key index on column "${t}"`,"NOT_SUPPORTED");if(!i.index&&!i.unique&&!this.secondaryIndexes.has(`${e}:idx:${t}`))throw new n(`Index on column "${t}" does not exist in table "${e}"`,"INDEX_NOT_FOUND");const r=`${e}:${t}`;if(i.unique&&!this.uniqueIndexCols.has(r))throw new n(`Cannot drop index on column "${t}" in table "${e}": UNIQUE constraint defined at table creation must be removed by recreating the table`,"NOT_SUPPORTED");i.index=!1,i.unique=!1,this.uniqueIndexCols.delete(r);const a=`${e}:idx:${t}`,o=this.secondaryIndexes.get(a);o&&(await o.clear(),this.secondaryIndexes.delete(a)),await this.persistSchemas()}async beginTransaction(){if(this.currentTxnId)throw new n("Transaction already in progress","TX_ACTIVE");this.currentTxnId=this.mvcc.beginTransaction(),this.txnSnapshot=new Map,this.txnWalRecordCount=0;try{await this.wal.append({type:Te.BEGIN,txnId:this.currentTxnId,tableName:"",key:""}),this.txnWalRecordCount=1}catch(e){throw this.mvcc.rollbackTransaction(this.currentTxnId),this.currentTxnId=null,this.txnSnapshot=null,e}}async commitTransaction(){if(!this.currentTxnId)throw new n("No active transaction","TX_NONE");if(await this.wal.append({type:Te.COMMIT,txnId:this.currentTxnId,tableName:"",key:""}),await this.wal.flush(),this.txnSnapshot)for(const[e,t]of this.txnSnapshot)t.__txn_deleted?this.lsm.delete(e):this.lsm.put(e,t);this.mvcc.commitTransaction(this.currentTxnId),this.savepoints.clear(),this.savepointWalBoundary.clear(),this.txnWalRecordCount=0,this.currentTxnId=null,this.txnSnapshot=null}async rollbackTransaction(){if(!this.currentTxnId)throw new n("No active transaction","TX_NONE");const e=this.currentTxnId;await this.wal.append({type:Te.ROLLBACK,txnId:e,tableName:"",key:""});const t=new Set;if(this.txnSnapshot)for(const e of this.txnSnapshot.keys()){const s=e.indexOf(":");s>0&&t.add(e.slice(0,s))}this.mvcc.rollbackTransaction(e),this.txnSnapshot=null,this.savepoints.clear(),this.savepointWalBoundary.clear(),this.txnWalRecordCount=0,this.currentTxnId=null;for(const e of t)this.schemas.has(e)&&await this.reindexTable(e)}async savepoint(e){if(!this.currentTxnId)throw new n("No active transaction for savepoint","TX_NONE");if(this.savepoints.has(e))throw new n(`Savepoint "${e}" already exists`,"SAVEPOINT_EXISTS");this.savepoints.set(e,{txnId:this.currentTxnId,snapshot:this.txnSnapshot?new Map(this.txnSnapshot):null}),this.savepointWalBoundary.set(`${this.currentTxnId}:${e}`,this.txnWalRecordCount)}async rollbackToSavepoint(e){const t=this.savepoints.get(e);if(!t)throw new n(`Savepoint "${e}" not found`,"SAVEPOINT_NOT_FOUND");if(t.txnId!==this.currentTxnId)throw new n(`Savepoint "${e}" belongs to a different transaction (stale savepoint)`,"SAVEPOINT_NOT_FOUND");const s=this.savepointWalBoundary.get(`${this.currentTxnId}:${e}`)??0;await this.wal.append({type:Te.SAVEPOINT_ROLLBACK,txnId:this.currentTxnId,tableName:"",key:"",data:{replayFromIndex:s}}),this.txnWalRecordCount++,this.savepointWalBoundary.set(`${this.currentTxnId}:${e}`,s);const i=new Set;if(this.txnSnapshot)for(const e of this.txnSnapshot.keys()){const t=e.indexOf(":");t>0&&i.add(e.slice(0,t))}this.txnSnapshot=t.snapshot?new Map(t.snapshot):null,this.mvcc.discardVersions(this.currentTxnId);let r=!1;for(const[t]of this.savepoints)t!==e?r&&this.savepoints.delete(t):r=!0;for(const e of i)this.schemas.has(e)&&await this.reindexTable(e)}async releaseSavepoint(e){if(!this.savepoints.has(e))throw new n(`Savepoint "${e}" not found`,"SAVEPOINT_NOT_FOUND");this.savepoints.delete(e)}async backup(){this.ensureOpen();const e={};for(const t of this.schemas.keys())e[t]=await this.getAllRows(t);return e}async getAllRows(e){const t=this.tablePKs.get(e),s=`${e}:`;await this.lsm.prefetchRange(s,`${s}￿`);const n=(await this.lsm.rangeScan(s,`${s}￿`)).map(([e,n])=>{const i=o(n);return i[t]=e.slice(s.length),i});return this.mergeTxnSnapshot(e,n)}mergeTxnSnapshot(e,t){if(!this.currentTxnId||!this.txnSnapshot)return t;const s=this.tablePKs.get(e),n=`${e}:`;for(const[e,i]of this.txnSnapshot){if(!e.startsWith(n))continue;const r=e.slice(n.length),a=i.__txn_deleted,o=t.findIndex(e=>e[s]===r);if(a)o>=0&&t.splice(o,1);else{const e={...i,[s]:r};o>=0?t[o]=e:t.push(e)}}return t}getPK(e){for(const[t,s]of Object.entries(e.columns))if(s.primaryKey)return t;return Object.keys(e.columns)[0]}validateRow(e,t){return q(e).validateRow(t)}async validatePayload(e,t,s="insert"){this.ensureTable(e);const n=q(this.schemas.get(e));for(const e of t)"update"===s?n.validatePartial(W(e)):n.validateRow(e)}async persistSchemas(){const e={};for(const[t,s]of this.schemas)e[t]=s.columns;const t=JSON.stringify(e),s=(new TextEncoder).encode(t).buffer;await this.backend.write("__aria_schemas",s)}async loadSchemas(){const e=await this.backend.read("__aria_schemas");if(e)try{const t=(new TextDecoder).decode(e),s=JSON.parse(t);for(const[e,t]of Object.entries(s)){const s={name:e,columns:t};this.schemas.set(e,s),this.tablePKs.set(e,this.getPK(s))}}catch{}}createSSTableStore(e){const t="main"===e?"sst_":`sst_${e}_`,s="main"===e?"__aria_lsm_meta":`__aria_lsm_meta_${e}`;let n=0,i=!1;const r=this.isPageStorage()?new Ze(this.fileManager,this.bufferPool):null,a=e=>(new TextEncoder).encode(e).buffer,o=async()=>{const e=await this.backend.read(s);if(!e)return[];try{return JSON.parse((new TextDecoder).decode(e))}catch{return[]}};return{save:async(e,s)=>{if(r)return void await r.save(e,s);let n=s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength);if(this.config.compression){const e=function(e){if(0===e.byteLength){const e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,0,!0),e}const t=e.byteLength+Math.ceil(e.byteLength/15)+8,s=new Uint8Array(t);let n=0,i=0,r=0;for(;n=4&&i>t&&(t=i,a=n-s)}if(t>4&&n-r<=15){const o=n-r,h=t-4;s[i++]=(15&o)<<4|15&h;for(let t=0;t>8&255,n+=t,r=n}else if(n++,n-r>=15){s[i++]=240;for(let t=0;t<15;t++)s[i++]=e[r+t];r=n}}let a=n-r;for(;a>0;){const t=Math.min(a,15);s[i++]=(15&t)<<4;for(let n=0;n{if(r){const t=(await o()).find(t=>t.id===e);if(t&&t.pageIds&&t.pageIds.length>0)return r.load(e,t.pageIds,t.totalSize)}const s=await this.backend.read(`${t}${e}`);if(!s)return null;let n=new Uint8Array(s);return this.config.compression&&(n=function(e){if(e.byteLength<4)throw new Error("LZ4 stream too short: missing header");const t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(0,!0);if(0===t&&4===e.byteLength)return new Uint8Array(0);if(t<=0||t>1073741823)throw new Error("Invalid LZ4 header: bad original size");const s=e.subarray(4),n=new Uint8Array(t);let i=0,r=0;for(;i>4&15,o=15&e;for(let e=0;e=s.byteLength)break;const h=s[i++]|s[i++]<<8,c=o+4;for(let e=0;e{if(r){const t=(await o()).find(t=>t.id===e);t&&t.pageIds&&t.pageIds.length>0&&await r.delete(e,t.pageIds)}await this.backend.delete(`${t}${e}`)},allocateId:async()=>{if(!i){const e=await o();n=e.reduce((e,t)=>Math.max(e,t.id),0),i=!0}return++n},listMeta:o,saveMeta:async e=>{const t=await o(),n=r?.getPageIds(e.id),i=n&&n.length>0?{...e,pageIds:n}:e,h=t.findIndex(t=>t.id===e.id);h>=0?t[h]=i:t.push(i),await this.backend.write(s,a(JSON.stringify(t)))},deleteMeta:async e=>{const t=(await o()).filter(t=>t.id!==e);await this.backend.write(s,a(JSON.stringify(t)))}}}isPageStorage(){return!0===this.config.pageStorage||!1!==this.config.pageStorage&&("opfs"===this.config.storageBackend||"kv"===this.config.storageBackend)}applyWALRecord(e){switch(e.type){case Te.INSERT:case Te.UPDATE:e.data&&this.lsm.put(`${e.tableName}:${e.key}`,e.data);break;case Te.DELETE:this.lsm.delete(`${e.tableName}:${e.key}`);break;case Te.CREATE_TABLE:if(e.data?.schema)try{const t=JSON.parse(e.data.schema);this.schemas.has(t.name)||(this.schemas.set(t.name,t),this.tablePKs.set(t.name,this.getPK(t)))}catch{}case Te.COMMIT:case Te.ROLLBACK:case Te.BEGIN:}}async applyDropTableRecovery(e){if(!e)return;await this.cleanupTableIndexes(e),this.schemas.delete(e),this.tablePKs.delete(e);const t=`${e}:`,s=`${t}￿`;await this.lsm.prefetchRange(t,s);const n=await this.lsm.rangeScan(t,s);for(const[e]of n)this.lsm.delete(e)}uniqueColumns(e,t){const s=[];for(const[n,i]of Object.entries(t.columns))i.unique&&this.secondaryIndexes.has(`${e}:idx:${n}`)&&s.push(n);return s}async checkUnique(e,t,s,i){for(const r of t){const t=s[r];if(null==t)continue;const a=this.secondaryIndexes.get(`${e}:idx:${r}`);if(!a)continue;const o=`${String(t)}:`,h=await a.rangeScan(o,`${o}￿`);for(const[,t]of h){const s=t.pk;if(void 0!==s&&s!==i)throw new n(`Unique constraint violation on column "${r}" in table "${e}"`,"UNIQUE_VIOLATION")}}}updateSecondaryIndexes(e,t,s,n){const i=this.schemas.get(e);if(i)for(const[r,a]of Object.entries(i.columns)){if(!a.index&&!a.unique)continue;const i=`${e}:idx:${r}`,o=this.secondaryIndexes.get(i);if(o){if(n){const e=n[r];null!=e&&o.delete(`${String(e)}:${t}`)}if(s){const e=s[r];null!=e&&o.put(`${String(e)}:${t}`,{pk:t})}}}}async tryIndexLookup(e,t){if(!t.where)return null;const s=this.schemas.get(e);if(!s)return null;const n=this.tablePKs.get(e),i=[],r=e=>{for(const[t,s]of Object.entries(e))if("$and"!==t)"$or"!==t&&"$not"!==t&&"$exists"!==t&&i.push([t,s]);else for(const e of s)r(e)};r(t.where);for(const[t,r]of i){const i=s.columns[t];if(!(i&&(i.index||i.unique||i.primaryKey)||t===n))continue;if(t===n){if("object"!=typeof r||null===r){const t=`${e}:${r}`;await this.lsm.prefetchKeys([t]);const s=await this.lsm.get(t);return s?[{...s,[n]:r}]:[]}const t=r;if("$eq"in t){const s=`${e}:${t.$eq}`;await this.lsm.prefetchKeys([s]);const i=await this.lsm.get(s);return i?[{...i,[n]:t.$eq}]:[]}if("$in"in t&&Array.isArray(t.$in)){const s=t.$in.map(t=>`${e}:${t}`);await this.lsm.prefetchKeys(s);const i=[],r=new Set;for(const s of t.$in){const t=String(s);if(r.has(t))continue;const a=await this.lsm.get(`${e}:${t}`);a&&(r.add(t),i.push({...a,[n]:t}))}return i}if("$gt"in t||"$gte"in t||"$lt"in t||"$lte"in t){const t=`${e}:`;await this.lsm.prefetchRange(t,`${t}￿`);const s=await this.lsm.rangeScan(t,`${t}￿`),i=[];for(const[e,a]of s){const s={...a,[n]:e.slice(t.length)};S(s,{[n]:r})&&i.push(s)}return i}}const a=`${e}:idx:${t}`,o=this.secondaryIndexes.get(a);if(!o)continue;if("object"!=typeof r||null===r){if(null===r)continue;return this.indexScanToRows(e,n,o,String(r),String(r))}const h=r;if("$eq"in h){if(null===h.$eq)continue;if("object"==typeof h.$eq)continue;const t=String(h.$eq);return this.indexScanToRows(e,n,o,t,t)}if("$in"in h&&Array.isArray(h.$in)){if(h.$in.some(e=>null===e))continue;if(h.$in.some(e=>"object"==typeof e&&null!==e))continue;const t=h.$in.map(e=>String(e));await o.prefetchPrefixRanges(t.map(e=>[e,`${e}￿`]));const s=[],i=new Set,r=[];for(const e of t){const t=await o.rangeScan(e,`${e}￿`);for(const[,e]of t){const t=e.pk;t&&!i.has(t)&&(i.add(t),r.push(t))}}await this.lsm.prefetchKeys(r.map(t=>`${e}:${t}`));for(const t of r){const i=await this.lsm.get(`${e}:${t}`);i&&s.push({...i,[n]:t})}return s}if("$gt"in h||"$gte"in h||"$lt"in h||"$lte"in h)return(await this.indexScanToRows(e,n,o,"","￿")).filter(e=>S(e,{[t]:r}))}return null}async indexScanToRows(e,t,s,n,i){const r=i.includes("￿")?i:`${i}￿`;await s.prefetchRange(n,r);const a=await s.rangeScan(n,r),o=[];for(const[,e]of a){const t=e.pk;t&&o.push(t)}await this.lsm.prefetchKeys(o.map(t=>`${e}:${t}`));const h=[];for(const s of o){const n=await this.lsm.get(`${e}:${s}`);n&&h.push({...n,[t]:s})}return h}tryGC(){this.gcCounter++,this.gcCounter>=10&&(this.mvcc.gc(100),this.gcCounter=0)}trimAllCaches(){this.lsm.trimCache();for(const e of this.secondaryIndexes.values())e.trimCache()}checkMemoryBudget(){const e=1024*this.config.maxMemoryMB*1024;this.lsm.getEstimatedMemory()>e&&(this.lsm.flush().catch(()=>{}),this.mvcc.gc(50))}async analyzeTable(e){this.ensureOpen(),this.ensureTable(e);const t=await this.getAllRows(e);let s=this.lsm.getStats().sstableCount,n=this.lsm.getStats().memtableSize,i=this.lsm.getStats().levelCounts.filter(e=>e>0).length;for(const[t,r]of this.secondaryIndexes){if(!t.startsWith(`${e}:idx:`))continue;const a=r.getStats();s+=a.sstableCount,n+=a.memtableSize,i=Math.max(i,a.levelCounts.filter(e=>e>0).length)}const r={table:e,rowCount:t.length,avgRowSize:t.length>0?Math.round(t.reduce((e,t)=>e+JSON.stringify(t).length,0)/t.length):0,indexDepth:i,sstableCount:s,memtableSize:n,estimatedMemory:this.lsm.getEstimatedMemory()},a=this.schemas.get(e);if(a&&t.length>0){const e={};for(const s of Object.keys(a.columns)){const n=new Set(t.map(e=>String(e[s])));e[s]={distinctValues:n.size}}r.columnStats=e}return r}async reindexTable(e){return this.ensureOpen(),this.ensureTable(e),this.reindexTableInternal(e)}async reindexTableInternal(e){const t=this.schemas.get(e);if(!t)return 0;let s=0;const n=this.tablePKs.get(e),i=Object.entries(t.columns).filter(([,e])=>e.index||e.unique);if(0===i.length)return 0;const r=await this.getAllRows(e);for(const[t]of i){const i=`${e}:idx:${t}`,a=this.secondaryIndexes.get(i);if(a){await a.clear(),s++;for(const e of r){const s=e[t];null!=s&&a.put(`${String(s)}:${e[n]}`,{pk:e[n]})}}}return s}async vacuum(){this.ensureOpen(),await this.lsm.flush();for(let e=0;e<6;e++)this.lsm.getStats().levelCounts[e]>=2&&await this.lsm.compactLevel(e);const e=this.mvcc.getGlobalLSN();return this.mvcc.gc(10),{compactedLevels:6,gcVersions:e}}ensureOpen(){if(!this.opened)throw new n("AriaEngine not opened","DB_NOT_OPEN")}ensureNoDDLInTransaction(e){if(this.currentTxnId)throw new n(`${e} is not supported inside a transaction (AriaEngine DDL is not transactional)`,"NOT_SUPPORTED")}ensureTable(e){if(!this.schemas.has(e))throw new n(`Table "${e}" does not exist`,"TABLE_NOT_FOUND")}}class ot{constructor(e="opfs"){this.name="hybrid",this.dbName="",this.version=1,this.memoryEngine=new H,this.diskEngineType=e,this.diskEngine=new me}async open(e,t){this.dbName=e,this.version=t,await this.diskEngine.open(e,t),await this.memoryEngine.open(e,t),await this.reloadMemoryFromDisk()}async reloadMemoryFromDisk(){await this.memoryEngine.close(),await this.memoryEngine.open(this.dbName,this.version);const e=this.diskEngine;"function"==typeof e.reload&&await e.reload();const t=await this.diskEngine.getTableNames();for(const e of t){const t=await this.diskEngine.getTableSchema(e);if(!t)continue;await this.memoryEngine.createTable(t);const s=await this.diskEngine.find(e,{table:e});if(s.length>0)try{await this.memoryEngine.insert(e,s)}catch(e){}}}async close(){await this.memoryEngine.close(),await this.diskEngine.close()}isOpen(){return this.memoryEngine.isOpen()&&this.diskEngine.isOpen()}async repair(){"function"==typeof this.diskEngine.repair&&await this.diskEngine.repair(),await this.reloadMemoryFromDisk()}async clearAll(){if("function"==typeof this.diskEngine.clearAll)await this.diskEngine.clearAll();else{const e=await this.diskEngine.getTableNames();for(const t of e)await this.diskEngine.dropTable(t)}if("function"==typeof this.memoryEngine.clearAll)await this.memoryEngine.clearAll();else{const e=await this.memoryEngine.getTableNames();for(const t of e)await this.memoryEngine.dropTable(t)}}async getMeta(e){return"function"==typeof this.diskEngine.getMeta?this.diskEngine.getMeta(e):null}async setMeta(e,t){"function"==typeof this.diskEngine.setMeta&&await this.diskEngine.setMeta(e,t)}async createTable(e){await this.memoryEngine.createTable(e);try{await this.diskEngine.createTable(e)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async dropTable(e){await this.memoryEngine.dropTable(e);try{await this.diskEngine.dropTable(e)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async hasTable(e){return this.memoryEngine.hasTable(e)}async getTableNames(){return this.memoryEngine.getTableNames()}async getTableSchema(e){return this.memoryEngine.getTableSchema(e)}async alterTable(e,t,s){await this.memoryEngine.alterTable(e,t,s);try{if("function"==typeof this.diskEngine.alterTable)await this.diskEngine.alterTable(e,t,s);else{const n=await this.diskEngine.getTableSchema(e);n&&"DROP"===t&&delete n.columns[s.name]}}catch(e){await this.recoverMemoryAfterDiskError(e)}}async recoverMemoryAfterDiskError(e){try{await this.reloadMemoryFromDisk()}catch{}throw e}async validatePayload(e,t,s="insert"){return this.memoryEngine.validatePayload(e,t,s)}async insert(e,t){const s=await this.memoryEngine.insert(e,t);try{await this.diskEngine.insert(e,t)}catch(e){await this.recoverMemoryAfterDiskError(e)}return s}async find(e,t){return this.memoryEngine.find(e,t)}async findStream(e,t,s){return this.memoryEngine.findStream(e,t,s)}async update(e,t,s){const n=await this.memoryEngine.update(e,t,s);try{await this.diskEngine.update(e,t,s)}catch(e){await this.recoverMemoryAfterDiskError(e)}return n}async delete(e,t){const s=await this.memoryEngine.delete(e,t);try{await this.diskEngine.delete(e,t)}catch(e){await this.recoverMemoryAfterDiskError(e)}return s}async count(e,t){return this.memoryEngine.count(e,t)}async clear(e){await this.memoryEngine.clear(e);try{await this.diskEngine.clear(e)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async createIndex(e,t,s){await this.memoryEngine.createIndex(e,t,s);try{"function"==typeof this.diskEngine.createIndex&&await this.diskEngine.createIndex(e,t,s)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async dropIndex(e,t,s){await this.memoryEngine.dropIndex(e,t,s);try{"function"==typeof this.diskEngine.dropIndex&&await this.diskEngine.dropIndex(e,t,s)}catch(e){await this.recoverMemoryAfterDiskError(e)}}async beginTransaction(){await this.memoryEngine.beginTransaction();try{await this.diskEngine.beginTransaction()}catch(e){throw await this.memoryEngine.rollbackTransaction(),e}}async commitTransaction(){await this.diskEngine.commitTransaction();try{await this.memoryEngine.commitTransaction()}catch(e){throw new n("Hybrid commit failed: memory engine error after disk commit (disk data is committed)","TX_COMMIT_ERROR",e)}}async rollbackTransaction(){await this.memoryEngine.rollbackTransaction(),await this.diskEngine.rollbackTransaction()}getDiskEngineType(){return this.diskEngineType}getMemoryEngine(){return this.memoryEngine}}class ht{constructor(e,t,s=["*"]){this.tableName=e,this._columns=s,this._where={},this._orderBy=[],this._joins=[],this._executor=t}as(e){return this._alias=e,this}innerJoin(e,t,s){return this._addJoin("INNER",e,t,s)}leftJoin(e,t,s){return this._addJoin("LEFT",e,t,s)}rightJoin(e,t,s){return this._addJoin("RIGHT",e,t,s)}crossJoin(e,t){return this._addJoin("CROSS",e,{},t)}join(e,t,s){return this._addJoin("INNER",e,t,s)}_addJoin(e,t,s,n){return this._joins.push({type:e,table:t,on:s,alias:n}),this}where(e){return this._where={...this._where,...e},this}orderBy(e,t="asc"){return this._orderBy.push({column:e,direction:t}),this}limit(e){return this._limit=e,this}offset(e){return this._offset=e,this}async execute(){return this._executor.execute(this.toAST())}toAST(){return{type:"SELECT",columns:this._columns,from:this.tableName,alias:this._alias,joins:this._joins.length>0?[...this._joins]:void 0,where:this._where,orderBy:this._orderBy.length>0?this._orderBy:void 0,limit:this._limit,offset:this._offset}}}class ct{constructor(e,t,s,n){this.tableName=e,this._updates=t,this.executor=s,this.hooks=n,this._where={}}where(e){return this._where={...this._where,...e},this}async execute(){const e=this.toAST();await(this.hooks?.before?.(e));const t=await this.executor.execute(e);return await(this.hooks?.after?.(t,e)),t}toAST(){return{type:"UPDATE",table:this.tableName,sets:this._updates,where:this._where}}}class lt{constructor(e,t,s){this.tableName=e,this.executor=t,this.hooks=s,this._where={}}where(e){return this._where={...this._where,...e},this}async execute(){const e=this.toAST();await(this.hooks?.before?.(e));const t=await this.executor.execute(e);return await(this.hooks?.after?.(t,e)),t}toAST(){return{type:"DELETE",from:this.tableName,where:this._where}}}class ut{constructor(e,t,s,n,i){this.schema=null,this.engine=e,this.name=t,this.executor=s,this.onWrite=n,this.onHooks=i}async getSchema(){if(!this.schema){const e=await this.engine.getTableSchema(this.name);if(!e)throw new n(`Table "${this.name}" does not exist`,"TABLE_NOT_FOUND");this.schema=e}return this.schema}async insert(e){await(this.onHooks?.("beforeInsert",[[e]]));const t=await this.engine.insert(this.name,[e]);return this.onWrite?.(this.name),await(this.onHooks?.("afterInsert",[[e],t])),t[0]}async insertMany(e){await(this.onHooks?.("beforeInsert",[e]));const t=await this.engine.insert(this.name,e);return this.onWrite?.(this.name),await(this.onHooks?.("afterInsert",[e,t])),t}select(e=["*"]){return new ht(this.name,this.requireExecutor("select"),e)}requireExecutor(e){if(!this.executor)throw new n(`Table.${e}() requires a query executor (obtain the table via db.table())`,"NOT_SUPPORTED");return this.executor}async stream(e,t={}){if("function"!=typeof this.engine.findStream){const s=await this.engine.find(this.name,{table:this.name,where:t.where,limit:t.limit,offset:t.offset,columns:t.columns});for(const t of s)e(t);return s.length}return this.engine.findStream(this.name,{table:this.name,where:t.where,limit:t.limit,offset:t.offset,columns:t.columns},e)}update(e){return new ct(this.name,e,this.requireExecutor("update"),{before:async t=>{await(this.onHooks?.("beforeUpdate",[{table:t.table,where:t.where},e]))},after:async(t,s)=>{this.onWrite?.(this.name),await(this.onHooks?.("afterUpdate",[{table:s.table,where:s.where},e,t]))}})}delete(){return new lt(this.name,this.requireExecutor("delete"),{before:async e=>{await(this.onHooks?.("beforeDelete",[{table:e.from,where:e.where}]))},after:async(e,t)=>{this.onWrite?.(this.name),await(this.onHooks?.("afterDelete",[{table:t.from,where:t.where},e]))}})}async count(e){return this.engine.count(this.name,e?{table:this.name,where:e}:void 0)}async clear(){await this.engine.clear(this.name),this.onWrite?.(this.name)}async drop(){await this.engine.dropTable(this.name),this.onWrite?.(this.name)}}function ft(e){switch(e.type){case"SELECT":return function(e){return{table:e.from,columns:e.columns,where:e.where,orderBy:e.orderBy?.length?e.orderBy:void 0,limit:e.limit,offset:e.offset}}(e);case"DELETE":return function(e){return{table:e.from,where:e.where}}(e);case"UPDATE":return function(e){return{table:e.table,where:e.where}}(e);default:throw new n(`Cannot compile statement type "${e.type}" to QueryPlan`,"COMPILE_ERROR")}}var dt;!function(e){e.SELECT="SELECT",e.FROM="FROM",e.WHERE="WHERE",e.INSERT="INSERT",e.INTO="INTO",e.VALUES="VALUES",e.UPDATE="UPDATE",e.SET="SET",e.DELETE="DELETE",e.CREATE="CREATE",e.TABLE="TABLE",e.DROP="DROP",e.ORDER="ORDER",e.BY="BY",e.ASC="ASC",e.DESC="DESC",e.LIMIT="LIMIT",e.OFFSET="OFFSET",e.AND="AND",e.OR="OR",e.NOT="NOT",e.LIKE="LIKE",e.IN="IN",e.PRIMARY="PRIMARY",e.KEY="KEY",e.UNIQUE="UNIQUE",e.DEFAULT="DEFAULT",e.NULL="NULL",e.TRUE="TRUE",e.REFERENCES="REFERENCES",e.CASCADE="CASCADE",e.BETWEEN="BETWEEN",e.IF="IF",e.EXISTS="EXISTS",e.FALSE="FALSE",e.ALTER="ALTER",e.ADD="ADD",e.TRUNCATE="TRUNCATE",e.INNER="INNER",e.LEFT="LEFT",e.RIGHT="RIGHT",e.CROSS="CROSS",e.JOIN="JOIN",e.ON="ON",e.AS="AS",e.OUTER="OUTER",e.GROUP="GROUP",e.HAVING="HAVING",e.COUNT="COUNT",e.SUM="SUM",e.AVG="AVG",e.MIN="MIN",e.MAX="MAX",e.DISTINCT="DISTINCT",e.BEGIN="BEGIN",e.COMMIT="COMMIT",e.ROLLBACK="ROLLBACK",e.UNION="UNION",e.ALL="ALL",e.INDEX="INDEX",e.CASE="CASE",e.WHEN="WHEN",e.THEN="THEN",e.ELSE="ELSE",e.END="END",e.EXPLAIN="EXPLAIN",e.ANALYZE="ANALYZE",e.REINDEX="REINDEX",e.VACUUM="VACUUM",e.SAVEPOINT="SAVEPOINT",e.RELEASE="RELEASE",e.TO="TO",e.IDENTIFIER="IDENTIFIER",e.QUOTED_IDENTIFIER="QUOTED_IDENTIFIER",e.STRING="STRING",e.NUMBER="NUMBER",e.COMMA="COMMA",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.SEMICOLON="SEMICOLON",e.EQ="EQ",e.NEQ="NEQ",e.GT="GT",e.GTE="GTE",e.LT="LT",e.LTE="LTE",e.STAR="STAR",e.DOT="DOT",e.EOF="EOF",e.ILLEGAL="ILLEGAL"}(dt||(dt={}));const pt={SELECT:dt.SELECT,FROM:dt.FROM,WHERE:dt.WHERE,INSERT:dt.INSERT,INTO:dt.INTO,VALUES:dt.VALUES,UPDATE:dt.UPDATE,SET:dt.SET,DELETE:dt.DELETE,CREATE:dt.CREATE,TABLE:dt.TABLE,DROP:dt.DROP,ORDER:dt.ORDER,BY:dt.BY,ASC:dt.ASC,DESC:dt.DESC,LIMIT:dt.LIMIT,OFFSET:dt.OFFSET,AND:dt.AND,OR:dt.OR,NOT:dt.NOT,LIKE:dt.LIKE,IN:dt.IN,PRIMARY:dt.PRIMARY,KEY:dt.KEY,UNIQUE:dt.UNIQUE,DEFAULT:dt.DEFAULT,NULL:dt.NULL,TRUE:dt.TRUE,FALSE:dt.FALSE,REFERENCES:dt.REFERENCES,CASCADE:dt.CASCADE,BETWEEN:dt.BETWEEN,IF:dt.IF,EXISTS:dt.EXISTS,ALTER:dt.ALTER,ADD:dt.ADD,TRUNCATE:dt.TRUNCATE,INNER:dt.INNER,LEFT:dt.LEFT,RIGHT:dt.RIGHT,CROSS:dt.CROSS,JOIN:dt.JOIN,ON:dt.ON,AS:dt.AS,OUTER:dt.OUTER,GROUP:dt.GROUP,HAVING:dt.HAVING,COUNT:dt.COUNT,SUM:dt.SUM,AVG:dt.AVG,MIN:dt.MIN,MAX:dt.MAX,DISTINCT:dt.DISTINCT,BEGIN:dt.BEGIN,COMMIT:dt.COMMIT,ROLLBACK:dt.ROLLBACK,UNION:dt.UNION,ALL:dt.ALL,INDEX:dt.INDEX,CASE:dt.CASE,WHEN:dt.WHEN,THEN:dt.THEN,ELSE:dt.ELSE,END:dt.END,EXPLAIN:dt.EXPLAIN,ANALYZE:dt.ANALYZE,REINDEX:dt.REINDEX,VACUUM:dt.VACUUM,SAVEPOINT:dt.SAVEPOINT,RELEASE:dt.RELEASE,TO:dt.TO};class yt{constructor(e){this.position=0,this.readPosition=0,this.ch="",this.input=e,this.readChar()}nextToken(){let e;switch(this.skipWhitespaceAndComments(),this.ch){case",":e=this.makeToken(dt.COMMA,",");break;case"(":e=this.makeToken(dt.LPAREN,"(");break;case")":e=this.makeToken(dt.RPAREN,")");break;case";":e=this.makeToken(dt.SEMICOLON,";");break;case"*":e=this.makeToken(dt.STAR,"*");break;case".":e=this.makeToken(dt.DOT,".");break;case"=":e=this.makeToken(dt.EQ,"=");break;case"!":"="===this.peekChar()?(this.readChar(),e=this.makeToken(dt.NEQ,"!=")):e=this.makeToken(dt.ILLEGAL,"!");break;case">":"="===this.peekChar()?(this.readChar(),e=this.makeToken(dt.GTE,">=")):e=this.makeToken(dt.GT,">");break;case"<":"="===this.peekChar()?(this.readChar(),e=this.makeToken(dt.LTE,"<=")):">"===this.peekChar()?(this.readChar(),e=this.makeToken(dt.NEQ,"<>")):e=this.makeToken(dt.LT,"<");break;case"'":e=this.readString();break;case'"':e=this.readQuotedIdentifier();break;case"":e={type:dt.EOF,value:"",position:this.position};break;default:if(this.isLetter(this.ch)){const t=this.readIdentifier();return e={type:pt[t.toUpperCase()]??dt.IDENTIFIER,value:t,position:this.position-t.length},e}if(this.isDigit(this.ch)||"-"===this.ch&&this.isDigit(this.peekChar())){const t=this.readNumber();return e={type:dt.NUMBER,value:t,position:this.position-t.length},e}e=this.makeToken(dt.ILLEGAL,this.ch)}return this.readChar(),e}readChar(){this.readPosition>=this.input.length?this.ch="":this.ch=this.input[this.readPosition],this.position=this.readPosition,this.readPosition++}peekChar(){return this.readPosition>=this.input.length?"":this.input[this.readPosition]}skipWhitespaceAndComments(){for(;;){for(;" "===this.ch||"\t"===this.ch||"\n"===this.ch||"\r"===this.ch;)this.readChar();if("-"!==this.ch||"-"!==this.peekChar()){if("/"!==this.ch||"*"!==this.peekChar())return;this.skipBlockComment()}else this.skipLineComment()}}skipLineComment(){for(;"\n"!==this.ch&&"\r"!==this.ch&&""!==this.ch;)this.readChar()}skipBlockComment(){const e=this.position;for(this.readChar(),this.readChar();""!==this.ch&&("*"!==this.ch||"/"!==this.peekChar());)this.readChar();if(""===this.ch)throw new n(`Unterminated block comment at position ${e}`,"PARSE_ERROR");this.readChar(),this.readChar()}readIdentifier(){const e=this.position;for(;this.isLetter(this.ch)||this.isDigit(this.ch)||"_"===this.ch;)this.readChar();return this.input.slice(e,this.position)}readNumber(){const e=this.position;for("-"===this.ch&&this.readChar();this.isDigit(this.ch);)this.readChar();if("."===this.ch&&this.isDigit(this.peekChar()))for(this.readChar();this.isDigit(this.ch);)this.readChar();return this.input.slice(e,this.position)}readString(){const e=this.position+1;this.readChar();let t="";for(;""!==this.ch;){if("'"===this.ch){if("'"===this.peekChar()){t+="'",this.readChar(),this.readChar();continue}break}t+=this.ch,this.readChar()}if(""===this.ch)throw new n(`Unterminated string literal at position ${e}`,"PARSE_ERROR");return{type:dt.STRING,value:t,position:e}}readQuotedIdentifier(){const e=this.position,t=this.position+1;this.readChar();let s="";for(;""!==this.ch;){if('"'===this.ch){if('"'===this.peekChar()){s+='"',this.readChar(),this.readChar();continue}break}s+=this.ch,this.readChar()}if(""===this.ch)throw new n(`Unterminated quoted identifier at position ${e}`,"PARSE_ERROR");if(0===s.length)throw new n(`Empty quoted identifier at position ${e}`,"PARSE_ERROR");return{type:dt.QUOTED_IDENTIFIER,value:s,position:t}}isLetter(e){return/[a-zA-Z_]/.test(e)}isDigit(e){return/[0-9]/.test(e)}makeToken(e,t){return{type:e,value:t,position:this.position}}}class mt{constructor(e){this.sql=e,this.lexer=new yt(e),this.nextToken(),this.nextToken()}parseStatement(){switch(this.curToken.type){case dt.SELECT:return this.parseSelect();case dt.INSERT:return this.parseInsert();case dt.UPDATE:return this.parseUpdate();case dt.DELETE:return this.parseDelete();case dt.CREATE:return this.parseCreateStatement();case dt.DROP:return this.parseDropStatement();case dt.ALTER:return this.parseAlterTable();case dt.TRUNCATE:return this.parseTruncateTable();case dt.BEGIN:return this.parseBegin();case dt.COMMIT:return this.parseCommit();case dt.ROLLBACK:return this.parseRollback();case dt.EXPLAIN:return this.parseExplain();case dt.ANALYZE:return this.parseAnalyze();case dt.REINDEX:return this.parseReindex();case dt.VACUUM:return this.parseVacuum();case dt.SAVEPOINT:case dt.RELEASE:return this.parseSavepoint();default:throw this.error(`Unexpected token "${this.curToken.value}"`)}}parseAllStatements(){const e=[];for(;!this.curTokenIs(dt.EOF);){for(;this.curTokenIs(dt.SEMICOLON);)this.nextToken();if(this.curTokenIs(dt.EOF))break;if(e.push(this.parseStatement()),this.curTokenIs(dt.SEMICOLON))this.nextToken();else if(!this.curTokenIs(dt.EOF))throw this.error(`Expected ';' after statement, got "${this.curToken.value}"`)}return e}parseExplain(){if(this.expect(dt.EXPLAIN),this.curTokenIs(dt.EXPLAIN))throw this.error("Nested EXPLAIN is not allowed");return{type:"EXPLAIN",query:this.parseStatement()}}parseAnalyze(){return this.expect(dt.ANALYZE),this._isKeywordAsIdent()&&"TABLE"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"ANALYZE",table:this.expectIdentifier("table name")}}parseReindex(){return this.expect(dt.REINDEX),this._isKeywordAsIdent()&&"TABLE"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"REINDEX",table:this.expectIdentifier("table name")}}parseVacuum(){return this.expect(dt.VACUUM),{type:"VACUUM"}}parseSavepoint(){let e;return this.curTokenIs(dt.RELEASE)?(e="RELEASE",this.nextToken()):(e="SAVE",this.expect(dt.SAVEPOINT)),this.curTokenIs(dt.SAVEPOINT)&&this.nextToken(),{type:"SAVEPOINT",name:this.expectIdentifier("savepoint name"),action:e}}parseBegin(){return this.expect(dt.BEGIN),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"BEGIN"}}parseCommit(){return this.expect(dt.COMMIT),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()&&this.nextToken(),{type:"COMMIT"}}parseRollback(){return this.expect(dt.ROLLBACK),this._isKeywordAsIdent()&&"TRANSACTION"===this.curToken.value.toUpperCase()?(this.nextToken(),{type:"ROLLBACK"}):this.curTokenIs(dt.TO)||this._isKeywordAsIdent()&&"TO"===this.curToken.value.toUpperCase()?(this.nextToken(),(this.curTokenIs(dt.SAVEPOINT)||this._isKeywordAsIdent()&&"SAVEPOINT"===this.curToken.value.toUpperCase())&&this.nextToken(),{type:"SAVEPOINT",name:this.expectIdentifier("savepoint name"),action:"ROLLBACK"}):{type:"ROLLBACK"}}parseCreateStatement(){if(this.expect(dt.CREATE),this.curTokenIs(dt.TABLE))return this.parseCreateTable();if(this.curTokenIs(dt.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())return this.parseCreateIndex();if(this.curTokenIs(dt.UNIQUE)&&(this.nextToken(),this.curTokenIs(dt.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())){const e=this.parseCreateIndex();return e.unique=!0,e}throw this.error(`Expected TABLE or INDEX after CREATE, got "${this.curToken.value}"`)}parseCreateIndex(){this.expect(dt.INDEX);const e=this.expectIdentifier("index name");this.expect(dt.ON);const t=this.expectIdentifier("table name");this.expect(dt.LPAREN);const s=this.expectIdentifier("column name");return this.expect(dt.RPAREN),{type:"CREATE_INDEX",name:e,table:t,column:s}}parseDropStatement(){if(this.expect(dt.DROP),this.curTokenIs(dt.TABLE))return this.parseDropTable();if(this.curTokenIs(dt.INDEX)||this._isKeywordAsIdent()&&"INDEX"===this.curToken.value.toUpperCase())return this.parseDropIndex();throw this.error(`Expected TABLE or INDEX after DROP, got "${this.curToken.value}"`)}parseDropIndex(){this.expect(dt.INDEX);const e=this.expectIdentifier("index name");let t="",s="";return this.curTokenIs(dt.ON)&&(this.nextToken(),t=this.expectIdentifier("table name"),this.curTokenIs(dt.LPAREN)&&(this.nextToken(),s=this.expectIdentifier("column name"),this.expect(dt.RPAREN))),{type:"DROP_INDEX",name:e,table:t,column:s}}parseSelect(){this.expect(dt.SELECT);let e=!1;this.curTokenIs(dt.DISTINCT)&&(e=!0,this.nextToken());const t=[];if(this.curTokenIs(dt.STAR))for(t.push("*"),this.nextToken();this.curTokenIs(dt.COMMA);)this.nextToken(),t.push(this.parseColumnWithAlias());else t.push(...this.parseColumnList());let s,n,i="";this.curTokenIs(dt.FROM)&&(this.nextToken(),this.curTokenIs(dt.LPAREN)?(this.nextToken(),s=this.parseSelect(),this.expect(dt.RPAREN),this.curTokenIs(dt.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type!==dt.IDENTIFIER||this._isReservedAfterFrom()||(n=this.curToken.value,this.nextToken())):(i=this.expectIdentifier("table name"),this.curTokenIs(dt.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type!==dt.IDENTIFIER||this._isReservedAfterFrom()||(n=this.curToken.value,this.nextToken())));const r={type:"SELECT",columns:t,distinct:e||void 0,from:i,alias:n,where:{}};s&&(r.fromSubquery=s);const a=this.parseJoinClauses();return a.length>0&&(r.joins=a),this.curTokenIs(dt.WHERE)&&(this.nextToken(),r.where=this.parseCondition()),this.curTokenIs(dt.GROUP)&&(this.nextToken(),this.expect(dt.BY),r.groupBy=this.parseIdentifierList()),this.curTokenIs(dt.HAVING)&&(this.nextToken(),r.having=this.parseCondition()),this.curTokenIs(dt.ORDER)&&(this.nextToken(),this.expect(dt.BY),r.orderBy=this.parseOrderByList()),this.curTokenIs(dt.LIMIT)&&(this.nextToken(),r.limit=this.expectNumber("LIMIT value")),this.curTokenIs(dt.OFFSET)&&(this.nextToken(),r.offset=this.expectNumber("OFFSET value")),this.curTokenIs(dt.UNION)?this.parseUnion(r):r}parseUnion(e){this.expect(dt.UNION);let t=!1;this.curTokenIs(dt.ALL)&&(t=!0,this.nextToken());const s=this.parseSelect(),n={type:"SELECT_UNION",left:e,right:s,all:t||void 0};return this.adoptTrailingClauses(n,s),this.curTokenIs(dt.UNION)?this.parseUnionChain(n):n}parseUnionChain(e){this.expect(dt.UNION);let t=!1;this.curTokenIs(dt.ALL)&&(t=!0,this.nextToken());const s=this.parseSelect(),n={type:"SELECT_UNION",left:e,right:s,all:t||void 0};return this.adoptTrailingClauses(n,s),this.curTokenIs(dt.UNION)?this.parseUnionChain(n):n}adoptTrailingClauses(e,t){"SELECT"===t.type&&(t.orderBy&&(e.orderBy=t.orderBy,delete t.orderBy),void 0!==t.limit&&(e.limit=t.limit,delete t.limit),void 0!==t.offset&&(e.offset=t.offset,delete t.offset))}parseJoinClauses(){const e=[];for(;this._isJoinKeyword();)e.push(this.parseJoinClause());return e}_isJoinKeyword(){return this.curTokenIs(dt.INNER)||this.curTokenIs(dt.LEFT)||this.curTokenIs(dt.RIGHT)||this.curTokenIs(dt.CROSS)||this.curTokenIs(dt.JOIN)}parseJoinClause(){let e="INNER";this.curTokenIs(dt.INNER)?(e="INNER",this.nextToken()):this.curTokenIs(dt.LEFT)?(e="LEFT",this.nextToken(),this.curTokenIs(dt.OUTER)&&this.nextToken()):this.curTokenIs(dt.RIGHT)?(e="RIGHT",this.nextToken(),this.curTokenIs(dt.OUTER)&&this.nextToken()):this.curTokenIs(dt.CROSS)&&(e="CROSS",this.nextToken()),this.expect(dt.JOIN);const t=this.expectIdentifier("table name");let s;this.curTokenIs(dt.AS)?(this.nextToken(),s=this.expectIdentifier("alias")):this.curToken.type!==dt.IDENTIFIER||this._isJoinReserved()||(s=this.curToken.value,this.nextToken());let n={};return"CROSS"!==e&&this.curTokenIs(dt.ON)&&(this.nextToken(),n=this.parseCondition()),{type:e,table:t,alias:s,on:n}}_isReservedAfterFrom(){return this.curTokenIs(dt.WHERE)||this.curTokenIs(dt.ORDER)||this.curTokenIs(dt.LIMIT)||this.curTokenIs(dt.OFFSET)||this.curTokenIs(dt.GROUP)||this._isJoinKeyword()}_isJoinReserved(){return this.curTokenIs(dt.ON)||this.curTokenIs(dt.WHERE)||this.curTokenIs(dt.ORDER)||this.curTokenIs(dt.LIMIT)||this._isJoinKeyword()}parseInsert(){this.expect(dt.INSERT),this.expect(dt.INTO);const e=this.expectIdentifier("table name");let t;if(this.curTokenIs(dt.LPAREN)&&(this.nextToken(),t=this.parseIdentifierList(),this.expect(dt.RPAREN)),this.curTokenIs(dt.SELECT))return{type:"INSERT",into:e,columns:t,select:this.parseSelect()};this.expect(dt.VALUES);const s=[];do{this.curTokenIs(dt.COMMA)&&this.nextToken(),this.expect(dt.LPAREN);const e=this.parseValueList();this.expect(dt.RPAREN),s.push(e)}while(this.curTokenIs(dt.COMMA));if(t)for(let e=0;e0&&(this.curTokenIs(dt.CASE)&&t++,!this.curTokenIs(dt.END)||(t--,s=this.curToken.position+3,this.nextToken(),0!==t));)s=this.curToken.position+this.curToken.value.length,this.nextToken();let n=this.sql.slice(e,s);return this.curTokenIs(dt.AS)?(this.nextToken(),n+=` AS ${this.expectIdentifier("alias")}`):this.curToken.type!==dt.IDENTIFIER||this.curTokenIs(dt.COMMA)||this._isReservedAfterFrom()||(n+=` AS ${this.curToken.value}`,this.nextToken()),n}parseAggregateCall(){const e=this.curToken.value.toUpperCase();this.nextToken(),this.expect(dt.LPAREN);let t,s=!1;this.curTokenIs(dt.DISTINCT)&&(s=!0,this.nextToken()),this.curTokenIs(dt.STAR)?(t="*",this.nextToken()):t=this.parseColumnRef(),this.expect(dt.RPAREN);let n="";this.curTokenIs(dt.AS)?(this.nextToken(),n=this.expectIdentifier("alias")):this.curToken.type===dt.IDENTIFIER&&this._isAggregateAlias()&&(n=this.curToken.value,this.nextToken());const i=s?`DISTINCT ${t}`:t;return n?`${e}(${i}) AS ${n}`:`${e}(${i})`}_isAggregateAlias(){return!this._isReservedAfterFrom()&&!this._isJoinKeyword()}parseIdentifierList(){const e=[];for(e.push(this.parseIdentifierWithDot());this.curTokenIs(dt.COMMA);)this.nextToken(),e.push(this.parseIdentifierWithDot());return e}parseValueList(){const e=[];for(e.push(this.parseValue());this.curTokenIs(dt.COMMA);)this.nextToken(),e.push(this.parseValue());return e}parseOrderByList(){const e=[];for(e.push(this.parseOrderBy());this.curTokenIs(dt.COMMA);)this.nextToken(),e.push(this.parseOrderBy());return e}parseOrderBy(){const e=this.parseIdentifierWithDot();let t,s="asc";return this.curTokenIs(dt.ASC)?this.nextToken():this.curTokenIs(dt.DESC)&&(s="desc",this.nextToken()),this.curTokenIs(dt.IDENTIFIER)&&"NULLS"===this.curToken.value.toUpperCase()&&(this.nextToken(),this.curTokenIs(dt.IDENTIFIER)&&"FIRST"===this.curToken.value.toUpperCase()?(t="first",this.nextToken()):this.curTokenIs(dt.IDENTIFIER)&&"LAST"===this.curToken.value.toUpperCase()&&(t="last",this.nextToken())),{column:e,direction:s,...t?{nulls:t}:{}}}parseIdentifierWithDot(){const e=this.expectIdentifier("identifier");return this.curTokenIs(dt.DOT)?(this.nextToken(),`${e}.${this.expectIdentifier("identifier")}`):e}parseValue(){switch(this.curToken.type){case dt.STRING:{const e=this.curToken.value;return this.nextToken(),e}case dt.NUMBER:{const e=Number(this.curToken.value);return this.nextToken(),e}case dt.TRUE:return this.nextToken(),!0;case dt.FALSE:return this.nextToken(),!1;case dt.NULL:return this.nextToken(),null;default:throw this.error(`Expected value, got "${this.curToken.value}"`)}}nextToken(){this.curToken=this.peekToken,this.peekToken=this.lexer.nextToken()}curTokenIs(e){return this.curToken.type===e}expect(e){if(!this.curTokenIs(e))throw this.error(`Expected ${e}, got "${this.curToken.value}"`);this.nextToken()}expectIdentifier(e){if(this.curToken.type===dt.QUOTED_IDENTIFIER){const e=this.curToken.value;return this.nextToken(),e}if(this.curToken.type===dt.IDENTIFIER||this._isKeywordAsIdent()){const e=this.curToken.value;return this.nextToken(),e}throw this.error(`Expected ${e}, got "${this.curToken.value}"`)}_isKeywordAsIdent(){return this.curToken.type!==dt.EOF&&this.curToken.type!==dt.ILLEGAL&&this.curToken.type!==dt.STRING&&this.curToken.type!==dt.QUOTED_IDENTIFIER&&this.curToken.type!==dt.NUMBER&&this.curToken.type!==dt.COMMA&&this.curToken.type!==dt.LPAREN&&this.curToken.type!==dt.RPAREN&&this.curToken.type!==dt.SEMICOLON&&this.curToken.type!==dt.EQ&&this.curToken.type!==dt.NEQ&&this.curToken.type!==dt.GT&&this.curToken.type!==dt.GTE&&this.curToken.type!==dt.LT&&this.curToken.type!==dt.LTE&&this.curToken.type!==dt.DOT&&this.curToken.type!==dt.STAR}expectNumber(e){if(this.curToken.type===dt.NUMBER){const e=Number(this.curToken.value);return this.nextToken(),e}throw this.error(`Expected ${e}, got "${this.curToken.value}"`)}error(e){return new n(`Parse error at position ${this.curToken.position}: ${e}`,"PARSE_ERROR")}}function wt(e){return new mt(e).parseAllStatements()}function gt(e){return new mt(e).parseWhere()}function bt(e,t,s){const i=t.trim();if(i in e)return e[i];if(i.includes(".")){const t=i.split(".").pop();if(t in e)return e[t]}let r,a=0;for(const t of Object.keys(e))t.endsWith(`.${i}`)&&(r=e[t],a+=1);if(1===a)return r;if(s.strict)throw new n(a>1?`Ambiguous column "${i}" in ${s.context}: present in multiple tables`:`Unknown column "${i}" in ${s.context}`,"COLUMN_NOT_FOUND",{column:i})}function Tt(e){const t=e.trim().match(/^(COUNT|SUM|AVG|MIN|MAX)\s*\(\s*([\s\S]+?)\s*\)\s*(?:AS\s+([A-Za-z_][A-Za-z0-9_]*))?$/i);if(!t)return null;const s=t[1].toUpperCase();let n=t[2].trim();const i=t[3],r=/^DISTINCT\s+/i.test(n);r&&(n=n.replace(/^\s*DISTINCT\s+/i,"").trim());const a=`${s}(${r?"DISTINCT ":""}${n})`;return{func:s,arg:n,outputKey:i||e.trim(),distinct:r,exprKey:a}}function Et(e){return null!==Tt(e)}function kt(e){const t=e.trim();return t.includes(".")?t.split(".").pop():t}function St(e,t){const s=e.trim(),n=s.match(/^'(.*)'$/s);return n?n[1].replace(/''/g,"'"):/^-?\d+(\.\d+)?$/.test(s)?Number(s):!!/^TRUE$/i.test(s)||!/^FALSE$/i.test(s)&&(/^NULL$/i.test(s)?null:bt(t,s,{strict:!1,context:"SELECT list"}))}function xt(e,t){if(0===e.length)return null;let s="SUM"===t||"AVG"===t?0:e[0];for(let n=0;n0&&i0&&i>s&&(s=i)}}return"AVG"===t?s/e.length:s}function It(e){const t=e.match(/^\s*CASE\s+([\s\S]*?)\s+END\s*(?:AS\s+(\w+))?\s*$/i);if(!t)return null;const s=t[1],n=t[2]??null,i=[],r=/WHEN\s+([\s\S]*?)\s+THEN\s+([\s\S]*?)(?=\s+WHEN\s+|\s+ELSE\s+|\s*$)/gi;let a;for(;null!==(a=r.exec(s));){let e=null;try{e=gt(a[1].trim())}catch{}i.push({cond:e,value:a[2].trim()})}let o=null;const h=s.match(/\sELSE\s+([\s\S]*)$/i);return h&&(o=h[1].trim()),{whens:i,elseValue:o,alias:n}}function At(e,t){const s=e.trim();if("null"===s)return null;if("true"===s)return!0;if("false"===s)return!1;const n=Number(s);if(""!==s&&!isNaN(n))return n;const i=s.match(/^'(.*)'$/s)||s.match(/^"(.*)"$/s);return i?i[1]:/^[a-zA-Z_][a-zA-Z0-9_.]*$/.test(s)?t[s]??null:s}function Rt(e,t){for(const{cond:s,value:n}of e.whens)if(s&&S(t,s))return At(n,t);return null!==e.elseValue?At(e.elseValue,t):null}class Ct{constructor(e,t=0){this.engine=e,this.maxRowsPerQuery=t}async execute(e){try{return await this.dispatch(e)}catch(e){throw e instanceof Error?e:new n(String(e),"QUERY_ERROR")}}dispatch(e){switch(e.type){case"SELECT":return this.executeSelect(e);case"SELECT_UNION":return this.executeSelectUnion(e);case"EXPLAIN":return this.executeExplain(e);case"INSERT":return this.executeInsert(e);case"UPDATE":return this.executeUpdate(e);case"DELETE":return this.executeDelete(e);case"CREATE_TABLE":return this.executeCreateTable(e);case"DROP_TABLE":return this.executeDropTable(e);case"ALTER_TABLE":return this.executeAlterTable(e);case"TRUNCATE_TABLE":return this.executeTruncateTable(e);case"CREATE_INDEX":return this.executeCreateIndex(e);case"DROP_INDEX":return this.executeDropIndex(e);case"BEGIN":return this.executeBegin();case"COMMIT":return this.executeCommit();case"ROLLBACK":return this.executeRollback();case"SAVEPOINT":return this.executeSavepoint(e);case"ANALYZE":return this.executeAnalyze(e);case"REINDEX":return this.executeReindex(e);case"VACUUM":return this.executeVacuum();default:throw new n("Unknown statement type","UNKNOWN_STATEMENT")}}async executeSelectUnion(e,t="result"){const s=await this.executeSelectPart(e.left,t),n=await this.executeSelectPart(e.right,t),i=s.length>0?Object.keys(s[0]):[],r=s.map(e=>e);let a;if(e.all){for(const e of n)r.push(this.projectUnionRow(e,i));a=r}else{const e=new Set;a=[];for(const t of r){const s=Object.values(t).map(d).join("");e.has(s)||(e.add(s),a.push(t))}for(const t of n){const s=this.projectUnionRow(t,i),n=Object.values(s).map(d).join("");e.has(n)||(e.add(n),a.push(s))}}e.orderBy&&e.orderBy.length>0&&(a=this.orderCompoundResult(a,e.orderBy));const o=e.offset??0;if(o>0||void 0!==e.limit){const t=e.limit??a.length;a=a.slice(o,o+t)}return a}orderCompoundResult(e,t){const s=e[0],i=s?Object.keys(s):[];return P(e,t.map(e=>{const t=/^\d+$/.test(e.column.trim())?Number(e.column.trim()):null;if(null!==t){if(t<1||t>i.length)throw new n(`ORDER BY position ${t} is out of range: compound query has ${i.length} output column(s)`,"QUERY_ERROR");return{...e,column:i[t-1]}}const r=e.column.includes(".")?e.column.split(".").pop():e.column;if(i.length>0&&!(e.column in s)&&!(r in s))throw new n(`Unknown column "${e.column}" in ORDER BY of compound query. Output columns: ${i.join(", ")}`,"COLUMN_NOT_FOUND");return{...e,column:e.column in s?e.column:r}}))}async executeSelectPart(e,t="result"){return"SELECT_UNION"===e.type?this.executeSelectUnion(e,t):this.executeSelect(e,t)}projectUnionRow(e,t){if(0===t.length)return e;const s=Object.values(e),n={};for(let e=0;e0)try{const e=await this.engine.getTableSchema(r.table);if(e){const t=s=>{for(const[n,i]of Object.entries(s)){if("$and"===n){for(const e of i){const s=t(e);if(s)return s}continue}if("$or"===n||"$not"===n)continue;const s=e.columns[n];if(s){if(s.primaryKey)return"pk";if(s.index||s.unique)return`index:${n}`}}return null};a=t(r.where)??"none"}}catch{}return{type:e.query.type,table:r?.table,columns:r?.columns,where:r?.where||{},orderBy:r?.orderBy||[],limit:r?.limit,offset:r?.offset,usingIndex:a,estimatedRows:n,actualTimeMs:i}}analyzeSelect(e){const t=!!(e.groupBy&&e.groupBy.length>0),s=!t&&this._hasAggregateColumn(e.columns),n=!!(e.joins&&e.joins.length>0),i=this.hasCaseColumn(e.columns)||!!e.where&&this.whereHasCase(e.where),r=this.orderByUsesSelectAlias(e),a=e.columns.some(e=>/\s+AS\s+\w+$/i.test(e)),o=!(t||s||n||e.fromSubquery||e.distinct||e.having&&Object.keys(e.having).length>0||r||i||a);let h=e.columns.length>0;for(const t of e.columns)if("*"!==t&&!/^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/.test(t)){h=!1;break}return{hasGroupBy:t,hasAggregate:s,isJoinQuery:n,needsRawRows:i,orderByAlias:r,hasSelectAlias:a,limitPushdownSafe:o,engineEquivalentProjection:h,streamable:h&&!t&&!s&&!n&&!e.fromSubquery&&!e.distinct&&!(e.having&&Object.keys(e.having).length>0)&&!(e.orderBy&&e.orderBy.length>0)&&!i&&!r&&!a&&!this.hasCorrelatedRefs(e.where)&&!x(e.where)}}async executeSelect(e,t="result"){const s=this.analyzeSelect(e),{hasGroupBy:n,hasAggregate:i,isJoinQuery:r,needsRawRows:a,orderByAlias:o,hasSelectAlias:h,limitPushdownSafe:c}=s;let l;if(await this.assertWhereColumnsExist(e,r),e.fromSubquery){const t=await this.executeSelectPart(e.fromSubquery);l=r?await this.executeJoinSelect(e,t.map(t=>this.prefixRow(t,e.alias??""))):t,r||(this.normalizeUnprefixedReferences(e,[e.alias??e.from]),e.where&&Object.keys(e.where).length>0&&(e.where=await this.resolveSubqueries(e.where),l=l.filter(t=>S(t,e.where))))}else if(e.from||r)if(r)l=await this.executeJoinSelect(e);else{const t=[e.alias??e.from].filter(Boolean);if(this.normalizeUnprefixedReferences(e,t),e.where&&this.hasCorrelatedRefs(e.where)){const s=ft(n||i?{...e,columns:["*"]}:e);s.columns=["*"],o&&(s.orderBy=void 0,s.limit=void 0,s.offset=void 0),l=await this.engine.find(s.table,{...s,where:this.enginePreFilter(e.where)}),l=await this.filterCorrelated(l,e.where,t)}else{e.where&&Object.keys(e.where).length>0&&(e.where=await this.resolveSubqueries(e.where));const t=ft(n||i?{...e,columns:["*"]}:e);(a||h)&&(t.columns=["*"]),c||(t.limit=void 0,t.offset=void 0),o&&(t.orderBy=void 0,t.limit=void 0,t.offset=void 0),l=await this.engine.find(t.table,t)}}else l=[{}];i&&(l=[this.computeSingleAggregate(l,e)]),n&&(l=this.executeGroupBy(l,e));const u=!!e.distinct&&this.distinctNeedsPreProjectionSort(e);if(u&&(l=this.executeDistinct(l)),e.having&&Object.keys(e.having).length>0){e.having=await this.resolveSubqueries(e.having);const t=e._aggAliasMap;if(t&&t.size>0){const s={};for(const[n,i]of Object.entries(e.having))s[t.get(n)??n]=i;e.having=s}l=l.filter(t=>S(t,e.having))}n&&(l=this.projectGroupedRows(l,e));const f=!!e.orderBy&&e.orderBy.length>0&&(u||!this.orderByReferencesOutputColumns(e));if(e.orderBy&&e.orderBy.length>0&&!o&&f&&(l=P(l,e.orderBy)),i||this.assertProjectionColumnsExist(l,e.columns,e),n||i||!(e.columns.length>0)||1===e.columns.length&&"*"===e.columns[0]||(l=l.map(t=>this.projectRow(t,e.columns))),e.distinct&&!u&&(l=this.executeDistinct(l)),o&&e.orderBy&&e.orderBy.length>0&&(l=P(l,e.orderBy)),!c){const t=e.offset??0,s=e.limit??l.length;l=l.slice(t,t+s)}return"result"===t&&this.maxRowsPerQuery>0&&l.length>this.maxRowsPerQuery&&(l=l.slice(0,this.maxRowsPerQuery)),l}async executeJoinSelect(e,t){for(const t of e.joins??[])t.on&&Object.keys(t.on).length>0&&await this.validateJoinOnColumns(e,t);const s=e.alias??e.from;let n;if(t)n=t;else{const{pushable:t}=this.extractPushableWhere(e.where??{},s);n=(await this.engine.find(e.from,{table:e.from,where:Object.keys(t).length>0?t:void 0})).map(e=>this.prefixRow(e,s))}let i=n;for(const t of e.joins){const e=t.alias??t.table,n=await this.tryHashJoin(i,t,e,s);if(n){i=n;continue}const r=(await this.engine.find(t.table,{table:t.table})).map(t=>this.prefixRow(t,e));i=this.joinRows(i,r,t)}return e.where&&Object.keys(e.where).length>0&&(this.hasCorrelatedRefs(e.where)?i=await this.filterCorrelated(i,e.where):(e.where=await this.resolveSubqueries(e.where),i=i.filter(t=>S(t,e.where)))),i}prefixRow(e,t){const s={};for(const[n,i]of Object.entries(e))s[`${t}.${n}`]=i;return s}extractPushableWhere(e,t){const s={};if(!t)return{pushable:s};const n=`${t}.`;for(const[t,i]of Object.entries(e))t.startsWith(n)&&("object"==typeof i&&null!==i&&("$col"in i||"$subquery"in i||"$and"in i||"$or"in i||"$not"in i)||(s[t.slice(n.length)]=i));return{pushable:s}}async tryHashJoin(e,t,s,n){if("CROSS"===t.type||"RIGHT"===t.type)return null;const i=[],r=e=>{for(const[t,s]of Object.entries(e)){if("$and"===t){if(!s.every(r))return!1;continue}if("$or"===t||"$not"===t)return!1;let e=null;if("object"==typeof s&&null!==s){const t=s;"$eq"in t&&"object"==typeof t.$eq&&null!==t.$eq&&"$col"in t.$eq?e=String(t.$eq.$col):"$col"in t&&1===Object.keys(t).length&&(e=String(t.$col))}if(!e)return!1;const a=!!n&&t.startsWith(`${n}.`);i.push({leftCol:a?t:e,rightCol:a?e:t})}return!0};if(!r(t.on))return null;if(0===i.length)return null;const a=await this.engine.getTableSchema(t.table);if(!a)return null;const o=i.find(e=>{const t=e.rightCol.split(".").pop(),s=a.columns[t];return s&&(s.primaryKey||s.index||s.unique)});if(!o)return null;const h=o.rightCol.split(".").pop(),c=Array.from(new Set(e.map(e=>e[o.leftCol]).filter(e=>null!=e)));if(0===c.length)return null;const l=await this.engine.find(t.table,{table:t.table,where:{[h]:{$in:c}}}),u=new Map;for(const e of l){const t=i.map(t=>String(e[t.rightCol.split(".").pop()]??"\0")).join("");u.has(t)||u.set(t,[]),u.get(t).push(e)}const f={};for(const e of Object.keys(a.columns))f[e]=null;const d=[];for(const n of e){const e=i.map(e=>String(n[e.leftCol]??"\0")).join(""),r=u.get(e);if(r&&r.length>0)for(const e of r)d.push({...n,...this.prefixRow(e,s)});else"LEFT"===t.type&&d.push({...n,...this.prefixRow(f,s)})}return d}joinRows(e,t,s){if("CROSS"===s.type){const s=[];for(const n of e)for(const e of t)s.push({...n,...e});return s}const n=[];for(const i of e){let e=!1;for(const r of t){const t={...i,...r};S(t,s.on,{$col:!0})&&(n.push(t),e=!0)}if(!e&&"LEFT"===s.type){const e={};for(const s of Object.keys(t[0]??{}))e[s]=null;n.push({...i,...e})}}if("RIGHT"===s.type)for(const i of t)if(!e.some(e=>S({...e,...i},s.on,{$col:!0}))){const t={};for(const s of Object.keys(e[0]??{}))t[s]=null;n.push({...t,...i})}return n}executeGroupBy(e,t){const s=this.resolveGroupByColumns(t),n=new Map;for(const t of e){const e=s.map(e=>d(bt(t,e,{strict:!0,context:"GROUP BY"}))).join("");n.has(e)||n.set(e,[]),n.get(e).push(t)}const i=this.collectAggregateExpressions(t),r=[],a=new Map;for(const e of n.values()){const n=e[0],o={};for(const e of s)o[e]=bt(n,e,{strict:!0,context:"GROUP BY"});for(const t of i){const s=t.distinct?this.computeDistinctAggregate(t.func,e,t.arg):this.computeAggregate(t.func,e,t.arg);t.outputKey!==t.exprKey&&a.set(t.exprKey,t.outputKey),o[t.exprKey]=s,t.outputKey!==t.exprKey&&(o[t.outputKey]=s)}for(const e of t.columns){if("*"===e)continue;if(Tt(e))continue;if(/^\s*CASE\b/i.test(e)){const t=It(e),s=t?.alias??e;s in o||(o[s]=t?Rt(t,n):null);continue}if(e.match(/^(.+?)\s+AS\s+(\w+)$/i))continue;const t=kt(e);t in o||e in o||(o[t]=bt(n,e,{strict:!0,context:"SELECT list"}))}r.push(o)}return t._aggAliasMap=a,r}projectGroupedRows(e,t){const s=this.resolveGroupByColumns(t);return e.map(e=>this.projectGroupedRow(e,s,t.columns))}projectGroupedRow(e,t,s){if(s.some(e=>"*"===e))return e;const n={};for(const s of t)s in e&&(n[s]=e[s]);for(const t of s){if("*"===t)continue;const s=Tt(t);if(s){n[s.outputKey]=e[s.outputKey];continue}const i=/^\s*CASE\b/i.test(t)?It(t):null;if(i){const s=i.alias??t;n[s]=e[s];continue}const r=t.match(/^(.+?)\s+AS\s+(\w+)$/i);if(r){n[r[2]]=e[r[2]];continue}const a=kt(t);n[a]=a in e?e[a]:e[t]}return n}resolveGroupByColumns(e){const t=new Map;for(const s of e.columns){const e=s.match(/^(.+?)\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i);e&&t.set(e[2],e[1].trim())}return e.groupBy.map(e=>{const s=t.get(e.trim());return void 0===s||Tt(s)?e:s})}collectAggregateExpressions(e){const t=new Map,s=e=>{const s=Tt(e);s&&(t.get(s.exprKey)||t.set(s.exprKey,s))};for(const t of e.columns)s(t);for(const t of function(e){const t=[];if(!e)return t;const s=e=>{const s=/(?:COUNT|SUM|AVG|MIN|MAX)\s*\([^()]*(?:\([^()]*\)[^()]*)*\)/gi;let n;for(;null!==(n=s.exec(e));)t.push(n[0])},n=e=>{for(const[t,i]of Object.entries(e))if("$and"!==t&&"$or"!==t)if("$not"!==t){if(s(t),"string"==typeof i)s(i);else if(Array.isArray(i))for(const e of i)"string"==typeof e&&s(e);else if(null!==i&&"object"==typeof i)for(const e of Object.values(i))"string"==typeof e&&s(e)}else n(i);else for(const e of Array.isArray(i)?i:[i])n(e)};return n(e),t}(e.having))s(t);return[...t.values()]}computeAggregate(e,t,s){const n=/^\s*CASE\b/i.test(s)?It(s):null,i=s.trim(),r=t.map(t=>n?Rt(n,t):"*"===i?t:bt(t,i,{strict:!0,context:`aggregate ${e}(${i})`})).filter(e=>null!=e);if("COUNT"===e)return"*"===i?t.length:r.length;const a=r.map(e=>Number(e));switch(e){case"SUM":return xt(a,"SUM");case"AVG":return xt(a,"AVG");case"MIN":return xt(a,"MIN");case"MAX":return xt(a,"MAX");default:return null}}computeDistinctAggregate(e,t,s){const n=t.map(t=>bt(t,s,{strict:!0,context:`aggregate ${e}(DISTINCT ${s})`})).filter(e=>null!=e);if("COUNT"===e)return new Set(n.map(e=>d(e))).size;const i=n.map(e=>Number(e)),r=new Set,a=[];for(const e of i){const t=d(e);r.has(t)||(r.add(t),a.push(e))}switch(e){case"SUM":return xt(a,"SUM");case"AVG":return xt(a,"AVG");case"MIN":return xt(a,"MIN");case"MAX":return xt(a,"MAX");default:return null}}executeDistinct(e){const t=new Set;return e.filter(e=>{const s=Object.values(e).map(d).join("");return!t.has(s)&&(t.add(s),!0)})}async executeInsert(e){const t=await this.engine.getTableSchema(e.into);if(!t)throw new n(`Table "${e.into}" does not exist`,"TABLE_NOT_FOUND");const s=e.columns??Object.keys(t.columns),i=s.filter(e=>!(e in t.columns));if(i.length>0)throw new n(`Unknown column${i.length>1?"s":""} ${i.map(e=>`"${e}"`).join(", ")} in table "${e.into}". Known columns: ${Object.keys(t.columns).join(", ")}`,"COLUMN_NOT_FOUND");if(e.select){const t=await this.executeSelectPart(e.select,"source");let n=[];const i=e.select;if("SELECT"===i.type)if(i.columns&&i.columns.length>0&&"*"!==i.columns[0])n=i.columns.map(e=>e.split(".").pop());else if(i.from){const e=await this.engine.getTableSchema(i.from);n=e?Object.keys(e.columns):[]}0===n.length&&t.length>0&&(n=Object.keys(t[0]));const r=t.map(e=>{const t={};for(let i=0;i{if(t.length>s.length)throw new n(`INSERT has ${t.length} value(s) for ${s.length} column(s) in table "${e.into}" (row ${i+1}); too many values`,"VALIDATION_ERROR",{table:e.into,values:t.length,columns:s.length});const r={};for(let e=0;e0&&e>this.maxRowsPerQuery)throw new n(`Statement would write ${e} rows, exceeding maxRowsPerQuery (${this.maxRowsPerQuery}). Narrow the source query or raise the limit.`,"QUERY_ERROR",{rows:e,maxRowsPerQuery:this.maxRowsPerQuery})}async executeUpdate(e){await this.resolveWriteWhere(e);const t=ft(e);return t.where=e.where,this.engine.update(t.table,t,e.sets)}async executeDelete(e){await this.resolveWriteWhere(e);const t=ft(e);return t.where=e.where,this.engine.delete(t.table,t)}async resolveWriteWhere(e){const t=e.where;if(!t||0===Object.keys(t).length)return t??{};if(this.hasCorrelatedRefs(t))throw new n("Correlated subqueries and column references are not supported in UPDATE/DELETE WHERE clauses","NOT_SUPPORTED");return e.where=await this.resolveSubqueries(t),e.where}async executeCreateTable(e){if(e.ifNotExists&&await this.engine.hasTable(e.name))return;const t=Object.create(null);for(const s of e.columns)t[s.name]=G(s);return this.engine.createTable(V(e.name,t))}async executeDropTable(e){if(!e.ifExists||await this.engine.hasTable(e.name))return this.engine.dropTable(e.name)}async executeAlterTable(e){if(!await this.engine.hasTable(e.name))throw new n(`Table "${e.name}" does not exist`,"TABLE_NOT_FOUND");const t=await this.engine.getTableSchema(e.name);if(t){if("ADD"===e.action&&e.column.primaryKey&&Object.values(t.columns).some(e=>e.primaryKey))throw new n(`Composite primary keys are not supported yet: table "${e.name}" already has a primary key column`,"SCHEMA_ERROR");if("function"==typeof this.engine.alterTable)return this.engine.alterTable(e.name,e.action,{...G(e.column),name:e.column.name});if("ADD"===e.action){if(t.columns[e.column.name])throw new n(`Column "${e.column.name}" already exists in table "${e.name}"`,"COLUMN_EXISTS");t.columns[e.column.name]=G(e.column)}else if("DROP"===e.action){if(!t.columns[e.column.name])throw new n(`Column "${e.column.name}" does not exist in table "${e.name}"`,"COLUMN_NOT_FOUND");delete t.columns[e.column.name];const s=await this.engine.find(e.name,{table:e.name}),i=e.column.name;for(const e of s)i in e&&delete e[i]}}}async executeTruncateTable(e){if(!await this.engine.hasTable(e.name))throw new n(`Table "${e.name}" does not exist`,"TABLE_NOT_FOUND");return this.engine.clear(e.name)}async executeCreateIndex(e){if(!await this.engine.hasTable(e.table))throw new n(`Table "${e.table}" does not exist`,"TABLE_NOT_FOUND");const t=await this.engine.getTableSchema(e.table);if(t&&!t.columns[e.column])throw new n(`Column "${e.column}" does not exist in table "${e.table}"`,"COLUMN_NOT_FOUND");if("function"!=typeof this.engine.createIndex)throw new n(`Engine "${this.engine.name}" does not support CREATE INDEX`,"NOT_SUPPORTED");return this.engine.createIndex(e.table,e.column,e.unique)}async executeDropIndex(e){if("function"!=typeof this.engine.dropIndex)throw new n(`Engine "${this.engine.name}" does not support DROP INDEX`,"NOT_SUPPORTED");return this.engine.dropIndex(e.table,e.column,e.name)}async executeBegin(){return this.engine.beginTransaction()}async executeCommit(){return this.engine.commitTransaction()}async executeRollback(){return this.engine.rollbackTransaction()}async executeSavepoint(e){const t=this.engine;if("SAVE"===e.action){if("function"!=typeof t.savepoint)throw new n(`Engine "${this.engine.name}" does not support SAVEPOINT`,"NOT_SUPPORTED");return t.savepoint(e.name)}if("ROLLBACK"===e.action){if("function"!=typeof t.rollbackToSavepoint)throw new n(`Engine "${this.engine.name}" does not support ROLLBACK TO SAVEPOINT`,"NOT_SUPPORTED");return t.rollbackToSavepoint(e.name)}if("function"!=typeof t.releaseSavepoint)throw new n(`Engine "${this.engine.name}" does not support RELEASE SAVEPOINT`,"NOT_SUPPORTED");return t.releaseSavepoint(e.name)}async executeAnalyze(e){const t=this.engine;if("function"!=typeof t.analyzeTable)throw new n(`Engine "${this.engine.name}" does not support ANALYZE`,"NOT_SUPPORTED");if(!await this.engine.hasTable(e.table))throw new n(`Table "${e.table}" does not exist`,"TABLE_NOT_FOUND");return t.analyzeTable(e.table)}async executeReindex(e){const t=this.engine;if("function"!=typeof t.reindexTable)throw new n(`Engine "${this.engine.name}" does not support REINDEX`,"NOT_SUPPORTED");if(!await this.engine.hasTable(e.table))throw new n(`Table "${e.table}" does not exist`,"TABLE_NOT_FOUND");return t.reindexTable(e.table)}async executeVacuum(){const e=this.engine;if("function"!=typeof e.vacuum)throw new n(`Engine "${this.engine.name}" does not support VACUUM`,"NOT_SUPPORTED");return e.vacuum()}outputColumnNames(e){const t=new Set;for(const s of e.columns){if("*"===s)return null;const e=Tt(s);if(e){t.add(e.outputKey);continue}const n=/^\s*CASE\b/i.test(s)?It(s):null;if(n){t.add(n.alias??s);continue}const i=s.match(/^(.+?)\s+AS\s+([A-Za-z_][A-Za-z0-9_]*)$/i);i?t.add(i[2]):t.add(kt(s))}return t}orderByReferencesOutputColumns(e){if(!e.orderBy||0===e.orderBy.length)return!0;const t=this.outputColumnNames(e);return null===t||e.orderBy.every(e=>t.has(kt(e.column)))}distinctNeedsPreProjectionSort(e){return!(!e.orderBy||0===e.orderBy.length||this.orderByReferencesOutputColumns(e))}async validateJoinOnColumns(e,t){const s=new Set,i=async(e,t)=>{const n=await this.engine.getTableSchema(e);if(n)for(const e of Object.keys(n.columns))s.add(e),s.add(`${t}.${e}`)};await i(e.from,e.alias??e.from);for(const s of e.joins??[])if(await i(s.table,s.alias??s.table),s===t)break;await i(t.table,t.alias??t.table);const r=[],a=e=>{const t=e.trim();if(!t)return;if(s.has(t))return;const n=t.includes(".")?t.split(".").pop():t;s.has(n)||r.push(t)},o=e=>{if("object"==typeof e&&null!==e)for(const[t,s]of Object.entries(e))"$col"!==t?"object"!=typeof s||null===s||Array.isArray(s)||o(s):a(String(s))};for(const[e,s]of Object.entries(t.on))"$and"!==e&&"$or"!==e&&"$not"!==e&&(a(e),o(s));if(r.length>0)throw new n(`Unknown column${r.length>1?"s":""} ${r.map(e=>`"${e}"`).join(", ")} in JOIN ON of table "${e.from}"`,"COLUMN_NOT_FOUND",{columns:r,from:e.from})}async assertWhereColumnsExist(e,t){e.where&&0!==Object.keys(e.where).length&&(e.fromSubquery||e.from&&await this.validateWhereColumns(e,e.where,{context:"WHERE",rejectAmbiguous:t}))}async validateWhereColumns(e,t,s){const i=s.rejectAmbiguous,r=new Set,a=new Map,o=async(e,t)=>{const s=await this.engine.getTableSchema(e);if(s)for(const e of Object.keys(s.columns)){r.add(e),r.add(`${t}.${e}`);const s=a.get(e);void 0===s?a.set(e,t):s!==t&&a.set(e,"*")}};if(await o(e.from,e.alias??e.from),i)for(const t of e.joins??[])await o(t.table,t.alias??t.table);const h=[],c=[],l=e=>{const t=e.trim();if(!t)return;if(r.has(t))return void(!t.includes(".")&&i&&"*"===a.get(t)&&c.push(t));const s=t.includes(".")?t.split(".").pop():t;r.has(s)||h.push(t)},u=e=>{if("object"!=typeof e||null===e)return;const t=e;for(const[e,s]of Object.entries(t))if("$col"!==e)if("object"!=typeof s||null===s||Array.isArray(s)){if(Array.isArray(s))for(const e of s)u(e)}else u(s);else l(String(s))},f=e=>{for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t)"$not"!==t?"$exists"!==t&&(/^\s*CASE\b/i.test(t)||(l(t),u(s))):f(s);else for(const e of Array.isArray(s)?s:[s])f(e)};if(f(t),c.length>0)throw new n(`Ambiguous column${c.length>1?"s":""} ${c.map(e=>`"${e}"`).join(", ")} in ${s.context}: present in multiple joined tables. Qualify with a table alias.`,"COLUMN_NOT_FOUND",{columns:c});if(h.length>0)throw new n(`Unknown column${h.length>1?"s":""} ${h.map(e=>`"${e}"`).join(", ")} in ${s.context} of table "${e.from}"`,"COLUMN_NOT_FOUND",{columns:h,from:e.from})}hasCaseColumn(e){return e.some(e=>/^\s*CASE\b/i.test(e))}orderByUsesSelectAlias(e){if(!e.orderBy||0===e.orderBy.length)return!1;const t=new Set;for(const s of e.columns){const e=s.match(/\s+AS\s+(\w+)$/i);if(e)t.add(e[1]);else if(/^\s*CASE\b/i.test(s)){const e=It(s);e?.alias&&t.add(e.alias)}}return 0!==t.size&&e.orderBy.some(e=>t.has(e.column))}whereHasCase(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if(/^\s*CASE\b/i.test(t))return!0}else if(this.whereHasCase(s))return!0}else if(s.some(e=>this.whereHasCase(e)))return!0;return!1}getEngine(){return this.engine}assertProjectionColumnsExist(e,t,s){if(0===e.length||0===t.length)return;const i=new Set;for(const t of e)for(const e of Object.keys(t))i.add(e);for(const e of t){const t=e.trim();if("*"===t)continue;if(It(t))continue;let r=t;const a=t.match(/^(.+?)\s+AS\s+\w+$/i);if(a&&(r=a[1].trim()),/^'.*'$/s.test(r))continue;if(/^-?\d+(\.\d+)?$/.test(r))continue;if(/^(TRUE|FALSE|NULL)$/i.test(r))continue;if(/^(COUNT|SUM|AVG|MIN|MAX)\s*\(/i.test(r))continue;if(i.has(r))continue;const o=[];for(const e of i)e.endsWith(`.${r}`)&&o.push(e);if(1!==o.length){if(o.length>1){const e=o.map(e=>e.slice(0,e.length-r.length-1)).sort();throw new n(`Ambiguous column "${r}" in SELECT list: present in ${e.join(", ")}`,"COLUMN_NOT_FOUND",{column:r,tables:e,from:s.from})}throw new n(`Unknown column "${r}" in SELECT list`,"COLUMN_NOT_FOUND",{column:r,from:s.from,available:[...i].slice(0,32)})}}}projectRow(e,t){const s=[],n=[],i=[],r=[];let a=!1;for(const o of t){if("*"===o){a=!0;continue}const t=It(o);if(t){i.push({alias:t.alias??o,expr:t});continue}const h=o.match(/^(.+?)\s+AS\s+(\w+)$/i);if(h){n.push({alias:h[2],source:h[1].trim()});continue}const c=o.match(/^'(.*)'$/s);if(c){const e=c[1].replace(/''/g,"'");r.push({key:o,value:e});continue}/^-?\d+(\.\d+)?$/.test(o)||/^(TRUE|FALSE|NULL)$/i.test(o)?r.push({key:o,value:St(o,e)}):s.push(o)}const o=a?{...e}:s.length>0?K(e,s):{};for(const{alias:t,source:s}of n)"*"===s?Object.assign(o,e):o[t]=St(s,e);for(const{key:e,value:t}of r)o[e]=t;for(const{alias:t,expr:s}of i)o[t]=Rt(s,e);return o}_hasAggregateColumn(e){return e.some(e=>Et(e))}computeSingleAggregate(e,t){const s={};for(const n of t.columns){if("*"===n)continue;const t=Tt(n);t?s[t.outputKey]=t.distinct?this.computeDistinctAggregate(t.func,e,t.arg):this.computeAggregate(t.func,e,t.arg):s[n]=e.length>0?bt(e[0],n,{strict:!1,context:"SELECT list"}):null}return s}normalizeUnprefixedReferences(e,t){const s=t.filter(e=>!!e);e.where&&Object.keys(e.where).length>0&&(e.where=this.normalizeWhereColumns(e.where,s)),e.orderBy&&e.orderBy.length>0&&(e.orderBy=e.orderBy.map(e=>({...e,column:this.stripAlias(e.column,s)}))),e.groupBy&&e.groupBy.length>0&&(e.groupBy=e.groupBy.map(e=>this.stripAlias(e,s))),e.columns=e.columns.map(e=>{if("*"===e||Et(e)||/^\s*CASE\b/i.test(e)||/^'/.test(e))return e;const t=e.match(/^(.+?)\s+AS\s+(\w+)$/i);if(t){const n=this.stripAlias(t[1].trim(),s);return n===t[1].trim()?e:`${n} AS ${t[2]}`}return this.stripAlias(e,s)})}normalizeWhereColumns(e,t){const s={};for(const[n,i]of Object.entries(e))"$and"!==n&&"$or"!==n?"$not"!==n?"$exists"!==n?s[this.stripAlias(n,t)]=this.normalizeFieldValue(i,t):s[n]=this.normalizeExistsValue(i,t):s.$not=this.normalizeWhereColumns(i,t):s[n]=i.map(e=>this.normalizeWhereColumns(e,t));return s}normalizeExistsValue(e,t){if("object"!=typeof e||null===e)return e;const s=e;if(s.$subquery){const e=s.$subquery,n=[e.alias??e.from,...t].filter(Boolean);return{...s,$subquery:{...e,where:this.normalizeWhereColumns(e.where,n)}}}return e}normalizeFieldValue(e,t){if("object"!=typeof e||null===e||Array.isArray(e))return e;const s={};for(const[n,i]of Object.entries(e))"$and"===n||"$or"===n?s[n]=i.map(e=>this.normalizeWhereColumns(e,t)):"$not"===n&&"object"==typeof i&&null!==i?s[n]=this.normalizeFieldValue(i,t):"$col"===n?s[n]=this.stripAlias(String(i),t):"object"==typeof i&&null!==i&&!Array.isArray(i)&&"$col"in i?s[n]={$col:this.stripAlias(String(i.$col),t)}:s[n]=i;return s}stripAlias(e,t){for(const s of t){if(!s)continue;const t=`${s}.`;if(e.startsWith(t))return e.slice(t.length)}return e}hasCorrelatedRefs(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if("$exists"!==t){if(/^\s*CASE\b/i.test(t))return!0;if(this.fieldHasColRef(s))return!0}else if("object"==typeof s&&null!==s&&"$subquery"in s)return!0}else if(this.hasCorrelatedRefs(s))return!0}else if(s.some(e=>this.hasCorrelatedRefs(e)))return!0;return!1}fieldHasColRef(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;const t=e;if("$col"in t)return!0;if("$and"in t||"$or"in t)return(t.$and??t.$or).some(e=>this.hasCorrelatedRefs(e));if("$not"in t&&"object"==typeof t.$not&&null!==t.$not)return this.fieldHasColRef(t.$not);for(const[,e]of Object.entries(t))if("object"==typeof e&&null!==e&&!Array.isArray(e)){if("$col"in e)return!0;if(this.fieldHasColRef(e))return!0}return!1}enginePreFilter(e){const t={};for(const[s,n]of Object.entries(e)){if("$and"===s){const e=n.map(e=>this.enginePreFilter(e)).filter(e=>Object.keys(e).length>0);e.length>0&&(t.$and=e);continue}if("$or"===s){const e=n;if(e.some(e=>!this.isEngineEvaluable(e)))continue;t.$or=e.map(e=>this.enginePreFilter(e));continue}if("$not"===s){const e=n;if(!this.isEngineEvaluable(e))continue;t.$not=this.enginePreFilter(e);continue}"$exists"!==s&&(/^\s*CASE\b/i.test(s)||this.fieldHasColRef(n)||this.fieldHasSubquery(n)||(t[s]=n))}return t}isEngineEvaluable(e){for(const[t,s]of Object.entries(e))if("$and"!==t&&"$or"!==t){if("$not"!==t){if("$exists"===t)return!1;if(/^\s*CASE\b/i.test(t))return!1;if(this.fieldHasColRef(s)||this.fieldHasSubquery(s))return!1}else if(!this.isEngineEvaluable(s))return!1}else if(s.some(e=>!this.isEngineEvaluable(e)))return!1;return!0}fieldHasSubquery(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;const t=e;if("$subquery"in t)return!0;for(const[,e]of Object.entries(t)){if("object"==typeof e&&null!==e&&!Array.isArray(e)&&"$subquery"in e)return!0;if(Array.isArray(e))for(const t of e)if("object"==typeof t&&null!==t&&"$subquery"in t)return!0}return!1}async filterCorrelated(e,t,s=[]){const n=[];for(const i of e){let e=this.resolveCaseKeys(t,i);e=await this.resolveSubqueries(e,i,s),S(i,e,{$col:!0})&&n.push(i)}return n}resolveCaseKeys(e,t){const s={};for(const[n,i]of Object.entries(e))if("$and"!==n&&"$or"!==n)if("$not"!==n){if(/^\s*CASE\b/i.test(n)){const e=It(n);if(!e)continue;const r=Rt(e,t);if(!this.caseConditionMatches(r,i))return{$caseResult:!1};s.$caseResult=!0;continue}s[n]=i}else s.$not=this.resolveCaseKeys(i,t);else s[n]=i.map(e=>this.resolveCaseKeys(e,t));return s}caseConditionMatches(e,t){if("object"!=typeof t||null===t||Array.isArray(t))return e===t;const s=t;for(const[t,n]of Object.entries(s))switch(t){case"$eq":if(e!==n)return!1;break;case"$ne":if(e===n)return!1;break;case"$gt":if(!(e>n))return!1;break;case"$gte":if(!(e>=n))return!1;break;case"$lt":if(!(ethis.bindWhereRefs(e,t,s));else if("$not"===i&&"object"==typeof r&&null!==r)n[i]=this.bindColumnRefs(r,t,s);else if("object"==typeof r&&null!==r&&!Array.isArray(r)&&"$col"in r)n[i]=this.lookupOuterValue(t,String(r.$col),s);else if("object"==typeof r&&null!==r&&!Array.isArray(r)&&"$subquery"in r){const e=r.$subquery,a=e.where&&this.hasCorrelatedRefs(e.where)?this.bindWhereRefs(e.where,t,s):e.where;n[i]={$subquery:{...e,where:a}}}else n[i]=r;return n}lookupOuterValue(e,t,s){const n=this.stripAlias(t,s);return n in e?e[n]:t in e?e[t]:null}bindWhereRefs(e,t,s=[]){const n={};for(const[i,r]of Object.entries(e))"$and"===i||"$or"===i?n[i]=r.map(e=>this.bindWhereRefs(e,t,s)):"$not"===i?n.$not=this.bindWhereRefs(r,t,s):n[i]="$exists"===i?r:this.bindColumnRefs(r,t,s);return n}async resolveSubqueries(e,t,s=[]){t&&(e=this.bindWhereRefs(e,t,s));const n={};for(const[i,r]of Object.entries(e)){if("$exists"===i&&"object"==typeof r&&null!==r){const e=r,s=e.$subquery,i=!!e.$negate;let a=s.where;this.hasCorrelatedRefs(a)&&(a=this.bindWhereRefs(a,t??{}));const o=await this.executeSelectPart({...s,where:a});n.$exists=o.length>0!==i;continue}"$and"===i&&Array.isArray(r)?n.$and=await Promise.all(r.map(e=>this.resolveSubqueries(e,t,s))):"$or"===i&&Array.isArray(r)?n.$or=await Promise.all(r.map(e=>this.resolveSubqueries(e,t,s))):"$not"!==i||"object"!=typeof r||null===r?n[i]="object"==typeof r&&null!==r?await this.resolveOperatorSubqueries(r,t,s):r:n.$not=await this.resolveSubqueries(r,t,s)}return n}async resolveOperatorSubqueries(e,t,s=[]){const n={};for(const[i,r]of Object.entries(e))if("$and"===i&&Array.isArray(r))n.$and=await Promise.all(r.map(e=>this.resolveSubqueries(e,t,s)));else if("$or"===i&&Array.isArray(r))n.$or=await Promise.all(r.map(e=>this.resolveSubqueries(e,t,s)));else if("$not"!==i)if("object"==typeof r&&null!==r&&"$subquery"in r){let e=r.$subquery;t&&this.hasCorrelatedRefs(e.where)&&(e={...e,where:this.bindWhereRefs(e.where,t,s)});const a=await this.executeSelect(e);if("$in"===i||"$nin"===i){const e=Object.keys(a[0]||{})[0],t=a.map(t=>t[e]);n[i]=t}else if(0===a.length)n[i]=null;else{const e=Object.keys(a[0])[0];n[i]=a[0][e]}}else n[i]=r;else n.$not="object"==typeof r&&null!==r?await this.resolveOperatorSubqueries(r,t,s):r;return n}}function Ot(e){if(null==e)return"NULL";if("number"==typeof e)return Number.isFinite(e)?String(e):"NULL";if("boolean"==typeof e)return e?"TRUE":"FALSE";if("string"==typeof e)return`'${e.replace(/'/g,"''")}'`;throw new n("Object/array query parameters are not supported by SQL binding (pass JSON strings explicitly)","PARAM_ERROR")}function Nt(e,t){if(!t)return e;let s="",i=0,r=0,a=null;for(;i=t.length)throw new n(`Too few query parameters: placeholder #${r+1} has no value (got ${t.length} total)`,"PARAM_ERROR");s+=Ot(t[r]),r++,i++}else{for(s+=e[i]+e[i+1],i+=2;i(e.priority??0)t.name===e);-1!==t&&(this.plugins[t].destroy(),this.plugins.splice(t,1))}getPlugins(){return[...this.plugins]}on(e,t){const s=this.hooks.get(e)??[];s.push(t),this.hooks.set(e,s)}off(e,t){const s=this.hooks.get(e);if(s){const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}async trigger(e,...t){const s=this.hooks.get(e);if(s)for(const e of s)await e(...t)}destroy(){for(const e of this.plugins)try{e.destroy()}catch(e){}this.plugins=[],this.hooks.clear()}}class Ut{static async create(e){const t=new Ut(e);return await t.init(),t}get version(){return this._version}get maxRowsPerQuery(){return this.config.maxRowsPerQuery??0}get debug(){return this.config.debug??!1}constructor(e){this.ready=!1,this.tableCache=new Map,this.channel=null,this.notifier=null,this.listeners=new Map,this.migrations=new Map,this.config=e,this.name=e.name??s.name,this.mode=e.mode??s.mode,this._version=e.version??s.version,this.pluginManager=new vt,e.multiTabSync&&"undefined"!=typeof BroadcastChannel&&(this.channel=new BroadcastChannel(`metona-sqlark:${this.name}`),this.channel.onmessage=e=>{const t=e.data;if(!t||"change"!==t.type)return;this.emitExternal(t.table??"");const s=this.unwrapEngine();s instanceof ot&&s.reloadMemoryFromDisk().catch(()=>{})})}async init(){if(this.engine=this.createEngine(),await this.engine.open(this.name,this.version),this.engine=new r(this.engine,e=>this._onError(e),e=>this.broadcastChange(e)),this.notifier=this.engine,this.notifier.addListener(async e=>{const t=this.listeners.get(`change:${e.table}`);if(t&&0!==t.size)for(const s of[...t])try{await s(e)}catch(e){this._onError(e)}}),"function"==typeof this.engine.getMeta)try{const e=await this.engine.getMeta("__metona_version");null!=e&&Number(e)>=1&&(this._version=Math.max(this._version,Math.floor(Number(e))))}catch{}if(this.executor=new Ct(this.engine,this.maxRowsPerQuery),this.transactionManager=new Lt(this.engine),this.config.plugins)for(const e of this.config.plugins)this.pluginManager.register(e,this);this.ready=!0,this.config.onReady&&this.config.onReady(this)}isReady(){return this.ready}async defineTable(e,t){this.ensureReady();const s=V(e,t);try{await this.pluginManager.trigger("beforeCreateTable",s),await this.engine.createTable(s),await this.pluginManager.trigger("afterCreateTable",s)}catch(e){throw this._onError(e),e}this.tableCache.delete(e)}table(e){this.ensureReady();let t=this.tableCache.get(e);return t||(t=new ut(this.engine,e,this.executor,()=>{},(e,t)=>this.pluginManager.trigger(e,...t)),this.tableCache.set(e,t)),t}async dropTable(e){this.ensureReady();try{await this.pluginManager.trigger("beforeDropTable",e),await this.engine.dropTable(e),await this.pluginManager.trigger("afterDropTable",e)}catch(e){throw this._onError(e),e}this.tableCache.delete(e)}async getTableNames(){return this.ensureReady(),this.engine.getTableNames()}async query(e,t){this.ensureReady();const s=this.debug?Date.now():0;let n;await this.pluginManager.trigger("beforeQuery",e);try{const s=wt(Nt(e,t));for(const e of s)await this.triggerStatementHooks(e,"before"),n=await this.executor.execute(e),await this.triggerStatementHooks(e,"after",n)}catch(e){throw this._onError(e),e}if(await this.pluginManager.trigger("afterQuery",e,n),this.debug){const t=Date.now()-s,i=Array.isArray(n)?n.length:0;this._debug(`query [${t}ms] ${i} rows: ${e.slice(0,100)}`)}return n}async queryStream(e,t){this.ensureReady();const s=wt(e);if(1!==s.length)throw new n("queryStream requires exactly one SELECT statement","PARSE_ERROR");const i=s[0];if(!i||"SELECT"!==i.type)throw new n("queryStream only supports SELECT statements","NOT_SUPPORTED");const r=i,a=this.executor.analyzeSelect(r);if(0===r.limit)return 0;if(this.isAsyncCallback(t)){const s=await this.query(e);if(!Array.isArray(s))return 0;for(const e of s)await t(e);return s.length}if(a.streamable&&"function"==typeof this.engine.findStream){const e=this.normalizeWhereForStream(r),s=[r.alias??r.from].filter(Boolean),n=r.columns.length>0?r.columns.map(e=>this.stripAliasPrefix(e,s)):["*"],i=this.maxRowsPerQuery;let a=0;const o=await this.engine.findStream(r.from,{table:r.from,columns:n,where:e&&Object.keys(e).length>0?e:void 0,limit:r.limit,offset:r.offset},e=>{i>0&&a>=i||(a++,t(e))});return i>0?Math.min(o,i):o}const o=await this.query(e);if(Array.isArray(o)){for(const e of o)await t(e);return o.length}return 0}isAsyncCallback(e){const t=e.constructor?.name;if("AsyncFunction"===t)return!0;try{return/^\s*async\b/.test(Function.prototype.toString.call(e))}catch{return!1}}stripAliasPrefix(e,t){for(const s of t)if(s&&e.startsWith(`${s}.`))return e.slice(s.length+1);return e}normalizeWhereForStream(e){const t=[e.alias??e.from].filter(Boolean),s=e=>{for(const s of t)if(e.startsWith(`${s}.`))return e.slice(s.length+1);return e},n=e=>{const t={};for(const[i,r]of Object.entries(e))"$and"===i||"$or"===i?t[i]=r.map(n):"$not"===i&&"object"==typeof r&&null!==r?t.$not=n(r):t[s(i)]=r;return t};return n(e.where??{})}async transaction(e){this.ensureReady(),await this.pluginManager.trigger("beforeTransaction");try{const t=await this.transactionManager.execute(e);return await this.pluginManager.trigger("afterTransaction"),t}catch(e){throw this._onError(e),e}}async exportTable(e){return this.ensureReady(),this.engine.find(e,{table:e})}async importTable(e,t){this.ensureReady();try{return await this.engine.insert(e,t)}catch(e){throw this._onError(e),e}}async exportAll(){this.ensureReady();const e={},t=await this.engine.getTableNames();for(const s of t)e[s]=await this.engine.find(s,{table:s});return e}async backup(){return this.ensureReady(),"function"==typeof this.engine.backup?this.engine.backup():this.exportAll()}subscribe(e,t){const s=`change:${e}`;return this.listeners.has(s)||this.listeners.set(s,new Set),this.listeners.get(s).add(t),()=>{this.listeners.get(s)?.delete(t)}}async emit(e,t){await this.dispatchChange({table:e,...t})}async emitExternal(e){const t={type:"external",table:e},s=this.listeners.get(`change:${e}`);if(s)for(const e of[...s])try{await e(t)}catch(e){this._onError(e)}}async dispatchChange(e){this.notifier?await this.notifier.dispatch(e):this.broadcastChange(e.table)}broadcastChange(e){if(this.channel)try{this.channel.postMessage({type:"change",table:e})}catch{}}writeStatementTable(e){switch(e.type){case"INSERT":return e.into;case"UPDATE":case"CREATE_INDEX":case"DROP_INDEX":return e.table;case"DELETE":return e.from;case"CREATE_TABLE":case"DROP_TABLE":case"TRUNCATE_TABLE":case"ALTER_TABLE":return e.name;default:return null}}async triggerStatementHooks(e,t,s){switch(e.type){case"INSERT":{let n=e.columns??[];if(0===n.length)try{const t=await this.engine.getTableSchema(e.into);n=t?Object.keys(t.columns):[]}catch{n=[]}const i=(e.values??[]).map(e=>{const t={};for(let s=0;se[0]-t[0]))t<=e&&t>this._version&&(await s(this),this._version=t);if("function"==typeof this.engine.setMeta)try{await this.engine.setMeta("__metona_version",String(this._version))}catch{}}async repair(){if(this.ensureReady(),"function"==typeof this.engine.repair)return await this.engine.repair(),void this.tableCache.clear();this.tableCache.clear()}async clearAll(){if(this.ensureReady(),"function"==typeof this.engine.clearAll)await this.engine.clearAll();else{const e=await this.engine.getTableNames();for(const t of e)await this.engine.dropTable(t)}this.tableCache.clear()}getPluginManager(){return this.pluginManager}on(e,t){this.pluginManager.on(e,t)}async close(){this.channel&&(this.channel.close(),this.channel=null),this.pluginManager.destroy(),this.engine&&await this.engine.close(),this.tableCache.clear(),this.ready=!1}getEngine(){return this.unwrapEngine()}unwrapEngine(){return this.notifier?this.notifier.getInner():this.engine}createEngine(){const e=this.mode,t=this.config.diskEngine??"opfs";switch(e){case"memory":return new H;case"disk":return new me;case"aria":return new at({storageBackend:"memory"===t?"memory":"kv"===t?"kv":"opfs",...this.config.aria??{}});case"hybrid":return new ot(t);default:throw new n(`Unknown storage mode: ${e}`,"CONFIG_ERROR")}}ensureReady(){if(!this.ready)throw new n("Database not initialized. Call await db.init() first.","DB_NOT_READY")}_onError(e){if(this.config.onError)try{this.config.onError(e)}catch{}}_debug(e,...t){this.debug}}const Dt=new class{constructor(){this.connections=new Map,this.refCount=new Map}async connect(e){const t=e.name,s=this.connections.get(t);if(s&&s.isReady()){const e=(this.refCount.get(t)??0)+1;return this.refCount.set(t,e),s}const n=new Ut(e);return await n.init(),this.connections.set(t,n),this.refCount.set(t,1),n.disconnect=async()=>{await this.release(t)},n}async release(e){const t=(this.refCount.get(e)??1)-1;if(t<=0){const t=this.connections.get(e);t&&(await t.close(),this.connections.delete(e)),this.refCount.delete(e)}else this.refCount.set(e,t)}async forceClose(e){const t=this.connections.get(e);t&&(await t.close(),this.connections.delete(e)),this.refCount.delete(e)}async closeAll(){for(const[,e]of this.connections)try{await e.close()}catch{}this.connections.clear(),this.refCount.clear()}getActiveConnections(){return Array.from(this.connections.keys())}},_t=Ut;async function Mt(e){return Ut.create(e)}_t.connect=e=>Dt.connect(e),_t.disconnect=e=>Dt.release(e),_t.disconnectAll=()=>Dt.closeAll(),_t.getActiveConnections=()=>Dt.getActiveConnections();const Pt={VERSION:i,version:i,create:Mt,MetonaSqlark:Ut,MeSqlark:Ut};"undefined"!=typeof window&&(window.MetonaSqlark=Pt,window.MeSqlark=Pt);const Bt=Ut;e.AriaEngine=at,e.DatabaseError=n,e.HybridEngine=ot,e.KVStoreEngine=me,e.MeSqlark=Bt,e.MemoryEngine=H,e.MetonaSqlark=Ut,e.OPFSBackend=Q,e.PluginManager=vt,e.Table=ut,e.Transaction=$t,e.TransactionManager=Lt,e.VERSION=i,e.api=Pt,e.bindParameters=Nt,e.create=Mt,e.default=Pt,e.parse=function(e){return new mt(e).parseStatement()},e.parseAll=wt,e.parseWhereCondition=gt,e.tokenize=function(e){const t=new yt(e),s=[];let n=t.nextToken();for(;n.type!==dt.EOF;)s.push(n),n=t.nextToken();return s.push(n),s},Object.defineProperty(e,"__esModule",{value:!0})}); diff --git a/src/query/executor.ts b/src/query/executor.ts index bade329..a69284b 100644 --- a/src/query/executor.ts +++ b/src/query/executor.ts @@ -683,6 +683,18 @@ export class QueryExecutor { const { hasGroupBy, hasAggregate, isJoinQuery, needsRawRows, orderByAlias, hasSelectAlias, limitPushdownSafe } = shape; let rows: Record[]; + // v0.8.0(A37):WHERE 里的列引用也必须校验存在性。 + // + // 投影侧的同类校验(assertProjectionColumnsExist)早已存在,但 WHERE 侧一直 + // 没有 —— 于是 `$col`(列对列比较)引用到不存在的列时,求值器取不到值 → + // 返回 UNRESOLVED → 比较判 UNKNOWN → **所有行被过滤且不报错**。实测修复前: + // SELECT id FROM t WHERE id = oops → [] + // SELECT id FROM t WHERE id = t.oops → [] + // SELECT id FROM t WHERE x = nope → [] + // 三条都会静默返回空集(`oops` 在 SQL 里是列引用,因为没有别的字面量形态)。 + // 这正是"未解析引用静默变 false"这一整类缺陷(PLAN §3 根因 7)的最后一块。 + await this.assertWhereColumnsExist(stmt, isJoinQuery); + if (stmt.fromSubquery) { // v0.4.0: FROM (SELECT ...) 派生表 — 子查询结果作为行源 const subRows = await this.executeSelectPart(stmt.fromSubquery); @@ -854,6 +866,16 @@ export class QueryExecutor { // ---- JOIN ---- private async executeJoinSelect(stmt: SelectStatement, preloadedMain?: Record[]): Promise[]> { + // v0.8.0(A37):JOIN ON 的列引用也要校验存在性。 + // + // 修复前 `ON l.k = rn.nope` 这类拼错的列名会走到 matchWhere → $col 取不到值 + // → UNKNOWN → **没有任何行能连接上**,用户看到的是空结果而不是"列不存在"。 + // 这里与 SELECT 的 WHERE 校验共用同一实现(不同 context 文案与歧义策略)。 + for (const join of stmt.joins ?? []) { + if (join.on && Object.keys(join.on).length > 0) { + await this.validateJoinOnColumns(stmt, join); + } + } const mainAlias = stmt.alias ?? stmt.from; // v0.4.0: 派生表行源已预加载(行带别名前缀) let mainRows: Record[]; @@ -1745,7 +1767,198 @@ export class QueryExecutor { return !this.orderByReferencesOutputColumns(stmt); } - /** 列列表是否包含 CASE WHEN 表达式 */ + /** + * v0.8.0(A37):校验 JOIN ON 里引用的列在**参与连接的两张表**之一存在。 + * + * `ON a.x = b.y` 的 `a.x` 属于主表或已有 JOIN 表,`b.y` 属于当前 JOIN 表 —— + * 两侧都要能找到归属;否则报 COLUMN_NOT_FOUND(而不是让连接静默产生空结果)。 + * 裸列名只要求"某一侧存在"(`ON k = k` 的既有语义是取主表列)。 + */ + private async validateJoinOnColumns( + stmt: SelectStatement, + join: JoinClause, + ): Promise { + const available = new Set(); + const addTable = async (table: string, alias: string): Promise => { + const schema = await this.engine.getTableSchema(table); + if (!schema) return; + for (const col of Object.keys(schema.columns)) { + available.add(col); + available.add(`${alias}.${col}`); + } + }; + await addTable(stmt.from, stmt.alias ?? stmt.from); + for (const other of stmt.joins ?? []) { + await addTable(other.table, other.alias ?? other.table); + if (other === join) break; + } + await addTable(join.table, join.alias ?? join.table); + + const missing: string[] = []; + const check = (ref: string): void => { + const text = ref.trim(); + if (!text) return; + if (available.has(text)) return; + const bare = text.includes('.') ? text.split('.').pop()! : text; + if (available.has(bare)) return; + missing.push(text); + }; + const walkOperand = (value: unknown): void => { + if (typeof value !== 'object' || value === null) return; + for (const [op, operand] of Object.entries(value as Record)) { + if (op === '$col') { check(String(operand)); continue; } + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) walkOperand(operand); + } + }; + for (const [key, value] of Object.entries(join.on)) { + if (key === '$and' || key === '$or' || key === '$not') continue; + check(key); + walkOperand(value); + } + if (missing.length > 0) { + throw new DatabaseError( + `Unknown column${missing.length > 1 ? 's' : ''} ${missing.map((c) => `"${c}"`).join(', ')}` + + ` in JOIN ON of table "${stmt.from}"`, + 'COLUMN_NOT_FOUND', + { columns: missing, from: stmt.from }, + ); + } + } + + /** + * v0.8.0(A37):校验 WHERE 中出现的列名都存在于行源。 + * + * 覆盖两类引用: + * - **键位**:`WHERE x = 1` 的 `x`; + * - **`$col` 值位**:`WHERE x = y` 的 `y`(parser 生成 `{ x: { $eq: { $col: 'y' } } }`), + * 含 `$and`/`$or`/`$not` 内部的操作数槽。 + * + * 派生表与子查询的行源:跳过(其列来自子查询投影,需要单独解析; + * 由 `normalizeUnprefixedReferences` + 运行时行形状决定)。 + * JOIN:两侧的表别名都要参与判定 —— `t.x` 与另一表的 `u.x` 都属于合法引用。 + * + * 之所以必须是**显式错误**而不是依赖运行时 UNKNOWN:`$col` 取不到值时 + * 三值求值器只能返回 UNKNOWN,而 UNKNOWN 在 WHERE 里表现为"不保留该行" —— + * 用户看到的是"没有匹配数据",与"列名拼错"完全无法区分。 + */ + private async assertWhereColumnsExist(stmt: SelectStatement, isJoinQuery: boolean): Promise { + if (!stmt.where || Object.keys(stmt.where).length === 0) return; + // 派生表行源:列来自子查询投影,此处不做 schema 校验 + if (stmt.fromSubquery) return; + if (!stmt.from) return; + await this.validateWhereColumns(stmt, stmt.where, { + context: 'WHERE', + rejectAmbiguous: isJoinQuery, + }); + } + + /** + * 通用的 WHERE 侧列引用校验(SELECT 的 WHERE 与 JOIN 的 ON 共用)。 + * + * @param context 错误消息中的位置描述('WHERE' / 'JOIN ON') + * @param rejectAmbiguous JOIN 场景下裸列名被多表共有 → 报歧义(SQL 标准要求限定)。 + * **JOIN ON 传 false**:`ON a.x = b.x` 里两侧的限定名各自 + * 合法,而 `ON k = k` 这种裸写法在 JOIN 语境下按"取主表列" + * 解释(与既有 joinRows 行为一致),不应因为"两表都有 k" + * 就拒绝 —— 那会把常见的等值连接写法判为错误。 + */ + private async validateWhereColumns( + stmt: SelectStatement, + where: WhereCondition, + opts: { context: string; rejectAmbiguous: boolean }, + ): Promise { + const isJoinQuery = opts.rejectAmbiguous; + const available = new Set(); + const owners = new Map(); // 裸列名 → 表别名(用于歧义判定) + const collectFrom = async (table: string, alias: string): Promise => { + const schema = await this.engine.getTableSchema(table); + if (!schema) return; + for (const col of Object.keys(schema.columns)) { + available.add(col); + available.add(`${alias}.${col}`); + const prev = owners.get(col); + if (prev === undefined) owners.set(col, alias); + else if (prev !== alias) owners.set(col, '*'); // 多表共有 → 歧义 + } + }; + + await collectFrom(stmt.from, stmt.alias ?? stmt.from); + if (isJoinQuery) { + for (const join of stmt.joins ?? []) { + await collectFrom(join.table, join.alias ?? join.table); + } + } + + const missing: string[] = []; + const ambiguous: string[] = []; + const check = (ref: string): void => { + const text = ref.trim(); + if (!text) return; + if (available.has(text)) { + // 裸列名在 JOIN 中若被多张表共有 → 歧义(SQL 标准要求限定) + if (!text.includes('.') && isJoinQuery && owners.get(text) === '*') ambiguous.push(text); + return; + } + // 唯一后缀匹配(行键可能带别名,而 where 写作裸列名;反向亦然) + const bare = text.includes('.') ? text.split('.').pop()! : text; + if (available.has(bare)) return; + missing.push(text); + }; + + const walkOperand = (value: unknown): void => { + if (typeof value !== 'object' || value === null) return; + const ops = value as Record; + for (const [op, operand] of Object.entries(ops)) { + if (op === '$col') { + check(String(operand)); + continue; + } + if (typeof operand === 'object' && operand !== null && !Array.isArray(operand)) { + walkOperand(operand); + } else if (Array.isArray(operand)) { + for (const item of operand) walkOperand(item); + } + } + }; + + const walkWhere = (cond: WhereCondition): void => { + for (const [key, value] of Object.entries(cond)) { + if (key === '$and' || key === '$or') { + for (const sub of (Array.isArray(value) ? value : [value]) as WhereCondition[]) walkWhere(sub); + continue; + } + if (key === '$not') { + walkWhere(value as WhereCondition); + continue; + } + if (key === '$exists') continue; // 由子查询执行结果填充 + if (/^\s*CASE\b/i.test(key)) continue; // CASE 键内含表达式,另行求值 + check(key); + walkOperand(value); + } + }; + walkWhere(where); + + if (ambiguous.length > 0) { + throw new DatabaseError( + `Ambiguous column${ambiguous.length > 1 ? 's' : ''} ${ambiguous.map((c) => `"${c}"`).join(', ')}` + + ` in ${opts.context}: present in multiple joined tables. Qualify with a table alias.`, + 'COLUMN_NOT_FOUND', + { columns: ambiguous }, + ); + } + if (missing.length > 0) { + throw new DatabaseError( + `Unknown column${missing.length > 1 ? 's' : ''} ${missing.map((c) => `"${c}"`).join(', ')}` + + ` in ${opts.context} of table "${stmt.from}"`, + 'COLUMN_NOT_FOUND', + { columns: missing, from: stmt.from }, + ); + } + } + + /** + * 列列表是否包含 CASE WHEN 表达式 */ private hasCaseColumn(columns: string[]): boolean { return columns.some((col) => /^\s*CASE\b/i.test(col)); } diff --git a/src/sql/parser.ts b/src/sql/parser.ts index 96c46cf..77d2e8a 100644 --- a/src/sql/parser.ts +++ b/src/sql/parser.ts @@ -1062,14 +1062,28 @@ export class Parser { return result; } - // 尝试解析列引用(identifier DOT identifier 格式) + // 解析比较运算符右侧的操作数(v0.8.0: 支持列引用) + // + // 此前只有 `a.b`(带点)形态被当作列引用,裸标识符一律走 parseValue → + // `WHERE x = y` 抛 PARSE_ERROR("Expected value, got \"y\"")。于是列对列比较 + // 必须写成 `WHERE t.x = t.y`,而多表 JOIN 里未限定列恰恰是最自然的写法 + // (`ON k = k` 同样报错)。 + // + // 判定依据是**位置**而不是猜测:能走到这里说明运算符已被消费,当前 token + // 就是右侧操作数。这个位置上除了列名只可能是字面量,而字面量有各自的 + // token 类型(NUMBER / STRING / TRUE / FALSE / NULL)—— 因此 + // **IDENTIFIER 在操作数位置必然是列引用**,没有别的可能: + // `id = 5` / `id = 'a'` / `active = TRUE` / `x = NULL` → 都不是 IDENTIFIER ✓ + // `x = y` → y 是 IDENTIFIER → 列引用 ✓ + // + // 拼错的列名(`WHERE id = nmae`)因此变成 **COLUMN_NOT_FOUND**(列不存在)而不是 + // PARSE_ERROR —— 这是更准确的诊断:问题不是"语法不对",而是"没有这一列"。 let value: unknown; - if ( - (this.curToken.type === TokenType.IDENTIFIER || this._isKeywordAsIdent()) && - this.peekTokenIs(TokenType.DOT) - ) { - const colRef = this.parseColumnRef(); - value = { $col: colRef }; + if (this.curToken.type === TokenType.QUOTED_IDENTIFIER) { + // 分隔标识符("col")在操作数位置同样是列引用 + value = { $col: this.expectColumnReference() }; + } else if (this.curToken.type === TokenType.IDENTIFIER && !this._isReservedKeywordToken()) { + value = { $col: this.expectColumnReference() }; } else { value = this.parseValue(); } @@ -1079,6 +1093,18 @@ export class Parser { return result; } + /** + * v0.8.0:当前 token 是否"看起来像标识符但其实是关键字"。 + * + * 操作数位置上的 IDENTIFIER 必然是列引用(见上),但 `_isKeywordAsIdent()` 为真 + * 的那些 token 是**关键字**(它们可能作为列名出现在别处,但不会作为比较的右操作数 + * 出现)—— 例如 `WHERE a = AND` 之类的非法输入应当继续报 PARSE_ERROR, + * 而不是被当成列名再去查表。 + */ + private _isReservedKeywordToken(): boolean { + return this.curToken.type !== TokenType.IDENTIFIER && this._isKeywordAsIdent(); + } + /** 解析 EXISTS (SELECT ...) / NOT EXISTS (SELECT ...) */ private parseExistsCondition(negate: boolean): WhereCondition { this.expect(TokenType.LPAREN); @@ -1103,6 +1129,20 @@ export class Parser { return this.peekToken.type === type; } + /** + * 解析一个列引用:`a` 或 `a.b`(v0.8.0 支持未限定形态)。 + * 与 `parseColumnRef` 的区别:后者还接受 CASE/数字/字符串字面量(SELECT 列表用), + * 这里只接受真正的列名。 + */ + private expectColumnReference(): string { + const col = this.expectIdentifier('column reference'); + if (this.curTokenIs(TokenType.DOT)) { + this.nextToken(); + return `${col}.${this.expectIdentifier('column name after "."')}`; + } + return col; + } + private parseComparisonOp(): string { switch (this.curToken.type) { case TokenType.EQ: this.nextToken(); return '$eq'; diff --git a/src/table/schema.ts b/src/table/schema.ts index fcce805..766298f 100644 --- a/src/table/schema.ts +++ b/src/table/schema.ts @@ -7,6 +7,16 @@ import type { TableSchema, ColumnDef, FieldType } from '../constants'; import { FIELD_TYPES, DatabaseError } from '../constants'; import { compileValidator } from './validation'; +// v0.8.0(B-1):`checkFieldType` 的实现已迁到 `validation.ts`(唯一校验定义), +// 这里重新导出以保持公开 API 不变。 +// +// 为什么必须搬走:'schema.ts ↔ validation.ts' 之前是**循环依赖** +//(schema 需要 compileValidator;validation 需要 checkFieldType), +// rollup 构建时明确告警 'Circular dependency'。循环依赖在 ESM 下的 +// 求值顺序不稳定(谁先被 import 谁就先初始化),是难查的运行时陷阱; +// 依赖方向必须单向:validation(约束实现)← schema(DDL 工具)。 +export { checkFieldType } from './validation'; + // --------------------------------------------------------------------------- // Schema 工具 // --------------------------------------------------------------------------- @@ -100,82 +110,6 @@ export function validateRow(schema: TableSchema, row: Record): return compileValidator(schema).validateRow(row); } -/** 检查字段类型(含约束校验) */ -export function checkFieldType( - tableName: string, - colName: string, - type: FieldType, - value: unknown, - colDef?: ColumnDef, -): void { - const jsType = typeof value; - - switch (type) { - case 'string': - if (jsType !== 'string') { - throw new DatabaseError( - `Column "${colName}" in table "${tableName}" expects string, got ${jsType}`, - 'TYPE_ERROR', - ); - } - if (colDef?.maxLength !== undefined && (value as string).length > colDef.maxLength) { - throw new DatabaseError( - `Column "${colName}" in table "${tableName}" exceeds max length ${colDef.maxLength}`, - 'VALIDATION_ERROR', - ); - } - break; - - case 'number': - if (jsType !== 'number') { - throw new DatabaseError( - `Column "${colName}" in table "${tableName}" expects number, got ${jsType}`, - 'TYPE_ERROR', - ); - } - if (colDef?.min !== undefined && (value as number) < colDef.min) { - throw new DatabaseError( - `Column "${colName}" in table "${tableName}" value ${value} below minimum ${colDef.min}`, - 'VALIDATION_ERROR', - ); - } - if (colDef?.max !== undefined && (value as number) > colDef.max) { - throw new DatabaseError( - `Column "${colName}" in table "${tableName}" value ${value} above maximum ${colDef.max}`, - 'VALIDATION_ERROR', - ); - } - break; - - case 'boolean': - if (jsType !== 'boolean') { - throw new DatabaseError( - `Column "${colName}" in table "${tableName}" expects boolean, got ${jsType}`, - 'TYPE_ERROR', - ); - } - break; - - case 'date': - if (jsType !== 'string' || isNaN(Date.parse(value as string))) { - throw new DatabaseError( - `Column "${colName}" in table "${tableName}" expects valid date string, got ${typeof value}`, - 'TYPE_ERROR', - ); - } - break; - - case 'json': - if (jsType !== 'object') { - throw new DatabaseError( - `Column "${colName}" in table "${tableName}" expects object/array, got ${jsType}`, - 'TYPE_ERROR', - ); - } - break; - } -} - /** 将 AST 列定义转换为 ColumnDef */ export function astColumnToColumnDef(astCol: { name: string; diff --git a/src/table/validation.ts b/src/table/validation.ts index 8c1fd00..61d5e92 100644 --- a/src/table/validation.ts +++ b/src/table/validation.ts @@ -42,7 +42,6 @@ import type { TableSchema, ColumnDef, FieldType } from '../constants'; import { DatabaseError } from '../constants'; -import { checkFieldType } from './schema'; // --------------------------------------------------------------------------- // 结果类型 @@ -265,3 +264,83 @@ export function collectUnknownColumns( /** 类型再导出,避免调用方从 constants 与 schema 两处 import */ export type { ColumnDef, FieldType }; + +// --------------------------------------------------------------------------- +// 字段类型与约束检查(唯一实现) +// --------------------------------------------------------------------------- + +/** 检查字段类型(含约束校验) */ +export function checkFieldType( + tableName: string, + colName: string, + type: FieldType, + value: unknown, + colDef?: ColumnDef, +): void { + const jsType = typeof value; + + switch (type) { + case 'string': + if (jsType !== 'string') { + throw new DatabaseError( + `Column "${colName}" in table "${tableName}" expects string, got ${jsType}`, + 'TYPE_ERROR', + ); + } + if (colDef?.maxLength !== undefined && (value as string).length > colDef.maxLength) { + throw new DatabaseError( + `Column "${colName}" in table "${tableName}" exceeds max length ${colDef.maxLength}`, + 'VALIDATION_ERROR', + ); + } + break; + + case 'number': + if (jsType !== 'number') { + throw new DatabaseError( + `Column "${colName}" in table "${tableName}" expects number, got ${jsType}`, + 'TYPE_ERROR', + ); + } + if (colDef?.min !== undefined && (value as number) < colDef.min) { + throw new DatabaseError( + `Column "${colName}" in table "${tableName}" value ${value} below minimum ${colDef.min}`, + 'VALIDATION_ERROR', + ); + } + if (colDef?.max !== undefined && (value as number) > colDef.max) { + throw new DatabaseError( + `Column "${colName}" in table "${tableName}" value ${value} above maximum ${colDef.max}`, + 'VALIDATION_ERROR', + ); + } + break; + + case 'boolean': + if (jsType !== 'boolean') { + throw new DatabaseError( + `Column "${colName}" in table "${tableName}" expects boolean, got ${jsType}`, + 'TYPE_ERROR', + ); + } + break; + + case 'date': + if (jsType !== 'string' || isNaN(Date.parse(value as string))) { + throw new DatabaseError( + `Column "${colName}" in table "${tableName}" expects valid date string, got ${typeof value}`, + 'TYPE_ERROR', + ); + } + break; + + case 'json': + if (jsType !== 'object') { + throw new DatabaseError( + `Column "${colName}" in table "${tableName}" expects object/array, got ${jsType}`, + 'TYPE_ERROR', + ); + } + break; + } +} diff --git a/tests/v080-column-resolution.test.ts b/tests/v080-column-resolution.test.ts new file mode 100644 index 0000000..75151dd --- /dev/null +++ b/tests/v080-column-resolution.test.ts @@ -0,0 +1,169 @@ +/** + * v0.8.0 回归套件 —— A37 列引用:未限定操作数 + 存在性校验 + * ============================================================================ + * 两个此前互相纠缠的缺陷: + * + * ① **未限定列不能作比较操作数**(语法层) + * parser 只把 `a.b` 形态当列引用,裸标识符一律走字面量解析,于是 + * `WHERE x = y` → PARSE_ERROR: Expected value, got "y" + * `ON k = k` → 同上 + * 列对列比较被迫写成 `WHERE t.x = t.y` —— 而多表 JOIN 里未限定列恰恰是最 + * 自然的写法(`ON user_id = id`)。 + * + * ② **`$col` 引用到不存在的列 → 静默空集**(语义层) + * 投影侧早有"列必须存在"的校验,WHERE 侧一直**没有**:`$col` 取不到值时 + * 三值求值器只能返回 UNKNOWN,而 UNKNOWN 在 WHERE 里表现为"不保留该行"。 + * 实测修复前: + * SELECT id FROM t WHERE id = oops → [](oops 是列引用) + * SELECT id FROM t WHERE x = nope → [] + * SELECT ... FROM l JOIN r ON l.k = r.nope → [](连接不上任何行) + * 用户看到"没有数据",与"列名拼错"完全无法区分 —— 这正是 PLAN §3 根因 7 + * (未解析引用静默变 false)的最后一处。 + * + * 契约变更:拼错的列名现在报 `COLUMN_NOT_FOUND`(而不是 PARSE_ERROR)—— + * 问题不是语法错,而是"没有这一列"。 + */ +import { MetonaSqlark } from '../src/core'; +import { rows as rowsOf } from './helpers/assertions'; +import type { DatabaseConfig } from '../src/constants'; + +const ENGINES: Array<[string, DatabaseConfig['mode'], Partial]> = [ + ['memory', 'memory', {}], + ['disk', 'disk', {}], + ['hybrid', 'hybrid', {}], + ['aria', 'aria', { diskEngine: 'memory' }], +]; + +describe('[v0.8.0] A37 未限定列作操作数', () => { + describe.each(ENGINES)('%s 引擎', (label, mode, extra) => { + let db: MetonaSqlark; + + beforeEach(async () => { + db = await MetonaSqlark.create({ + name: `a37-${label}-${Math.random().toString(36).slice(2)}`, + mode, + ...extra, + }); + await db.defineTable('t', { + id: { type: 'string', primaryKey: true }, + x: { type: 'number' }, + y: { type: 'number' }, + }); + await db.query("INSERT INTO t VALUES ('1',1,5),('2',2,2),('3',7,7),('4',NULL,9)"); + }); + + afterEach(async () => { + await db.close(); + }); + + it('裸列比较与限定形态完全等价', async () => { + // 数据:id=1 (x=1,y=5) / id=2 (2,2) / id=3 (7,7) / id=4 (x=NULL,y=9) + // 期望值**逐个实测得出**(不是推导出来的):`x > y` 为空集, + // 因为唯一满足的 id=1 是 1<5;id=4 的 x 是 NULL → 所有比较都是 UNKNOWN。 + for (const [op, expected] of [ + ['=', ['2', '3']], + ['!=', ['1']], + ['<', ['1']], + ['>', []], + ['>=', ['2', '3']], + ['<=', ['1', '2', '3']], + ] as Array<[string, string[]]>) { + const bare = rowsOf<{ id: string }>(await db.query(`SELECT id FROM t WHERE x ${op} y ORDER BY id`)); + const qualified = rowsOf<{ id: string }>( + await db.query(`SELECT id FROM t WHERE t.x ${op} t.y ORDER BY id`), + ); + expect(bare.map((r) => r.id)).toEqual(expected); + expect(bare).toEqual(qualified); + } + }); + + it('NULL 参与列比较时按三值逻辑处理(UNKNOWN 不保留)', async () => { + // id=4 的 x 是 NULL → `x = y` 为 UNKNOWN → 不保留(上面 '=' 的期望里没有 4) + const rows = rowsOf<{ id: string }>(await db.query('SELECT id FROM t WHERE x = y ORDER BY id')); + expect(rows.map((r) => r.id)).not.toContain('4'); + // 反向:IS NULL 能命中 + const nullRows = rowsOf<{ id: string }>(await db.query('SELECT id FROM t WHERE x IS NULL')); + expect(nullRows.map((r) => r.id)).toEqual(['4']); + }); + + it('字面量操作数不受影响(NUMBER / STRING / TRUE / NULL 各有 token 类型)', async () => { + expect(rowsOf(await db.query('SELECT id FROM t WHERE x = 2'))).toEqual([{ id: '2' }]); + // x > 1 → id=2(2) 与 id=3(7);id=1 是 1,不满足 + expect(rowsOf<{ id: string }>(await db.query('SELECT id FROM t WHERE x > 1 ORDER BY id')).map((r) => r.id)) + .toEqual(['2', '3']); + expect(rowsOf(await db.query('SELECT id FROM t WHERE y = 5'))).toEqual([{ id: '1' }]); + // 字符串字面量 + expect(rowsOf(await db.query("SELECT id FROM t WHERE id = '2'"))).toEqual([{ id: '2' }]); + }); + + it('裸布尔列条件仍然工作(WHERE x 不因取消语法限制而改变)', async () => { + await db.defineTable('b', { + id: { type: 'string', primaryKey: true }, + flag: { type: 'boolean' }, + }); + await db.query("INSERT INTO b VALUES ('1', TRUE), ('2', FALSE), ('3', NULL)"); + const rows = rowsOf<{ id: string }>(await db.query('SELECT id FROM b WHERE flag')); + expect(rows.map((r) => r.id)).toEqual(['1']); + }); + + // ------------------------------------------------------------------- + // ② 存在性校验 + // ------------------------------------------------------------------- + + it('WHERE 中拼错的列名 → COLUMN_NOT_FOUND(此前静默空集)', async () => { + await expect(db.query('SELECT id FROM t WHERE id = oops')).rejects.toMatchObject({ + code: 'COLUMN_NOT_FOUND', + }); + await expect(db.query('SELECT id FROM t WHERE id = t.oops')).rejects.toMatchObject({ + code: 'COLUMN_NOT_FOUND', + }); + await expect(db.query('SELECT id FROM t WHERE x = nope')).rejects.toMatchObject({ + code: 'COLUMN_NOT_FOUND', + }); + // 字段键侧(原有行为,回归护栏) + await expect(db.query('SELECT id FROM t WHERE nope = 1')).rejects.toMatchObject({ + code: 'COLUMN_NOT_FOUND', + }); + }); + + it('JOIN ON 中拼错的列名 → COLUMN_NOT_FOUND', async () => { + await db.defineTable('l', { id: { type: 'string', primaryKey: true }, k: { type: 'string' } }); + await db.defineTable('r', { id: { type: 'string', primaryKey: true }, k: { type: 'string' } }); + await db.query("INSERT INTO l VALUES ('l1','x')"); + await db.query("INSERT INTO r VALUES ('r1','x')"); + await expect( + db.query('SELECT l.id AS lid, r.id AS rid FROM l JOIN r ON l.k = r.nope'), + ).rejects.toMatchObject({ code: 'COLUMN_NOT_FOUND' }); + }); + + it('JOIN 里未限定且两表共有的列名 → 歧义报错(要求限定)', async () => { + await db.defineTable('l', { id: { type: 'string', primaryKey: true }, k: { type: 'string' } }); + await db.defineTable('r', { id: { type: 'string', primaryKey: true }, k: { type: 'string' } }); + await db.query("INSERT INTO l VALUES ('l1','x')"); + await db.query("INSERT INTO r VALUES ('r1','x')"); + // WHERE 里裸写共有列 → 歧义(SQL 标准要求限定) + await expect( + db.query("SELECT l.id FROM l JOIN r ON l.k = r.k WHERE k = 'x'"), + ).rejects.toMatchObject({ code: 'COLUMN_NOT_FOUND' }); + // 限定后正常。注意 JOIN 路径的行键带表别名前缀(既有行为,见 + // executeJoinSelect 的行合并约定),因此输出键是 `l.id` 而非 `id`。 + const rows = rowsOf>( + await db.query("SELECT l.id FROM l JOIN r ON l.k = r.k WHERE l.k = 'x'"), + ); + expect(rows).toEqual([{ 'l.id': 'l1' }]); + }); + + it('JOIN ON 用未限定列仍按主表列解释(不因两表同名而拒绝)', async () => { + await db.defineTable('l', { id: { type: 'string', primaryKey: true }, k: { type: 'string' } }); + await db.defineTable('r', { id: { type: 'string', primaryKey: true }, k: { type: 'string' } }); + await db.query("INSERT INTO l VALUES ('l1','x'),('l2','y')"); + await db.query("INSERT INTO r VALUES ('r1','x'),('r2','z')"); + // `ON k = k` 是常见的简写写法:两侧都取主表列 → 恒真(仅受两表都有该列的约束), + // 关键是**不报错**(列确实存在),结果由既有 joinRows 语义决定 + const rows = rowsOf>( + await db.query('SELECT l.id AS lid, r.id AS rid FROM l JOIN r ON k = k'), + ); + expect(rows.length).toBeGreaterThanOrEqual(0); + }); + }); +}); diff --git a/tests/v080-correlated.test.ts b/tests/v080-correlated.test.ts index 5a62323..4fcce5e 100644 --- a/tests/v080-correlated.test.ts +++ b/tests/v080-correlated.test.ts @@ -44,10 +44,20 @@ describe('[v0.8.0] A10 列对列比较', () => { } }); - test('裸 x = y 仍为显式 PARSE_ERROR(语法限制,不静默)', async () => { + test('裸 x = y 与限定 t.x = t.y 结果一致(v0.8.0 A37 解除语法限制)', async () => { const db = await MetonaSqlark.create({ name: 'v080-a10-bare', mode: 'memory' }); await db.defineTable('t', { id: { type: 'string', primaryKey: true }, x: { type: 'number' }, y: { type: 'number' } }); - await expect(db.query('SELECT id FROM t WHERE x = y')).rejects.toMatchObject({ code: 'PARSE_ERROR' }); + await db.query("INSERT INTO t VALUES ('1',1,5),('2',2,2),('3',7,7)"); + // 此前 `x = y` 抛 PARSE_ERROR(parser 只把 `a.b` 形态当列引用), + // 于是列对列比较必须写成限定形态。A37 之后两种写法等价 —— 本断言锁定这一点。 + const bare = await db.query('SELECT id FROM t WHERE x = y') as Array<{ id: string }>; + const qualified = await db.query('SELECT id FROM t WHERE t.x = t.y') as Array<{ id: string }>; + expect(bare.map((r) => r.id).sort()).toEqual(['2', '3']); + expect(bare).toEqual(qualified); + // 拼错的列名现在是 COLUMN_NOT_FOUND(而不是静默空集) + await expect(db.query('SELECT id FROM t WHERE x = nope')).rejects.toMatchObject({ + code: 'COLUMN_NOT_FOUND', + }); await db.close(); }); });