@askdb/core 1.0.0-beta.42 → 1.0.0-beta.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +14 -8
  2. package/dist/ask.d.ts +101 -4
  3. package/dist/ask.d.ts.map +1 -1
  4. package/dist/ask.js +243 -25
  5. package/dist/ask.js.map +1 -1
  6. package/dist/enrichment/suggest.d.ts.map +1 -1
  7. package/dist/enrichment/suggest.js +3 -1
  8. package/dist/enrichment/suggest.js.map +1 -1
  9. package/dist/errors.d.ts +41 -5
  10. package/dist/errors.d.ts.map +1 -1
  11. package/dist/errors.js +9 -0
  12. package/dist/errors.js.map +1 -1
  13. package/dist/index.d.ts +8 -6
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +5 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/retrieval/synthesize-ddl.d.ts +4 -0
  18. package/dist/retrieval/synthesize-ddl.d.ts.map +1 -1
  19. package/dist/retrieval/synthesize-ddl.js +5 -3
  20. package/dist/retrieval/synthesize-ddl.js.map +1 -1
  21. package/dist/schema/normalize.d.ts +10 -0
  22. package/dist/schema/normalize.d.ts.map +1 -1
  23. package/dist/schema/normalize.js.map +1 -1
  24. package/dist/schema/v2/format.d.ts +7 -0
  25. package/dist/schema/v2/format.d.ts.map +1 -1
  26. package/dist/schema/v2/format.js +20 -7
  27. package/dist/schema/v2/format.js.map +1 -1
  28. package/dist/schema/v2/index.d.ts +3 -1
  29. package/dist/schema/v2/index.d.ts.map +1 -1
  30. package/dist/schema/v2/index.js +1 -0
  31. package/dist/schema/v2/index.js.map +1 -1
  32. package/dist/schema/v2/loader.d.ts +32 -1
  33. package/dist/schema/v2/loader.d.ts.map +1 -1
  34. package/dist/schema/v2/loader.js +173 -49
  35. package/dist/schema/v2/loader.js.map +1 -1
  36. package/dist/schema/v2/mentions.d.ts +31 -0
  37. package/dist/schema/v2/mentions.d.ts.map +1 -0
  38. package/dist/schema/v2/mentions.js +47 -0
  39. package/dist/schema/v2/mentions.js.map +1 -0
  40. package/dist/schema/v2/normalized.d.ts +38 -0
  41. package/dist/schema/v2/normalized.d.ts.map +1 -1
  42. package/dist/schema/v2/parser.d.ts +9 -0
  43. package/dist/schema/v2/parser.d.ts.map +1 -1
  44. package/dist/schema/v2/parser.js +18 -2
  45. package/dist/schema/v2/parser.js.map +1 -1
  46. package/dist/schema/v2/tenant-policy-loader.d.ts.map +1 -1
  47. package/dist/schema/v2/tenant-policy-loader.js +7 -3
  48. package/dist/schema/v2/tenant-policy-loader.js.map +1 -1
  49. package/dist/schema/v2/tenant-policy.d.ts +28 -21
  50. package/dist/schema/v2/tenant-policy.d.ts.map +1 -1
  51. package/dist/schema/v2/tenant-policy.js +67 -11
  52. package/dist/schema/v2/tenant-policy.js.map +1 -1
  53. package/dist/sql/bind.d.ts +17 -15
  54. package/dist/sql/bind.d.ts.map +1 -1
  55. package/dist/sql/bind.js +38 -173
  56. package/dist/sql/bind.js.map +1 -1
  57. package/dist/sql/dialect-spec.d.ts +48 -3
  58. package/dist/sql/dialect-spec.d.ts.map +1 -1
  59. package/dist/sql/dialect-spec.js +89 -3
  60. package/dist/sql/dialect-spec.js.map +1 -1
  61. package/dist/sql/generate.d.ts +14 -0
  62. package/dist/sql/generate.d.ts.map +1 -1
  63. package/dist/sql/generate.js +31 -17
  64. package/dist/sql/generate.js.map +1 -1
  65. package/dist/sql/index.d.ts +2 -1
  66. package/dist/sql/index.d.ts.map +1 -1
  67. package/dist/sql/index.js +2 -1
  68. package/dist/sql/index.js.map +1 -1
  69. package/dist/sql/lexer.d.ts +114 -0
  70. package/dist/sql/lexer.d.ts.map +1 -0
  71. package/dist/sql/lexer.js +397 -0
  72. package/dist/sql/lexer.js.map +1 -0
  73. package/dist/sql/prompt-identifiers.d.ts +20 -0
  74. package/dist/sql/prompt-identifiers.d.ts.map +1 -0
  75. package/dist/sql/prompt-identifiers.js +64 -0
  76. package/dist/sql/prompt-identifiers.js.map +1 -0
  77. package/dist/sql/prompt.d.ts +7 -1
  78. package/dist/sql/prompt.d.ts.map +1 -1
  79. package/dist/sql/prompt.js +22 -2
  80. package/dist/sql/prompt.js.map +1 -1
  81. package/dist/sql/reserved-words.d.ts +15 -0
  82. package/dist/sql/reserved-words.d.ts.map +1 -0
  83. package/dist/sql/reserved-words.js +102 -0
  84. package/dist/sql/reserved-words.js.map +1 -0
  85. package/dist/sql/sensitive-guardrail.d.ts +18 -3
  86. package/dist/sql/sensitive-guardrail.d.ts.map +1 -1
  87. package/dist/sql/sensitive-guardrail.js +446 -157
  88. package/dist/sql/sensitive-guardrail.js.map +1 -1
  89. package/dist/sql/tenant-guardrail.d.ts +70 -8
  90. package/dist/sql/tenant-guardrail.d.ts.map +1 -1
  91. package/dist/sql/tenant-guardrail.js +799 -52
  92. package/dist/sql/tenant-guardrail.js.map +1 -1
  93. package/dist/sql/tenant-hierarchy.d.ts +19 -0
  94. package/dist/sql/tenant-hierarchy.d.ts.map +1 -0
  95. package/dist/sql/tenant-hierarchy.js +53 -0
  96. package/dist/sql/tenant-hierarchy.js.map +1 -0
  97. package/dist/sql/tenant-placeholders.d.ts +47 -19
  98. package/dist/sql/tenant-placeholders.d.ts.map +1 -1
  99. package/dist/sql/tenant-placeholders.js +229 -58
  100. package/dist/sql/tenant-placeholders.js.map +1 -1
  101. package/dist/sql/tenant-prompt.d.ts +4 -0
  102. package/dist/sql/tenant-prompt.d.ts.map +1 -1
  103. package/dist/sql/tenant-prompt.js +79 -11
  104. package/dist/sql/tenant-prompt.js.map +1 -1
  105. package/dist/sql/tenant-scope-validate.d.ts +3 -1
  106. package/dist/sql/tenant-scope-validate.d.ts.map +1 -1
  107. package/dist/sql/tenant-scope-validate.js +5 -2
  108. package/dist/sql/tenant-scope-validate.js.map +1 -1
  109. package/dist/sql/validate.d.ts +34 -4
  110. package/dist/sql/validate.d.ts.map +1 -1
  111. package/dist/sql/validate.js +138 -37
  112. package/dist/sql/validate.js.map +1 -1
  113. package/package.json +11 -7
  114. package/dist/exec/postgres.d.ts +0 -6
  115. package/dist/exec/postgres.d.ts.map +0 -1
  116. package/dist/exec/postgres.js +0 -30
  117. package/dist/exec/postgres.js.map +0 -1
  118. package/dist/modes/post-execute-log.d.ts +0 -9
  119. package/dist/modes/post-execute-log.d.ts.map +0 -1
  120. package/dist/modes/post-execute-log.js +0 -26
  121. package/dist/modes/post-execute-log.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Words each engine family reserves, from its own docs. The built-in specs in
3
+ * `dialect-spec.ts` set them as `reservedWords`, and the NL→SQL prompt lists a schema, table
4
+ * or column with one of these names quoted (see `prompt-identifiers.ts`).
5
+ *
6
+ * Quoting a name that isn't reserved is harmless, so a list may be a superset; a word it
7
+ * misses reaches the model unquoted. When an engine reserves a new word, add it here.
8
+ * All lowercase.
9
+ */
10
+ // Source: https://www.postgresql.org/docs/current/sql-keywords-appendix.html (PostgreSQL 18.6, fetched 2026-10-05). PostgreSQL column = "reserved" or "reserved (can be function or type)", incl. their ", requires AS" variants.
11
+ // Checked 2026-10-05 against PostgreSQL 17.11: exactly the pg_get_keywords() words the server rejects as a bare column or table name.
12
+ export const POSTGRES_RESERVED_WORDS = [
13
+ "all", "analyse", "analyze", "and", "any", "array", "as", "asc", "asymmetric", "authorization",
14
+ "binary", "both", "case", "cast", "check", "collate", "collation", "column", "concurrently", "constraint",
15
+ "create", "cross", "current_catalog", "current_date", "current_role", "current_schema", "current_time", "current_timestamp", "current_user", "default",
16
+ "deferrable", "desc", "distinct", "do", "else", "end", "except", "false", "fetch", "for",
17
+ "foreign", "freeze", "from", "full", "grant", "group", "having", "ilike", "in", "initially",
18
+ "inner", "intersect", "into", "is", "isnull", "join", "lateral", "leading", "left", "like",
19
+ "limit", "localtime", "localtimestamp", "natural", "not", "notnull", "null", "offset", "on", "only",
20
+ "or", "order", "outer", "overlaps", "placing", "primary", "references", "returning", "right", "select",
21
+ "session_user", "similar", "some", "symmetric", "system_user", "table", "tablesample", "then", "to", "trailing",
22
+ "true", "union", "unique", "user", "using", "variadic", "verbose", "when", "where", "window",
23
+ "with",
24
+ ];
25
+ // Source: https://github.com/cockroachdb/cockroach/blob/master/pkg/sql/parser/sql.y (master at d30c905fff79,
26
+ // fetched 2026-10-05): type/function-name keywords Postgres doesn't reserve (`type_func_name_crdb_extra_keyword`
27
+ // and `none`). Every other word in its `reserved_keyword` and type/function-name lists is on the Postgres list.
28
+ export const COCKROACHDB_EXTRA_RESERVED_WORDS = ["family", "none"];
29
+ // Source: https://dev.mysql.com/doc/refman/8.4/en/keywords.html (MySQL 8.4, words marked (R)) UNION https://mariadb.com/docs/server/reference/sql-structure/sql-language-structure/reserved-words (MariaDB main reserved-words table incl. version-tagged entries; Oracle-mode list excluded), fetched 2026-10-05.
30
+ // Checked 2026-10-05 against MySQL 8.4.11 and MariaDB 11.4.13: every information_schema.KEYWORDS word the server rejects as a bare column name is listed. The docs miss some (`portion`, and SELECT modifiers such as `sql_no_cache`).
31
+ export const MYSQL_RESERVED_WORDS = [
32
+ "accessible", "add", "all", "alter", "analyze", "and", "as", "asc", "asensitive", "before",
33
+ "between", "bigint", "binary", "blob", "both", "by", "call", "cascade", "case", "change",
34
+ "char", "character", "check", "collate", "column", "condition", "constraint", "continue", "conversion", "convert",
35
+ "create", "cross", "cube", "cume_dist", "current_date", "current_role", "current_time", "current_timestamp", "current_user", "cursor",
36
+ "database", "databases", "day_hour", "day_microsecond", "day_minute", "day_second", "dec", "decimal", "declare", "default",
37
+ "delayed", "delete", "delete_domain_id", "dense_rank", "desc", "describe", "deterministic", "distinct", "distinctrow", "div",
38
+ "do_domain_ids", "double", "drop", "dual", "each", "else", "elseif", "empty", "enclosed", "escaped",
39
+ "except", "exists", "exit", "explain", "false", "fetch", "first_value", "float", "float4", "float8",
40
+ "for", "force", "foreign", "from", "fulltext", "function", "general", "generated", "get", "grant",
41
+ "group", "grouping", "groups", "having", "high_priority", "hour_microsecond", "hour_minute", "hour_second", "if", "ignore",
42
+ "ignore_domain_ids", "ignore_server_ids", "in", "index", "infile", "inner", "inout", "insensitive", "insert", "int",
43
+ "int1", "int2", "int3", "int4", "int8", "integer", "intersect", "interval", "into", "io_after_gtids",
44
+ "io_before_gtids", "is", "iterate", "join", "json_table", "key", "keys", "kill", "lag", "last_value",
45
+ "lateral", "lead", "leading", "leave", "left", "like", "limit", "linear", "lines", "load",
46
+ "localtime", "localtimestamp", "lock", "long", "longblob", "longtext", "loop", "low_priority", "master_demote_to_replica", "master_demote_to_slave",
47
+ "master_heartbeat_period", "master_ssl_verify_server_cert", "match", "maxvalue", "mediumblob", "mediumint", "mediumtext", "middleint", "minute_microsecond", "minute_second",
48
+ "mod", "modifies", "natural", "no_write_to_binlog", "not", "nth_value", "ntile", "null", "numeric", "of",
49
+ "offset", "on", "optimize", "optimizer_costs", "option", "optionally", "or", "order", "out", "outer",
50
+ "outfile", "over", "page_checksum", "parse_vcol_expr", "partition", "percent_rank", "portion", "precision", "primary", "procedure",
51
+ "purge", "qualify", "range", "rank", "read", "read_write", "reads", "real", "recursive", "ref_system_id",
52
+ "references", "regexp", "release", "rename", "repeat", "replace", "require", "resignal", "restrict", "return",
53
+ "returning", "revoke", "right", "rlike", "row", "row_number", "rows", "schema", "schemas", "second_microsecond",
54
+ "select", "sensitive", "separator", "set", "show", "signal", "slow", "smallint", "spatial", "specific",
55
+ "sql", "sql_after_gtids", "sql_before_gtids", "sql_big_result", "sql_buffer_result", "sql_cache", "sql_calc_found_rows", "sql_no_cache", "sql_small_result", "sqlexception",
56
+ "sqlstate", "sqlwarning", "ssl", "starting", "stats_auto_recalc", "stats_persistent", "stats_sample_pages", "stored", "straight_join", "system",
57
+ "table", "tablesample", "terminated", "then", "tinyblob", "tinyint", "tinytext", "to", "to_date", "trailing",
58
+ "trigger", "true", "undo", "union", "unique", "unlock", "unsigned", "update", "usage", "use",
59
+ "using", "utc_date", "utc_time", "utc_timestamp", "values", "varbinary", "varchar", "varcharacter", "varying", "vector",
60
+ "virtual", "when", "where", "while", "window", "with", "write", "xor", "year_month", "zerofill",
61
+ ];
62
+ // Source: https://learn.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql (view=sql-server-ver17, updated 2026-09-21, fetched 2026-10-05). Main "SQL Server and Azure Synapse Analytics" table only; doc entry "WITHIN GROUP" stored as "within".
63
+ export const SQLSERVER_RESERVED_WORDS = [
64
+ "add", "all", "alter", "and", "any", "as", "asc", "authorization", "backup", "begin",
65
+ "between", "break", "browse", "bulk", "by", "cascade", "case", "check", "checkpoint", "close",
66
+ "clustered", "coalesce", "collate", "column", "commit", "compute", "constraint", "contains", "containstable", "continue",
67
+ "convert", "create", "cross", "current", "current_date", "current_time", "current_timestamp", "current_user", "cursor", "database",
68
+ "dbcc", "deallocate", "declare", "default", "delete", "deny", "desc", "disk", "distinct", "distributed",
69
+ "double", "drop", "dump", "else", "end", "errlvl", "escape", "except", "exec", "execute",
70
+ "exists", "exit", "external", "fetch", "file", "fillfactor", "for", "foreign", "freetext", "freetexttable",
71
+ "from", "full", "function", "goto", "grant", "group", "having", "holdlock", "identity", "identity_insert",
72
+ "identitycol", "if", "in", "index", "inner", "insert", "intersect", "into", "is", "join",
73
+ "key", "kill", "left", "like", "lineno", "load", "merge", "national", "nocheck", "nonclustered",
74
+ "not", "null", "nullif", "of", "off", "offsets", "on", "open", "opendatasource", "openquery",
75
+ "openrowset", "openxml", "option", "or", "order", "outer", "over", "percent", "pivot", "plan",
76
+ "precision", "primary", "print", "proc", "procedure", "public", "raiserror", "read", "readtext", "reconfigure",
77
+ "references", "replication", "restore", "restrict", "return", "revert", "revoke", "right", "rollback", "rowcount",
78
+ "rowguidcol", "rule", "save", "schema", "securityaudit", "select", "semantickeyphrasetable", "semanticsimilaritydetailstable", "semanticsimilaritytable", "session_user",
79
+ "set", "setuser", "shutdown", "some", "statistics", "system_user", "table", "tablesample", "textsize", "then",
80
+ "to", "top", "tran", "transaction", "trigger", "truncate", "try_convert", "tsequal", "union", "unique",
81
+ "unpivot", "update", "updatetext", "use", "user", "values", "varying", "view", "waitfor", "when",
82
+ "where", "while", "with", "within", "writetext",
83
+ ];
84
+ // Source: https://www.sqlite.org/lang_keywords.html (fetched 2026-10-05). Full keyword list.
85
+ export const SQLITE_KEYWORDS = [
86
+ "abort", "action", "add", "after", "all", "alter", "always", "analyze", "and", "as",
87
+ "asc", "attach", "autoincrement", "before", "begin", "between", "by", "cascade", "case", "cast",
88
+ "check", "collate", "column", "commit", "conflict", "constraint", "create", "cross", "current", "current_date",
89
+ "current_time", "current_timestamp", "database", "default", "deferrable", "deferred", "delete", "desc", "detach", "distinct",
90
+ "do", "drop", "each", "else", "end", "escape", "except", "exclude", "exclusive", "exists",
91
+ "explain", "fail", "filter", "first", "following", "for", "foreign", "from", "full", "generated",
92
+ "glob", "group", "groups", "having", "if", "ignore", "immediate", "in", "index", "indexed",
93
+ "initially", "inner", "insert", "instead", "intersect", "into", "is", "isnull", "join", "key",
94
+ "last", "left", "like", "limit", "match", "materialized", "natural", "no", "not", "nothing",
95
+ "notnull", "null", "nulls", "of", "offset", "on", "or", "order", "others", "outer",
96
+ "over", "partition", "plan", "pragma", "preceding", "primary", "query", "raise", "range", "recursive",
97
+ "references", "regexp", "reindex", "release", "rename", "replace", "restrict", "returning", "right", "rollback",
98
+ "row", "rows", "savepoint", "select", "set", "table", "temp", "temporary", "then", "ties",
99
+ "to", "transaction", "trigger", "unbounded", "union", "unique", "update", "using", "vacuum", "values",
100
+ "view", "virtual", "when", "where", "window", "with", "without",
101
+ ];
102
+ //# sourceMappingURL=reserved-words.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reserved-words.js","sourceRoot":"","sources":["../../src/sql/reserved-words.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type SensitiveReference, type SensitiveScopeReport } from "../errors.js";
2
2
  import type { AnyNormalizedSchema } from "../schema/types.js";
3
+ import type { DialectSpec } from "./dialect-spec.js";
3
4
  export type SensitiveGuardrailMode = "warn" | "strict";
4
5
  export type ValidateSensitiveReferencesOptions = {
5
6
  /**
@@ -8,6 +9,13 @@ export type ValidateSensitiveReferencesOptions = {
8
9
  * proven clean (references found, or scope could not be resolved).
9
10
  */
10
11
  mode?: SensitiveGuardrailMode;
12
+ /**
13
+ * The engine the SQL targets, so strings, quoted identifiers, and comments are lexed
14
+ * the way that engine reads them (e.g. MySQL backslash escapes, Postgres `E'…'`).
15
+ * When omitted, references are collected under every built-in engine's reading, which
16
+ * is conservative and can over-report in rare cases.
17
+ */
18
+ dialect?: Pick<DialectSpec, "id" | "backslashEscapes">;
11
19
  };
12
20
  export type SensitiveGuardrailResult = {
13
21
  /** True only when nothing sensitive was referenced **and** table scope was fully resolved. */
@@ -31,10 +39,17 @@ export type SensitiveGuardrailResult = {
31
39
  * are resolved first. When scope cannot be resolved (no resolvable table source, or a
32
40
  * qualifier that binds to nothing known), the check fails conservatively — it widens
33
41
  * matching and reports why in {@link SensitiveGuardrailResult.unresolvedScope} — rather
34
- * than passing silently.
42
+ * than passing silently. A string, quoted identifier, or comment that never closes is
43
+ * reported the same way (`UNTERMINATED_TOKEN`).
44
+ *
45
+ * `SELECT *`, `alias.*`, and whole-row references such as `row_to_json(alias)` count as
46
+ * referencing every sensitive column of the table they reach. They expand per query
47
+ * block: a bare `*` covers its own `SELECT`'s FROM/JOIN tables, and an alias resolves in
48
+ * its own block first, then in enclosing blocks. When the block structure cannot be
49
+ * read with confidence, they expand against every table in the statement.
35
50
  *
36
- * Heuristic, not a SQL parser. It is a review/enforcement aid, not a substitute for
37
- * database-side column privileges.
51
+ * Heuristic, not a SQL parser, and not a security boundary. It is defense in depth for
52
+ * review and enforcement; database-side column privileges are the real control.
38
53
  */
39
54
  export declare function validateSensitiveReferences(sql: string, schema: AnyNormalizedSchema, options?: ValidateSensitiveReferencesOptions): SensitiveGuardrailResult;
40
55
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sensitive-guardrail.d.ts","sourceRoot":"","sources":["../../src/sql/sensitive-guardrail.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EAGvB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,MAAM,MAAM,kCAAkC,GAAG;IAC/C;;;;OAIG;IACH,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,8FAA8F;IAC9F,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,8FAA8F;IAC9F,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,kCAAkC,GAC3C,wBAAwB,CAiB1B;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAElF;AAED,wGAAwG;AACxG,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAGxE"}
1
+ {"version":3,"file":"sensitive-guardrail.d.ts","sourceRoot":"","sources":["../../src/sql/sensitive-guardrail.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EAGvB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUrD,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,MAAM,MAAM,kCAAkC,GAAG;IAC/C;;;;OAIG;IACH,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,kBAAkB,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,8FAA8F;IAC9F,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,8FAA8F;IAC9F,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,kCAAkC,GAC3C,wBAAwB,CAiB1B;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAElF;AAED,wGAAwG;AACxG,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAGxE"}