@sdd-method/sdd-cli 1.23.1 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  # GENERATED — DO NOT EDIT. This file is a projection of the authored model (M-ADR 0210 §4.6, flip 2):
2
2
  # docs/method/foundations/schemas/catalogue-schema-meta.tql — coverage-meta + relationship-meta rows carry
3
3
  # every entry here; the relations themselves (roles, players) are in catalogue-schema.tql.
4
- # Regenerate: python3 orchestration/scripts/check-catalogue-schema-roundtrip.py --write
5
- # Guard: python3 orchestration/scripts/check-catalogue-schema-roundtrip.py (any difference fails the build)
4
+ # Regenerate: sdd-cli metamodel roundtrip --write
5
+ # Guard: sdd-cli metamodel roundtrip (any difference fails the build)
6
6
  # Vocabularies, rulings and the reading of each token live in the authored .tql header, as comments.
7
7
  coverage:
8
8
  c4_system_kind:
@@ -40,7 +40,7 @@ coverage:
40
40
  products:
41
41
  kind: entity
42
42
  scoring: rubric-pair
43
- instrument: 'forward: rubrics/product-definition-rubric.md · reverse: reverse/rubrics/product-synthesis-quality.md'
43
+ instrument: "forward: rubrics/product-definition-rubric.md · reverse: reverse/rubrics/product-synthesis-quality.md"
44
44
  relationships:
45
45
  domain_id:
46
46
  class: membership
@@ -71,7 +71,7 @@ coverage:
71
71
  adrs:
72
72
  kind: entity
73
73
  scoring: rubric-pair
74
- instrument: 'forward: rubrics/adr-quality-rubric.md · reverse: reverse/rubrics/reverse-adr-quality.md'
74
+ instrument: "forward: rubrics/adr-quality-rubric.md · reverse: reverse/rubrics/reverse-adr-quality.md"
75
75
  relationships:
76
76
  domain_id:
77
77
  class: membership
@@ -82,7 +82,7 @@ coverage:
82
82
  glossary_items:
83
83
  kind: entity
84
84
  scoring: rubric-pair
85
- instrument: 'forward: rubrics/glossary-rubric.md · reverse: reverse/rubrics/reverse-glossary-quality.md'
85
+ instrument: "forward: rubrics/glossary-rubric.md · reverse: reverse/rubrics/reverse-glossary-quality.md"
86
86
  relationships:
87
87
  owning_domain_id:
88
88
  class: membership
@@ -92,20 +92,20 @@ coverage:
92
92
  impact_flow: toward-source
93
93
  glossary_xref:
94
94
  kind: edge
95
+ scoring: derived-edge
95
96
  class: xref
96
97
  impact_flow: none
97
- scoring: derived-edge
98
98
  reason: derived from entity rows or manifest blocks scored at the owning entity
99
99
  entity_glossary:
100
100
  kind: edge
101
+ scoring: derived-edge
101
102
  class: xref
102
103
  impact_flow: none
103
- scoring: derived-edge
104
104
  reason: derived from entity rows or manifest blocks scored at the owning entity
105
105
  services:
106
106
  kind: entity
107
107
  scoring: re-targeted
108
- instrument: 'deliberately no dedicated rubric: boundary scored by rubrics/domain-architecture-rubric.md B5/B9 against the declared set (repo-config, input 3); source absence by scripts/check-repo-config-coverage.sh; reverse doc form by reverse/rubrics/repo-doc-quality.md'
108
+ instrument: "deliberately no dedicated rubric: boundary scored by rubrics/domain-architecture-rubric.md B5/B9 against the declared set (repo-config, input 3); source absence by scripts/check-repo-config-coverage.sh; reverse doc form by reverse/rubrics/repo-doc-quality.md"
109
109
  relationships:
110
110
  product_id:
111
111
  class: membership
@@ -119,7 +119,7 @@ coverage:
119
119
  capabilities:
120
120
  kind: entity
121
121
  scoring: rubric-pair
122
- instrument: 'forward: rubrics/intent-quality-rubric.md · reverse: reverse/rubrics/reverse-capability-spec-quality.md'
122
+ instrument: "forward: rubrics/intent-quality-rubric.md · reverse: reverse/rubrics/reverse-capability-spec-quality.md"
123
123
  relationships:
124
124
  domain_id:
125
125
  class: membership
@@ -144,7 +144,7 @@ coverage:
144
144
  features:
145
145
  kind: entity
146
146
  scoring: rubric-pair
147
- instrument: 'forward: rubrics/intent-quality-rubric.md (feature tier) + rubrics/feature-grounding-rubric.md · reverse: reverse/rubrics/reverse-feature-grounding-quality.md'
147
+ instrument: "forward: rubrics/intent-quality-rubric.md (feature tier) + rubrics/feature-grounding-rubric.md · reverse: reverse/rubrics/reverse-feature-grounding-quality.md"
148
148
  relationships:
149
149
  product_id:
150
150
  class: membership
@@ -161,7 +161,7 @@ coverage:
161
161
  personas:
162
162
  kind: entity
163
163
  scoring: rubric-pair
164
- instrument: 'forward: rubrics/persona-rubric.md · reverse: reverse/rubrics/reverse-persona-quality.md'
164
+ instrument: "forward: rubrics/persona-rubric.md · reverse: reverse/rubrics/reverse-persona-quality.md"
165
165
  relationships:
166
166
  product_id:
167
167
  class: membership
@@ -177,7 +177,7 @@ coverage:
177
177
  contracts:
178
178
  kind: entity
179
179
  scoring: rubric-pair
180
- instrument: 'forward: rubrics/contract-quality-rubric.md · reverse: reverse/rubrics/reverse-contract-quality.md'
180
+ instrument: "forward: rubrics/contract-quality-rubric.md · reverse: reverse/rubrics/reverse-contract-quality.md"
181
181
  relationships:
182
182
  service_id:
183
183
  class: membership
@@ -236,7 +236,7 @@ coverage:
236
236
  repositories:
237
237
  kind: entity
238
238
  scoring: predicate
239
- instrument: 'deliberately no rubric: repo-config is four structural fields; scripts/check-repo-config-coverage.sh covers the silent absences, builder findings own enum/orphan/divergence'
239
+ instrument: "deliberately no rubric: repo-config is four structural fields; scripts/check-repo-config-coverage.sh covers the silent absences, builder findings own enum/orphan/divergence"
240
240
  relationships:
241
241
  domain_id:
242
242
  class: membership
@@ -247,7 +247,7 @@ coverage:
247
247
  domain_models:
248
248
  kind: entity
249
249
  scoring: rubric-pair
250
- instrument: 'forward: rubrics/domain-architecture-rubric.md · reverse: reverse/rubrics/reverse-data-model-quality.md'
250
+ instrument: "forward: rubrics/domain-architecture-rubric.md · reverse: reverse/rubrics/reverse-data-model-quality.md"
251
251
  relationships:
252
252
  domain_id:
253
253
  class: membership
@@ -255,7 +255,7 @@ coverage:
255
255
  entities:
256
256
  kind: entity
257
257
  scoring: predicate
258
- instrument: 'verified covered: builder reads glossary-alignment-manifest (entities-manifest builder); absence fires the glossary-xref + data-model-entities coverage checks (sdd-cli catalogue validate --coverage); authored population is 1 forward + 1 reverse — a rubric would be ceremony'
258
+ instrument: "verified covered: builder reads glossary-alignment-manifest (entities-manifest builder); absence fires the glossary-xref + data-model-entities coverage checks (sdd-cli catalogue validate --coverage); authored population is 1 forward + 1 reverse — a rubric would be ceremony"
259
259
  relationships:
260
260
  domain_id:
261
261
  class: membership
@@ -268,246 +268,246 @@ coverage:
268
268
  impact_flow: none
269
269
  repo_capability:
270
270
  kind: edge
271
+ scoring: derived-edge
271
272
  class: realisation
272
273
  impact_flow: both
273
- scoring: derived-edge
274
274
  reason: derived from entity rows or manifest blocks scored at the owning entity
275
275
  repo_capability_exemption:
276
276
  kind: annotation
277
+ scoring: derived-edge
277
278
  class: attribute
278
279
  impact_flow: none
279
- scoring: derived-edge
280
280
  reason: derived from entity rows or manifest blocks scored at the owning entity
281
281
  service_capability_exemption:
282
282
  kind: annotation
283
+ scoring: derived-edge
283
284
  class: attribute
284
285
  impact_flow: none
285
- scoring: derived-edge
286
286
  reason: derived from entity rows or manifest blocks scored at the owning entity
287
287
  external_system_exemption:
288
288
  kind: annotation
289
+ scoring: derived-edge
289
290
  class: attribute
290
291
  impact_flow: none
291
- scoring: derived-edge
292
292
  reason: derived from entity rows or manifest blocks scored at the owning entity
293
293
  repo_contract:
294
294
  kind: edge
295
+ scoring: derived-edge
295
296
  class: realisation
296
297
  impact_flow: both
297
- scoring: derived-edge
298
298
  reason: derived from entity rows or manifest blocks scored at the owning entity
299
299
  product_capability:
300
300
  kind: edge
301
+ scoring: derived-edge
301
302
  class: dependency
302
303
  impact_flow: toward-source
303
- scoring: derived-edge
304
304
  reason: derived from entity rows or manifest blocks scored at the owning entity
305
305
  product_service:
306
306
  kind: edge
307
+ scoring: derived-edge
307
308
  class: dependency
308
309
  impact_flow: toward-source
309
- scoring: derived-edge
310
310
  reason: derived from entity rows or manifest blocks scored at the owning entity
311
311
  service_contract:
312
312
  kind: edge
313
+ scoring: derived-edge
313
314
  class: realisation
314
315
  impact_flow: both
315
- scoring: derived-edge
316
316
  reason: derived from entity rows or manifest blocks scored at the owning entity
317
317
  service_event:
318
318
  kind: edge
319
+ scoring: derived-edge
319
320
  class: dependency
320
321
  impact_flow_by:
321
322
  column: role
322
323
  values:
323
324
  publishes: toward-target
324
325
  consumes: toward-source
325
- scoring: derived-edge
326
326
  reason: derived from entity rows or manifest blocks scored at the owning entity
327
327
  service_entity:
328
328
  kind: edge
329
+ scoring: derived-edge
329
330
  class: dependency
330
331
  impact_flow: toward-source
331
- scoring: derived-edge
332
332
  reason: derived from entity rows or manifest blocks scored at the owning entity
333
333
  capability_feature:
334
334
  kind: edge
335
+ scoring: derived-edge
335
336
  class: traceability
336
337
  impact_flow: toward-source
337
- scoring: derived-edge
338
338
  reason: derived from entity rows or manifest blocks scored at the owning entity
339
339
  capability_service:
340
340
  kind: edge
341
+ scoring: derived-edge
341
342
  class: dependency
342
343
  impact_flow: toward-source
343
- scoring: derived-edge
344
344
  reason: derived from entity rows or manifest blocks scored at the owning entity
345
345
  capability_event:
346
346
  kind: edge
347
+ scoring: derived-edge
347
348
  class: dependency
348
349
  impact_flow: toward-source
349
- scoring: derived-edge
350
350
  reason: derived from entity rows or manifest blocks scored at the owning entity
351
351
  capability_contract:
352
352
  kind: edge
353
+ scoring: derived-edge
353
354
  class: dependency
354
355
  impact_flow: toward-source
355
- scoring: derived-edge
356
356
  reason: derived from entity rows or manifest blocks scored at the owning entity
357
357
  journey_feature:
358
358
  kind: edge
359
+ scoring: derived-edge
359
360
  class: dependency
360
361
  impact_flow: toward-source
361
- scoring: derived-edge
362
362
  reason: derived from entity rows or manifest blocks scored at the owning entity
363
363
  persona_feature:
364
364
  kind: edge
365
+ scoring: derived-edge
365
366
  class: dependency
366
367
  impact_flow: toward-source
367
- scoring: derived-edge
368
368
  reason: derived from entity rows or manifest blocks scored at the owning entity
369
369
  feature_service:
370
370
  kind: edge
371
+ scoring: derived-edge
371
372
  class: dependency
372
373
  impact_flow: toward-source
373
- scoring: derived-edge
374
374
  reason: derived from entity rows or manifest blocks scored at the owning entity
375
375
  feature_event:
376
376
  kind: edge
377
+ scoring: derived-edge
377
378
  class: dependency
378
379
  impact_flow: toward-source
379
- scoring: derived-edge
380
380
  reason: derived from entity rows or manifest blocks scored at the owning entity
381
381
  feature_repo:
382
382
  kind: edge
383
+ scoring: derived-edge
383
384
  class: realisation
384
385
  impact_flow: both
385
- scoring: derived-edge
386
386
  reason: derived from entity rows or manifest blocks scored at the owning entity
387
387
  feature_contract:
388
388
  kind: edge
389
+ scoring: derived-edge
389
390
  class: dependency
390
391
  impact_flow: toward-source
391
- scoring: derived-edge
392
392
  reason: derived from entity rows or manifest blocks scored at the owning entity
393
393
  feature_subscription_channels:
394
394
  kind: annotation
395
+ scoring: derived-edge
395
396
  class: attribute
396
397
  impact_flow: none
397
- scoring: derived-edge
398
398
  reason: derived from entity rows or manifest blocks scored at the owning entity
399
399
  capability_domain_model:
400
400
  kind: edge
401
+ scoring: derived-edge
401
402
  class: dependency
402
403
  impact_flow: toward-source
403
- scoring: derived-edge
404
404
  reason: derived from entity rows or manifest blocks scored at the owning entity
405
405
  feature_domain_model:
406
406
  kind: edge
407
+ scoring: derived-edge
407
408
  class: dependency
408
409
  impact_flow: toward-source
409
- scoring: derived-edge
410
410
  reason: derived from entity rows or manifest blocks scored at the owning entity
411
411
  persona_journey:
412
412
  kind: edge
413
+ scoring: derived-edge
413
414
  class: dependency
414
415
  impact_flow: toward-source
415
- scoring: derived-edge
416
416
  reason: derived from entity rows or manifest blocks scored at the owning entity
417
417
  persona_screen:
418
418
  kind: edge
419
+ scoring: derived-edge
419
420
  class: dependency
420
421
  impact_flow: toward-source
421
- scoring: derived-edge
422
422
  reason: derived from entity rows or manifest blocks scored at the owning entity
423
423
  persona_c4system:
424
424
  kind: edge
425
+ scoring: derived-edge
425
426
  class: dependency
426
427
  impact_flow: toward-source
427
- scoring: derived-edge
428
428
  reason: derived from entity rows or manifest blocks scored at the owning entity
429
429
  persona_container:
430
430
  kind: edge
431
+ scoring: derived-edge
431
432
  class: dependency
432
433
  impact_flow: toward-source
433
- scoring: derived-edge
434
434
  reason: derived from entity rows or manifest blocks scored at the owning entity
435
435
  system_external_dependency:
436
436
  kind: edge
437
+ scoring: derived-edge
437
438
  class: dependency
438
439
  impact_flow: toward-source
439
- scoring: derived-edge
440
440
  reason: derived from entity rows or manifest blocks scored at the owning entity
441
441
  container_dependency:
442
442
  kind: edge
443
+ scoring: derived-edge
443
444
  class: dependency
444
445
  impact_flow: toward-source
445
- scoring: derived-edge
446
446
  reason: derived from entity rows or manifest blocks scored at the owning entity
447
447
  system_system_dependency:
448
448
  kind: edge
449
+ scoring: derived-edge
449
450
  class: dependency
450
451
  impact_flow: toward-source
451
- scoring: derived-edge
452
452
  reason: derived from entity rows or manifest blocks scored at the owning entity
453
453
  c4_container_entity:
454
454
  kind: edge
455
+ scoring: derived-edge
455
456
  class: dependency
456
457
  impact_flow: toward-source
457
- scoring: derived-edge
458
458
  reason: derived from entity rows or manifest blocks scored at the owning entity
459
459
  c4_system_entity:
460
460
  kind: edge
461
+ scoring: derived-edge
461
462
  class: dependency
462
463
  impact_flow: toward-source
463
- scoring: derived-edge
464
464
  reason: derived from entity rows or manifest blocks scored at the owning entity
465
465
  capability_adr:
466
466
  kind: edge
467
+ scoring: derived-edge
467
468
  class: dependency
468
469
  impact_flow: toward-source
469
- scoring: derived-edge
470
470
  reason: derived from entity rows or manifest blocks scored at the owning entity
471
471
  adr_supersedes:
472
472
  kind: edge
473
+ scoring: derived-edge
473
474
  class: lineage
474
475
  impact_flow: none
475
- scoring: derived-edge
476
476
  reason: derived from entity rows or manifest blocks scored at the owning entity
477
477
  product_platform_dependencies:
478
478
  kind: edge
479
+ scoring: derived-edge
479
480
  class: dependency
480
481
  impact_flow: toward-source
481
- scoring: derived-edge
482
482
  reason: derived from entity rows or manifest blocks scored at the owning entity
483
483
  cross_sdd_platform_capability:
484
484
  kind: edge
485
+ scoring: derived-edge
485
486
  class: dependency
486
487
  impact_flow: toward-source
487
- scoring: derived-edge
488
488
  reason: derived from entity rows or manifest blocks scored at the owning entity
489
489
  application_data_plane_bindings:
490
490
  kind: annotation
491
+ scoring: derived-edge
491
492
  class: attribute
492
493
  impact_flow: none
493
- scoring: derived-edge
494
494
  reason: derived from entity rows or manifest blocks scored at the owning entity
495
495
  application_data_plane_deviations:
496
496
  kind: annotation
497
+ scoring: derived-edge
497
498
  class: attribute
498
499
  impact_flow: none
499
- scoring: derived-edge
500
500
  reason: derived from entity rows or manifest blocks scored at the owning entity
501
501
  application_conformance_coverage:
502
502
  kind: annotation
503
+ scoring: derived-edge
503
504
  class: attribute
504
505
  impact_flow: none
505
- scoring: derived-edge
506
506
  reason: derived from entity rows or manifest blocks scored at the owning entity
507
507
  screens:
508
508
  kind: entity
509
509
  scoring: rubric-pair
510
- instrument: 'forward: rubrics/screen-spec-rubric.md above the mechanical floor (guides/screen-spec-depth-rubric.md) · reverse: reverse/rubrics/reverse-screen-spec-quality.md'
510
+ instrument: "forward: rubrics/screen-spec-rubric.md above the mechanical floor (guides/screen-spec-depth-rubric.md) · reverse: reverse/rubrics/reverse-screen-spec-quality.md"
511
511
  relationships:
512
512
  product_id:
513
513
  class: membership
@@ -522,21 +522,21 @@ coverage:
522
522
  impact_flow: toward-target
523
523
  screen_component:
524
524
  kind: edge
525
+ scoring: derived-edge
525
526
  class: membership
526
527
  impact_flow: toward-source
527
- scoring: derived-edge
528
528
  reason: derived from entity rows or manifest blocks scored at the owning entity
529
529
  screen_feature:
530
530
  kind: edge
531
+ scoring: derived-edge
531
532
  class: dependency
532
533
  impact_flow: toward-source
533
- scoring: derived-edge
534
534
  reason: derived from entity rows or manifest blocks scored at the owning entity
535
535
  screen_action:
536
536
  kind: edge
537
+ scoring: derived-edge
537
538
  class: dependency
538
539
  impact_flow: toward-source
539
- scoring: derived-edge
540
540
  reason: derived from entity rows or manifest blocks scored at the owning entity
541
541
  conformance_finding:
542
542
  kind: finding
@@ -552,9 +552,9 @@ coverage:
552
552
  impact_flow: none
553
553
  quality_score_dimensions:
554
554
  kind: annotation
555
+ scoring: derived-edge
555
556
  class: attribute
556
557
  impact_flow: none
557
- scoring: derived-edge
558
558
  reason: derived from the parent quality_scores row; the dimension keys are the rubric's own vocabulary, governed by the rubric that declares them
559
559
  quality_gate:
560
560
  kind: enum
@@ -582,9 +582,9 @@ coverage:
582
582
  impact_flow: none
583
583
  scaffold_items:
584
584
  kind: annotation
585
+ scoring: derived-edge
585
586
  class: traceability
586
587
  impact_flow: none
587
- scoring: derived-edge
588
588
  reason: derived from the authored scaffold manifest (M-ADR 0207 §4.1); the polymorphic target deliberately declares no FK — resolution is conditional on state — so the row is a governance trace, not an impact path
589
589
  scaffold_status:
590
590
  kind: enum
@@ -0,0 +1,52 @@
1
+ import type { MapProjection, SchemaProjection } from "./schema-projection.js";
2
+ export declare const CANONICAL_PATHS: {
3
+ readonly tql: "docs/method/foundations/schemas/catalogue-schema.tql";
4
+ readonly meta: "docs/method/foundations/schemas/catalogue-schema-meta.tql";
5
+ readonly schema: "docs/method/foundations/schemas/catalogue-schema.yaml";
6
+ readonly map: "orchestration/rubric-coverage-map.yaml";
7
+ };
8
+ /** Emit projection 1. The three header scalars are QUOTED: two downstream readers take the version textually. */
9
+ export declare function emitSchema(out: SchemaProjection): string;
10
+ export declare function emitMap(cov: MapProjection): string;
11
+ export interface Regenerated {
12
+ readonly schemaText: string;
13
+ readonly mapText: string;
14
+ readonly schema: SchemaProjection;
15
+ readonly map: MapProjection;
16
+ }
17
+ /** Parse + project + emit from the two authored texts. Throws ParseError (fail-closed). */
18
+ export declare function regenerateFromText(tqlText: string, metaText: string): Regenerated;
19
+ interface Mutation {
20
+ readonly label: string;
21
+ readonly tql: string;
22
+ readonly meta: string;
23
+ }
24
+ export declare function mutations(tql: string, meta: string): Mutation[];
25
+ export interface ControlResult {
26
+ readonly label: string;
27
+ readonly refused: boolean;
28
+ readonly reason: string;
29
+ }
30
+ export declare function runControls(tql: string, meta: string): {
31
+ ok: boolean;
32
+ fired: number;
33
+ total: number;
34
+ results: ControlResult[];
35
+ cleanError?: string;
36
+ };
37
+ export declare function semanticDiff(a: unknown, b: unknown, path?: string): Generator<string>;
38
+ export interface GateInputs {
39
+ /** The canonical method repo root (defaults to cwd). */
40
+ readonly root?: string;
41
+ readonly mode?: "steady" | "write" | "self-test" | "migrate";
42
+ readonly oldSchema?: string;
43
+ readonly oldMap?: string;
44
+ }
45
+ /** Run the gate. Exit codes: 0 pass; 1 projection differs; 2 authored form does not parse; 3 controls did not all fire. */
46
+ export declare function runMetamodelRoundtrip(inputs: GateInputs, write: (s: string) => void): Promise<{
47
+ exitCode: number;
48
+ }>;
49
+ /** Test helper: write two authored texts to a temp dir laid out like the canonical repo. */
50
+ export declare function withAuthoredTemp<T>(tql: string, meta: string, fn: (root: string) => Promise<T>): Promise<T>;
51
+ export {};
52
+ //# sourceMappingURL=roundtrip-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roundtrip-gate.d.ts","sourceRoot":"","sources":["../../../src/lib/metamodel/roundtrip-gate.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE9E,eAAO,MAAM,eAAe;;;;;CAKlB,CAAC;AA2BX,iHAAiH;AACjH,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAMxD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAElD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B;AAED,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAMjF;AAGD,UAAU,QAAQ;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAaD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAc/D;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAwBnJ;AAGD,wBAAiB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,SAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAenF;AAED,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAgBD,2HAA2H;AAC3H,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA+GzH;AAED,4FAA4F;AAC5F,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAYjH"}