agentic-engineering-harness 0.6.29 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/agents/permissions.js +4 -3
  2. package/dist/agents/permissions.js.map +1 -1
  3. package/dist/cli.js +34 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/context/compression/headroom.d.ts +6 -1
  6. package/dist/context/compression/headroom.js +60 -15
  7. package/dist/context/compression/headroom.js.map +1 -1
  8. package/dist/context/compression/types.d.ts +1 -0
  9. package/dist/context/gateway.d.ts +1 -0
  10. package/dist/context/gateway.js +58 -44
  11. package/dist/context/gateway.js.map +1 -1
  12. package/dist/context/repository/serena.d.ts +1 -1
  13. package/dist/context/repository/serena.js +2 -1
  14. package/dist/context/repository/serena.js.map +1 -1
  15. package/dist/context/transport.d.ts +33 -0
  16. package/dist/context/transport.js +63 -0
  17. package/dist/context/transport.js.map +1 -0
  18. package/dist/core/config.js +5 -5
  19. package/dist/core/config.js.map +1 -1
  20. package/dist/core/init.js +2 -1
  21. package/dist/core/init.js.map +1 -1
  22. package/dist/core/run.js +6 -2
  23. package/dist/core/run.js.map +1 -1
  24. package/dist/core/sdd.js +2 -2
  25. package/dist/core/sdd.js.map +1 -1
  26. package/dist/core/types.d.ts +53 -1
  27. package/dist/core/verify.js +2 -1
  28. package/dist/core/verify.js.map +1 -1
  29. package/dist/delivery/finalize.d.ts +1 -1
  30. package/dist/delivery/finalize.js +6 -1
  31. package/dist/delivery/finalize.js.map +1 -1
  32. package/dist/evals/fullStack.d.ts +10 -7
  33. package/dist/evals/fullStack.js +132 -36
  34. package/dist/evals/fullStack.js.map +1 -1
  35. package/dist/evidence/graph.d.ts +1 -0
  36. package/dist/evidence/graph.js +28 -11
  37. package/dist/evidence/graph.js.map +1 -1
  38. package/dist/issues/intake.d.ts +1 -1
  39. package/dist/maturity/inventory.d.ts +30 -0
  40. package/dist/maturity/inventory.js +53 -0
  41. package/dist/maturity/inventory.js.map +1 -0
  42. package/dist/memory/candidates.d.ts +29 -0
  43. package/dist/memory/candidates.js +31 -0
  44. package/dist/memory/candidates.js.map +1 -0
  45. package/dist/paseo/launchSpec.js +4 -4
  46. package/dist/paseo/launchSpec.js.map +1 -1
  47. package/dist/provenance/generate.d.ts +27 -1
  48. package/dist/provenance/generate.js +233 -75
  49. package/dist/provenance/generate.js.map +1 -1
  50. package/dist/providers/engram.d.ts +1 -0
  51. package/dist/providers/engram.js +40 -8
  52. package/dist/providers/engram.js.map +1 -1
  53. package/dist/providers/graphify.d.ts +20 -1
  54. package/dist/providers/graphify.js +106 -26
  55. package/dist/providers/graphify.js.map +1 -1
  56. package/dist/providers/serenaMcp.d.ts +7 -0
  57. package/dist/providers/serenaMcp.js +77 -0
  58. package/dist/providers/serenaMcp.js.map +1 -0
  59. package/dist/providers/validation/bddExecution.d.ts +15 -0
  60. package/dist/providers/validation/bddExecution.js +107 -0
  61. package/dist/providers/validation/bddExecution.js.map +1 -0
  62. package/dist/providers/validation/integrationEnvironment.d.ts +12 -0
  63. package/dist/providers/validation/integrationEnvironment.js +101 -0
  64. package/dist/providers/validation/integrationEnvironment.js.map +1 -0
  65. package/dist/providers/validation/pact.d.ts +15 -0
  66. package/dist/providers/validation/pact.js +79 -0
  67. package/dist/providers/validation/pact.js.map +1 -0
  68. package/dist/providers/validation/protocol.d.ts +7 -0
  69. package/dist/providers/validation/protocol.js +35 -0
  70. package/dist/providers/validation/protocol.js.map +1 -0
  71. package/dist/providers/validation/providerUtils.d.ts +18 -0
  72. package/dist/providers/validation/providerUtils.js +40 -0
  73. package/dist/providers/validation/providerUtils.js.map +1 -0
  74. package/dist/providers/validation/registry.d.ts +21 -0
  75. package/dist/providers/validation/registry.js +59 -0
  76. package/dist/providers/validation/registry.js.map +1 -0
  77. package/dist/providers/validation/reqnroll.d.ts +7 -0
  78. package/dist/providers/validation/reqnroll.js +50 -0
  79. package/dist/providers/validation/reqnroll.js.map +1 -0
  80. package/dist/providers/validation/testExecution.d.ts +15 -0
  81. package/dist/providers/validation/testExecution.js +122 -0
  82. package/dist/providers/validation/testExecution.js.map +1 -0
  83. package/dist/providers/validation/types.d.ts +158 -0
  84. package/dist/providers/validation/types.js +2 -0
  85. package/dist/providers/validation/types.js.map +1 -0
  86. package/dist/providers/versions.d.ts +10 -0
  87. package/dist/providers/versions.js +3 -0
  88. package/dist/providers/versions.js.map +1 -0
  89. package/dist/spec/openspec.js +12 -7
  90. package/dist/spec/openspec.js.map +1 -1
  91. package/dist/telemetry/events.js +36 -37
  92. package/dist/telemetry/events.js.map +1 -1
  93. package/dist/telemetry/otlp.d.ts +2 -1
  94. package/dist/telemetry/otlp.js +20 -41
  95. package/dist/telemetry/otlp.js.map +1 -1
  96. package/dist/telemetry/tracing.d.ts +19 -0
  97. package/dist/telemetry/tracing.js +141 -0
  98. package/dist/telemetry/tracing.js.map +1 -0
  99. package/dist/toolchain/config.js +3 -2
  100. package/dist/toolchain/config.js.map +1 -1
  101. package/dist/validators/external.js +6 -5
  102. package/dist/validators/external.js.map +1 -1
  103. package/dist/validators/gherkin.js +5 -56
  104. package/dist/validators/gherkin.js.map +1 -1
  105. package/dist/validators/registry.js +42 -3
  106. package/dist/validators/registry.js.map +1 -1
  107. package/dist/validators/toolEvidence.d.ts +2 -22
  108. package/dist/validators/toolEvidence.js +38 -5
  109. package/dist/validators/toolEvidence.js.map +1 -1
  110. package/dist/validators/types.d.ts +2 -1
  111. package/dist/workers/agentPrompt.js +5 -3
  112. package/dist/workers/agentPrompt.js.map +1 -1
  113. package/docs/ARCHITECTURE.md +60 -2
  114. package/docs/COMPONENT_MATURITY.md +19 -15
  115. package/docs/OSS_STACK.md +5 -4
  116. package/docs/V0.2.md +4 -1
  117. package/docs/VALIDATION.md +54 -3
  118. package/docs/VALIDATION_COMPATIBILITY.md +19 -0
  119. package/docs/component-maturity.json +34 -0
  120. package/maturity/components.yaml +59 -0
  121. package/package.json +8 -1
  122. package/schemas/project.schema.json +3 -3
  123. package/schemas/validation-report.schema.json +2 -1
  124. package/schemas/validation-result.schema.json +84 -0
  125. package/scripts/headroom-bridge.py +88 -0
  126. package/templates/project.yaml +1 -0
  127. package/templates/provider-versions.json +10 -0
  128. package/templates/toolchain.yaml +12 -4
@@ -6,8 +6,7 @@ import { loadTaskContract } from "../core/config.js";
6
6
  import { commandExists, runProcess } from "../utils/process.js";
7
7
  export async function generateProvenance(root, config, options) {
8
8
  const artifact = path.resolve(root, options.artifact);
9
- const stat = await fs.stat(artifact);
10
- if (!stat.isFile())
9
+ if (!(await fs.stat(artifact)).isFile())
11
10
  throw new Error("Provenance currently requires --artifact to point to a file.");
12
11
  const digest = await sha256File(artifact);
13
12
  const commit = await gitValue(root, "git rev-parse HEAD");
@@ -17,49 +16,48 @@ export async function generateProvenance(root, config, options) {
17
16
  const base = sanitize(path.basename(artifact));
18
17
  const predicateFile = path.join(outputDir, `${base}.slsa-provenance.json`);
19
18
  const statementFile = path.join(outputDir, `${base}.intoto.json`);
19
+ const manifestFile = path.join(outputDir, `${base}.manifest.json`);
20
20
  let sbomFile;
21
+ const sbomRequired = config.provenance?.required === true || config.provenance?.sbom?.required === true;
21
22
  if (options.sbom !== false && await commandExists("trivy", root)) {
22
23
  sbomFile = path.join(outputDir, `${base}.cyclonedx.json`);
23
- const sbom = await runProcess(`trivy fs --format cyclonedx --output ${quote(sbomFile)} ${quote(root)}`, { cwd: root, timeoutMs: 600_000 });
24
+ const sbomCommand = config.provenance?.sbom?.command ?? `trivy fs --format cyclonedx --output ${quote(sbomFile)} ${quote(root)}`;
25
+ const sbom = await runProcess(sbomCommand, { cwd: root, timeoutMs: 600_000 });
24
26
  if (sbom.exitCode !== 0)
25
27
  throw new Error(`Trivy SBOM generation failed: ${sbom.stderr || sbom.stdout}`);
26
28
  }
29
+ else if (sbomRequired)
30
+ throw new Error("Supply-chain policy requires a CycloneDX SBOM, but Trivy is unavailable or SBOM generation was disabled.");
27
31
  const manifest = await buildProvenanceManifest(root, config, options.taskId, artifact, sbomFile);
28
- const manifestFile = path.join(outputDir, `${base}.manifest.json`);
32
+ manifest.subject = { path: relative(root, artifact), sha256: digest };
33
+ const signingRequired = options.sign || config.provenance?.signing?.required === true || config.provenance?.verification?.required === true;
34
+ const plannedBundle = signingRequired ? path.join(outputDir, `${base}.sigstore.json`) : undefined;
35
+ manifest.attestations = { statement: relative(root, statementFile), predicate: relative(root, predicateFile), ...(plannedBundle ? { bundle: relative(root, plannedBundle) } : {}) };
29
36
  await fs.writeFile(manifestFile, `${JSON.stringify(manifest, null, 2)}\n`);
30
37
  const manifestDigest = await sha256File(manifestFile);
31
38
  const runDigest = options.taskId ? await optionalDigest(path.resolve(root, config.sdd?.runsDir ?? ".harness/runs", `${options.taskId}.json`)) : undefined;
32
39
  const reportDigest = options.taskId ? await optionalDigest(path.resolve(root, config.sdd?.reportsDir ?? ".harness/reports", `${options.taskId}.json`)) : undefined;
33
- const predicate = buildSlsaPredicate({
34
- project: config.project.name,
35
- artifact: path.basename(artifact),
36
- taskId: options.taskId,
37
- commit,
38
- remote,
39
- runDigest,
40
- reportDigest,
41
- artifactManifestSha256: manifestDigest,
42
- buildType: config.provenance?.buildType ?? "https://github.com/JamesMorales04/agentic-engineering-harness/v0.3",
43
- invocationId: crypto.randomUUID(),
44
- startedOn: new Date().toISOString(),
45
- finishedOn: new Date().toISOString()
46
- });
40
+ const predicate = buildSlsaPredicate({ project: config.project.name, artifact: path.basename(artifact), taskId: options.taskId, commit, remote, runDigest, reportDigest, artifactManifestSha256: manifestDigest, sbomSha256: sbomFile ? await sha256File(sbomFile) : undefined, buildType: config.provenance?.buildType ?? "https://github.com/JamesMorales04/agentic-engineering-harness/v0.3", invocationId: crypto.randomUUID(), startedOn: new Date().toISOString(), finishedOn: new Date().toISOString() });
47
41
  const statement = { _type: "https://in-toto.io/Statement/v1", subject: [{ name: path.basename(artifact), digest: { sha256: digest } }], predicateType: "https://slsa.dev/provenance/v1", predicate };
48
42
  await fs.writeFile(predicateFile, `${JSON.stringify(predicate, null, 2)}\n`);
49
43
  await fs.writeFile(statementFile, `${JSON.stringify(statement, null, 2)}\n`);
50
44
  let bundleFile;
51
- if (options.sign) {
45
+ if (signingRequired) {
52
46
  if (!(await commandExists("cosign", root)))
53
47
  throw new Error("--sign requested but cosign is not installed.");
54
- bundleFile = path.join(outputDir, `${base}.sigstore.json`);
55
- const key = config.provenance?.cosignKey ? ` --key ${quote(config.provenance.cosignKey)}` : "";
56
- const signed = await runProcess(`cosign sign-blob ${quote(statementFile)} --bundle ${quote(bundleFile)}${key}`, { cwd: root, timeoutMs: 300_000, env: { COSIGN_YES: "true" } });
48
+ if (!plannedBundle)
49
+ throw new Error("Signing bundle path could not be resolved.");
50
+ bundleFile = plannedBundle;
51
+ const keyPath = config.provenance?.signing?.key ?? config.provenance?.cosignKey;
52
+ const key = keyPath ? ` --key ${quote(keyPath)}` : "";
53
+ const signed = await runProcess(`cosign sign-blob --yes --tlog-upload=false ${quote(statementFile)} --bundle ${quote(bundleFile)}${key}`, { cwd: root, timeoutMs: 300_000, env: { COSIGN_YES: "true", COSIGN_PASSWORD: process.env.COSIGN_PASSWORD ?? "" } });
57
54
  if (signed.exitCode !== 0)
58
55
  throw new Error(`Cosign signing failed: ${signed.stderr || signed.stdout}`);
59
- if (!(await verifyCosignBundle(root, statementFile, bundleFile, config.provenance?.cosignKey)))
56
+ const verificationKey = config.provenance?.verification?.publicKey ?? keyPath;
57
+ if (!(await verifyCosignBundle(root, statementFile, bundleFile, verificationKey)))
60
58
  throw new Error("Cosign produced a bundle that could not be verified.");
61
59
  }
62
- return { artifact: path.relative(root, artifact).replaceAll("\\", "/"), sha256: digest, statementFile: relative(root, statementFile), predicateFile: relative(root, predicateFile), manifestFile: relative(root, manifestFile), sbomFile: sbomFile && relative(root, sbomFile), bundleFile: bundleFile && relative(root, bundleFile) };
60
+ return { artifact: relative(root, artifact), sha256: digest, statementFile: relative(root, statementFile), predicateFile: relative(root, predicateFile), manifestFile: relative(root, manifestFile), sbomFile: sbomFile && relative(root, sbomFile), bundleFile: bundleFile && relative(root, bundleFile) };
63
61
  }
64
62
  export function buildSlsaPredicate(input) {
65
63
  const internalParameters = {};
@@ -71,38 +69,62 @@ export function buildSlsaPredicate(input) {
71
69
  internalParameters.validationReportSha256 = input.reportDigest;
72
70
  if (input.artifactManifestSha256)
73
71
  internalParameters.artifactManifestSha256 = input.artifactManifestSha256;
74
- return {
75
- buildDefinition: {
76
- buildType: input.buildType,
77
- externalParameters: { project: input.project, artifact: input.artifact },
78
- internalParameters,
79
- resolvedDependencies: input.commit ? [{ uri: input.remote ? `git+${input.remote}` : "git:local", digest: { gitCommit: input.commit } }] : []
80
- },
81
- runDetails: {
82
- builder: { id: "https://github.com/JamesMorales04/agentic-engineering-harness" },
83
- metadata: { invocationId: input.invocationId, startedOn: input.startedOn, finishedOn: input.finishedOn }
84
- }
85
- };
72
+ if (input.sbomSha256)
73
+ internalParameters.sbomSha256 = input.sbomSha256;
74
+ return { buildDefinition: { buildType: input.buildType, externalParameters: { project: input.project, artifact: input.artifact }, internalParameters, resolvedDependencies: input.commit ? [{ uri: input.remote ? `git+${input.remote}` : "git:local", digest: { gitCommit: input.commit } }] : [] }, runDetails: { builder: { id: "https://github.com/JamesMorales04/agentic-engineering-harness" }, metadata: { invocationId: input.invocationId, startedOn: input.startedOn, finishedOn: input.finishedOn } } };
86
75
  }
87
76
  export async function buildProvenanceManifest(root, config, taskId, artifact, sbomFile) {
88
77
  const candidates = new Map();
89
78
  candidates.set(relative(root, artifact), "final-artifact");
90
79
  if (sbomFile)
91
80
  candidates.set(relative(root, sbomFile), "sbom");
81
+ let operationId;
82
+ const required = [];
83
+ const members = [];
92
84
  if (taskId) {
93
- candidates.set(relative(root, path.resolve(root, config.sdd?.runsDir ?? ".harness/runs", `${taskId}.json`)), "operation-record");
94
- candidates.set(relative(root, path.resolve(root, config.sdd?.reportsDir ?? ".harness/reports", `${taskId}.json`)), "validation-report");
95
- candidates.set(relative(root, path.resolve(root, config.evidence?.outputDir ?? ".harness/evidence", `${taskId}.json`)), "requirement-evidence-graph");
96
- candidates.set(relative(root, path.resolve(root, config.sdd?.contractsDir ?? ".harness/contracts", `${taskId}.yaml`)), "task-contract");
97
- candidates.set(relative(root, path.resolve(root, ".harness/seals", `${taskId}.json`)), "task-contract-seal");
98
- candidates.set(relative(root, path.resolve(root, config.controlPlane?.snapshotDir ?? ".harness/controller", taskId, "manifest.json")), "control-plane-snapshot");
85
+ const runFile = path.resolve(root, config.sdd?.runsDir ?? ".harness/runs", taskId + ".json");
86
+ const reportFile = path.resolve(root, config.sdd?.reportsDir ?? ".harness/reports", taskId + ".json");
87
+ const evidenceFile = path.resolve(root, config.evidence?.outputDir ?? ".harness/evidence", taskId + ".json");
88
+ const contractFile = path.resolve(root, config.sdd?.contractsDir ?? ".harness/contracts", taskId + ".yaml");
89
+ const sealFile = path.resolve(root, ".harness/seals", taskId + ".json");
90
+ const controlPlaneFile = path.resolve(root, config.controlPlane?.snapshotDir ?? ".harness/controller", taskId, "manifest.json");
91
+ addCandidate(root, candidates, runFile, "operation-result");
92
+ addCandidate(root, candidates, reportFile, "validation-report");
93
+ addCandidate(root, candidates, evidenceFile, "requirement-evidence-graph");
94
+ addCandidate(root, candidates, contractFile, "task-contract");
95
+ addCandidate(root, candidates, sealFile, "task-contract-seal");
96
+ addCandidate(root, candidates, controlPlaneFile, "control-plane-snapshot");
99
97
  const contract = await loadTaskContract(root, taskId, config).catch(() => undefined);
100
- for (const [name, source] of Object.entries(contract?.source ?? {}))
98
+ for (const source of Object.values(contract?.source ?? {}))
101
99
  if (source)
102
- candidates.set(relative(root, path.resolve(root, source)), `openspec-${name}`);
103
- for (const [directory, kind] of [[".harness/operations", "operation-record"], [".harness/paseo/handoffs", "handoff"], [".harness/audits", "audit-report"], [config.evidence?.outputDir ?? ".harness/evidence", "evidence"]]) {
104
- for (const file of await filesUnder(root, directory))
105
- candidates.set(file, kind);
100
+ addCandidate(root, candidates, path.resolve(root, source), "normative-spec-source");
101
+ const runRecord = await readJson(root, relative(root, runFile), []);
102
+ const authoritativeOperationId = typeof runRecord?.operationId === "string" ? runRecord.operationId : typeof runRecord?.result?.operationId === "string" ? runRecord.result.operationId : undefined;
103
+ const operation = await selectOperation(root, taskId, authoritativeOperationId);
104
+ if (authoritativeOperationId && !operation)
105
+ throw new Error("PROVENANCE_REQUIRED_ARTIFACT_MISSING: " + path.posix.join(".harness/operations", safeId(authoritativeOperationId) + ".json"));
106
+ if (operation) {
107
+ operationId = operation.id;
108
+ const operationFile = path.resolve(root, ".harness/operations", safeId(operation.id) + ".json");
109
+ await requireArtifact(root, candidates, required, operationFile, "operation-record");
110
+ members.push(relative(root, operationFile));
111
+ await requireArtifact(root, candidates, required, contractFile, "task-contract");
112
+ if (config.validation?.requireSeal !== false)
113
+ await requireArtifact(root, candidates, required, sealFile, "task-contract-seal");
114
+ await requireArtifact(root, candidates, required, runFile, "operation-result");
115
+ await requireArtifact(root, candidates, required, reportFile, "validation-report");
116
+ if (config.evidence?.enabled || config.evidence?.requireComplete)
117
+ await requireArtifact(root, candidates, required, evidenceFile, "requirement-evidence-graph");
118
+ if (config.controlPlane?.required)
119
+ await requireArtifact(root, candidates, required, controlPlaneFile, "control-plane-snapshot");
120
+ const eventFile = path.resolve(root, ".harness/operations", safeId(operation.id), "events.ndjson");
121
+ addCandidate(root, candidates, eventFile, "operation-events");
122
+ for (const ref of referencedPaths(operation)) {
123
+ const absolute = path.resolve(root, ref);
124
+ addCandidate(root, candidates, absolute, "lineage-artifact");
125
+ if (await exists(absolute))
126
+ members.push(relative(root, absolute));
127
+ }
106
128
  }
107
129
  }
108
130
  const entries = [];
@@ -110,28 +132,13 @@ export async function buildProvenanceManifest(root, config, taskId, artifact, sb
110
132
  try {
111
133
  entries.push({ path: relativePath, kind, sha256: await sha256File(path.resolve(root, relativePath)) });
112
134
  }
113
- catch { /* optional artifacts are omitted, never represented with a false digest */ }
135
+ catch { /* optional artifacts are omitted */ }
114
136
  }
115
137
  entries.sort((a, b) => a.path.localeCompare(b.path));
116
- return { version: 1, generatedAt: new Date().toISOString(), taskId, entries };
117
- }
118
- async function filesUnder(root, relativeDirectory) {
119
- const result = [];
120
- const visit = async (directory) => {
121
- for (const entry of await fs.readdir(directory, { withFileTypes: true }).catch(() => [])) {
122
- const absolute = path.join(directory, entry.name);
123
- if (entry.isDirectory())
124
- await visit(absolute);
125
- else if (entry.isFile())
126
- result.push(relative(root, absolute));
127
- if (result.length >= 2_000)
128
- return;
129
- }
130
- };
131
- await visit(path.resolve(root, relativeDirectory));
132
- return result;
138
+ const lineage = operationId ? { operationId, gitCommit: await gitValue(root, "git rev-parse HEAD"), required, members: [...new Set(members)] } : undefined;
139
+ return { version: 1, generatedAt: new Date().toISOString(), taskId, entries, ...(lineage ? { lineage } : {}) };
133
140
  }
134
- export async function verifyProvenanceManifest(root, manifestFile) {
141
+ export async function verifyProvenanceManifest(root, manifestFile, cosignKey) {
135
142
  const file = path.resolve(root, manifestFile);
136
143
  let manifest;
137
144
  try {
@@ -141,7 +148,15 @@ export async function verifyProvenanceManifest(root, manifestFile) {
141
148
  return { ok: false, failures: [`manifest unreadable: ${String(error)}`] };
142
149
  }
143
150
  const failures = [];
151
+ if (manifest.version !== 1 || !Array.isArray(manifest.entries))
152
+ failures.push("manifest structure is invalid");
153
+ const paths = new Set();
144
154
  for (const entry of manifest.entries ?? []) {
155
+ if (!entry?.path || paths.has(entry.path) || !isSafeRelative(entry.path) || !/^[a-f0-9]{64}$/.test(entry.sha256)) {
156
+ failures.push(`invalid manifest entry: ${JSON.stringify(entry)}`);
157
+ continue;
158
+ }
159
+ paths.add(entry.path);
145
160
  try {
146
161
  const actual = await sha256File(path.resolve(root, entry.path));
147
162
  if (actual !== entry.sha256)
@@ -151,24 +166,166 @@ export async function verifyProvenanceManifest(root, manifestFile) {
151
166
  failures.push(`${entry.path}: ${String(error)}`);
152
167
  }
153
168
  }
169
+ if (manifest.subject) {
170
+ if (!isSafeRelative(manifest.subject.path) || !/^[a-f0-9]{64}$/.test(manifest.subject.sha256))
171
+ failures.push("manifest subject is invalid");
172
+ else
173
+ try {
174
+ const actual = await sha256File(path.resolve(root, manifest.subject.path));
175
+ if (actual !== manifest.subject.sha256)
176
+ failures.push(`subject ${manifest.subject.path}: digest mismatch`);
177
+ }
178
+ catch (error) {
179
+ failures.push(`subject ${manifest.subject.path}: ${String(error)}`);
180
+ }
181
+ }
182
+ if (manifest.lineage)
183
+ for (const member of manifest.lineage.required)
184
+ if (!paths.has(member))
185
+ failures.push(`required lineage member missing: ${member}`);
186
+ if (manifest.attestations) {
187
+ if (!isSafeRelative(manifest.attestations.statement) || !isSafeRelative(manifest.attestations.predicate))
188
+ failures.push("attestation references are invalid");
189
+ const statement = isSafeRelative(manifest.attestations.statement) ? await readJson(root, manifest.attestations.statement, failures) : undefined;
190
+ const predicate = isSafeRelative(manifest.attestations.predicate) ? await readJson(root, manifest.attestations.predicate, failures) : undefined;
191
+ if (statement && manifest.subject) {
192
+ const subject = Array.isArray(statement.subject) ? statement.subject[0] : undefined;
193
+ if (subject?.digest?.sha256 !== manifest.subject.sha256)
194
+ failures.push("in-toto statement subject does not match manifest subject");
195
+ }
196
+ const predicateDigest = predicate?.buildDefinition?.internalParameters?.artifactManifestSha256;
197
+ const actualManifestDigest = await sha256File(file).catch(() => undefined);
198
+ if (predicateDigest && actualManifestDigest && predicateDigest !== actualManifestDigest)
199
+ failures.push("SLSA predicate does not bind this manifest digest");
200
+ const commit = predicate?.buildDefinition?.resolvedDependencies?.[0]?.digest?.gitCommit;
201
+ if (commit && manifest.lineage?.gitCommit && commit !== manifest.lineage.gitCommit)
202
+ failures.push("SLSA resolved dependency commit disagrees with lineage");
203
+ if (manifest.attestations.bundle && (!isSafeRelative(manifest.attestations.bundle) || !isSafeRelative(manifest.attestations.statement) || !(await verifyCosignBundle(root, manifest.attestations.statement, manifest.attestations.bundle, cosignKey))))
204
+ failures.push("Cosign bundle verification failed");
205
+ }
154
206
  return { ok: failures.length === 0, failures };
155
207
  }
156
208
  export async function verifyCosignBundle(root, statementFile, bundleFile, key) {
157
209
  if (!(await commandExists("cosign", root)))
158
210
  return false;
159
211
  const keyArg = key ? ` --key ${quote(path.resolve(root, key))}` : "";
160
- const result = await runProcess(`cosign verify-blob --bundle ${quote(path.resolve(root, bundleFile))}${keyArg} ${quote(path.resolve(root, statementFile))}`, { cwd: root, timeoutMs: 60_000 });
212
+ const result = await runProcess(`cosign verify-blob --insecure-ignore-tlog --bundle ${quote(path.resolve(root, bundleFile))}${keyArg} ${quote(path.resolve(root, statementFile))}`, { cwd: root, timeoutMs: 60_000 });
161
213
  return result.exitCode === 0;
162
214
  }
163
- export async function sha256File(file) {
164
- return await new Promise((resolve, reject) => {
165
- const hash = crypto.createHash("sha256");
166
- const stream = createReadStream(file);
167
- stream.on("data", (chunk) => hash.update(chunk));
168
- stream.on("error", reject);
169
- stream.on("end", () => resolve(hash.digest("hex")));
170
- });
215
+ /** Deterministic delivery gate. It is inert unless one of the strict policy flags is enabled. */
216
+ export async function verifySupplyChainGate(root, config) {
217
+ const policy = config.provenance;
218
+ const strict = policy?.required === true || policy?.sbom?.required === true || policy?.signing?.required === true || policy?.verification?.required === true;
219
+ if (!strict)
220
+ return { ok: true, failures: [] };
221
+ const outputDir = path.resolve(root, policy?.outputDir ?? ".harness/provenance");
222
+ const failures = [];
223
+ const files = await fs.readdir(outputDir).catch(() => []);
224
+ const manifestName = files.filter((file) => file.endsWith(".manifest.json")).sort().at(-1);
225
+ if (!manifestName)
226
+ return { ok: false, failures: ["strict supply-chain policy requires a provenance manifest"] };
227
+ const manifestFile = path.join(outputDir, manifestName);
228
+ const key = policy?.verification?.publicKey ?? policy?.signing?.key ?? policy?.cosignKey;
229
+ const manifestVerification = await verifyProvenanceManifest(root, path.relative(root, manifestFile), key);
230
+ if (!manifestVerification.ok)
231
+ failures.push(...manifestVerification.failures.map((failure) => `manifest: ${failure}`));
232
+ let manifest;
233
+ try {
234
+ manifest = JSON.parse(await fs.readFile(manifestFile, "utf8"));
235
+ }
236
+ catch {
237
+ failures.push("provenance manifest is unreadable");
238
+ }
239
+ const artifact = manifest?.entries.find((entry) => entry.kind === "final-artifact");
240
+ const sbom = manifest?.entries.find((entry) => entry.kind === "sbom");
241
+ if (!artifact)
242
+ failures.push("provenance manifest does not reference the final artifact");
243
+ if (policy?.required === true && !manifest?.entries.some((entry) => entry.kind === "task-contract" || entry.kind === "validation-report"))
244
+ failures.push("provenance manifest does not reference accepted operation evidence");
245
+ if (policy?.sbom?.required === true && !sbom)
246
+ failures.push("strict supply-chain policy requires an SBOM entry");
247
+ const statementName = files.filter((file) => file.endsWith(".intoto.json")).sort().at(-1);
248
+ const statementFile = statementName ? path.join(outputDir, statementName) : undefined;
249
+ if (policy?.required === true && !statementFile)
250
+ failures.push("strict supply-chain policy requires an in-toto statement");
251
+ if (statementFile && artifact) {
252
+ try {
253
+ const statement = JSON.parse(await fs.readFile(statementFile, "utf8"));
254
+ const subject = statement.subject?.[0];
255
+ if (subject?.digest?.sha256 !== artifact.sha256)
256
+ failures.push("in-toto subject digest does not match the final artifact");
257
+ if (subject?.name !== path.basename(artifact.path))
258
+ failures.push("in-toto subject does not identify the manifest final artifact");
259
+ if (statement.predicate?.buildDefinition?.internalParameters?.artifactManifestSha256 !== await sha256File(manifestFile))
260
+ failures.push("in-toto statement does not reference the manifest hash");
261
+ if (sbom && statement.predicate?.buildDefinition?.internalParameters?.sbomSha256 !== await sha256File(path.resolve(root, sbom.path)))
262
+ failures.push("in-toto statement does not reference the SBOM hash");
263
+ }
264
+ catch {
265
+ failures.push("in-toto statement is unreadable");
266
+ }
267
+ }
268
+ let bundleFile;
269
+ const signingRequired = policy?.signing?.required === true || policy?.verification?.required === true;
270
+ if (signingRequired) {
271
+ const bundleName = files.filter((file) => file.endsWith(".sigstore.json")).sort().at(-1);
272
+ bundleFile = bundleName ? path.join(outputDir, bundleName) : undefined;
273
+ if (!bundleFile)
274
+ failures.push("strict supply-chain policy requires a Cosign bundle");
275
+ else if (!statementFile)
276
+ failures.push("Cosign bundle cannot be verified without an in-toto statement");
277
+ else if (!(await verifyCosignBundle(root, path.relative(root, statementFile), path.relative(root, bundleFile), key)))
278
+ failures.push("Cosign bundle verification failed");
279
+ }
280
+ return { ok: failures.length === 0, failures, manifestFile: path.relative(root, manifestFile), statementFile: statementFile && path.relative(root, statementFile), bundleFile: bundleFile && path.relative(root, bundleFile), sbomFile: sbom?.path };
281
+ }
282
+ export async function sha256File(file) { return await new Promise((resolve, reject) => { const hash = crypto.createHash("sha256"); const stream = createReadStream(file); stream.on("data", (chunk) => hash.update(chunk)); stream.on("error", reject); stream.on("end", () => resolve(hash.digest("hex"))); }); }
283
+ async function selectOperation(root, taskId, authoritativeOperationId) {
284
+ const directory = path.resolve(root, ".harness/operations");
285
+ if (authoritativeOperationId)
286
+ return readJson(root, path.posix.join(".harness/operations", safeId(authoritativeOperationId) + ".json"), []);
287
+ const files = await fs.readdir(directory, { withFileTypes: true }).catch(() => []);
288
+ const records = [];
289
+ for (const entry of files)
290
+ if (entry.isFile() && entry.name.endsWith(".json") && !entry.name.endsWith(".wake.json") && !entry.name.endsWith(".completion.json")) {
291
+ const record = await readJson(root, path.relative(root, path.join(directory, entry.name)), []);
292
+ if (record && operationMatches(record, taskId))
293
+ records.push(record);
294
+ }
295
+ return records.sort((a, b) => String(b.updatedAt ?? b.createdAt).localeCompare(String(a.updatedAt ?? a.createdAt)))[0];
171
296
  }
297
+ function operationMatches(value, taskId) { return value.payload?.taskId === taskId || value.result?.taskId === taskId || value.result?.contract?.task?.id === taskId; }
298
+ function referencedPaths(operation) { const result = []; const visit = (value, key = "") => { if (typeof value === "string" && /(artifact|report|handoff|evidence|result|checkpoint|statement|predicate|seal|contract|spec)/i.test(key) && value.length < 500 && !value.includes("\n"))
299
+ result.push(value);
300
+ else if (Array.isArray(value))
301
+ value.forEach((item) => visit(item, key));
302
+ else if (value && typeof value === "object")
303
+ Object.entries(value).forEach(([name, item]) => visit(item, name)); }; visit(operation.result, "result"); visit(operation.stages, "stage"); visit(operation.participants, "participant"); visit(operation.supervision, "supervision"); return [...new Set(result)].filter((item) => !item.startsWith("http://") && !item.startsWith("https://")); }
304
+ function addCandidate(root, candidates, absolute, kind) { const relativePath = relative(root, absolute); if (relativePath === ".." || relativePath.startsWith(`..${path.sep}`) || path.isAbsolute(relativePath))
305
+ return; candidates.set(relativePath, kind); }
306
+ async function requireArtifact(root, candidates, required, absolute, kind) {
307
+ const relativePath = relative(root, absolute);
308
+ if (!isSafeRelative(relativePath) || !(await exists(absolute)))
309
+ throw new Error("PROVENANCE_REQUIRED_ARTIFACT_MISSING: " + relativePath);
310
+ candidates.set(relativePath, kind);
311
+ required.push(relativePath);
312
+ }
313
+ async function exists(file) { try {
314
+ await fs.stat(file);
315
+ return true;
316
+ }
317
+ catch {
318
+ return false;
319
+ } }
320
+ function isSafeRelative(value) { return typeof value === "string" && value.length > 0 && !path.isAbsolute(value) && !value.split(/[\\/]/).includes(".."); }
321
+ async function readJson(root, relativePath, failures) { try {
322
+ const value = JSON.parse(await fs.readFile(path.resolve(root, relativePath), "utf8"));
323
+ return value && typeof value === "object" ? value : undefined;
324
+ }
325
+ catch (error) {
326
+ failures.push(`${relativePath}: ${String(error)}`);
327
+ return undefined;
328
+ } }
172
329
  async function optionalDigest(file) { try {
173
330
  return await sha256File(file);
174
331
  }
@@ -178,5 +335,6 @@ catch {
178
335
  async function gitValue(root, command) { const result = await runProcess(command, { cwd: root, timeoutMs: 30_000 }); return result.exitCode === 0 ? result.stdout.trim() : ""; }
179
336
  function relative(root, file) { return path.relative(root, file).replaceAll("\\", "/"); }
180
337
  function sanitize(value) { return value.replace(/[^A-Za-z0-9._-]/g, "-"); }
338
+ function safeId(value) { return value.replace(/[^A-Za-z0-9._-]/g, "-"); }
181
339
  function quote(value) { return `'${value.replaceAll("'", "'\\''")}'`; }
182
340
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/provenance/generate.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAOhE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAA4B,EAAE,OAA0B;IAC7G,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpG,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,qBAAqB,CAAC,CAAC;IAC5F,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,uBAAuB,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC;IAElE,IAAI,QAA4B,CAAC;IACjC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QACjE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,iBAAiB,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,wCAAwC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3I,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,eAAe,EAAE,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1J,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,IAAI,kBAAkB,EAAE,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnK,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;QAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM;QACN,MAAM;QACN,SAAS;QACT,YAAY;QACZ,sBAAsB,EAAE,cAAc;QACtC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,oEAAoE;QAC/G,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE;QACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,iCAAiC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,EAAE,gCAAgC,EAAE,SAAS,EAAE,CAAC;IACrM,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAE7E,IAAI,UAA8B,CAAC;IACnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC7G,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,oBAAoB,KAAK,CAAC,aAAa,CAAC,aAAa,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAChL,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1K,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,IAAI,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;AACzU,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAyP;IAC1R,MAAM,kBAAkB,GAA4B,EAAE,CAAC;IACvD,IAAI,KAAK,CAAC,MAAM;QAAE,kBAAkB,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3D,IAAI,KAAK,CAAC,SAAS;QAAE,kBAAkB,CAAC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1E,IAAI,KAAK,CAAC,YAAY;QAAE,kBAAkB,CAAC,sBAAsB,GAAG,KAAK,CAAC,YAAY,CAAC;IACvF,IAAI,KAAK,CAAC,sBAAsB;QAAE,kBAAkB,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;IAC3G,OAAO;QACL,eAAe,EAAE;YACf,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;YACxE,kBAAkB;YAClB,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;SAC7I;QACD,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,EAAE,EAAE,+DAA+D,EAAE;YAChF,QAAQ,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;SACzG;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAY,EAAE,MAA4B,EAAE,MAA0B,EAAE,QAAgB,EAAE,QAAiB;IACvJ,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC3D,IAAI,QAAQ;QAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,IAAI,MAAM,EAAE,CAAC;QACX,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,eAAe,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACjI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,IAAI,kBAAkB,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACxI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,mBAAmB,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QACtJ,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,IAAI,oBAAoB,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QACxI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAC7G,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,IAAI,qBAAqB,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACjK,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;YAAE,IAAI,MAAM;gBAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;QAChK,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,mBAAmB,EAAE,UAAU,CAAC,CAAU,EAAE,CAAC;YACrO,KAAK,MAAM,IAAI,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QAC9C,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,2EAA2E,CAAC,CAAC;IACvM,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,iBAAyB;IAC/D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;QACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAgC,CAAC,EAAE,CAAC;YACvH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;iBAC1C,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK;gBAAE,OAAO;QACrC,CAAC;IACH,CAAC,CAAC;IACF,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAAC,OAAO,MAAM,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAY,EAAE,YAAoB;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAuB,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,wBAAwB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IAAC,CAAC;IAClL,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC;YAAC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAAC,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,CAAC,CAAC;QAAC,CAAC;QAC9K,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,aAAqB,EAAE,UAAkB,EAAE,GAAY;IAC5G,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,+BAA+B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/L,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,IAAiC,IAAI,CAAC;IAAC,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,SAAS,CAAC;AAAC,CAAC,CAAC,CAAC;AAC/I,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,OAAe,IAAqB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjN,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAY,IAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACjH,SAAS,QAAQ,CAAC,KAAa,IAAY,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3F,SAAS,KAAK,CAAC,KAAa,IAAY,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/provenance/generate.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAehE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAA4B,EAAE,OAA0B;IAC7G,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACzH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,qBAAqB,CAAC,CAAC;IAC5F,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,uBAAuB,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC;IAEnE,IAAI,QAA4B,CAAC;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACxG,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QACjE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,iBAAiB,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,IAAI,wCAAwC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjI,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1G,CAAC;SAAM,IAAI,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC,CAAC;IACrJ,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjG,QAAQ,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5I,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,QAAQ,CAAC,YAAY,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACpL,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,eAAe,EAAE,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1J,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,IAAI,kBAAkB,EAAE,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnK,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,oEAAoE,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACjf,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,iCAAiC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,EAAE,gCAAgC,EAAE,SAAS,EAAE,CAAC;IACrM,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAE7E,IAAI,UAA8B,CAAC;IACnC,IAAI,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC7G,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAClF,UAAU,GAAG,aAAa,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;QAChF,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,8CAA8C,KAAK,CAAC,aAAa,CAAC,aAAa,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9P,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvG,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,IAAI,OAAO,CAAC;QAC9E,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC7J,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,IAAI,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;AAC9S,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAA8Q;IAC/S,MAAM,kBAAkB,GAA4B,EAAE,CAAC;IACvD,IAAI,KAAK,CAAC,MAAM;QAAE,kBAAkB,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3D,IAAI,KAAK,CAAC,SAAS;QAAE,kBAAkB,CAAC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1E,IAAI,KAAK,CAAC,YAAY;QAAE,kBAAkB,CAAC,sBAAsB,GAAG,KAAK,CAAC,YAAY,CAAC;IACvF,IAAI,KAAK,CAAC,sBAAsB;QAAE,kBAAkB,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;IAC3G,IAAI,KAAK,CAAC,UAAU;QAAE,kBAAkB,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACvE,OAAO,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,+DAA+D,EAAE,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC;AACrf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAY,EAAE,MAA4B,EAAE,MAA0B,EAAE,QAAgB,EAAE,QAAiB;IACvJ,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC3D,IAAI,QAAQ;QAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,IAAI,WAA+B,CAAC;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;QAC7F,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;QACtG,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;QAC7G,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;QAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;QACxE,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,IAAI,qBAAqB,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAChI,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC5D,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;QAChE,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,4BAA4B,CAAC,CAAC;QAC3E,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QAC9D,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC/D,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;YAAE,IAAI,MAAM;gBAAE,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC5J,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,wBAAwB,GAAG,OAAO,SAAS,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,MAAM,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACpM,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;QAChF,IAAI,wBAAwB,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QAC3L,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;YAChG,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;YACrF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;YAC5C,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;YACjF,IAAI,MAAM,CAAC,UAAU,EAAE,WAAW,KAAK,KAAK;gBAAE,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAChI,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAC/E,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;YACnF,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,eAAe;gBAAE,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,4BAA4B,CAAC,CAAC;YAChK,IAAI,MAAM,CAAC,YAAY,EAAE,QAAQ;gBAAE,MAAM,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;YACjI,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;YACnG,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;YAC9D,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;gBAC7D,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QAAC,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAAC,CAAC;IACjN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3J,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACjH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAY,EAAE,YAAoB,EAAE,SAAkB;IACnG,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,QAA4B,CAAC;IACjC,IAAI,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAuB,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,wBAAwB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IAAC,CAAC;IAClL,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,QAAQ,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/G,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAClM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC;YAAC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAAC,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,CAAC,CAAC;QAAC,CAAC;QAC9K,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IACrE,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;;YACvI,IAAI,CAAC;gBAAC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAC,IAAI,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM;oBAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAAC,CAAC;YACpM,OAAO,KAAK,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;IACxF,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO;QAAE,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;IAC1J,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC9J,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChJ,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChJ,IAAI,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAqC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxH,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACtI,CAAC;QACD,MAAM,eAAe,GAAI,SAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,sBAAsB,CAAC;QACxG,MAAM,oBAAoB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,eAAe,IAAI,oBAAoB,IAAI,eAAe,KAAK,oBAAoB;YAAE,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC5J,MAAM,MAAM,GAAI,SAAiB,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC;QACjG,IAAI,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,SAAS,IAAI,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC5J,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC7S,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,aAAqB,EAAE,UAAkB,EAAE,GAAY;IAC5G,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,sDAAsD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACtN,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC;AAID,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY,EAAE,MAA4B;IACpF,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM,EAAE,YAAY,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC7J,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,IAAI,qBAAqB,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,2DAA2D,CAAC,EAAE,CAAC;IACjH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,SAAS,CAAC;IACzF,MAAM,oBAAoB,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1G,IAAI,CAAC,oBAAoB,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC,CAAC;IACvH,IAAI,QAAwC,CAAC;IAC7C,IAAI,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAuB,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAAC,CAAC;IAC3J,MAAM,QAAQ,GAAG,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACtE,IAAI,CAAC,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC1F,IAAI,MAAM,EAAE,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAC/N,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjH,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,IAAI,MAAM,EAAE,QAAQ,KAAK,IAAI,IAAI,CAAC,aAAa;QAAE,QAAQ,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC3H,IAAI,aAAa,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAA8L,CAAC;YACpQ,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YAC3H,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YACnI,IAAI,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,sBAAsB,KAAK,MAAM,UAAU,CAAC,YAAY,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACjM,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,UAAU,KAAK,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAC5M,CAAC;QAAC,MAAM,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAAC,CAAC;IAC/D,CAAC;IACD,IAAI,UAA8B,CAAC;IACnC,MAAM,eAAe,GAAG,MAAM,EAAE,OAAO,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM,EAAE,YAAY,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtG,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,CAAC,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;aACjF,IAAI,CAAC,aAAa;YAAE,QAAQ,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;aACnG,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAC3K,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACvP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,IAAqB,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3U,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,MAAc,EAAE,wBAAiC;IAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAC5D,IAAI,wBAAwB;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5I,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAgC,CAAC,CAAC;IACjH,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,KAAK;QAAE,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAAC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAAC,IAAI,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;IAC1U,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzH,CAAC;AACD,SAAS,gBAAgB,CAAC,KAA0B,EAAE,MAAc,IAAa,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC;AAC7M,SAAS,eAAe,CAAC,SAA8B,IAAc,MAAM,MAAM,GAAa,EAAE,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,GAAG,GAAG,EAAE,EAAQ,EAAE,GAAG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,8FAA8F,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;KAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;IAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9yB,SAAS,YAAY,CAAC,IAAY,EAAE,UAA+B,EAAE,QAAgB,EAAE,IAAY,IAAU,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjT,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,UAA+B,EAAE,QAAkB,EAAE,QAAgB,EAAE,IAAY;IAC9H,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,YAAY,CAAC,CAAC;IACzI,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9B,CAAC;AACD,KAAK,UAAU,MAAM,CAAC,IAAY,IAAsB,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAC,OAAO,IAAI,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,KAAK,CAAC;AAAC,CAAC,CAAC,CAAC;AAC3H,SAAS,cAAc,CAAC,KAAa,IAAa,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5K,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,YAAoB,EAAE,QAAkB,IAA8C,IAAI,CAAC;IAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAAC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAAC,OAAO,SAAS,CAAC;AAAC,CAAC,CAAC,CAAC;AACnX,KAAK,UAAU,cAAc,CAAC,IAAY,IAAiC,IAAI,CAAC;IAAC,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,SAAS,CAAC;AAAC,CAAC,CAAC,CAAC;AAC/I,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,OAAe,IAAqB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjN,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAY,IAAY,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACjH,SAAS,QAAQ,CAAC,KAAa,IAAY,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3F,SAAS,MAAM,CAAC,KAAa,IAAY,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS,KAAK,CAAC,KAAa,IAAY,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC"}
@@ -6,6 +6,7 @@ export interface EngramOptions {
6
6
  maxRecall?: number;
7
7
  executor?: typeof runProcess;
8
8
  }
9
+ export declare const ENGRAM_VERSION: string;
9
10
  export declare class EngramMemoryProvider implements MemoryProvider {
10
11
  private readonly root;
11
12
  readonly name = "engram";
@@ -2,6 +2,8 @@ import crypto from "node:crypto";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import { commandExists, runProcess } from "../utils/process.js";
5
+ import { providerVersions } from "./versions.js";
6
+ export const ENGRAM_VERSION = providerVersions.engram;
5
7
  export class EngramMemoryProvider {
6
8
  root;
7
9
  name = "engram";
@@ -38,7 +40,7 @@ export class EngramMemoryProvider {
38
40
  const id = normalized.id ?? fingerprint(normalized).slice(0, 24);
39
41
  const stored = { ...normalized, id };
40
42
  const payload = JSON.stringify({ ...stored, advisory: true, provenance: stored.source });
41
- const result = await this.executor(`${quote(this.command)} store ${quote(payload)} --type semantic --importance 0.5`, { cwd: this.root, timeoutMs: 30_000, env: { ENGRAM_NAMESPACE_MODE: "isolated", ENGRAM_NAMESPACE: normalized.project } });
43
+ const result = await this.executor(`${quote(this.command)} store ${quote(payload)} --type semantic --importance 0.5 --namespace ${quote(normalized.project)} --source aeh`, { cwd: this.root, timeoutMs: 30_000, env: { ENGRAM_NAMESPACE_MODE: "isolated", ENGRAM_NAMESPACE: normalized.project } });
42
44
  if (result.exitCode !== 0)
43
45
  throw new Error(`Engram remember failed: ${result.stderr || result.stdout}`);
44
46
  await fs.mkdir(path.dirname(this.storagePath), { recursive: true });
@@ -50,7 +52,7 @@ export class EngramMemoryProvider {
50
52
  return [];
51
53
  const all = await this.readLedger();
52
54
  const local = (await filterStaleRecords(this.root, all)).filter((record) => record.project === project && !all.some((candidate) => candidate.supersedes === record.id && candidate.project === project) && matches(record, query)).slice(-this.maxRecall).reverse();
53
- const result = await this.executor(`${quote(this.command)} recall ${quote(query)} --raw`, { cwd: this.root, timeoutMs: 30_000, env: { ENGRAM_NAMESPACE_MODE: "isolated", ENGRAM_NAMESPACE: project } });
55
+ const result = await this.executor(`${quote(this.command)} recall ${quote(query)} --json`, { cwd: this.root, timeoutMs: 30_000, env: { ENGRAM_NAMESPACE_MODE: "isolated", ENGRAM_NAMESPACE: project } });
54
56
  if (result.exitCode !== 0)
55
57
  throw new Error(`Engram recall failed: ${result.stderr || result.stdout}`);
56
58
  return dedupe([...local, ...parseRecords(result.stdout, project)]).slice(0, this.maxRecall);
@@ -105,13 +107,43 @@ function normalizeRecord(record) { if (!record.project?.trim() || !record.title?
105
107
  throw new Error("Memory records require project, title and content."); return { ...record, project: record.project.trim(), title: record.title.trim(), content: record.content.trim(), tags: [...new Set(record.tags ?? [])].sort() }; }
106
108
  function fingerprint(record) { return crypto.createHash("sha256").update(JSON.stringify({ project: record.project, type: record.type, title: record.title, content: record.content, tags: record.tags ?? [] })).digest("hex"); }
107
109
  function matches(record, query) { const haystack = `${record.title} ${record.content} ${(record.tags ?? []).join(" ")}`.toLocaleLowerCase(); return query.toLocaleLowerCase().split(/\s+/).filter(Boolean).some((term) => haystack.includes(term)); }
108
- function parseRecords(stdout, project) { return stdout.split(/\r?\n/).filter(Boolean).flatMap((line) => { try {
109
- const value = JSON.parse(line);
110
- return typeof value.content === "string" && typeof value.title === "string" ? [normalizeRecord({ project, type: value.type ?? "discovery", title: value.title, content: value.content, id: value.id, source: value.source, tags: value.tags })] : [];
110
+ function parseRecords(stdout, project) {
111
+ try {
112
+ const parsed = JSON.parse(stdout);
113
+ const values = Array.isArray(parsed) ? parsed : parsed && typeof parsed === "object" && Array.isArray(parsed.memories) ? parsed.memories : [parsed];
114
+ return values.flatMap((item) => parseRecord(item, project));
115
+ }
116
+ catch {
117
+ return stdout.split(/\r?\n/).filter(Boolean).flatMap((line) => { try {
118
+ return parseRecord(JSON.parse(line), project);
119
+ }
120
+ catch {
121
+ return [];
122
+ } });
123
+ }
124
+ }
125
+ function parseRecord(item, project) {
126
+ if (!item || typeof item !== "object")
127
+ return [];
128
+ const value = item;
129
+ if (typeof value.content !== "string")
130
+ return [];
131
+ let embedded;
132
+ try {
133
+ const parsed = JSON.parse(value.content);
134
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed))
135
+ embedded = parsed;
136
+ }
137
+ catch { /* ordinary Engram content */ }
138
+ if (typeof value.project === "string" && value.project !== project)
139
+ return [];
140
+ if (embedded?.project && embedded.project !== project)
141
+ return [];
142
+ const source = embedded ?? value;
143
+ const title = typeof source.title === "string" ? source.title : typeof value.title === "string" ? value.title : "Engram recalled memory";
144
+ const content = typeof embedded?.content === "string" ? embedded.content : value.content;
145
+ return [normalizeRecord({ project, type: typeof source.type === "string" ? source.type : "discovery", title, content, id: typeof source.id === "string" ? source.id : typeof value.id === "string" ? value.id : undefined, source: typeof source.source === "string" ? source.source : typeof value.source === "string" ? value.source : undefined, sourceSha256: typeof source.sourceSha256 === "string" ? source.sourceSha256 : undefined, tags: Array.isArray(source.tags) ? source.tags.filter((tag) => typeof tag === "string") : undefined })];
111
146
  }
112
- catch {
113
- return [];
114
- } }); }
115
147
  function dedupe(records) { const seen = new Set(); return records.filter((record) => { const key = fingerprint(record); if (seen.has(key))
116
148
  return false; seen.add(key); return true; }); }
117
149
  function quote(value) { return `'${value.replaceAll("'", "'\\''")}'`; }
@@ -1 +1 @@
1
- {"version":3,"file":"engram.js","sourceRoot":"","sources":["../../src/providers/engram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engram.js","sourceRoot":"","sources":["../../src/providers/engram.ts"],"names":[],"mappings":"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"}