@voxgig/apidef 1.9.0 → 2.0.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.
Files changed (74) hide show
  1. package/dist/apidef.d.ts +3 -29
  2. package/dist/apidef.js +84 -186
  3. package/dist/apidef.js.map +1 -1
  4. package/dist/builder/entity/apiEntity.d.ts +3 -0
  5. package/dist/builder/entity/apiEntity.js +51 -0
  6. package/dist/builder/entity/apiEntity.js.map +1 -0
  7. package/dist/builder/entity/def.d.ts +3 -0
  8. package/dist/builder/entity/def.js +19 -0
  9. package/dist/builder/entity/def.js.map +1 -0
  10. package/dist/builder/entity.d.ts +2 -0
  11. package/dist/builder/entity.js +30 -0
  12. package/dist/builder/entity.js.map +1 -0
  13. package/dist/builder/flow/flowHeuristic01.d.ts +2 -0
  14. package/dist/builder/flow/flowHeuristic01.js +125 -0
  15. package/dist/builder/flow/flowHeuristic01.js.map +1 -0
  16. package/dist/builder/flow.d.ts +2 -0
  17. package/dist/builder/flow.js +41 -0
  18. package/dist/builder/flow.js.map +1 -0
  19. package/dist/guide/heuristic01.d.ts +2 -0
  20. package/dist/guide/heuristic01.js +178 -0
  21. package/dist/guide/heuristic01.js.map +1 -0
  22. package/dist/guide.d.ts +2 -0
  23. package/dist/guide.js +62 -0
  24. package/dist/guide.js.map +1 -0
  25. package/dist/parse.d.ts +1 -1
  26. package/dist/parse.js +5 -4
  27. package/dist/parse.js.map +1 -1
  28. package/dist/resolver.d.ts +2 -0
  29. package/dist/resolver.js +62 -0
  30. package/dist/resolver.js.map +1 -0
  31. package/dist/transform/entity.js +4 -2
  32. package/dist/transform/entity.js.map +1 -1
  33. package/dist/transform/field.js +4 -84
  34. package/dist/transform/field.js.map +1 -1
  35. package/dist/transform/operation.d.ts +2 -2
  36. package/dist/transform/operation.js +22 -11
  37. package/dist/transform/operation.js.map +1 -1
  38. package/dist/transform/top.d.ts +2 -2
  39. package/dist/transform/top.js +5 -4
  40. package/dist/transform/top.js.map +1 -1
  41. package/dist/transform.d.ts +1 -1
  42. package/dist/transform.js +21 -10
  43. package/dist/transform.js.map +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/dist/types.d.ts +682 -0
  46. package/dist/types.js +38 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/utility.d.ts +4 -0
  49. package/dist/utility.js +59 -0
  50. package/dist/utility.js.map +1 -0
  51. package/model/apidef.jsonic +28 -24
  52. package/package.json +8 -6
  53. package/src/apidef.ts +117 -263
  54. package/src/builder/entity/apiEntity.ts +88 -0
  55. package/src/builder/entity/def.ts +44 -0
  56. package/src/builder/entity.ts +54 -0
  57. package/src/builder/flow/flowHeuristic01.ts +165 -0
  58. package/src/builder/flow/flowHeuristic01.ts~ +45 -0
  59. package/src/builder/flow.ts +60 -0
  60. package/src/guide/heuristic01.ts +225 -0
  61. package/src/guide.ts +91 -0
  62. package/src/parse.ts +6 -4
  63. package/src/resolver.ts +91 -0
  64. package/src/transform/entity.ts +10 -7
  65. package/src/transform/field.ts +9 -92
  66. package/src/transform/operation.ts +39 -25
  67. package/src/transform/top.ts +11 -9
  68. package/src/transform.ts +23 -11
  69. package/src/types.ts +88 -0
  70. package/src/utility.ts +83 -0
  71. package/dist/transform/manual.d.ts +0 -3
  72. package/dist/transform/manual.js +0 -12
  73. package/dist/transform/manual.js.map +0 -1
  74. package/src/transform/manual.ts +0 -29
@@ -0,0 +1,682 @@
1
+ import * as Fs from 'node:fs';
2
+ import { Pino, prettyPino } from '@voxgig/util';
3
+ type FsUtil = typeof Fs;
4
+ type Log = ReturnType<typeof prettyPino>;
5
+ type ApiDefOptions = {
6
+ def?: string;
7
+ fs?: any;
8
+ pino?: ReturnType<typeof Pino>;
9
+ debug?: boolean | string;
10
+ folder?: string;
11
+ meta?: Record<string, any>;
12
+ outprefix?: string;
13
+ strategy?: string;
14
+ };
15
+ declare const ModelShape: {
16
+ <V>(root?: V | undefined, ctx?: import("gubu").Context): V & {
17
+ name: string;
18
+ def: string;
19
+ main: {
20
+ sdk: {};
21
+ def: {};
22
+ api: {
23
+ guide: {};
24
+ };
25
+ };
26
+ };
27
+ valid: <V>(root?: V | undefined, ctx?: import("gubu").Context) => root is V & {
28
+ name: StringConstructor;
29
+ def: StringConstructor;
30
+ main: {
31
+ sdk: {};
32
+ def: {};
33
+ api: {
34
+ guide: {};
35
+ };
36
+ };
37
+ };
38
+ match(root?: any, ctx?: import("gubu").Context): boolean;
39
+ error(root?: any, ctx?: import("gubu").Context): {
40
+ gubu: boolean;
41
+ code: string;
42
+ gname: string;
43
+ props: ({
44
+ path: string;
45
+ type: string;
46
+ value: any;
47
+ }[]);
48
+ desc: () => ({
49
+ name: string;
50
+ code: string;
51
+ err: {
52
+ key: string;
53
+ type: string;
54
+ node: import("gubu").Node<any>;
55
+ value: any;
56
+ path: string;
57
+ why: string;
58
+ check: string;
59
+ args: Record<string, any>;
60
+ mark: number;
61
+ text: string;
62
+ use: any;
63
+ }[];
64
+ ctx: any;
65
+ });
66
+ toJSON(): /*elided*/ any & {
67
+ err: any;
68
+ name: string;
69
+ message: string;
70
+ };
71
+ name: string;
72
+ message: string;
73
+ stack?: string;
74
+ }[];
75
+ spec(): any;
76
+ node(): import("gubu").Node<{
77
+ name: StringConstructor;
78
+ def: StringConstructor;
79
+ main: {
80
+ sdk: {};
81
+ def: {};
82
+ api: {
83
+ guide: {};
84
+ };
85
+ };
86
+ }>;
87
+ stringify(...rest: any[]): string;
88
+ jsonify(): any;
89
+ toString(this: any): string;
90
+ gubu: {
91
+ gubu$: symbol;
92
+ v$: string;
93
+ };
94
+ };
95
+ declare const OpenModelShape: {
96
+ <V>(root?: V | undefined, ctx?: import("gubu").Context): V & {
97
+ valid: {};
98
+ match: {};
99
+ error: {};
100
+ spec: {};
101
+ node: {};
102
+ stringify: {};
103
+ jsonify: {};
104
+ toString: {};
105
+ gubu: {
106
+ gubu$: symbol;
107
+ v$: string;
108
+ };
109
+ };
110
+ valid: <V>(root?: V | undefined, ctx?: import("gubu").Context) => root is V & {
111
+ <V_1>(root?: V_1 | undefined, ctx?: import("gubu").Context): V_1 & {
112
+ name: string;
113
+ def: string;
114
+ main: {
115
+ sdk: {};
116
+ def: {};
117
+ api: {
118
+ guide: {};
119
+ };
120
+ };
121
+ };
122
+ valid: <V_1>(root?: V_1 | undefined, ctx?: import("gubu").Context) => root is V_1 & {
123
+ name: StringConstructor;
124
+ def: StringConstructor;
125
+ main: {
126
+ sdk: {};
127
+ def: {};
128
+ api: {
129
+ guide: {};
130
+ };
131
+ };
132
+ };
133
+ match(root?: any, ctx?: import("gubu").Context): boolean;
134
+ error(root?: any, ctx?: import("gubu").Context): {
135
+ gubu: boolean;
136
+ code: string;
137
+ gname: string;
138
+ props: ({
139
+ path: string;
140
+ type: string;
141
+ value: any;
142
+ }[]);
143
+ desc: () => ({
144
+ name: string;
145
+ code: string;
146
+ err: {
147
+ key: string;
148
+ type: string;
149
+ node: import("gubu").Node<any>;
150
+ value: any;
151
+ path: string;
152
+ why: string;
153
+ check: string;
154
+ args: Record<string, any>;
155
+ mark: number;
156
+ text: string;
157
+ use: any;
158
+ }[];
159
+ ctx: any;
160
+ });
161
+ toJSON(): /*elided*/ any & {
162
+ err: any;
163
+ name: string;
164
+ message: string;
165
+ };
166
+ name: string;
167
+ message: string;
168
+ stack?: string;
169
+ }[];
170
+ spec(): any;
171
+ node(): import("gubu").Node<{
172
+ name: StringConstructor;
173
+ def: StringConstructor;
174
+ main: {
175
+ sdk: {};
176
+ def: {};
177
+ api: {
178
+ guide: {};
179
+ };
180
+ };
181
+ }>;
182
+ stringify(...rest: any[]): string;
183
+ jsonify(): any;
184
+ toString(this: any): string;
185
+ gubu: {
186
+ gubu$: symbol;
187
+ v$: string;
188
+ };
189
+ };
190
+ match(root?: any, ctx?: import("gubu").Context): boolean;
191
+ error(root?: any, ctx?: import("gubu").Context): {
192
+ gubu: boolean;
193
+ code: string;
194
+ gname: string;
195
+ props: ({
196
+ path: string;
197
+ type: string;
198
+ value: any;
199
+ }[]);
200
+ desc: () => ({
201
+ name: string;
202
+ code: string;
203
+ err: {
204
+ key: string;
205
+ type: string;
206
+ node: import("gubu").Node<any>;
207
+ value: any;
208
+ path: string;
209
+ why: string;
210
+ check: string;
211
+ args: Record<string, any>;
212
+ mark: number;
213
+ text: string;
214
+ use: any;
215
+ }[];
216
+ ctx: any;
217
+ });
218
+ toJSON(): /*elided*/ any & {
219
+ err: any;
220
+ name: string;
221
+ message: string;
222
+ };
223
+ name: string;
224
+ message: string;
225
+ stack?: string;
226
+ }[];
227
+ spec(): any;
228
+ node(): import("gubu").Node<{
229
+ <V>(root?: V | undefined, ctx?: import("gubu").Context): V & {
230
+ name: string;
231
+ def: string;
232
+ main: {
233
+ sdk: {};
234
+ def: {};
235
+ api: {
236
+ guide: {};
237
+ };
238
+ };
239
+ };
240
+ valid: <V>(root?: V | undefined, ctx?: import("gubu").Context) => root is V & {
241
+ name: StringConstructor;
242
+ def: StringConstructor;
243
+ main: {
244
+ sdk: {};
245
+ def: {};
246
+ api: {
247
+ guide: {};
248
+ };
249
+ };
250
+ };
251
+ match(root?: any, ctx?: import("gubu").Context): boolean;
252
+ error(root?: any, ctx?: import("gubu").Context): {
253
+ gubu: boolean;
254
+ code: string;
255
+ gname: string;
256
+ props: ({
257
+ path: string;
258
+ type: string;
259
+ value: any;
260
+ }[]);
261
+ desc: () => ({
262
+ name: string;
263
+ code: string;
264
+ err: {
265
+ key: string;
266
+ type: string;
267
+ node: import("gubu").Node<any>;
268
+ value: any;
269
+ path: string;
270
+ why: string;
271
+ check: string;
272
+ args: Record<string, any>;
273
+ mark: number;
274
+ text: string;
275
+ use: any;
276
+ }[];
277
+ ctx: any;
278
+ });
279
+ toJSON(): /*elided*/ any & {
280
+ err: any;
281
+ name: string;
282
+ message: string;
283
+ };
284
+ name: string;
285
+ message: string;
286
+ stack?: string;
287
+ }[];
288
+ spec(): any;
289
+ node(): import("gubu").Node<{
290
+ name: StringConstructor;
291
+ def: StringConstructor;
292
+ main: {
293
+ sdk: {};
294
+ def: {};
295
+ api: {
296
+ guide: {};
297
+ };
298
+ };
299
+ }>;
300
+ stringify(...rest: any[]): string;
301
+ jsonify(): any;
302
+ toString(this: any): string;
303
+ gubu: {
304
+ gubu$: symbol;
305
+ v$: string;
306
+ };
307
+ }>;
308
+ stringify(...rest: any[]): string;
309
+ jsonify(): any;
310
+ toString(this: any): string;
311
+ gubu: {
312
+ gubu$: symbol;
313
+ v$: string;
314
+ };
315
+ };
316
+ type Model = ReturnType<typeof ModelShape>;
317
+ declare const BuildShape: {
318
+ <V>(root?: V | undefined, ctx?: import("gubu").Context): V & {
319
+ spec: {
320
+ base: string;
321
+ path: string;
322
+ debug: string;
323
+ use: {};
324
+ res: never[];
325
+ require: string;
326
+ log: {};
327
+ fs: any;
328
+ watch: {
329
+ mod: boolean;
330
+ add: boolean;
331
+ rem: boolean;
332
+ };
333
+ };
334
+ };
335
+ valid: <V>(root?: V | undefined, ctx?: import("gubu").Context) => root is V & {
336
+ spec: {
337
+ base: string;
338
+ path: string;
339
+ debug: string;
340
+ use: {};
341
+ res: never[];
342
+ require: string;
343
+ log: {};
344
+ fs: import("gubu").Node<unknown>;
345
+ watch: {
346
+ mod: boolean;
347
+ add: boolean;
348
+ rem: boolean;
349
+ };
350
+ };
351
+ };
352
+ match(root?: any, ctx?: import("gubu").Context): boolean;
353
+ error(root?: any, ctx?: import("gubu").Context): {
354
+ gubu: boolean;
355
+ code: string;
356
+ gname: string;
357
+ props: ({
358
+ path: string;
359
+ type: string;
360
+ value: any;
361
+ }[]);
362
+ desc: () => ({
363
+ name: string;
364
+ code: string;
365
+ err: {
366
+ key: string;
367
+ type: string;
368
+ node: import("gubu").Node<any>;
369
+ value: any;
370
+ path: string;
371
+ why: string;
372
+ check: string;
373
+ args: Record<string, any>;
374
+ mark: number;
375
+ text: string;
376
+ use: any;
377
+ }[];
378
+ ctx: any;
379
+ });
380
+ toJSON(): /*elided*/ any & {
381
+ err: any;
382
+ name: string;
383
+ message: string;
384
+ };
385
+ name: string;
386
+ message: string;
387
+ stack?: string;
388
+ }[];
389
+ spec(): any;
390
+ node(): import("gubu").Node<{
391
+ spec: {
392
+ base: string;
393
+ path: string;
394
+ debug: string;
395
+ use: {};
396
+ res: never[];
397
+ require: string;
398
+ log: {};
399
+ fs: import("gubu").Node<unknown>;
400
+ watch: {
401
+ mod: boolean;
402
+ add: boolean;
403
+ rem: boolean;
404
+ };
405
+ };
406
+ }>;
407
+ stringify(...rest: any[]): string;
408
+ jsonify(): any;
409
+ toString(this: any): string;
410
+ gubu: {
411
+ gubu$: symbol;
412
+ v$: string;
413
+ };
414
+ };
415
+ declare const OpenBuildShape: {
416
+ <V>(root?: V | undefined, ctx?: import("gubu").Context): V & {
417
+ valid: {};
418
+ match: {};
419
+ error: {};
420
+ spec: {};
421
+ node: {};
422
+ stringify: {};
423
+ jsonify: {};
424
+ toString: {};
425
+ gubu: {
426
+ gubu$: symbol;
427
+ v$: string;
428
+ };
429
+ };
430
+ valid: <V>(root?: V | undefined, ctx?: import("gubu").Context) => root is V & {
431
+ <V_1>(root?: V_1 | undefined, ctx?: import("gubu").Context): V_1 & {
432
+ spec: {
433
+ base: string;
434
+ path: string;
435
+ debug: string;
436
+ use: {};
437
+ res: never[];
438
+ require: string;
439
+ log: {};
440
+ fs: any;
441
+ watch: {
442
+ mod: boolean;
443
+ add: boolean;
444
+ rem: boolean;
445
+ };
446
+ };
447
+ };
448
+ valid: <V_1>(root?: V_1 | undefined, ctx?: import("gubu").Context) => root is V_1 & {
449
+ spec: {
450
+ base: string;
451
+ path: string;
452
+ debug: string;
453
+ use: {};
454
+ res: never[];
455
+ require: string;
456
+ log: {};
457
+ fs: import("gubu").Node<unknown>;
458
+ watch: {
459
+ mod: boolean;
460
+ add: boolean;
461
+ rem: boolean;
462
+ };
463
+ };
464
+ };
465
+ match(root?: any, ctx?: import("gubu").Context): boolean;
466
+ error(root?: any, ctx?: import("gubu").Context): {
467
+ gubu: boolean;
468
+ code: string;
469
+ gname: string;
470
+ props: ({
471
+ path: string;
472
+ type: string;
473
+ value: any;
474
+ }[]);
475
+ desc: () => ({
476
+ name: string;
477
+ code: string;
478
+ err: {
479
+ key: string;
480
+ type: string;
481
+ node: import("gubu").Node<any>;
482
+ value: any;
483
+ path: string;
484
+ why: string;
485
+ check: string;
486
+ args: Record<string, any>;
487
+ mark: number;
488
+ text: string;
489
+ use: any;
490
+ }[];
491
+ ctx: any;
492
+ });
493
+ toJSON(): /*elided*/ any & {
494
+ err: any;
495
+ name: string;
496
+ message: string;
497
+ };
498
+ name: string;
499
+ message: string;
500
+ stack?: string;
501
+ }[];
502
+ spec(): any;
503
+ node(): import("gubu").Node<{
504
+ spec: {
505
+ base: string;
506
+ path: string;
507
+ debug: string;
508
+ use: {};
509
+ res: never[];
510
+ require: string;
511
+ log: {};
512
+ fs: import("gubu").Node<unknown>;
513
+ watch: {
514
+ mod: boolean;
515
+ add: boolean;
516
+ rem: boolean;
517
+ };
518
+ };
519
+ }>;
520
+ stringify(...rest: any[]): string;
521
+ jsonify(): any;
522
+ toString(this: any): string;
523
+ gubu: {
524
+ gubu$: symbol;
525
+ v$: string;
526
+ };
527
+ };
528
+ match(root?: any, ctx?: import("gubu").Context): boolean;
529
+ error(root?: any, ctx?: import("gubu").Context): {
530
+ gubu: boolean;
531
+ code: string;
532
+ gname: string;
533
+ props: ({
534
+ path: string;
535
+ type: string;
536
+ value: any;
537
+ }[]);
538
+ desc: () => ({
539
+ name: string;
540
+ code: string;
541
+ err: {
542
+ key: string;
543
+ type: string;
544
+ node: import("gubu").Node<any>;
545
+ value: any;
546
+ path: string;
547
+ why: string;
548
+ check: string;
549
+ args: Record<string, any>;
550
+ mark: number;
551
+ text: string;
552
+ use: any;
553
+ }[];
554
+ ctx: any;
555
+ });
556
+ toJSON(): /*elided*/ any & {
557
+ err: any;
558
+ name: string;
559
+ message: string;
560
+ };
561
+ name: string;
562
+ message: string;
563
+ stack?: string;
564
+ }[];
565
+ spec(): any;
566
+ node(): import("gubu").Node<{
567
+ <V>(root?: V | undefined, ctx?: import("gubu").Context): V & {
568
+ spec: {
569
+ base: string;
570
+ path: string;
571
+ debug: string;
572
+ use: {};
573
+ res: never[];
574
+ require: string;
575
+ log: {};
576
+ fs: any;
577
+ watch: {
578
+ mod: boolean;
579
+ add: boolean;
580
+ rem: boolean;
581
+ };
582
+ };
583
+ };
584
+ valid: <V>(root?: V | undefined, ctx?: import("gubu").Context) => root is V & {
585
+ spec: {
586
+ base: string;
587
+ path: string;
588
+ debug: string;
589
+ use: {};
590
+ res: never[];
591
+ require: string;
592
+ log: {};
593
+ fs: import("gubu").Node<unknown>;
594
+ watch: {
595
+ mod: boolean;
596
+ add: boolean;
597
+ rem: boolean;
598
+ };
599
+ };
600
+ };
601
+ match(root?: any, ctx?: import("gubu").Context): boolean;
602
+ error(root?: any, ctx?: import("gubu").Context): {
603
+ gubu: boolean;
604
+ code: string;
605
+ gname: string;
606
+ props: ({
607
+ path: string;
608
+ type: string;
609
+ value: any;
610
+ }[]);
611
+ desc: () => ({
612
+ name: string;
613
+ code: string;
614
+ err: {
615
+ key: string;
616
+ type: string;
617
+ node: import("gubu").Node<any>;
618
+ value: any;
619
+ path: string;
620
+ why: string;
621
+ check: string;
622
+ args: Record<string, any>;
623
+ mark: number;
624
+ text: string;
625
+ use: any;
626
+ }[];
627
+ ctx: any;
628
+ });
629
+ toJSON(): /*elided*/ any & {
630
+ err: any;
631
+ name: string;
632
+ message: string;
633
+ };
634
+ name: string;
635
+ message: string;
636
+ stack?: string;
637
+ }[];
638
+ spec(): any;
639
+ node(): import("gubu").Node<{
640
+ spec: {
641
+ base: string;
642
+ path: string;
643
+ debug: string;
644
+ use: {};
645
+ res: never[];
646
+ require: string;
647
+ log: {};
648
+ fs: import("gubu").Node<unknown>;
649
+ watch: {
650
+ mod: boolean;
651
+ add: boolean;
652
+ rem: boolean;
653
+ };
654
+ };
655
+ }>;
656
+ stringify(...rest: any[]): string;
657
+ jsonify(): any;
658
+ toString(this: any): string;
659
+ gubu: {
660
+ gubu$: symbol;
661
+ v$: string;
662
+ };
663
+ }>;
664
+ stringify(...rest: any[]): string;
665
+ jsonify(): any;
666
+ toString(this: any): string;
667
+ gubu: {
668
+ gubu$: symbol;
669
+ v$: string;
670
+ };
671
+ };
672
+ type Build = ReturnType<typeof BuildShape>;
673
+ type ApiModel = {
674
+ main: {
675
+ api: {
676
+ entity: Record<string, any>;
677
+ };
678
+ def: Record<string, any>;
679
+ };
680
+ };
681
+ export { OpenModelShape, OpenBuildShape, };
682
+ export type { Log, FsUtil, ApiDefOptions, Model, Build, ApiModel, };
package/dist/types.js ADDED
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /* Copyright (c) 2025 Voxgig, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OpenBuildShape = exports.OpenModelShape = void 0;
5
+ const gubu_1 = require("gubu");
6
+ const ModelShape = (0, gubu_1.Gubu)({
7
+ name: String,
8
+ def: String,
9
+ main: {
10
+ sdk: {},
11
+ def: {},
12
+ api: {
13
+ guide: {}
14
+ },
15
+ }
16
+ });
17
+ const OpenModelShape = (0, gubu_1.Gubu)((0, gubu_1.Open)(ModelShape));
18
+ exports.OpenModelShape = OpenModelShape;
19
+ const BuildShape = (0, gubu_1.Gubu)({
20
+ spec: {
21
+ base: '',
22
+ path: '',
23
+ debug: '',
24
+ use: {},
25
+ res: [],
26
+ require: '',
27
+ log: {},
28
+ fs: (0, gubu_1.Any)(),
29
+ watch: {
30
+ mod: true,
31
+ add: true,
32
+ rem: true,
33
+ }
34
+ }
35
+ });
36
+ const OpenBuildShape = (0, gubu_1.Gubu)((0, gubu_1.Open)(BuildShape));
37
+ exports.OpenBuildShape = OpenBuildShape;
38
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;AAK5C,+BAAsC;AAmBtC,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC;IACtB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,GAAG,EAAE;YACH,KAAK,EAAE,EAAE;SACV;KACF;CACF,CAAC,CAAA;AACF,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,UAAU,CAAC,CAAC,CAAA;AAuC3C,wCAAc;AAlChB,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,EAAE;QACP,EAAE,EAAE,IAAA,UAAG,GAAE;QACT,KAAK,EAAE;YACL,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;SACV;KACF;CACF,CAAC,CAAA;AACF,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,UAAU,CAAC,CAAC,CAAA;AAkB3C,wCAAc"}