vaspera 2.8.0 → 2.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/CHANGELOG.md +109 -7
  2. package/README.md +111 -7
  3. package/dist/__tests__/agents/adversary/tactics/api.test.d.ts +5 -0
  4. package/dist/__tests__/agents/adversary/tactics/api.test.d.ts.map +1 -0
  5. package/dist/__tests__/agents/adversary/tactics/api.test.js +369 -0
  6. package/dist/__tests__/agents/adversary/tactics/api.test.js.map +1 -0
  7. package/dist/__tests__/agents/adversary/tactics/llm.test.d.ts +5 -0
  8. package/dist/__tests__/agents/adversary/tactics/llm.test.d.ts.map +1 -0
  9. package/dist/__tests__/agents/adversary/tactics/llm.test.js +409 -0
  10. package/dist/__tests__/agents/adversary/tactics/llm.test.js.map +1 -0
  11. package/dist/__tests__/agents/adversary/tactics/registry.test.d.ts +7 -0
  12. package/dist/__tests__/agents/adversary/tactics/registry.test.d.ts.map +1 -0
  13. package/dist/__tests__/agents/adversary/tactics/registry.test.js +74 -0
  14. package/dist/__tests__/agents/adversary/tactics/registry.test.js.map +1 -0
  15. package/dist/__tests__/agents/adversary/tactics/web-app.test.d.ts +7 -0
  16. package/dist/__tests__/agents/adversary/tactics/web-app.test.d.ts.map +1 -0
  17. package/dist/__tests__/agents/adversary/tactics/web-app.test.js +374 -0
  18. package/dist/__tests__/agents/adversary/tactics/web-app.test.js.map +1 -0
  19. package/dist/__tests__/compliance-bundle.test.d.ts +9 -0
  20. package/dist/__tests__/compliance-bundle.test.d.ts.map +1 -0
  21. package/dist/__tests__/compliance-bundle.test.js +344 -0
  22. package/dist/__tests__/compliance-bundle.test.js.map +1 -0
  23. package/dist/__tests__/healthcare-compliance.test.d.ts +9 -0
  24. package/dist/__tests__/healthcare-compliance.test.d.ts.map +1 -0
  25. package/dist/__tests__/healthcare-compliance.test.js +233 -0
  26. package/dist/__tests__/healthcare-compliance.test.js.map +1 -0
  27. package/dist/action/diff-mode.d.ts +124 -8
  28. package/dist/action/diff-mode.d.ts.map +1 -1
  29. package/dist/action/diff-mode.js +384 -65
  30. package/dist/action/diff-mode.js.map +1 -1
  31. package/dist/action/diff-mode.test.js +3 -3
  32. package/dist/action/diff-mode.test.js.map +1 -1
  33. package/dist/action/pr-comment.test.js +1 -0
  34. package/dist/action/pr-comment.test.js.map +1 -1
  35. package/dist/action/sarif-upload.test.js +1 -0
  36. package/dist/action/sarif-upload.test.js.map +1 -1
  37. package/dist/agents/adversary/config.d.ts +25 -4
  38. package/dist/agents/adversary/config.d.ts.map +1 -1
  39. package/dist/agents/adversary/config.js +38 -8
  40. package/dist/agents/adversary/config.js.map +1 -1
  41. package/dist/agents/adversary/index.d.ts +7 -0
  42. package/dist/agents/adversary/index.d.ts.map +1 -1
  43. package/dist/agents/adversary/index.js +83 -1
  44. package/dist/agents/adversary/index.js.map +1 -1
  45. package/dist/agents/adversary/reporting/compliance-mapper.d.ts +108 -0
  46. package/dist/agents/adversary/reporting/compliance-mapper.d.ts.map +1 -0
  47. package/dist/agents/adversary/reporting/compliance-mapper.js +391 -0
  48. package/dist/agents/adversary/reporting/compliance-mapper.js.map +1 -0
  49. package/dist/agents/adversary/reporting/index.d.ts +10 -0
  50. package/dist/agents/adversary/reporting/index.d.ts.map +1 -0
  51. package/dist/agents/adversary/reporting/index.js +10 -0
  52. package/dist/agents/adversary/reporting/index.js.map +1 -0
  53. package/dist/agents/adversary/reporting/poc-generator.d.ts +44 -0
  54. package/dist/agents/adversary/reporting/poc-generator.d.ts.map +1 -0
  55. package/dist/agents/adversary/reporting/poc-generator.js +308 -0
  56. package/dist/agents/adversary/reporting/poc-generator.js.map +1 -0
  57. package/dist/agents/adversary/tactics/api.d.ts +13 -0
  58. package/dist/agents/adversary/tactics/api.d.ts.map +1 -0
  59. package/dist/agents/adversary/tactics/api.js +815 -0
  60. package/dist/agents/adversary/tactics/api.js.map +1 -0
  61. package/dist/agents/adversary/tactics/auth.d.ts +13 -0
  62. package/dist/agents/adversary/tactics/auth.d.ts.map +1 -0
  63. package/dist/agents/adversary/tactics/auth.js +676 -0
  64. package/dist/agents/adversary/tactics/auth.js.map +1 -0
  65. package/dist/agents/adversary/tactics/index.d.ts +129 -0
  66. package/dist/agents/adversary/tactics/index.d.ts.map +1 -0
  67. package/dist/agents/adversary/tactics/index.js +199 -0
  68. package/dist/agents/adversary/tactics/index.js.map +1 -0
  69. package/dist/agents/adversary/tactics/infra.d.ts +13 -0
  70. package/dist/agents/adversary/tactics/infra.d.ts.map +1 -0
  71. package/dist/agents/adversary/tactics/infra.js +827 -0
  72. package/dist/agents/adversary/tactics/infra.js.map +1 -0
  73. package/dist/agents/adversary/tactics/injection.d.ts +12 -0
  74. package/dist/agents/adversary/tactics/injection.d.ts.map +1 -0
  75. package/dist/agents/adversary/tactics/injection.js +549 -0
  76. package/dist/agents/adversary/tactics/injection.js.map +1 -0
  77. package/dist/agents/adversary/tactics/llm.d.ts +13 -0
  78. package/dist/agents/adversary/tactics/llm.d.ts.map +1 -0
  79. package/dist/agents/adversary/tactics/llm.js +767 -0
  80. package/dist/agents/adversary/tactics/llm.js.map +1 -0
  81. package/dist/agents/adversary/tactics/web-app.d.ts +13 -0
  82. package/dist/agents/adversary/tactics/web-app.d.ts.map +1 -0
  83. package/dist/agents/adversary/tactics/web-app.js +717 -0
  84. package/dist/agents/adversary/tactics/web-app.js.map +1 -0
  85. package/dist/agents/adversary/types.d.ts +66 -10
  86. package/dist/agents/adversary/types.d.ts.map +1 -1
  87. package/dist/agents/zero-day-hunter.d.ts +1 -1
  88. package/dist/agents/zero-day-hunter.d.ts.map +1 -1
  89. package/dist/analysis/data-flow.d.ts +154 -0
  90. package/dist/analysis/data-flow.d.ts.map +1 -0
  91. package/dist/analysis/data-flow.js +393 -0
  92. package/dist/analysis/data-flow.js.map +1 -0
  93. package/dist/analysis/index.d.ts +9 -0
  94. package/dist/analysis/index.d.ts.map +1 -0
  95. package/dist/analysis/index.js +9 -0
  96. package/dist/analysis/index.js.map +1 -0
  97. package/dist/badge-service/index.d.ts +144 -0
  98. package/dist/badge-service/index.d.ts.map +1 -0
  99. package/dist/badge-service/index.js +206 -0
  100. package/dist/badge-service/index.js.map +1 -0
  101. package/dist/certification/types.d.ts +1 -1
  102. package/dist/certification/types.d.ts.map +1 -1
  103. package/dist/certification/types.js.map +1 -1
  104. package/dist/commands/certification/certify.d.ts.map +1 -1
  105. package/dist/commands/certification/certify.js +18 -4
  106. package/dist/commands/certification/certify.js.map +1 -1
  107. package/dist/compliance/attestation.d.ts +39 -0
  108. package/dist/compliance/attestation.d.ts.map +1 -0
  109. package/dist/compliance/attestation.js +364 -0
  110. package/dist/compliance/attestation.js.map +1 -0
  111. package/dist/compliance/cfr42-part2.d.ts +42 -0
  112. package/dist/compliance/cfr42-part2.d.ts.map +1 -0
  113. package/dist/compliance/cfr42-part2.js +408 -0
  114. package/dist/compliance/cfr42-part2.js.map +1 -0
  115. package/dist/compliance/compliance-bundle.d.ts +100 -0
  116. package/dist/compliance/compliance-bundle.d.ts.map +1 -0
  117. package/dist/compliance/compliance-bundle.js +210 -0
  118. package/dist/compliance/compliance-bundle.js.map +1 -0
  119. package/dist/compliance/healthcare-bundle.d.ts +68 -0
  120. package/dist/compliance/healthcare-bundle.d.ts.map +1 -0
  121. package/dist/compliance/healthcare-bundle.js +104 -0
  122. package/dist/compliance/healthcare-bundle.js.map +1 -0
  123. package/dist/compliance/hipaa.d.ts.map +1 -1
  124. package/dist/compliance/hipaa.js +14 -11
  125. package/dist/compliance/hipaa.js.map +1 -1
  126. package/dist/compliance/index.d.ts +10 -2
  127. package/dist/compliance/index.d.ts.map +1 -1
  128. package/dist/compliance/index.js +9 -3
  129. package/dist/compliance/index.js.map +1 -1
  130. package/dist/compliance/mapper.d.ts.map +1 -1
  131. package/dist/compliance/mapper.js +3 -17
  132. package/dist/compliance/mapper.js.map +1 -1
  133. package/dist/compliance/nist-800-53.d.ts +22 -6
  134. package/dist/compliance/nist-800-53.d.ts.map +1 -1
  135. package/dist/compliance/nist-800-53.js +264 -272
  136. package/dist/compliance/nist-800-53.js.map +1 -1
  137. package/dist/compliance/report.d.ts +31 -2
  138. package/dist/compliance/report.d.ts.map +1 -1
  139. package/dist/compliance/report.js +255 -4
  140. package/dist/compliance/report.js.map +1 -1
  141. package/dist/compliance/types.d.ts +1 -1
  142. package/dist/compliance/types.d.ts.map +1 -1
  143. package/dist/config/flags.d.ts +12 -12
  144. package/dist/cost/index.d.ts +1 -1
  145. package/dist/cost/index.d.ts.map +1 -1
  146. package/dist/cost/index.js +1 -1
  147. package/dist/cost/index.js.map +1 -1
  148. package/dist/cost/tracker.d.ts +64 -0
  149. package/dist/cost/tracker.d.ts.map +1 -1
  150. package/dist/cost/tracker.js +165 -0
  151. package/dist/cost/tracker.js.map +1 -1
  152. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts +28 -0
  153. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts.map +1 -0
  154. package/dist/eval/fixtures/healthcare/audit-gaps.js +90 -0
  155. package/dist/eval/fixtures/healthcare/audit-gaps.js.map +1 -0
  156. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts +31 -0
  157. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts.map +1 -0
  158. package/dist/eval/fixtures/healthcare/consent-bypass.js +61 -0
  159. package/dist/eval/fixtures/healthcare/consent-bypass.js.map +1 -0
  160. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts +24 -0
  161. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts.map +1 -0
  162. package/dist/eval/fixtures/healthcare/phi-in-logs.js +41 -0
  163. package/dist/eval/fixtures/healthcare/phi-in-logs.js.map +1 -0
  164. package/dist/evidence/collector.d.ts +21 -0
  165. package/dist/evidence/collector.d.ts.map +1 -0
  166. package/dist/evidence/collector.js +340 -0
  167. package/dist/evidence/collector.js.map +1 -0
  168. package/dist/evidence/index.d.ts +11 -0
  169. package/dist/evidence/index.d.ts.map +1 -0
  170. package/dist/evidence/index.js +12 -0
  171. package/dist/evidence/index.js.map +1 -0
  172. package/dist/evidence/store.d.ts +39 -0
  173. package/dist/evidence/store.d.ts.map +1 -0
  174. package/dist/evidence/store.js +173 -0
  175. package/dist/evidence/store.js.map +1 -0
  176. package/dist/evidence/types.d.ts +175 -0
  177. package/dist/evidence/types.d.ts.map +1 -0
  178. package/dist/evidence/types.js +9 -0
  179. package/dist/evidence/types.js.map +1 -0
  180. package/dist/exporters/checkmarx.d.ts +18 -0
  181. package/dist/exporters/checkmarx.d.ts.map +1 -0
  182. package/dist/exporters/checkmarx.js +203 -0
  183. package/dist/exporters/checkmarx.js.map +1 -0
  184. package/dist/exporters/index.d.ts +22 -0
  185. package/dist/exporters/index.d.ts.map +1 -0
  186. package/dist/exporters/index.js +41 -0
  187. package/dist/exporters/index.js.map +1 -0
  188. package/dist/exporters/snyk.d.ts +18 -0
  189. package/dist/exporters/snyk.d.ts.map +1 -0
  190. package/dist/exporters/snyk.js +119 -0
  191. package/dist/exporters/snyk.js.map +1 -0
  192. package/dist/exporters/sonarqube.d.ts +18 -0
  193. package/dist/exporters/sonarqube.d.ts.map +1 -0
  194. package/dist/exporters/sonarqube.js +125 -0
  195. package/dist/exporters/sonarqube.js.map +1 -0
  196. package/dist/exporters/types.d.ts +190 -0
  197. package/dist/exporters/types.d.ts.map +1 -0
  198. package/dist/exporters/types.js +9 -0
  199. package/dist/exporters/types.js.map +1 -0
  200. package/dist/frontier/index.d.ts +12 -0
  201. package/dist/frontier/index.d.ts.map +1 -0
  202. package/dist/frontier/index.js +12 -0
  203. package/dist/frontier/index.js.map +1 -0
  204. package/dist/frontier/orchestrator.d.ts +73 -0
  205. package/dist/frontier/orchestrator.d.ts.map +1 -0
  206. package/dist/frontier/orchestrator.js +312 -0
  207. package/dist/frontier/orchestrator.js.map +1 -0
  208. package/dist/frontier/providers/stub.d.ts +32 -0
  209. package/dist/frontier/providers/stub.d.ts.map +1 -0
  210. package/dist/frontier/providers/stub.js +66 -0
  211. package/dist/frontier/providers/stub.js.map +1 -0
  212. package/dist/frontier/types.d.ts +318 -0
  213. package/dist/frontier/types.d.ts.map +1 -0
  214. package/dist/frontier/types.js +27 -0
  215. package/dist/frontier/types.js.map +1 -0
  216. package/dist/history/index.d.ts +13 -0
  217. package/dist/history/index.d.ts.map +1 -0
  218. package/dist/history/index.js +15 -0
  219. package/dist/history/index.js.map +1 -0
  220. package/dist/history/store.d.ts +74 -0
  221. package/dist/history/store.d.ts.map +1 -0
  222. package/dist/history/store.js +399 -0
  223. package/dist/history/store.js.map +1 -0
  224. package/dist/history/types.d.ts +282 -0
  225. package/dist/history/types.d.ts.map +1 -0
  226. package/dist/history/types.js +41 -0
  227. package/dist/history/types.js.map +1 -0
  228. package/dist/history/verify.d.ts +44 -0
  229. package/dist/history/verify.d.ts.map +1 -0
  230. package/dist/history/verify.js +230 -0
  231. package/dist/history/verify.js.map +1 -0
  232. package/dist/index.d.ts.map +1 -1
  233. package/dist/index.js +515 -19
  234. package/dist/index.js.map +1 -1
  235. package/dist/multimodel/index.d.ts +1 -0
  236. package/dist/multimodel/index.d.ts.map +1 -1
  237. package/dist/multimodel/index.js +2 -0
  238. package/dist/multimodel/index.js.map +1 -1
  239. package/dist/multimodel/leaderboard.d.ts +116 -0
  240. package/dist/multimodel/leaderboard.d.ts.map +1 -0
  241. package/dist/multimodel/leaderboard.js +262 -0
  242. package/dist/multimodel/leaderboard.js.map +1 -0
  243. package/dist/observability/otel.d.ts.map +1 -1
  244. package/dist/observability/otel.js +1 -3
  245. package/dist/observability/otel.js.map +1 -1
  246. package/dist/plugins/loader.js +1 -1
  247. package/dist/plugins/loader.js.map +1 -1
  248. package/dist/scanners/agent/agent-chain-analysis.d.ts +152 -0
  249. package/dist/scanners/agent/agent-chain-analysis.d.ts.map +1 -0
  250. package/dist/scanners/agent/agent-chain-analysis.js +438 -0
  251. package/dist/scanners/agent/agent-chain-analysis.js.map +1 -0
  252. package/dist/scanners/agent/payloads/index.d.ts +2 -1
  253. package/dist/scanners/agent/payloads/index.d.ts.map +1 -1
  254. package/dist/scanners/agent/payloads/index.js +25 -6
  255. package/dist/scanners/agent/payloads/index.js.map +1 -1
  256. package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -1
  257. package/dist/scanners/agent/prompt-injection-fuzzer.js +14 -0
  258. package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -1
  259. package/dist/scanners/agent/types.d.ts +5 -5
  260. package/dist/scanners/agent/types.d.ts.map +1 -1
  261. package/dist/scanners/agent/types.js.map +1 -1
  262. package/dist/scanners/cache.d.ts +156 -0
  263. package/dist/scanners/cache.d.ts.map +1 -0
  264. package/dist/scanners/cache.js +462 -0
  265. package/dist/scanners/cache.js.map +1 -0
  266. package/dist/scanners/dependencies.js +4 -4
  267. package/dist/scanners/dependencies.js.map +1 -1
  268. package/dist/scanners/gosec.d.ts.map +1 -1
  269. package/dist/scanners/gosec.js +47 -9
  270. package/dist/scanners/gosec.js.map +1 -1
  271. package/dist/scanners/healthcare.d.ts +29 -0
  272. package/dist/scanners/healthcare.d.ts.map +1 -0
  273. package/dist/scanners/healthcare.js +526 -0
  274. package/dist/scanners/healthcare.js.map +1 -0
  275. package/dist/scanners/index.d.ts +1 -0
  276. package/dist/scanners/index.d.ts.map +1 -1
  277. package/dist/scanners/index.js +33 -0
  278. package/dist/scanners/index.js.map +1 -1
  279. package/dist/scanners/index.test.js +6 -6
  280. package/dist/scanners/index.test.js.map +1 -1
  281. package/dist/scanners/secrets.js +4 -4
  282. package/dist/scanners/secrets.js.map +1 -1
  283. package/dist/scanners/semgrep.js +5 -5
  284. package/dist/scanners/semgrep.js.map +1 -1
  285. package/dist/scanners/types.d.ts +1 -1
  286. package/dist/scanners/types.d.ts.map +1 -1
  287. package/dist/scanners/types.js +1 -0
  288. package/dist/scanners/types.js.map +1 -1
  289. package/dist/scanners/typescript.test.js +1 -1
  290. package/dist/scanners/typescript.test.js.map +1 -1
  291. package/dist/telemetry/index.d.ts +10 -0
  292. package/dist/telemetry/index.d.ts.map +1 -0
  293. package/dist/telemetry/index.js +10 -0
  294. package/dist/telemetry/index.js.map +1 -0
  295. package/dist/telemetry/registry.d.ts +178 -0
  296. package/dist/telemetry/registry.d.ts.map +1 -0
  297. package/dist/telemetry/registry.js +297 -0
  298. package/dist/telemetry/registry.js.map +1 -0
  299. package/dist/telemetry/usage.d.ts +197 -0
  300. package/dist/telemetry/usage.d.ts.map +1 -0
  301. package/dist/telemetry/usage.js +252 -0
  302. package/dist/telemetry/usage.js.map +1 -0
  303. package/package.json +2 -6
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Healthcare Compliance Scanner
3
+ *
4
+ * Detects HIPAA and 42 CFR Part 2 violations including:
5
+ * - PHI (Protected Health Information) exposure
6
+ * - SUD (Substance Use Disorder) data disclosure
7
+ * - Consent validation gaps
8
+ * - Audit trail deficiencies
9
+ * - Re-disclosure violations
10
+ *
11
+ * Uses pattern-based detection for healthcare-specific code issues.
12
+ *
13
+ * @module scanners/healthcare
14
+ */
15
+ import type { ScannerResult } from "./types.js";
16
+ /**
17
+ * Healthcare finding categories aligned with HIPAA/42 CFR Part 2
18
+ */
19
+ export type HealthcareFindingType = "phi-exposure" | "sud-disclosure" | "consent-bypass" | "consent-missing" | "redisclosure-violation" | "audit-gap" | "phi-in-logs" | "phi-in-url" | "encryption-gap" | "qsoa-violation" | "retention-violation";
20
+ /**
21
+ * Run the healthcare compliance scanner
22
+ */
23
+ export declare function runHealthcareScanner(projectPath: string): Promise<ScannerResult>;
24
+ /**
25
+ * Check if healthcare scanner is relevant for a project
26
+ * (looks for healthcare-related code patterns)
27
+ */
28
+ export declare function isHealthcareProject(projectPath: string): Promise<boolean>;
29
+ //# sourceMappingURL=healthcare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthcare.d.ts","sourceRoot":"","sources":["../../src/scanners/healthcare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAwB,aAAa,EAAY,MAAM,YAAY,CAAC;AAGhF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,wBAAwB,GACxB,WAAW,GACX,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,qBAAqB,CAAC;AAyS1B;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6KtF;AAyED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsC/E"}
@@ -0,0 +1,526 @@
1
+ /**
2
+ * Healthcare Compliance Scanner
3
+ *
4
+ * Detects HIPAA and 42 CFR Part 2 violations including:
5
+ * - PHI (Protected Health Information) exposure
6
+ * - SUD (Substance Use Disorder) data disclosure
7
+ * - Consent validation gaps
8
+ * - Audit trail deficiencies
9
+ * - Re-disclosure violations
10
+ *
11
+ * Uses pattern-based detection for healthcare-specific code issues.
12
+ *
13
+ * @module scanners/healthcare
14
+ */
15
+ import { readFile, readdir } from "fs/promises";
16
+ import { join, relative, extname } from "path";
17
+ import { logger } from "../logger.js";
18
+ /**
19
+ * PHI identifier patterns (HIPAA 18 identifiers + SUD-specific)
20
+ */
21
+ const PHI_PATTERNS = [
22
+ // Direct identifiers
23
+ {
24
+ name: "ssn-exposure",
25
+ pattern: /\b(SSN|social[_\-\s]?security[_\-\s]?(?:number)?)\s*[:=]\s*["']?\d{3}[-\s]?\d{2}[-\s]?\d{4}/gi,
26
+ description: "Social Security Number found in code",
27
+ severity: "critical",
28
+ category: "phi-exposure",
29
+ cweIds: ["CWE-359", "CWE-532"],
30
+ },
31
+ {
32
+ name: "ssn-variable",
33
+ pattern: /\b(?:const|let|var)\s+(?:ssn|socialSecurity|social_security)\s*=/gi,
34
+ description: "Variable likely storing SSN without encryption",
35
+ severity: "high",
36
+ category: "phi-exposure",
37
+ cweIds: ["CWE-312", "CWE-359"],
38
+ },
39
+ {
40
+ name: "mrn-exposure",
41
+ pattern: /\b(?:MRN|medical[_\-\s]?record[_\-\s]?(?:number)?|patient[_\-\s]?id)\s*[:=]\s*["']?[A-Z0-9]{4,}/gi,
42
+ description: "Medical Record Number or Patient ID in plaintext",
43
+ severity: "high",
44
+ category: "phi-exposure",
45
+ cweIds: ["CWE-359", "CWE-200"],
46
+ },
47
+ {
48
+ name: "dob-exposure",
49
+ pattern: /\b(?:DOB|date[_\-\s]?of[_\-\s]?birth|birthdate|birth[_\-\s]?date)\s*[:=]/gi,
50
+ description: "Date of birth identifier in code",
51
+ severity: "medium",
52
+ category: "phi-exposure",
53
+ cweIds: ["CWE-359"],
54
+ },
55
+ // SUD-specific identifiers (42 CFR Part 2 - higher sensitivity)
56
+ {
57
+ name: "sud-record",
58
+ pattern: /\b(?:substance[_\-\s]?(?:use|abuse)|sud[_\-\s]?(?:record|data|treatment)|addiction[_\-\s]?(?:treatment|record))\b/gi,
59
+ description: "SUD (Substance Use Disorder) record reference - requires 42 CFR Part 2 protection",
60
+ severity: "critical",
61
+ category: "sud-disclosure",
62
+ cweIds: ["CWE-359", "CWE-200"],
63
+ },
64
+ {
65
+ name: "sud-medication",
66
+ pattern: /\b(?:methadone|buprenorphine|suboxone|naltrexone|vivitrol)[_\-\s]?(?:dose|mg|prescription|rx)?\b/gi,
67
+ description: "SUD medication reference - protected under 42 CFR Part 2",
68
+ severity: "critical",
69
+ category: "sud-disclosure",
70
+ cweIds: ["CWE-359"],
71
+ },
72
+ {
73
+ name: "sud-program",
74
+ pattern: /\b(?:otp|opioid[_\-\s]?treatment|mat[_\-\s]?program|medication[_\-\s]?assisted)\b/gi,
75
+ description: "Opioid Treatment Program reference - 42 CFR Part 2 protected",
76
+ severity: "high",
77
+ category: "sud-disclosure",
78
+ cweIds: ["CWE-359"],
79
+ },
80
+ // Health information
81
+ {
82
+ name: "diagnosis-code",
83
+ pattern: /\b(?:ICD[_\-]?10?|diagnosis[_\-]?code|dx[_\-]?code)\s*[:=]\s*["']?[A-Z]\d{2,}/gi,
84
+ description: "Diagnosis code (ICD-10) in plaintext",
85
+ severity: "high",
86
+ category: "phi-exposure",
87
+ cweIds: ["CWE-359"],
88
+ },
89
+ {
90
+ name: "treatment-info",
91
+ pattern: /\b(?:treatment[_\-\s]?plan|medication[_\-\s]?list|prescription[_\-\s]?history)\s*[:=]/gi,
92
+ description: "Treatment information in code",
93
+ severity: "medium",
94
+ category: "phi-exposure",
95
+ cweIds: ["CWE-359"],
96
+ },
97
+ ];
98
+ /**
99
+ * PHI in logging patterns
100
+ */
101
+ const PHI_LOGGING_PATTERNS = [
102
+ {
103
+ name: "phi-in-console",
104
+ pattern: /console\.(log|info|warn|error|debug)\s*\([^)]*\b(ssn|mrn|patient[_\-]?id|social[_\-]?security|dob|date[_\-]?of[_\-]?birth)\b/gi,
105
+ description: "PHI identifier logged to console",
106
+ severity: "critical",
107
+ cweIds: ["CWE-532", "CWE-359"],
108
+ },
109
+ {
110
+ name: "phi-in-logger",
111
+ pattern: /logger\.(log|info|warn|error|debug)\s*\([^)]*\b(ssn|mrn|patient[_\-]?id|social[_\-]?security|dob|date[_\-]?of[_\-]?birth)\b/gi,
112
+ description: "PHI identifier logged via logger",
113
+ severity: "critical",
114
+ cweIds: ["CWE-532", "CWE-359"],
115
+ },
116
+ {
117
+ name: "phi-in-log-object",
118
+ pattern: /\b(log|logger|console)\.[a-z]+\s*\(\s*\{[^}]*\b(ssn|mrn|patientId|socialSecurity)\b[^}]*\}/gi,
119
+ description: "PHI in log object payload",
120
+ severity: "critical",
121
+ cweIds: ["CWE-532", "CWE-359"],
122
+ },
123
+ {
124
+ name: "sud-in-logs",
125
+ pattern: /\b(log|logger|console)\.[a-z]+\s*\([^)]*\b(substance[_\-]?(?:use|abuse)|sud[_\-]?(?:record|data)|addiction)\b/gi,
126
+ description: "SUD data logged - 42 CFR Part 2 violation",
127
+ severity: "critical",
128
+ cweIds: ["CWE-532", "CWE-359"],
129
+ },
130
+ ];
131
+ /**
132
+ * PHI in URL patterns
133
+ */
134
+ const PHI_URL_PATTERNS = [
135
+ {
136
+ name: "phi-in-query-param",
137
+ pattern: /\?\s*[^"']*\b(ssn|mrn|patient[_\-]?id|social[_\-]?security|dob)\s*=/gi,
138
+ description: "PHI in URL query parameter",
139
+ severity: "critical",
140
+ cweIds: ["CWE-598", "CWE-359"],
141
+ },
142
+ {
143
+ name: "phi-in-fetch-url",
144
+ pattern: /fetch\s*\([^)]*\b(ssn|mrn|patient[_\-]?id)\s*=/gi,
145
+ description: "PHI in fetch URL",
146
+ severity: "critical",
147
+ cweIds: ["CWE-598", "CWE-359"],
148
+ },
149
+ {
150
+ name: "phi-in-path",
151
+ pattern: /\/patients?\/\$\{[^}]*\b(ssn|mrn)\b[^}]*\}/gi,
152
+ description: "PHI identifier in URL path template",
153
+ severity: "high",
154
+ cweIds: ["CWE-598", "CWE-359"],
155
+ },
156
+ ];
157
+ /**
158
+ * Consent validation patterns
159
+ */
160
+ const CONSENT_PATTERNS = [
161
+ {
162
+ name: "consent-check-commented",
163
+ pattern: /\/\/\s*(?:TODO|FIXME|XXX):?\s*(?:add|implement|check)\s*consent/gi,
164
+ description: "Consent check marked as TODO - not implemented",
165
+ severity: "high",
166
+ category: "consent-missing",
167
+ cweIds: ["CWE-862"],
168
+ },
169
+ {
170
+ name: "consent-bypass-flag",
171
+ pattern: /\b(?:skip[_\-]?consent|bypass[_\-]?consent|ignore[_\-]?consent|consent[_\-]?override)\s*[:=]\s*true/gi,
172
+ description: "Consent check explicitly bypassed",
173
+ severity: "critical",
174
+ category: "consent-bypass",
175
+ cweIds: ["CWE-862"],
176
+ },
177
+ {
178
+ name: "consent-always-true",
179
+ pattern: /(?:has[_\-]?consent|consent[_\-]?given|consent[_\-]?valid)\s*[:=]\s*true\s*[;,]/gi,
180
+ description: "Consent hardcoded to true - bypasses validation",
181
+ severity: "critical",
182
+ category: "consent-bypass",
183
+ cweIds: ["CWE-862"],
184
+ },
185
+ ];
186
+ /**
187
+ * Audit logging gap patterns
188
+ */
189
+ const AUDIT_GAP_PATTERNS = [
190
+ {
191
+ name: "phi-access-no-audit",
192
+ pattern: /function\s+(?:get|read|fetch|access)[A-Z]?[a-zA-Z]*(?:Patient|PHI|Medical|Health|SUD)\s*\([^)]*\)\s*(?::\s*[^{]+)?\s*\{(?:(?!audit|log).)*\}/gis,
193
+ description: "PHI access function without audit logging",
194
+ severity: "high",
195
+ cweIds: ["CWE-778"],
196
+ },
197
+ {
198
+ name: "audit-log-deletable",
199
+ pattern: /\b(?:delete|truncate|drop|remove)[A-Z]?[a-zA-Z]*(?:audit|log)/gi,
200
+ description: "Audit logs can be deleted - violates retention requirements",
201
+ severity: "critical",
202
+ cweIds: ["CWE-778", "CWE-779"],
203
+ },
204
+ {
205
+ name: "audit-missing-timestamp",
206
+ pattern: /audit[_\-]?(?:log|entry|record)\s*\(\s*\{(?:(?!timestamp|created[_\-]?at|time).)*\}/gi,
207
+ description: "Audit log entry missing timestamp",
208
+ severity: "medium",
209
+ cweIds: ["CWE-778"],
210
+ },
211
+ {
212
+ name: "audit-missing-user",
213
+ pattern: /audit[_\-]?(?:log|entry|record)\s*\(\s*\{(?:(?!user|actor|principal|subject).)*\}/gi,
214
+ description: "Audit log entry missing user identification",
215
+ severity: "medium",
216
+ cweIds: ["CWE-778"],
217
+ },
218
+ ];
219
+ /**
220
+ * Third-party/QSOA violation patterns
221
+ */
222
+ const QSOA_PATTERNS = [
223
+ {
224
+ name: "third-party-phi-send",
225
+ pattern: /\b(?:sendTo|postTo|shareTo|forward(?:To)?)[A-Z]?[a-zA-Z]*(?:Vendor|ThirdParty|External|Partner)\s*\([^)]*\b(?:patient|phi|medical|health|sud)\b/gi,
226
+ description: "PHI sent to third party - requires QSOA/BAA",
227
+ severity: "high",
228
+ cweIds: ["CWE-359"],
229
+ },
230
+ {
231
+ name: "external-api-phi",
232
+ pattern: /axios|fetch|http\.(?:post|put|patch)\s*\([^)]*(?:external|vendor|partner|third[_\-]?party)[^)]*\b(?:patient|phi|ssn|mrn)\b/gi,
233
+ description: "PHI transmitted to external API - verify QSOA exists",
234
+ severity: "high",
235
+ cweIds: ["CWE-359", "CWE-319"],
236
+ },
237
+ ];
238
+ /**
239
+ * Files to skip when scanning
240
+ */
241
+ const SKIP_PATTERNS = [
242
+ /node_modules/,
243
+ /\.git\//,
244
+ /dist\//,
245
+ /build\//,
246
+ /coverage\//,
247
+ /\.lock$/,
248
+ /\.snap$/,
249
+ /\.min\./,
250
+ /vendor\//,
251
+ /\.d\.ts$/,
252
+ /test[s]?\//,
253
+ /__tests__\//,
254
+ /\.test\./,
255
+ /\.spec\./,
256
+ ];
257
+ /**
258
+ * File extensions to scan
259
+ */
260
+ const SCAN_EXTENSIONS = new Set([
261
+ ".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
262
+ ".py", ".rb", ".java", ".cs", ".go",
263
+ ".vue", ".svelte",
264
+ ]);
265
+ /**
266
+ * Run the healthcare compliance scanner
267
+ */
268
+ export async function runHealthcareScanner(projectPath) {
269
+ const startTime = Date.now();
270
+ const findings = [];
271
+ let filesScanned = 0;
272
+ logger.info("healthcare.scan.start", { projectPath });
273
+ try {
274
+ const files = await collectFiles(projectPath);
275
+ for (const file of files) {
276
+ try {
277
+ const content = await readFile(file, "utf-8");
278
+ const relativePath = relative(projectPath, file);
279
+ filesScanned++;
280
+ // Scan for PHI exposure
281
+ for (const pattern of PHI_PATTERNS) {
282
+ const matches = findMatches(content, pattern.pattern, relativePath);
283
+ for (const match of matches) {
284
+ findings.push({
285
+ scanner: "healthcare",
286
+ ruleId: `healthcare:${pattern.name}`,
287
+ file: relativePath,
288
+ line: match.line,
289
+ message: pattern.description,
290
+ severity: pattern.severity,
291
+ confidence: 90,
292
+ category: pattern.category,
293
+ cweIds: pattern.cweIds,
294
+ evidence: match.evidence,
295
+ });
296
+ }
297
+ }
298
+ // Scan for PHI in logs
299
+ for (const pattern of PHI_LOGGING_PATTERNS) {
300
+ const matches = findMatches(content, pattern.pattern, relativePath);
301
+ for (const match of matches) {
302
+ findings.push({
303
+ scanner: "healthcare",
304
+ ruleId: `healthcare:${pattern.name}`,
305
+ file: relativePath,
306
+ line: match.line,
307
+ message: pattern.description,
308
+ severity: pattern.severity,
309
+ confidence: 95,
310
+ category: "phi-in-logs",
311
+ cweIds: pattern.cweIds,
312
+ evidence: match.evidence,
313
+ });
314
+ }
315
+ }
316
+ // Scan for PHI in URLs
317
+ for (const pattern of PHI_URL_PATTERNS) {
318
+ const matches = findMatches(content, pattern.pattern, relativePath);
319
+ for (const match of matches) {
320
+ findings.push({
321
+ scanner: "healthcare",
322
+ ruleId: `healthcare:${pattern.name}`,
323
+ file: relativePath,
324
+ line: match.line,
325
+ message: pattern.description,
326
+ severity: pattern.severity,
327
+ confidence: 90,
328
+ category: "phi-in-url",
329
+ cweIds: pattern.cweIds,
330
+ evidence: match.evidence,
331
+ });
332
+ }
333
+ }
334
+ // Scan for consent issues
335
+ for (const pattern of CONSENT_PATTERNS) {
336
+ const matches = findMatches(content, pattern.pattern, relativePath);
337
+ for (const match of matches) {
338
+ findings.push({
339
+ scanner: "healthcare",
340
+ ruleId: `healthcare:${pattern.name}`,
341
+ file: relativePath,
342
+ line: match.line,
343
+ message: pattern.description,
344
+ severity: pattern.severity,
345
+ confidence: 85,
346
+ category: pattern.category,
347
+ cweIds: pattern.cweIds,
348
+ evidence: match.evidence,
349
+ });
350
+ }
351
+ }
352
+ // Scan for audit gaps
353
+ for (const pattern of AUDIT_GAP_PATTERNS) {
354
+ const matches = findMatches(content, pattern.pattern, relativePath);
355
+ for (const match of matches) {
356
+ findings.push({
357
+ scanner: "healthcare",
358
+ ruleId: `healthcare:${pattern.name}`,
359
+ file: relativePath,
360
+ line: match.line,
361
+ message: pattern.description,
362
+ severity: pattern.severity,
363
+ confidence: 75,
364
+ category: "audit-gap",
365
+ cweIds: pattern.cweIds,
366
+ evidence: match.evidence,
367
+ });
368
+ }
369
+ }
370
+ // Scan for QSOA/third-party violations
371
+ for (const pattern of QSOA_PATTERNS) {
372
+ const matches = findMatches(content, pattern.pattern, relativePath);
373
+ for (const match of matches) {
374
+ findings.push({
375
+ scanner: "healthcare",
376
+ ruleId: `healthcare:${pattern.name}`,
377
+ file: relativePath,
378
+ line: match.line,
379
+ message: pattern.description,
380
+ severity: pattern.severity,
381
+ confidence: 80,
382
+ category: "qsoa-violation",
383
+ cweIds: pattern.cweIds,
384
+ evidence: match.evidence,
385
+ });
386
+ }
387
+ }
388
+ }
389
+ catch (err) {
390
+ logger.warn("healthcare.scan.file.error", {
391
+ file,
392
+ error: err instanceof Error ? err.message : String(err),
393
+ });
394
+ }
395
+ }
396
+ const duration = Date.now() - startTime;
397
+ logger.info("healthcare.scan.complete", {
398
+ filesScanned,
399
+ findings: findings.length,
400
+ duration,
401
+ });
402
+ return {
403
+ scanner: "healthcare",
404
+ findings,
405
+ duration,
406
+ success: true,
407
+ filesScanned,
408
+ rulesUsed: [
409
+ ...PHI_PATTERNS.map((p) => p.name),
410
+ ...PHI_LOGGING_PATTERNS.map((p) => p.name),
411
+ ...PHI_URL_PATTERNS.map((p) => p.name),
412
+ ...CONSENT_PATTERNS.map((p) => p.name),
413
+ ...AUDIT_GAP_PATTERNS.map((p) => p.name),
414
+ ...QSOA_PATTERNS.map((p) => p.name),
415
+ ],
416
+ };
417
+ }
418
+ catch (err) {
419
+ const duration = Date.now() - startTime;
420
+ const errorMessage = err instanceof Error ? err.message : String(err);
421
+ logger.error("healthcare.scan.failed", { error: errorMessage, duration });
422
+ return {
423
+ scanner: "healthcare",
424
+ findings: [],
425
+ duration,
426
+ success: false,
427
+ error: errorMessage,
428
+ };
429
+ }
430
+ }
431
+ /**
432
+ * Collect files to scan
433
+ */
434
+ async function collectFiles(dirPath) {
435
+ const files = [];
436
+ async function walk(currentPath) {
437
+ const entries = await readdir(currentPath, { withFileTypes: true });
438
+ for (const entry of entries) {
439
+ const fullPath = join(currentPath, entry.name);
440
+ const relativePath = relative(dirPath, fullPath);
441
+ // Skip excluded patterns
442
+ if (SKIP_PATTERNS.some((p) => p.test(relativePath))) {
443
+ continue;
444
+ }
445
+ if (entry.isDirectory()) {
446
+ await walk(fullPath);
447
+ }
448
+ else if (entry.isFile()) {
449
+ const ext = extname(entry.name);
450
+ if (SCAN_EXTENSIONS.has(ext)) {
451
+ files.push(fullPath);
452
+ }
453
+ }
454
+ }
455
+ }
456
+ await walk(dirPath);
457
+ return files;
458
+ }
459
+ /**
460
+ * Find pattern matches with line numbers
461
+ */
462
+ function findMatches(content, pattern, _filePath) {
463
+ const matches = [];
464
+ const lines = content.split("\n");
465
+ // Reset regex lastIndex for global patterns
466
+ pattern.lastIndex = 0;
467
+ let match;
468
+ while ((match = pattern.exec(content)) !== null) {
469
+ // Find line number
470
+ const beforeMatch = content.slice(0, match.index);
471
+ const lineNumber = beforeMatch.split("\n").length;
472
+ // Get context (the line containing the match)
473
+ const lineContent = lines[lineNumber - 1] || "";
474
+ const evidence = lineContent.trim().slice(0, 200);
475
+ matches.push({
476
+ line: lineNumber,
477
+ evidence,
478
+ });
479
+ // Prevent infinite loop for zero-width matches
480
+ if (match[0].length === 0) {
481
+ pattern.lastIndex++;
482
+ }
483
+ }
484
+ return matches;
485
+ }
486
+ /**
487
+ * Check if healthcare scanner is relevant for a project
488
+ * (looks for healthcare-related code patterns)
489
+ */
490
+ export async function isHealthcareProject(projectPath) {
491
+ try {
492
+ const files = await collectFiles(projectPath);
493
+ // Sample up to 50 files
494
+ const sampleFiles = files.slice(0, 50);
495
+ for (const file of sampleFiles) {
496
+ try {
497
+ const content = await readFile(file, "utf-8");
498
+ // Check for healthcare-related keywords
499
+ const healthcareKeywords = [
500
+ /\bpatient\b/i,
501
+ /\bHIPAA\b/i,
502
+ /\bPHI\b/,
503
+ /\bePHI\b/i,
504
+ /\bhealthcare\b/i,
505
+ /\bmedical\b/i,
506
+ /\bEHR\b/,
507
+ /\bEMR\b/,
508
+ /\b42\s*CFR\b/i,
509
+ /\bsubstance\s*use\b/i,
510
+ /\bSUD\b/,
511
+ ];
512
+ if (healthcareKeywords.some((kw) => kw.test(content))) {
513
+ return true;
514
+ }
515
+ }
516
+ catch {
517
+ // Skip unreadable files
518
+ }
519
+ }
520
+ return false;
521
+ }
522
+ catch {
523
+ return false;
524
+ }
525
+ }
526
+ //# sourceMappingURL=healthcare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthcare.js","sourceRoot":"","sources":["../../src/scanners/healthcare.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export { runBrakeman, checkBrakemanAvailable, detectRails } from "./brakeman.js"
19
19
  export { runBinaryAnalysis, checkBinaryAnalysisAvailable, detectNativeModules } from "./binary-analysis.js";
20
20
  export { runMemorySafetyAnalysis, checkCppcheckAvailable, checkCargoGeigerAvailable, detectUnsafeLanguages } from "./memory-safety.js";
21
21
  export { runRaceConditionAnalysis } from "./race-condition.js";
22
+ export { runHealthcareScanner, isHealthcareProject } from "./healthcare.js";
22
23
  import type { AggregatedScanResult, ScannerOptions, ScannerType } from "./types.js";
23
24
  import type { Severity } from "../certification/types.js";
24
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanners/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanners/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACvI,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAQ5E,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EAEd,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAkB1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC,CA0H/B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBtE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BtE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUxE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU3E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoB3F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5B,gEAAgE;IAChE,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC9B,GACA,OAAO,CAAC,oBAAoB,GAAG;IAAE,iBAAiB,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA4EzE;AAoLD;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CACrD,MAAM,CAAC,WAAW,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAC9E,CAgCA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,WAAW,EAAE;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAqJD;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CACpD,UAAU,EAAE,oBAAoB,GAC/B,KAAK,CAAC;IACP,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC;IAChB,cAAc,EAAE,WAAW,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC,CAqDD;AA8DD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CA+C3E"}