@fractary/core 0.6.1 → 0.7.3

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.
@@ -0,0 +1,477 @@
1
+ "use strict";
2
+ /**
3
+ * Tests for config/schema.ts
4
+ *
5
+ * Tests Zod validation schemas and validateConfig function.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ const schema_1 = require("./schema");
9
+ const defaults_1 = require("./defaults");
10
+ describe('validateConfig', () => {
11
+ describe('valid configurations', () => {
12
+ it('validates a full default config', () => {
13
+ const config = (0, defaults_1.getDefaultConfig)({ owner: 'test', repo: 'test' });
14
+ const result = (0, schema_1.validateConfig)(config);
15
+ expect(result.valid).toBe(true);
16
+ expect(result.errors).toHaveLength(0);
17
+ expect(result.config).toBeDefined();
18
+ });
19
+ it('validates a minimal config', () => {
20
+ const config = (0, defaults_1.getMinimalConfig)({ owner: 'test', repo: 'test' });
21
+ const result = (0, schema_1.validateConfig)(config);
22
+ expect(result.valid).toBe(true);
23
+ expect(result.errors).toHaveLength(0);
24
+ });
25
+ it('validates config with all platforms', () => {
26
+ const platforms = ['github', 'jira', 'linear'];
27
+ for (const platform of platforms) {
28
+ const config = (0, defaults_1.getDefaultConfig)({ workPlatform: platform });
29
+ const result = (0, schema_1.validateConfig)(config);
30
+ expect(result.valid).toBe(true);
31
+ expect(result.errors).toHaveLength(0);
32
+ }
33
+ });
34
+ it('validates config with S3 file handler', () => {
35
+ const config = (0, defaults_1.getDefaultConfig)({
36
+ fileHandler: 's3',
37
+ s3Bucket: 'test-bucket',
38
+ awsRegion: 'us-west-2',
39
+ });
40
+ const result = (0, schema_1.validateConfig)(config);
41
+ expect(result.valid).toBe(true);
42
+ expect(result.errors).toHaveLength(0);
43
+ });
44
+ });
45
+ describe('invalid configurations', () => {
46
+ it('rejects null config', () => {
47
+ const result = (0, schema_1.validateConfig)(null);
48
+ expect(result.valid).toBe(false);
49
+ expect(result.errors).toContain('Configuration is null or undefined');
50
+ });
51
+ it('rejects undefined config', () => {
52
+ const result = (0, schema_1.validateConfig)(undefined);
53
+ expect(result.valid).toBe(false);
54
+ expect(result.errors).toContain('Configuration is null or undefined');
55
+ });
56
+ it('rejects non-object config', () => {
57
+ const result = (0, schema_1.validateConfig)('not an object');
58
+ expect(result.valid).toBe(false);
59
+ expect(result.errors).toContain('Configuration must be an object');
60
+ });
61
+ it('rejects config with wrong version', () => {
62
+ const config = { version: '1.0' };
63
+ const result = (0, schema_1.validateConfig)(config);
64
+ expect(result.valid).toBe(false);
65
+ expect(result.errors.some((e) => e.includes('version'))).toBe(true);
66
+ });
67
+ it('rejects config without version', () => {
68
+ const config = {};
69
+ const result = (0, schema_1.validateConfig)(config);
70
+ expect(result.valid).toBe(false);
71
+ });
72
+ it('rejects work config without active_handler', () => {
73
+ const config = {
74
+ version: '2.0',
75
+ work: {
76
+ handlers: { github: {} },
77
+ },
78
+ };
79
+ const result = (0, schema_1.validateConfig)(config);
80
+ expect(result.valid).toBe(false);
81
+ expect(result.errors.some((e) => e.includes('active_handler'))).toBe(true);
82
+ });
83
+ it('rejects work config without handlers', () => {
84
+ const config = {
85
+ version: '2.0',
86
+ work: {
87
+ active_handler: 'github',
88
+ },
89
+ };
90
+ const result = (0, schema_1.validateConfig)(config);
91
+ expect(result.valid).toBe(false);
92
+ });
93
+ it('rejects work config with empty handlers', () => {
94
+ const config = {
95
+ version: '2.0',
96
+ work: {
97
+ active_handler: 'github',
98
+ handlers: {},
99
+ },
100
+ };
101
+ const result = (0, schema_1.validateConfig)(config);
102
+ expect(result.valid).toBe(false);
103
+ expect(result.errors.some((e) => e.includes('handler'))).toBe(true);
104
+ });
105
+ });
106
+ describe('warnings', () => {
107
+ it('warns when no plugin sections are present', () => {
108
+ const config = { version: '2.0' };
109
+ const result = (0, schema_1.validateConfig)(config);
110
+ expect(result.warnings).toContain('No plugin sections found in configuration');
111
+ });
112
+ it('warns when active handler not in handlers', () => {
113
+ const config = {
114
+ version: '2.0',
115
+ work: {
116
+ active_handler: 'jira',
117
+ handlers: {
118
+ github: { owner: 'test', repo: 'test' },
119
+ },
120
+ },
121
+ };
122
+ const result = (0, schema_1.validateConfig)(config);
123
+ expect(result.warnings.some((w) => w.includes('jira'))).toBe(true);
124
+ });
125
+ it('warns when repo active handler not in handlers', () => {
126
+ const config = {
127
+ version: '2.0',
128
+ repo: {
129
+ active_handler: 'gitlab',
130
+ handlers: {
131
+ github: { token: 'test' },
132
+ },
133
+ },
134
+ };
135
+ const result = (0, schema_1.validateConfig)(config);
136
+ expect(result.warnings.some((w) => w.includes('gitlab'))).toBe(true);
137
+ });
138
+ it('returns empty warnings for valid config', () => {
139
+ const config = (0, defaults_1.getDefaultConfig)();
140
+ const result = (0, schema_1.validateConfig)(config);
141
+ expect(result.warnings).toHaveLength(0);
142
+ });
143
+ });
144
+ describe('return structure', () => {
145
+ it('returns ValidationResult with all required fields', () => {
146
+ const config = (0, defaults_1.getDefaultConfig)();
147
+ const result = (0, schema_1.validateConfig)(config);
148
+ expect(result).toHaveProperty('valid');
149
+ expect(result).toHaveProperty('errors');
150
+ expect(result).toHaveProperty('warnings');
151
+ expect(typeof result.valid).toBe('boolean');
152
+ expect(Array.isArray(result.errors)).toBe(true);
153
+ expect(Array.isArray(result.warnings)).toBe(true);
154
+ });
155
+ it('includes parsed config when valid', () => {
156
+ const config = (0, defaults_1.getDefaultConfig)();
157
+ const result = (0, schema_1.validateConfig)(config);
158
+ expect(result.config).toBeDefined();
159
+ expect(result.config?.version).toBe('2.0');
160
+ });
161
+ it('does not include config when invalid', () => {
162
+ const result = (0, schema_1.validateConfig)(null);
163
+ expect(result.config).toBeUndefined();
164
+ });
165
+ });
166
+ });
167
+ describe('CoreYamlConfigSchema', () => {
168
+ it('parses valid config', () => {
169
+ const config = (0, defaults_1.getDefaultConfig)();
170
+ const result = schema_1.CoreYamlConfigSchema.safeParse(config);
171
+ expect(result.success).toBe(true);
172
+ });
173
+ it('requires version field', () => {
174
+ const result = schema_1.CoreYamlConfigSchema.safeParse({});
175
+ expect(result.success).toBe(false);
176
+ });
177
+ it('validates version is 2.0', () => {
178
+ const result = schema_1.CoreYamlConfigSchema.safeParse({ version: '1.0' });
179
+ expect(result.success).toBe(false);
180
+ if (!result.success) {
181
+ expect(result.error.errors.some((e) => e.message.includes('2.0'))).toBe(true);
182
+ }
183
+ });
184
+ it('allows optional plugin sections', () => {
185
+ const result = schema_1.CoreYamlConfigSchema.safeParse({ version: '2.0' });
186
+ expect(result.success).toBe(true);
187
+ });
188
+ });
189
+ describe('WorkConfigSchema', () => {
190
+ it('validates valid work config', () => {
191
+ const workConfig = {
192
+ active_handler: 'github',
193
+ handlers: {
194
+ github: { owner: 'test', repo: 'test' },
195
+ },
196
+ };
197
+ const result = schema_1.WorkConfigSchema.safeParse(workConfig);
198
+ expect(result.success).toBe(true);
199
+ });
200
+ it('requires active_handler', () => {
201
+ const workConfig = {
202
+ handlers: { github: {} },
203
+ };
204
+ const result = schema_1.WorkConfigSchema.safeParse(workConfig);
205
+ expect(result.success).toBe(false);
206
+ });
207
+ it('requires handlers object', () => {
208
+ const workConfig = {
209
+ active_handler: 'github',
210
+ };
211
+ const result = schema_1.WorkConfigSchema.safeParse(workConfig);
212
+ expect(result.success).toBe(false);
213
+ });
214
+ it('requires at least one handler', () => {
215
+ const workConfig = {
216
+ active_handler: 'github',
217
+ handlers: {},
218
+ };
219
+ const result = schema_1.WorkConfigSchema.safeParse(workConfig);
220
+ expect(result.success).toBe(false);
221
+ });
222
+ it('allows optional defaults', () => {
223
+ const workConfig = {
224
+ active_handler: 'github',
225
+ handlers: { github: {} },
226
+ defaults: { auto_assign: true },
227
+ };
228
+ const result = schema_1.WorkConfigSchema.safeParse(workConfig);
229
+ expect(result.success).toBe(true);
230
+ });
231
+ });
232
+ describe('RepoConfigSchema', () => {
233
+ it('validates valid repo config', () => {
234
+ const repoConfig = {
235
+ active_handler: 'github',
236
+ handlers: {
237
+ github: { token: '${GITHUB_TOKEN}' },
238
+ },
239
+ };
240
+ const result = schema_1.RepoConfigSchema.safeParse(repoConfig);
241
+ expect(result.success).toBe(true);
242
+ });
243
+ it('requires active_handler', () => {
244
+ const repoConfig = {
245
+ handlers: { github: {} },
246
+ };
247
+ const result = schema_1.RepoConfigSchema.safeParse(repoConfig);
248
+ expect(result.success).toBe(false);
249
+ });
250
+ it('validates defaults structure', () => {
251
+ const repoConfig = {
252
+ active_handler: 'github',
253
+ handlers: { github: {} },
254
+ defaults: {
255
+ default_branch: 'main',
256
+ protected_branches: ['main', 'develop'],
257
+ pr: {
258
+ template: 'standard',
259
+ merge: {
260
+ strategy: 'squash',
261
+ delete_branch: true,
262
+ },
263
+ },
264
+ },
265
+ };
266
+ const result = schema_1.RepoConfigSchema.safeParse(repoConfig);
267
+ expect(result.success).toBe(true);
268
+ });
269
+ it('validates PR merge strategy enum', () => {
270
+ const repoConfig = {
271
+ active_handler: 'github',
272
+ handlers: { github: {} },
273
+ defaults: {
274
+ pr: {
275
+ merge: {
276
+ strategy: 'invalid-strategy',
277
+ },
278
+ },
279
+ },
280
+ };
281
+ const result = schema_1.RepoConfigSchema.safeParse(repoConfig);
282
+ expect(result.success).toBe(false);
283
+ });
284
+ });
285
+ describe('LogsConfigSchema', () => {
286
+ it('validates valid logs config', () => {
287
+ const logsConfig = {
288
+ schema_version: '2.0',
289
+ };
290
+ const result = schema_1.LogsConfigSchema.safeParse(logsConfig);
291
+ expect(result.success).toBe(true);
292
+ });
293
+ it('requires schema_version', () => {
294
+ const logsConfig = {};
295
+ const result = schema_1.LogsConfigSchema.safeParse(logsConfig);
296
+ expect(result.success).toBe(false);
297
+ });
298
+ it('allows optional fields', () => {
299
+ const logsConfig = {
300
+ schema_version: '2.0',
301
+ custom_templates_path: '.fractary/logs/templates/manifest.yaml',
302
+ storage: { local_path: '.fractary/logs' },
303
+ retention: { default: { local_days: 30 } },
304
+ session_logging: { enabled: true },
305
+ };
306
+ const result = schema_1.LogsConfigSchema.safeParse(logsConfig);
307
+ expect(result.success).toBe(true);
308
+ });
309
+ });
310
+ describe('FileConfigSchema', () => {
311
+ it('validates valid file config with sources', () => {
312
+ const fileConfig = {
313
+ schema_version: '2.0',
314
+ sources: {
315
+ specs: {
316
+ type: 'local',
317
+ local: { base_path: '.fractary/specs' },
318
+ },
319
+ },
320
+ };
321
+ const result = schema_1.FileConfigSchema.safeParse(fileConfig);
322
+ expect(result.success).toBe(true);
323
+ });
324
+ it('validates S3 source config', () => {
325
+ const fileConfig = {
326
+ schema_version: '2.0',
327
+ sources: {
328
+ specs: {
329
+ type: 's3',
330
+ bucket: 'my-bucket',
331
+ prefix: 'specs/',
332
+ region: 'us-east-1',
333
+ local: { base_path: '.fractary/specs' },
334
+ push: { compress: true, keep_local: true },
335
+ auth: { profile: 'default' },
336
+ },
337
+ },
338
+ };
339
+ const result = schema_1.FileConfigSchema.safeParse(fileConfig);
340
+ expect(result.success).toBe(true);
341
+ });
342
+ it('requires schema_version', () => {
343
+ const fileConfig = {
344
+ sources: {},
345
+ };
346
+ const result = schema_1.FileConfigSchema.safeParse(fileConfig);
347
+ expect(result.success).toBe(false);
348
+ });
349
+ it('requires local.base_path in sources', () => {
350
+ const fileConfig = {
351
+ schema_version: '2.0',
352
+ sources: {
353
+ specs: {
354
+ type: 'local',
355
+ local: {},
356
+ },
357
+ },
358
+ };
359
+ const result = schema_1.FileConfigSchema.safeParse(fileConfig);
360
+ expect(result.success).toBe(false);
361
+ });
362
+ });
363
+ describe('SpecConfigSchema', () => {
364
+ it('validates valid spec config', () => {
365
+ const specConfig = {
366
+ schema_version: '1.0',
367
+ };
368
+ const result = schema_1.SpecConfigSchema.safeParse(specConfig);
369
+ expect(result.success).toBe(true);
370
+ });
371
+ it('requires schema_version', () => {
372
+ const specConfig = {};
373
+ const result = schema_1.SpecConfigSchema.safeParse(specConfig);
374
+ expect(result.success).toBe(false);
375
+ });
376
+ it('allows optional fields', () => {
377
+ const specConfig = {
378
+ schema_version: '1.0',
379
+ storage: { local_path: '.fractary/specs' },
380
+ naming: { issue_specs: { prefix: 'WORK' } },
381
+ archive: { strategy: 'lifecycle' },
382
+ };
383
+ const result = schema_1.SpecConfigSchema.safeParse(specConfig);
384
+ expect(result.success).toBe(true);
385
+ });
386
+ });
387
+ describe('DocsConfigSchema', () => {
388
+ it('validates valid docs config', () => {
389
+ const docsConfig = {
390
+ schema_version: '1.1',
391
+ };
392
+ const result = schema_1.DocsConfigSchema.safeParse(docsConfig);
393
+ expect(result.success).toBe(true);
394
+ });
395
+ it('requires schema_version', () => {
396
+ const docsConfig = {};
397
+ const result = schema_1.DocsConfigSchema.safeParse(docsConfig);
398
+ expect(result.success).toBe(false);
399
+ });
400
+ it('allows custom_templates_path', () => {
401
+ const docsConfig = {
402
+ schema_version: '1.1',
403
+ custom_templates_path: '.fractary/docs/templates/manifest.yaml',
404
+ };
405
+ const result = schema_1.DocsConfigSchema.safeParse(docsConfig);
406
+ expect(result.success).toBe(true);
407
+ });
408
+ });
409
+ describe('CodexConfigSchema', () => {
410
+ it('validates valid codex config', () => {
411
+ const codexConfig = {
412
+ schema_version: '1.0',
413
+ organization: 'myorg',
414
+ project: 'myproject',
415
+ };
416
+ const result = schema_1.CodexConfigSchema.safeParse(codexConfig);
417
+ expect(result.success).toBe(true);
418
+ });
419
+ it('requires organization', () => {
420
+ const codexConfig = {
421
+ schema_version: '1.0',
422
+ project: 'myproject',
423
+ };
424
+ const result = schema_1.CodexConfigSchema.safeParse(codexConfig);
425
+ expect(result.success).toBe(false);
426
+ });
427
+ it('requires project', () => {
428
+ const codexConfig = {
429
+ schema_version: '1.0',
430
+ organization: 'myorg',
431
+ };
432
+ const result = schema_1.CodexConfigSchema.safeParse(codexConfig);
433
+ expect(result.success).toBe(false);
434
+ });
435
+ it('allows optional dependencies', () => {
436
+ const codexConfig = {
437
+ schema_version: '1.0',
438
+ organization: 'myorg',
439
+ project: 'myproject',
440
+ dependencies: { core: '^1.0.0' },
441
+ };
442
+ const result = schema_1.CodexConfigSchema.safeParse(codexConfig);
443
+ expect(result.success).toBe(true);
444
+ });
445
+ });
446
+ describe('error messages', () => {
447
+ it('provides path in error messages', () => {
448
+ const config = {
449
+ version: '2.0',
450
+ work: {
451
+ active_handler: '',
452
+ handlers: { github: {} },
453
+ },
454
+ };
455
+ const result = (0, schema_1.validateConfig)(config);
456
+ expect(result.valid).toBe(false);
457
+ expect(result.errors.some((e) => e.includes('work.active_handler'))).toBe(true);
458
+ });
459
+ it('provides descriptive error for version mismatch', () => {
460
+ const config = { version: '3.0' };
461
+ const result = (0, schema_1.validateConfig)(config);
462
+ expect(result.valid).toBe(false);
463
+ expect(result.errors.some((e) => e.includes('2.0'))).toBe(true);
464
+ });
465
+ it('lists multiple errors when present', () => {
466
+ const config = {
467
+ version: '1.0',
468
+ work: {
469
+ handlers: {},
470
+ },
471
+ };
472
+ const result = (0, schema_1.validateConfig)(config);
473
+ expect(result.valid).toBe(false);
474
+ expect(result.errors.length).toBeGreaterThan(1);
475
+ });
476
+ });
477
+ //# sourceMappingURL=schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.test.js","sourceRoot":"","sources":["../../src/config/schema.test.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,qCAUkB;AAClB,yCAAgE;AAEhE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,IAAA,2BAAgB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAAG,IAAA,2BAAgB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;YAExD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,IAAA,2BAAgB,EAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;gBAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG,IAAA,2BAAgB,EAAC;gBAC9B,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE,aAAa;gBACvB,SAAS,EAAE,WAAW;aACvB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,eAAe,CAAC,CAAC;YAE/C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE;oBACJ,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;iBACzB;aACF,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE;oBACJ,cAAc,EAAE,QAAQ;iBACzB;aACF,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE;oBACJ,cAAc,EAAE,QAAQ;oBACxB,QAAQ,EAAE,EAAE;iBACb;aACF,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE;oBACJ,cAAc,EAAE,MAAM;oBACtB,QAAQ,EAAE;wBACR,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;qBACxC;iBACF;aACF,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE;oBACJ,cAAc,EAAE,QAAQ;oBACxB,QAAQ,EAAE;wBACR,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;qBAC1B;iBACF;aACF,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAG,IAAA,2BAAgB,GAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,MAAM,GAAG,IAAA,2BAAgB,GAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAA,2BAAgB,GAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAA,2BAAgB,GAAE,CAAC;QAClC,MAAM,MAAM,GAAG,6BAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,6BAAoB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,6BAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,6BAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE;gBACR,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;aACxC;SACF,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SACzB,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,QAAQ;SACzB,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACxB,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;SAChC,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE;gBACR,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;aACrC;SACF,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SACzB,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACxB,QAAQ,EAAE;gBACR,cAAc,EAAE,MAAM;gBACtB,kBAAkB,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;gBACvC,EAAE,EAAE;oBACF,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE;wBACL,QAAQ,EAAE,QAAQ;wBAClB,aAAa,EAAE,IAAI;qBACpB;iBACF;aACF;SACF,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACxB,QAAQ,EAAE;gBACR,EAAE,EAAE;oBACF,KAAK,EAAE;wBACL,QAAQ,EAAE,kBAAkB;qBAC7B;iBACF;aACF;SACF,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;SACtB,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;YACrB,qBAAqB,EAAE,wCAAwC;YAC/D,OAAO,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;YACzC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;YAC1C,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SACnC,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE;iBACxC;aACF;SACF,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,WAAW;oBACnB,KAAK,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE;oBACvC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;oBAC1C,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;iBAC7B;aACF;SACF,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG;YACjB,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE;iBACV;aACF;SACF,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;SACtB,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE;YAC1C,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC3C,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;SACnC,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;SACtB,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK;YACrB,qBAAqB,EAAE,wCAAwC;SAChE,CAAC;QACF,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,WAAW,GAAG;YAClB,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,OAAO;YACrB,OAAO,EAAE,WAAW;SACrB,CAAC;QACF,MAAM,MAAM,GAAG,0BAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,WAAW,GAAG;YAClB,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,WAAW;SACrB,CAAC;QACF,MAAM,MAAM,GAAG,0BAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,WAAW,GAAG;YAClB,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,OAAO;SACtB,CAAC;QACF,MAAM,MAAM,GAAG,0BAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,WAAW,GAAG;YAClB,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,OAAO;YACrB,OAAO,EAAE,WAAW;YACpB,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACjC,CAAC;QACF,MAAM,MAAM,GAAG,0BAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,KAAK;YACd,IAAI,EAAE;gBACJ,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;aACzB;SACF,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,KAAK;YACd,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE;aACb;SACF,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}