redlinegate 0.0.1 → 0.0.2

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 (58) hide show
  1. package/README.md +22 -6
  2. package/dist/bin/redline.js +101 -11
  3. package/dist/bin/redline.js.map +1 -1
  4. package/dist/commands/init.js +94 -23
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/remove.js +3 -1
  7. package/dist/commands/remove.js.map +1 -1
  8. package/dist/commands/verify.js +82 -2
  9. package/dist/commands/verify.js.map +1 -1
  10. package/dist/config/redline-json.js +45 -1
  11. package/dist/config/redline-json.js.map +1 -1
  12. package/dist/detect/existing.js +151 -0
  13. package/dist/detect/existing.js.map +1 -0
  14. package/dist/exempt/parse.js +8 -1
  15. package/dist/exempt/parse.js.map +1 -1
  16. package/dist/platforms/azure/install.js +8 -4
  17. package/dist/platforms/azure/install.js.map +1 -1
  18. package/dist/platforms/azure/verify.js +6 -0
  19. package/dist/platforms/azure/verify.js.map +1 -1
  20. package/dist/platforms/github/install.js +88 -10
  21. package/dist/platforms/github/install.js.map +1 -1
  22. package/dist/platforms/github/preflight.js +63 -0
  23. package/dist/platforms/github/preflight.js.map +1 -0
  24. package/dist/platforms/github/verify.js +62 -5
  25. package/dist/platforms/github/verify.js.map +1 -1
  26. package/dist/platforms/types.js +4 -0
  27. package/dist/platforms/types.js.map +1 -1
  28. package/dist/policy/diff.js +26 -9
  29. package/dist/policy/diff.js.map +1 -1
  30. package/dist/render/contexts.js +39 -0
  31. package/dist/render/contexts.js.map +1 -0
  32. package/dist/render/profile.js +44 -10
  33. package/dist/render/profile.js.map +1 -1
  34. package/dist/render/standards.js +2 -0
  35. package/dist/render/standards.js.map +1 -1
  36. package/dist/render/vendors.js +5 -1
  37. package/dist/render/vendors.js.map +1 -1
  38. package/dist/ui/facts.js +82 -0
  39. package/dist/ui/facts.js.map +1 -0
  40. package/dist/ui/prompt.js +201 -0
  41. package/dist/ui/prompt.js.map +1 -0
  42. package/dist/ui/tty.js +243 -0
  43. package/dist/ui/tty.js.map +1 -0
  44. package/dist/ui/wizard.js +179 -0
  45. package/dist/ui/wizard.js.map +1 -0
  46. package/package.json +10 -1
  47. package/platforms/azure/gate-template-github.yml +152 -0
  48. package/platforms/azure/gate-template.yml +59 -6
  49. package/scripts/check-pins.mjs +84 -1
  50. package/standards/contexts/speckit.md +22 -0
  51. package/standards/contexts/tmf.md +25 -0
  52. package/standards/manifest.json +1 -1
  53. package/templates/redline.yml +5 -9
  54. package/workflows/dashboard.yml +1 -1
  55. package/workflows/redline-collect.yml +1 -1
  56. package/workflows/redline-gate.yml +10 -3
  57. package/workflows/seed-canary.yml +2 -2
  58. package/workflows/weekly-digest.yml +1 -1
package/README.md CHANGED
@@ -56,10 +56,26 @@ cd your-repo
56
56
  npx redlinegate init
57
57
  ```
58
58
 
59
- That is the whole procedure. It detects your stack, renders the standards for it, installs
60
- the merge-readiness template and the gate (advisory it reports, it does not block),
61
- turns on the security floor, and opens a pull request. Anything that needed repository
62
- admin rights you do not have is listed at the end for an administrator to run.
59
+ That is the whole procedure. With no flags, at a terminal, it asks before it writes:
60
+ which standards apply, where the repository lives, what runs your pull request checks,
61
+ which assistants should read the rules, what to install, and how hard the gate should
62
+ bite. Whatever it detected is preselected, so pressing enter through it accepts detection,
63
+ and the last question offers **Dry run** before Apply.
64
+
65
+ Choose Apply and it renders the standards, installs the merge-readiness template and the
66
+ gate (advisory — it reports, it does not block), turns on the security floor, and opens a
67
+ pull request on `redline/onboard`. It never pushes to your default branch, so `git status`
68
+ stays clean. Anything that needed repository admin rights you do not have is listed at the
69
+ end for an administrator to run.
70
+
71
+ In CI, in a pipe, or with any flag present it prompts for nothing and takes the scripted
72
+ path — a prompt in a pipeline is a hang with nobody there to answer it:
73
+
74
+ ```sh
75
+ npx redlinegate init --dry-run # the plan; writes nothing, contacts no host
76
+ npx redlinegate init --profile web,infra # a React app with its own Terraform beside it
77
+ npx redlinegate init --pipeline azure-pipelines # on GitHub, but built by Azure Pipelines
78
+ ```
63
79
 
64
80
  Install it once and the everyday command is shorter:
65
81
 
@@ -123,8 +139,8 @@ Redline carries two versions that move independently. Do not conflate them.
123
139
 
124
140
  | Axis | Lives in | Bumped by | Example |
125
141
  | --- | --- | --- | --- |
126
- | **CLI version** | `redlinegate` on npm (git `v*` tags) | semantic-release, from conventional commits on `main` | `0.0.1` |
127
- | **Standards version** | `standards/manifest.json` → `version` | A human, in the same PR as the rule change (see above) | `0.0.1` |
142
+ | **CLI version** | `redlinegate` on npm (git `v*` tags) | semantic-release, from conventional commits on `main` | `0.0.2` |
143
+ | **Standards version** | `standards/manifest.json` → `version` | A human, in the same PR as the rule change (see above) | `0.0.2` |
128
144
 
129
145
  The CLI version is the tool's release line: [CHANGELOG.md](CHANGELOG.md) tracks it, and
130
146
  semantic-release computes the next one from commit messages — never edit
@@ -9,6 +9,11 @@ import { isSeverity } from "../core/severity.js";
9
9
  import { isRung, RUNGS } from "../enforce/ladder.js";
10
10
  import { resolvePlatform as defaultResolvePlatform, } from "../platforms/resolve.js";
11
11
  import { init, ONBOARD_BRANCH } from "../commands/init.js";
12
+ import { createGit } from "../core/git.js";
13
+ import { parseRemote } from "../platforms/detect.js";
14
+ import { Cancelled, createPrompter, isInteractive } from "../ui/prompt.js";
15
+ import { gatherFacts } from "../ui/facts.js";
16
+ import { runWizard } from "../ui/wizard.js";
12
17
  import { capabilitySelection, OPTIONAL_CAPABILITIES, } from "../config/redline-json.js";
13
18
  import { remove, REMOVE_BRANCH } from "../commands/remove.js";
14
19
  import { createHostWithdrawal } from "../remove/host.js";
@@ -26,19 +31,29 @@ import { createSyncHost } from "../sync/host.js";
26
31
  import { verifyRemote } from "../verify/remote.js";
27
32
  import { createRemoteVerifyHost } from "../verify/host.js";
28
33
  import { standardsVersion } from "../commands/sync.js";
34
+ import { isGatePipeline } from "../platforms/types.js";
29
35
  const PACKAGE_ROOT = fileURLToPath(new URL('../../', import.meta.url));
30
36
  const USAGE = [
31
37
  'redline — engineering control plane',
32
38
  '',
33
- ' redline init [--profile <name>] [--vendors <list>] [--blocking] [--no-a11y] [--speckit] [--dry-run] [--repair]',
34
- ' [--adopt-caller] [--skip <list>] [--with <list>]',
39
+ ' redline init [--profile <list>] [--vendors <list>] [--blocking] [--no-a11y] [--dry-run] [--repair]',
40
+ ' [--adopt-caller] [--skip <list>] [--with <list>] [--pipeline <name>]',
35
41
  ' onboard this repository: standards, security floor, merge gate (advisory), registration',
36
42
  ' --dry-run print the plan; writes nothing, needs no credential, contacts no host',
43
+ ' --profile <list> one profile, or several separated by commas, whose stacks are',
44
+ ' rendered together — a React app with its own Terraform beside it is',
45
+ ' web,infra. The recorded name is sorted, so the order you type cannot',
46
+ ' change the artifacts. Omitted, the stack is detected from the checkout',
37
47
  ' --vendors <list> comma-separated vendor ids (copilot,agents,claude,cursor) to render for —',
38
48
  ' overrides both detection and whatever .redline.json already recorded; a vendor',
39
49
  ' the org has not enabled never renders no matter what this list names',
40
50
  ' --blocking promote the merge gate from advisory to blocking',
41
- ' --no-a11y, --speckit recorded in .redline.json for later phases; changes nothing in Phase 1',
51
+ ' --no-a11y recorded in .redline.json for a later phase; changes nothing in Phase 1',
52
+ ' --speckit / --no-speckit, --tmf / --no-tmf the optional context sections rendered',
53
+ ' into the standards artifacts beside the rules. speckit is on by default',
54
+ ' and is dropped automatically where the repository already runs Spec Kit;',
55
+ ' tmf is off unless asked for. Passing the negative on a later run removes',
56
+ ' a section already rendered — the block is regenerated, not appended to',
42
57
  ' --repair re-apply every capability even if this repository looks already onboarded — for',
43
58
  ' labels, review-ownership, repo-property, gate and merge-policy, whose recorded',
44
59
  ' pendingAdmin entry a plain re-run can never clear on its own; composes with --dry-run',
@@ -52,6 +67,10 @@ const USAGE = [
52
67
  ` --rung <name> the enforcement rung: ${RUNGS.join(', ')}. A promotion needs recorded`,
53
68
  ' evidence and is refused without it; a demotion is always allowed. Omitting',
54
69
  ' the flag keeps whatever the repository already recorded',
70
+ ' --pipeline <name> github-actions or azure-pipelines — what actually runs this',
71
+ ' repository\'s pull request checks. Asked separately from the host because',
72
+ ' the two come apart: a repository on GitHub can be built entirely by Azure',
73
+ ' Pipelines, and installing an Actions workflow there gates nothing',
55
74
  ' --adopt-caller let Redline take over the gate machinery file (.github/workflows/redline.yml,',
56
75
  ' .azuredevops/redline-gate.yml) when what is already there carries nothing that',
57
76
  ' attributes it to Redline — a 2.1 caller, in practice. Without it the run refuses',
@@ -118,6 +137,24 @@ export async function run(argv, deps = {}) {
118
137
  const cwd = deps.cwd ?? process.cwd();
119
138
  const root = deps.root ?? PACKAGE_ROOT;
120
139
  const log = createLog(deps.sink);
140
+ const interactive = deps.isInteractive ?? (() => isInteractive());
141
+ // The host is read from the git remote alone, with no credential and no
142
+ // request — the menu's first question has to render before either exists,
143
+ // because "Dry run" is one of its answers. A remote this cannot classify is
144
+ // `null`, which is exactly the case the host question is there to settle.
145
+ const detectHost = () => {
146
+ try {
147
+ return parseRemote(createGit(cwd).remoteUrl()).host;
148
+ }
149
+ catch {
150
+ return null;
151
+ }
152
+ };
153
+ const runInitWizard = async (dir, packageRoot) => {
154
+ const prompter = deps.prompter?.() ?? createPrompter();
155
+ const answers = await runWizard(prompter, gatherFacts({ cwd: dir, root: packageRoot, detectedHost: detectHost() }));
156
+ return { answers };
157
+ };
121
158
  const resolve = deps.resolvePlatform ??
122
159
  ((dir, options) => defaultResolvePlatform(dir, options));
123
160
  const [command, ...rest] = argv;
@@ -144,15 +181,25 @@ export async function run(argv, deps = {}) {
144
181
  blocking: { type: 'boolean' },
145
182
  'no-a11y': { type: 'boolean' },
146
183
  speckit: { type: 'boolean' },
184
+ 'no-speckit': { type: 'boolean' },
185
+ tmf: { type: 'boolean' },
186
+ 'no-tmf': { type: 'boolean' },
147
187
  'dry-run': { type: 'boolean' },
148
188
  repair: { type: 'boolean' },
149
189
  'adopt-caller': { type: 'boolean' },
150
190
  skip: { type: 'string' },
151
191
  with: { type: 'string' },
152
192
  rung: { type: 'string' },
193
+ pipeline: { type: 'string' },
153
194
  },
154
195
  allowPositionals: false,
155
196
  }));
197
+ // `redline init` with nothing after it, at a terminal, is a person asking
198
+ // to be walked through onboarding — so walk them through it. Any flag at
199
+ // all means the caller has already decided, and the menu would be in the
200
+ // way; CI and pipes never see it (isInteractive), so the scripted path is
201
+ // byte-identical to what it was before the menu existed.
202
+ const wizard = rest.length === 0 && interactive() ? await runInitWizard(cwd, root) : null;
156
203
  const names = (list) => list === undefined
157
204
  ? []
158
205
  : list
@@ -161,7 +208,14 @@ export async function run(argv, deps = {}) {
161
208
  .filter((name) => name !== '');
162
209
  // Throws a usage RedlineError on an unknown or non-optional name, before
163
210
  // a platform is resolved or a byte is written.
164
- const selection = capabilitySelection(names(values.skip), names(values.with));
211
+ //
212
+ // The menu answers arrive here as the same two lists the flags produce,
213
+ // rather than as a parallel set of options: a capability the operator
214
+ // deselected in the wizard is a `--skip`, and there is exactly one place
215
+ // that decides what a skip means.
216
+ const selection = wizard
217
+ ? capabilitySelection(OPTIONAL_CAPABILITIES.filter((name) => !wizard.answers.capabilities.includes(name)), [...wizard.answers.capabilities])
218
+ : capabilitySelection(names(values.skip), names(values.with));
165
219
  const menu = { ...selection.menu };
166
220
  if (values.blocking !== undefined)
167
221
  menu.blockingGate = values.blocking;
@@ -169,6 +223,16 @@ export async function run(argv, deps = {}) {
169
223
  menu.accessibility = !values['no-a11y'];
170
224
  if (values.speckit !== undefined)
171
225
  menu.speckit = values.speckit;
226
+ if (values['no-speckit'] === true)
227
+ menu.speckit = false;
228
+ if (values.tmf !== undefined)
229
+ menu.tmf = values.tmf;
230
+ if (values['no-tmf'] === true)
231
+ menu.tmf = false;
232
+ if (wizard) {
233
+ menu.speckit = wizard.answers.speckit;
234
+ menu.tmf = wizard.answers.tmf;
235
+ }
172
236
  // Same "no default" reasoning as the menu flags above: undefined is how
173
237
  // init() tells "nothing typed, keep detection or the recorded
174
238
  // selection" from "the caller typed an empty list".
@@ -181,22 +245,30 @@ export async function run(argv, deps = {}) {
181
245
  if (values.rung !== undefined && !isRung(values.rung)) {
182
246
  throw new RedlineError('usage', `--rung must be one of ${RUNGS.join(', ')}, not "${values.rung}"`, 'observe reports and blocks nothing; block-blocker stops a merge on a BLOCKER');
183
247
  }
184
- const dryRun = values['dry-run'] === true;
248
+ if (values.pipeline !== undefined && !isGatePipeline(values.pipeline)) {
249
+ throw new RedlineError('usage', `--pipeline must be github-actions or azure-pipelines, not "${values.pipeline}"`, 'a repository on GitHub whose pull request checks are Azure Pipelines wants azure-pipelines');
250
+ }
251
+ const pipelineChoice = wizard?.answers.pipeline ?? values.pipeline;
252
+ const dryRun = values['dry-run'] === true || wizard?.answers.action === 'dry-run';
185
253
  const repair = values.repair === true;
186
254
  const adoptCaller = values['adopt-caller'] === true;
187
255
  // A dry run sends no request, so it must not require a credential —
188
256
  // see ResolvePlatformOptions.lazyCredentials. Every other path here
189
257
  // resolves one up front, exactly as before.
190
258
  const platform = await resolve(cwd, dryRun ? { lazyCredentials: true } : {});
259
+ const profileChoice = wizard?.answers.profile ?? values.profile;
260
+ const vendorChoice = wizard ? [...wizard.answers.vendors] : vendors;
261
+ const rungChoice = wizard?.answers.rung ?? values.rung;
191
262
  const report = await init(platform, {
192
263
  cwd,
193
264
  root,
194
- ...(values.profile ? { profile: values.profile } : {}),
195
- ...(vendors ? { vendors } : {}),
265
+ ...(profileChoice ? { profile: profileChoice } : {}),
266
+ ...(vendorChoice ? { vendors: vendorChoice } : {}),
196
267
  ...(dryRun ? { dryRun: true } : {}),
197
268
  ...(repair ? { repair: true } : {}),
198
269
  ...(adoptCaller ? { adoptCaller: true } : {}),
199
- ...(values.rung ? { rung: values.rung } : {}),
270
+ ...(rungChoice ? { rung: rungChoice } : {}),
271
+ ...(pipelineChoice ? { pipeline: pipelineChoice } : {}),
200
272
  menu,
201
273
  capabilities: selection.capabilities,
202
274
  });
@@ -247,10 +319,21 @@ export async function run(argv, deps = {}) {
247
319
  log.error(`could not open the pull request: ${report.pullRequestError}`, `the Redline changes are on branch ${ONBOARD_BRANCH} — push it if it is not already on origin, then open the pull request manually`);
248
320
  return exitCodeFor('failed');
249
321
  }
250
- if (report.pullRequest)
322
+ if (report.pullRequest) {
251
323
  log.info(`pull request: ${report.pullRequest.url}`);
252
- else if (report.alreadyOnboarded)
253
- log.info('already onboarded nothing to change');
324
+ // Onboarding commits to its own branch and pushes it, so the operator's
325
+ // working tree is untouched and `git status` is clean. Without this,
326
+ // the run looks like it did nothing: the first real onboarding ended
327
+ // with the operator running `init` a second time and being told
328
+ // "already onboarded" by a repository they believed was not.
329
+ log.info('');
330
+ log.info(`the changes are committed on ${ONBOARD_BRANCH} and pushed, not in your working`);
331
+ log.info('tree — `git status` here stays clean. Review and merge the pull request above.');
332
+ }
333
+ else if (report.alreadyOnboarded) {
334
+ log.info(`already onboarded — nothing to change (recorded in .redline.json; ` +
335
+ `re-run with --repair to re-apply every capability)`);
336
+ }
254
337
  return 0;
255
338
  }
256
339
  if (command === 'remove') {
@@ -563,6 +646,13 @@ export async function run(argv, deps = {}) {
563
646
  return exitCodeFor('usage');
564
647
  }
565
648
  catch (error) {
649
+ // Cancelling at a prompt is a decision, not a failure. It must not print an
650
+ // `error` line: an operator who pressed Ctrl-C already knows what happened,
651
+ // and a wrapping script reading exit 1 would file it as onboarding broken.
652
+ if (error instanceof Cancelled) {
653
+ log.info('cancelled — nothing was written');
654
+ return error.exitCode;
655
+ }
566
656
  if (isRedlineError(error)) {
567
657
  log.error(error.message, error.hint);
568
658
  return error.exitCode;
@@ -1 +1 @@
1
- {"version":3,"file":"redline.js","sourceRoot":"","sources":["../../cli/bin/redline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redline.js","sourceRoot":"","sources":["../../cli/bin/redline.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,eAAe,IAAI,sBAAsB,GAE1C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAA+C,MAAM,iBAAiB,CAAC;AACzF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMvD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvE,MAAM,KAAK,GAAG;IACZ,qCAAqC;IACrC,EAAE;IACF,sGAAsG;IACtG,qFAAqF;IACrF,+FAA+F;IAC/F,yFAAyF;IACzF,uFAAuF;IACvF,uFAAuF;IACvF,wFAAwF;IACxF,0FAA0F;IAC1F,mGAAmG;IACnG,kGAAkG;IAClG,wFAAwF;IACxF,oEAAoE;IACpE,2FAA2F;IAC3F,0FAA0F;IAC1F,2FAA2F;IAC3F,4FAA4F;IAC5F,4FAA4F;IAC5F,0FAA0F;IAC1F,mGAAmG;IACnG,kGAAkG;IAClG,yGAAyG;IACzG,qGAAqG;IACrG,qBAAqB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD;IACzG,uGAAuG;IACvG,mGAAmG;IACnG,2FAA2F;IAC3F,sGAAsG;IACtG,4BAA4B;IAC5B,8CAA8C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;IAC5F,8FAA8F;IAC9F,2EAA2E;IAC3E,sFAAsF;IACtF,6FAA6F;IAC7F,6FAA6F;IAC7F,qFAAqF;IACrF,qGAAqG;IACrG,kGAAkG;IAClG,oGAAoG;IACpG,kFAAkF;IAClF,kEAAkE;IAClE,EAAE;IACF,8BAA8B;IAC9B,2FAA2F;IAC3F,8FAA8F;IAC9F,yFAAyF;IACzF,0FAA0F;IAC1F,qFAAqF;IACrF,uFAAuF;IACvF,iFAAiF;IACjF,EAAE;IACF,iDAAiD;IACjD,qEAAqE;IACrE,wFAAwF;IACxF,sFAAsF;IACtF,EAAE;IACF,mFAAmF;IACnF,oFAAoF;IACpF,2FAA2F;IAC3F,8FAA8F;IAC9F,uEAAuE;IACvE,EAAE;IACF,qCAAqC;IACrC,wFAAwF;IACxF,EAAE;IACF,uDAAuD;IACvD,qFAAqF;IACrF,wFAAwF;IACxF,EAAE;IACF,4DAA4D;IAC5D,qFAAqF;IACrF,iEAAiE;IACjE,iEAAiE;IACjE,mFAAmF;IACnF,gFAAgF;IAChF,EAAE;IACF,uCAAuC;IACvC,yCAAyC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IACnF,0FAA0F;IAC1F,6EAA6E;IAC7E,EAAE;IACF,8BAA8B;IAC9B,wEAAwE;IACxE,EAAE;IACF,qBAAqB;CACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,4EAA4E;AAC5E,sEAAsE;AACtE,yEAAyE;AACzE,kCAAkC;AAClC,SAAS,YAAY,CAAI,EAAW;IAClC,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAyBD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,OAAgB,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAElE,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,UAAU,GAAG,GAAsB,EAAE;QACzC,IAAI,CAAC;YACH,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,EACzB,GAAW,EACX,WAAmB,EACyB,EAAE;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,cAAc,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,SAAS,CAC7B,QAAQ,EACR,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CACzE,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,OAAO,GACX,IAAI,CAAC,eAAe;QACpB,CAAC,CAAC,GAAW,EAAE,OAAgC,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5F,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEhC,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CACnC,SAAS,CAAC;gBACR,IAAI,EAAE,IAAI;gBACV,mEAAmE;gBACnE,oEAAoE;gBACpE,gEAAgE;gBAChE,kEAAkE;gBAClE,gBAAgB;gBAChB,OAAO,EAAE;oBACP,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC5B,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACjC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC3B,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACnC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC7B;gBACD,gBAAgB,EAAE,KAAK;aACxB,CAAC,CACH,CAAC;YAEF,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,0EAA0E;YAC1E,yDAAyD;YACzD,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE7E,MAAM,KAAK,GAAG,CAAC,IAAwB,EAAY,EAAE,CACnD,IAAI,KAAK,SAAS;gBAChB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI;qBACD,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;qBAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YACvC,yEAAyE;YACzE,+CAA+C;YAC/C,EAAE;YACF,wEAAwE;YACxE,sEAAsE;YACtE,yEAAyE;YACzE,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM;gBACtB,CAAC,CAAC,mBAAmB,CACjB,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EACnF,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CACjC;gBACH,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAEhE,MAAM,IAAI,GAA4B,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;YAC5D,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;YACvE,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,SAAS;gBAAE,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7E,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAChE,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI;gBAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACxD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;gBAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACpD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI;gBAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;YAChD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YAChC,CAAC;YAED,wEAAwE;YACxE,8DAA8D;YAC9D,oDAAoD;YACpD,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,KAAK,SAAS;gBAC1B,CAAC,CAAC,MAAM,CAAC,OAAO;qBACX,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC5B,CAAC,CAAC,SAAS,CAAC;YAEhB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,GAAG,EACjE,8EAA8E,CAC/E,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,8DAA8D,MAAM,CAAC,QAAQ,GAAG,EAChF,4FAA4F,CAC7F,CAAC;YACJ,CAAC;YACD,MAAM,cAAc,GAAG,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;YAClF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;YACpD,oEAAoE;YACpE,oEAAoE;YACpE,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;YAChE,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACpE,MAAM,UAAU,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE;gBAClC,GAAG;gBACH,IAAI;gBACJ,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,IAAI;gBACJ,YAAY,EAAE,SAAS,CAAC,YAAY;aACrC,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,YAAY;gBAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAC1E,sEAAsE;YACtE,yEAAyE;YACzE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;gBACvE,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC5B,GAAG,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;oBACnF,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAChC,GAAG,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC;gBACvF,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ;oBAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;gBACxE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;gBAC9F,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,sEAAsE;gBACtE,uEAAuE;gBACvE,2CAA2C;gBAC3C,GAAG,CAAC,IAAI,CACN,6DAA6D,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC3F,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,CAAC,CACpE,CAAC;YACJ,CAAC;YACD,qEAAqE;YACrE,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,wEAAwE;YACxE,gEAAgE;YAChE,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBACrC,GAAG,CAAC,KAAK,CACP,oCAAoC,MAAM,CAAC,gBAAgB,EAAE,EAC7D,qCAAqC,cAAc,gFAAgF,CACpI,CAAC;gBACF,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpD,wEAAwE;gBACxE,qEAAqE;gBACrE,qEAAqE;gBACrE,gEAAgE;gBAChE,6DAA6D;gBAC7D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,gCAAgC,cAAc,kCAAkC,CAAC,CAAC;gBAC3F,GAAG,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;YAC7F,CAAC;iBAAM,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,CACN,oEAAoE;oBAClE,oDAAoD,CACvD,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CACnC,SAAS,CAAC;gBACR,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;gBAC3D,gBAAgB,EAAE,KAAK;aACxB,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;YAC1C,sEAAsE;YACtE,oEAAoE;YACpE,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,QAAQ,EACR,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAC7D,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACnD,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS;gBACrC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,wEAAwE;YACxE,oEAAoE;YACpE,iEAAiE;YACjE,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS;gBACrC,GAAG,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ;oBAAE,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;gBACxE,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;gBACvE,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,CACN,8DAA8D,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAC;YACJ,CAAC;YACD,sEAAsE;YACtE,wEAAwE;YACxE,4EAA4E;YAC5E,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBACrC,GAAG,CAAC,KAAK,CACP,oCAAoC,MAAM,CAAC,gBAAgB,EAAE,EAC7D,4BAA4B,aAAa,gFAAgF,CAC1H,CAAC;gBACF,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,MAAM,CAAC,WAAW;gBAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;;gBACvE,GAAG,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CACnC,SAAS,CAAC;gBACR,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAChF,gBAAgB,EAAE,KAAK;aACxB,CAAC,CACH,CAAC;YAEF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACzB,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,uFAAuF,EACvF,2EAA2E,CAC5E,CAAC;gBACJ,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,sBAAsB,EAAE,CAAC;gBACzE,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE;oBAC7D,IAAI;oBACJ,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,CAAC;iBACzC,CAAC,CAAC;gBACH,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;gBACxD,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAClC,uEAAuE;gBACvE,uEAAuE;gBACvE,yBAAyB;gBACzB,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;gBACrE,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACpF,CAAC;YACD,sEAAsE;YACtE,qEAAqE;YACrE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3F,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE5B,uEAAuE;YACvE,qEAAqE;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAE7F,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACzB,IAAI,MAAM,CAAC,EAAE;oBAAE,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;qBAC3C,IAAI,YAAY;oBAAE,GAAG,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;;oBACzF,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CACnC,SAAS,CAAC;gBACR,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;oBAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;oBAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC/B;gBACD,gBAAgB,EAAE,KAAK;aACxB,CAAC,CACH,CAAC;YAEF,IAAI,MAAM,GAAG,QAAQ,CAAC;YACtB,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClB,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,mCAAmC,EACnC,4EAA4E,CAC7E,CAAC;gBACJ,CAAC;gBACD,yEAAyE;gBACzE,sEAAsE;gBACtE,wCAAwC;gBACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;oBACpE,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,gDAAgD,MAAM,CAAC,QAAQ,GAAG,EAClE,uEAAuE,CACxE,CAAC;gBACJ,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACjC,MAAM,GAAG,eAAe,CAAC;oBACvB,QAAQ;oBACR,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/D,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACxC,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,mBAAmB,MAAM,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAC7F,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE;gBAClC,GAAG;gBACH,IAAI;gBACJ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;oBACzB,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE;oBAClD,CAAC,CAAC,MAAM,CAAC,MAAM;wBACb,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACpB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;aAC3B,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CACN,WAAW,MAAM,CAAC,KAAK,CAAC,OAAO,yBAAyB;gBACtD,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5E,CAAC;YACF,wEAAwE;YACxE,4CAA4C;YAC5C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CACN,mBAAmB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,2CAA2C;oBACzF,oBAAoB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACnE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAC1D,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC5B,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACzC,GAAG,CAAC,IAAI,CAAC,uCAAuC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAC1B,CAAC,CAAC,iDAAiD;gBACnD,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa,CAC3C,CAAC;YACF,oEAAoE;YACpE,iEAAiE;YACjE,GAAG,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YAElF,wEAAwE;YACxE,qEAAqE;YACrE,6CAA6C;YAC7C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CACnC,SAAS,CAAC;gBACR,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAC3E,gBAAgB,EAAE,KAAK;aACxB,CAAC,CACH,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,yCAAyC,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,uDAAuD,MAAM,GAAG,CAAC,CAAC;YACpG,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAEzE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,2EAA2E;YAC3E,0EAA0E;YAC1E,WAAW;YACX,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAC1B,CAAC,CAAC,+BAA+B,MAAM,CAAC,SAAS,CAAC,MAAM,uCAAuC;gBAC/F,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,wBAAwB,CACjG,CAAC;YACF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,0EAA0E,CAAC,CAAC;YAC5F,CAAC;YAED,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CACnC,SAAS,CAAC;gBACR,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACvE,gBAAgB,EAAE,KAAK;aACxB,CAAC,CACH,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,yCAAyC,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC;gBACpB,QAAQ;gBACR,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjD,CAAC,CAAC;YACH,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,MAAM,CAAC,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;oBACjC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YACD,uEAAuE;YACvE,0EAA0E;YAC1E,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CACnC,SAAS,CAAC;gBACR,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC3C;gBACD,gBAAgB,EAAE,KAAK;aACxB,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;YAC1C,oEAAoE;YACpE,yEAAyE;YACzE,kEAAkE;YAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,cAAc,EAAE,EAAE;gBAC/D,IAAI;gBACJ,GAAG;gBACH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpC,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,eAAe,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YACxI,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;oBAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;qBACpE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;oBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAC;qBACvE,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe;oBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,oCAAoC,CAAC,CAAC;qBAC9F,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBAC5C,sEAAsE;oBACtE,sEAAsE;oBACtE,wEAAwE;oBACxE,GAAG,CAAC,IAAI,CACN,KAAK,IAAI,iCAAiC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;wBACrE,8EAA8E,CACjF,CAAC;gBACJ,CAAC;;oBAAM,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YAEtF,uEAAuE;YACvE,0EAA0E;YAC1E,wBAAwB;YACxB,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YACpD,0EAA0E;YAC1E,wCAAwC;YACxC,MAAM,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;YAChF,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;gBACrF,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACb,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;gBAClE,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAI,CAAC,CAAC;YAC3B,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChF,OAAO,CAAC,CAAC;YACX,CAAC;YAED,yEAAyE;YACzE,uDAAuD;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;gBACnD,IAAI;gBACJ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,QAAkB,EAAE;aACjF,CAAC,CACH,CAAC;YACF,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CACnC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAChE,CAAC;YAEF,MAAM,UAAU,CAAC,GAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvG,OAAO,CAAC,CAAC;QACX,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,oBAAoB,OAAO,GAAG,EAAE,qBAAqB,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,oEAAoE;QACpE,sEAAsE;QACtE,oEAAoE;QACpE,iEAAiE;QACjE,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,oEAAoE;QACpE,sEAAsE;QACtE,mEAAmE;QACnE,yDAAyD;QACzD,GAAG,CAAC,KAAK,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACzB,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -3,22 +3,24 @@ import { join } from 'node:path';
3
3
  import { isRedlineError, RedlineError } from "../core/errors.js";
4
4
  import { CLI_VERSION } from "../core/version.js";
5
5
  import { canPromote } from "../enforce/ladder.js";
6
- import { CAPABILITY_KEYS, CONFIG_FILE, MENU_KEYS, deselectedCapabilities, labelsCarriedByGate, readConfig, writeConfig, } from "../config/redline-json.js";
6
+ import { CAPABILITY_KEYS, MENU_DEFAULTS, CONFIG_FILE, MENU_KEYS, deselectedCapabilities, labelsCarriedByGate, readConfig, writeConfig, } from "../config/redline-json.js";
7
7
  import { proposeProfile } from "../detect/stack.js";
8
8
  import { scanRepo } from "../detect/scan.js";
9
9
  import { loadManifest } from "../render/manifest.js";
10
10
  import { resolveProfile } from "../render/profile.js";
11
11
  import { render } from "../render/standards.js";
12
12
  import { renderCommands, COMMAND_HOSTS } from "../render/commands.js";
13
+ import { CONTEXTS, detectSpecKit } from "../render/contexts.js";
14
+ import { surveyRepo } from "../detect/existing.js";
13
15
  import { LOCAL_RULES_FILE } from "../render/vendors.js";
14
16
  import { isPending } from "../platforms/types.js";
15
- export const DEFAULT_MENU = {
16
- blockingGate: false,
17
- adrForLargeDiffs: true,
18
- accessibility: true,
19
- speckit: false,
20
- sensitivePathReviewers: true,
21
- };
17
+ // What a repository gets when it says nothing. Every default here has to be
18
+ // safe on a repository nobody has looked at, because that is the one the
19
+ // command is usually run on.
20
+ // Re-exported from the config module, which owns them so the parser can fill a
21
+ // key a repository was onboarded before. See MENU_DEFAULTS there for what each
22
+ // default is and why.
23
+ export const DEFAULT_MENU = MENU_DEFAULTS;
22
24
  // Named once so the label FLOOR_GATE soft-fails on and the label
23
25
  // openPullRequest applies below share one literal instead of two that could
24
26
  // drift apart, and so web/components/journey.tsx's hardcoded SYNC_LABEL can
@@ -172,7 +174,7 @@ const VENDOR_MARKERS = [
172
174
  // org-enabled vendor) rather than an empty selection — that is the greenfield
173
175
  // case the standard is written for, not a repository that opted out of all of
174
176
  // them.
175
- function detectVendors(cwd, orgDefault) {
177
+ export function detectVendors(cwd, orgDefault) {
176
178
  const found = VENDOR_MARKERS.filter((marker) => marker.paths.some((relPath) => existsSync(join(cwd, relPath)))).map((marker) => marker.vendor);
177
179
  return found.length > 0 ? found : orgDefault;
178
180
  }
@@ -280,6 +282,7 @@ export async function init(platform, opts) {
280
282
  const vendors = opts.vendors ?? existing?.vendors ?? detectVendors(cwd, orgVendors);
281
283
  const gateOptions = {
282
284
  ...FLOOR_GATE,
285
+ ...(opts.pipeline ? { pipeline: opts.pipeline } : {}),
283
286
  ...(menu.adrForLargeDiffs ? {} : { adrDiffThreshold: Number.MAX_SAFE_INTEGER }),
284
287
  ...(opts.adoptCaller === true ? { adoptCaller: true } : {}),
285
288
  ...(capabilities.labels ? {} : { manageLabels: false }),
@@ -351,9 +354,38 @@ export async function init(platform, opts) {
351
354
  'it — the selection recorded in .redline.json is unchanged, and re-selecting the gate ' +
352
355
  'brings them back');
353
356
  }
357
+ // Spec Kit is a separate tool that scaffolds its own files and carries its own
358
+ // account of how the repository works. Where it is already installed, Redline
359
+ // drops its section rather than adding a second one beside it — and says so,
360
+ // because a context silently missing from the artifacts is indistinguishable
361
+ // from one that was never asked for.
362
+ const specKitAt = detectSpecKit(cwd);
363
+ if (specKitAt !== null && menu.speckit) {
364
+ menu.speckit = false;
365
+ notes.push(`this repository already runs Spec Kit (${specKitAt}), so Redline left the spec-driven ` +
366
+ 'development context out rather than writing a second account of it beside the one Spec ' +
367
+ 'Kit maintains — pass --speckit to include it anyway');
368
+ }
369
+ // The same courtesy Spec Kit gets, generalised to the rest of the toolchain.
370
+ // A repository with a mature pipeline already runs a scanner for most of what
371
+ // the gate would add; installing a second one beside it is not defence in
372
+ // depth, it is two sets of findings and two exemption paths for one problem.
373
+ // What Redline still brings such a repository is the part nothing else does —
374
+ // the standards the AI reviews against, and a check that they were applied —
375
+ // so detection narrows the gate rather than cancelling the onboarding.
376
+ const survey = surveyRepo(cwd);
377
+ for (const tool of survey.tools) {
378
+ const covers = tool.standsDown;
379
+ notes.push(covers === null
380
+ ? `this repository already runs ${tool.label} (${tool.evidence}) — noted; Redline installs nothing that overlaps it`
381
+ : `this repository already runs ${tool.label} (${tool.evidence}), which covers what Redline's ` +
382
+ `own ${covers} check would report. Narrowing the gate to match is not wired yet, so for now ` +
383
+ `deselect it yourself with: redline init --skip gate`);
384
+ }
385
+ const contexts = CONTEXTS.filter((context) => menu[context.key]).map((context) => context.key);
354
386
  // Files next, host settings after: a denied host call must never cost the
355
387
  // file-level work that already succeeded.
356
- const rendered = render({ root, profile, out: cwd, vendors, check: dryRun });
388
+ const rendered = render({ root, profile, out: cwd, vendors, contexts, check: dryRun });
357
389
  // The ceiling render() applies internally, applied here too. renderCommands
358
390
  // cannot enforce it for itself: COMMAND_HOSTS carries hosts the vendor
359
391
  // manifest has no entry for at all (opencode), which is not the same thing
@@ -393,7 +425,11 @@ export async function init(platform, opts) {
393
425
  // a selection this run was explicitly told to drop.
394
426
  const vendorsChanged = existing !== null &&
395
427
  (existing.vendors.length !== vendors.length ||
396
- [...existing.vendors].sort().join('') !== [...vendors].sort().join(''));
428
+ // `\0` as the escape, never a literal NUL byte. The byte itself made this
429
+ // file read as binary to grep and ripgrep, which then skipped it silently:
430
+ // a repository-wide search for any symbol in the largest command module
431
+ // returned nothing and reported no error.
432
+ [...existing.vendors].sort().join('\0') !== [...vendors].sort().join('\0'));
397
433
  // Same shape again: deselecting a capability moves no file of its own, and
398
434
  // swallowing it as "nothing to change" would leave .redline.json recording a
399
435
  // capability the operator just switched off — with Redline still maintaining it.
@@ -556,7 +592,7 @@ export async function init(platform, opts) {
556
592
  pullRequest = await platform.openPullRequest(ref, cwd, {
557
593
  branch: ONBOARD_BRANCH,
558
594
  title: `chore(redline): onboard to standards v${manifest.version}`,
559
- body: onboardBody(profile, manifest.version, pendingAdmin),
595
+ body: onboardBody(profile, manifest.version, pendingAdmin, files, hostPlan, menu, notes),
560
596
  labels: capabilities.labels ? [SYNC_LABEL] : [],
561
597
  files,
562
598
  });
@@ -594,22 +630,57 @@ export async function init(platform, opts) {
594
630
  hostPlan,
595
631
  };
596
632
  }
597
- function onboardBody(profile, version, pendingAdmin) {
633
+ // The pull request a team sees first, and usually the only thing they read
634
+ // before deciding whether this tool is worth having. It used to open with
635
+ // "Onboards this repository to Redline standards v0.0.3" — a sentence that
636
+ // means nothing to a reviewer who has not heard of Redline, followed by three
637
+ // paragraphs of Redline's own vocabulary and no statement of what changed in
638
+ // THEIR repository or what happens next. So: what it does, what it changed
639
+ // here, what the reviewer will notice, and how to switch any of it off.
640
+ function onboardBody(profile, version, pendingAdmin, files, hostPlan, menu, notes) {
641
+ const bullets = (items) => items.map((item) => `- \`${item}\``);
642
+ const gate = menu.blockingGate
643
+ ? 'The gate **blocks** a merge that fails it.'
644
+ : 'The gate is **advisory**: it reports and does not block. Making it blocking is a separate, ' +
645
+ 'deliberate step once you have watched it for a while.';
598
646
  const pending = pendingAdmin.length === 0
599
- ? 'Everything that needed repository settings was applied.'
600
- : `A repository administrator still needs to enable: ${pendingAdmin.join(', ')}. ` +
601
- `Until then this repository shows as partially onboarded.`;
647
+ ? []
648
+ : [
649
+ '',
650
+ '## Needs an administrator',
651
+ '',
652
+ `These could not be applied with the permissions this run had: ${pendingAdmin.join(', ')}.`,
653
+ 'Everything else is in place; re-run `redline init --repair` once they are granted.',
654
+ ];
602
655
  return [
603
- `Onboards this repository to Redline standards \`v${version}\` (profile: \`${profile}\`).`,
656
+ 'This adds an automated review standard to the repository: one versioned set of rules, rendered',
657
+ 'into the files your coding assistants already read, plus a pull request check that applies them',
658
+ 'to the diff.',
659
+ '',
660
+ `Detected stack: \`${profile}\`. Rules version: \`v${version}\`.`,
661
+ '',
662
+ '## What changed here',
663
+ '',
664
+ ...(files.length === 0 ? ['No files changed.'] : bullets(files)),
665
+ ...(hostPlan.length === 0 ? [] : ['', 'Repository settings:', '', ...hostPlan.map((h) => `- ${h}`)]),
666
+ '',
667
+ '## What you will notice',
668
+ '',
669
+ `- ${gate}`,
670
+ '- Your next pull request runs the Redline check and comments findings on the diff.',
671
+ '- Nothing outside the `<!-- REDLINE:BEGIN -->` markers was touched. Files you already had —',
672
+ ' a pull request template, a CODEOWNERS — were left exactly as they are.',
604
673
  '',
605
- 'The merge gate runs **advisory** — it reports, it does not block. Promotion to blocking is a',
606
- 'deliberate second step after a soak period.',
674
+ '## Turning it down',
607
675
  '',
608
- 'Generated content sits inside `<!-- REDLINE:BEGIN -->` markers; anything outside them is yours',
609
- 'and was preserved. If a rule is wrong for this repository, raise it in the Redline source repo',
610
- 'rather than editing it here, so every repository benefits.',
676
+ '- A capability you already have your own version of: `redline init --skip <name>`.',
677
+ '- A rule that is wrong for this repository: raise it in the Redline repository rather than',
678
+ ' editing the generated block here, so every repository gets the fix.',
679
+ '- All of it: `redline remove` takes back only what Redline can prove it wrote, as a pull request.',
611
680
  '',
612
- pending,
681
+ '`.redline.json` records every choice above and explains each one in its own `//` key.',
682
+ ...(notes.length === 0 ? [] : ['', '## Worth knowing', '', ...notes.map((n) => `- ${n}`)]),
683
+ ...pending,
613
684
  ].join('\n');
614
685
  }
615
686
  //# sourceMappingURL=init.js.map