@bett3r-dev/blueprint-schema 1.6.0 → 1.8.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 (235) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/build/cjs/apply-design.d.ts +5 -5
  3. package/build/cjs/apply-design.d.ts.map +1 -1
  4. package/build/cjs/apply-design.js +21 -5
  5. package/build/cjs/apply-design.js.map +1 -1
  6. package/build/cjs/apply-overrides.d.ts +3 -3
  7. package/build/cjs/apply-overrides.d.ts.map +1 -1
  8. package/build/cjs/apply-overrides.js +5 -1
  9. package/build/cjs/apply-overrides.js.map +1 -1
  10. package/build/cjs/card-channel.d.ts +18 -0
  11. package/build/cjs/card-channel.d.ts.map +1 -0
  12. package/build/cjs/card-channel.js +30 -0
  13. package/build/cjs/card-channel.js.map +1 -0
  14. package/build/cjs/convergence.d.ts +2 -2
  15. package/build/cjs/convergence.d.ts.map +1 -1
  16. package/build/cjs/coverage-links.d.ts +27 -0
  17. package/build/cjs/coverage-links.d.ts.map +1 -0
  18. package/build/cjs/coverage-links.js +117 -0
  19. package/build/cjs/coverage-links.js.map +1 -0
  20. package/build/cjs/design.d.ts +44 -2
  21. package/build/cjs/design.d.ts.map +1 -1
  22. package/build/cjs/design.js +42 -2
  23. package/build/cjs/design.js.map +1 -1
  24. package/build/cjs/diagnostics.d.ts +2 -2
  25. package/build/cjs/diagnostics.d.ts.map +1 -1
  26. package/build/cjs/edge-endpoints.d.ts +33 -0
  27. package/build/cjs/edge-endpoints.d.ts.map +1 -0
  28. package/build/cjs/edge-endpoints.js +83 -0
  29. package/build/cjs/edge-endpoints.js.map +1 -0
  30. package/build/cjs/edges.d.ts +2 -2
  31. package/build/cjs/edges.d.ts.map +1 -1
  32. package/build/cjs/edges.js +2 -1
  33. package/build/cjs/edges.js.map +1 -1
  34. package/build/cjs/effective-design.d.ts +21 -0
  35. package/build/cjs/effective-design.d.ts.map +1 -0
  36. package/build/cjs/effective-design.js +172 -0
  37. package/build/cjs/effective-design.js.map +1 -0
  38. package/build/cjs/entry-points.d.ts +2 -2
  39. package/build/cjs/entry-points.d.ts.map +1 -1
  40. package/build/cjs/find-orphan-nodes.d.ts +3 -3
  41. package/build/cjs/find-orphan-nodes.d.ts.map +1 -1
  42. package/build/cjs/flow-traversal.d.ts +3 -3
  43. package/build/cjs/flow-traversal.d.ts.map +1 -1
  44. package/build/cjs/fork-scenarios.d.ts +44 -0
  45. package/build/cjs/fork-scenarios.d.ts.map +1 -0
  46. package/build/cjs/fork-scenarios.js +83 -0
  47. package/build/cjs/fork-scenarios.js.map +1 -0
  48. package/build/cjs/graph.d.ts +27 -2
  49. package/build/cjs/graph.d.ts.map +1 -1
  50. package/build/cjs/graph.js +36 -0
  51. package/build/cjs/graph.js.map +1 -1
  52. package/build/cjs/handler-scope.d.ts +3 -3
  53. package/build/cjs/handler-scope.d.ts.map +1 -1
  54. package/build/cjs/index.d.ts +9 -0
  55. package/build/cjs/index.d.ts.map +1 -1
  56. package/build/cjs/index.js +9 -0
  57. package/build/cjs/index.js.map +1 -1
  58. package/build/cjs/invariants.d.ts +26 -0
  59. package/build/cjs/invariants.d.ts.map +1 -0
  60. package/build/cjs/invariants.js +39 -0
  61. package/build/cjs/invariants.js.map +1 -0
  62. package/build/cjs/map-links.d.ts +1 -0
  63. package/build/cjs/map-links.d.ts.map +1 -1
  64. package/build/cjs/map-links.js +14 -1
  65. package/build/cjs/map-links.js.map +1 -1
  66. package/build/cjs/map-structure.d.ts +172 -3
  67. package/build/cjs/map-structure.d.ts.map +1 -1
  68. package/build/cjs/map-structure.js +46 -4
  69. package/build/cjs/map-structure.js.map +1 -1
  70. package/build/cjs/map-vocabulary.d.ts +29 -1
  71. package/build/cjs/map-vocabulary.d.ts.map +1 -1
  72. package/build/cjs/map-vocabulary.js +72 -2
  73. package/build/cjs/map-vocabulary.js.map +1 -1
  74. package/build/cjs/nodes.d.ts +11 -1
  75. package/build/cjs/nodes.d.ts.map +1 -1
  76. package/build/cjs/nodes.js +4 -2
  77. package/build/cjs/nodes.js.map +1 -1
  78. package/build/cjs/ops.d.ts +43 -10
  79. package/build/cjs/ops.d.ts.map +1 -1
  80. package/build/cjs/ops.js +1 -1
  81. package/build/cjs/ops.js.map +1 -1
  82. package/build/cjs/overrides.d.ts +5 -2
  83. package/build/cjs/overrides.d.ts.map +1 -1
  84. package/build/cjs/overrides.js.map +1 -1
  85. package/build/cjs/package.json +1 -0
  86. package/build/cjs/reachability.d.ts +4 -4
  87. package/build/cjs/reachability.d.ts.map +1 -1
  88. package/build/cjs/reachability.js +5 -1
  89. package/build/cjs/reachability.js.map +1 -1
  90. package/build/cjs/reality-check.d.ts +4 -4
  91. package/build/cjs/reality-check.d.ts.map +1 -1
  92. package/build/cjs/reality-check.js +52 -9
  93. package/build/cjs/reality-check.js.map +1 -1
  94. package/build/cjs/session-phase.d.ts +80 -0
  95. package/build/cjs/session-phase.d.ts.map +1 -0
  96. package/build/cjs/session-phase.js +97 -0
  97. package/build/cjs/session-phase.js.map +1 -0
  98. package/build/cjs/session.d.ts +21 -0
  99. package/build/cjs/session.d.ts.map +1 -1
  100. package/build/cjs/session.js +19 -0
  101. package/build/cjs/session.js.map +1 -1
  102. package/build/cjs/spec.d.ts +140 -0
  103. package/build/cjs/spec.d.ts.map +1 -0
  104. package/build/cjs/spec.js +514 -0
  105. package/build/cjs/spec.js.map +1 -0
  106. package/build/cjs/topology.d.ts +2 -2
  107. package/build/cjs/topology.d.ts.map +1 -1
  108. package/build/cjs/topology.js +2 -0
  109. package/build/cjs/topology.js.map +1 -1
  110. package/build/cjs/unproduced-events.d.ts +10 -0
  111. package/build/cjs/unproduced-events.d.ts.map +1 -0
  112. package/build/cjs/unproduced-events.js +37 -0
  113. package/build/cjs/unproduced-events.js.map +1 -0
  114. package/build/cjs/validate-design.d.ts +3 -3
  115. package/build/cjs/validate-design.d.ts.map +1 -1
  116. package/build/cjs/validate-design.js +40 -3
  117. package/build/cjs/validate-design.js.map +1 -1
  118. package/build/esm/apply-design.d.ts +5 -5
  119. package/build/esm/apply-design.d.ts.map +1 -1
  120. package/build/esm/apply-design.js +21 -5
  121. package/build/esm/apply-design.js.map +1 -1
  122. package/build/esm/apply-overrides.d.ts +3 -3
  123. package/build/esm/apply-overrides.d.ts.map +1 -1
  124. package/build/esm/apply-overrides.js +5 -1
  125. package/build/esm/apply-overrides.js.map +1 -1
  126. package/build/esm/card-channel.d.ts +18 -0
  127. package/build/esm/card-channel.d.ts.map +1 -0
  128. package/build/esm/card-channel.js +25 -0
  129. package/build/esm/card-channel.js.map +1 -0
  130. package/build/esm/convergence.d.ts +2 -2
  131. package/build/esm/convergence.d.ts.map +1 -1
  132. package/build/esm/coverage-links.d.ts +27 -0
  133. package/build/esm/coverage-links.d.ts.map +1 -0
  134. package/build/esm/coverage-links.js +113 -0
  135. package/build/esm/coverage-links.js.map +1 -0
  136. package/build/esm/design.d.ts +44 -2
  137. package/build/esm/design.d.ts.map +1 -1
  138. package/build/esm/design.js +38 -1
  139. package/build/esm/design.js.map +1 -1
  140. package/build/esm/diagnostics.d.ts +2 -2
  141. package/build/esm/diagnostics.d.ts.map +1 -1
  142. package/build/esm/edge-endpoints.d.ts +33 -0
  143. package/build/esm/edge-endpoints.d.ts.map +1 -0
  144. package/build/esm/edge-endpoints.js +77 -0
  145. package/build/esm/edge-endpoints.js.map +1 -0
  146. package/build/esm/edges.d.ts +2 -2
  147. package/build/esm/edges.d.ts.map +1 -1
  148. package/build/esm/edges.js +2 -1
  149. package/build/esm/edges.js.map +1 -1
  150. package/build/esm/effective-design.d.ts +21 -0
  151. package/build/esm/effective-design.d.ts.map +1 -0
  152. package/build/esm/effective-design.js +169 -0
  153. package/build/esm/effective-design.js.map +1 -0
  154. package/build/esm/entry-points.d.ts +2 -2
  155. package/build/esm/entry-points.d.ts.map +1 -1
  156. package/build/esm/find-orphan-nodes.d.ts +3 -3
  157. package/build/esm/find-orphan-nodes.d.ts.map +1 -1
  158. package/build/esm/flow-traversal.d.ts +3 -3
  159. package/build/esm/flow-traversal.d.ts.map +1 -1
  160. package/build/esm/fork-scenarios.d.ts +44 -0
  161. package/build/esm/fork-scenarios.d.ts.map +1 -0
  162. package/build/esm/fork-scenarios.js +78 -0
  163. package/build/esm/fork-scenarios.js.map +1 -0
  164. package/build/esm/graph.d.ts +27 -2
  165. package/build/esm/graph.d.ts.map +1 -1
  166. package/build/esm/graph.js +33 -0
  167. package/build/esm/graph.js.map +1 -1
  168. package/build/esm/handler-scope.d.ts +3 -3
  169. package/build/esm/handler-scope.d.ts.map +1 -1
  170. package/build/esm/index.d.ts +9 -0
  171. package/build/esm/index.d.ts.map +1 -1
  172. package/build/esm/index.js +9 -0
  173. package/build/esm/index.js.map +1 -1
  174. package/build/esm/invariants.d.ts +26 -0
  175. package/build/esm/invariants.d.ts.map +1 -0
  176. package/build/esm/invariants.js +36 -0
  177. package/build/esm/invariants.js.map +1 -0
  178. package/build/esm/map-links.d.ts +1 -0
  179. package/build/esm/map-links.d.ts.map +1 -1
  180. package/build/esm/map-links.js +14 -1
  181. package/build/esm/map-links.js.map +1 -1
  182. package/build/esm/map-structure.d.ts +172 -3
  183. package/build/esm/map-structure.d.ts.map +1 -1
  184. package/build/esm/map-structure.js +42 -3
  185. package/build/esm/map-structure.js.map +1 -1
  186. package/build/esm/map-vocabulary.d.ts +29 -1
  187. package/build/esm/map-vocabulary.d.ts.map +1 -1
  188. package/build/esm/map-vocabulary.js +64 -1
  189. package/build/esm/map-vocabulary.js.map +1 -1
  190. package/build/esm/nodes.d.ts +11 -1
  191. package/build/esm/nodes.d.ts.map +1 -1
  192. package/build/esm/nodes.js +4 -2
  193. package/build/esm/nodes.js.map +1 -1
  194. package/build/esm/ops.d.ts +43 -10
  195. package/build/esm/ops.d.ts.map +1 -1
  196. package/build/esm/ops.js +1 -1
  197. package/build/esm/ops.js.map +1 -1
  198. package/build/esm/overrides.d.ts +5 -2
  199. package/build/esm/overrides.d.ts.map +1 -1
  200. package/build/esm/overrides.js.map +1 -1
  201. package/build/esm/reachability.d.ts +4 -4
  202. package/build/esm/reachability.d.ts.map +1 -1
  203. package/build/esm/reachability.js +5 -1
  204. package/build/esm/reachability.js.map +1 -1
  205. package/build/esm/reality-check.d.ts +4 -4
  206. package/build/esm/reality-check.d.ts.map +1 -1
  207. package/build/esm/reality-check.js +53 -10
  208. package/build/esm/reality-check.js.map +1 -1
  209. package/build/esm/session-phase.d.ts +80 -0
  210. package/build/esm/session-phase.d.ts.map +1 -0
  211. package/build/esm/session-phase.js +93 -0
  212. package/build/esm/session-phase.js.map +1 -0
  213. package/build/esm/session.d.ts +21 -0
  214. package/build/esm/session.d.ts.map +1 -1
  215. package/build/esm/session.js +17 -0
  216. package/build/esm/session.js.map +1 -1
  217. package/build/esm/spec.d.ts +140 -0
  218. package/build/esm/spec.d.ts.map +1 -0
  219. package/build/esm/spec.js +501 -0
  220. package/build/esm/spec.js.map +1 -0
  221. package/build/esm/topology.d.ts +2 -2
  222. package/build/esm/topology.d.ts.map +1 -1
  223. package/build/esm/topology.js +2 -0
  224. package/build/esm/topology.js.map +1 -1
  225. package/build/esm/unproduced-events.d.ts +10 -0
  226. package/build/esm/unproduced-events.d.ts.map +1 -0
  227. package/build/esm/unproduced-events.js +32 -0
  228. package/build/esm/unproduced-events.js.map +1 -0
  229. package/build/esm/validate-design.d.ts +3 -3
  230. package/build/esm/validate-design.d.ts.map +1 -1
  231. package/build/esm/validate-design.js +41 -4
  232. package/build/esm/validate-design.js.map +1 -1
  233. package/build/tsconfig.tsbuildinfo +1 -1
  234. package/package.json +14 -4
  235. package/schema/map.schema.json +62 -1
@@ -0,0 +1,514 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRACER_BULLET_KIND = exports.SPEC_REQUIRED_SECTIONS = exports.SPEC_SECTION_IDS = exports.SPEC_VERSION = void 0;
4
+ exports.emptySpec = emptySpec;
5
+ exports.isSpecSectionId = isSpecSectionId;
6
+ exports.specPostBatch = specPostBatch;
7
+ exports.specStrikeBatch = specStrikeBatch;
8
+ exports.foldSpecBatch = foldSpecBatch;
9
+ exports.specSourceSeq = specSourceSeq;
10
+ exports.renderBlueprint = renderBlueprint;
11
+ exports.renderDecisions = renderDecisions;
12
+ exports.checkSpecCompleteness = checkSpecCompleteness;
13
+ exports.blueprintFileOf = blueprintFileOf;
14
+ const apply_design_js_1 = require("./apply-design.js");
15
+ const design_js_1 = require("./design.js");
16
+ const effective_design_js_1 = require("./effective-design.js");
17
+ const fork_scenarios_js_1 = require("./fork-scenarios.js");
18
+ const graph_js_1 = require("./graph.js");
19
+ const map_links_js_1 = require("./map-links.js");
20
+ exports.SPEC_VERSION = 1;
21
+ // The written sections in spine order, spelled as the spec-post payload carries them. The decision tree's
22
+ // written entries are its rationales; the tree itself, the artifacts and the provenance header are derived (F7).
23
+ exports.SPEC_SECTION_IDS = [
24
+ 'problem',
25
+ 'solution',
26
+ 'userStories',
27
+ 'decisionTree',
28
+ 'implementationDecisions',
29
+ 'testingDecisions',
30
+ 'risks',
31
+ 'outOfScope',
32
+ 'provenance'
33
+ ];
34
+ function emptySpec() {
35
+ return { specVersion: exports.SPEC_VERSION, entries: [] };
36
+ }
37
+ const recordOf = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
38
+ const listOf = (value) => Array.isArray(value) ? value : [];
39
+ const isText = (value) => typeof value === 'string' && value.length > 0;
40
+ function isSpecSectionId(value) {
41
+ return typeof value === 'string' && exports.SPEC_SECTION_IDS.includes(value);
42
+ }
43
+ const isTextList = (value) => Array.isArray(value) && value.every(isText);
44
+ const isTextRecord = (value) => {
45
+ const record = recordOf(value);
46
+ return record !== undefined && Object.values(record).every(field => typeof field === 'string');
47
+ };
48
+ // A posted entry keeps only the fields SpecEntry names; one this build cannot read folds nothing.
49
+ function postedSpecEntry(value) {
50
+ const entry = recordOf(value);
51
+ if (entry === undefined || !isText(entry.id) || !isSpecSectionId(entry.section) || !isText(entry.kind)
52
+ || typeof entry.body !== 'string')
53
+ return [];
54
+ return [{
55
+ id: entry.id,
56
+ section: entry.section,
57
+ kind: entry.kind,
58
+ ...(typeof entry.title === 'string' ? { title: entry.title } : {}),
59
+ body: entry.body,
60
+ ...(isTextList(entry.refs) ? { refs: [...entry.refs] } : {}),
61
+ ...(isTextRecord(entry.fields) ? { fields: { ...entry.fields } } : {})
62
+ }];
63
+ }
64
+ /** A spec-post's payload as a batch: every readable entry, in payload order. */
65
+ function specPostBatch(payload) {
66
+ return { posted: listOf(recordOf(payload)?.entries).flatMap(postedSpecEntry), struck: [] };
67
+ }
68
+ /** A spec-strike's payload as a batch: every readable id with its reason. */
69
+ function specStrikeBatch(payload) {
70
+ const struck = listOf(recordOf(payload)?.entries).flatMap((value) => {
71
+ const entry = recordOf(value);
72
+ return isText(entry?.id) && typeof entry.reason === 'string' ? [{ id: entry.id, reason: entry.reason }] : [];
73
+ });
74
+ return { posted: [], struck };
75
+ }
76
+ function upsertSpecEntry(spec, entry) {
77
+ return spec.entries.some(held => held.id === entry.id)
78
+ ? { ...spec, entries: spec.entries.map(held => held.id === entry.id ? entry : held) }
79
+ : { ...spec, entries: [...spec.entries, entry] };
80
+ }
81
+ function strikeSpecEntry(spec, { id, reason }) {
82
+ return { ...spec, entries: spec.entries.map(held => held.id === id ? { ...held, struck: { reason } } : held) };
83
+ }
84
+ /**
85
+ * The one spec fold, which both replay copies call (F5, F6). A post upserts by id in place, so a re-post keeps
86
+ * the entry's position and clears a strike; a strike of an id the spec does not hold changes nothing.
87
+ */
88
+ function foldSpecBatch(current, batch) {
89
+ return batch.struck.reduce(strikeSpecEntry, batch.posted.reduce(upsertSpecEntry, current));
90
+ }
91
+ // F8: the seq the rendered state stands at, the last op that can change a rendered byte. A comment, a
92
+ // resolve, an undo of a comment and every verb no fold reads are left out, so appending one moves the
93
+ // head seq and leaves the source seq, and with it both files, as they were.
94
+ const RENDERED_VERB_PREFIXES = ['map-', 'spec-'];
95
+ const RENDERED_DESIGN_VERBS = new Set(['propose', 'modify', 'remove', 'reclassify']);
96
+ function rendersState(op) {
97
+ if (RENDERED_DESIGN_VERBS.has(op.verb) || RENDERED_VERB_PREFIXES.some(prefix => op.verb.startsWith(prefix)))
98
+ return true;
99
+ return op.verb === 'undo' && recordOf(op.payload)?.undoneVerb !== 'comment';
100
+ }
101
+ function specSourceSeq(ops) {
102
+ return ops.reduce((seq, op) => rendersState(op) ? Math.max(seq, op.seq) : seq, 0);
103
+ }
104
+ // F12: map-tree.py's RESOLVED_BY_FALLBACK, the census grammar of the `resolved_by:` line.
105
+ const RESOLVED_BY = { owner: 'human', code: 'code', recommendation: 'recommendation' };
106
+ // decisions.md names who decided: the owner, the owner assenting to the recommendation, or code.
107
+ const DECIDED_BY = { owner: 'owner', recommendation: 'recommendation-assented', code: 'code' };
108
+ const NONE = '_None._';
109
+ const STEP_KEYWORDS = [['given', 'Given'], ['when', 'When'], ['then', 'Then']];
110
+ /** Every line of `text` after the first, indented, so a multi-line body stays inside its list item. */
111
+ const hanging = (text, indent) => text.split('\n').join(`\n${indent}`);
112
+ const bullet = (text) => `- ${hanging(text, ' ')}`;
113
+ // map-tree.py's normalise (each line right-stripped, blank lines dropped at either end), then one closing newline.
114
+ function documentOf(blocks) {
115
+ const lines = blocks.join('\n').split('\n').map(line => line.trimEnd());
116
+ while (lines.length > 0 && lines[0] === '')
117
+ lines.shift();
118
+ while (lines.length > 0 && lines[lines.length - 1] === '')
119
+ lines.pop();
120
+ return `${lines.join('\n')}\n`;
121
+ }
122
+ function section(heading, lines) {
123
+ const body = [...lines];
124
+ while (body.length > 0 && body[body.length - 1] === '')
125
+ body.pop();
126
+ return ['', `## ${heading}`, '', ...(body.length > 0 ? body : [NONE])];
127
+ }
128
+ /**
129
+ * Specification v1: blueprint.md opens with front matter, `key` naming the item (the session's first ticket, when it has
130
+ * one) and `session` its session, so an agent tells this item's design from another's.
131
+ */
132
+ const frontMatterOf = (manifest) => [
133
+ '---',
134
+ ...(manifest.ticketRefs.length > 0 ? [`key: ${manifest.ticketRefs[0]}`] : []),
135
+ `session: ${manifest.sessionId}`,
136
+ '---',
137
+ ''
138
+ ];
139
+ const headerOf = (title, manifest, sourceSeq) => [
140
+ `# ${title} — ${manifest.name}`,
141
+ '',
142
+ `Session: ${manifest.sessionId}`,
143
+ `Tickets: ${manifest.ticketRefs.length > 0 ? manifest.ticketRefs.join(', ') : 'none'}`,
144
+ `Source seq: ${sourceSeq}`
145
+ ];
146
+ // A struck entry is not part of the spec; the rest keep the order they were first posted in.
147
+ function liveSpecOf(spec) {
148
+ const entries = spec.entries.filter(entry => entry.struck === undefined);
149
+ return { of: wanted => entries.filter(entry => entry.section === wanted) };
150
+ }
151
+ /** An entry's lead line (its title, when it has one, then its body) and one line per named field, by name. */
152
+ function entryLines(entry, lead = '') {
153
+ const fields = Object.keys(entry.fields ?? {}).sort().map(name => `${name}: ${entry.fields?.[name]}`);
154
+ return [`${lead}${entry.title === undefined ? '' : `**${entry.title}**: `}${entry.body}`, ...fields].join('\n');
155
+ }
156
+ const optionLabel = (card, optionId) => card.options.find(option => option.id === optionId)?.label ?? optionId;
157
+ const rejectedText = (option) => `${option.label}: ${option.rejectedBecause ?? 'no reason recorded'}${option.evidence !== undefined && option.evidence.length > 0 ? ` (${option.evidence.join(', ')})` : ''}`;
158
+ /**
159
+ * A decided fork's why: the spec's rationale for it where one is written, else the card's recommendation when
160
+ * the chosen option is the recommended one, else no rationale; a recommendation's why never explains an overturn.
161
+ */
162
+ function whyOf(fork, card, option, spec) {
163
+ const written = spec.of('decisionTree').filter(entry => entry.refs?.includes(fork.id) === true).map(entry => entry.body);
164
+ if (written.length > 0)
165
+ return written.join(' ');
166
+ return card.recommendation.option === option ? card.recommendation.why : 'no rationale recorded';
167
+ }
168
+ // F12: map-tree.py render_md's lines (decided(source), Why:, resolved_by:, Rejected —), without its markers.
169
+ function decisionTreeOf(map, spec) {
170
+ return map.forks.flatMap((fork) => {
171
+ const { status, card } = fork;
172
+ if (status.kind === 'moot')
173
+ return [`### ${fork.id} — ${fork.title}`, '', `moot — ${status.reason}`, ''];
174
+ if (card === undefined) {
175
+ const waits = fork.restsOn.length > 0 ? fork.restsOn.join(', ') : 'an unrecorded fork';
176
+ return [`### ${fork.id} — ${fork.title}`, '', `LOCKED — waits on ${waits}`, ''];
177
+ }
178
+ if (status.kind === 'open') {
179
+ return [`### ${fork.id} — ${fork.title}`, '', `OPEN — recommended: ${optionLabel(card, card.recommendation.option)}`, '',
180
+ `Why: ${card.recommendation.why}`, ''];
181
+ }
182
+ const rejected = card.options.filter(option => option.id !== status.option);
183
+ return [
184
+ `### ${fork.id} — ${fork.title}: ${optionLabel(card, status.option)}`, '',
185
+ `decided(${status.source})`, '',
186
+ `Why: ${whyOf(fork, card, status.option, spec)}`, '',
187
+ `resolved_by: ${RESOLVED_BY[status.source]}`, '',
188
+ ...(rejected.length > 0 ? [...rejected.map(option => `- Rejected — ${rejectedText(option)}`), ''] : [])
189
+ ];
190
+ });
191
+ }
192
+ function nodeRef(map, id) {
193
+ const node = map.nodes.find(candidate => candidate.id === id);
194
+ if (node === undefined)
195
+ return id;
196
+ return `${id} "${node.title}"${node.struck === undefined ? '' : ' (struck)'}`;
197
+ }
198
+ const stepLines = (steps) => STEP_KEYWORDS.flatMap(([key, keyword]) => steps[key].map((step, index) => ` - ${index === 0 ? keyword : 'And'} ${step.text}`));
199
+ /**
200
+ * Specification v1: a scenario's id as blueprint.md prints it, one token with no space or backtick. A stored scenario's
201
+ * is its map id; a derived one's is its key, `derived:<fork>/<option>/<walk>`, with the walk, a use case's words,
202
+ * percent-encoded, so decodeURIComponent of the walk gives the map's key back.
203
+ */
204
+ const scenarioIdOf = (id) => {
205
+ if (!id.startsWith(fork_scenarios_js_1.FORK_SCENARIO_KEY_PREFIX))
206
+ return id;
207
+ const [forkId, optionId, ...walk] = id.slice(fork_scenarios_js_1.FORK_SCENARIO_KEY_PREFIX.length).split('/');
208
+ return `${fork_scenarios_js_1.FORK_SCENARIO_KEY_PREFIX}${forkId}/${optionId}/${encodeURIComponent(walk.join('/'))}`;
209
+ };
210
+ // ESAS-296: each stored scenario not struck, with its status and any review reason, then the scenarios the
211
+ // decided forks' chosen walks propose and no stored scenario holds yet.
212
+ function scenariosOf(map) {
213
+ const report = (0, fork_scenarios_js_1.joinForkScenarios)(map);
214
+ const reviewOf = new Map(report.derived.map(judgement => [judgement.scenarioId, judgement.reviewReason]));
215
+ const stored = map.scenarios.filter(scenario => scenario.status.kind !== 'struck').flatMap(scenario => {
216
+ const review = reviewOf.get(scenario.id);
217
+ return [
218
+ `- ${scenarioIdOf(scenario.id)} — ${scenario.title} (${scenario.status.kind}${review === undefined || review === null ? '' : `, under review: ${review}`})`,
219
+ ...stepLines(scenario)
220
+ ];
221
+ });
222
+ const proposed = report.proposals.flatMap(proposal => [
223
+ `- ${scenarioIdOf(proposal.key)} — ${proposal.title} (from ${proposal.forkId}, ${proposal.state === 'ready' ? 'ready' : 'needs Gherkin'})`,
224
+ ...(proposal.state === 'ready' ? stepLines(proposal) : [` - ${proposal.text}`])
225
+ ]);
226
+ return [...stored, ...proposed];
227
+ }
228
+ // C8: only an agreed observation is part of the handoff.
229
+ const observationsOf = (map) => map.observations
230
+ .filter(observation => observation.status.kind === 'agreed')
231
+ .map(({ id, title, expect }) => `- ${id} — ${title}: ${expect.direction} to ${expect.target} over ${expect.window}${expect.baseline === undefined ? '' : ` (baseline ${expect.baseline})`}`);
232
+ // C9: rule and errorCodes, with the other fields a node or a modify sets, one line each under the artifact.
233
+ const DETAIL_LABELS = {
234
+ label: 'Label',
235
+ subdomain: 'Subdomain',
236
+ resourceKey: 'Resource key',
237
+ queries: 'Queries',
238
+ rule: 'Rule',
239
+ errorCodes: 'Error codes',
240
+ generic: 'Generic'
241
+ };
242
+ function detailLines(fields, shown) {
243
+ return shown.flatMap(field => {
244
+ const value = fields[field];
245
+ if (value === undefined)
246
+ return [];
247
+ const text = field === 'errorCodes' ? value.join(', ')
248
+ : field === 'queries' ? JSON.stringify(value)
249
+ : field === 'generic' ? (value ? 'yes' : 'no')
250
+ : String(value);
251
+ return [` ${DETAIL_LABELS[field]}: ${text}`];
252
+ });
253
+ }
254
+ const NODE_DETAIL_FIELDS = ['resourceKey', 'queries', 'rule', 'errorCodes', 'generic'];
255
+ /**
256
+ * Specification v1: the type of the node `id` names, which a modify or removal prints so an agent knows what the
257
+ * extractor can show: the type its id spells (the extractor's `<subdomain>_<abbrev>_<slug>`), else the type of the node
258
+ * the design proposes under it, else `unknown`.
259
+ */
260
+ const nodeTypeOf = (design, id) => (0, graph_js_1.parseNodeId)(id)?.type ?? (design.propose?.nodes ?? []).find(node => (0, apply_design_js_1.proposedNodeId)(node) === id)?.type ?? 'unknown';
261
+ /** Specification v1: the id a modify gives its node: its label or subdomain set anew, when its id spells them. */
262
+ function modifiedIdOf(id, set) {
263
+ const parsed = (0, graph_js_1.parseNodeId)(id);
264
+ if (parsed === undefined || (set.label === undefined && set.subdomain === undefined))
265
+ return id;
266
+ return (0, graph_js_1.nodeId)(set.subdomain ?? parsed.subdomain, parsed.type, set.label ?? parsed.slug);
267
+ }
268
+ // F7: the design's proposals, modifies and removals, each element with the deliverables its map links serve.
269
+ // Specification v1: a modify names its node's type and, when it changes the id, the new id after `→`; a node removal
270
+ // names its type. The effective design is rendered (effectiveDesignOf): a modify or removal of one of the design's own
271
+ // proposals is folded into it, so only the modifies and removals of code remain as lines of their own.
272
+ function artifactsOf(replayed, replayedMap) {
273
+ const { design, map } = (0, effective_design_js_1.effectiveDesignOf)(replayed, replayedMap);
274
+ const serves = (esId) => {
275
+ const deliverables = map.links.filter(link => link.esId === esId).map(link => nodeRef(map, link.deliverableId));
276
+ return deliverables.length > 0 ? `, serves ${deliverables.join(', ')}` : '';
277
+ };
278
+ const nodes = (design.propose?.nodes ?? []).flatMap(node => {
279
+ const id = (0, apply_design_js_1.proposedNodeId)(node);
280
+ return [`- ${node.type} ${node.label} in ${node.subdomain} (\`${id}\`)${serves(id)}`, ...detailLines(node, NODE_DETAIL_FIELDS)];
281
+ });
282
+ const edges = (design.propose?.edges ?? []).map(edge => `- edge \`${edge.from}\` → \`${edge.to}\` (${edge.kind}${edge.handlers === undefined ? '' : `; handlers ${edge.handlers.join(', ')}`})`);
283
+ const modifies = (design.modify ?? []).flatMap(entry => {
284
+ const renamed = modifiedIdOf(entry.id, entry.set ?? {});
285
+ return [
286
+ `- modifies ${nodeTypeOf(design, entry.id)} \`${entry.id}\`${renamed === entry.id ? '' : ` → \`${renamed}\``}${serves(entry.id)}`,
287
+ ...detailLines(entry.set ?? {}, design_js_1.MODIFIABLE_NODE_FIELDS),
288
+ ...(entry.note === undefined || entry.note.trim() === '' ? [] : [` Change: ${entry.note}`])
289
+ ];
290
+ });
291
+ const removes = (design.remove ?? []).map(entry => entry.kind === 'node'
292
+ ? `- removes ${nodeTypeOf(design, entry.id)} \`${entry.id}\``
293
+ : `- removes edge \`${entry.from}\` → \`${entry.to}\` (${entry.edgeKind})`);
294
+ return [...nodes, ...edges, ...modifies, ...removes];
295
+ }
296
+ const paragraphs = (entries) => entries.flatMap((entry, index) => index === 0 ? [entryLines(entry)] : ['', entryLines(entry)]);
297
+ const bullets = (entries) => entries.map(entry => bullet(entryLines(entry)));
298
+ const MAP_LEVEL_WORDS = { goal: 'goal', mapActor: 'actor', impact: 'impact', deliverable: 'deliverable' };
299
+ // F1: a story's refs, each named by what it is on the map (its impact and its actor).
300
+ function refsOf(map, refs) {
301
+ if (refs.length === 0)
302
+ return '';
303
+ const named = refs.map(ref => {
304
+ const node = map.nodes.find(candidate => candidate.id === ref);
305
+ if (node !== undefined)
306
+ return `${MAP_LEVEL_WORDS[node.level]} ${nodeRef(map, ref)}`;
307
+ const fork = map.forks.find(candidate => candidate.id === ref);
308
+ return fork === undefined ? ref : `fork ${ref} "${fork.title}"`;
309
+ });
310
+ return ` (${named.join(', ')})`;
311
+ }
312
+ /**
313
+ * F7, F8: blueprint.md, the written sections in spine order with the derived ones (decision tree, scenarios,
314
+ * observations, artifacts) read from the same fold, under a provenance header that prints the source seq.
315
+ * Specification v1: its normative parts, which an implementation agent parses, are the front matter's `key`, the
316
+ * `## Scenarios` (each `- <id> — <title> (<note>)` with its Given, When and Then) and the `## Artifacts` (each node and
317
+ * edge with its id, type and verb); every other section is prose for people.
318
+ */
319
+ function renderBlueprint(input) {
320
+ const { design, map, spec: folded } = input.replay(input.ops);
321
+ const spec = liveSpecOf(folded);
322
+ const stories = spec.of('userStories').map((story, index) => {
323
+ const [lead, ...fields] = entryLines(story).split('\n');
324
+ return `${index + 1}. ${hanging([`${lead}${refsOf(map, story.refs ?? [])}`, ...fields].join('\n'), ' ')}`;
325
+ });
326
+ const tests = spec.of('testingDecisions').map(entry => bullet(entryLines(entry, entry.kind === 'tracer-bullet' ? 'Tracer bullet: ' : '')));
327
+ return documentOf([
328
+ ...frontMatterOf(input.manifest),
329
+ ...headerOf('Blueprint', input.manifest, specSourceSeq(input.ops)),
330
+ ...section('Problem', paragraphs(spec.of('problem'))),
331
+ ...section('Solution', paragraphs(spec.of('solution'))),
332
+ ...section('User Stories', stories),
333
+ ...section('Resolved decision tree', decisionTreeOf(map, spec)),
334
+ ...section('Scenarios', scenariosOf(map)),
335
+ ...section('Observations', observationsOf(map)),
336
+ ...section('Implementation Decisions', bullets(spec.of('implementationDecisions'))),
337
+ ...section('Testing Decisions', tests),
338
+ ...section('Risks', bullets(spec.of('risks'))),
339
+ ...section('Out of Scope', bullets(spec.of('outOfScope'))),
340
+ ...section('Artifacts', artifactsOf(design, map)),
341
+ ...section('Provenance', bullets(spec.of('provenance')))
342
+ ]);
343
+ }
344
+ /**
345
+ * decisions.md: per fork its question, the chosen option, who decided, why, and every rejected option with its
346
+ * rejectedBecause; an open, moot or locked fork says so instead.
347
+ */
348
+ function renderDecisions(input) {
349
+ const { map, spec: folded } = input.replay(input.ops);
350
+ const spec = liveSpecOf(folded);
351
+ const forks = map.forks.flatMap((fork) => {
352
+ const { status, card } = fork;
353
+ const head = ['', `## ${fork.id}`, '', `Question: ${fork.title}`];
354
+ if (status.kind === 'moot')
355
+ return [...head, `Status: moot — ${status.reason}`];
356
+ if (card === undefined)
357
+ return [...head, `Status: locked — waits on ${fork.restsOn.length > 0 ? fork.restsOn.join(', ') : 'an unrecorded fork'}`];
358
+ if (status.kind === 'open') {
359
+ return [...head, `Status: open — recommended: ${optionLabel(card, card.recommendation.option)}`, `Why: ${card.recommendation.why}`];
360
+ }
361
+ const rejected = card.options.filter(option => option.id !== status.option);
362
+ return [
363
+ ...head,
364
+ `Chosen: ${optionLabel(card, status.option)}`,
365
+ `Decided by: ${DECIDED_BY[status.source]}`,
366
+ `Why: ${whyOf(fork, card, status.option, spec)}`,
367
+ ...(rejected.length > 0 ? ['', 'Rejected:', ...rejected.map(option => bullet(rejectedText(option)))] : [])
368
+ ];
369
+ });
370
+ return documentOf([
371
+ ...headerOf('Decisions', input.manifest, specSourceSeq(input.ops)),
372
+ ...(forks.length > 0 ? forks : ['', NONE])
373
+ ]);
374
+ }
375
+ /** The written sections that must hold a live entry, per scope; User Stories and the rationales have their own codes. */
376
+ exports.SPEC_REQUIRED_SECTIONS = {
377
+ map: ['problem', 'solution'],
378
+ design: ['problem', 'solution', 'implementationDecisions', 'testingDecisions', 'risks', 'outOfScope', 'provenance']
379
+ };
380
+ // The codes a map-stage check leaves out: the eventstorming elements and the tracer bullet are the design stage's.
381
+ // ESAS-330 (S5): the program-stage codes join them; a map-stage check runs before Map agreed.
382
+ const DESIGN_ONLY_CODES = new Set([
383
+ 'tracer-bullet', 'element-unlinked', 'deliverable-without-element', 'element-review-pending', 'stage-not-program'
384
+ ]);
385
+ /** The spine's Testing Decisions name exactly one tracer bullet. */
386
+ exports.TRACER_BULLET_KIND = 'tracer-bullet';
387
+ const forkOpenGaps = ({ map }) => map.forks
388
+ .filter(fork => fork.status.kind === 'open')
389
+ .map(fork => ({ code: 'fork-open', section: 'decisionTree', ref: fork.id, message: `${fork.id} "${fork.title}" is still open` }));
390
+ const sectionEmptyGaps = (spec, scope) => exports.SPEC_REQUIRED_SECTIONS[scope]
391
+ .filter(wanted => spec.of(wanted).length === 0)
392
+ .map(wanted => ({ code: 'section-empty', section: wanted, message: `${wanted} has no entry` }));
393
+ function tracerBulletGaps(spec) {
394
+ const count = spec.of('testingDecisions').filter(entry => entry.kind === exports.TRACER_BULLET_KIND).length;
395
+ return count === 1 ? [] : [{ code: 'tracer-bullet', section: 'testingDecisions', message: `Testing Decisions names ${count} tracer bullets, not exactly one` }];
396
+ }
397
+ // S5: element-unlinked is joinMapLinks' unlinked list: every element the design proposes or modifies that no map
398
+ // link names. The check holds no merged graph, so it drops nothing as removed from the graph.
399
+ const elementUnlinkedGaps = ({ design, map }) => (0, map_links_js_1.joinMapLinks)((0, graph_js_1.emptyGraph)(), design, map).unlinked
400
+ .map(esId => ({ code: 'element-unlinked', ref: esId, message: `${esId} serves no deliverable: no map link names it` }));
401
+ // F1: every live impact has a live story whose refs name it.
402
+ function impactWithoutStoryGaps({ map }, spec) {
403
+ const told = new Set(spec.of('userStories').flatMap(story => story.refs ?? []));
404
+ return map.nodes
405
+ .filter(node => node.level === 'impact' && node.struck === undefined && !told.has(node.id))
406
+ .map(node => ({ code: 'impact-without-story', section: 'userStories', ref: node.id, message: `impact ${node.id} "${node.title}" has no story` }));
407
+ }
408
+ // F3 (overturn): a fork decided on an option its card did not recommend needs a written rationale ref'ing it.
409
+ function rationaleMissingGaps({ map }, spec) {
410
+ const explained = new Set(spec.of('decisionTree').flatMap(entry => entry.refs ?? []));
411
+ return map.forks.flatMap((fork) => {
412
+ const { status, card } = fork;
413
+ if (status.kind !== 'decided' || card === undefined || status.option === card.recommendation.option || explained.has(fork.id))
414
+ return [];
415
+ return [{ code: 'rationale-missing', section: 'decisionTree', ref: fork.id,
416
+ message: `${fork.id} was decided on ${optionLabel(card, status.option)}, not the recommended ${optionLabel(card, card.recommendation.option)}, and no rationale says why` }];
417
+ });
418
+ }
419
+ // F1 (struck impact): a live entry ref'ing a struck map node, scenario or observation is anchored to nothing.
420
+ function refStruckGaps({ map, spec }) {
421
+ const struck = new Set([
422
+ ...map.nodes.filter(node => node.struck !== undefined).map(node => node.id),
423
+ ...[...map.scenarios, ...map.observations].filter(example => example.status.kind === 'struck').map(example => example.id)
424
+ ]);
425
+ return spec.entries.filter(entry => entry.struck === undefined).flatMap((entry) => {
426
+ const dead = (entry.refs ?? []).filter(ref => struck.has(ref));
427
+ return dead.length === 0 ? [] : [{ code: 'ref-struck', section: entry.section, ref: entry.id, message: `${entry.id} refs struck ${dead.join(', ')}` }];
428
+ });
429
+ }
430
+ // F3 (stale prose): a human semantic op past the agent's sync cursor is one the design agent has not folded; the
431
+ // same predicate the pending guard reads (blueprint-store sync-point.ts). A cursor never moved reads as seq 0.
432
+ const ownerChangesUnreadGaps = ({ ops, agentSyncSeq }) => ops
433
+ .filter(op => op.author === 'human' && op.class === 'semantic' && op.seq > (agentSyncSeq ?? 0))
434
+ .map(op => ({ code: 'owner-changes-unread', ref: String(op.seq),
435
+ message: `the owner's ${op.verb} at seq ${op.seq} is past the agent's last sync; ask the design agent to fold the change`
436
+ + ' (on the board: wait for its round to finish, or press Design to start one)' }));
437
+ // An open question is a comment thread nobody resolved. A reply joins the thread its commentId chain roots in, as the
438
+ // board's buildThreads groups it (sticky-notes-board discussion-threads.ts), and the thread is open while any of its
439
+ // remarks is unresolved. Which comments hold it open is scaffold-core's rule, not the board's: an unresolved reaction
440
+ // asks nothing, so it holds none open (blueprint-scaffold-core filter.ts `holds`). The board's thread `open` counts
441
+ // any unresolved comment, a reaction included (discussion-threads.ts:60); that divergence is deliberate.
442
+ function questionOpenGaps({ design }) {
443
+ const comments = design.comments ?? [];
444
+ const byId = new Map(comments.map(comment => [comment.id, comment]));
445
+ const rootOf = (comment) => {
446
+ const visited = new Set();
447
+ let current = comment;
448
+ while ((0, design_js_1.isCommentIdAnchor)(current.anchor)) {
449
+ visited.add(current.id);
450
+ const parent = byId.get(current.anchor.commentId);
451
+ if (parent === undefined || visited.has(parent.id))
452
+ break;
453
+ current = parent;
454
+ }
455
+ return current;
456
+ };
457
+ const open = new Set(comments.filter(comment => !comment.resolved && comment.reaction === undefined).map(comment => rootOf(comment).id));
458
+ return comments.filter(comment => open.has(comment.id))
459
+ .map(comment => ({ code: 'question-open', ref: comment.id, message: `the thread ${comment.id} is unresolved` }));
460
+ }
461
+ // F3 owner amendment: no stored scenario is still only proposed. A walk joinForkScenarios proposes and no stored
462
+ // scenario holds is not a stored scenario, so it is no gap.
463
+ const scenarioProposedGaps = ({ map }) => map.scenarios
464
+ .filter(scenario => scenario.status.kind === 'proposed')
465
+ .map(scenario => ({ code: 'scenario-proposed', ref: scenario.id, message: `${scenario.id} "${scenario.title}": scenario still proposed` }));
466
+ // ESAS-330 S5: deliverable-without-element is joinMapLinks' unserved list: every live deliverable no map link names.
467
+ // Under emptyGraph() any link serves (A1), so a struck deliverable is the only one excused without a link.
468
+ const deliverableWithoutElementGaps = ({ design, map }) => {
469
+ const titleOf = new Map(map.nodes.map(node => [node.id, node.title]));
470
+ return (0, map_links_js_1.joinMapLinks)((0, graph_js_1.emptyGraph)(), design, map).unserved
471
+ .map(id => ({ code: 'deliverable-without-element', ref: id, message: `deliverable ${id} "${titleOf.get(id) ?? ''}": no element serves it` }));
472
+ };
473
+ // ESAS-330 S5: a re-review flag the map fold holds is an element whose linked map entry changed after agreement.
474
+ const elementReviewPendingGaps = ({ map }) => (map.review ?? [])
475
+ .map(flag => ({ code: 'element-review-pending', ref: flag.esId,
476
+ message: `${flag.esId} needs re-review: its deliverable ${flag.deliverableId} changed (${flag.cause}, ${flag.verb}) after Map agreed` }));
477
+ // ESAS-330 S5: the map fold sets agreedAt only from a stage-advance; without one the session never entered the program stage.
478
+ const stageNotProgramGaps = ({ map }) => map.agreedAt !== undefined ? [] : [
479
+ { code: 'stage-not-program', message: 'the map was never agreed: press Map agreed before Design done' }
480
+ ];
481
+ /**
482
+ * ESAS-331 F3, S5: every gap between the session's state and a handoff, in the order SpecGapCode lists the codes.
483
+ * ESAS-330's three codes read the map fold's own agreedAt and review, and joinMapLinks' unserved list.
484
+ */
485
+ function checkSpecCompleteness(input, scope = 'design') {
486
+ const spec = liveSpecOf(input.spec);
487
+ const gaps = [
488
+ ...forkOpenGaps(input),
489
+ ...sectionEmptyGaps(spec, scope),
490
+ ...tracerBulletGaps(spec),
491
+ ...elementUnlinkedGaps(input),
492
+ ...impactWithoutStoryGaps(input, spec),
493
+ ...rationaleMissingGaps(input, spec),
494
+ ...refStruckGaps(input),
495
+ ...ownerChangesUnreadGaps(input),
496
+ ...questionOpenGaps(input),
497
+ ...scenarioProposedGaps(input),
498
+ ...deliverableWithoutElementGaps(input),
499
+ ...elementReviewPendingGaps(input),
500
+ ...stageNotProgramGaps(input)
501
+ ].filter(gap => scope === 'design' || !DESIGN_ONLY_CODES.has(gap.code));
502
+ return { complete: gaps.length === 0, gaps };
503
+ }
504
+ /**
505
+ * F10, F14: the two files Design done's flush commits, or the gaps that refuse it. `replay` is the deviation D2
506
+ * names: blueprint-schema cannot fold design and map, so the caller passes the replay it holds.
507
+ */
508
+ function blueprintFileOf(ops, manifest, agentSyncSeq, replay) {
509
+ const { gaps } = checkSpecCompleteness({ ops, ...replay(ops), agentSyncSeq }, 'design');
510
+ if (gaps.length > 0)
511
+ return { ok: false, gaps };
512
+ return { ok: true, files: { 'blueprint.md': renderBlueprint({ ops, manifest, replay }), 'decisions.md': renderDecisions({ ops, manifest, replay }) } };
513
+ }
514
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/spec.ts"],"names":[],"mappings":";;;AA4EA,8BAEC;AASD,0CAEC;AA0BD,sCAEC;AAGD,0CAMC;AAgBD,sCAEC;AAqED,sCAEC;AAuPD,0CAwBC;AAMD,0CAwBC;AAoID,sDAkBC;AAQD,0CAMC;AAxqBD,uDAAmD;AACnD,2CAAwI;AACxI,+DAA0D;AAC1D,2DAAkF;AAClF,yCAA6D;AAC7D,iDAA8C;AAWjC,QAAA,YAAY,GAAgB,CAAC,CAAC;AAI3C,0GAA0G;AAC1G,iHAAiH;AACpG,QAAA,gBAAgB,GAAG;IAC9B,SAAS;IACT,UAAU;IACV,aAAa;IACb,cAAc;IACd,yBAAyB;IACzB,kBAAkB;IAClB,OAAO;IACP,YAAY;IACZ,YAAY;CACJ,CAAC;AA4CX,SAAgB,SAAS;IACvB,OAAO,EAAE,WAAW,EAAE,oBAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,QAAQ,GAAG,CAAE,KAAc,EAAwC,EAAE,CACzE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,SAAS,CAAC;AAExH,MAAM,MAAM,GAAG,CAAE,KAAc,EAAc,EAAE,CAAC,KAAK,CAAC,OAAO,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAEpF,MAAM,MAAM,GAAG,CAAE,KAAc,EAAoB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAEpG,SAAgB,eAAe,CAAE,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAM,wBAAuC,CAAC,QAAQ,CAAE,KAAK,CAAE,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,GAAG,CAAE,KAAc,EAAsB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAE,KAAK,CAAE,IAAI,KAAK,CAAC,KAAK,CAAE,MAAM,CAAE,CAAC;AAE5G,MAAM,YAAY,GAAG,CAAE,KAAc,EAAoC,EAAE;IACzE,MAAM,MAAM,GAAG,QAAQ,CAAE,KAAK,CAAE,CAAC;IACjC,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAE,MAAM,CAAE,CAAC,KAAK,CAAE,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAE,CAAC;AACrG,CAAC,CAAC;AAEF,kGAAkG;AAClG,SAAS,eAAe,CAAE,KAAc;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAE,KAAK,CAAE,CAAC;IAChC,IAAK,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAE,KAAK,CAAC,EAAE,CAAE,IAAI,CAAC,eAAe,CAAE,KAAK,CAAC,OAAO,CAAE,IAAI,CAAC,MAAM,CAAE,KAAK,CAAC,IAAI,CAAE;WACxG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAG,OAAO,EAAE,CAAC;IAChD,OAAO,CAAE;YACP,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,CAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,CAAE,UAAU,CAAE,KAAK,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAE,GAAG,KAAK,CAAC,IAAI,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAE,YAAY,CAAE,KAAK,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,CAAE,CAAC;AACN,CAAC;AAED,gFAAgF;AAChF,SAAgB,aAAa,CAAE,OAAgB;IAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAE,QAAQ,CAAE,OAAO,CAAE,EAAE,OAAO,CAAE,CAAC,OAAO,CAAE,eAAe,CAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACnG,CAAC;AAED,6EAA6E;AAC7E,SAAgB,eAAe,CAAE,OAAgB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAE,QAAQ,CAAE,OAAO,CAAE,EAAE,OAAO,CAAE,CAAC,OAAO,CAAC,CAAE,KAAK,EAAiB,EAAE;QACtF,MAAM,KAAK,GAAG,QAAQ,CAAE,KAAK,CAAE,CAAC;QAChC,OAAO,MAAM,CAAE,KAAK,EAAE,EAAE,CAAE,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAE,IAAc,EAAE,KAAgB;IACxD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAE;QACtD,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAE,EAAE;QACvF,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAE,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAE,IAAc,EAAE,EAAE,EAAE,EAAE,MAAM,EAAc;IAClE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAE,EAAE,CAAC;AACnH,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAE,OAAiB,EAAE,KAAgB;IAChE,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,eAAe,EAAE,OAAO,CAAE,CAAC,CAAC;AAChG,CAAC;AAyDD,sGAAsG;AACtG,sGAAsG;AACtG,4EAA4E;AAC5E,MAAM,sBAAsB,GAAG,CAAE,MAAM,EAAE,OAAO,CAAE,CAAC;AAEnD,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAE,CAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAE,CAAE,CAAC;AAE9G,SAAS,YAAY,CAAE,EAAgC;IACrD,IAAK,qBAAqB,CAAC,GAAG,CAAE,EAAE,CAAC,IAAI,CAAE,IAAI,sBAAsB,CAAC,IAAI,CAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAE,MAAM,CAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/H,OAAO,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAE,EAAE,CAAC,OAAO,CAAE,EAAE,UAAU,KAAK,SAAS,CAAC;AAChF,CAAC;AAED,SAAgB,aAAa,CAAE,GAAkB;IAC/C,OAAO,GAAG,CAAC,MAAM,CAAC,CAAE,GAAG,EAAE,EAAE,EAAG,EAAE,CAAC,YAAY,CAAE,EAAE,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAE,CAAC;AAC3F,CAAC;AAED,0FAA0F;AAC1F,MAAM,WAAW,GAAqD,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AAEzI,iGAAiG;AACjG,MAAM,UAAU,GAAqD,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAEjJ,MAAM,IAAI,GAAG,SAAS,CAAC;AAEvB,MAAM,aAAa,GAAG,CAAE,CAAE,OAAO,EAAE,OAAO,CAAE,EAAE,CAAE,MAAM,EAAE,MAAM,CAAE,EAAE,CAAE,MAAM,EAAE,MAAM,CAAE,CAAW,CAAC;AAEhG,uGAAuG;AACvG,MAAM,OAAO,GAAG,CAAE,IAAY,EAAE,MAAc,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,CAAE,CAAC,IAAI,CAAE,KAAM,MAAO,EAAE,CAAE,CAAC;AAEvG,MAAM,MAAM,GAAG,CAAE,IAAY,EAAW,EAAE,CAAC,KAAM,OAAO,CAAE,IAAI,EAAE,IAAI,CAAG,EAAE,CAAC;AAE1E,mHAAmH;AACnH,SAAS,UAAU,CAAE,MAAyB;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC,KAAK,CAAE,IAAI,CAAE,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7E,OAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAE,CAAC,CAAE,KAAK,EAAE;QAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9D,OAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,KAAK,EAAE;QAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3E,OAAO,GAAI,KAAK,CAAC,IAAI,CAAE,IAAI,CAAG,IAAI,CAAC;AACrC,CAAC;AAED,SAAS,OAAO,CAAE,OAAe,EAAE,KAAwB;IACzD,MAAM,IAAI,GAAG,CAAE,GAAG,KAAK,CAAE,CAAC;IAC1B,OAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,KAAK,EAAE;QAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvE,OAAO,CAAE,EAAE,EAAE,MAAO,OAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAI,CAAE,CAAC,CAAE,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAE,QAAsB,EAAa,EAAE,CAAC;IAC5D,KAAK;IACL,GAAG,CAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,QAAS,QAAQ,CAAC,UAAU,CAAE,CAAC,CAAG,EAAE,CAAE,CAAC,CAAC,CAAC,EAAE,CAAE;IACrF,YAAa,QAAQ,CAAC,SAAU,EAAE;IAClC,KAAK;IACL,EAAE;CACH,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAE,KAAa,EAAE,QAAsB,EAAE,SAAiB,EAAa,EAAE,CAAC;IACzF,KAAM,KAAM,MAAO,QAAQ,CAAC,IAAK,EAAE;IACnC,EAAE;IACF,YAAa,QAAQ,CAAC,SAAU,EAAE;IAClC,YAAa,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,MAAO,EAAE;IAC1F,eAAgB,SAAU,EAAE;CAC7B,CAAC;AAIF,6FAA6F;AAC7F,SAAS,UAAU,CAAE,IAAc;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAE,CAAC;IAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAE,EAAE,CAAC;AAC/E,CAAC;AAED,8GAA8G;AAC9G,SAAS,UAAU,CAAE,KAAgB,EAAE,IAAI,GAAG,EAAE;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAE,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,GAAI,IAAK,KAAM,KAAK,CAAC,MAAM,EAAE,CAAE,IAAI,CAAG,EAAE,CAAE,CAAC;IAC/G,OAAO,CAAE,GAAI,IAAK,GAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAM,KAAK,CAAC,KAAM,MAAO,GAAI,KAAK,CAAC,IAAK,EAAE,EAAE,GAAG,MAAM,CAAE,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC;AAC9H,CAAC;AAED,MAAM,WAAW,GAAG,CAAE,IAAiB,EAAE,QAAgB,EAAW,EAAE,CACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAE,EAAE,KAAK,IAAI,QAAQ,CAAC;AAE3E,MAAM,YAAY,GAAG,CAAE,MAAiB,EAAW,EAAE,CACnD,GAAI,MAAM,CAAC,KAAM,KAAM,MAAM,CAAC,eAAe,IAAI,oBAAqB,GACpE,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAE,IAAI,CAAG,GAAG,CAAC,CAAC,CAAC,EAAG,EAAE,CAAC;AAEjH;;;GAGG;AACH,SAAS,KAAK,CAAE,IAAa,EAAE,IAAiB,EAAE,MAAc,EAAE,IAAc;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAE,cAAc,CAAE,CAAC,MAAM,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAE,IAAI,CAAC,EAAE,CAAE,KAAK,IAAI,CAAE,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;IACjI,IAAK,OAAO,CAAC,MAAM,GAAG,CAAC;QAAG,OAAO,OAAO,CAAC,IAAI,CAAE,GAAG,CAAE,CAAC;IACrD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACnG,CAAC;AAED,6GAA6G;AAC7G,SAAS,cAAc,CAAE,GAAY,EAAE,IAAc;IACnD,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAE,IAAI,EAAa,EAAE;QAC5C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAK,MAAM,CAAC,IAAI,KAAK,MAAM;YAAG,OAAO,CAAE,OAAQ,IAAI,CAAC,EAAG,MAAO,IAAI,CAAC,KAAM,EAAE,EAAE,EAAE,EAAE,UAAW,MAAM,CAAC,MAAO,EAAE,EAAE,EAAE,CAAE,CAAC;QACnH,IAAK,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;YACzF,OAAO,CAAE,OAAQ,IAAI,CAAC,EAAG,MAAO,IAAI,CAAC,KAAM,EAAE,EAAE,EAAE,EAAE,qBAAsB,KAAM,EAAE,EAAE,EAAE,CAAE,CAAC;QAC1F,CAAC;QACD,IAAK,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAE,OAAQ,IAAI,CAAC,EAAG,MAAO,IAAI,CAAC,KAAM,EAAE,EAAE,EAAE,EAAE,uBAAwB,WAAW,CAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAG,EAAE,EAAE,EAAE;gBAC/H,QAAS,IAAI,CAAC,cAAc,CAAC,GAAI,EAAE,EAAE,EAAE,CAAE,CAAC;QAC9C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAE,CAAC;QAC9E,OAAO;YACL,OAAQ,IAAI,CAAC,EAAG,MAAO,IAAI,CAAC,KAAM,KAAM,WAAW,CAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAG,EAAE,EAAE,EAAE;YACjF,WAAY,MAAM,CAAC,MAAO,GAAG,EAAE,EAAE;YACjC,QAAS,KAAK,CAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAG,EAAE,EAAE,EAAE;YACxD,gBAAiB,WAAW,CAAE,MAAM,CAAC,MAAM,CAAG,EAAE,EAAE,EAAE;YACpD,GAAG,CAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,QAAQ,CAAC,GAAG,CAAE,MAAM,CAAC,EAAE,CAAC,gBAAiB,YAAY,CAAE,MAAM,CAAG,EAAE,CAAE,EAAE,EAAE,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAE,GAAY,EAAE,EAAc;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC;IAChE,IAAK,IAAI,KAAK,SAAS;QAAG,OAAO,EAAE,CAAC;IACpC,OAAO,GAAI,EAAG,KAAM,IAAI,CAAC,KAAM,IAAK,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAY,EAAE,CAAC;AACtF,CAAC;AAED,MAAM,SAAS,GAAG,CAAE,KAAmD,EAAa,EAAE,CACpF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAE,GAAG,EAAE,OAAO,CAAE,EAAE,EAAE,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC,GAAG,CAAC,CAAE,IAAI,EAAE,KAAK,EAAG,EAAE,CAAC,OAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAM,IAAK,IAAI,CAAC,IAAK,EAAE,CAAE,CAAC,CAAC;AAE7I;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAE,EAAU,EAAW,EAAE;IAC5C,IAAK,CAAC,EAAE,CAAC,UAAU,CAAE,4CAAwB,CAAE;QAAE,OAAO,EAAE,CAAC;IAC3D,MAAM,CAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAE,GAAG,EAAE,CAAC,KAAK,CAAE,4CAAwB,CAAC,MAAM,CAAE,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC;IAC/F,OAAO,GAAI,4CAAyB,GAAI,MAAO,IAAK,QAAS,IAAK,kBAAkB,CAAE,IAAI,CAAC,IAAI,CAAE,GAAG,CAAE,CAAE,EAAE,CAAC;AAC7G,CAAC,CAAC;AAEF,2GAA2G;AAC3G,wEAAwE;AACxE,SAAS,WAAW,CAAE,GAAY;IAChC,MAAM,MAAM,GAAG,IAAA,qCAAiB,EAAE,GAAG,CAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAE,SAAS,CAAC,EAAE,CAAC,CAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAE,CAAE,CAAC,CAAC;IAC/G,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAE,CAAC,OAAO,CAAE,QAAQ,CAAC,EAAE;QACvG,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAE,QAAQ,CAAC,EAAE,CAAE,CAAC;QAC3C,OAAO;YACL,KAAM,YAAY,CAAE,QAAQ,CAAC,EAAE,CAAG,MAAO,QAAQ,CAAC,KAAM,KAAM,QAAQ,CAAC,MAAM,CAAC,IAAK,GAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAoB,MAAO,EAAG,GAAG;YACvK,GAAG,SAAS,CAAE,QAAQ,CAAE;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAE,QAAQ,CAAC,EAAE,CAAC;QACrD,KAAM,YAAY,CAAE,QAAQ,CAAC,GAAG,CAAG,MAAO,QAAQ,CAAC,KAAM,UAAW,QAAQ,CAAC,MAAO,KAAM,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAgB,GAAG;QACpJ,GAAG,CAAE,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAE,QAAQ,CAAE,CAAC,CAAC,CAAC,CAAE,OAAQ,QAAQ,CAAC,IAAK,EAAE,CAAE,CAAC;KACxF,CAAC,CAAC;IACH,OAAO,CAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAE,CAAC;AACpC,CAAC;AAED,yDAAyD;AACzD,MAAM,cAAc,GAAG,CAAE,GAAY,EAAa,EAAE,CAAC,GAAG,CAAC,YAAY;KAClE,MAAM,CAAE,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAE;KAC7D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAC7B,KAAM,EAAG,MAAO,KAAM,KAAM,MAAM,CAAC,SAAU,OAAQ,MAAM,CAAC,MAAO,SAAU,MAAM,CAAC,MAAO,GAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAe,MAAM,CAAC,QAAS,GAAI,EAAE,CAAE,CAAC;AAEhL,4GAA4G;AAC5G,MAAM,aAAa,GAAiE;IAClF,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,cAAc;IAC3B,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,aAAa;IACzB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,SAAS,WAAW,CAAE,MAAqC,EAAE,KAAgD;IAC3G,OAAO,KAAK,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAE,KAAK,CAAE,CAAC;QAC9B,IAAK,KAAK,KAAK,SAAS;YAAG,OAAO,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,KAAK,YAAY,CAAC,CAAC,CAAG,KAAmB,CAAC,IAAI,CAAE,IAAI,CAAE;YACtE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAE,KAAK,CAAE;gBAC7C,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAE;oBAC9C,CAAC,CAAC,MAAM,CAAE,KAAK,CAAE,CAAC;QACxB,OAAO,CAAE,KAAM,aAAa,CAAE,KAAK,CAAG,KAAM,IAAK,EAAE,CAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,kBAAkB,GAA8C,CAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAE,CAAC;AAEpI;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAE,MAAkB,EAAE,EAAU,EAAW,EAAE,CAC9D,IAAA,sBAAW,EAAE,EAAE,CAAE,EAAE,IAAI,IAAI,CAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,CAAC,IAAA,gCAAc,EAAE,IAAI,CAAE,KAAK,EAAE,CAAE,EAAE,IAAI,IAAI,SAAS,CAAC;AAE7H,kHAAkH;AAClH,SAAS,YAAY,CAAE,EAAU,EAAE,GAAkC;IACnE,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAE,EAAE,CAAE,CAAC;IACjC,IAAK,MAAM,KAAK,SAAS,IAAI,CAAE,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,CAAE;QAAE,OAAO,EAAE,CAAC;IACnG,OAAO,IAAA,iBAAM,EAAE,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAE,CAAC;AAC5F,CAAC;AAED,6GAA6G;AAC7G,qHAAqH;AACrH,uHAAuH;AACvH,uGAAuG;AACvG,SAAS,WAAW,CAAE,QAAoB,EAAE,WAAoB;IAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,uCAAiB,EAAE,QAAQ,EAAE,WAAW,CAAE,CAAC;IACnE,MAAM,MAAM,GAAG,CAAE,IAAY,EAAW,EAAE;QACxC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAE,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAE,GAAG,EAAE,IAAI,CAAC,aAAa,CAAE,CAAC,CAAC;QACrH,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAa,YAAY,CAAC,IAAI,CAAE,IAAI,CAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAE,IAAI,CAAC,EAAE;QAC3D,MAAM,EAAE,GAAG,IAAA,gCAAc,EAAE,IAAI,CAAE,CAAC;QAClC,OAAO,CAAE,KAAM,IAAI,CAAC,IAAK,IAAK,IAAI,CAAC,KAAM,OAAQ,IAAI,CAAC,SAAU,OAAQ,EAAG,MAAO,MAAM,CAAE,EAAE,CAAG,EAAE,EAAE,GAAG,WAAW,CAAE,IAAI,EAAE,kBAAkB,CAAE,CAAE,CAAC;IAClJ,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,CAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CACvD,YAAa,IAAI,CAAC,IAAK,UAAW,IAAI,CAAC,EAAG,OAAQ,IAAI,CAAC,IAAK,GAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAE,IAAI,CAAG,EAAG,GAAG,CAAE,CAAC;IACxJ,MAAM,QAAQ,GAAG,CAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE;QACvD,MAAM,OAAO,GAAG,YAAY,CAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO;YACL,cAAe,UAAU,CAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAG,MAAO,KAAK,CAAC,EAAG,KAAM,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAS,OAAQ,IAAK,GAAI,MAAM,CAAE,KAAK,CAAC,EAAE,CAAG,EAAE;YAC/I,GAAG,WAAW,CAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,kCAAsB,CAAE;YACzD,GAAG,CAAE,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,aAAc,KAAK,CAAC,IAAK,EAAE,CAAE,CAAC;SAClG,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,CAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;QACxE,CAAC,CAAC,aAAc,UAAU,CAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAG,MAAO,KAAK,CAAC,EAAG,IAAI;QACnE,CAAC,CAAC,oBAAqB,KAAK,CAAC,IAAK,UAAW,KAAK,CAAC,EAAG,OAAQ,KAAK,CAAC,QAAS,GAAG,CAAE,CAAC;IACrF,OAAO,CAAE,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,GAAG,CAAE,OAA6B,EAAa,EAAE,CAC/D,OAAO,CAAC,OAAO,CAAC,CAAE,KAAK,EAAE,KAAK,EAAG,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,UAAU,CAAE,KAAK,CAAE,CAAE,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,UAAU,CAAE,KAAK,CAAE,CAAE,CAAC,CAAC;AAE3G,MAAM,OAAO,GAAG,CAAE,OAA6B,EAAa,EAAE,CAAC,OAAO,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAE,UAAU,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC;AAEnH,MAAM,eAAe,GAAmD,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAE1J,sFAAsF;AACtF,SAAS,MAAM,CAAE,GAAY,EAAE,IAA2B;IACxD,IAAK,IAAI,CAAC,MAAM,KAAK,CAAC;QAAG,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,CAAC,EAAE;QAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,CAAE,CAAC;QACjE,IAAK,IAAI,KAAK,SAAS;YAAG,OAAO,GAAI,eAAe,CAAE,IAAI,CAAC,KAAK,CAAG,IAAK,OAAO,CAAE,GAAG,EAAE,GAAG,CAAG,EAAE,CAAC;QAC/F,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,CAAE,CAAC;QACjE,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAS,GAAI,KAAM,IAAI,CAAC,KAAM,GAAG,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,OAAO,KAAM,KAAK,CAAC,IAAI,CAAE,IAAI,CAAG,GAAG,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAE,KAAsB;IACrD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,GAAG,CAAE,CAAC;IAChE,MAAM,IAAI,GAAG,UAAU,CAAE,MAAM,CAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAE,aAAa,CAAE,CAAC,GAAG,CAAC,CAAE,KAAK,EAAE,KAAK,EAAG,EAAE;QAC9D,MAAM,CAAE,IAAI,EAAE,GAAG,MAAM,CAAE,GAAG,UAAU,CAAE,KAAK,CAAE,CAAC,KAAK,CAAE,IAAI,CAAE,CAAC;QAC9D,OAAO,GAAI,KAAK,GAAG,CAAE,KAAM,OAAO,CAAE,CAAE,GAAI,IAAK,GAAI,MAAM,CAAE,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAE,EAAE,EAAE,GAAG,MAAM,CAAE,CAAC,IAAI,CAAE,IAAI,CAAE,EAAE,KAAK,CAAG,EAAE,CAAC;IAC7H,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAE,kBAAkB,CAAE,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAE,UAAU,CAAE,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,CAAC;IACjJ,OAAO,UAAU,CAAC;QAChB,GAAG,aAAa,CAAE,KAAK,CAAC,QAAQ,CAAE;QAClC,GAAG,QAAQ,CAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAE,KAAK,CAAC,GAAG,CAAE,CAAC;QACrE,GAAG,OAAO,CAAE,SAAS,EAAE,UAAU,CAAE,IAAI,CAAC,EAAE,CAAE,SAAS,CAAE,CAAC,CAAC;QACzD,GAAG,OAAO,CAAE,UAAU,EAAE,UAAU,CAAE,IAAI,CAAC,EAAE,CAAE,UAAU,CAAE,CAAC,CAAC;QAC3D,GAAG,OAAO,CAAE,cAAc,EAAE,OAAO,CAAE;QACrC,GAAG,OAAO,CAAE,wBAAwB,EAAE,cAAc,CAAE,GAAG,EAAE,IAAI,CAAE,CAAC;QAClE,GAAG,OAAO,CAAE,WAAW,EAAE,WAAW,CAAE,GAAG,CAAE,CAAC;QAC5C,GAAG,OAAO,CAAE,cAAc,EAAE,cAAc,CAAE,GAAG,CAAE,CAAC;QAClD,GAAG,OAAO,CAAE,0BAA0B,EAAE,OAAO,CAAE,IAAI,CAAC,EAAE,CAAE,yBAAyB,CAAE,CAAC,CAAC;QACvF,GAAG,OAAO,CAAE,mBAAmB,EAAE,KAAK,CAAE;QACxC,GAAG,OAAO,CAAE,OAAO,EAAE,OAAO,CAAE,IAAI,CAAC,EAAE,CAAE,OAAO,CAAE,CAAC,CAAC;QAClD,GAAG,OAAO,CAAE,cAAc,EAAE,OAAO,CAAE,IAAI,CAAC,EAAE,CAAE,YAAY,CAAE,CAAC,CAAC;QAC9D,GAAG,OAAO,CAAE,WAAW,EAAE,WAAW,CAAE,MAAM,EAAE,GAAG,CAAE,CAAC;QACpD,GAAG,OAAO,CAAE,YAAY,EAAE,OAAO,CAAE,IAAI,CAAC,EAAE,CAAE,YAAY,CAAE,CAAC,CAAC;KAC7D,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAE,KAAsB;IACrD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAE,KAAK,CAAC,GAAG,CAAE,CAAC;IACxD,MAAM,IAAI,GAAG,UAAU,CAAE,MAAM,CAAE,CAAC;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAE,IAAI,EAAa,EAAE;QACnD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAE,EAAE,EAAE,MAAO,IAAI,CAAC,EAAG,EAAE,EAAE,EAAE,EAAE,aAAc,IAAI,CAAC,KAAM,EAAE,CAAE,CAAC;QACxE,IAAK,MAAM,CAAC,IAAI,KAAK,MAAM;YAAG,OAAO,CAAE,GAAG,IAAI,EAAE,kBAAmB,MAAM,CAAC,MAAO,EAAE,CAAE,CAAC;QACtF,IAAK,IAAI,KAAK,SAAS;YAAG,OAAO,CAAE,GAAG,IAAI,EAAE,6BAA8B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,oBAAqB,EAAE,CAAE,CAAC;QAC1J,IAAK,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAE,GAAG,IAAI,EAAE,+BAAgC,WAAW,CAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAG,EAAE,EAAE,QAAS,IAAI,CAAC,cAAc,CAAC,GAAI,EAAE,CAAE,CAAC;QAC9I,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAE,CAAC;QAC9E,OAAO;YACL,GAAG,IAAI;YACP,WAAY,WAAW,CAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAG,EAAE;YACjD,eAAgB,UAAU,CAAE,MAAM,CAAC,MAAM,CAAG,EAAE;YAC9C,QAAS,KAAK,CAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAG,EAAE;YACpD,GAAG,CAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAE,YAAY,CAAE,MAAM,CAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClH,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;QAChB,GAAG,QAAQ,CAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAE,KAAK,CAAC,GAAG,CAAE,CAAC;QACrE,GAAG,CAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,IAAI,CAAE,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC;AAQD,yHAAyH;AAC5G,QAAA,sBAAsB,GAAuE;IACxG,GAAG,EAAE,CAAE,SAAS,EAAE,UAAU,CAAE;IAC9B,MAAM,EAAE,CAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,CAAE;CACtH,CAAC;AAEF,mHAAmH;AACnH,8FAA8F;AAC9F,MAAM,iBAAiB,GAA6B,IAAI,GAAG,CAAe;IACxE,eAAe,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,mBAAmB;CAClH,CAAE,CAAC;AAEJ,oEAAoE;AACvD,QAAA,kBAAkB,GAAG,eAAe,CAAC;AAElD,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,EAAkB,EAAc,EAAE,CAAC,GAAG,CAAC,KAAK;KACpE,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAE;KAC7C,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,GAAI,IAAI,CAAC,EAAG,KAAM,IAAI,CAAC,KAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAEzI,MAAM,gBAAgB,GAAG,CAAE,IAAc,EAAE,KAAqB,EAAc,EAAE,CAAC,8BAAsB,CAAE,KAAK,CAAE;KAC7G,MAAM,CAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAE,MAAM,CAAE,CAAC,MAAM,KAAK,CAAC,CAAE;KAClD,GAAG,CAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAI,MAAO,eAAe,EAAE,CAAC,CAAC,CAAC;AAErG,SAAS,gBAAgB,CAAE,IAAc;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAE,kBAAkB,CAAE,CAAC,MAAM,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,0BAAkB,CAAE,CAAC,MAAM,CAAC;IACxG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,2BAA4B,KAAM,kCAAkC,EAAE,CAAE,CAAC;AACtK,CAAC;AAED,iHAAiH;AACjH,8FAA8F;AAC9F,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,EAAkB,EAAc,EAAE,CAAC,IAAA,2BAAY,EAAE,IAAA,qBAAU,GAAE,EAAE,MAAM,EAAE,GAAG,CAAE,CAAC,QAAQ;KAC5H,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAI,IAAK,8CAA8C,EAAE,CAAC,CAAC,CAAC;AAE7H,6DAA6D;AAC7D,SAAS,sBAAsB,CAAC,EAAE,GAAG,EAAkB,EAAE,IAAc;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAE,IAAI,CAAC,EAAE,CAAE,aAAa,CAAE,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC,KAAK;SACb,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAE,CAAC;SAC7F,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,UAAW,IAAI,CAAC,EAAG,KAAM,IAAI,CAAC,KAAM,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAC3J,CAAC;AAED,8GAA8G;AAC9G,SAAS,oBAAoB,CAAC,EAAE,GAAG,EAAkB,EAAE,IAAc;IACnE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAE,IAAI,CAAC,EAAE,CAAE,cAAc,CAAE,CAAC,OAAO,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1F,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAE,IAAI,EAAc,EAAE;QAC7C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAK,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,SAAS,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAE;YAAE,OAAO,EAAE,CAAC;QAC5I,OAAO,CAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;gBACzE,OAAO,EAAE,GAAI,IAAI,CAAC,EAAG,mBAAoB,WAAW,CAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAG,yBAA0B,WAAW,CAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAG,6BAA6B,EAAE,CAAE,CAAC;IAC5L,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8GAA8G;AAC9G,SAAS,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAkB;IAClD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAE;QACtB,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAE,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAE;QAC/E,GAAG,CAAE,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,YAAY,CAAE,CAAC,MAAM,CAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAE,CAAC,GAAG,CAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAE;KAChI,CAAE,CAAC;IACJ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAE,CAAC,OAAO,CAAC,CAAE,KAAK,EAAc,EAAE;QAC/F,MAAM,IAAI,GAAG,CAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,GAAI,KAAK,CAAC,EAAG,gBAAiB,IAAI,CAAC,IAAI,CAAE,IAAI,CAAG,EAAE,EAAE,CAAE,CAAC;IACjK,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iHAAiH;AACjH,+GAA+G;AAC/G,MAAM,sBAAsB,GAAG,CAAC,EAAE,GAAG,EAAE,YAAY,EAAkB,EAAc,EAAE,CAAC,GAAG;KACtF,MAAM,CAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,OAAO,IAAI,EAAE,CAAC,KAAK,KAAK,UAAU,IAAI,EAAE,CAAC,GAAG,GAAG,CAAE,YAAY,IAAI,CAAC,CAAE,CAAC;KACjG,GAAG,CAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,CAAE,EAAE,CAAC,GAAG,CAAE;IAChE,OAAO,EAAE,eAAgB,EAAE,CAAC,IAAK,WAAY,EAAE,CAAC,GAAI,yEAAyE;UACzH,6EAA6E,EAAE,CAAC,CAAC,CAAC;AAE1F,sHAAsH;AACtH,qHAAqH;AACrH,sHAAsH;AACtH,oHAAoH;AACpH,yGAAyG;AACzG,SAAS,gBAAgB,CAAC,EAAE,MAAM,EAAkB;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAE,QAAQ,CAAC,GAAG,CAAE,OAAO,CAAC,EAAE,CAAC,CAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAE,CAAE,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,CAAE,OAAsB,EAAkB,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,OAAQ,IAAA,6BAAiB,EAAE,OAAO,CAAC,MAAM,CAAE,EAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAE,OAAO,CAAC,EAAE,CAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAE,CAAC;YACpD,IAAK,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAE,MAAM,CAAC,EAAE,CAAE;gBAAE,MAAM;YAC7D,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAE,QAAQ,CAAC,MAAM,CAAE,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAE,CAAC,GAAG,CAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAE,OAAO,CAAE,CAAC,EAAE,CAAE,CAAC,CAAC;IAChJ,OAAO,QAAQ,CAAC,MAAM,CAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAE,OAAO,CAAC,EAAE,CAAE,CAAC;SACvD,GAAG,CAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,cAAe,OAAO,CAAC,EAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACxH,CAAC;AAED,iHAAiH;AACjH,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,CAAC,EAAE,GAAG,EAAkB,EAAc,EAAE,CAAC,GAAG,CAAC,SAAS;KAChF,MAAM,CAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAE;KACzD,GAAG,CAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,GAAI,QAAQ,CAAC,EAAG,KAAM,QAAQ,CAAC,KAAM,4BAA4B,EAAE,CAAC,CAAC,CAAC;AAEnJ,qHAAqH;AACrH,2GAA2G;AAC3G,MAAM,6BAA6B,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,EAAkB,EAAc,EAAE;IACpF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,CAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAE,CAAE,CAAC,CAAC;IAC3E,OAAO,IAAA,2BAAY,EAAE,IAAA,qBAAU,GAAE,EAAE,MAAM,EAAE,GAAG,CAAE,CAAC,QAAQ;SACtD,GAAG,CAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,eAAgB,EAAG,KAAM,OAAO,CAAC,GAAG,CAAE,EAAE,CAAE,IAAI,EAAG,yBAAyB,EAAE,CAAC,CAAC,CAAC;AACzJ,CAAC,CAAC;AAEF,iHAAiH;AACjH,MAAM,wBAAwB,GAAG,CAAC,EAAE,GAAG,EAAkB,EAAc,EAAE,CAAC,CAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;KAC1F,GAAG,CAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI;IAC7D,OAAO,EAAE,GAAI,IAAI,CAAC,IAAK,qCAAsC,IAAI,CAAC,aAAc,aAAc,IAAI,CAAC,KAAM,KAAM,IAAI,CAAC,IAAK,oBAAoB,EAAE,CAAC,CAAC,CAAC;AAEtJ,8HAA8H;AAC9H,MAAM,mBAAmB,GAAG,CAAC,EAAE,GAAG,EAAkB,EAAc,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrG,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,+DAA+D,EAAE;CACxG,CAAC;AAEF;;;GAGG;AACH,SAAgB,qBAAqB,CAAE,KAAqB,EAAE,QAAwB,QAAQ;IAC5F,MAAM,IAAI,GAAG,UAAU,CAAE,KAAK,CAAC,IAAI,CAAE,CAAC;IACtC,MAAM,IAAI,GAAG;QACX,GAAG,YAAY,CAAE,KAAK,CAAE;QACxB,GAAG,gBAAgB,CAAE,IAAI,EAAE,KAAK,CAAE;QAClC,GAAG,gBAAgB,CAAE,IAAI,CAAE;QAC3B,GAAG,mBAAmB,CAAE,KAAK,CAAE;QAC/B,GAAG,sBAAsB,CAAE,KAAK,EAAE,IAAI,CAAE;QACxC,GAAG,oBAAoB,CAAE,KAAK,EAAE,IAAI,CAAE;QACtC,GAAG,aAAa,CAAE,KAAK,CAAE;QACzB,GAAG,sBAAsB,CAAE,KAAK,CAAE;QAClC,GAAG,gBAAgB,CAAE,KAAK,CAAE;QAC5B,GAAG,oBAAoB,CAAE,KAAK,CAAE;QAChC,GAAG,6BAA6B,CAAE,KAAK,CAAE;QACzC,GAAG,wBAAwB,CAAE,KAAK,CAAE;QACpC,GAAG,mBAAmB,CAAE,KAAK,CAAE;KAChC,CAAC,MAAM,CAAE,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAE,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;IAC3E,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC;AAID;;;GAGG;AACH,SAAgB,eAAe,CAC7B,GAAkB,EAAE,QAAsB,EAAE,YAA2B,EAAE,MAAkB;IAE3F,MAAM,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAE,EAAE,GAAG,EAAE,GAAG,MAAM,CAAE,GAAG,CAAE,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAE,CAAC;IAC5F,IAAK,IAAI,CAAC,MAAM,GAAG,CAAC;QAAG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AACzJ,CAAC"}
@@ -1,5 +1,5 @@
1
- import { EdgeKind } from './edges.js';
2
- import { NodeType } from './nodes.js';
1
+ import type { EdgeKind } from './edges.js';
2
+ import type { NodeType } from './nodes.js';
3
3
  export type TopologyRule = {
4
4
  from: NodeType;
5
5
  kind: EdgeKind;
@@ -1 +1 @@
1
- {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AA0DF,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAElD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAc,CAAC;AAEjE,wBAAgB,aAAa,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAI,OAAO,CAErF;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAI,SAAS,QAAQ,EAAE,CAEpF"}
1
+ {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AA6DF,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAElD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAc,CAAC;AAEjE,wBAAgB,aAAa,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAI,OAAO,CAErF;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAI,SAAS,QAAQ,EAAE,CAEpF"}
@@ -14,6 +14,8 @@ const ARTIFACT_TYPES = [
14
14
  const RAW_RULES = [
15
15
  { from: 'command', kind: 'handled-by', to: 'aggregate' },
16
16
  { from: 'command', kind: 'handled-by', to: 'system' },
17
+ // ESAS-305: the rule a command must satisfy before its handler runs; owned by that handler, so no owner edge.
18
+ { from: 'command', kind: 'guarded-by', to: 'invariant' },
17
19
  { from: 'command', kind: 'produces', to: 'event' },
18
20
  { from: 'aggregate', kind: 'emits', to: 'event' },
19
21
  { from: 'system', kind: 'emits', to: 'event' },
@@ -1 +1 @@
1
- {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { BlueprintGraph } from './graph.js';
2
+ export type UnproducedEvent = {
3
+ id: string;
4
+ subdomain: string;
5
+ subdomainHasCode: boolean;
6
+ message: string;
7
+ };
8
+ export declare const unproducedEventMessage: (subdomain: string, subdomainHasCode: boolean) => string;
9
+ export declare const findUnproducedEvents: (graph: BlueprintGraph) => UnproducedEvent[];
10
+ //# sourceMappingURL=unproduced-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unproduced-events.d.ts","sourceRoot":"","sources":["../../src/unproduced-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAElB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAO,MAAM,sBAAsB,GAAK,WAAW,MAAM,EAAE,kBAAkB,OAAO,KAAI,MAEC,CAAC;AAE1F,eAAO,MAAM,oBAAoB,GAAK,OAAO,cAAc,KAAI,eAAe,EA2B7E,CAAC"}