@slowcook-ai/cli 0.19.0-alpha.8 → 0.19.1

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 (194) hide show
  1. package/AGENTS.md +240 -0
  2. package/REPORTING.md +193 -0
  3. package/dist/cli.js +78 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/brand/index.d.ts +26 -0
  6. package/dist/commands/brand/index.d.ts.map +1 -0
  7. package/dist/commands/brand/index.js +257 -0
  8. package/dist/commands/brand/index.js.map +1 -0
  9. package/dist/commands/brew/agent.d.ts +7 -2
  10. package/dist/commands/brew/agent.d.ts.map +1 -1
  11. package/dist/commands/brew/agent.js +9 -0
  12. package/dist/commands/brew/agent.js.map +1 -1
  13. package/dist/commands/brew/halt.d.ts +26 -0
  14. package/dist/commands/brew/halt.d.ts.map +1 -1
  15. package/dist/commands/brew/halt.js.map +1 -1
  16. package/dist/commands/brew/index.d.ts.map +1 -1
  17. package/dist/commands/brew/index.js +142 -18
  18. package/dist/commands/brew/index.js.map +1 -1
  19. package/dist/commands/brew/pair-navigator.d.ts +119 -0
  20. package/dist/commands/brew/pair-navigator.d.ts.map +1 -0
  21. package/dist/commands/brew/pair-navigator.js +187 -0
  22. package/dist/commands/brew/pair-navigator.js.map +1 -0
  23. package/dist/commands/budget/index.d.ts +2 -0
  24. package/dist/commands/budget/index.d.ts.map +1 -0
  25. package/dist/commands/budget/index.js +252 -0
  26. package/dist/commands/budget/index.js.map +1 -0
  27. package/dist/commands/chef/drift-fix.d.ts +33 -4
  28. package/dist/commands/chef/drift-fix.d.ts.map +1 -1
  29. package/dist/commands/chef/drift-fix.js +417 -29
  30. package/dist/commands/chef/drift-fix.js.map +1 -1
  31. package/dist/commands/chef/index.js +13 -3
  32. package/dist/commands/chef/index.js.map +1 -1
  33. package/dist/commands/chef/orchestrate.d.ts +1 -1
  34. package/dist/commands/chef/orchestrate.d.ts.map +1 -1
  35. package/dist/commands/chef/orchestrate.js +32 -9
  36. package/dist/commands/chef/orchestrate.js.map +1 -1
  37. package/dist/commands/dev-env/config.d.ts +57 -0
  38. package/dist/commands/dev-env/config.d.ts.map +1 -0
  39. package/dist/commands/dev-env/config.js +96 -0
  40. package/dist/commands/dev-env/config.js.map +1 -0
  41. package/dist/commands/dev-env/index.d.ts +27 -0
  42. package/dist/commands/dev-env/index.d.ts.map +1 -0
  43. package/dist/commands/dev-env/index.js +226 -0
  44. package/dist/commands/dev-env/index.js.map +1 -0
  45. package/dist/commands/dev-env/init.d.ts +28 -0
  46. package/dist/commands/dev-env/init.d.ts.map +1 -0
  47. package/dist/commands/dev-env/init.js +135 -0
  48. package/dist/commands/dev-env/init.js.map +1 -0
  49. package/dist/commands/docs/index.d.ts +16 -0
  50. package/dist/commands/docs/index.d.ts.map +1 -0
  51. package/dist/commands/docs/index.js +127 -0
  52. package/dist/commands/docs/index.js.map +1 -0
  53. package/dist/commands/eval/index.d.ts +54 -0
  54. package/dist/commands/eval/index.d.ts.map +1 -0
  55. package/dist/commands/eval/index.js +294 -0
  56. package/dist/commands/eval/index.js.map +1 -0
  57. package/dist/commands/extract/index.d.ts.map +1 -1
  58. package/dist/commands/extract/index.js +23 -1
  59. package/dist/commands/extract/index.js.map +1 -1
  60. package/dist/commands/garnish/index.d.ts +56 -0
  61. package/dist/commands/garnish/index.d.ts.map +1 -0
  62. package/dist/commands/garnish/index.js +281 -0
  63. package/dist/commands/garnish/index.js.map +1 -0
  64. package/dist/commands/garnish/trailer.d.ts +79 -0
  65. package/dist/commands/garnish/trailer.d.ts.map +1 -0
  66. package/dist/commands/garnish/trailer.js +118 -0
  67. package/dist/commands/garnish/trailer.js.map +1 -0
  68. package/dist/commands/init/index.d.ts.map +1 -1
  69. package/dist/commands/init/index.js +33 -0
  70. package/dist/commands/init/index.js.map +1 -1
  71. package/dist/commands/init/mock-vite.d.ts +54 -0
  72. package/dist/commands/init/mock-vite.d.ts.map +1 -0
  73. package/dist/commands/init/mock-vite.js +613 -0
  74. package/dist/commands/init/mock-vite.js.map +1 -0
  75. package/dist/commands/init/mock.d.ts +6 -0
  76. package/dist/commands/init/mock.d.ts.map +1 -1
  77. package/dist/commands/init/mock.js +20 -4
  78. package/dist/commands/init/mock.js.map +1 -1
  79. package/dist/commands/init/plan.d.ts +26 -1
  80. package/dist/commands/init/plan.d.ts.map +1 -1
  81. package/dist/commands/init/plan.js +41 -3
  82. package/dist/commands/init/plan.js.map +1 -1
  83. package/dist/commands/init/templates.d.ts.map +1 -1
  84. package/dist/commands/init/templates.js +12 -4
  85. package/dist/commands/init/templates.js.map +1 -1
  86. package/dist/commands/knowledge-add.d.ts +52 -0
  87. package/dist/commands/knowledge-add.d.ts.map +1 -0
  88. package/dist/commands/knowledge-add.js +232 -0
  89. package/dist/commands/knowledge-add.js.map +1 -0
  90. package/dist/commands/map/emit-typeorm.d.ts +117 -0
  91. package/dist/commands/map/emit-typeorm.d.ts.map +1 -0
  92. package/dist/commands/map/emit-typeorm.js +341 -0
  93. package/dist/commands/map/emit-typeorm.js.map +1 -0
  94. package/dist/commands/map/index.d.ts +18 -0
  95. package/dist/commands/map/index.d.ts.map +1 -1
  96. package/dist/commands/map/index.js +28 -0
  97. package/dist/commands/map/index.js.map +1 -1
  98. package/dist/commands/plate/agent.d.ts +7 -0
  99. package/dist/commands/plate/agent.d.ts.map +1 -1
  100. package/dist/commands/plate/agent.js +1 -1
  101. package/dist/commands/plate/agent.js.map +1 -1
  102. package/dist/commands/plate/index.d.ts.map +1 -1
  103. package/dist/commands/plate/index.js +6 -0
  104. package/dist/commands/plate/index.js.map +1 -1
  105. package/dist/commands/recon/index.d.ts +16 -3
  106. package/dist/commands/recon/index.d.ts.map +1 -1
  107. package/dist/commands/recon/index.js +267 -16
  108. package/dist/commands/recon/index.js.map +1 -1
  109. package/dist/commands/recon/migration-gate.d.ts +59 -0
  110. package/dist/commands/recon/migration-gate.d.ts.map +1 -0
  111. package/dist/commands/recon/migration-gate.js +131 -0
  112. package/dist/commands/recon/migration-gate.js.map +1 -0
  113. package/dist/commands/recon/reuse.d.ts +32 -0
  114. package/dist/commands/recon/reuse.d.ts.map +1 -1
  115. package/dist/commands/recon/reuse.js +66 -0
  116. package/dist/commands/recon/reuse.js.map +1 -1
  117. package/dist/commands/recon/stale-stubs.d.ts +65 -0
  118. package/dist/commands/recon/stale-stubs.d.ts.map +1 -0
  119. package/dist/commands/recon/stale-stubs.js +84 -0
  120. package/dist/commands/recon/stale-stubs.js.map +1 -0
  121. package/dist/commands/refine/agent.d.ts +23 -0
  122. package/dist/commands/refine/agent.d.ts.map +1 -1
  123. package/dist/commands/refine/agent.js +245 -15
  124. package/dist/commands/refine/agent.js.map +1 -1
  125. package/dist/commands/refine/brownfield-answer.d.ts +81 -0
  126. package/dist/commands/refine/brownfield-answer.d.ts.map +1 -0
  127. package/dist/commands/refine/brownfield-answer.js +231 -0
  128. package/dist/commands/refine/brownfield-answer.js.map +1 -0
  129. package/dist/commands/refine/context.d.ts +27 -1
  130. package/dist/commands/refine/context.d.ts.map +1 -1
  131. package/dist/commands/refine/context.js +438 -6
  132. package/dist/commands/refine/context.js.map +1 -1
  133. package/dist/commands/refine/git-attention.d.ts +123 -0
  134. package/dist/commands/refine/git-attention.d.ts.map +1 -0
  135. package/dist/commands/refine/git-attention.js +378 -0
  136. package/dist/commands/refine/git-attention.js.map +1 -0
  137. package/dist/commands/refine/history-index.d.ts +66 -0
  138. package/dist/commands/refine/history-index.d.ts.map +1 -1
  139. package/dist/commands/refine/history-index.js +195 -8
  140. package/dist/commands/refine/history-index.js.map +1 -1
  141. package/dist/commands/refine/index.d.ts.map +1 -1
  142. package/dist/commands/refine/index.js +105 -18
  143. package/dist/commands/refine/index.js.map +1 -1
  144. package/dist/commands/refine/multifurcate.d.ts +129 -0
  145. package/dist/commands/refine/multifurcate.d.ts.map +1 -0
  146. package/dist/commands/refine/multifurcate.js +247 -0
  147. package/dist/commands/refine/multifurcate.js.map +1 -0
  148. package/dist/commands/refine/proposals-synth.d.ts +50 -1
  149. package/dist/commands/refine/proposals-synth.d.ts.map +1 -1
  150. package/dist/commands/refine/proposals-synth.js +199 -35
  151. package/dist/commands/refine/proposals-synth.js.map +1 -1
  152. package/dist/commands/refine/spec-yaml.d.ts +214 -1210
  153. package/dist/commands/refine/spec-yaml.d.ts.map +1 -1
  154. package/dist/commands/refine/spec-yaml.js +10 -0
  155. package/dist/commands/refine/spec-yaml.js.map +1 -1
  156. package/dist/commands/refresh-knowledge.d.ts +139 -0
  157. package/dist/commands/refresh-knowledge.d.ts.map +1 -0
  158. package/dist/commands/refresh-knowledge.js +1029 -0
  159. package/dist/commands/refresh-knowledge.js.map +1 -0
  160. package/dist/commands/run-mock/index.d.ts.map +1 -1
  161. package/dist/commands/run-mock/index.js +135 -22
  162. package/dist/commands/run-mock/index.js.map +1 -1
  163. package/dist/commands/testgen/agent.d.ts +13 -0
  164. package/dist/commands/testgen/agent.d.ts.map +1 -1
  165. package/dist/commands/testgen/agent.js +137 -11
  166. package/dist/commands/testgen/agent.js.map +1 -1
  167. package/dist/commands/upsert-agent-docs.d.ts +48 -0
  168. package/dist/commands/upsert-agent-docs.d.ts.map +1 -0
  169. package/dist/commands/upsert-agent-docs.js +298 -0
  170. package/dist/commands/upsert-agent-docs.js.map +1 -0
  171. package/dist/commands/vibe/agent.d.ts +7 -0
  172. package/dist/commands/vibe/agent.d.ts.map +1 -1
  173. package/dist/commands/vibe/agent.js +2 -2
  174. package/dist/commands/vibe/agent.js.map +1 -1
  175. package/dist/commands/vibe/index.d.ts.map +1 -1
  176. package/dist/commands/vibe/index.js +7 -1
  177. package/dist/commands/vibe/index.js.map +1 -1
  178. package/dist/cost-store.d.ts +52 -0
  179. package/dist/cost-store.d.ts.map +1 -0
  180. package/dist/cost-store.js +108 -0
  181. package/dist/cost-store.js.map +1 -0
  182. package/dist/lib/budget.d.ts +73 -0
  183. package/dist/lib/budget.d.ts.map +1 -0
  184. package/dist/lib/budget.js +225 -0
  185. package/dist/lib/budget.js.map +1 -0
  186. package/dist/lib/mock-shape.d.ts +29 -0
  187. package/dist/lib/mock-shape.d.ts.map +1 -0
  188. package/dist/lib/mock-shape.js +77 -0
  189. package/dist/lib/mock-shape.js.map +1 -0
  190. package/dist/lib/read-only.d.ts +22 -0
  191. package/dist/lib/read-only.d.ts.map +1 -0
  192. package/dist/lib/read-only.js +34 -0
  193. package/dist/lib/read-only.js.map +1 -0
  194. package/package.json +17 -12
@@ -1,4 +1,4 @@
1
- import { readFileSync, existsSync, readdirSync } from "node:fs";
1
+ import { readFileSync, existsSync, readdirSync, statSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import YAML from "yaml";
4
4
  /**
@@ -35,14 +35,129 @@ export function buildProjectContext(repoRoot) {
35
35
  const brownfield = readBrownfieldExtracts(repoRoot);
36
36
  if (brownfield)
37
37
  sections.push("\n" + brownfield);
38
- const historyDigest = readHistoryIndexDigest(repoRoot);
38
+ // α.66 pass skipOverlapWithAuto so history-index doesn't double up
39
+ // when the auto/ digests are present (they cover components +
40
+ // api_routes + migrations + mock_surface byte-identically).
41
+ const autoPresent = existsSync(join(repoRoot, ".brewing/repo-knowledge/auto"));
42
+ const historyDigest = readHistoryIndexDigest(repoRoot, { skipOverlapWithAuto: autoPresent });
39
43
  if (historyDigest)
40
44
  sections.push("\n" + historyDigest);
41
45
  const entitiesDigest = readEntitiesDigest(repoRoot);
42
46
  if (entitiesDigest)
43
47
  sections.push("\n" + entitiesDigest);
48
+ // α.62 — prefer the disk-cached `.brewing/repo-knowledge/auto/*.md`
49
+ // digests (emitted by `slowcook refresh-knowledge`) over re-scanning
50
+ // in-process. The on-disk versions are also seen by other agents
51
+ // (chef, vibe, etc.) so the team shares one reading. Falls back to
52
+ // the in-memory α.61 scan if the dir doesn't exist (first run on a
53
+ // repo where refresh-knowledge hasn't run yet).
54
+ const knowledgeAuto = readKnowledgeAutoBlock(repoRoot);
55
+ if (knowledgeAuto) {
56
+ sections.push("\n" + knowledgeAuto);
57
+ }
58
+ else {
59
+ // α.61 fallback — in-memory NestJS scan.
60
+ const nestjsDigest = readNestJsBackendDigest(repoRoot);
61
+ if (nestjsDigest)
62
+ sections.push("\n" + nestjsDigest);
63
+ }
64
+ // α.63 — also surface the curated/ block (git-history mining +
65
+ // future agent-written insights). Tracked in git; carries
66
+ // commit-conventions, co-changes, ownership, fix-recipe seeds,
67
+ // issue traceability.
68
+ const knowledgeCurated = readKnowledgeCuratedBlock(repoRoot);
69
+ if (knowledgeCurated)
70
+ sections.push("\n" + knowledgeCurated);
44
71
  return sections.join("\n");
45
72
  }
73
+ /**
74
+ * α.63 — assemble the `.brewing/repo-knowledge/curated/*.md` files
75
+ * into one block. These are mined from git history (and in later
76
+ * alphas, written-back by chef / vibe / testgen). Tracked in git so
77
+ * fresh clones get the organizational memory immediately.
78
+ */
79
+ function readKnowledgeCuratedBlock(repoRoot) {
80
+ const curatedDir = join(repoRoot, ".brewing/repo-knowledge/curated");
81
+ if (!existsSync(curatedDir))
82
+ return null;
83
+ const order = [
84
+ "commit-conventions.md",
85
+ "ownership.md",
86
+ "co-changes.md",
87
+ "fix-recipe-seeds.md",
88
+ "chef-known-fixes.md", // populated later when chef writes
89
+ "test-patterns.md", // populated later when testgen writes
90
+ "design-conventions.md", // populated later when vibe writes
91
+ "issue-traceability.md",
92
+ ];
93
+ const parts = [];
94
+ parts.push("## Repo knowledge — curated (`.brewing/repo-knowledge/curated/`)\n");
95
+ parts.push("Durable organizational memory: conventions + coupling + insights either mined from git history (α.63) or appended by agents over time (α.65+). Treat as soft signal — entries carry evidence trails but staleness is for review, not auto-invalidation.\n");
96
+ let found = 0;
97
+ for (const fname of order) {
98
+ const path = join(curatedDir, fname);
99
+ if (!existsSync(path))
100
+ continue;
101
+ try {
102
+ const body = readFileSync(path, "utf8");
103
+ if (body.trim().length === 0)
104
+ continue;
105
+ parts.push(body.trim());
106
+ parts.push("");
107
+ found++;
108
+ }
109
+ catch { /* ignore */ }
110
+ }
111
+ if (found === 0)
112
+ return null;
113
+ return parts.join("\n");
114
+ }
115
+ /**
116
+ * α.62 — assemble the `.brewing/repo-knowledge/auto/*.md` digests
117
+ * into one block. Reads in a stable order so the byte sequence is
118
+ * deterministic across runs (helps Anthropic prompt cache stay warm).
119
+ * Returns null if the dir doesn't exist (consumer hasn't run
120
+ * `slowcook refresh-knowledge` yet).
121
+ */
122
+ function readKnowledgeAutoBlock(repoRoot) {
123
+ const autoDir = join(repoRoot, ".brewing/repo-knowledge/auto");
124
+ if (!existsSync(autoDir))
125
+ return null;
126
+ const order = [
127
+ "config.md",
128
+ "backend-entities.md",
129
+ "backend-enums.md",
130
+ "backend-routes.md",
131
+ "frontend-types.md",
132
+ "frontend-contexts.md",
133
+ "frontend-components.md",
134
+ "routes-inventory.md",
135
+ "tokens.md",
136
+ "migrations.md",
137
+ ];
138
+ const parts = [];
139
+ parts.push("## Repo knowledge (auto-generated digests, from `.brewing/repo-knowledge/auto/`)\n");
140
+ parts.push("These are deterministic extractions of the consumer's actual code shape. Agents MUST reference names/paths/values from here verbatim — do not invent routes, field aliases, or enum values not listed.\n");
141
+ let found = 0;
142
+ for (const fname of order) {
143
+ const path = join(autoDir, fname);
144
+ if (!existsSync(path))
145
+ continue;
146
+ try {
147
+ const body = readFileSync(path, "utf8")
148
+ .replace(/^<!--[^>]*-->\n?/gm, ""); // strip metadata header
149
+ if (body.trim().length === 0)
150
+ continue;
151
+ parts.push(body.trim());
152
+ parts.push("");
153
+ found++;
154
+ }
155
+ catch { /* ignore */ }
156
+ }
157
+ if (found === 0)
158
+ return null;
159
+ return parts.join("\n");
160
+ }
46
161
  /**
47
162
  * 0.18.0-α.6 — surface a digest of `src/lib/entities/*.ts` (emitted by
48
163
  * `slowcook init entities` from the consumer's database migrations).
@@ -117,7 +232,7 @@ export function readEntitiesDigest(repoRoot) {
117
232
  * field, only the names + signatures. Full file is on disk for vibe +
118
233
  * testgen to consume in detail.
119
234
  */
120
- export function readHistoryIndexDigest(repoRoot) {
235
+ export function readHistoryIndexDigest(repoRoot, opts = {}) {
121
236
  const path = join(repoRoot, ".brewing/history-index.json");
122
237
  if (!existsSync(path))
123
238
  return null;
@@ -127,7 +242,13 @@ export function readHistoryIndexDigest(repoRoot) {
127
242
  lines.push("## Code history index (auto-generated; treat as authoritative)\n");
128
243
  lines.push("Refine MUST consult this index when deciding whether the new spec extends, supersedes, or duplicates existing surface area. Reference entries by name in your Q&A so the PM sees you've grounded against current code.");
129
244
  lines.push("");
130
- if (idx.components && idx.components.length > 0) {
245
+ // α.66 when auto/ digests exist they cover components / api_routes
246
+ // / migrations / mock_surface byte-identically. Skip those sections
247
+ // here to avoid ~20-30KB of duplicate context (Anthropic prompt
248
+ // cache + per-token cost both benefit). Keep test_helpers +
249
+ // git_attention below — they're NOT in auto/.
250
+ const skipOverlap = opts.skipOverlapWithAuto ?? false;
251
+ if (!skipOverlap && idx.components && idx.components.length > 0) {
131
252
  lines.push("### Existing components (with prop shape + test coverage)");
132
253
  for (const c of idx.components) {
133
254
  const propsStr = c.props.length > 0 ? ` props={${c.props.join(", ")}}` : " (no Props interface found)";
@@ -136,14 +257,14 @@ export function readHistoryIndexDigest(repoRoot) {
136
257
  }
137
258
  lines.push("");
138
259
  }
139
- if (idx.api_routes && idx.api_routes.length > 0) {
260
+ if (!skipOverlap && idx.api_routes && idx.api_routes.length > 0) {
140
261
  lines.push("### Existing API routes");
141
262
  for (const r of idx.api_routes) {
142
263
  lines.push(`- ${r.method} ${r.path} \`${r.file}\``);
143
264
  }
144
265
  lines.push("");
145
266
  }
146
- if (idx.migrations && idx.migrations.length > 0) {
267
+ if (!skipOverlap && idx.migrations && idx.migrations.length > 0) {
147
268
  lines.push("### Existing migrations (tables + columns)");
148
269
  for (const m of idx.migrations) {
149
270
  const tablesStr = m.tables_created.length > 0
@@ -155,6 +276,24 @@ export function readHistoryIndexDigest(repoRoot) {
155
276
  lines.push("Column-level detail is in `.brewing/history-index.json`.");
156
277
  lines.push("");
157
278
  }
279
+ if (!skipOverlap && idx.mock_surface && idx.mock_surface.length > 0) {
280
+ lines.push("### Mock surface (design source-of-truth)");
281
+ lines.push("These are the consumer's hand-authored mock pages/components. When the PM says \"match the mock\" or references an existing flow without citing a file, treat these as the canonical design. Mirror layout, role toggles, copy, and behavior in your spec; only deviate when the PM explicitly asks.");
282
+ lines.push("");
283
+ for (const m of idx.mock_surface) {
284
+ const routeLabel = m.route ? `route \`${m.route}\`` : "component";
285
+ lines.push(`<details><summary><strong>${m.name}</strong> — ${routeLabel} (\`${m.file}\`)</summary>\n`);
286
+ lines.push("```tsx");
287
+ lines.push(m.excerpt);
288
+ lines.push("```");
289
+ lines.push("</details>\n");
290
+ }
291
+ lines.push("");
292
+ }
293
+ if (skipOverlap) {
294
+ lines.push("_(components / api_routes / migrations / mock_surface sections omitted — auto/ digests cover them.)_");
295
+ lines.push("");
296
+ }
158
297
  if (idx.test_helpers && idx.test_helpers.length > 0) {
159
298
  lines.push("### Existing test helpers (use these idioms; don't invent new mocking patterns)");
160
299
  for (const h of idx.test_helpers.slice(0, 30)) {
@@ -163,6 +302,59 @@ export function readHistoryIndexDigest(repoRoot) {
163
302
  }
164
303
  lines.push("");
165
304
  }
305
+ // 0.19.0-α.43 — git-history attention layer. Surface the four
306
+ // signals (renames, co-changes, recent PRs per file, PR+spec
307
+ // corpus) so refine grounds new specs in actual project history,
308
+ // not just snapshot structure. Cap each list aggressively so the
309
+ // digest stays prompt-sized; full data is in the json on disk.
310
+ const ga = idx.git_attention;
311
+ if (ga) {
312
+ const renameEntries = Object.entries(ga.rename_chains ?? {});
313
+ const coChangeEntries = Object.entries(ga.co_changes ?? {});
314
+ const prEntries = Object.entries(ga.recent_prs_by_file ?? {});
315
+ const corpus = ga.pr_spec_corpus ?? [];
316
+ const anyContent = renameEntries.length > 0 ||
317
+ coChangeEntries.length > 0 ||
318
+ prEntries.length > 0 ||
319
+ corpus.length > 0;
320
+ if (anyContent) {
321
+ lines.push("### Git-history attention (renames, couplings, recent PRs, corpus)");
322
+ lines.push("Brownfield repos are sequential. These four signals come from `git log` + `gh pr list` and tell refine which surface area carries prior intent — DON'T propose a rename or new file when the history shows the existing name is what reviewers and the PM use.");
323
+ lines.push("");
324
+ if (renameEntries.length > 0) {
325
+ lines.push("**Files that were renamed** (use the CURRENT path; older names are just for grep continuity):");
326
+ for (const [current, previous] of renameEntries.slice(0, 20)) {
327
+ lines.push(`- \`${current}\` ← was \`${previous.join("\`, \`")}\``);
328
+ }
329
+ lines.push("");
330
+ }
331
+ if (coChangeEntries.length > 0) {
332
+ lines.push("**Change-coupling** (files that historically change together — if your spec touches one, expect to touch the others):");
333
+ for (const [file, partners] of coChangeEntries.slice(0, 15)) {
334
+ const partnerStr = partners
335
+ .map((p) => `\`${p.file}\` (${Math.round(p.strength * 100)}%)`)
336
+ .join(", ");
337
+ lines.push(`- \`${file}\` → ${partnerStr}`);
338
+ }
339
+ lines.push("");
340
+ }
341
+ if (prEntries.length > 0) {
342
+ lines.push("**Recent PRs per file** (intent-shaped Keys: PR titles describe WHY, not WHAT — read these before proposing changes near the listed files):");
343
+ for (const [file, prs] of prEntries.slice(0, 15)) {
344
+ const prStr = prs
345
+ .slice(0, 3)
346
+ .map((p) => `#${p.number} ${p.title}${p.merged_at ? "" : " (open)"}`)
347
+ .join(" · ");
348
+ lines.push(`- \`${file}\` — ${prStr}`);
349
+ }
350
+ lines.push("");
351
+ }
352
+ if (corpus.length > 0) {
353
+ lines.push(`**Searchable PR + spec corpus** (${corpus.length} entries in \`pr_spec_corpus\` on disk). Each entry has tokens for cheap keyword retrieval — when the PM's issue mentions a concept, find the corpus entries whose tokens overlap before assuming the concept is new.`);
354
+ lines.push("");
355
+ }
356
+ }
357
+ }
166
358
  lines.push("### Brownfield-conflict Q&A discipline");
167
359
  lines.push("Before emitting the spec, scan the new requirements against this index. If ANY of these conflicts exist, ask the PM in your Q&A round:");
168
360
  lines.push("- A required component name matches an existing component but with INCOMPATIBLE prop shape → ask: \"Component X exists with props {Y}; new spec implies props {Z}. Extend (back-compat) or replace (breaks tests covering it)?\"");
@@ -249,4 +441,244 @@ function readActiveSpecsSummary(repoRoot) {
249
441
  return [];
250
442
  }
251
443
  }
444
+ /**
445
+ * α.61 — surface a digest of NestJS/TypeORM backend shape so refine
446
+ * doesn't hallucinate routes, DTO field names, and enum values on
447
+ * monorepo consumers that use this stack.
448
+ *
449
+ * Scans (best-effort, all paths optional):
450
+ * - packages/(any)/entities/X.entity.ts for TypeORM entity classes
451
+ * (extracts class name + each Column/OneToMany/ManyToOne field)
452
+ * - apps/(any)/src/modules/(any)/X.controller.ts for HTTP controllers
453
+ * (extracts class + each Get/Post/Put/Delete/Patch handler)
454
+ * - packages/enums/src/X.enum.ts for enum values
455
+ *
456
+ * Returns null when none of these directories exist (greenfield or
457
+ * non-NestJS repo) so the function stays a no-op for other stacks.
458
+ *
459
+ * Truncation: per-entity column list capped at 20; per-controller
460
+ * route list capped at 15; enum values capped at 20. The full files
461
+ * are on disk for testgen / brew if more detail needed.
462
+ *
463
+ * NOT a replacement for `readEntitiesDigest` (which targets the
464
+ * supabase-style structure `slowcook init entities` emits) — both
465
+ * fire side-by-side; one is null on stacks that aren't its target.
466
+ */
467
+ export function readNestJsBackendDigest(repoRoot) {
468
+ const lines = [];
469
+ const entityFiles = findFilesByGlob(repoRoot, /\/entities\/[^/]+\.entity\.ts$/);
470
+ const controllerFiles = findFilesByGlob(repoRoot, /\/(modules|controllers)\/[^/]+\/[^/]+\.controller\.ts$/);
471
+ const enumFiles = existsSync(join(repoRoot, "packages/enums/src"))
472
+ ? readdirSync(join(repoRoot, "packages/enums/src")).filter((f) => f.endsWith(".enum.ts")).map((f) => `packages/enums/src/${f}`)
473
+ : [];
474
+ if (entityFiles.length === 0 && controllerFiles.length === 0 && enumFiles.length === 0)
475
+ return null;
476
+ lines.push("## Backend shape (NestJS/TypeORM — α.61)");
477
+ lines.push("");
478
+ lines.push("These are the **actual** entity columns, controller routes, and enum values present in the consumer's backend. " +
479
+ "When the spec references a backend route or field name, it MUST use names from this list — do NOT invent paths " +
480
+ "like `/api/v1/...` or field aliases like `topic` when the entity column is `title`. If a needed field is absent, " +
481
+ "explicitly emit a `database_migrations:` section in the spec listing the SQL DDL changes required.");
482
+ lines.push("");
483
+ if (entityFiles.length > 0) {
484
+ lines.push("### TypeORM entities");
485
+ for (const rel of entityFiles.slice(0, 25)) {
486
+ const body = safeRead(repoRoot, rel);
487
+ if (!body)
488
+ continue;
489
+ const classMatch = body.match(/export class (\w+) extends BaseEntity/) ?? body.match(/export class (\w+)/);
490
+ if (!classMatch)
491
+ continue;
492
+ const className = classMatch[1];
493
+ const cols = extractTypeOrmColumns(body).slice(0, 20);
494
+ lines.push(`- **${className}** (\`${rel}\`)`);
495
+ for (const col of cols)
496
+ lines.push(` - ${col}`);
497
+ }
498
+ if (entityFiles.length > 25)
499
+ lines.push(`- … ${entityFiles.length - 25} more entity files`);
500
+ lines.push("");
501
+ }
502
+ if (controllerFiles.length > 0) {
503
+ lines.push("### HTTP controllers + routes");
504
+ for (const rel of controllerFiles.slice(0, 25)) {
505
+ const body = safeRead(repoRoot, rel);
506
+ if (!body)
507
+ continue;
508
+ const controllerMatch = body.match(/@Controller\(['"]([^'"]*)['"]\)/);
509
+ const base = controllerMatch ? controllerMatch[1] : "";
510
+ const allRoutes = extractNestRoutes(body);
511
+ const routes = allRoutes.slice(0, 40);
512
+ if (routes.length === 0)
513
+ continue;
514
+ lines.push(`- \`${rel}\` (base: \`/${base}\`)`);
515
+ for (const r of routes)
516
+ lines.push(` - \`${r.method} /${joinPath(base, r.path)}\` → \`${r.handler}\``);
517
+ if (allRoutes.length > 40)
518
+ lines.push(` - … ${allRoutes.length - 40} more routes in this file`);
519
+ }
520
+ if (controllerFiles.length > 25)
521
+ lines.push(`- … ${controllerFiles.length - 25} more controller files`);
522
+ lines.push("");
523
+ }
524
+ if (enumFiles.length > 0) {
525
+ lines.push("### Enums (`packages/enums/src/`)");
526
+ for (const rel of enumFiles.slice(0, 30)) {
527
+ const body = safeRead(repoRoot, rel);
528
+ if (!body)
529
+ continue;
530
+ const enumMatch = body.match(/export enum (\w+) \{([\s\S]*?)\}/);
531
+ if (!enumMatch)
532
+ continue;
533
+ const enumName = enumMatch[1];
534
+ const values = (enumMatch[2] ?? "")
535
+ .split(",")
536
+ .map((v) => v.trim().split("=")[0].trim().replace(/['"\s/*]/g, ""))
537
+ .filter((v) => v && /^[A-Z_]+$/.test(v))
538
+ .slice(0, 20);
539
+ if (values.length === 0)
540
+ continue;
541
+ lines.push(`- **${enumName}**: ${values.join(" · ")}`);
542
+ }
543
+ if (enumFiles.length > 30)
544
+ lines.push(`- … ${enumFiles.length - 30} more enum files`);
545
+ lines.push("");
546
+ }
547
+ return lines.join("\n");
548
+ }
549
+ function findFilesByGlob(repoRoot, pattern) {
550
+ const out = [];
551
+ const skipDirs = new Set(["node_modules", ".git", ".next", "dist", "build", ".turbo", "coverage"]);
552
+ const walk = (dir, depthRemaining) => {
553
+ if (depthRemaining < 0)
554
+ return;
555
+ let entries = [];
556
+ try {
557
+ entries = readdirSync(dir);
558
+ }
559
+ catch {
560
+ return;
561
+ }
562
+ for (const name of entries) {
563
+ if (skipDirs.has(name))
564
+ continue;
565
+ const abs = join(dir, name);
566
+ let st;
567
+ try {
568
+ st = statSync(abs);
569
+ }
570
+ catch {
571
+ continue;
572
+ }
573
+ if (st.isDirectory())
574
+ walk(abs, depthRemaining - 1);
575
+ else {
576
+ const rel = abs.slice(repoRoot.length + 1);
577
+ if (pattern.test(rel))
578
+ out.push(rel);
579
+ }
580
+ }
581
+ };
582
+ walk(repoRoot, 6); // depth 6 covers most monorepo layouts (packages/X/src/entities/foo.entity.ts)
583
+ return out;
584
+ }
585
+ function safeRead(repoRoot, rel) {
586
+ try {
587
+ return readFileSync(join(repoRoot, rel), "utf8");
588
+ }
589
+ catch {
590
+ return null;
591
+ }
592
+ }
593
+ function extractTypeOrmColumns(body) {
594
+ // Pull `public foo: Type` lines (the actual field declarations, NOT the
595
+ // decorator-config object lines that also look like `type: 'uuid'`).
596
+ // Strategy: regex for ANY line starting with optional whitespace + access
597
+ // modifier (public|private|readonly) + identifier + `:` + type expression
598
+ // ending at `;`. Skip plain `key: value` lines (those are decorator config).
599
+ const lines = body.split("\n");
600
+ const out = [];
601
+ const fieldRe = /^\s*(?:public|private|readonly|protected)\s+(\w+)(\?)?\s*:\s*([^;]+);/;
602
+ for (const l of lines) {
603
+ const m = l.match(fieldRe);
604
+ if (!m)
605
+ continue;
606
+ const name = m[1];
607
+ const optional = m[2] ? "?" : "";
608
+ const type = (m[3] ?? "").trim().replace(/\s+/g, " ");
609
+ out.push(`${name}${optional}: ${type}`);
610
+ }
611
+ return [...new Set(out)];
612
+ }
613
+ function extractNestRoutes(body) {
614
+ // Find each HTTP-verb decorator and walk forward through intervening
615
+ // decorators (which may span multiple lines, e.g. @ApiOperation({…})
616
+ // with the body on lines 2..N) until we find the actual method
617
+ // signature `(public|private|async)? handler(...)`.
618
+ //
619
+ // Strategy: from the @Verb line, scan up to 60 lines forward, trying
620
+ // the handler regex on each. Skip lines that are inside an unclosed
621
+ // decorator parenthesis. Stop early on next @Get/Post/Put/Delete/Patch
622
+ // (we missed the handler somehow).
623
+ const lines = body.split("\n");
624
+ const out = [];
625
+ const httpVerbRe = /^\s*@(Get|Post|Put|Delete|Patch)\(([^)]*)\)/;
626
+ const nextHttpVerbRe = /^\s*@(Get|Post|Put|Delete|Patch)\(/;
627
+ const handlerRe = /^\s*(?:public|private|protected)?\s*(?:async\s+)?(\w+)\s*\(/;
628
+ for (let i = 0; i < lines.length; i++) {
629
+ const m = (lines[i] ?? "").match(httpVerbRe);
630
+ if (!m)
631
+ continue;
632
+ const method = m[1].toUpperCase();
633
+ const rawPath = (m[2] ?? "").trim().replace(/^['"`]|['"`]$/g, "");
634
+ let parenDepth = 0;
635
+ let handler = "?";
636
+ for (let j = i + 1; j < Math.min(i + 60, lines.length); j++) {
637
+ const ln = lines[j] ?? "";
638
+ // Hard stop: another HTTP verb at the same indent level — we've
639
+ // passed our handler without finding it; this happens on malformed
640
+ // controllers.
641
+ if (parenDepth === 0 && nextHttpVerbRe.test(ln))
642
+ break;
643
+ // Track paren depth so multi-line decorator bodies don't get
644
+ // accidentally treated as the handler signature.
645
+ for (const ch of ln) {
646
+ if (ch === "(")
647
+ parenDepth++;
648
+ else if (ch === ")")
649
+ parenDepth = Math.max(0, parenDepth - 1);
650
+ }
651
+ // Skip lines that are starting a new decorator (handler is below)
652
+ if (/^\s*@\w+/.test(ln))
653
+ continue;
654
+ // Skip blank lines
655
+ if (/^\s*$/.test(ln))
656
+ continue;
657
+ // Only consider potential handler line when we're not inside an
658
+ // unclosed decorator paren (parenDepth being 0 at line start means
659
+ // any prior decorator closed last line).
660
+ const handlerMatch = ln.match(handlerRe);
661
+ if (handlerMatch) {
662
+ const word = handlerMatch[1];
663
+ // Filter out anything starting with an uppercase (likely a type
664
+ // ref) or one of a known reserved-word set.
665
+ if (word === "if" || word === "switch" || word === "while" || word === "for" || /^[A-Z]/.test(word))
666
+ continue;
667
+ handler = word;
668
+ break;
669
+ }
670
+ }
671
+ out.push({ method, path: rawPath, handler });
672
+ }
673
+ return out;
674
+ }
675
+ function joinPath(base, sub) {
676
+ const b = base.replace(/^\/|\/$/g, "");
677
+ const s = sub.replace(/^\/|\/$/g, "");
678
+ if (!b)
679
+ return s;
680
+ if (!s)
681
+ return b;
682
+ return `${b}/${s}`;
683
+ }
252
684
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/refine/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/commands/refine/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACrE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CACX,oIAAoI,CACrI,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QAC5F,KAAK,MAAM,IAAI,IAAI,WAAW;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,UAAU;QAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;IAEjD,qEAAqE;IACrE,8DAA8D;IAC9D,4DAA4D;IAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7F,IAAI,aAAa;QAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,cAAc;QAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC;IAEzD,oEAAoE;IACpE,qEAAqE;IACrE,iEAAiE;IACjE,mEAAmE;IACnE,mEAAmE;IACnE,gDAAgD;IAChD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,yCAAyC;QACzC,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,YAAY;YAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,+DAA+D;IAC/D,0DAA0D;IAC1D,+DAA+D;IAC/D,sBAAsB;IACtB,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,gBAAgB;QAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,CAAC;IAE7D,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,SAAS,yBAAyB,CAAC,QAAgB;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG;QACZ,uBAAuB;QACvB,cAAc;QACd,eAAe;QACf,qBAAqB;QACrB,qBAAqB,EAAO,mCAAmC;QAC/D,kBAAkB,EAAW,sCAAsC;QACnE,uBAAuB,EAAM,mCAAmC;QAChE,uBAAuB;KACxB,CAAC;IACF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACjF,KAAK,CAAC,IAAI,CAAC,2PAA2P,CAAC,CAAC;IACxQ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,EAAE,CAAC;QACV,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG;QACZ,WAAW;QACX,qBAAqB;QACrB,kBAAkB;QAClB,mBAAmB;QACnB,mBAAmB;QACnB,sBAAsB;QACtB,wBAAwB;QACxB,qBAAqB;QACrB,WAAW;QACX,eAAe;KAChB,CAAC;IACF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjG,KAAK,CAAC,IAAI,CAAC,0MAA0M,CAAC,CAAC;IACvN,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;iBACpC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB;YAC9D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,EAAE,CAAC;QACV,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CACR,4XAA4X,CAC7X,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC;YAAC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1E,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC;aAC3B,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC7D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,qDAAqD;YACrD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAClG,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,qBAAqB,SAAS,IAAI,CAAC,CAAC;QAC9D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,KAAK,CAAC,IAAI,CACR,8GAA8G,CAC/G,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB,EAAE,OAA0C,EAAE;IACnG,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAYhD,CAAC;QACF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CACR,wNAAwN,CACzN,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,qEAAqE;QACrE,oEAAoE;QACpE,gEAAgE;QAChE,4DAA4D;QAC5D,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;QAEtD,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YACxE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,6BAA6B,CAAC;gBACvG,MAAM,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC,MAAM,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC;gBAC5G,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YACtD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;oBAC3C,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC1C,CAAC,CAAC,wBAAwB,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,SAAS,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CACR,sSAAsS,CACvS,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;gBAClE,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,IAAI,eAAe,UAAU,OAAO,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC;gBACvG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC;YACnH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;YAC9F,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,8DAA8D;QAC9D,6DAA6D;QAC7D,iEAAiE;QACjE,iEAAiE;QACjE,+DAA+D;QAC/D,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC;QAC7B,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC;YACvC,MAAM,UAAU,GACd,aAAa,CAAC,MAAM,GAAG,CAAC;gBACxB,eAAe,CAAC,MAAM,GAAG,CAAC;gBAC1B,SAAS,CAAC,MAAM,GAAG,CAAC;gBACpB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAEpB,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;gBACjF,KAAK,CAAC,IAAI,CACR,gQAAgQ,CACjQ,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEf,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;oBAC5G,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAC7D,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,cAAc,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACtE,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;gBAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,uHAAuH,CAAC,CAAC;oBACpI,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAC5D,MAAM,UAAU,GAAG,QAAQ;6BACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;6BAC9D,IAAI,CAAC,IAAI,CAAC,CAAC;wBACd,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,UAAU,EAAE,CAAC,CAAC;oBAC9C,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;gBAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,6IAA6I,CAAC,CAAC;oBAC1J,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBACjD,MAAM,KAAK,GAAG,GAAG;6BACd,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;6BACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;6BACpE,IAAI,CAAC,KAAK,CAAC,CAAC;wBACf,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;oBACzC,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;gBAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,CACR,oCAAoC,MAAM,CAAC,MAAM,uNAAuN,CACzQ,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CACR,wIAAwI,CACzI,CAAC;QACF,KAAK,CAAC,IAAI,CACR,kOAAkO,CACnO,CAAC;QACF,KAAK,CAAC,IAAI,CACR,iJAAiJ,CAClJ,CAAC;QACF,KAAK,CAAC,IAAI,CACR,oNAAoN,CACrN,CAAC;QACF,KAAK,CAAC,IAAI,CACR,4IAA4I,CAC7I,CAAC;QAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CACT,sEAAsE;gBACpE,6HAA6H;gBAC7H,8EAA8E;gBAC9E,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAC5C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CACT,4DAA4D;gBAC1D,iIAAiI;gBACjI,6IAA6I;gBAC7I,OAAO,CAAC,IAAI,EAAE,CACjB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,qCAAqC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAUD,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAEhD,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;gBAAE,SAAS;YACxC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,KAAK,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;IAChF,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,EAAE,wDAAwD,CAAC,CAAC;IAC5G,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAChE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC/H,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpG,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,iHAAiH;QACjH,iHAAiH;QACjH,mHAAmH;QACnH,oGAAoG,CACrG,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC3G,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YACjC,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,SAAS,GAAG,KAAK,CAAC,CAAC;YAC9C,KAAK,MAAM,GAAG,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,MAAM,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC5F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAClC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,gBAAgB,IAAI,KAAK,CAAC,CAAC;YAChD,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;YACxG,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,EAAE,2BAA2B,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,MAAM,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACxG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAChD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAChC,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;iBACnE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACvC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAClC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,MAAM,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,OAAe;IACxD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,cAAsB,EAAE,EAAE;QACnD,IAAI,cAAc,GAAG,CAAC;YAAE,OAAO;QAC/B,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC;YAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5B,IAAI,EAAE,CAAC;YACP,IAAI,CAAC;gBAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC/C,IAAI,EAAE,CAAC,WAAW,EAAE;gBAAE,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;iBAC/C,CAAC;gBACJ,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,+EAA+E;IAClG,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,GAAW;IAC7C,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAClF,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,wEAAwE;IACxE,qEAAqE;IACrE,0EAA0E;IAC1E,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,uEAAuE,CAAC;IACxF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,qEAAqE;IACrE,qEAAqE;IACrE,+DAA+D;IAC/D,oDAAoD;IACpD,EAAE;IACF,qEAAqE;IACrE,oEAAoE;IACpE,uEAAuE;IACvE,mCAAmC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAA6D,EAAE,CAAC;IACzE,MAAM,UAAU,GAAG,6CAA6C,CAAC;IACjE,MAAM,cAAc,GAAG,oCAAoC,CAAC;IAC5D,MAAM,SAAS,GAAG,6DAA6D,CAAC;IAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5D,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1B,gEAAgE;YAChE,mEAAmE;YACnE,eAAe;YACf,IAAI,UAAU,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,MAAM;YACvD,6DAA6D;YAC7D,iDAAiD;YACjD,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;gBACpB,IAAI,EAAE,KAAK,GAAG;oBAAE,UAAU,EAAE,CAAC;qBACxB,IAAI,EAAE,KAAK,GAAG;oBAAE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,kEAAkE;YAClE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YAClC,mBAAmB;YACnB,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC/B,gEAAgE;YAChE,mEAAmE;YACnE,yCAAyC;YACzC,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;gBAC9B,gEAAgE;gBAChE,4CAA4C;gBAC5C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC9G,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAW;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,CAAC"}