@neurcode-ai/cli 0.9.64 → 0.9.66

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 (323) hide show
  1. package/LICENSE +201 -0
  2. package/dist/commands/bootstrap-policy.d.ts +29 -0
  3. package/dist/commands/bootstrap-policy.d.ts.map +1 -0
  4. package/dist/commands/bootstrap-policy.js +334 -0
  5. package/dist/commands/bootstrap-policy.js.map +1 -0
  6. package/dist/commands/brain.d.ts.map +1 -1
  7. package/dist/commands/brain.js +273 -0
  8. package/dist/commands/brain.js.map +1 -1
  9. package/dist/commands/doctor.d.ts.map +1 -1
  10. package/dist/commands/doctor.js +82 -0
  11. package/dist/commands/doctor.js.map +1 -1
  12. package/dist/commands/pilot-report.d.ts +9 -0
  13. package/dist/commands/pilot-report.d.ts.map +1 -0
  14. package/dist/commands/pilot-report.js +176 -0
  15. package/dist/commands/pilot-report.js.map +1 -0
  16. package/dist/commands/quickstart.d.ts +21 -0
  17. package/dist/commands/quickstart.d.ts.map +1 -0
  18. package/dist/commands/quickstart.js +178 -0
  19. package/dist/commands/quickstart.js.map +1 -0
  20. package/dist/commands/remediate-export.d.ts +31 -0
  21. package/dist/commands/remediate-export.d.ts.map +1 -0
  22. package/dist/commands/remediate-export.js +283 -0
  23. package/dist/commands/remediate-export.js.map +1 -0
  24. package/dist/commands/remediate-governance.d.ts +54 -0
  25. package/dist/commands/remediate-governance.d.ts.map +1 -0
  26. package/dist/commands/remediate-governance.js +375 -0
  27. package/dist/commands/remediate-governance.js.map +1 -0
  28. package/dist/commands/remediate.d.ts.map +1 -1
  29. package/dist/commands/remediate.js.map +1 -1
  30. package/dist/commands/replay.d.ts.map +1 -1
  31. package/dist/commands/replay.js +30 -0
  32. package/dist/commands/replay.js.map +1 -1
  33. package/dist/commands/verify.d.ts.map +1 -1
  34. package/dist/commands/verify.js +409 -30
  35. package/dist/commands/verify.js.map +1 -1
  36. package/dist/daemon/server.d.ts.map +1 -1
  37. package/dist/daemon/server.js +1078 -0
  38. package/dist/daemon/server.js.map +1 -1
  39. package/dist/explainability/DeterminismClassifier.d.ts +34 -0
  40. package/dist/explainability/DeterminismClassifier.d.ts.map +1 -0
  41. package/dist/explainability/DeterminismClassifier.js +104 -0
  42. package/dist/explainability/DeterminismClassifier.js.map +1 -0
  43. package/dist/explainability/ViolationFormatter.d.ts +32 -0
  44. package/dist/explainability/ViolationFormatter.d.ts.map +1 -0
  45. package/dist/explainability/ViolationFormatter.js +252 -0
  46. package/dist/explainability/ViolationFormatter.js.map +1 -0
  47. package/dist/explainability/index.d.ts +15 -0
  48. package/dist/explainability/index.d.ts.map +1 -0
  49. package/dist/explainability/index.js +94 -0
  50. package/dist/explainability/index.js.map +1 -0
  51. package/dist/explainability/types.d.ts +37 -0
  52. package/dist/explainability/types.d.ts.map +1 -0
  53. package/dist/explainability/types.js +3 -0
  54. package/dist/explainability/types.js.map +1 -0
  55. package/dist/governance/canonical-invariants.d.ts +88 -0
  56. package/dist/governance/canonical-invariants.d.ts.map +1 -0
  57. package/dist/governance/canonical-invariants.js +197 -0
  58. package/dist/governance/canonical-invariants.js.map +1 -0
  59. package/dist/governance/canonical-ordering.d.ts +76 -0
  60. package/dist/governance/canonical-ordering.d.ts.map +1 -0
  61. package/dist/governance/canonical-ordering.js +189 -0
  62. package/dist/governance/canonical-ordering.js.map +1 -0
  63. package/dist/governance/canonical-pipeline.d.ts +45 -0
  64. package/dist/governance/canonical-pipeline.d.ts.map +1 -0
  65. package/dist/governance/canonical-pipeline.js +616 -0
  66. package/dist/governance/canonical-pipeline.js.map +1 -0
  67. package/dist/governance/diff-line-provenance.d.ts +59 -0
  68. package/dist/governance/diff-line-provenance.d.ts.map +1 -0
  69. package/dist/governance/diff-line-provenance.js +118 -0
  70. package/dist/governance/diff-line-provenance.js.map +1 -0
  71. package/dist/governance/pilot-readiness.d.ts +34 -0
  72. package/dist/governance/pilot-readiness.d.ts.map +1 -0
  73. package/dist/governance/pilot-readiness.js +226 -0
  74. package/dist/governance/pilot-readiness.js.map +1 -0
  75. package/dist/governance/policy-parity-validator.d.ts +62 -0
  76. package/dist/governance/policy-parity-validator.d.ts.map +1 -0
  77. package/dist/governance/policy-parity-validator.js +137 -0
  78. package/dist/governance/policy-parity-validator.js.map +1 -0
  79. package/dist/governance/remediation-boundary.d.ts +55 -0
  80. package/dist/governance/remediation-boundary.d.ts.map +1 -0
  81. package/dist/governance/remediation-boundary.js +120 -0
  82. package/dist/governance/remediation-boundary.js.map +1 -0
  83. package/dist/governance/structural-cache.d.ts +103 -0
  84. package/dist/governance/structural-cache.d.ts.map +1 -0
  85. package/dist/governance/structural-cache.js +240 -0
  86. package/dist/governance/structural-cache.js.map +1 -0
  87. package/dist/governance/structural-on-diff.d.ts +33 -0
  88. package/dist/governance/structural-on-diff.d.ts.map +1 -0
  89. package/dist/governance/structural-on-diff.js +67 -0
  90. package/dist/governance/structural-on-diff.js.map +1 -0
  91. package/dist/governance/structural-policy-merge.d.ts +22 -0
  92. package/dist/governance/structural-policy-merge.d.ts.map +1 -0
  93. package/dist/governance/structural-policy-merge.js +32 -0
  94. package/dist/governance/structural-policy-merge.js.map +1 -0
  95. package/dist/governance/verify-runtime-guard.d.ts +99 -0
  96. package/dist/governance/verify-runtime-guard.d.ts.map +1 -0
  97. package/dist/governance/verify-runtime-guard.js +129 -0
  98. package/dist/governance/verify-runtime-guard.js.map +1 -0
  99. package/dist/index.js +107 -0
  100. package/dist/index.js.map +1 -1
  101. package/dist/integrations/review-compression/index.d.ts +50 -0
  102. package/dist/integrations/review-compression/index.d.ts.map +1 -0
  103. package/dist/integrations/review-compression/index.js +158 -0
  104. package/dist/integrations/review-compression/index.js.map +1 -0
  105. package/dist/intent-engine/domain-taxonomy.d.ts +42 -0
  106. package/dist/intent-engine/domain-taxonomy.d.ts.map +1 -0
  107. package/dist/intent-engine/domain-taxonomy.js +534 -0
  108. package/dist/intent-engine/domain-taxonomy.js.map +1 -0
  109. package/dist/intent-engine/index.d.ts +1 -0
  110. package/dist/intent-engine/index.d.ts.map +1 -1
  111. package/dist/intent-engine/index.js +6 -1
  112. package/dist/intent-engine/index.js.map +1 -1
  113. package/dist/intent-engine/parser.d.ts.map +1 -1
  114. package/dist/intent-engine/parser.js +47 -0
  115. package/dist/intent-engine/parser.js.map +1 -1
  116. package/dist/intent-engine/repo-classifier.d.ts +64 -0
  117. package/dist/intent-engine/repo-classifier.d.ts.map +1 -0
  118. package/dist/intent-engine/repo-classifier.js +178 -0
  119. package/dist/intent-engine/repo-classifier.js.map +1 -0
  120. package/dist/intent-engine/semantic-expander.d.ts +104 -0
  121. package/dist/intent-engine/semantic-expander.d.ts.map +1 -0
  122. package/dist/intent-engine/semantic-expander.js +480 -0
  123. package/dist/intent-engine/semantic-expander.js.map +1 -0
  124. package/dist/patch-engine/patterns.d.ts.map +1 -1
  125. package/dist/patch-engine/patterns.js +8 -4
  126. package/dist/patch-engine/patterns.js.map +1 -1
  127. package/dist/semantic/index.d.ts +14 -0
  128. package/dist/semantic/index.d.ts.map +1 -0
  129. package/dist/semantic/index.js +30 -0
  130. package/dist/semantic/index.js.map +1 -0
  131. package/dist/semantic/tfidf-engine.d.ts +81 -0
  132. package/dist/semantic/tfidf-engine.d.ts.map +1 -0
  133. package/dist/semantic/tfidf-engine.js +278 -0
  134. package/dist/semantic/tfidf-engine.js.map +1 -0
  135. package/dist/semantic/vector-store.d.ts +108 -0
  136. package/dist/semantic/vector-store.d.ts.map +1 -0
  137. package/dist/semantic/vector-store.js +321 -0
  138. package/dist/semantic/vector-store.js.map +1 -0
  139. package/dist/structural-rules/context-severity.d.ts +46 -0
  140. package/dist/structural-rules/context-severity.d.ts.map +1 -0
  141. package/dist/structural-rules/context-severity.js +115 -0
  142. package/dist/structural-rules/context-severity.js.map +1 -0
  143. package/dist/structural-rules/distributed/DS001-saga-rollback-absence.d.ts +11 -0
  144. package/dist/structural-rules/distributed/DS001-saga-rollback-absence.d.ts.map +1 -0
  145. package/dist/structural-rules/distributed/DS001-saga-rollback-absence.js +212 -0
  146. package/dist/structural-rules/distributed/DS001-saga-rollback-absence.js.map +1 -0
  147. package/dist/structural-rules/distributed/DS002-missing-correlation-id.d.ts +11 -0
  148. package/dist/structural-rules/distributed/DS002-missing-correlation-id.d.ts.map +1 -0
  149. package/dist/structural-rules/distributed/DS002-missing-correlation-id.js +213 -0
  150. package/dist/structural-rules/distributed/DS002-missing-correlation-id.js.map +1 -0
  151. package/dist/structural-rules/distributed/index.d.ts +3 -0
  152. package/dist/structural-rules/distributed/index.d.ts.map +1 -0
  153. package/dist/structural-rules/distributed/index.js +8 -0
  154. package/dist/structural-rules/distributed/index.js.map +1 -0
  155. package/dist/structural-rules/engine.d.ts +25 -0
  156. package/dist/structural-rules/engine.d.ts.map +1 -0
  157. package/dist/structural-rules/engine.js +90 -0
  158. package/dist/structural-rules/engine.js.map +1 -0
  159. package/dist/structural-rules/index.d.ts +45 -0
  160. package/dist/structural-rules/index.d.ts.map +1 -0
  161. package/dist/structural-rules/index.js +158 -0
  162. package/dist/structural-rules/index.js.map +1 -0
  163. package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.d.ts +11 -0
  164. package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.d.ts.map +1 -0
  165. package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.js +66 -0
  166. package/dist/structural-rules/python/PY001-asyncio-task-without-cancel.js.map +1 -0
  167. package/dist/structural-rules/python/PY002-unbounded-dict-singleton.d.ts +11 -0
  168. package/dist/structural-rules/python/PY002-unbounded-dict-singleton.d.ts.map +1 -0
  169. package/dist/structural-rules/python/PY002-unbounded-dict-singleton.js +135 -0
  170. package/dist/structural-rules/python/PY002-unbounded-dict-singleton.js.map +1 -0
  171. package/dist/structural-rules/python/PY003-broad-except-clause.d.ts +32 -0
  172. package/dist/structural-rules/python/PY003-broad-except-clause.d.ts.map +1 -0
  173. package/dist/structural-rules/python/PY003-broad-except-clause.js +277 -0
  174. package/dist/structural-rules/python/PY003-broad-except-clause.js.map +1 -0
  175. package/dist/structural-rules/python/PY004-swallowed-async-exception.d.ts +11 -0
  176. package/dist/structural-rules/python/PY004-swallowed-async-exception.d.ts.map +1 -0
  177. package/dist/structural-rules/python/PY004-swallowed-async-exception.js +167 -0
  178. package/dist/structural-rules/python/PY004-swallowed-async-exception.js.map +1 -0
  179. package/dist/structural-rules/python/PY005-fastapi-without-pydantic.d.ts +11 -0
  180. package/dist/structural-rules/python/PY005-fastapi-without-pydantic.d.ts.map +1 -0
  181. package/dist/structural-rules/python/PY005-fastapi-without-pydantic.js +154 -0
  182. package/dist/structural-rules/python/PY005-fastapi-without-pydantic.js.map +1 -0
  183. package/dist/structural-rules/python/PY006-blocking-io-in-async.d.ts +11 -0
  184. package/dist/structural-rules/python/PY006-blocking-io-in-async.d.ts.map +1 -0
  185. package/dist/structural-rules/python/PY006-blocking-io-in-async.js +130 -0
  186. package/dist/structural-rules/python/PY006-blocking-io-in-async.js.map +1 -0
  187. package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.d.ts +11 -0
  188. package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.d.ts.map +1 -0
  189. package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.js +93 -0
  190. package/dist/structural-rules/python/PY007-sqlalchemy-session-leak.js.map +1 -0
  191. package/dist/structural-rules/python/PY008-celery-task-without-retry.d.ts +11 -0
  192. package/dist/structural-rules/python/PY008-celery-task-without-retry.d.ts.map +1 -0
  193. package/dist/structural-rules/python/PY008-celery-task-without-retry.js +154 -0
  194. package/dist/structural-rules/python/PY008-celery-task-without-retry.js.map +1 -0
  195. package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.d.ts +11 -0
  196. package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.d.ts.map +1 -0
  197. package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.js +133 -0
  198. package/dist/structural-rules/python/PY009-unsafe-pickle-deserialization.js.map +1 -0
  199. package/dist/structural-rules/python/PY010-leaked-aiohttp-session.d.ts +11 -0
  200. package/dist/structural-rules/python/PY010-leaked-aiohttp-session.d.ts.map +1 -0
  201. package/dist/structural-rules/python/PY010-leaked-aiohttp-session.js +80 -0
  202. package/dist/structural-rules/python/PY010-leaked-aiohttp-session.js.map +1 -0
  203. package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts +11 -0
  204. package/dist/structural-rules/python/PY011-thread-lifecycle.d.ts.map +1 -0
  205. package/dist/structural-rules/python/PY011-thread-lifecycle.js +97 -0
  206. package/dist/structural-rules/python/PY011-thread-lifecycle.js.map +1 -0
  207. package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts +11 -0
  208. package/dist/structural-rules/python/PY012-asyncio-run-misuse.d.ts.map +1 -0
  209. package/dist/structural-rules/python/PY012-asyncio-run-misuse.js +83 -0
  210. package/dist/structural-rules/python/PY012-asyncio-run-misuse.js.map +1 -0
  211. package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts +11 -0
  212. package/dist/structural-rules/python/PY013-mutable-default-arg.d.ts.map +1 -0
  213. package/dist/structural-rules/python/PY013-mutable-default-arg.js +73 -0
  214. package/dist/structural-rules/python/PY013-mutable-default-arg.js.map +1 -0
  215. package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts +11 -0
  216. package/dist/structural-rules/python/PY014-fixed-sleep-retry.d.ts.map +1 -0
  217. package/dist/structural-rules/python/PY014-fixed-sleep-retry.js +115 -0
  218. package/dist/structural-rules/python/PY014-fixed-sleep-retry.js.map +1 -0
  219. package/dist/structural-rules/rules/SR001-swallowed-async-rejection.d.ts +11 -0
  220. package/dist/structural-rules/rules/SR001-swallowed-async-rejection.d.ts.map +1 -0
  221. package/dist/structural-rules/rules/SR001-swallowed-async-rejection.js +145 -0
  222. package/dist/structural-rules/rules/SR001-swallowed-async-rejection.js.map +1 -0
  223. package/dist/structural-rules/rules/SR002-unbounded-collection.d.ts +11 -0
  224. package/dist/structural-rules/rules/SR002-unbounded-collection.d.ts.map +1 -0
  225. package/dist/structural-rules/rules/SR002-unbounded-collection.js +196 -0
  226. package/dist/structural-rules/rules/SR002-unbounded-collection.js.map +1 -0
  227. package/dist/structural-rules/rules/SR003-timer-without-cleanup.d.ts +11 -0
  228. package/dist/structural-rules/rules/SR003-timer-without-cleanup.d.ts.map +1 -0
  229. package/dist/structural-rules/rules/SR003-timer-without-cleanup.js +148 -0
  230. package/dist/structural-rules/rules/SR003-timer-without-cleanup.js.map +1 -0
  231. package/dist/structural-rules/rules/SR004-request-boundary-no-validation.d.ts +11 -0
  232. package/dist/structural-rules/rules/SR004-request-boundary-no-validation.d.ts.map +1 -0
  233. package/dist/structural-rules/rules/SR004-request-boundary-no-validation.js +162 -0
  234. package/dist/structural-rules/rules/SR004-request-boundary-no-validation.js.map +1 -0
  235. package/dist/structural-rules/rules/SR005-halfopen-probe-gate.d.ts +11 -0
  236. package/dist/structural-rules/rules/SR005-halfopen-probe-gate.d.ts.map +1 -0
  237. package/dist/structural-rules/rules/SR005-halfopen-probe-gate.js +150 -0
  238. package/dist/structural-rules/rules/SR005-halfopen-probe-gate.js.map +1 -0
  239. package/dist/structural-rules/rules/SR006-fanout-error-sanitization.d.ts +11 -0
  240. package/dist/structural-rules/rules/SR006-fanout-error-sanitization.d.ts.map +1 -0
  241. package/dist/structural-rules/rules/SR006-fanout-error-sanitization.js +161 -0
  242. package/dist/structural-rules/rules/SR006-fanout-error-sanitization.js.map +1 -0
  243. package/dist/structural-rules/rules/SR007-cross-request-error.d.ts +11 -0
  244. package/dist/structural-rules/rules/SR007-cross-request-error.d.ts.map +1 -0
  245. package/dist/structural-rules/rules/SR007-cross-request-error.js +175 -0
  246. package/dist/structural-rules/rules/SR007-cross-request-error.js.map +1 -0
  247. package/dist/structural-rules/rules/SR008-background-task-orphan.d.ts +11 -0
  248. package/dist/structural-rules/rules/SR008-background-task-orphan.d.ts.map +1 -0
  249. package/dist/structural-rules/rules/SR008-background-task-orphan.js +176 -0
  250. package/dist/structural-rules/rules/SR008-background-task-orphan.js.map +1 -0
  251. package/dist/structural-rules/rules/SR009-missing-retry-backoff.d.ts +11 -0
  252. package/dist/structural-rules/rules/SR009-missing-retry-backoff.d.ts.map +1 -0
  253. package/dist/structural-rules/rules/SR009-missing-retry-backoff.js +168 -0
  254. package/dist/structural-rules/rules/SR009-missing-retry-backoff.js.map +1 -0
  255. package/dist/structural-rules/rules/SR010-retry-storm.d.ts +11 -0
  256. package/dist/structural-rules/rules/SR010-retry-storm.d.ts.map +1 -0
  257. package/dist/structural-rules/rules/SR010-retry-storm.js +181 -0
  258. package/dist/structural-rules/rules/SR010-retry-storm.js.map +1 -0
  259. package/dist/structural-rules/rules/SR011-event-listener-leak.d.ts +11 -0
  260. package/dist/structural-rules/rules/SR011-event-listener-leak.d.ts.map +1 -0
  261. package/dist/structural-rules/rules/SR011-event-listener-leak.js +208 -0
  262. package/dist/structural-rules/rules/SR011-event-listener-leak.js.map +1 -0
  263. package/dist/structural-rules/rules/SR012-promise-race-leak.d.ts +11 -0
  264. package/dist/structural-rules/rules/SR012-promise-race-leak.d.ts.map +1 -0
  265. package/dist/structural-rules/rules/SR012-promise-race-leak.js +191 -0
  266. package/dist/structural-rules/rules/SR012-promise-race-leak.js.map +1 -0
  267. package/dist/structural-rules/rules/SR013-missing-idempotency-key.d.ts +11 -0
  268. package/dist/structural-rules/rules/SR013-missing-idempotency-key.d.ts.map +1 -0
  269. package/dist/structural-rules/rules/SR013-missing-idempotency-key.js +219 -0
  270. package/dist/structural-rules/rules/SR013-missing-idempotency-key.js.map +1 -0
  271. package/dist/structural-rules/rules/SR014-mutable-closure-async.d.ts +11 -0
  272. package/dist/structural-rules/rules/SR014-mutable-closure-async.d.ts.map +1 -0
  273. package/dist/structural-rules/rules/SR014-mutable-closure-async.js +208 -0
  274. package/dist/structural-rules/rules/SR014-mutable-closure-async.js.map +1 -0
  275. package/dist/structural-rules/rules/SR015-dangling-abort-controller.d.ts +11 -0
  276. package/dist/structural-rules/rules/SR015-dangling-abort-controller.d.ts.map +1 -0
  277. package/dist/structural-rules/rules/SR015-dangling-abort-controller.js +190 -0
  278. package/dist/structural-rules/rules/SR015-dangling-abort-controller.js.map +1 -0
  279. package/dist/structural-rules/rules/SR016-unsafe-json-parse.d.ts +11 -0
  280. package/dist/structural-rules/rules/SR016-unsafe-json-parse.d.ts.map +1 -0
  281. package/dist/structural-rules/rules/SR016-unsafe-json-parse.js +187 -0
  282. package/dist/structural-rules/rules/SR016-unsafe-json-parse.js.map +1 -0
  283. package/dist/structural-rules/suppressions.d.ts +43 -0
  284. package/dist/structural-rules/suppressions.d.ts.map +1 -0
  285. package/dist/structural-rules/suppressions.js +115 -0
  286. package/dist/structural-rules/suppressions.js.map +1 -0
  287. package/dist/structural-rules/types.d.ts +55 -0
  288. package/dist/structural-rules/types.d.ts.map +1 -0
  289. package/dist/structural-rules/types.js +3 -0
  290. package/dist/structural-rules/types.js.map +1 -0
  291. package/dist/utils/brain-cache.d.ts +100 -0
  292. package/dist/utils/brain-cache.d.ts.map +1 -0
  293. package/dist/utils/brain-cache.js +346 -0
  294. package/dist/utils/brain-cache.js.map +1 -0
  295. package/dist/utils/governance-provenance.d.ts +95 -0
  296. package/dist/utils/governance-provenance.d.ts.map +1 -0
  297. package/dist/utils/governance-provenance.js +187 -0
  298. package/dist/utils/governance-provenance.js.map +1 -0
  299. package/dist/utils/pilot-metrics.d.ts +46 -0
  300. package/dist/utils/pilot-metrics.d.ts.map +1 -0
  301. package/dist/utils/pilot-metrics.js +240 -0
  302. package/dist/utils/pilot-metrics.js.map +1 -0
  303. package/dist/utils/replay-runtime.d.ts +34 -0
  304. package/dist/utils/replay-runtime.d.ts.map +1 -1
  305. package/dist/utils/replay-runtime.js +207 -0
  306. package/dist/utils/replay-runtime.js.map +1 -1
  307. package/dist/utils/verify-runtime-stability.d.ts +142 -0
  308. package/dist/utils/verify-runtime-stability.d.ts.map +1 -0
  309. package/dist/utils/verify-runtime-stability.js +230 -0
  310. package/dist/utils/verify-runtime-stability.js.map +1 -0
  311. package/dist/workspace/cross-repo-graph.d.ts +111 -0
  312. package/dist/workspace/cross-repo-graph.d.ts.map +1 -0
  313. package/dist/workspace/cross-repo-graph.js +450 -0
  314. package/dist/workspace/cross-repo-graph.js.map +1 -0
  315. package/dist/workspace/federated-context.d.ts +144 -0
  316. package/dist/workspace/federated-context.d.ts.map +1 -0
  317. package/dist/workspace/federated-context.js +347 -0
  318. package/dist/workspace/federated-context.js.map +1 -0
  319. package/dist/workspace/index.d.ts +38 -0
  320. package/dist/workspace/index.d.ts.map +1 -0
  321. package/dist/workspace/index.js +48 -0
  322. package/dist/workspace/index.js.map +1 -0
  323. package/package.json +9 -9
@@ -0,0 +1,616 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stripStructuralPolicyRows = stripStructuralPolicyRows;
4
+ exports.findingFromStructural = findingFromStructural;
5
+ exports.findingFromPolicyEngine = findingFromPolicyEngine;
6
+ exports.findingFromIntentIssue = findingFromIntentIssue;
7
+ exports.findingFromFlowIssue = findingFromFlowIssue;
8
+ exports.findingFromRegression = findingFromRegression;
9
+ exports.findingFromScope = findingFromScope;
10
+ exports.findingFromGovernanceConstraint = findingFromGovernanceConstraint;
11
+ exports.buildGovernanceVerificationEnvelope = buildGovernanceVerificationEnvelope;
12
+ exports.attachCanonicalGovernance = attachCanonicalGovernance;
13
+ exports.evaluateGovernanceReplayIntegrity = evaluateGovernanceReplayIntegrity;
14
+ const crypto_1 = require("crypto");
15
+ const contracts_1 = require("@neurcode-ai/contracts");
16
+ const canonical_invariants_1 = require("./canonical-invariants");
17
+ const canonical_ordering_1 = require("./canonical-ordering");
18
+ function stableFindingId(parts) {
19
+ return (0, crypto_1.createHash)('sha256').update(parts.join('\x1e')).digest('hex').slice(0, 32);
20
+ }
21
+ /**
22
+ * Strip structural:* prefixed violations from the policy-engine row list.
23
+ * These are already represented in structuralViolations — keeping them in
24
+ * policyViolations causes cross-source duplicate GovernanceFinding objects.
25
+ * Called by attachCanonicalGovernance before building the envelope.
26
+ */
27
+ function stripStructuralPolicyRows(violations) {
28
+ return violations.filter(v => !String(v.rule ?? '').startsWith('structural:'));
29
+ }
30
+ function rankDeterminism(d) {
31
+ switch (d) {
32
+ case 'deterministic-structural':
33
+ return 4;
34
+ case 'deterministic-semantic':
35
+ return 3;
36
+ case 'heuristic-advisory':
37
+ return 2;
38
+ case 'llm-assisted-planning':
39
+ return 1;
40
+ default:
41
+ return 0;
42
+ }
43
+ }
44
+ function pickStricterDeterminism(a, b) {
45
+ return rankDeterminism(a) >= rankDeterminism(b) ? a : b;
46
+ }
47
+ function mapStructuralDeterminism(v) {
48
+ if (v.determinism === 'heuristic-advisory')
49
+ return 'heuristic-advisory';
50
+ if (v.determinism === 'deterministic-semantic')
51
+ return 'deterministic-semantic';
52
+ if (v.determinism === 'llm-assisted-planning')
53
+ return 'llm-assisted-planning';
54
+ return 'deterministic-structural';
55
+ }
56
+ function mapStructuralSeverity(v) {
57
+ return v.severity === 'BLOCKING' ? 'BLOCKING' : 'ADVISORY';
58
+ }
59
+ function findingFromStructural(v) {
60
+ const determinismClassification = mapStructuralDeterminism(v);
61
+ const id = stableFindingId([
62
+ 'structural',
63
+ v.ruleId,
64
+ v.filePath,
65
+ String(v.line),
66
+ String(v.column),
67
+ v.evidence,
68
+ ]);
69
+ return {
70
+ id,
71
+ category: 'structural',
72
+ sourceSystem: 'structural-rules',
73
+ determinismClassification,
74
+ severity: mapStructuralSeverity(v),
75
+ confidence: v.confidence,
76
+ title: `${v.ruleId} · ${v.ruleName}`,
77
+ evidence: {
78
+ excerpt: v.evidence,
79
+ filePath: v.filePath,
80
+ line: v.line,
81
+ column: v.column,
82
+ structuralHint: v.ruleId,
83
+ },
84
+ operationalImplication: v.operationalRisk,
85
+ remediation: v.remediation,
86
+ structuralMetadata: {
87
+ ruleId: v.ruleId,
88
+ ruleName: v.ruleName,
89
+ policyRef: v.policyRef,
90
+ language: v.language,
91
+ },
92
+ };
93
+ }
94
+ function findingFromPolicyEngine(v) {
95
+ const file = v.file || 'unknown';
96
+ const rule = v.rule || 'policy';
97
+ const id = stableFindingId(['policy-engine', rule, file, String(v.line ?? 0), v.message || '']);
98
+ const blocking = v.severity === 'block';
99
+ return {
100
+ id,
101
+ category: 'policy-engine',
102
+ sourceSystem: 'policy-engine',
103
+ determinismClassification: 'heuristic-advisory',
104
+ severity: blocking ? 'BLOCKING' : 'ADVISORY',
105
+ confidence: blocking ? 0.72 : 0.55,
106
+ title: `Policy · ${rule}`,
107
+ evidence: {
108
+ excerpt: v.message || rule,
109
+ filePath: file,
110
+ line: v.line,
111
+ column: v.column,
112
+ },
113
+ operationalImplication: blocking
114
+ ? 'Change may violate org policy gates (sensitive paths, secrets heuristics, size limits, or custom pack rules).'
115
+ : 'Policy advisory: review before merge.',
116
+ remediation: 'Adjust the change, update policy exception through approved workflow, or narrow diff scope.',
117
+ };
118
+ }
119
+ function findingFromIntentIssue(i) {
120
+ const file = i.files?.[0] ?? 'intent-analysis';
121
+ const id = stableFindingId(['intent', i.rule, file, i.message]);
122
+ return {
123
+ id,
124
+ category: 'intent-conditioned',
125
+ sourceSystem: 'intent-engine',
126
+ determinismClassification: 'deterministic-semantic',
127
+ severity: i.severity === 'high' ? 'BLOCKING' : 'ADVISORY',
128
+ confidence: i.severity === 'high' ? 0.78 : 0.62,
129
+ title: `Intent · ${i.rule}`,
130
+ evidence: { excerpt: i.message, filePath: file },
131
+ operationalImplication: 'Implementation may not match stated intent; risk of shipping incomplete auth, validation, or error handling.',
132
+ remediation: 'Align code with plan intent or update the plan / intent artifact.',
133
+ };
134
+ }
135
+ function findingFromFlowIssue(f) {
136
+ const file = f.files?.[0] ?? 'flow-analysis';
137
+ const id = stableFindingId(['flow', f.rule, file, f.message]);
138
+ return {
139
+ id,
140
+ category: 'flow-connectivity',
141
+ sourceSystem: 'intent-engine',
142
+ determinismClassification: 'deterministic-semantic',
143
+ severity: f.severity === 'high' ? 'BLOCKING' : 'ADVISORY',
144
+ confidence: f.severity === 'high' ? 0.74 : 0.58,
145
+ title: `Flow · ${f.rule}`,
146
+ evidence: { excerpt: f.message, filePath: file },
147
+ operationalImplication: 'Cross-component wiring gap; can cause runtime failures or silent omission of critical paths.',
148
+ remediation: 'Connect required components or document explicit bypass with governance approval.',
149
+ };
150
+ }
151
+ function findingFromRegression(r) {
152
+ const id = stableFindingId(['regression', r.rule, r.message]);
153
+ return {
154
+ id,
155
+ category: 'regression',
156
+ sourceSystem: 'intent-engine',
157
+ determinismClassification: 'deterministic-semantic',
158
+ severity: 'BLOCKING',
159
+ confidence: 0.7,
160
+ title: `Regression · ${r.rule}`,
161
+ evidence: { excerpt: r.message, filePath: 'regression-analysis' },
162
+ operationalImplication: 'Previously covered behaviour appears degraded relative to last verified state.',
163
+ remediation: 'Restore prior safeguards or update signed intent / waiver with rationale.',
164
+ };
165
+ }
166
+ function findingFromScope(file, message) {
167
+ const id = stableFindingId(['scope', file, message]);
168
+ return {
169
+ id,
170
+ category: 'scope',
171
+ sourceSystem: 'policy-engine',
172
+ determinismClassification: 'deterministic-semantic',
173
+ severity: 'BLOCKING',
174
+ confidence: 0.88,
175
+ title: 'Scope guard',
176
+ evidence: { excerpt: message, filePath: file },
177
+ operationalImplication: 'Unplanned files changed; increases blast radius and review load.',
178
+ remediation: 'Limit diff to planned scope or expand plan through governed workflow.',
179
+ };
180
+ }
181
+ function findingFromGovernanceConstraint(message, fileHint) {
182
+ const id = stableFindingId(['constraint', fileHint, message]);
183
+ return {
184
+ id,
185
+ category: 'governance-constraint',
186
+ sourceSystem: 'governance-runtime',
187
+ determinismClassification: 'deterministic-semantic',
188
+ severity: 'BLOCKING',
189
+ confidence: 0.9,
190
+ title: 'Deterministic constraint',
191
+ evidence: { excerpt: message, filePath: fileHint },
192
+ operationalImplication: 'Compiled intent/policy constraint violated; deterministic mismatch with approved artifacts.',
193
+ remediation: 'Fix code to satisfy constraint or regenerate compiled policy with explicit approval.',
194
+ };
195
+ }
196
+ function behavioralClusterKey(finding) {
197
+ const text = `${finding.title} ${finding.operationalImplication}`.toLowerCase();
198
+ if (text.includes('queue') || text.includes('retry') || text.includes('async')) {
199
+ return 'async-failure-propagation-risk';
200
+ }
201
+ if (text.includes('scope') || text.includes('blast radius') || text.includes('plan')) {
202
+ return 'scope-and-blast-radius-risk';
203
+ }
204
+ if (text.includes('auth') || text.includes('identity') || text.includes('token')) {
205
+ return 'auth-trust-boundary-risk';
206
+ }
207
+ if (text.includes('flow') || text.includes('connect')) {
208
+ return 'service-flow-connectivity-risk';
209
+ }
210
+ return 'operational-governance-risk';
211
+ }
212
+ function compressByLocation(findings) {
213
+ // ── Pass 1: build a ruleId-aware identity map for structural findings ─────
214
+ // Key: filePath + line + ruleId (from structuralMetadata)
215
+ // This ensures that when the same structural violation appears from both
216
+ // the structural-rules source AND a policy-engine structural:* row,
217
+ // we can identify and absorb the duplicate before bucket compression.
218
+ const structuralById = new Map();
219
+ for (const f of findings) {
220
+ if (f.sourceSystem === 'structural-rules' && f.structuralMetadata?.ruleId) {
221
+ const key = `${f.evidence.filePath ?? ''}\x00${f.evidence.line ?? 0}\x00${f.structuralMetadata.ruleId}`;
222
+ structuralById.set(key, f);
223
+ }
224
+ }
225
+ // ── Pass 2: bucket by location + behavior, absorb structural duplicates ───
226
+ const buckets = new Map();
227
+ let duplicateCount = 0;
228
+ for (const f of findings) {
229
+ // If this is a policy-engine row that mirrors a structural finding, absorb it
230
+ if (f.sourceSystem === 'policy-engine') {
231
+ const ruleId = String(f.structuralMetadata?.ruleId ?? f.title.match(/^Policy · structural:(.+)$/)?.[1] ?? '');
232
+ if (ruleId) {
233
+ const structKey = `${f.evidence.filePath ?? ''}\x00${f.evidence.line ?? 0}\x00${ruleId}`;
234
+ const primary = structuralById.get(structKey);
235
+ if (primary) {
236
+ // Absorb into structural primary's mergedFrom — do not add to buckets
237
+ const mergedFrom = [...(primary.mergedFrom ?? [primary.id]), f.id];
238
+ structuralById.set(structKey, { ...primary, mergedFrom });
239
+ duplicateCount++;
240
+ continue;
241
+ }
242
+ }
243
+ }
244
+ const fp = f.evidence.filePath ?? 'unknown';
245
+ const ln = f.evidence.line ?? 0;
246
+ const sev = f.severity;
247
+ const ruleKey = f.structuralMetadata?.ruleId ?? '';
248
+ const behavior = behavioralClusterKey(f);
249
+ // Include ruleId in the bucket key so distinct rules at the same line
250
+ // are never merged — only identical-rule duplicates across source systems.
251
+ const key = `${fp}\x00${ln}\x00${sev}\x00${ruleKey}\x00${behavior}`;
252
+ const list = buckets.get(key) ?? [];
253
+ list.push(f);
254
+ buckets.set(key, list);
255
+ }
256
+ // ── Pass 3: replace bucket entries with absorbed structural findings ───────
257
+ // Update bucket entries to use the absorbed (mergedFrom-enriched) versions
258
+ for (const [key, group] of buckets) {
259
+ buckets.set(key, group.map(f => {
260
+ if (f.sourceSystem !== 'structural-rules' || !f.structuralMetadata?.ruleId)
261
+ return f;
262
+ const structKey = `${f.evidence.filePath ?? ''}\x00${f.evidence.line ?? 0}\x00${f.structuralMetadata.ruleId}`;
263
+ return structuralById.get(structKey) ?? f;
264
+ }));
265
+ }
266
+ const merged = [];
267
+ for (const [, group] of buckets) {
268
+ if (group.length === 1) {
269
+ merged.push(group[0]);
270
+ continue;
271
+ }
272
+ const systems = new Set(group.map((g) => g.sourceSystem));
273
+ if (systems.size < 2) {
274
+ merged.push(...group);
275
+ continue;
276
+ }
277
+ duplicateCount += group.length - 1;
278
+ let primary = group[0];
279
+ for (const next of group.slice(1)) {
280
+ const det = pickStricterDeterminism(primary.determinismClassification, next.determinismClassification);
281
+ const conf = Math.min(primary.confidence, next.confidence);
282
+ const mergedFrom = [...(primary.mergedFrom ?? [primary.id]), ...(next.mergedFrom ?? [next.id])];
283
+ primary = {
284
+ ...primary,
285
+ id: stableFindingId(mergedFrom.sort()),
286
+ determinismClassification: det,
287
+ confidence: conf,
288
+ title: `${primary.title} + ${next.title}`,
289
+ operationalImplication: `${primary.operationalImplication} | ${next.operationalImplication}`,
290
+ remediation: `${primary.remediation} | ${next.remediation}`,
291
+ mergedFrom,
292
+ evidence: {
293
+ ...primary.evidence,
294
+ excerpt: `${primary.evidence.excerpt}\n---\n${next.evidence.excerpt}`,
295
+ },
296
+ };
297
+ }
298
+ merged.push(primary);
299
+ }
300
+ return { merged, duplicateCount };
301
+ }
302
+ function buildReviewerSummary(findings, maxLines = 12) {
303
+ const blocking = findings.filter((f) => f.severity === 'BLOCKING');
304
+ const lines = [];
305
+ const clusters = new Map();
306
+ for (const f of blocking) {
307
+ const key = behavioralClusterKey(f);
308
+ clusters.set(key, (clusters.get(key) ?? 0) + 1);
309
+ }
310
+ for (const [cluster, count] of [...clusters.entries()].sort((a, b) => b[1] - a[1]).slice(0, 4)) {
311
+ lines.push(`Operational cluster: ${cluster} (${count} finding(s))`);
312
+ }
313
+ for (const f of blocking.slice(0, maxLines)) {
314
+ const det = f.determinismClassification;
315
+ const fp = f.evidence.filePath ?? '?';
316
+ const ln = f.evidence.line != null ? `:${f.evidence.line}` : '';
317
+ lines.push(`[${det}] ${fp}${ln} — ${f.title}`);
318
+ }
319
+ if (blocking.length > maxLines) {
320
+ lines.push(`… ${blocking.length - maxLines} more blocking finding(s) omitted from summary`);
321
+ }
322
+ return lines;
323
+ }
324
+ function buildGovernanceVerificationEnvelope(input) {
325
+ const raw = [];
326
+ for (const v of input.structuralViolations ?? []) {
327
+ raw.push(findingFromStructural(v));
328
+ }
329
+ // Strip structural:* policy rows — they duplicate structuralViolations entries.
330
+ // The canonical dedup in compressByLocation handles any that slip through,
331
+ // but stripping here prevents them from appearing as independent findings.
332
+ const filteredPolicyViolations = stripStructuralPolicyRows(input.policyViolations ?? []);
333
+ for (const v of filteredPolicyViolations) {
334
+ raw.push(findingFromPolicyEngine(v));
335
+ }
336
+ for (const i of input.intentIssues ?? []) {
337
+ raw.push(findingFromIntentIssue(i));
338
+ }
339
+ for (const f of input.flowIssues ?? []) {
340
+ raw.push(findingFromFlowIssue(f));
341
+ }
342
+ for (const r of input.regressions ?? []) {
343
+ raw.push(findingFromRegression(r));
344
+ }
345
+ for (const s of input.scopeFiles ?? []) {
346
+ raw.push(findingFromScope(s.file, s.message ?? 'Out of scope'));
347
+ }
348
+ for (const c of input.constraintMessages ?? []) {
349
+ raw.push(findingFromGovernanceConstraint(c.message, c.file ?? '.neurcode/policy-compiled'));
350
+ }
351
+ // NOTE: provenance is assigned after canonical sort below (post compressByLocation).
352
+ const { merged: rawMerged, duplicateCount } = compressByLocation(raw);
353
+ // Phase 1: Apply canonical deterministic ordering BEFORE checksum, provenance,
354
+ // and envelope emission. This is the single authoritative sort point.
355
+ // sortCanonicalFindingsStable is pure, never mutates input.
356
+ const merged = (0, canonical_ordering_1.sortCanonicalFindingsStable)(rawMerged);
357
+ // Phase 1: Validate that the sort produced a correctly ordered array.
358
+ // If ordering drift is detected, emit warning but do NOT throw.
359
+ (0, canonical_ordering_1.validateCanonicalOrder)(merged, 'buildGovernanceVerificationEnvelope');
360
+ // Phase 3: Assign provenance AFTER ordering so that provenance assignment
361
+ // order matches the canonical finding order.
362
+ for (const f of merged) {
363
+ if (input.provenance && !f.provenanceMetadata) {
364
+ f.provenanceMetadata = { ...input.provenance };
365
+ }
366
+ }
367
+ // legacyDebt findings: those demoted from BLOCKING to ADVISORY due to
368
+ // diff-scope enforcement (Phase 2). Count separately for observability.
369
+ const legacyDebtCount = merged.filter(f => f.legacyDebt === true).length;
370
+ // Phase 3: Compute deterministic replay checksum over the canonically ordered finding set.
371
+ // Input is already sorted by sortCanonicalFindingsStable — checksum is stable.
372
+ const replayChecksum = (0, canonical_invariants_1.computeCanonicalFindingChecksum)(merged);
373
+ // Phase 1 invariant guard: warn if any structural:* policy rows leaked through.
374
+ (0, canonical_invariants_1.assertNoStructuralPolicyRows)(input.policyViolations ?? [], 'buildGovernanceVerificationEnvelope');
375
+ return {
376
+ schemaVersion: contracts_1.GOVERNANCE_FINDINGS_SCHEMA_VERSION,
377
+ generatedAt: new Date().toISOString(),
378
+ findings: merged,
379
+ compressedDuplicateCount: duplicateCount,
380
+ deduplicatedFindingCount: duplicateCount,
381
+ legacyDebtFindingCount: legacyDebtCount,
382
+ replayChecksum,
383
+ reviewerSummary: buildReviewerSummary(merged),
384
+ };
385
+ }
386
+ function asStructuralViolations(raw) {
387
+ if (!Array.isArray(raw))
388
+ return [];
389
+ return raw;
390
+ }
391
+ function asRuleViolationsFromPayloadViolations(payload) {
392
+ const violations = payload.violations;
393
+ if (!Array.isArray(violations))
394
+ return [];
395
+ const out = [];
396
+ for (const item of violations) {
397
+ if (!item || typeof item !== 'object' || Array.isArray(item))
398
+ continue;
399
+ const rec = item;
400
+ const rule = typeof rec.rule === 'string' ? rec.rule : typeof rec.policy === 'string' ? rec.policy : 'unknown';
401
+ const file = typeof rec.file === 'string' ? rec.file : 'unknown';
402
+ const sevRaw = typeof rec.severity === 'string' ? rec.severity.toLowerCase() : 'warn';
403
+ const severity = sevRaw === 'block' || sevRaw === 'critical' || sevRaw === 'high' ? 'block' : 'warn';
404
+ const message = typeof rec.message === 'string' ? rec.message : undefined;
405
+ const line = typeof rec.line === 'number'
406
+ ? rec.line
407
+ : typeof rec.startLine === 'number'
408
+ ? rec.startLine
409
+ : undefined;
410
+ if (String(rule).startsWith('structural:')) {
411
+ continue;
412
+ }
413
+ out.push({ rule, file, severity, message, line });
414
+ }
415
+ return out;
416
+ }
417
+ function scopeHintsFromPayload(payload) {
418
+ const scopeIssues = payload.scopeIssues;
419
+ const bloatFiles = payload.bloatFiles;
420
+ const out = [];
421
+ if (Array.isArray(scopeIssues)) {
422
+ for (const item of scopeIssues) {
423
+ if (item && typeof item === 'object' && !Array.isArray(item)) {
424
+ const rec = item;
425
+ if (typeof rec.file === 'string') {
426
+ out.push({ file: rec.file, message: typeof rec.message === 'string' ? rec.message : undefined });
427
+ }
428
+ }
429
+ }
430
+ }
431
+ if (Array.isArray(bloatFiles)) {
432
+ for (const f of bloatFiles) {
433
+ if (typeof f === 'string')
434
+ out.push({ file: f, message: 'File modified outside the plan' });
435
+ }
436
+ }
437
+ return out;
438
+ }
439
+ /**
440
+ * Merge canonical governance envelope onto a verify JSON payload (mutates copy).
441
+ */
442
+ function attachCanonicalGovernance(payload) {
443
+ const structuralViolations = asStructuralViolations(payload.structuralViolations);
444
+ // Strip structural:* rows before building the envelope — these are echoed
445
+ // from mergeStructuralIntoPolicyViolations() and would cause duplicates.
446
+ const policyViolations = stripStructuralPolicyRows(asRuleViolationsFromPayloadViolations(payload));
447
+ const intentIssues = Array.isArray(payload.intentIssues) ? payload.intentIssues : [];
448
+ const flowIssues = Array.isArray(payload.flowIssues) ? payload.flowIssues : [];
449
+ const regressions = Array.isArray(payload.regressions) ? payload.regressions : [];
450
+ const scopeFiles = scopeHintsFromPayload(payload);
451
+ const planId = typeof payload.planId === 'string' ? payload.planId : null;
452
+ const verificationSource = typeof payload.verificationSource === 'string' ? payload.verificationSource : undefined;
453
+ const envelope = buildGovernanceVerificationEnvelope({
454
+ structuralViolations,
455
+ policyViolations,
456
+ intentIssues,
457
+ flowIssues,
458
+ regressions,
459
+ scopeFiles,
460
+ provenance: {
461
+ planId,
462
+ verificationSource,
463
+ generatedAt: new Date().toISOString(),
464
+ },
465
+ });
466
+ return {
467
+ ...payload,
468
+ governanceVerification: envelope,
469
+ governanceFindings: envelope.findings,
470
+ };
471
+ }
472
+ function evaluateGovernanceReplayIntegrity(input) {
473
+ const missingArtifacts = [];
474
+ const provenanceMismatches = [];
475
+ const graphMismatches = [];
476
+ const semanticTruncationMismatches = [];
477
+ const notes = [];
478
+ const driftReasons = new Set();
479
+ const ev = input.evidencePayload.governanceVerification;
480
+ const rec = input.reconstructedPayload?.governanceVerification;
481
+ if (!ev && !rec) {
482
+ notes.push('No canonical governance envelope present on evidence or reconstruction.');
483
+ return {
484
+ status: 'bounded-degradation',
485
+ missingArtifacts,
486
+ provenanceMismatches,
487
+ graphMismatches,
488
+ semanticTruncationMismatches,
489
+ notes,
490
+ driftReasons: [],
491
+ };
492
+ }
493
+ if (ev && !rec) {
494
+ missingArtifacts.push('governanceVerification missing from reconstructed payload');
495
+ }
496
+ else if (ev && rec) {
497
+ // ── 1. Schema version ──────────────────────────────────────────────────────
498
+ if (ev.schemaVersion !== rec.schemaVersion) {
499
+ provenanceMismatches.push(`schemaVersion drift: evidence=${ev.schemaVersion} replay=${rec.schemaVersion}`);
500
+ driftReasons.add('provenance-drift');
501
+ }
502
+ // ── 2. Finding count equality ──────────────────────────────────────────────
503
+ if (ev.findings.length !== rec.findings.length) {
504
+ provenanceMismatches.push(`findings count drift: evidence=${ev.findings.length} replay=${rec.findings.length}`);
505
+ }
506
+ // ── 3. Missing / extra findings ────────────────────────────────────────────
507
+ const evById = new Map(ev.findings.map(f => [f.id, f]));
508
+ const recById = new Map(rec.findings.map(f => [f.id, f]));
509
+ for (const [id] of evById) {
510
+ if (!recById.has(id)) {
511
+ graphMismatches.push(`missing-finding in replay: ${id}`);
512
+ driftReasons.add('missing-finding');
513
+ }
514
+ }
515
+ for (const [id] of recById) {
516
+ if (!evById.has(id)) {
517
+ graphMismatches.push(`extra-finding in replay: ${id}`);
518
+ driftReasons.add('extra-finding');
519
+ }
520
+ }
521
+ // ── 4. Per-finding semantic equality (severity, determinism, provenance, suppression) ──
522
+ for (const [id, evF] of evById) {
523
+ const recF = recById.get(id);
524
+ if (!recF)
525
+ continue; // already reported as missing above
526
+ if (evF.severity !== recF.severity) {
527
+ graphMismatches.push(`severity-drift on ${id}: evidence=${evF.severity} replay=${recF.severity}`);
528
+ driftReasons.add('severity-drift');
529
+ }
530
+ if (evF.determinismClassification !== recF.determinismClassification) {
531
+ graphMismatches.push(`determinism-drift on ${id}: ` +
532
+ `evidence=${evF.determinismClassification} replay=${recF.determinismClassification}`);
533
+ driftReasons.add('determinism-drift');
534
+ }
535
+ // Provenance: compare planId if present
536
+ const evProv = evF.provenanceMetadata;
537
+ const recProv = recF.provenanceMetadata;
538
+ if (evProv && recProv) {
539
+ if (evProv.planId !== recProv.planId) {
540
+ provenanceMismatches.push(`provenance planId drift on ${id}: evidence=${evProv.planId} replay=${recProv.planId}`);
541
+ driftReasons.add('provenance-drift');
542
+ }
543
+ }
544
+ else if (evProv && !recProv) {
545
+ provenanceMismatches.push(`provenance-drift on ${id}: evidence has provenanceMetadata, replay does not`);
546
+ driftReasons.add('provenance-drift');
547
+ }
548
+ // Structural policyRef: compare via structuralMetadata
549
+ const evSM = evF.structuralMetadata;
550
+ const recSM = recF.structuralMetadata;
551
+ if (evSM && recSM && evSM.policyRef !== recSM.policyRef) {
552
+ provenanceMismatches.push(`policyRef drift on ${id}: evidence=${evSM.policyRef} replay=${recSM.policyRef}`);
553
+ driftReasons.add('provenance-drift');
554
+ }
555
+ // Suppression: compare suppressionMetadata presence
556
+ const evSupp = evF.suppressionMetadata;
557
+ const recSupp = recF.suppressionMetadata;
558
+ if (Boolean(evSupp) !== Boolean(recSupp)) {
559
+ graphMismatches.push(`suppression-drift on ${id}: ` +
560
+ `evidence ${evSupp ? 'suppressed' : 'not-suppressed'} vs ` +
561
+ `replay ${recSupp ? 'suppressed' : 'not-suppressed'}`);
562
+ driftReasons.add('suppression-drift');
563
+ }
564
+ }
565
+ // ── 5. Canonical ordering equality ────────────────────────────────────────
566
+ // Both arrays should be in canonical order. Compare the ordered ID sequences.
567
+ const evOrderedIds = ev.findings.map(f => f.id).join('\x00');
568
+ const recOrderedIds = rec.findings.map(f => f.id).join('\x00');
569
+ if (evOrderedIds !== recOrderedIds && ev.findings.length === rec.findings.length) {
570
+ graphMismatches.push('finding-order-drift: canonical ordering differs between evidence and replay');
571
+ driftReasons.add('finding-order-drift');
572
+ }
573
+ // ── 6. Checksum equality ───────────────────────────────────────────────────
574
+ if (ev.replayChecksum && rec.replayChecksum) {
575
+ if (ev.replayChecksum !== rec.replayChecksum) {
576
+ const comparison = (0, canonical_invariants_1.compareForReplayEquivalence)(ev.findings, rec.findings);
577
+ graphMismatches.push(`checksum-drift: evidence=${ev.replayChecksum.slice(0, 16)} ` +
578
+ `replay=${rec.replayChecksum.slice(0, 16)}` +
579
+ (comparison.driftDetails ? ` (${comparison.driftDetails})` : ''));
580
+ driftReasons.add('checksum-drift');
581
+ }
582
+ }
583
+ else if (ev.replayChecksum && !rec.replayChecksum) {
584
+ notes.push('Replay envelope missing replayChecksum (older CLI version); falling back to per-field comparison.');
585
+ }
586
+ }
587
+ const trunc = input.evidencePayload.semanticTruncation
588
+ ?? input.reconstructedPayload?.semanticTruncation;
589
+ if (trunc === true) {
590
+ semanticTruncationMismatches.push('Semantic or index truncation flagged on payload');
591
+ }
592
+ const hasDrift = driftReasons.size > 0 && (driftReasons.has('checksum-drift') ||
593
+ driftReasons.has('severity-drift') ||
594
+ driftReasons.has('determinism-drift') ||
595
+ driftReasons.has('finding-order-drift') ||
596
+ driftReasons.has('missing-finding') ||
597
+ driftReasons.has('extra-finding'));
598
+ const status = hasDrift
599
+ ? 'drift-detected'
600
+ : missingArtifacts.length === 0
601
+ && provenanceMismatches.length === 0
602
+ && graphMismatches.length === 0
603
+ && semanticTruncationMismatches.length === 0
604
+ ? 'exact'
605
+ : 'bounded-degradation';
606
+ return {
607
+ status,
608
+ missingArtifacts,
609
+ provenanceMismatches,
610
+ graphMismatches,
611
+ semanticTruncationMismatches,
612
+ notes,
613
+ driftReasons: [...driftReasons].sort(),
614
+ };
615
+ }
616
+ //# sourceMappingURL=canonical-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-pipeline.js","sourceRoot":"","sources":["../../src/governance/canonical-pipeline.ts"],"names":[],"mappings":";;AAmCA,8DAEC;AAgCD,sDAkCC;AAED,0DAyBC;AAED,wDAgBC;AAED,oDAeC;AAED,sDAcC;AAED,4CAcC;AAED,0EAcC;AA+ID,kFAqFC;AA0DD,8DAiCC;AAED,8EA0KC;AAhsBD,mCAAoC;AASpC,sDAA4E;AAM5E,iEAIgC;AAChC,6DAG8B;AAE9B,SAAS,eAAe,CAAC,KAAe;IACtC,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,UAA2B;IACnE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,eAAe,CAAC,CAA4B;IACnD,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,0BAA0B;YAC7B,OAAO,CAAC,CAAC;QACX,KAAK,wBAAwB;YAC3B,OAAO,CAAC,CAAC;QACX,KAAK,oBAAoB;YACvB,OAAO,CAAC,CAAC;QACX,KAAK,uBAAuB;YAC1B,OAAO,CAAC,CAAC;QACX;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,CAA4B,EAAE,CAA4B;IACzF,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,wBAAwB,CAAC,CAAsB;IACtD,IAAI,CAAC,CAAC,WAAW,KAAK,oBAAoB;QAAE,OAAO,oBAAoB,CAAC;IACxE,IAAI,CAAC,CAAC,WAAW,KAAK,wBAAwB;QAAE,OAAO,wBAAwB,CAAC;IAChF,IAAI,CAAC,CAAC,WAAW,KAAK,uBAAuB;QAAE,OAAO,uBAAuB,CAAC;IAC9E,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAsB;IACnD,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7D,CAAC;AAED,SAAgB,qBAAqB,CAAC,CAAsB;IAC1D,MAAM,yBAAyB,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,YAAY;QACZ,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,QAAQ;QACV,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACd,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAChB,CAAC,CAAC,QAAQ;KACX,CAAC,CAAC;IACH,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,kBAAkB;QAChC,yBAAyB;QACzB,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC;QAClC,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE;QACpC,QAAQ,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,cAAc,EAAE,CAAC,CAAC,MAAM;SACzB;QACD,sBAAsB,EAAE,CAAC,CAAC,eAAe;QACzC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,kBAAkB,EAAE;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,CAAgB;IACtD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;IACjC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;IAChC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;IACxC,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,eAAe;QACzB,YAAY,EAAE,eAAe;QAC7B,yBAAyB,EAAE,oBAAoB;QAC/C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;QAC5C,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAClC,KAAK,EAAE,YAAY,IAAI,EAAE;QACzB,QAAQ,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;YAC1B,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB;QACD,sBAAsB,EACpB,QAAQ;YACN,CAAC,CAAC,+GAA+G;YACjH,CAAC,CAAC,uCAAuC;QAC7C,WAAW,EAAE,6FAA6F;KAC3G,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CAAC,CAAc;IACnD,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC;IAC/C,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,oBAAoB;QAC9B,YAAY,EAAE,eAAe;QAC7B,yBAAyB,EAAE,wBAAwB;QACnD,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;QACzD,UAAU,EAAE,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAC/C,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE;QAC3B,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,sBAAsB,EACpB,8GAA8G;QAChH,WAAW,EAAE,mEAAmE;KACjF,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,CAAY;IAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC;IAC7C,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,mBAAmB;QAC7B,YAAY,EAAE,eAAe;QAC7B,yBAAyB,EAAE,wBAAwB;QACnD,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;QACzD,UAAU,EAAE,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAC/C,KAAK,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;QACzB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,sBAAsB,EAAE,8FAA8F;QACtH,WAAW,EAAE,mFAAmF;KACjG,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,CAAkB;IACtD,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,eAAe;QAC7B,yBAAyB,EAAE,wBAAwB;QACnD,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,GAAG;QACf,KAAK,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE;QAC/B,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE;QACjE,sBAAsB,EAAE,gFAAgF;QACxG,WAAW,EAAE,2EAA2E;KACzF,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY,EAAE,OAAe;IAC5D,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,eAAe;QAC7B,yBAAyB,EAAE,wBAAwB;QACnD,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9C,sBAAsB,EAAE,kEAAkE;QAC1F,WAAW,EAAE,uEAAuE;KACrF,CAAC;AACJ,CAAC;AAED,SAAgB,+BAA+B,CAAC,OAAe,EAAE,QAAgB;IAC/E,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,OAAO;QACL,EAAE;QACF,QAAQ,EAAE,uBAAuB;QACjC,YAAY,EAAE,oBAAoB;QAClC,yBAAyB,EAAE,wBAAwB;QACnD,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,GAAG;QACf,KAAK,EAAE,0BAA0B;QACjC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAClD,sBAAsB,EAAE,6FAA6F;QACrH,WAAW,EAAE,sFAAsF;KACpG,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAA0B;IACtD,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC,WAAW,EAAE,CAAC;IAChF,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/E,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrF,OAAO,6BAA6B,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACjF,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IACD,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAED,SAAS,kBAAkB,CAAC,QAA6B;IAIvD,6EAA6E;IAC7E,0DAA0D;IAC1D,yEAAyE;IACzE,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,YAAY,KAAK,kBAAkB,IAAI,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;YAC1E,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;YACxG,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACvD,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,8EAA8E;QAC9E,IAAI,CAAC,CAAC,YAAY,KAAK,eAAe,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9G,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,MAAM,EAAE,CAAC;gBACzF,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,OAAO,EAAE,CAAC;oBACZ,sEAAsE;oBACtE,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;oBACnE,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;oBAC1D,cAAc,EAAE,CAAC;oBACjB,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC;QACvB,MAAM,OAAO,GAAG,CAAC,CAAC,kBAAkB,EAAE,MAAM,IAAI,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACzC,sEAAsE;QACtE,2EAA2E;QAC3E,MAAM,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,OAAO,OAAO,QAAQ,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAC,YAAY,KAAK,kBAAkB,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM;gBAAE,OAAO,CAAC,CAAC;YACrF,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAC9G,OAAO,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QAED,cAAc,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChG,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACtC,yBAAyB,EAAE,GAAG;gBAC9B,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,EAAE;gBACzC,sBAAsB,EAAE,GAAG,OAAO,CAAC,sBAAsB,MAAM,IAAI,CAAC,sBAAsB,EAAE;gBAC5F,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,MAAM,IAAI,CAAC,WAAW,EAAE;gBAC3D,UAAU;gBACV,QAAQ,EAAE;oBACR,GAAG,OAAO,CAAC,QAAQ;oBACnB,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,UAAU,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;iBACtE;aACF,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,oBAAoB,CAAC,QAA6B,EAAE,QAAQ,GAAG,EAAE;IACxE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACpC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/F,KAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,KAAK,KAAK,cAAc,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,yBAAyB,CAAC;QACxC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC;QACtC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,QAAQ,gDAAgD,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,mCAAmC,CACjD,KASC;IAED,MAAM,GAAG,GAAwB,EAAE,CAAC;IAEpC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,gFAAgF;IAChF,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACzF,KAAK,MAAM,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,2BAA2B,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,qFAAqF;IAGrF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAEtE,+EAA+E;IAC/E,sEAAsE;IACtE,4DAA4D;IAC5D,MAAM,MAAM,GAAG,IAAA,gDAA2B,EAAC,SAAS,CAAC,CAAC;IAEtD,sEAAsE;IACtE,gEAAgE;IAChE,IAAA,2CAAsB,EAAC,MAAM,EAAE,qCAAqC,CAAC,CAAC;IAEtE,0EAA0E;IAC1E,6CAA6C;IAC7C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;YAC9C,CAAC,CAAC,kBAAkB,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACjD,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,wEAAwE;IACxE,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,CAAE,CAAkD,CAAC,UAAU,KAAK,IAAI,CAC7E,CAAC,MAAM,CAAC;IAET,2FAA2F;IAC3F,+EAA+E;IAC/E,MAAM,cAAc,GAAG,IAAA,sDAA+B,EAAC,MAAM,CAAC,CAAC;IAE/D,gFAAgF;IAChF,IAAA,mDAA4B,EAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,EAAE,qCAAqC,CAAC,CAAC;IAElG,OAAO;QACL,aAAa,EAAE,8CAAkC;QACjD,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,QAAQ,EAAE,MAAM;QAChB,wBAAwB,EAAE,cAAc;QACxC,wBAAwB,EAAE,cAAc;QACxC,sBAAsB,EAAE,eAAe;QACvC,cAAc;QACd,eAAe,EAAE,oBAAoB,CAAC,MAAM,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAY;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,GAA4B,CAAC;AACtC,CAAC;AAED,SAAS,qCAAqC,CAAC,OAAgC;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QACvE,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/G,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACtF,MAAM,QAAQ,GAAG,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACrG,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,IAAI,GACR,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAC1B,CAAC,CAAC,GAAG,CAAC,IAAI;YACV,CAAC,CAAC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;gBACjC,CAAC,CAAC,GAAG,CAAC,SAAS;gBACf,CAAC,CAAC,SAAS,CAAC;QAClB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgC;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,MAAM,GAAG,GAA8C,EAAE,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7D,MAAM,GAAG,GAAG,IAA+B,CAAC;gBAC5C,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACjC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,OAAgC;IACxE,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClF,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnG,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,YAA8B,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,UAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,WAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzG,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,kBAAkB,GACtB,OAAO,OAAO,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1F,MAAM,QAAQ,GAAG,mCAAmC,CAAC;QACnD,oBAAoB;QACpB,gBAAgB;QAChB,YAAY;QACZ,UAAU;QACV,WAAW;QACX,UAAU;QACV,UAAU,EAAE;YACV,MAAM;YACN,kBAAkB;YAClB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,OAAO;QACV,sBAAsB,EAAE,QAAQ;QAChC,kBAAkB,EAAE,QAAQ,CAAC,QAAQ;KACtC,CAAC;AACJ,CAAC;AAED,SAAgB,iCAAiC,CAAC,KAGjD;IACC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAC1C,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,4BAA4B,GAAa,EAAE,CAAC;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;IAE3D,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,sBAAoE,CAAC;IACtG,MAAM,GAAG,GAAG,KAAK,CAAC,oBAAoB,EAAE,sBAAoE,CAAC;IAE7G,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACtF,OAAO;YACL,MAAM,EAAE,qBAAqB;YAC7B,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,4BAA4B;YAC5B,KAAK;YACL,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,gBAAgB,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACrF,CAAC;SAAM,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,8EAA8E;QAC9E,IAAI,EAAE,CAAC,aAAa,KAAK,GAAG,CAAC,aAAa,EAAE,CAAC;YAC3C,oBAAoB,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,aAAa,WAAW,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;YAC3G,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACvC,CAAC;QAED,8EAA8E;QAC9E,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/C,oBAAoB,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC,QAAQ,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAClH,CAAC;QAED,8EAA8E;QAC9E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1D,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrB,eAAe,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;gBACzD,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,eAAe,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;gBACvD,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,0FAA0F;QAC1F,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI;gBAAE,SAAS,CAAC,oCAAoC;YAEzD,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,eAAe,CAAC,IAAI,CAAC,qBAAqB,EAAE,cAAc,GAAG,CAAC,QAAQ,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,GAAG,CAAC,yBAAyB,KAAK,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACrE,eAAe,CAAC,IAAI,CAClB,wBAAwB,EAAE,IAAI;oBAC9B,YAAY,GAAG,CAAC,yBAAyB,WAAW,IAAI,CAAC,yBAAyB,EAAE,CACrF,CAAC;gBACF,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACxC,CAAC;YAED,wCAAwC;YACxC,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACxC,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;oBACrC,oBAAoB,CAAC,IAAI,CAAC,8BAA8B,EAAE,cAAc,MAAM,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBAClH,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC9B,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,EAAE,oDAAoD,CAAC,CAAC;gBACzG,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACvC,CAAC;YAED,uDAAuD;YACvD,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACtC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;gBACxD,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,EAAE,cAAc,IAAI,CAAC,SAAS,WAAW,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC5G,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACvC,CAAC;YAED,oDAAoD;YACpD,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC;YACzC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,eAAe,CAAC,IAAI,CAClB,wBAAwB,EAAE,IAAI;oBAC9B,YAAY,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,MAAM;oBAC1D,UAAU,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,EAAE,CACtD,CAAC;gBACF,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,6EAA6E;QAC7E,8EAA8E;QAC9E,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,YAAY,KAAK,aAAa,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACjF,eAAe,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;YACpG,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC1C,CAAC;QAED,8EAA8E;QAC9E,IAAI,EAAE,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,EAAE,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc,EAAE,CAAC;gBAC7C,MAAM,UAAU,GAAG,IAAA,kDAA2B,EAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC1E,eAAe,CAAC,IAAI,CAClB,4BAA4B,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;oBAC7D,UAAU,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;oBAC3C,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACjE,CAAC;gBACF,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;QAClH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GACR,KAAK,CAAC,eAAe,CAAC,kBAA0C;WAC7D,KAAK,CAAC,oBAAoB,EAAE,kBAA0C,CAAC;IAC7E,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,4BAA4B,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,CACxC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAClC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAClC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACrC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACvC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACnC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAClC,CAAC;IAEF,MAAM,MAAM,GACV,QAAQ;QACN,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;eAC1B,oBAAoB,CAAC,MAAM,KAAK,CAAC;eACjC,eAAe,CAAC,MAAM,KAAK,CAAC;eAC5B,4BAA4B,CAAC,MAAM,KAAK,CAAC;YAC1C,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,qBAAqB,CAAC;IAEhC,OAAO;QACL,MAAM;QACN,gBAAgB;QAChB,oBAAoB;QACpB,eAAe;QACf,4BAA4B;QAC5B,KAAK;QACL,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE;KACvC,CAAC;AACJ,CAAC"}