@rocicorp/zero 0.18.2025032102 → 0.18.2025032401

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 (93) hide show
  1. package/out/{zql/src/query → ast-to-zql/src}/ast-to-zql.d.ts +1 -1
  2. package/out/ast-to-zql/src/ast-to-zql.d.ts.map +1 -0
  3. package/out/ast-to-zql/src/ast-to-zql.js +191 -0
  4. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -0
  5. package/out/ast-to-zql/src/bin.d.ts +2 -0
  6. package/out/ast-to-zql/src/bin.d.ts.map +1 -0
  7. package/out/ast-to-zql/src/bin.js +92 -0
  8. package/out/ast-to-zql/src/bin.js.map +1 -0
  9. package/out/{chunk-62LPXRYD.js → chunk-5WXONOGR.js} +154 -46
  10. package/out/{chunk-62LPXRYD.js.map → chunk-5WXONOGR.js.map} +4 -4
  11. package/out/{chunk-KRZMF5WQ.js → chunk-DSUPSGE4.js} +10 -1
  12. package/out/{chunk-KRZMF5WQ.js.map → chunk-DSUPSGE4.js.map} +2 -2
  13. package/out/{inspector-SVHRQAQN.js → inspector-ROITQB3J.js} +164 -171
  14. package/out/inspector-ROITQB3J.js.map +7 -0
  15. package/out/shared/src/arrays.d.ts +2 -0
  16. package/out/shared/src/arrays.d.ts.map +1 -1
  17. package/out/shared/src/arrays.js +22 -0
  18. package/out/shared/src/arrays.js.map +1 -1
  19. package/out/solid.js +2 -2
  20. package/out/z2s/src/compiler.d.ts.map +1 -1
  21. package/out/z2s/src/compiler.js +1 -8
  22. package/out/z2s/src/compiler.js.map +1 -1
  23. package/out/zero/src/ast-to-zql.d.ts +3 -0
  24. package/out/zero/src/ast-to-zql.d.ts.map +1 -0
  25. package/out/zero/src/ast-to-zql.js +3 -0
  26. package/out/zero/src/ast-to-zql.js.map +1 -0
  27. package/out/zero-cache/src/auth/jwt.js +3 -2
  28. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  29. package/out/zero-cache/src/config/zero-config.d.ts +5 -0
  30. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  31. package/out/zero-cache/src/config/zero-config.js +8 -0
  32. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  33. package/out/zero-cache/src/server/multi/config.d.ts +5 -0
  34. package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
  35. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  36. package/out/zero-cache/src/server/syncer.js +1 -1
  37. package/out/zero-cache/src/server/syncer.js.map +1 -1
  38. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +1 -1
  39. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +18 -1
  40. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  41. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +1 -1
  42. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  43. package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
  44. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  45. package/out/zero-cache/src/services/change-streamer/storer.js +25 -12
  46. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  47. package/out/zero-cache/src/services/mutagen/pusher.d.ts +5 -4
  48. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  49. package/out/zero-cache/src/services/mutagen/pusher.js +135 -13
  50. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  51. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  52. package/out/zero-cache/src/services/view-syncer/client-schema.js +6 -1
  53. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  54. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +5 -4
  55. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  56. package/out/zero-cache/src/services/view-syncer/cvr-store.js +9 -7
  57. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  58. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  59. package/out/zero-cache/src/services/view-syncer/cvr.js +16 -7
  60. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  61. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  62. package/out/zero-cache/src/services/view-syncer/view-syncer.js +16 -3
  63. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  64. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  65. package/out/zero-cache/src/types/streams.js +11 -15
  66. package/out/zero-cache/src/types/streams.js.map +1 -1
  67. package/out/zero-cache/src/workers/connection.d.ts +1 -0
  68. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  69. package/out/zero-cache/src/workers/connection.js +16 -5
  70. package/out/zero-cache/src/workers/connection.js.map +1 -1
  71. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
  72. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +2 -2
  73. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  74. package/out/zero-client/src/client/custom.d.ts +13 -3
  75. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  76. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  77. package/out/zero-client/src/client/mutation-tracker.d.ts +21 -0
  78. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -0
  79. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  80. package/out/zero-protocol/src/down.d.ts +40 -1
  81. package/out/zero-protocol/src/down.d.ts.map +1 -1
  82. package/out/zero-protocol/src/down.js +2 -1
  83. package/out/zero-protocol/src/down.js.map +1 -1
  84. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  85. package/out/zero-protocol/src/protocol-version.js +1 -1
  86. package/out/zero-protocol/src/push.d.ts +76 -4
  87. package/out/zero-protocol/src/push.d.ts.map +1 -1
  88. package/out/zero-protocol/src/push.js +17 -2
  89. package/out/zero-protocol/src/push.js.map +1 -1
  90. package/out/zero.js +2 -2
  91. package/package.json +4 -3
  92. package/out/inspector-SVHRQAQN.js.map +0 -7
  93. package/out/zql/src/query/ast-to-zql.d.ts.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { AST } from '../../../zero-protocol/src/ast.ts';
1
+ import type { AST } from '../../zero-protocol/src/ast.ts';
2
2
  /**
3
3
  * Converts an AST to the equivalent query builder code.
4
4
  * This is useful for debugging and understanding queries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-to-zql.d.ts","sourceRoot":"","sources":["../../../../ast-to-zql/src/ast-to-zql.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,GAAG,EAWJ,MAAM,gCAAgC,CAAC;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAoCzC"}
@@ -0,0 +1,191 @@
1
+ import { unreachable } from "../../shared/src/asserts.js";
2
+ import { must } from "../../shared/src/must.js";
3
+ import { SUBQ_PREFIX } from "../../zql/src/query/query-impl.js";
4
+ /**
5
+ * Converts an AST to the equivalent query builder code.
6
+ * This is useful for debugging and understanding queries.
7
+ *
8
+ * @example
9
+ * ```
10
+ * const ast = query.issue.where('id', '=', 123)[astForTestingSymbol];
11
+ * console.log(astToZQL(ast)); // outputs: .where('id', '=', 123)
12
+ * ```
13
+ */
14
+ export function astToZQL(ast) {
15
+ let code = '';
16
+ // Handle where conditions
17
+ if (ast.where) {
18
+ code += transformCondition(ast.where, '.where', new Set());
19
+ }
20
+ // Handle related subqueries
21
+ if (ast.related && ast.related.length > 0) {
22
+ for (const related of ast.related) {
23
+ if (!related.hidden) {
24
+ code += transformRelated(related);
25
+ }
26
+ }
27
+ }
28
+ // Handle orderBy
29
+ if (ast.orderBy && ast.orderBy.length > 0) {
30
+ code += transformOrder(ast.orderBy);
31
+ }
32
+ // Handle limit
33
+ if (ast.limit !== undefined) {
34
+ code += `.limit(${ast.limit})`;
35
+ }
36
+ // Handle start
37
+ if (ast.start) {
38
+ const { row, exclusive } = ast.start;
39
+ code += `.start(${JSON.stringify(row)}${exclusive ? '' : ', { inclusive: true }'})`;
40
+ }
41
+ return code;
42
+ }
43
+ function transformCondition(condition, prefix, args) {
44
+ switch (condition.type) {
45
+ case 'simple':
46
+ return transformSimpleCondition(condition, prefix);
47
+ case 'and':
48
+ case 'or':
49
+ return transformLogicalCondition(condition, prefix, args);
50
+ case 'correlatedSubquery':
51
+ return transformExistsCondition(condition, prefix, args);
52
+ default:
53
+ unreachable(condition);
54
+ }
55
+ }
56
+ function transformSimpleCondition(condition, prefix) {
57
+ const { left, op, right } = condition;
58
+ const leftCode = transformValuePosition(left);
59
+ const rightCode = transformValuePosition(right);
60
+ // Handle the shorthand form for equals
61
+ if (op === '=') {
62
+ return `${prefix}(${leftCode}, ${rightCode})`;
63
+ }
64
+ return `${prefix}(${leftCode}, '${op}', ${rightCode})`;
65
+ }
66
+ function transformLogicalCondition(condition, prefix, args) {
67
+ const { type, conditions } = condition;
68
+ // For single condition, no need for logical operator
69
+ if (conditions.length === 1) {
70
+ return transformCondition(conditions[0], prefix, args);
71
+ }
72
+ // Generate multiple where calls for top-level AND conditions
73
+ if (type === 'and') {
74
+ const parts = conditions.map(c => transformCondition(c, prefix, args));
75
+ // Simply concatenate the where conditions
76
+ if (prefix === '.where') {
77
+ return parts.join('');
78
+ }
79
+ args.add('and');
80
+ return 'and(' + parts.join(', ') + ')';
81
+ }
82
+ args = new Set();
83
+ // Handle nested conditions with a callback for OR conditions and nested ANDs/ORs
84
+ const conditionsCode = conditions
85
+ .map(c => transformCondition(c, 'cmp', args))
86
+ .join(', ');
87
+ args.add('cmp');
88
+ args.add(type);
89
+ const argsCode = [...args].sort().join(', ');
90
+ return `.where(({${argsCode}}) => ${type}(${conditionsCode}))`;
91
+ }
92
+ function transformExistsCondition(condition, prefix, args) {
93
+ const { related, op } = condition;
94
+ const relationship = extractRelationshipName(related);
95
+ // Check if subquery has additional properties
96
+ const hasSubQueryProps = related.subquery.where ||
97
+ (related.subquery.related && related.subquery.related.length > 0) ||
98
+ related.subquery.orderBy ||
99
+ related.subquery.limit;
100
+ if (op === 'EXISTS') {
101
+ if (!hasSubQueryProps) {
102
+ if (prefix === '.where') {
103
+ return `.whereExists('${relationship}')`;
104
+ }
105
+ args.add('exists');
106
+ return `exists('${relationship}')`;
107
+ }
108
+ if (prefix === '.where') {
109
+ return `.whereExists('${relationship}', q => q${astToZQL(related.subquery)}))`;
110
+ }
111
+ prefix;
112
+ args.add('exists');
113
+ return `exists('${relationship}', q => q${astToZQL(related.subquery)})`;
114
+ }
115
+ op;
116
+ if (hasSubQueryProps) {
117
+ if (prefix === '.where') {
118
+ return `.where(({exists, not}) => not(exists('${relationship}', q => q${astToZQL(related.subquery)})))`;
119
+ }
120
+ prefix;
121
+ args.add('not');
122
+ args.add('exists');
123
+ return `not(exists('${relationship}', q => q${astToZQL(related.subquery)}))`;
124
+ }
125
+ if (prefix === '.where') {
126
+ return `.where(({exists, not}) => not(exists('${relationship}')))`;
127
+ }
128
+ args.add('not');
129
+ args.add('exists');
130
+ return `not(exists('${relationship}')))`;
131
+ }
132
+ function extractRelationshipName(related) {
133
+ const alias = must(related.subquery.alias);
134
+ return alias.startsWith(SUBQ_PREFIX)
135
+ ? alias.substring(SUBQ_PREFIX.length)
136
+ : alias;
137
+ }
138
+ function transformRelated(related) {
139
+ const { alias } = related.subquery;
140
+ if (!alias)
141
+ return '';
142
+ const relationship = alias;
143
+ let code = `.related('${relationship}'`;
144
+ // If the subquery has additional filters or configurations
145
+ if (related.subquery.where ||
146
+ (related.subquery.related && related.subquery.related.length > 0) ||
147
+ related.subquery.orderBy ||
148
+ related.subquery.limit) {
149
+ code += ', q => q' + astToZQL(related.subquery);
150
+ }
151
+ code += ')';
152
+ return code;
153
+ }
154
+ function transformOrder(orderBy) {
155
+ let code = '';
156
+ for (const [field, direction] of orderBy) {
157
+ code += `.orderBy('${field}', '${direction}')`;
158
+ }
159
+ return code;
160
+ }
161
+ function transformValuePosition(value) {
162
+ switch (value.type) {
163
+ case 'literal':
164
+ return transformLiteral(value);
165
+ case 'column':
166
+ return `'${value.name}'`;
167
+ case 'static':
168
+ return transformParameter(value);
169
+ default:
170
+ unreachable(value);
171
+ }
172
+ }
173
+ function transformLiteral(literal) {
174
+ if (literal.value === null) {
175
+ return 'null';
176
+ }
177
+ if (Array.isArray(literal.value)) {
178
+ return JSON.stringify(literal.value);
179
+ }
180
+ if (typeof literal.value === 'string') {
181
+ return `'${literal.value.replace(/'/g, "\\'")}'`;
182
+ }
183
+ return String(literal.value);
184
+ }
185
+ function transformParameter(param) {
186
+ const fieldStr = Array.isArray(param.field)
187
+ ? `[${param.field.map(f => `'${f}'`).join(', ')}]`
188
+ : `'${param.field}'`;
189
+ return `authParam(${fieldStr})`;
190
+ }
191
+ //# sourceMappingURL=ast-to-zql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-to-zql.js","sourceRoot":"","sources":["../../../../ast-to-zql/src/ast-to-zql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../../../ast-to-zql/src/bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ /* eslint-disable no-console */
2
+ import * as m from '@rocicorp/logger';
3
+ import { readFile } from 'node:fs/promises';
4
+ import process from 'node:process';
5
+ import { createInterface } from 'node:readline';
6
+ import { format, resolveConfig } from 'prettier';
7
+ import { parseOptions } from "../../shared/src/options.js";
8
+ import * as v from "../../shared/src/valita.js";
9
+ import { loadSchemaAndPermissions } from "../../zero-cache/src/scripts/permissions.js";
10
+ import { mapAST } from "../../zero-protocol/src/ast.js";
11
+ import { serverToClient } from "../../zero-schema/src/name-mapper.js";
12
+ import { astToZQL } from "./ast-to-zql.js";
13
+ const options = {
14
+ schema: {
15
+ type: v.string().optional(),
16
+ desc: [
17
+ 'Path to the schema file. Use this to re-map the AST to client names.',
18
+ ],
19
+ },
20
+ };
21
+ const config = parseOptions(options, process.argv.slice(2));
22
+ const lc = new m.LogContext('debug'); //new m.ConsoleLogger('error');
23
+ let schema;
24
+ if (config.schema) {
25
+ schema = (await loadSchemaAndPermissions(lc, config.schema)).schema;
26
+ }
27
+ function isStdinPiped() {
28
+ return !process.stdin.isTTY;
29
+ }
30
+ function readFromStdin() {
31
+ return new Promise(resolve => {
32
+ let data = '';
33
+ const rl = createInterface({
34
+ input: process.stdin,
35
+ output: process.stdout,
36
+ terminal: false,
37
+ });
38
+ rl.on('line', line => {
39
+ data += line + '\n';
40
+ });
41
+ rl.on('close', () => {
42
+ resolve(data);
43
+ });
44
+ });
45
+ }
46
+ async function formatOutput(content) {
47
+ try {
48
+ const options = (await resolveConfig(new URL(import.meta.url))) ?? {};
49
+ return await format(content, {
50
+ ...options,
51
+ parser: 'typescript',
52
+ semi: false,
53
+ });
54
+ }
55
+ catch (error) {
56
+ console.warn('Warning: Unable to format output with prettier:', error);
57
+ return content;
58
+ }
59
+ }
60
+ async function main() {
61
+ try {
62
+ let input;
63
+ if (isStdinPiped()) {
64
+ input = await readFromStdin();
65
+ }
66
+ else if (process.argv.length > 2) {
67
+ const filePath = process.argv[2];
68
+ input = await readFile(filePath, 'utf-8');
69
+ }
70
+ else {
71
+ console.error('Error: No input provided.');
72
+ console.error('Usage:');
73
+ console.error(` cat ast.json | npx ast-to-zql`);
74
+ console.error(` npx ast-to-zql ast.json`);
75
+ process.exit(1);
76
+ }
77
+ let ast = JSON.parse(input);
78
+ if (schema) {
79
+ const mapper = serverToClient(schema.tables);
80
+ ast = mapAST(ast, mapper);
81
+ }
82
+ const zql = astToZQL(ast);
83
+ const code = `query.${ast.table}${zql}`;
84
+ console.log(await formatOutput(code));
85
+ }
86
+ catch (error) {
87
+ console.error('Error processing input:', error);
88
+ process.exit(1);
89
+ }
90
+ }
91
+ await main();
92
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../../../ast-to-zql/src/bin.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAC,wBAAwB,EAAC,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAEtD,OAAO,EAAC,cAAc,EAAC,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAEzC,MAAM,OAAO,GAAG;IACd,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,IAAI,EAAE;YACJ,sEAAsE;SACvE;KACF;CACF,CAAC;AAEF,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B;AAErE,IAAI,MAA0B,CAAC;AAC/B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,MAAM,GAAG,CAAC,MAAM,wBAAwB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACtE,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9B,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,EAAE,GAAG,eAAe,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe;IACzC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,OAAO,MAAM,MAAM,CAAC,OAAO,EAAE;YAC3B,GAAG,OAAO;YACV,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,IAAI,KAAa,CAAC;QAElB,IAAI,YAAY,EAAE,EAAE,CAAC;YACnB,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}