pareto 0.76.3 → 0.76.5

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 (67) hide show
  1. package/dist/generated/generic/resolve.d.ts +1 -1
  2. package/dist/generated/generic/resolve.js +7 -5
  3. package/dist/generated/interface/schemas/unmarshall_errors/migration_boilerplate.d.ts +90 -0
  4. package/dist/generated/interface/schemas/unmarshall_errors/migration_boilerplate.js +3 -0
  5. package/dist/generated/interface/schemas/unmarshall_errors/unconstrained.d.ts +547 -0
  6. package/dist/generated/interface/schemas/unmarshall_errors/unconstrained.js +3 -0
  7. package/dist/generated/interface/schemas/unmarshall_result/migration_boilerplate.d.ts +1 -0
  8. package/dist/generated/interface/schemas/unmarshall_result/migration_boilerplate.js +7 -0
  9. package/dist/generated/interface/schemas/unmarshall_result/unconstrained.d.ts +1 -0
  10. package/dist/generated/interface/schemas/unmarshall_result/unconstrained.js +7 -0
  11. package/dist/resolvers/module.d.ts +4 -0
  12. package/dist/resolvers/module.js +132 -0
  13. package/dist/resolvers/schema.d.ts +23 -0
  14. package/dist/resolvers/schema.js +1890 -0
  15. package/dist/temp_unmashall_result_types.d.ts +77 -0
  16. package/dist/temp_unmashall_result_types.js +3 -0
  17. package/dist/transformations/module/exupery_implementation.d.ts +4 -0
  18. package/dist/transformations/module/exupery_implementation.js +42 -0
  19. package/dist/transformations/module/exupery_interface.d.ts +5 -0
  20. package/dist/transformations/module/exupery_interface.js +150 -0
  21. package/dist/transformations/module/pareto_implementation.d.ts +4 -0
  22. package/dist/transformations/module/pareto_implementation.js +42 -0
  23. package/dist/transformations/module/pareto_interface.d.ts +5 -0
  24. package/dist/transformations/module/pareto_interface.js +150 -0
  25. package/dist/transformations/schema/documentation.d.ts +5 -0
  26. package/dist/transformations/schema/documentation.js +72 -0
  27. package/dist/transformations/schema/exupery_implementation/main.d.ts +4 -0
  28. package/dist/transformations/schema/exupery_implementation/main.js +63 -0
  29. package/dist/transformations/schema/exupery_implementation/migration_boilerplate.d.ts +14 -0
  30. package/dist/transformations/schema/exupery_implementation/migration_boilerplate.js +113 -0
  31. package/dist/transformations/schema/exupery_implementation/resolver.d.ts +24 -0
  32. package/dist/transformations/schema/exupery_implementation/resolver.js +299 -0
  33. package/dist/transformations/schema/exupery_interface/main.d.ts +4 -0
  34. package/dist/transformations/schema/exupery_interface/main.js +79 -0
  35. package/dist/transformations/schema/exupery_interface/migration_boilerplate.d.ts +7 -0
  36. package/dist/transformations/schema/exupery_interface/migration_boilerplate.js +51 -0
  37. package/dist/transformations/schema/exupery_interface/resolver.d.ts +12 -0
  38. package/dist/transformations/schema/exupery_interface/resolver.js +115 -0
  39. package/dist/transformations/schema/exupery_interface/types.d.ts +12 -0
  40. package/dist/transformations/schema/exupery_interface/types.js +211 -0
  41. package/dist/transformations/schema/graphviz.d.ts +8 -0
  42. package/dist/transformations/schema/graphviz.js +103 -0
  43. package/dist/transformations/schema/lionweb.d.ts +14 -0
  44. package/dist/transformations/schema/lionweb.js +226 -0
  45. package/dist/transformations/schema/pareto_implementation/main.d.ts +4 -0
  46. package/dist/transformations/schema/pareto_implementation/main.js +63 -0
  47. package/dist/transformations/schema/pareto_implementation/migration_boilerplate.d.ts +14 -0
  48. package/dist/transformations/schema/pareto_implementation/migration_boilerplate.js +113 -0
  49. package/dist/transformations/schema/pareto_implementation/resolver.d.ts +24 -0
  50. package/dist/transformations/schema/pareto_implementation/resolver.js +299 -0
  51. package/dist/transformations/schema/pareto_interface/main.d.ts +4 -0
  52. package/dist/transformations/schema/pareto_interface/main.js +79 -0
  53. package/dist/transformations/schema/pareto_interface/migration_boilerplate.d.ts +7 -0
  54. package/dist/transformations/schema/pareto_interface/migration_boilerplate.js +51 -0
  55. package/dist/transformations/schema/pareto_interface/resolver.d.ts +12 -0
  56. package/dist/transformations/schema/pareto_interface/resolver.js +115 -0
  57. package/dist/transformations/schema/pareto_interface/types.d.ts +12 -0
  58. package/dist/transformations/schema/pareto_interface/types.js +211 -0
  59. package/dist/transformations/schema/railroad_diagram.d.ts +7 -0
  60. package/dist/transformations/schema/railroad_diagram.js +79 -0
  61. package/dist/transformations/unmarshall/collect_errors.d.ts +3 -37
  62. package/dist/transformations/unmarshall/collect_errors.js +1 -1
  63. package/dist/transformations/unmarshall_result/unmarshall_errors.d.ts +4 -0
  64. package/dist/transformations/unmarshall_result/unmarshall_errors.js +185 -0
  65. package/dist/uptransformers/unmarshall_result/astn_ast.d.ts +13 -0
  66. package/dist/uptransformers/unmarshall_result/astn_ast.js +282 -0
  67. package/package.json +1 -1
@@ -0,0 +1,1890 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.r_Guaranteed_Value_Selection = exports.r_Possibly_Optional = exports.r_Possible_Value_Selection = exports.r_Relative_Value_Selection = exports.r_Node_Resolver = exports.r_Property_Constraints = exports.r_Constraint = exports.r_Option_Constraints = exports.r_Type_Part_Reference = exports.r_Type_Reference = exports.r_Type_Parameters = exports.r_Type_Node = exports.r_Text_Type = exports.r_Schemas = exports.r_Signatures = exports.r_Signature = exports.r_Globals = exports.r_Signature_Parameters = exports.r_Number_Type = exports.r_Lookup_Selection = exports.r_Imports = void 0;
27
+ const pa = __importStar(require("exupery-core-alg"));
28
+ const _i_generic = __importStar(require("../generated/generic/resolve"));
29
+ const r_Imports = ($, $p) => pa.block(() => {
30
+ const l2s = $p['location 2 string'];
31
+ const params = $p['parameters'];
32
+ return pa.cc($, ($) => _i_generic.resolve_dictionary($, {
33
+ 'location 2 string': l2s,
34
+ 'map': ($, $p) => pa.cc($['value'], ($) => pa.cc($, ($) => {
35
+ const p_schema_set_child = pa.cc($['schema set child'], ($) => _i_generic.get_entry_from_stack(params.lookups['sibling schemas'], {
36
+ 'location 2 string': l2s,
37
+ 'reference': $,
38
+ }));
39
+ const p_schema = pa.cc($['schema'], ($) => pa.cc(p_schema_set_child.entry, ($) => {
40
+ switch ($[0]) {
41
+ case 'schema': return pa.ss($, ($) => $);
42
+ case 'set': return pa.ss($, ($) => pa.panic("HELP!!!"));
43
+ default: return pa.au($[0]);
44
+ }
45
+ }));
46
+ return {
47
+ 'schema set child': p_schema_set_child,
48
+ 'schema': p_schema,
49
+ };
50
+ })),
51
+ }));
52
+ });
53
+ exports.r_Imports = r_Imports;
54
+ const r_Lookup_Selection = ($, $p) => pa.block(() => {
55
+ const l2s = $p['location 2 string'];
56
+ const params = $p['parameters'];
57
+ return pa.block(() => {
58
+ const loc = $.type.location;
59
+ const p_type = pa.cc($['type'], ($) => pa.cc($['state group'], ($) => {
60
+ switch ($[0]) {
61
+ case 'dictionary': return pa.ss($, ($) => {
62
+ const p_selection = (0, exports.r_Guaranteed_Value_Selection)($.selection, {
63
+ 'location 2 string': l2s,
64
+ 'parameters': $p.parameters,
65
+ });
66
+ const p_selected_dictionary = p_selection['resulting node'][0] !== 'dictionary' // component constraint (selection)
67
+ ? pa.panic("not a 'dictionary' but a '", p_selection['resulting node'][0], "' @ ", $p['location 2 string'](loc))
68
+ : p_selection['resulting node'][1];
69
+ return ['dictionary', {
70
+ 'selection': p_selection,
71
+ 'selected dictionary': p_selected_dictionary,
72
+ }];
73
+ });
74
+ case 'not circular dependent siblings': return pa.ss($, ($) => ['not circular dependent siblings', $p.parameters.values['current dictionary'].transform(($) => $, () => pa.panic("not in a dictionary @ ", $p['location 2 string'](loc)))]);
75
+ case 'parameter': return pa.ss($, ($) => ['parameter', _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values.signature['resolved parameters'].lookups, null), {
76
+ 'reference': $,
77
+ 'location 2 string': $p['location 2 string']
78
+ })]);
79
+ case 'possibly circular dependent siblings': return pa.ss($, ($) => ['possibly circular dependent siblings', $p.parameters.values['current dictionary'].transform(($) => $, () => pa.panic("SFSFSD"))]);
80
+ default: return pa.au($[0]);
81
+ }
82
+ }));
83
+ const p_resulting_dictionary = pa.cc(p_type, ($) => {
84
+ switch ($[0]) {
85
+ case 'dictionary': return pa.ss($, ($) => $['selected dictionary']);
86
+ case 'not circular dependent siblings': return pa.ss($, ($) => $);
87
+ case 'parameter': return pa.ss($, ($) => $.entry.dictionary);
88
+ case 'possibly circular dependent siblings': return pa.ss($, ($) => $);
89
+ default: return pa.au($[0]);
90
+ }
91
+ });
92
+ return ({
93
+ 'type': p_type,
94
+ 'resulting dictionary': p_resulting_dictionary,
95
+ });
96
+ });
97
+ });
98
+ exports.r_Lookup_Selection = r_Lookup_Selection;
99
+ const r_Number_Type = ($, $p) => {
100
+ return {
101
+ 'precision': pa.cc($.precision['state group'], ($) => {
102
+ switch ($[0]) {
103
+ case 'exact': return pa.ss($, ($) => {
104
+ return ['exact', {
105
+ 'type': pa.cc($.type['state group'], ($) => {
106
+ switch ($[0]) {
107
+ case 'integer': return pa.ss($, ($) => ['integer', null]);
108
+ case 'natural': return pa.ss($, ($) => ['natural', null]);
109
+ case 'positive natural': return pa.ss($, ($) => ['positive natural', null]);
110
+ default: return pa.au($[0]);
111
+ }
112
+ }),
113
+ 'decimal separator offset': pa.cc($['decimal separator offset'], ($) => {
114
+ return $;
115
+ })
116
+ }];
117
+ });
118
+ case 'approximation': return pa.ss($, ($) => ['approximation', {
119
+ 'significant digits': $['significant digits']
120
+ }]);
121
+ default: return pa.au($[0]);
122
+ }
123
+ }),
124
+ };
125
+ };
126
+ exports.r_Number_Type = r_Number_Type;
127
+ const r_Signature_Parameters = ($, $p) => {
128
+ const p_parameters_values = _i_generic.resolve_dictionary($.values, {
129
+ 'location 2 string': $p['location 2 string'],
130
+ 'map': ($, $l) => {
131
+ const p_schema_type = (0, exports.r_Type_Reference)($.value['data type'], {
132
+ 'location 2 string': $p['location 2 string'],
133
+ 'parameters': {
134
+ 'lookups': {
135
+ 'types': _i_generic.dictionary_to_lookup($p.parameters.values.types.dictionary, null),
136
+ },
137
+ 'values': {
138
+ 'imports': pa.not_set(),
139
+ },
140
+ },
141
+ });
142
+ const p_presence = $.value.presence['state group'];
143
+ return {
144
+ 'data type': p_schema_type,
145
+ 'presence': p_presence,
146
+ };
147
+ },
148
+ });
149
+ const lookups_loc = $.lookups.location;
150
+ const p_parameters_lookups = _i_generic.resolve_dictionary($.lookups, {
151
+ 'location 2 string': $p['location 2 string'],
152
+ 'map': ($, $l) => {
153
+ const p_referent = (0, exports.r_Type_Reference)($.value.referent, {
154
+ 'location 2 string': $p['location 2 string'],
155
+ 'parameters': {
156
+ 'lookups': {
157
+ 'types': _i_generic.dictionary_to_lookup($p.parameters.values.types.dictionary, null),
158
+ },
159
+ 'values': {
160
+ 'imports': pa.not_set(),
161
+ },
162
+ }
163
+ });
164
+ const p_type = pa.cc($.value.type['state group'], ($) => {
165
+ switch ($[0]) {
166
+ case 'acyclic': return pa.ss($, ($) => ['acyclic', null]);
167
+ case 'cyclic': return pa.ss($, ($) => ['cyclic', null]);
168
+ case 'stack': return pa.ss($, ($) => ['stack', $]);
169
+ default: return pa.au($[0]);
170
+ }
171
+ });
172
+ const p_presence = $.value.presence['state group'];
173
+ return {
174
+ 'referent': p_referent,
175
+ 'dictionary': pa.cc(p_referent['resulting node'], ($) => {
176
+ switch ($[0]) {
177
+ case 'dictionary': return pa.ss($, ($) => $);
178
+ default: return pa.panic(`not a 'dictionary' but a '${$[0]}' @ ${$p['location 2 string'](lookups_loc)}`);
179
+ }
180
+ }),
181
+ 'type': p_type,
182
+ 'presence': p_presence,
183
+ };
184
+ },
185
+ });
186
+ return {
187
+ 'lookups': p_parameters_lookups,
188
+ 'values': p_parameters_values,
189
+ };
190
+ };
191
+ exports.r_Signature_Parameters = r_Signature_Parameters;
192
+ const r_Globals = ($, $p) => {
193
+ const p_number_types = _i_generic.resolve_dictionary($['number types'], {
194
+ 'location 2 string': $p['location 2 string'],
195
+ 'map': ($, $l) => (0, exports.r_Number_Type)($.value, {
196
+ 'location 2 string': $p['location 2 string'],
197
+ 'parameters': {
198
+ 'lookups': null,
199
+ 'values': null,
200
+ },
201
+ }),
202
+ });
203
+ const p_text_types = _i_generic.resolve_dictionary($['text types'], {
204
+ 'location 2 string': $p['location 2 string'],
205
+ 'map': ($, $l) => (0, exports.r_Text_Type)($.value, {
206
+ 'location 2 string': $p['location 2 string'],
207
+ 'parameters': {
208
+ 'lookups': null,
209
+ 'values': null,
210
+ },
211
+ }),
212
+ });
213
+ return {
214
+ 'number types': p_number_types,
215
+ 'text types': p_text_types,
216
+ 'complexity': $['complexity']['state group'],
217
+ };
218
+ };
219
+ exports.r_Globals = r_Globals;
220
+ const r_Signature = ($, $p) => {
221
+ const p_parameters = pa.cc($.parameters['state group'], ($) => {
222
+ switch ($[0]) {
223
+ case 'local': return pa.ss($, ($) => ['local', (0, exports.r_Signature_Parameters)($, {
224
+ 'location 2 string': $p['location 2 string'],
225
+ 'parameters': {
226
+ 'lookups': null,
227
+ 'values': {
228
+ 'imports': $p.parameters.values.imports,
229
+ 'types': $p.parameters.values.types,
230
+ },
231
+ }
232
+ })]);
233
+ case 'same as': return pa.ss($, ($) => ['same as', _i_generic.get_entry($p.parameters.lookups['sibling signatures'], {
234
+ 'reference': {
235
+ 'key': $.key,
236
+ 'location': $.location
237
+ },
238
+ 'location 2 string': $p['location 2 string'],
239
+ })]);
240
+ default: return pa.au($[0]);
241
+ }
242
+ });
243
+ return {
244
+ 'type': $p.parameters.values.type,
245
+ 'parameters': p_parameters,
246
+ 'resolved parameters': pa.cc(p_parameters, ($) => {
247
+ switch ($[0]) {
248
+ case 'local': return pa.ss($, ($) => $);
249
+ case 'same as': return pa.ss($, ($) => $.entry['resolved parameters']);
250
+ default: return pa.au($[0]);
251
+ }
252
+ })
253
+ };
254
+ };
255
+ exports.r_Signature = r_Signature;
256
+ const r_Signatures = ($, $p) => {
257
+ return _i_generic.resolve_dense_ordered_dictionary($, {
258
+ 'location 2 string': $p['location 2 string'],
259
+ 'map': ($, $l) => {
260
+ const p_linked_entry = _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values.types.dictionary, null), {
261
+ 'reference': {
262
+ 'key': $.key,
263
+ 'location': $.location
264
+ },
265
+ 'location 2 string': $p['location 2 string'],
266
+ });
267
+ return (0, exports.r_Signature)($.value, {
268
+ 'location 2 string': $p['location 2 string'],
269
+ 'parameters': {
270
+ 'lookups': {
271
+ 'sibling signatures': $l['not circular dependent siblings'],
272
+ },
273
+ 'values': {
274
+ 'imports': $p.parameters.values.imports,
275
+ 'types': $p.parameters.values.types,
276
+ 'type': p_linked_entry.entry,
277
+ },
278
+ }
279
+ });
280
+ },
281
+ 'denseness benchmark': $p.parameters.values.types.dictionary,
282
+ });
283
+ };
284
+ exports.r_Signatures = r_Signatures;
285
+ const r_Schemas = ($, $p) => pa.block(() => {
286
+ const l2s = $p['location 2 string'];
287
+ const params = $p['parameters'];
288
+ return _i_generic.resolve_ordered_dictionary($, {
289
+ 'location 2 string': l2s,
290
+ 'map': ($, $p) => pa.cc($['value'], ($) => pa.cc($['state group'], ($) => {
291
+ switch ($[0]) {
292
+ case 'schema': return pa.ss($, ($) => ['schema', pa.block(() => {
293
+ const p_imports = (0, exports.r_Imports)($.imports, {
294
+ 'location 2 string': l2s,
295
+ 'parameters': {
296
+ 'lookups': {
297
+ 'sibling schemas': _i_generic.push_stack(params.lookups['sibling schemas'], {
298
+ 'element': $p['not circular dependent siblings']
299
+ })
300
+ },
301
+ 'values': null,
302
+ }
303
+ });
304
+ const p_globals = pa.cc($['globals'], ($) => (0, exports.r_Globals)($, {
305
+ 'location 2 string': l2s,
306
+ 'parameters': {
307
+ 'lookups': null,
308
+ 'values': null,
309
+ }
310
+ }));
311
+ const p_types = _i_generic.resolve_ordered_dictionary($.types, {
312
+ 'location 2 string': l2s,
313
+ 'map': ($, $l) => {
314
+ const p_type_parameters = _i_generic.resolve_dictionary($.value['type parameters'], {
315
+ 'location 2 string': l2s,
316
+ 'map': ($, $l) => {
317
+ return $.value;
318
+ },
319
+ });
320
+ const p_type = (0, exports.r_Type_Node)($.value.node, {
321
+ 'parameters': {
322
+ 'lookups': {
323
+ 'noncircular sibling types': $l['not circular dependent siblings'],
324
+ 'possibly circular dependent sibling types': $l['possibly circular dependent siblings'],
325
+ },
326
+ 'values': {
327
+ 'imports': pa.set(p_imports),
328
+ 'globals': pa.set(p_globals),
329
+ 'type parameters': p_type_parameters,
330
+ },
331
+ },
332
+ 'location 2 string': l2s,
333
+ });
334
+ return {
335
+ 'type parameters': p_type_parameters,
336
+ 'node': p_type,
337
+ };
338
+ },
339
+ });
340
+ const p_complexity = pa.cc($.complexity['state group'], ($) => {
341
+ switch ($[0]) {
342
+ case 'constrained': return pa.ss($, ($) => {
343
+ const p_signatures = pa.cc($.signatures, ($) => {
344
+ const p_types_2 = pa.cc($, ($) => (0, exports.r_Signatures)($.types, {
345
+ 'location 2 string': l2s,
346
+ 'parameters': {
347
+ 'lookups': null,
348
+ 'values': {
349
+ 'imports': p_imports,
350
+ 'types': p_types,
351
+ },
352
+ }
353
+ }));
354
+ return {
355
+ 'types': p_types_2,
356
+ };
357
+ });
358
+ const p_resolvers = _i_generic.resolve_dense_ordered_dictionary($.resolvers, {
359
+ 'location 2 string': l2s,
360
+ 'map': ($, $l) => {
361
+ const key = $.key;
362
+ const p_linked_entry = _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_types.dictionary, null), {
363
+ 'reference': {
364
+ 'key': key,
365
+ 'location': $.location
366
+ },
367
+ 'location 2 string': l2s,
368
+ });
369
+ const p_signature = _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_signatures.types.dictionary, null), {
370
+ 'reference': {
371
+ 'key': key,
372
+ 'location': $.location
373
+ },
374
+ 'location 2 string': l2s,
375
+ });
376
+ const p_type_resolver = (0, exports.r_Node_Resolver)($.value['type resolver'], {
377
+ 'parameters': {
378
+ 'lookups': {
379
+ 'sibling property resolvers': pa.not_set(),
380
+ 'parent sibling property resolvers': pa.not_set(),
381
+ },
382
+ 'values': {
383
+ 'list cursor': pa.not_set(),
384
+ 'linked entry': pa.not_set(),
385
+ 'current dictionary': pa.not_set(),
386
+ 'current ordered dictionary': pa.not_set(),
387
+ 'option constraints': pa.not_set(),
388
+ 'definition': p_linked_entry.entry.node,
389
+ 'signature': p_signature.entry,
390
+ 'types': p_types,
391
+ 'imports': pa.set(p_imports),
392
+ 'signatures': p_signatures.types
393
+ },
394
+ },
395
+ 'location 2 string': l2s,
396
+ });
397
+ return {
398
+ 'signature': p_signature.entry,
399
+ 'type resolver': p_type_resolver,
400
+ };
401
+ },
402
+ 'denseness benchmark': p_signatures.types.dictionary,
403
+ });
404
+ return ['constrained', {
405
+ 'signatures': p_signatures,
406
+ 'resolvers': p_resolvers,
407
+ }];
408
+ });
409
+ case 'unconstrained': return pa.ss($, ($) => ['unconstrained', null]);
410
+ default: return pa.au($[0]);
411
+ }
412
+ });
413
+ return ({
414
+ 'imports': p_imports,
415
+ 'globals': p_globals,
416
+ 'types': p_types,
417
+ 'complexity': p_complexity,
418
+ });
419
+ })]);
420
+ case 'set':
421
+ case 'set': return pa.ss($, ($) => ['set', (0, exports.r_Schemas)($, {
422
+ 'location 2 string': l2s,
423
+ 'parameters': params,
424
+ })]);
425
+ default: return pa.au($[0]);
426
+ }
427
+ })),
428
+ });
429
+ });
430
+ exports.r_Schemas = r_Schemas;
431
+ const r_Text_Type = ($, $p) => {
432
+ return {
433
+ 'type': pa.cc($.type['state group'], ($) => {
434
+ switch ($[0]) {
435
+ case 'single line': return pa.ss($, ($) => ['single line', null]);
436
+ case 'multi line': return pa.ss($, ($) => ['multi line', null]);
437
+ default: return pa.au($[0]);
438
+ }
439
+ }),
440
+ };
441
+ };
442
+ exports.r_Text_Type = r_Text_Type;
443
+ const r_Type_Node = ($, $p) => {
444
+ const loc = $.location;
445
+ return pa.cc($['state group'], ($) => {
446
+ switch ($[0]) {
447
+ case 'boolean': return pa.ss($, ($) => ['boolean', null]);
448
+ case 'number': return pa.ss($, ($) => ['number', pa.cc($['state group'], ($) => {
449
+ switch ($[0]) {
450
+ case 'global': return pa.ss($, ($) => ['global', _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values.globals.transform(($) => $['number types'], () => pa.panic("globals not set")), null), {
451
+ 'reference': $,
452
+ 'location 2 string': $p['location 2 string']
453
+ })]);
454
+ case 'local': return pa.ss($, ($) => ['local', (0, exports.r_Number_Type)($, {
455
+ 'location 2 string': $p['location 2 string'],
456
+ 'parameters': {
457
+ 'lookups': null,
458
+ 'values': null,
459
+ },
460
+ })]);
461
+ default: return pa.au($[0]);
462
+ }
463
+ })]);
464
+ case 'text': return pa.ss($, ($) => ['text', pa.cc($['state group'], ($) => {
465
+ switch ($[0]) {
466
+ case 'global': return pa.ss($, ($) => ['global', _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values.globals.transform(($) => $['text types'], () => pa.panic("globals not set")), null), {
467
+ 'reference': $,
468
+ 'location 2 string': $p['location 2 string']
469
+ })]);
470
+ case 'local': return pa.ss($, ($) => ['local', (0, exports.r_Text_Type)($, {
471
+ 'location 2 string': $p['location 2 string'],
472
+ 'parameters': {
473
+ 'lookups': null,
474
+ 'values': null,
475
+ },
476
+ })]);
477
+ default: return pa.au($[0]);
478
+ }
479
+ })]);
480
+ case 'component': return pa.ss($, ($) => ['component', pa.cc($['state group'], ($) => {
481
+ switch ($[0]) {
482
+ case 'external': return pa.ss($, ($) => {
483
+ const sc_import = $p.parameters.values.imports.transform(($) => $, () => pa.panic("missing"));
484
+ const p_import = _i_generic.get_entry(_i_generic.dictionary_to_lookup(sc_import, null), {
485
+ 'reference': $['import'],
486
+ 'location 2 string': $p['location 2 string']
487
+ });
488
+ return ['external', {
489
+ 'import': p_import,
490
+ 'type': _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_import.entry.schema.types.dictionary, null), {
491
+ 'reference': $['type'],
492
+ 'location 2 string': $p['location 2 string']
493
+ })
494
+ }];
495
+ });
496
+ case 'internal': return pa.ss($, ($) => ['internal', _i_generic.get_entry($p.parameters.lookups['noncircular sibling types'], {
497
+ 'reference': $,
498
+ 'location 2 string': $p['location 2 string']
499
+ })]);
500
+ case 'internal cyclic': return pa.ss($, ($) => ['internal cyclic', _i_generic.get_possibly_circular_dependent_sibling_entry($p.parameters.lookups['possibly circular dependent sibling types'], {
501
+ 'reference': $,
502
+ 'location 2 string': $p['location 2 string']
503
+ })]);
504
+ default: return pa.au($[0]);
505
+ }
506
+ })]);
507
+ case 'dictionary': return pa.ss($, ($) => {
508
+ const p_type = (0, exports.r_Type_Node)($.node, $p);
509
+ return ['dictionary', {
510
+ 'node': p_type,
511
+ 'ordered': $.ordered,
512
+ }];
513
+ });
514
+ case 'group': return pa.ss($, ($) => ['group', _i_generic.resolve_dictionary($, {
515
+ 'location 2 string': $p['location 2 string'],
516
+ 'map': ($, $l) => (0, exports.r_Type_Node)($.value, $p),
517
+ })]);
518
+ case 'identifier value pair': return pa.ss($, ($) => ['identifier value pair', (0, exports.r_Type_Node)($, $p)]);
519
+ case 'list': return pa.ss($, ($) => {
520
+ const p_type = (0, exports.r_Type_Node)($.node, $p);
521
+ return ['list', {
522
+ 'node': p_type,
523
+ }];
524
+ });
525
+ case 'nothing': return pa.ss($, ($) => ['nothing', null]);
526
+ case 'optional': return pa.ss($, ($) => ['optional', (0, exports.r_Type_Node)($, $p)]);
527
+ case 'reference': return pa.ss($, ($) => {
528
+ const loc = $.referent['type location'].location.location;
529
+ $p.parameters.values.globals.transform(($) => {
530
+ if ($.complexity[0] === 'unconstrained') {
531
+ pa.panic(`schema complexity setting is 'unconstrained', so references are not allowed @ ${$p['location 2 string'](loc)}`);
532
+ }
533
+ }, () => {
534
+ pa.panic(`schema doesn't have settings, so no references are allowed @ ${$p['location 2 string'](loc)}`);
535
+ });
536
+ const p_referent = (0, exports.r_Type_Part_Reference)($.referent, {
537
+ 'location 2 string': $p['location 2 string'],
538
+ 'parameters': {
539
+ 'lookups': {
540
+ 'types': $p.parameters.lookups['noncircular sibling types'],
541
+ },
542
+ 'values': {
543
+ 'imports': $p.parameters.values.imports,
544
+ },
545
+ }
546
+ });
547
+ const p_type = pa.cc($.type['state group'], ($) => {
548
+ switch ($[0]) {
549
+ case 'selected': return pa.ss($, ($) => {
550
+ return ['selected', {
551
+ 'dictionary': pa.cc(p_referent['resulting node'], ($) => {
552
+ switch ($[0]) {
553
+ case 'dictionary': return pa.ss($, ($) => $);
554
+ default: return pa.panic(`not a 'dictionary' but a '${$[0]}' @ ${$p['location 2 string'](loc)}`);
555
+ }
556
+ }),
557
+ 'dependency': pa.cc($.dependency['state group'], ($) => {
558
+ switch ($[0]) {
559
+ case 'cyclic': return pa.ss($, ($) => ['cyclic', null]);
560
+ case 'acyclic': return pa.ss($, ($) => ['acyclic', null]);
561
+ case 'stack': return pa.ss($, ($) => ['stack', $]);
562
+ default: return pa.au($[0]);
563
+ }
564
+ })
565
+ }];
566
+ });
567
+ case 'derived': return pa.ss($, ($) => ['derived', null]);
568
+ default: return pa.au($[0]);
569
+ }
570
+ });
571
+ return ['reference', {
572
+ 'referent': p_referent,
573
+ 'type': p_type,
574
+ }];
575
+ // case 'derived reference': return pa.ss($, ($) => ['derived reference', Type_Reference(
576
+ // $,
577
+ // $p
578
+ // )])
579
+ // : resolved.Type_Node => {
580
+ // const p_type = Type_Reference(
581
+ // $.type,
582
+ // $p,
583
+ // )
584
+ // const p_dictionary = p_type.tail.result[0] !== 'dictionary'
585
+ // ? pa.panic(`not a dictionary @ ${$p['location 2 string'](loc)}`)
586
+ // : p_type.tail.result[1]
587
+ // return ['reference', {
588
+ // 'type': p_type,
589
+ // // 'resulting dictionary': p_dictionary,
590
+ // 'dependency': $.dependency['state group']
591
+ // }]
592
+ // }
593
+ });
594
+ case 'state group': return pa.ss($, ($) => ['state group', _i_generic.resolve_dictionary($, {
595
+ 'location 2 string': $p['location 2 string'],
596
+ 'map': ($, $l) => (0, exports.r_Type_Node)($.value, $p),
597
+ })]);
598
+ case 'type parameter': return pa.ss($, ($) => ['type parameter', _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values['type parameters'], null), {
599
+ 'reference': $,
600
+ 'location 2 string': $p['location 2 string']
601
+ })]);
602
+ default: return pa.au($[0]);
603
+ }
604
+ });
605
+ };
606
+ exports.r_Type_Node = r_Type_Node;
607
+ const r_Type_Parameters = ($, $p) => _i_generic.resolve_dictionary($, {
608
+ 'location 2 string': $p['location 2 string'],
609
+ 'map': ($, $l) => {
610
+ return $.value;
611
+ },
612
+ });
613
+ exports.r_Type_Parameters = r_Type_Parameters;
614
+ const r_Type_Reference = ($, $p) => {
615
+ const x = pa.cc($.location['state group'], ($) => {
616
+ switch ($[0]) {
617
+ case 'external': return pa.ss($, ($) => {
618
+ const sc_import = $p.parameters.values.imports.transform(($) => $, () => pa.panic("missing"));
619
+ const p_import = _i_generic.get_entry(_i_generic.dictionary_to_lookup(sc_import, null), {
620
+ 'reference': $['import'],
621
+ 'location 2 string': $p['location 2 string']
622
+ });
623
+ return ['external', {
624
+ 'import': p_import,
625
+ 'type': _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_import.entry.schema.types.dictionary, null), {
626
+ 'reference': $['type'],
627
+ 'location 2 string': $p['location 2 string']
628
+ })
629
+ }];
630
+ });
631
+ case 'internal': return pa.ss($, ($) => ['internal', _i_generic.get_entry($p.parameters.lookups['types'], {
632
+ 'reference': $,
633
+ 'location 2 string': $p['location 2 string']
634
+ })]);
635
+ default: return pa.au($[0]);
636
+ }
637
+ });
638
+ return {
639
+ 'location': x,
640
+ 'resulting node': pa.cc(x, ($) => {
641
+ switch ($[0]) {
642
+ case 'external': return pa.ss($, ($) => $.type.entry.node);
643
+ case 'internal': return pa.ss($, ($) => $.entry.node);
644
+ default: return pa.au($[0]);
645
+ }
646
+ })
647
+ };
648
+ };
649
+ exports.r_Type_Reference = r_Type_Reference;
650
+ const r_Type_Part_Reference = ($, $p) => {
651
+ const p_type_location = (0, exports.r_Type_Reference)($['type location'], $p);
652
+ const p_tail_x = _i_generic.resolve_path($.tail, {
653
+ 'seed': p_type_location['resulting node'],
654
+ 'map': ($, current) => {
655
+ const sg_loc = $.location;
656
+ return pa.cc($['state group'], ($) => {
657
+ switch ($[0]) {
658
+ case 'dictionary': return pa.ss($, ($) => {
659
+ const sc_definition = pa.cc(current, ($) => {
660
+ if ($[0] !== 'dictionary') {
661
+ return pa.panic(`not a 'dictionary' @ ${$p['location 2 string'](sg_loc)}`);
662
+ }
663
+ return $[1];
664
+ });
665
+ return {
666
+ 'element': ['dictionary', null],
667
+ 'result': sc_definition.node
668
+ };
669
+ });
670
+ case 'group': return pa.ss($, ($) => {
671
+ const sc_definition = pa.cc(current, ($) => {
672
+ if ($[0] !== 'group') {
673
+ return pa.panic(`not a 'group' but a '${$[0]}' @ ${$p['location 2 string'](sg_loc)}`);
674
+ }
675
+ return $[1];
676
+ });
677
+ const p_child = _i_generic.get_entry(_i_generic.dictionary_to_lookup(sc_definition, null), {
678
+ 'reference': $,
679
+ 'location 2 string': $p['location 2 string']
680
+ });
681
+ return {
682
+ 'element': ['group', p_child],
683
+ 'result': p_child.entry
684
+ };
685
+ });
686
+ case 'identifier value pair': return pa.ss($, ($) => {
687
+ const sc_definition = pa.cc(current, ($) => {
688
+ if ($[0] !== 'identifier value pair') {
689
+ return pa.panic(`not a 'identifier value pair' @ ${$p['location 2 string'](sg_loc)}`);
690
+ }
691
+ return $[1];
692
+ });
693
+ return {
694
+ 'element': ['identifier value pair', null],
695
+ 'result': sc_definition
696
+ };
697
+ });
698
+ case 'list': return pa.ss($, ($) => {
699
+ const sc_definition = pa.cc(current, ($) => {
700
+ if ($[0] !== 'list') {
701
+ return pa.panic(`not a 'list' @ ${$p['location 2 string'](sg_loc)}`);
702
+ }
703
+ return $[1];
704
+ });
705
+ return {
706
+ 'element': ['list', null],
707
+ 'result': sc_definition.node
708
+ };
709
+ });
710
+ case 'optional': return pa.ss($, ($) => {
711
+ const sc_definition = pa.cc(current, ($) => {
712
+ if ($[0] !== 'optional') {
713
+ return pa.panic(`not a 'optional' @ ${$p['location 2 string'](sg_loc)}`);
714
+ }
715
+ return $[1];
716
+ });
717
+ return {
718
+ 'element': ['optional', null],
719
+ 'result': sc_definition
720
+ };
721
+ });
722
+ case 'state group': return pa.ss($, ($) => {
723
+ const p_state_group = pa.cc(current, ($) => {
724
+ if ($[0] !== 'state group') {
725
+ return pa.panic(`not a 'state group' @ ${$p['location 2 string'](sg_loc)}`);
726
+ }
727
+ return $[1];
728
+ });
729
+ const p_child = _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_state_group, null), {
730
+ 'reference': $,
731
+ 'location 2 string': $p['location 2 string']
732
+ });
733
+ return {
734
+ 'element': ['state group', p_child],
735
+ 'result': p_child.entry
736
+ };
737
+ });
738
+ default: return pa.au($[0]);
739
+ }
740
+ });
741
+ }
742
+ });
743
+ return {
744
+ 'type location': p_type_location,
745
+ 'tail': p_tail_x.list,
746
+ 'resulting node': p_tail_x.result.data // list result
747
+ };
748
+ };
749
+ exports.r_Type_Part_Reference = r_Type_Part_Reference;
750
+ const r_Option_Constraints = ($, $p) => {
751
+ return pa.cc($, ($) => _i_generic.resolve_dictionary($, {
752
+ 'location 2 string': $p['location 2 string'],
753
+ 'map': ($, $l) => pa.cc($['value'], ($) => pa.cc($['state group'], ($) => {
754
+ switch ($[0]) {
755
+ case 'state': return pa.ss($, ($) => ['state', pa.block(() => {
756
+ const loc = $.selection.start.location;
757
+ const p_selection = pa.cc($['selection'], ($) => (0, exports.r_Guaranteed_Value_Selection)($, {
758
+ 'location 2 string': $p['location 2 string'],
759
+ 'parameters': $p.parameters
760
+ }));
761
+ const p_selected_state_group = p_selection['resulting node'][0] !== 'state group' // component constraint ('selection')
762
+ ? pa.panic("not a 'state group' but a '", p_selection['resulting node'][0], "' @ ", $p['location 2 string'](loc))
763
+ : p_selection['resulting node'][1];
764
+ const p_state = pa.cc($['state'], ($) => _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_selected_state_group, null), {
765
+ 'location 2 string': $p['location 2 string'],
766
+ 'reference': $,
767
+ }));
768
+ return ({
769
+ 'selected state group': p_selected_state_group,
770
+ 'selection': p_selection,
771
+ 'state': p_state,
772
+ });
773
+ })]);
774
+ case 'assert is set': return pa.ss($, ($) => ['assert is set', (0, exports.r_Possibly_Optional)($, {
775
+ 'location 2 string': $p['location 2 string'],
776
+ 'parameters': $p.parameters
777
+ })]);
778
+ default: return pa.au($[0]);
779
+ }
780
+ })),
781
+ }));
782
+ };
783
+ exports.r_Option_Constraints = r_Option_Constraints;
784
+ const r_Constraint = ($, $p) => {
785
+ const p_selection = pa.cc($['selection'], ($) => (0, exports.r_Relative_Value_Selection)($, {
786
+ 'location 2 string': $p['location 2 string'],
787
+ 'parameters': {
788
+ 'lookups': null,
789
+ 'values': {
790
+ 'node': $p.parameters.values.node,
791
+ }
792
+ }
793
+ }));
794
+ const loc = $.type.location;
795
+ const p_type = pa.cc($.type, ($) => pa.cc($['state group'], ($) => {
796
+ switch ($[0]) {
797
+ case 'state': return pa.ss($, ($) => {
798
+ const p_selected_state_group = p_selection['resulting node'][0] !== 'state group' // component constraint ('selection')
799
+ ? pa.panic("not a 'state group' but a '", p_selection['resulting node'][0], "' @ ", $p['location 2 string'](loc))
800
+ : p_selection['resulting node'][1];
801
+ const p_state = pa.cc($['state'], ($) => _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_selected_state_group, null), {
802
+ 'location 2 string': $p['location 2 string'],
803
+ 'reference': $,
804
+ }));
805
+ return ['state', {
806
+ 'selected state group': p_selected_state_group,
807
+ 'state': p_state,
808
+ }];
809
+ });
810
+ case 'optional value': return pa.ss($, ($) => {
811
+ const p_selected_optional_value = p_selection['resulting node'][0] !== 'optional' // component constraint ('selection')
812
+ ? pa.panic("not a 'optional' but a '", p_selection['resulting node'][0], "' @ ", $p['location 2 string'](loc))
813
+ : p_selection['resulting node'][1];
814
+ return ['optional value', {
815
+ 'selected optional value': p_selected_optional_value,
816
+ }];
817
+ });
818
+ default: return pa.au($[0]);
819
+ }
820
+ }));
821
+ return {
822
+ 'selection': p_selection,
823
+ 'type': p_type,
824
+ };
825
+ };
826
+ exports.r_Constraint = r_Constraint;
827
+ const r_Property_Constraints = ($, $p) => {
828
+ return pa.cc($, ($) => _i_generic.resolve_ordered_dictionary($, {
829
+ 'location 2 string': $p['location 2 string'],
830
+ 'map': ($, $l) => pa.cc($['value'], ($) => pa.block(() => {
831
+ const p_start = pa.cc($.start['state group'], ($) => {
832
+ switch ($[0]) {
833
+ case 'property': return pa.ss($, ($) => ['property', null]);
834
+ case 'sibling': return pa.ss($, ($) => ['sibling', _i_generic.get_entry($l['not circular dependent siblings'], {
835
+ 'location 2 string': $p['location 2 string'],
836
+ 'reference': $
837
+ })]);
838
+ default: return pa.au($[0]);
839
+ }
840
+ });
841
+ const p_constraint = (0, exports.r_Constraint)($.constraint, {
842
+ 'location 2 string': $p['location 2 string'],
843
+ 'parameters': {
844
+ 'lookups': null,
845
+ 'values': {
846
+ 'node': pa.cc(p_start, ($) => {
847
+ switch ($[0]) {
848
+ case 'property': return pa.ss($, ($) => $p.parameters.values.node);
849
+ case 'sibling': return pa.ss($, ($) => pa.cc($.entry.constraint.type, ($) => {
850
+ switch ($[0]) {
851
+ case 'state': return pa.ss($, ($) => $.state.entry);
852
+ case 'optional value': return pa.ss($, ($) => $['selected optional value']);
853
+ default: return pa.au($[0]);
854
+ }
855
+ }));
856
+ default: return pa.au($[0]);
857
+ }
858
+ }),
859
+ }
860
+ }
861
+ });
862
+ return ({
863
+ 'start': p_start,
864
+ 'constraint': p_constraint,
865
+ });
866
+ })),
867
+ }));
868
+ };
869
+ exports.r_Property_Constraints = r_Property_Constraints;
870
+ const r_Node_Resolver = ($, $p) => {
871
+ const loc = $.location;
872
+ const p_type = pa.cc($['state group'], ($) => {
873
+ switch ($[0]) {
874
+ case 'boolean': return pa.ss($, ($) => {
875
+ const x = $p.parameters.values.definition[0] !== 'boolean'
876
+ ? pa.panic("not a 'boolean' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
877
+ : $p.parameters.values.definition[1];
878
+ return ['boolean', null];
879
+ });
880
+ case 'component': return pa.ss($, ($) => {
881
+ const x = $p.parameters.values.definition[0] !== 'component'
882
+ ? pa.panic("not a 'component' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
883
+ : $p.parameters.values.definition[1];
884
+ const p_location = pa.cc($.location['state group'], ($) => {
885
+ switch ($[0]) {
886
+ case 'external': return pa.ss($, ($) => {
887
+ const sc_import = $p.parameters.values.imports.transform(($) => $, () => pa.panic("missing"));
888
+ const p_import = _i_generic.get_entry(_i_generic.dictionary_to_lookup(sc_import, null), {
889
+ 'reference': $['import'],
890
+ 'location 2 string': $p['location 2 string']
891
+ });
892
+ const pc_constrained = pa.cc(p_import.entry.schema.complexity, ($) => {
893
+ switch ($[0]) {
894
+ case 'constrained': return pa.ss($, ($) => $);
895
+ case 'unconstrained': return pa.ss($, ($) => pa.panic(`not constrained @ ${$p['location 2 string'](loc)}`));
896
+ default: return pa.au($[0]);
897
+ }
898
+ });
899
+ return ['external', {
900
+ 'import': p_import,
901
+ 'type': _i_generic.get_entry(_i_generic.dictionary_to_lookup(pc_constrained.signatures.types.dictionary, null), {
902
+ 'reference': $['type'],
903
+ 'location 2 string': $p['location 2 string']
904
+ })
905
+ }];
906
+ });
907
+ case 'internal': return pa.ss($, ($) => ['internal', _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values['signatures'].dictionary, null), {
908
+ 'reference': $,
909
+ 'location 2 string': $p['location 2 string']
910
+ })]);
911
+ default: return pa.au($[0]);
912
+ }
913
+ });
914
+ const p_signature = pa.cc(p_location, ($) => {
915
+ switch ($[0]) {
916
+ case 'external': return pa.ss($, ($) => $.type.entry);
917
+ case 'internal': return pa.ss($, ($) => $.entry);
918
+ default: return pa.au($[0]);
919
+ }
920
+ });
921
+ const x_type = pa.cc(x, ($) => {
922
+ switch ($[0]) {
923
+ case 'external': return pa.ss($, ($) => $.type.entry);
924
+ case 'internal': return pa.ss($, ($) => $.entry);
925
+ case 'internal cyclic': return pa.ss($, ($) => $.entry.compute());
926
+ default: return pa.au($[0]);
927
+ }
928
+ });
929
+ if (p_signature.type.node !== x_type.node) {
930
+ pa.panic("type mismatch @ ", $p['location 2 string'](loc));
931
+ }
932
+ const p_arguments = $.arguments.transform(($) => {
933
+ const x = {
934
+ 'lookups': $.lookups.transform(($) => pa.set(_i_generic.resolve_dense_dictionary($, {
935
+ 'location 2 string': $p['location 2 string'],
936
+ 'map': ($, $l) => pa.cc($['value'], ($) => {
937
+ //do additional validation
938
+ return pa.cc($['state group'], ($) => {
939
+ switch ($[0]) {
940
+ case 'empty stack': return pa.ss($, ($) => ['empty stack', null]);
941
+ case 'not set': return pa.ss($, ($) => ['not set', null]);
942
+ case 'selection': return pa.ss($, ($) => ['selection', (0, exports.r_Lookup_Selection)($, {
943
+ 'location 2 string': $p['location 2 string'],
944
+ 'parameters': $p.parameters,
945
+ })]);
946
+ case 'stack': return pa.ss($, ($) => {
947
+ const p_stack = (0, exports.r_Lookup_Selection)($.stack, {
948
+ 'location 2 string': $p['location 2 string'],
949
+ 'parameters': $p.parameters
950
+ });
951
+ const p_element = (0, exports.r_Lookup_Selection)($.element, {
952
+ 'location 2 string': $p['location 2 string'],
953
+ 'parameters': $p.parameters
954
+ });
955
+ return ['stack', {
956
+ 'stack': p_stack,
957
+ 'element': p_element
958
+ }];
959
+ });
960
+ default: return pa.au($[0]);
961
+ }
962
+ });
963
+ }),
964
+ 'denseness benchmark': p_signature['resolved parameters'].lookups,
965
+ })), () => {
966
+ {
967
+ //additional validation
968
+ if (p_signature['resolved parameters'].lookups !== $p.parameters.values.signature['resolved parameters'].lookups) {
969
+ pa.panic("lookup parameters mismatch @ ", $p['location 2 string'](loc));
970
+ }
971
+ }
972
+ return pa.not_set();
973
+ }),
974
+ 'values': $.values.transform(($) => {
975
+ const values_location = $.location;
976
+ return pa.set(_i_generic.resolve_dense_dictionary($, {
977
+ 'location 2 string': $p['location 2 string'],
978
+ 'map': ($, $l) => pa.cc($, ($) => {
979
+ const linked_entry = _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_signature['resolved parameters'].values, null), {
980
+ 'location 2 string': $p['location 2 string'],
981
+ 'reference': $
982
+ });
983
+ const out = pa.cc($.value['state group'], ($) => {
984
+ switch ($[0]) {
985
+ case 'optional': return pa.ss($, ($) => ['optional', (0, exports.r_Possible_Value_Selection)($, {
986
+ 'location 2 string': $p['location 2 string'],
987
+ 'parameters': $p.parameters,
988
+ })]);
989
+ case 'parameter': return pa.ss($, ($) => ['parameter', _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values.signature['resolved parameters'].values, null), {
990
+ 'reference': $,
991
+ 'location 2 string': $p['location 2 string']
992
+ })]);
993
+ case 'required': return pa.ss($, ($) => ['required', (0, exports.r_Guaranteed_Value_Selection)($, {
994
+ 'location 2 string': $p['location 2 string'],
995
+ 'parameters': $p.parameters,
996
+ })]);
997
+ default: return pa.au($[0]);
998
+ }
999
+ });
1000
+ {
1001
+ //additional validation
1002
+ const benchmark = linked_entry.entry;
1003
+ const key = $.key;
1004
+ const focus = out;
1005
+ const walk_path_till_end = ($) => {
1006
+ return pa.cc($, ($) => {
1007
+ switch ($[0]) {
1008
+ case 'component': return pa.ss($, ($) => pa.cc($, ($) => {
1009
+ switch ($[0]) {
1010
+ case 'external': return pa.ss($, ($) => $.type.entry.node);
1011
+ case 'internal': return pa.ss($, ($) => $.entry.node);
1012
+ case 'internal cyclic': return pa.ss($, ($) => $.entry.compute().node); //IS THIS SAFE? I Am using a computed value (only available after resolving)
1013
+ default: return pa.au($[0]);
1014
+ }
1015
+ }));
1016
+ case 'reference': return pa.ss($, ($) => $.referent['resulting node']);
1017
+ default: return $;
1018
+ }
1019
+ });
1020
+ };
1021
+ pa.cc(focus, ($) => {
1022
+ switch ($[0]) {
1023
+ case 'optional': return pa.ss($, ($) => {
1024
+ if (benchmark.presence[0] !== 'optional') {
1025
+ pa.panic("argument is not optional '", key, "' @ ", $p['location 2 string'](values_location));
1026
+ }
1027
+ pa.cc($, ($) => {
1028
+ switch ($[0]) {
1029
+ case 'not set': return pa.ss($, ($) => { });
1030
+ case 'selection': return pa.ss($, ($) => {
1031
+ //FIXME
1032
+ pa.cc($, ($) => {
1033
+ switch ($[0]) {
1034
+ case 'parameter': return pa.ss($, ($) => { });
1035
+ case 'result': return pa.ss($, ($) => { });
1036
+ default: pa.au($[0]);
1037
+ }
1038
+ });
1039
+ });
1040
+ case 'set': return pa.ss($, ($) => {
1041
+ if (walk_path_till_end(benchmark['data type']['resulting node']) !== walk_path_till_end($.tail['resulting node'])) {
1042
+ pa.panic("type mismatch in '", key, "' @ ", $p['location 2 string'](values_location));
1043
+ }
1044
+ });
1045
+ default: pa.au($[0]);
1046
+ }
1047
+ });
1048
+ //FIX validate that types are the same
1049
+ });
1050
+ case 'parameter': return pa.ss($, ($) => {
1051
+ if ($.entry.presence[0] !== benchmark.presence[0]) {
1052
+ pa.panic("parameter '", key, "' presence mismatch @ ", $p['location 2 string'](values_location));
1053
+ }
1054
+ if ($.entry['data type']['resulting node'] !== benchmark['data type']['resulting node']) {
1055
+ pa.panic("parameter '", key, "' type mismatch @ ", $p['location 2 string'](values_location));
1056
+ }
1057
+ });
1058
+ case 'required': return pa.ss($, ($) => {
1059
+ if (benchmark.presence[0] !== 'required') {
1060
+ pa.panic("argument '", key, "' is not required @ ", $p['location 2 string'](values_location));
1061
+ }
1062
+ if (walk_path_till_end(benchmark['data type']['resulting node']) !== walk_path_till_end($.tail['resulting node'])) {
1063
+ pa.panic("type mismatch in '", key, "' @ ", $p['location 2 string'](values_location));
1064
+ }
1065
+ });
1066
+ default: return pa.au($[0]);
1067
+ }
1068
+ });
1069
+ }
1070
+ return out;
1071
+ }),
1072
+ 'denseness benchmark': p_signature['resolved parameters'].values,
1073
+ }));
1074
+ }, () => {
1075
+ {
1076
+ //additional validation
1077
+ if (p_signature['resolved parameters'].values !== $p.parameters.values.signature['resolved parameters'].values) {
1078
+ pa.panic("value parameters mismatch @ ", $p['location 2 string'](loc));
1079
+ }
1080
+ }
1081
+ return pa.not_set();
1082
+ }),
1083
+ };
1084
+ return pa.set(x);
1085
+ }, () => {
1086
+ {
1087
+ //additional validation
1088
+ if (p_signature['resolved parameters'].lookups !== $p.parameters.values.signature['resolved parameters'].lookups) {
1089
+ pa.panic("lookup parameters mismatch @ ", $p['location 2 string'](loc));
1090
+ }
1091
+ if (p_signature['resolved parameters'].values !== $p.parameters.values.signature['resolved parameters'].values) {
1092
+ pa.panic("value parameters mismatch @ ", $p['location 2 string'](loc));
1093
+ }
1094
+ }
1095
+ return pa.not_set();
1096
+ });
1097
+ const p_constraints = (0, exports.r_Property_Constraints)($.constraints, {
1098
+ 'location 2 string': $p['location 2 string'],
1099
+ 'parameters': {
1100
+ 'lookups': null,
1101
+ 'values': {
1102
+ 'node': pa.cc(p_location, ($) => {
1103
+ switch ($[0]) {
1104
+ case 'external': return pa.ss($, ($) => $.type.entry.type.node);
1105
+ case 'internal': return pa.ss($, ($) => $.entry.type.node);
1106
+ default: return pa.au($[0]);
1107
+ }
1108
+ })
1109
+ }
1110
+ }
1111
+ });
1112
+ return ['component', {
1113
+ 'location': p_location,
1114
+ 'signature': p_signature,
1115
+ 'arguments': p_arguments,
1116
+ 'constraints': p_constraints,
1117
+ }];
1118
+ });
1119
+ case 'dictionary': return pa.ss($, ($) => {
1120
+ const p_definition = $p.parameters.values.definition[0] !== 'dictionary'
1121
+ ? pa.panic("not a 'dictionary' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1122
+ : $p.parameters.values.definition[1];
1123
+ const p_benchmark = $.benchmark.map(($) => {
1124
+ const p_selection = (0, exports.r_Guaranteed_Value_Selection)($.selection, {
1125
+ 'location 2 string': $p['location 2 string'],
1126
+ 'parameters': $p.parameters,
1127
+ });
1128
+ const p_resulting_dictionary = p_selection['resulting node'][0] !== 'dictionary' // component constraint ('selection')
1129
+ ? pa.panic("not a 'dictionary' but a '", p_selection['resulting node'][0], "' @ ", $p['location 2 string'](loc))
1130
+ : p_selection['resulting node'][1];
1131
+ return {
1132
+ 'selection': p_selection,
1133
+ 'resulting dictionary': p_resulting_dictionary,
1134
+ 'dense': $.dense
1135
+ };
1136
+ });
1137
+ return ['dictionary', {
1138
+ 'definition': p_definition,
1139
+ 'benchmark': p_benchmark,
1140
+ 'resolver': (0, exports.r_Node_Resolver)($.resolver, {
1141
+ 'parameters': {
1142
+ 'lookups': $p.parameters.lookups,
1143
+ 'values': {
1144
+ 'linked entry': p_benchmark.transform(//optional value result ('benchmark')
1145
+ ($) => pa.set($), () => $p.parameters.values['linked entry']),
1146
+ 'definition': p_definition.node,
1147
+ 'current dictionary': pa.set(p_definition),
1148
+ 'current ordered dictionary': pa.set(p_definition), //FIXME: is it ordered
1149
+ 'types': $p.parameters.values.types,
1150
+ 'imports': $p.parameters.values.imports,
1151
+ 'signature': $p.parameters.values.signature,
1152
+ 'signatures': $p.parameters.values.signatures,
1153
+ 'list cursor': $p.parameters.values['list cursor'],
1154
+ 'option constraints': $p.parameters.values['option constraints'],
1155
+ },
1156
+ },
1157
+ 'location 2 string': $p['location 2 string'],
1158
+ }),
1159
+ }];
1160
+ });
1161
+ case 'group': return pa.ss($, ($) => {
1162
+ const x = $p.parameters.values.definition[0] !== 'group'
1163
+ ? pa.panic("not a 'group' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1164
+ : $p.parameters.values.definition[1];
1165
+ const p_properties = _i_generic.resolve_dense_ordered_dictionary($, {
1166
+ 'location 2 string': $p['location 2 string'],
1167
+ 'map': ($, $l) => {
1168
+ const p_definition = _i_generic.get_entry(_i_generic.dictionary_to_lookup(x, null), {
1169
+ 'reference': {
1170
+ 'key': $.key,
1171
+ 'location': $.value.resolver.location
1172
+ },
1173
+ 'location 2 string': $p['location 2 string']
1174
+ });
1175
+ const p_resolver = (0, exports.r_Node_Resolver)($.value.resolver, {
1176
+ 'parameters': {
1177
+ 'lookups': {
1178
+ //special
1179
+ 'sibling property resolvers': $l['not circular dependent siblings'],
1180
+ 'parent sibling property resolvers': $p.parameters.lookups['sibling property resolvers'],
1181
+ //copy
1182
+ },
1183
+ 'values': {
1184
+ 'definition': p_definition.entry,
1185
+ 'types': $p.parameters.values.types,
1186
+ 'imports': $p.parameters.values.imports,
1187
+ 'signature': $p.parameters.values.signature,
1188
+ 'signatures': $p.parameters.values.signatures,
1189
+ 'list cursor': $p.parameters.values['list cursor'],
1190
+ 'linked entry': $p.parameters.values['linked entry'],
1191
+ 'current dictionary': $p.parameters.values['current dictionary'],
1192
+ 'option constraints': $p.parameters.values['option constraints'],
1193
+ 'current ordered dictionary': $p.parameters.values['current ordered dictionary'],
1194
+ },
1195
+ },
1196
+ 'location 2 string': $p['location 2 string'],
1197
+ });
1198
+ return {
1199
+ 'definition': p_definition.entry,
1200
+ 'resolver': p_resolver,
1201
+ };
1202
+ },
1203
+ 'denseness benchmark': x,
1204
+ });
1205
+ return ['group', p_properties];
1206
+ });
1207
+ case 'identifier value pair': return pa.ss($, ($) => {
1208
+ const x = $p.parameters.values.definition[0] !== 'identifier value pair'
1209
+ ? pa.panic("not a 'identifier value pair' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1210
+ : $p.parameters.values.definition[1];
1211
+ return ['identifier value pair', (0, exports.r_Node_Resolver)($, {
1212
+ 'parameters': {
1213
+ 'lookups': $p.parameters.lookups,
1214
+ 'values': {
1215
+ 'definition': x,
1216
+ 'types': $p.parameters.values.types,
1217
+ 'imports': $p.parameters.values.imports,
1218
+ 'signature': $p.parameters.values.signature,
1219
+ 'signatures': $p.parameters.values.signatures,
1220
+ 'list cursor': $p.parameters.values['list cursor'],
1221
+ 'linked entry': $p.parameters.values['linked entry'],
1222
+ 'current dictionary': $p.parameters.values['current dictionary'],
1223
+ 'option constraints': $p.parameters.values['option constraints'],
1224
+ 'current ordered dictionary': $p.parameters.values['current ordered dictionary'],
1225
+ },
1226
+ },
1227
+ 'location 2 string': $p['location 2 string'],
1228
+ })];
1229
+ });
1230
+ case 'list': return pa.ss($, ($) => {
1231
+ const p_definition = $p.parameters.values.definition[0] !== 'list'
1232
+ ? pa.panic("not a 'list' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1233
+ : $p.parameters.values.definition[1];
1234
+ const p_result = $.result.map(($) => (0, exports.r_Type_Reference)($, {
1235
+ 'location 2 string': $p['location 2 string'],
1236
+ 'parameters': {
1237
+ 'lookups': {
1238
+ 'types': _i_generic.dictionary_to_lookup($p.parameters.values.types.dictionary, null),
1239
+ },
1240
+ 'values': {
1241
+ 'imports': $p.parameters.values.imports,
1242
+ },
1243
+ }
1244
+ }));
1245
+ const p_resolver = (0, exports.r_Node_Resolver)($.resolver, {
1246
+ 'parameters': {
1247
+ 'lookups': $p.parameters.lookups,
1248
+ 'values': {
1249
+ 'definition': p_definition.node,
1250
+ 'list cursor': p_result.transform(// optional value result ('result')
1251
+ ($) => pa.set($), () => $p.parameters.values['list cursor']), //setting the cursor
1252
+ 'types': $p.parameters.values.types,
1253
+ 'imports': $p.parameters.values.imports,
1254
+ 'signature': $p.parameters.values.signature,
1255
+ 'signatures': $p.parameters.values.signatures,
1256
+ 'linked entry': $p.parameters.values['linked entry'],
1257
+ 'current dictionary': $p.parameters.values['current dictionary'],
1258
+ 'option constraints': $p.parameters.values['option constraints'],
1259
+ 'current ordered dictionary': $p.parameters.values['current ordered dictionary'],
1260
+ },
1261
+ },
1262
+ 'location 2 string': $p['location 2 string'],
1263
+ });
1264
+ return ['list', {
1265
+ 'result': p_result,
1266
+ 'definition': p_definition,
1267
+ 'resolver': p_resolver,
1268
+ }];
1269
+ });
1270
+ case 'nothing': return pa.ss($, ($) => {
1271
+ const x = $p.parameters.values.definition[0] !== 'nothing'
1272
+ ? pa.panic("not a 'nothing' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1273
+ : $p.parameters.values.definition[1];
1274
+ return ['nothing', null];
1275
+ });
1276
+ case 'number': return pa.ss($, ($) => {
1277
+ const x = $p.parameters.values.definition[0] !== 'number'
1278
+ ? pa.panic("not a 'number' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1279
+ : $p.parameters.values.definition[1];
1280
+ return ['number', null];
1281
+ });
1282
+ case 'optional': return pa.ss($, ($) => {
1283
+ const x = $p.parameters.values.definition[0] !== 'optional'
1284
+ ? pa.panic("not a 'optional' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1285
+ : $p.parameters.values.definition[1];
1286
+ const p_constraints = (0, exports.r_Option_Constraints)($.constraints, {
1287
+ 'location 2 string': $p['location 2 string'],
1288
+ 'parameters': $p.parameters,
1289
+ });
1290
+ const p_resolver = (0, exports.r_Node_Resolver)($.resolver, {
1291
+ 'parameters': {
1292
+ 'lookups': {
1293
+ 'sibling property resolvers': $p.parameters.lookups['sibling property resolvers'],
1294
+ 'parent sibling property resolvers': $p.parameters.lookups['parent sibling property resolvers'],
1295
+ },
1296
+ 'values': {
1297
+ 'definition': x,
1298
+ 'option constraints': pa.set(p_constraints),
1299
+ 'types': $p.parameters.values.types,
1300
+ 'imports': $p.parameters.values.imports,
1301
+ 'signature': $p.parameters.values.signature,
1302
+ 'signatures': $p.parameters.values.signatures,
1303
+ 'list cursor': $p.parameters.values['list cursor'],
1304
+ 'linked entry': $p.parameters.values['linked entry'],
1305
+ 'current dictionary': $p.parameters.values['current dictionary'],
1306
+ 'current ordered dictionary': $p.parameters.values['current ordered dictionary'],
1307
+ },
1308
+ },
1309
+ 'location 2 string': $p['location 2 string'],
1310
+ });
1311
+ return ['optional', {
1312
+ 'constraints': p_constraints,
1313
+ 'resolver': p_resolver,
1314
+ }];
1315
+ });
1316
+ case 'reference': return pa.ss($, ($) => {
1317
+ const p_definition = $p.parameters.values.definition[0] !== 'reference'
1318
+ ? pa.panic("not a 'reference' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1319
+ : $p.parameters.values.definition[1];
1320
+ return ['reference', {
1321
+ 'definition': p_definition,
1322
+ 'type': pa.cc($.type['state group'], ($) => {
1323
+ switch ($[0]) {
1324
+ case 'derived': return pa.ss($, ($) => {
1325
+ const p_definition_2 = p_definition.type[0] !== 'derived'
1326
+ ? pa.panic("not a 'derived' but a '", p_definition.type[0], "' @ ", $p['location 2 string'](loc))
1327
+ : p_definition.type[1];
1328
+ return ['derived', {
1329
+ 'value': (0, exports.r_Guaranteed_Value_Selection)($.value, {
1330
+ 'location 2 string': $p['location 2 string'],
1331
+ 'parameters': $p.parameters
1332
+ })
1333
+ }];
1334
+ });
1335
+ case 'selected': return pa.ss($, ($) => {
1336
+ const p_definition_2 = p_definition.type[0] !== 'selected'
1337
+ ? pa.panic("not a 'selected' but a '", p_definition.type[0], "' @ ", $p['location 2 string'](loc))
1338
+ : p_definition.type[1];
1339
+ const p_lookup = (0, exports.r_Lookup_Selection)($.lookup, {
1340
+ 'location 2 string': $p['location 2 string'],
1341
+ 'parameters': $p.parameters,
1342
+ });
1343
+ const p_constraints = (0, exports.r_Property_Constraints)($.constraints, {
1344
+ 'location 2 string': $p['location 2 string'],
1345
+ 'parameters': {
1346
+ 'lookups': null,
1347
+ 'values': {
1348
+ 'node': p_lookup['resulting dictionary'].node
1349
+ }
1350
+ }
1351
+ });
1352
+ return ['selected', {
1353
+ 'definition': p_definition_2,
1354
+ 'lookup': p_lookup,
1355
+ 'constraints': p_constraints,
1356
+ }];
1357
+ });
1358
+ default: return pa.au($[0]);
1359
+ }
1360
+ })
1361
+ }];
1362
+ });
1363
+ case 'state group': return pa.ss($, ($) => {
1364
+ const p_definition = $p.parameters.values.definition[0] !== 'state group'
1365
+ ? pa.panic("not a 'state group' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1366
+ : $p.parameters.values.definition[1];
1367
+ const p_states = _i_generic.resolve_dense_dictionary($.states, {
1368
+ 'location 2 string': $p['location 2 string'],
1369
+ 'map': ($, $l) => {
1370
+ const x2 = _i_generic.get_entry(_i_generic.dictionary_to_lookup(p_definition, null), {
1371
+ 'reference': {
1372
+ 'key': $.key,
1373
+ 'location': $.location
1374
+ },
1375
+ 'location 2 string': $p['location 2 string']
1376
+ });
1377
+ const p_constraints = (0, exports.r_Option_Constraints)($.value.constraints, {
1378
+ 'location 2 string': $p['location 2 string'],
1379
+ 'parameters': $p.parameters,
1380
+ });
1381
+ const vr = (0, exports.r_Node_Resolver)($.value['resolver'], {
1382
+ 'parameters': {
1383
+ 'lookups': {
1384
+ 'sibling property resolvers': $p.parameters.lookups['sibling property resolvers'],
1385
+ 'parent sibling property resolvers': $p.parameters.lookups['parent sibling property resolvers'],
1386
+ },
1387
+ 'values': {
1388
+ 'definition': x2.entry,
1389
+ 'option constraints': pa.set(p_constraints),
1390
+ 'types': $p.parameters.values.types,
1391
+ 'imports': $p.parameters.values.imports,
1392
+ 'signature': $p.parameters.values.signature,
1393
+ 'signatures': $p.parameters.values.signatures,
1394
+ 'list cursor': $p.parameters.values['list cursor'],
1395
+ 'linked entry': $p.parameters.values['linked entry'],
1396
+ 'current dictionary': $p.parameters.values['current dictionary'],
1397
+ 'current ordered dictionary': $p.parameters.values['current ordered dictionary'],
1398
+ },
1399
+ },
1400
+ 'location 2 string': $p['location 2 string'],
1401
+ });
1402
+ return {
1403
+ 'constraints': p_constraints,
1404
+ //'referenced entry': x2.entry,
1405
+ 'resolver': vr,
1406
+ };
1407
+ },
1408
+ 'denseness benchmark': p_definition,
1409
+ });
1410
+ // case 'state group': return pa.ss($, ($): _i_generic.Resolved_Step<_i_out.Relative_Value_Selection.tail.L, _i_out.Type_Node> => pa.block(() => {
1411
+ // return pa.block(() => {
1412
+ // const sc_definition: _i_out.Type_Node.SG.state_group = pa.cc(current, ($) => {
1413
+ // if ($[0] !== 'state group') {
1414
+ // return pa.panic(`not a 'state group' but a '${$[0]}' @ ${$p['location 2 string'](sg_loc)}`)
1415
+ // }
1416
+ // return $[1]
1417
+ // })
1418
+ // const p_type: _i_out.Relative_Value_Selection.tail.L.SG.state_group._type = pa.cc($['type'], ($) => r_Type_Reference(
1419
+ // $,
1420
+ // {
1421
+ // 'location 2 string': l2s,
1422
+ // 'parameters': ({
1423
+ // 'lookups': ({
1424
+ // 'imports': $p.parameters.lookups.imports,
1425
+ // 'types': $p.parameters.lookups.types,
1426
+ // }),
1427
+ // 'values': null,
1428
+ // }),
1429
+ // }
1430
+ // ))
1431
+ // const p_states: _i_out.Relative_Value_Selection.tail.L.SG.state_group.states = pa.cc($['states'], ($) => _i_generic.resolve_dense_dictionary(
1432
+ // $,
1433
+ // {
1434
+ // 'location 2 string': l2s,
1435
+ // 'map': ($, $p) => {
1436
+ // const linked_entry = _i_generic.get_entry(
1437
+ // _i_generic.dictionary_to_lookup(sc_definition, null),
1438
+ // {
1439
+ // 'location 2 string': l2s,
1440
+ // 'reference': {
1441
+ // 'key': $.key,
1442
+ // 'location': $.location
1443
+ // },
1444
+ // }
1445
+ // )
1446
+ // return $.value.map(($) => r_Value_Selection_Tail(
1447
+ // $,
1448
+ // {
1449
+ // 'location 2 string': l2s,
1450
+ // 'parameters': {
1451
+ // 'lookups': params.lookups,
1452
+ // 'values': {
1453
+ // 'type': linked_entry.entry
1454
+ // }
1455
+ // },
1456
+ // }
1457
+ // ))
1458
+ // },
1459
+ // 'denseness benchmark': sc_definition,
1460
+ // }
1461
+ // ))
1462
+ // return {
1463
+ // 'result': p_type['resulting node'],
1464
+ // 'element': ['state group', ({
1465
+ // 'definition': sc_definition,
1466
+ // 'states': p_states,
1467
+ // 'type': p_type,
1468
+ // })]
1469
+ // }
1470
+ // })
1471
+ // }))
1472
+ return ['state group', {
1473
+ 'definition': p_definition,
1474
+ 'states': p_states,
1475
+ }];
1476
+ });
1477
+ case 'text': return pa.ss($, ($) => {
1478
+ const x = $p.parameters.values.definition[0] !== 'text'
1479
+ ? pa.panic("not a 'text' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1480
+ : $p.parameters.values.definition[1];
1481
+ return ['text', null];
1482
+ });
1483
+ case 'type parameter': return pa.ss($, ($) => {
1484
+ const x = $p.parameters.values.definition[0] !== 'type parameter'
1485
+ ? pa.panic("not a 'type parameter' but a '", $p.parameters.values.definition[0], "' @ ", $p['location 2 string'](loc))
1486
+ : $p.parameters.values.definition[1];
1487
+ return ['type parameter', null];
1488
+ });
1489
+ default: return pa.au($[0]);
1490
+ }
1491
+ });
1492
+ return p_type;
1493
+ };
1494
+ exports.r_Node_Resolver = r_Node_Resolver;
1495
+ const r_Relative_Value_Selection = ($, $p) => pa.block(() => {
1496
+ const l2s = $p['location 2 string'];
1497
+ const params = $p['parameters'];
1498
+ const p_path = _i_generic.resolve_path($.path, {
1499
+ 'seed': $p.parameters.values.node,
1500
+ 'map': ($, current) => {
1501
+ const sg_loc = $.location;
1502
+ return pa.cc($['state group'], ($) => {
1503
+ switch ($[0]) {
1504
+ case 'component': return pa.ss($, ($) => {
1505
+ const sc_definition = pa.cc(current, ($) => {
1506
+ if ($[0] !== 'component') {
1507
+ return pa.panic(`not a 'component' but a '${$[0]}' @ ${$p['location 2 string'](sg_loc)}`);
1508
+ }
1509
+ return $[1];
1510
+ });
1511
+ return {
1512
+ 'element': ['component', null],
1513
+ 'result': pa.cc(sc_definition, ($) => {
1514
+ switch ($[0]) {
1515
+ case 'external': return pa.ss($, ($) => $.type.entry.node);
1516
+ case 'internal': return pa.ss($, ($) => $.entry.node);
1517
+ case 'internal cyclic': return pa.ss($, ($) => $.entry.compute().node); //this is safe, the types have been resolved at this stage
1518
+ default: return pa.au($[0]);
1519
+ }
1520
+ })
1521
+ };
1522
+ });
1523
+ case 'group': return pa.ss($, ($) => {
1524
+ const sc_definition = pa.cc(current, ($) => {
1525
+ if ($[0] !== 'group') {
1526
+ return pa.panic(`not a 'group' but a '${$[0]}' @ ${$p['location 2 string'](sg_loc)}`);
1527
+ }
1528
+ return $[1];
1529
+ });
1530
+ const p_child = _i_generic.get_entry(_i_generic.dictionary_to_lookup(sc_definition, null), {
1531
+ 'reference': $,
1532
+ 'location 2 string': $p['location 2 string']
1533
+ });
1534
+ return {
1535
+ 'element': ['group', p_child],
1536
+ 'result': p_child.entry
1537
+ };
1538
+ });
1539
+ case 'reference': return pa.ss($, ($) => {
1540
+ const sc_definition = pa.cc(current, ($) => {
1541
+ if ($[0] !== 'reference') {
1542
+ return pa.panic(`not a 'reference' but a '${$[0]}' @ ${$p['location 2 string'](sg_loc)}`);
1543
+ }
1544
+ return $[1];
1545
+ });
1546
+ const referent = sc_definition.referent;
1547
+ const x = pa.cc(sc_definition.type, ($) => {
1548
+ switch ($[0]) {
1549
+ case 'derived': return pa.ss($, ($) => referent['resulting node']);
1550
+ case 'selected': return pa.ss($, ($) => pa.cc(referent['resulting node'], ($) => {
1551
+ switch ($[0]) {
1552
+ case 'dictionary': return pa.ss($, ($) => $.node);
1553
+ default: return pa.panic("not a dictionary @ ", $p['location 2 string'](sg_loc));
1554
+ }
1555
+ }));
1556
+ default: return pa.au($[0]);
1557
+ }
1558
+ });
1559
+ return {
1560
+ 'element': ['reference', {
1561
+ 'definition': sc_definition
1562
+ }],
1563
+ 'result': x
1564
+ };
1565
+ });
1566
+ default: return pa.au($[0]);
1567
+ }
1568
+ });
1569
+ }
1570
+ });
1571
+ return {
1572
+ 'path': p_path.list,
1573
+ 'resulting node': p_path.result.data, // list result
1574
+ };
1575
+ });
1576
+ exports.r_Relative_Value_Selection = r_Relative_Value_Selection;
1577
+ const r_Possible_Value_Selection = ($, $p) => pa.block(() => {
1578
+ const l2s = $p['location 2 string'];
1579
+ const params = $p['parameters'];
1580
+ return pa.cc($['state group'], ($) => {
1581
+ switch ($[0]) {
1582
+ case 'not set': return pa.ss($, ($) => ['not set', null]);
1583
+ case 'set': return pa.ss($, ($) => ['set', (0, exports.r_Guaranteed_Value_Selection)($, $p)]);
1584
+ case 'selection': return pa.ss($, ($) => {
1585
+ return ['selection', (0, exports.r_Possibly_Optional)($, $p)];
1586
+ });
1587
+ default: return pa.au($[0]);
1588
+ }
1589
+ });
1590
+ });
1591
+ exports.r_Possible_Value_Selection = r_Possible_Value_Selection;
1592
+ const r_Possibly_Optional = ($, $p) => pa.block(() => {
1593
+ const l2s = $p['location 2 string'];
1594
+ const params = $p['parameters'];
1595
+ return pa.cc($['state group'], ($) => {
1596
+ switch ($[0]) {
1597
+ case 'parameter': return pa.ss($, ($) => ['parameter', _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values.signature['resolved parameters'].values, null), {
1598
+ 'reference': $,
1599
+ 'location 2 string': $p['location 2 string']
1600
+ })]);
1601
+ case 'result': return pa.ss($, ($) => ['result', pa.cc($['state group'], ($) => {
1602
+ switch ($[0]) {
1603
+ case 'state group': return pa.ss($, ($) => {
1604
+ const loc = $['property'].location;
1605
+ const p_sibling = pa.cc($['property'], ($) => _i_generic.get_entry($p.parameters.lookups['sibling property resolvers'], {
1606
+ 'reference': $,
1607
+ 'location 2 string': $p['location 2 string']
1608
+ }));
1609
+ const p_state_group = pa.cc($['state group'], ($) => p_sibling.entry.resolver[0] !== 'state group'
1610
+ ? pa.panic("not a 'state group' but a '", p_sibling.entry.resolver[0], "' @ ", $p['location 2 string'](loc))
1611
+ : p_sibling.entry.resolver[1]);
1612
+ const p_result = (0, exports.r_Type_Reference)($.result, {
1613
+ 'location 2 string': $p['location 2 string'],
1614
+ 'parameters': {
1615
+ 'lookups': {
1616
+ 'types': _i_generic.dictionary_to_lookup($p.parameters.values.types.dictionary, null),
1617
+ },
1618
+ 'values': {
1619
+ 'imports': $p.parameters.values.imports,
1620
+ },
1621
+ }
1622
+ });
1623
+ return ['state group', {
1624
+ 'property': p_sibling,
1625
+ 'state group': p_state_group,
1626
+ 'result': p_result,
1627
+ }];
1628
+ });
1629
+ case 'optional value': return pa.ss($, ($) => {
1630
+ const loc = $['property'].location;
1631
+ const p_sibling = pa.cc($['property'], ($) => _i_generic.get_entry($p.parameters.lookups['sibling property resolvers'], {
1632
+ 'reference': $,
1633
+ 'location 2 string': $p['location 2 string']
1634
+ }));
1635
+ const p_optional_value = pa.cc($['optional value'], ($) => p_sibling.entry.resolver[0] !== 'optional'
1636
+ ? pa.panic("not a 'optional' but a '", p_sibling.entry.resolver[0], "' @ ", $p['location 2 string'](loc))
1637
+ : p_sibling.entry.resolver[1]);
1638
+ const p_result = (0, exports.r_Type_Reference)($.result, {
1639
+ 'location 2 string': $p['location 2 string'],
1640
+ 'parameters': {
1641
+ 'lookups': {
1642
+ 'types': _i_generic.dictionary_to_lookup($p.parameters.values.types.dictionary, null),
1643
+ },
1644
+ 'values': {
1645
+ 'imports': $p.parameters.values.imports,
1646
+ },
1647
+ }
1648
+ });
1649
+ return ['optional value', {
1650
+ 'property': p_sibling,
1651
+ 'optional value': p_optional_value,
1652
+ 'result': p_result,
1653
+ }];
1654
+ });
1655
+ default: return pa.au($[0]);
1656
+ }
1657
+ })]);
1658
+ default: return pa.au($[0]);
1659
+ }
1660
+ });
1661
+ });
1662
+ exports.r_Possibly_Optional = r_Possibly_Optional;
1663
+ const r_Guaranteed_Value_Selection = ($, $p) => pa.block(() => {
1664
+ const l2s = $p['location 2 string'];
1665
+ const params = $p['parameters'];
1666
+ return pa.block(() => {
1667
+ const start_location = $.start.location;
1668
+ const p_start = pa.cc($.start['state group'], ($) => {
1669
+ switch ($[0]) {
1670
+ case 'constraint': return pa.ss($, ($) => {
1671
+ return ['constraint', pa.cc($['state group'], ($) => {
1672
+ switch ($[0]) {
1673
+ case 'component': return pa.ss($, ($) => {
1674
+ const loc = $['property'].location;
1675
+ const p_sibling = pa.cc($['property'], ($) => _i_generic.get_entry($p.parameters.lookups['sibling property resolvers'], {
1676
+ 'reference': $,
1677
+ 'location 2 string': $p['location 2 string']
1678
+ }));
1679
+ const x_component = p_sibling.entry.resolver[0] !== 'component'
1680
+ ? pa.panic("not a 'component' but a '", p_sibling.entry.resolver[0], "' @ ", $p['location 2 string'](loc))
1681
+ : p_sibling.entry.resolver[1];
1682
+ const p_constraint = pa.cc($['constraint'], ($) => _i_generic.get_entry(_i_generic.dictionary_to_lookup(x_component.constraints.dictionary, null), {
1683
+ 'reference': $,
1684
+ 'location 2 string': $p['location 2 string']
1685
+ }));
1686
+ return ['component', {
1687
+ 'property': p_sibling,
1688
+ 'constraint': p_constraint
1689
+ }];
1690
+ });
1691
+ case 'reference': return pa.ss($, ($) => {
1692
+ const loc = $['property'].location;
1693
+ const p_sibling = pa.cc($['property'], ($) => _i_generic.get_entry($p.parameters.lookups['sibling property resolvers'], {
1694
+ 'reference': $,
1695
+ 'location 2 string': $p['location 2 string']
1696
+ }));
1697
+ const x_reference = p_sibling.entry.resolver[0] !== 'reference'
1698
+ ? pa.panic("not a 'reference' but a '", p_sibling.entry.resolver[0], "' @ ", $p['location 2 string'](loc))
1699
+ : p_sibling.entry.resolver[1];
1700
+ const x_reference_selected = x_reference.type[0] !== 'selected'
1701
+ ? pa.panic("not a 'selected' but a '", x_reference.type[0], "' @ ", $p['location 2 string'](loc))
1702
+ : x_reference.type[1];
1703
+ const p_constraint = pa.cc($['constraint'], ($) => _i_generic.get_entry(_i_generic.dictionary_to_lookup(x_reference_selected.constraints.dictionary, null), {
1704
+ 'reference': $,
1705
+ 'location 2 string': $p['location 2 string']
1706
+ }));
1707
+ return ['reference', {
1708
+ 'property': p_sibling,
1709
+ 'constraint': p_constraint
1710
+ }];
1711
+ });
1712
+ default: return pa.au($[0]);
1713
+ }
1714
+ })];
1715
+ });
1716
+ case 'list cursor': return pa.ss($, ($) => ['list cursor', null]);
1717
+ case 'linked entry': return pa.ss($, ($) => ['linked entry', null]);
1718
+ case 'option constraint': return pa.ss($, ($) => {
1719
+ const sc = $p.parameters.values['option constraints'].transform(($) => $, () => pa.panic("not in an option @ ", $p['location 2 string'](start_location)));
1720
+ return ['option constraint', _i_generic.get_entry(_i_generic.dictionary_to_lookup(sc, null), {
1721
+ 'reference': $,
1722
+ 'location 2 string': $p['location 2 string'],
1723
+ })];
1724
+ });
1725
+ case 'parameter': return pa.ss($, ($) => ['parameter', _i_generic.get_entry(_i_generic.dictionary_to_lookup($p.parameters.values.signature['resolved parameters'].values, null), {
1726
+ 'reference': $,
1727
+ 'location 2 string': $p['location 2 string']
1728
+ })]);
1729
+ case 'result': return pa.ss($, ($) => ['result', pa.cc($['state group'], ($) => {
1730
+ switch ($[0]) {
1731
+ case 'list': return pa.ss($, ($) => {
1732
+ const loc = $['property'].location;
1733
+ const p_sibling = pa.cc($['property'], ($) => _i_generic.get_entry($p.parameters.lookups['sibling property resolvers'], {
1734
+ 'reference': $,
1735
+ 'location 2 string': $p['location 2 string']
1736
+ }));
1737
+ const p_list_result_a = pa.cc($['list result'], ($) => p_sibling.entry.resolver[0] !== 'list'
1738
+ ? pa.panic("not a 'list' but a '", p_sibling.entry.resolver[0], "' @ ", $p['location 2 string'](loc))
1739
+ : p_sibling.entry.resolver[1]);
1740
+ const p_list_result = p_list_result_a.result.transform(($) => $, () => pa.panic("there is no list result"));
1741
+ return ['list', {
1742
+ 'property': p_sibling,
1743
+ 'list result': p_list_result,
1744
+ }];
1745
+ });
1746
+ case 'state group': return pa.ss($, ($) => {
1747
+ const loc = $['property'].location;
1748
+ const p_sibling = pa.cc($['property'], ($) => _i_generic.get_entry($p.parameters.lookups['sibling property resolvers'], {
1749
+ 'reference': $,
1750
+ 'location 2 string': $p['location 2 string']
1751
+ }));
1752
+ const p_state_group = pa.cc($['state group'], ($) => p_sibling.entry.resolver[0] !== 'state group'
1753
+ ? pa.panic("not a 'state group' but a '", p_sibling.entry.resolver[0], "' @ ", $p['location 2 string'](loc))
1754
+ : p_sibling.entry.resolver[1]);
1755
+ return ['state group', {
1756
+ 'property': p_sibling,
1757
+ 'state group': p_state_group,
1758
+ 'result': (0, exports.r_Type_Reference)($.result, {
1759
+ 'location 2 string': $p['location 2 string'],
1760
+ 'parameters': {
1761
+ 'lookups': {
1762
+ 'types': _i_generic.dictionary_to_lookup($p.parameters.values.types.dictionary, null),
1763
+ },
1764
+ 'values': {
1765
+ 'imports': $p.parameters.values.imports,
1766
+ },
1767
+ }
1768
+ })
1769
+ }];
1770
+ });
1771
+ case 'optional value': return pa.ss($, ($) => {
1772
+ const loc = $['property'].location;
1773
+ const p_sibling = pa.cc($['property'], ($) => _i_generic.get_entry($p.parameters.lookups['sibling property resolvers'], {
1774
+ 'reference': $,
1775
+ 'location 2 string': $p['location 2 string']
1776
+ }));
1777
+ const p_optional_value = pa.cc($['optional value'], ($) => p_sibling.entry.resolver[0] !== 'optional'
1778
+ ? pa.panic("not a 'optional' but a '", p_sibling.entry.resolver[0], "' @ ", $p['location 2 string'](loc))
1779
+ : p_sibling.entry.resolver[1]);
1780
+ return ['optional value', {
1781
+ 'property': p_sibling,
1782
+ 'optional value': p_optional_value,
1783
+ 'result': (0, exports.r_Type_Reference)($.result, {
1784
+ 'location 2 string': $p['location 2 string'],
1785
+ 'parameters': {
1786
+ 'lookups': {
1787
+ 'types': _i_generic.dictionary_to_lookup($p.parameters.values.types.dictionary, null),
1788
+ },
1789
+ 'values': {
1790
+ 'imports': $p.parameters.values.imports,
1791
+ },
1792
+ }
1793
+ })
1794
+ }];
1795
+ });
1796
+ default: return pa.au($[0]);
1797
+ }
1798
+ })]);
1799
+ case 'sibling': return pa.ss($, ($) => ['sibling', _i_generic.get_entry($p.parameters.lookups['sibling property resolvers'], {
1800
+ 'reference': $,
1801
+ 'location 2 string': $p['location 2 string']
1802
+ })]);
1803
+ case 'parent sibling': return pa.ss($, ($) => ['parent sibling', _i_generic.get_entry($p.parameters.lookups['parent sibling property resolvers'], {
1804
+ 'reference': $,
1805
+ 'location 2 string': $p['location 2 string']
1806
+ })]);
1807
+ default: return pa.au($[0]);
1808
+ }
1809
+ });
1810
+ const p_tail = (0, exports.r_Relative_Value_Selection)($.tail, {
1811
+ 'location 2 string': l2s,
1812
+ 'parameters': {
1813
+ 'values': {
1814
+ 'node': pa.block(() => {
1815
+ const pvs = ($) => pa.cc($, ($) => {
1816
+ return pa.cc($, ($) => {
1817
+ switch ($[0]) {
1818
+ case 'parameter': return pa.ss($, ($) => $.entry['data type']['resulting node']);
1819
+ case 'result': return pa.ss($, ($) => pa.cc($, ($) => {
1820
+ switch ($[0]) {
1821
+ case 'state group': return pa.ss($, ($) => $.result['resulting node']);
1822
+ case 'optional value': return pa.ss($, ($) => $.result['resulting node']);
1823
+ default: return pa.au($[0]);
1824
+ }
1825
+ }));
1826
+ default: return pa.au($[0]);
1827
+ }
1828
+ });
1829
+ });
1830
+ const start_loc = $.start.location;
1831
+ const gvs_start = ($) => pa.cc($, ($) => {
1832
+ switch ($[0]) {
1833
+ case 'constraint': return pa.ss($, ($) => pa.cc($, ($) => {
1834
+ switch ($[0]) {
1835
+ case 'component': return pa.ss($, ($) => pa.cc($.constraint.entry.constraint.type, ($) => {
1836
+ switch ($[0]) {
1837
+ case 'state': return pa.ss($, ($) => $.state.entry);
1838
+ case 'optional value': return pa.ss($, ($) => $['selected optional value']);
1839
+ default: return pa.au($[0]);
1840
+ }
1841
+ }));
1842
+ case 'reference': return pa.ss($, ($) => pa.cc($.constraint.entry.constraint.type, ($) => {
1843
+ switch ($[0]) {
1844
+ case 'state': return pa.ss($, ($) => $.state.entry);
1845
+ case 'optional value': return pa.ss($, ($) => $['selected optional value']);
1846
+ default: return pa.au($[0]);
1847
+ }
1848
+ }));
1849
+ default: return pa.au($[0]);
1850
+ }
1851
+ }));
1852
+ case 'parameter': return pa.ss($, ($) => $.entry['data type']['resulting node']);
1853
+ case 'result': return pa.ss($, ($) => pa.cc($, ($) => {
1854
+ switch ($[0]) {
1855
+ case 'state group': return pa.ss($, ($) => $.result['resulting node']);
1856
+ case 'optional value': return pa.ss($, ($) => $.result['resulting node']);
1857
+ case 'list': return pa.ss($, ($) => $['list result']['resulting node']);
1858
+ default: return pa.au($[0]);
1859
+ }
1860
+ }));
1861
+ case 'list cursor': return pa.ss($, ($) => $p.parameters.values['list cursor'].transform(($) => $['resulting node'], () => pa.panic("there is no cursor")));
1862
+ case 'linked entry': return pa.ss($, ($) => $p.parameters.values['linked entry'].transform(($) => $['resulting dictionary'].node, () => pa.panic(`there is no linked entry @ ${$p['location 2 string'](start_loc)}`)));
1863
+ case 'option constraint': return pa.ss($, ($) => pa.cc($.entry, ($) => {
1864
+ switch ($[0]) {
1865
+ case 'state': return pa.ss($, ($) => $.state.entry);
1866
+ case 'assert is set': return pa.ss($, ($) => pvs($));
1867
+ default: return pa.au($[0]);
1868
+ }
1869
+ }));
1870
+ case 'sibling': return pa.ss($, ($) => $.entry.definition);
1871
+ case 'parent sibling': return pa.ss($, ($) => $.entry.definition);
1872
+ default: return pa.au($[0]);
1873
+ }
1874
+ });
1875
+ return gvs_start(p_start);
1876
+ })
1877
+ },
1878
+ 'lookups': null,
1879
+ }
1880
+ });
1881
+ const p_resulting_type = p_tail['resulting node'];
1882
+ return ({
1883
+ 'start': p_start,
1884
+ 'tail': p_tail,
1885
+ 'resulting node': p_resulting_type,
1886
+ });
1887
+ });
1888
+ });
1889
+ exports.r_Guaranteed_Value_Selection = r_Guaranteed_Value_Selection;
1890
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jlc29sdmVycy9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBc0M7QUFFdEMseUVBQTBEO0FBUW5ELE1BQU0sU0FBUyxHQUFvRCxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO0lBQy9GLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ25DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUMvQixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQ2hELENBQUMsRUFDRDtRQUNJLG1CQUFtQixFQUFFLEdBQUc7UUFDeEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFvQixFQUFFO1lBQ3hFLE1BQU0sa0JBQWtCLEdBQXNDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FDN0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUNqQztnQkFDSSxtQkFBbUIsRUFBRSxHQUFHO2dCQUN4QixXQUFXLEVBQUUsQ0FBQzthQUNqQixDQUNKLENBQUMsQ0FBQTtZQUNGLE1BQU0sUUFBUSxHQUE0QixFQUFFLENBQUMsRUFBRSxD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