@open-agreements/open-agreements 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +359 -0
  3. package/bin/open-agreements.js +4 -0
  4. package/content/external/LICENSE +27 -0
  5. package/content/external/README.md +38 -0
  6. package/content/external/yc-safe-discount/README.md +16 -0
  7. package/content/external/yc-safe-discount/clean.json +4 -0
  8. package/content/external/yc-safe-discount/metadata.yaml +67 -0
  9. package/content/external/yc-safe-discount/replacements.json +13 -0
  10. package/content/external/yc-safe-discount/template.docx +0 -0
  11. package/content/external/yc-safe-mfn/README.md +16 -0
  12. package/content/external/yc-safe-mfn/clean.json +4 -0
  13. package/content/external/yc-safe-mfn/metadata.yaml +64 -0
  14. package/content/external/yc-safe-mfn/replacements.json +12 -0
  15. package/content/external/yc-safe-mfn/template.docx +0 -0
  16. package/content/external/yc-safe-pro-rata-side-letter/README.md +16 -0
  17. package/content/external/yc-safe-pro-rata-side-letter/clean.json +4 -0
  18. package/content/external/yc-safe-pro-rata-side-letter/metadata.yaml +49 -0
  19. package/content/external/yc-safe-pro-rata-side-letter/replacements.json +9 -0
  20. package/content/external/yc-safe-pro-rata-side-letter/template.docx +0 -0
  21. package/content/external/yc-safe-valuation-cap/README.md +16 -0
  22. package/content/external/yc-safe-valuation-cap/clean.json +4 -0
  23. package/content/external/yc-safe-valuation-cap/metadata.yaml +64 -0
  24. package/content/external/yc-safe-valuation-cap/replacements.json +12 -0
  25. package/content/external/yc-safe-valuation-cap/template.docx +0 -0
  26. package/content/recipes/nvca-certificate-of-incorporation/clean.json +8 -0
  27. package/content/recipes/nvca-certificate-of-incorporation/metadata.yaml +43 -0
  28. package/content/recipes/nvca-certificate-of-incorporation/replacements.json +9 -0
  29. package/content/recipes/nvca-indemnification-agreement/clean.json +17 -0
  30. package/content/recipes/nvca-indemnification-agreement/metadata.yaml +79 -0
  31. package/content/recipes/nvca-indemnification-agreement/replacements.json +17 -0
  32. package/content/recipes/nvca-investors-rights-agreement/clean.json +12 -0
  33. package/content/recipes/nvca-investors-rights-agreement/metadata.yaml +71 -0
  34. package/content/recipes/nvca-investors-rights-agreement/replacements.json +18 -0
  35. package/content/recipes/nvca-management-rights-letter/clean.json +7 -0
  36. package/content/recipes/nvca-management-rights-letter/metadata.yaml +47 -0
  37. package/content/recipes/nvca-management-rights-letter/replacements.json +11 -0
  38. package/content/recipes/nvca-rofr-co-sale-agreement/clean.json +7 -0
  39. package/content/recipes/nvca-rofr-co-sale-agreement/metadata.yaml +76 -0
  40. package/content/recipes/nvca-rofr-co-sale-agreement/replacements.json +17 -0
  41. package/content/recipes/nvca-stock-purchase-agreement/clean.json +13 -0
  42. package/content/recipes/nvca-stock-purchase-agreement/computed.json +103 -0
  43. package/content/recipes/nvca-stock-purchase-agreement/metadata.yaml +138 -0
  44. package/content/recipes/nvca-stock-purchase-agreement/normalize.json +83 -0
  45. package/content/recipes/nvca-stock-purchase-agreement/replacements.json +41 -0
  46. package/content/recipes/nvca-voting-agreement/README.md +53 -0
  47. package/content/recipes/nvca-voting-agreement/clean.json +7 -0
  48. package/content/recipes/nvca-voting-agreement/metadata.yaml +66 -0
  49. package/content/recipes/nvca-voting-agreement/replacements.json +18 -0
  50. package/content/templates/bonterms-mutual-nda/README.md +27 -0
  51. package/content/templates/bonterms-mutual-nda/metadata.yaml +58 -0
  52. package/content/templates/bonterms-mutual-nda/source.json +18 -0
  53. package/content/templates/bonterms-mutual-nda/template.docx +0 -0
  54. package/content/templates/bonterms-professional-services-agreement/README.md +24 -0
  55. package/content/templates/bonterms-professional-services-agreement/metadata.yaml +45 -0
  56. package/content/templates/bonterms-professional-services-agreement/selections.json +12 -0
  57. package/content/templates/bonterms-professional-services-agreement/source.json +18 -0
  58. package/content/templates/bonterms-professional-services-agreement/template.docx +0 -0
  59. package/content/templates/closing-checklist/metadata.yaml +39 -0
  60. package/content/templates/closing-checklist/template.docx +0 -0
  61. package/content/templates/common-paper-ai-addendum/README.md +23 -0
  62. package/content/templates/common-paper-ai-addendum/metadata.yaml +31 -0
  63. package/content/templates/common-paper-ai-addendum/template.docx +0 -0
  64. package/content/templates/common-paper-ai-addendum-in-app/README.md +21 -0
  65. package/content/templates/common-paper-ai-addendum-in-app/metadata.yaml +21 -0
  66. package/content/templates/common-paper-ai-addendum-in-app/template.docx +0 -0
  67. package/content/templates/common-paper-amendment/README.md +27 -0
  68. package/content/templates/common-paper-amendment/metadata.yaml +53 -0
  69. package/content/templates/common-paper-amendment/template.docx +0 -0
  70. package/content/templates/common-paper-business-associate-agreement/README.md +29 -0
  71. package/content/templates/common-paper-business-associate-agreement/metadata.yaml +56 -0
  72. package/content/templates/common-paper-business-associate-agreement/replacements.json +3 -0
  73. package/content/templates/common-paper-business-associate-agreement/template.docx +0 -0
  74. package/content/templates/common-paper-cloud-service-agreement/README.md +32 -0
  75. package/content/templates/common-paper-cloud-service-agreement/metadata.yaml +354 -0
  76. package/content/templates/common-paper-cloud-service-agreement/template.docx +0 -0
  77. package/content/templates/common-paper-csa-click-through/README.md +33 -0
  78. package/content/templates/common-paper-csa-click-through/metadata.yaml +73 -0
  79. package/content/templates/common-paper-csa-click-through/template.docx +0 -0
  80. package/content/templates/common-paper-csa-with-ai/README.md +49 -0
  81. package/content/templates/common-paper-csa-with-ai/metadata.yaml +143 -0
  82. package/content/templates/common-paper-csa-with-ai/replacements.json +7 -0
  83. package/content/templates/common-paper-csa-with-ai/template.docx +0 -0
  84. package/content/templates/common-paper-csa-with-sla/README.md +53 -0
  85. package/content/templates/common-paper-csa-with-sla/metadata.yaml +159 -0
  86. package/content/templates/common-paper-csa-with-sla/replacements.json +7 -0
  87. package/content/templates/common-paper-csa-with-sla/template.docx +0 -0
  88. package/content/templates/common-paper-csa-without-sla/README.md +47 -0
  89. package/content/templates/common-paper-csa-without-sla/metadata.yaml +135 -0
  90. package/content/templates/common-paper-csa-without-sla/replacements.json +7 -0
  91. package/content/templates/common-paper-csa-without-sla/template.docx +0 -0
  92. package/content/templates/common-paper-data-processing-agreement/README.md +46 -0
  93. package/content/templates/common-paper-data-processing-agreement/metadata.yaml +130 -0
  94. package/content/templates/common-paper-data-processing-agreement/replacements.json +3 -0
  95. package/content/templates/common-paper-data-processing-agreement/template.docx +0 -0
  96. package/content/templates/common-paper-design-partner-agreement/README.md +29 -0
  97. package/content/templates/common-paper-design-partner-agreement/metadata.yaml +59 -0
  98. package/content/templates/common-paper-design-partner-agreement/replacements.json +4 -0
  99. package/content/templates/common-paper-design-partner-agreement/template.docx +0 -0
  100. package/content/templates/common-paper-independent-contractor-agreement/README.md +27 -0
  101. package/content/templates/common-paper-independent-contractor-agreement/metadata.yaml +55 -0
  102. package/content/templates/common-paper-independent-contractor-agreement/template.docx +0 -0
  103. package/content/templates/common-paper-letter-of-intent/README.md +25 -0
  104. package/content/templates/common-paper-letter-of-intent/metadata.yaml +42 -0
  105. package/content/templates/common-paper-letter-of-intent/template.docx +0 -0
  106. package/content/templates/common-paper-mutual-nda/README.md +29 -0
  107. package/content/templates/common-paper-mutual-nda/metadata.yaml +59 -0
  108. package/content/templates/common-paper-mutual-nda/selections.json +38 -0
  109. package/content/templates/common-paper-mutual-nda/template.docx +0 -0
  110. package/content/templates/common-paper-one-way-nda/README.md +27 -0
  111. package/content/templates/common-paper-one-way-nda/metadata.yaml +59 -0
  112. package/content/templates/common-paper-one-way-nda/template.docx +0 -0
  113. package/content/templates/common-paper-order-form/README.md +36 -0
  114. package/content/templates/common-paper-order-form/metadata.yaml +87 -0
  115. package/content/templates/common-paper-order-form/replacements.json +5 -0
  116. package/content/templates/common-paper-order-form/template.docx +0 -0
  117. package/content/templates/common-paper-order-form-with-sla/README.md +42 -0
  118. package/content/templates/common-paper-order-form-with-sla/metadata.yaml +111 -0
  119. package/content/templates/common-paper-order-form-with-sla/replacements.json +5 -0
  120. package/content/templates/common-paper-order-form-with-sla/template.docx +0 -0
  121. package/content/templates/common-paper-partnership-agreement/README.md +34 -0
  122. package/content/templates/common-paper-partnership-agreement/metadata.yaml +78 -0
  123. package/content/templates/common-paper-partnership-agreement/replacements.json +7 -0
  124. package/content/templates/common-paper-partnership-agreement/template.docx +0 -0
  125. package/content/templates/common-paper-pilot-agreement/README.md +34 -0
  126. package/content/templates/common-paper-pilot-agreement/metadata.yaml +100 -0
  127. package/content/templates/common-paper-pilot-agreement/replacements.json +4 -0
  128. package/content/templates/common-paper-pilot-agreement/selections.json +37 -0
  129. package/content/templates/common-paper-pilot-agreement/template.docx +0 -0
  130. package/content/templates/common-paper-professional-services-agreement/README.md +44 -0
  131. package/content/templates/common-paper-professional-services-agreement/metadata.yaml +124 -0
  132. package/content/templates/common-paper-professional-services-agreement/replacements.json +8 -0
  133. package/content/templates/common-paper-professional-services-agreement/template.docx +0 -0
  134. package/content/templates/common-paper-software-license-agreement/README.md +18 -0
  135. package/content/templates/common-paper-software-license-agreement/metadata.yaml +13 -0
  136. package/content/templates/common-paper-software-license-agreement/template.docx +0 -0
  137. package/content/templates/common-paper-statement-of-work/README.md +32 -0
  138. package/content/templates/common-paper-statement-of-work/metadata.yaml +71 -0
  139. package/content/templates/common-paper-statement-of-work/replacements.json +3 -0
  140. package/content/templates/common-paper-statement-of-work/template.docx +0 -0
  141. package/content/templates/common-paper-term-sheet/README.md +22 -0
  142. package/content/templates/common-paper-term-sheet/metadata.yaml +28 -0
  143. package/content/templates/common-paper-term-sheet/template.docx +0 -0
  144. package/content/templates/openagreements-employee-ip-inventions-assignment/README.md +31 -0
  145. package/content/templates/openagreements-employee-ip-inventions-assignment/metadata.yaml +71 -0
  146. package/content/templates/openagreements-employee-ip-inventions-assignment/template.docx +0 -0
  147. package/content/templates/openagreements-employee-ip-inventions-assignment/template.md +80 -0
  148. package/content/templates/openagreements-employment-confidentiality-acknowledgement/README.md +30 -0
  149. package/content/templates/openagreements-employment-confidentiality-acknowledgement/metadata.yaml +60 -0
  150. package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.docx +0 -0
  151. package/content/templates/openagreements-employment-confidentiality-acknowledgement/template.md +51 -0
  152. package/content/templates/openagreements-employment-offer-letter/README.md +33 -0
  153. package/content/templates/openagreements-employment-offer-letter/metadata.yaml +75 -0
  154. package/content/templates/openagreements-employment-offer-letter/template.docx +0 -0
  155. package/content/templates/openagreements-employment-offer-letter/template.md +90 -0
  156. package/content/templates/working-group-list/metadata.yaml +22 -0
  157. package/content/templates/working-group-list/template.docx +0 -0
  158. package/dist/cli/index.d.ts +4 -0
  159. package/dist/cli/index.d.ts.map +1 -0
  160. package/dist/cli/index.js +199 -0
  161. package/dist/cli/index.js.map +1 -0
  162. package/dist/commands/checklist.d.ts +22 -0
  163. package/dist/commands/checklist.d.ts.map +1 -0
  164. package/dist/commands/checklist.js +222 -0
  165. package/dist/commands/checklist.js.map +1 -0
  166. package/dist/commands/fill.d.ts +18 -0
  167. package/dist/commands/fill.d.ts.map +1 -0
  168. package/dist/commands/fill.js +119 -0
  169. package/dist/commands/fill.js.map +1 -0
  170. package/dist/commands/list.d.ts +7 -0
  171. package/dist/commands/list.d.ts.map +1 -0
  172. package/dist/commands/list.js +247 -0
  173. package/dist/commands/list.js.map +1 -0
  174. package/dist/commands/recipe.d.ts +24 -0
  175. package/dist/commands/recipe.d.ts.map +1 -0
  176. package/dist/commands/recipe.js +96 -0
  177. package/dist/commands/recipe.js.map +1 -0
  178. package/dist/commands/scan.d.ts +28 -0
  179. package/dist/commands/scan.d.ts.map +1 -0
  180. package/dist/commands/scan.js +138 -0
  181. package/dist/commands/scan.js.map +1 -0
  182. package/dist/commands/validate.d.ts +6 -0
  183. package/dist/commands/validate.d.ts.map +1 -0
  184. package/dist/commands/validate.js +158 -0
  185. package/dist/commands/validate.js.map +1 -0
  186. package/dist/core/checklist/index.d.ts +38 -0
  187. package/dist/core/checklist/index.d.ts.map +1 -0
  188. package/dist/core/checklist/index.js +229 -0
  189. package/dist/core/checklist/index.js.map +1 -0
  190. package/dist/core/checklist/patch-apply.d.ts +65 -0
  191. package/dist/core/checklist/patch-apply.d.ts.map +1 -0
  192. package/dist/core/checklist/patch-apply.js +274 -0
  193. package/dist/core/checklist/patch-apply.js.map +1 -0
  194. package/dist/core/checklist/patch-schemas.d.ts +86 -0
  195. package/dist/core/checklist/patch-schemas.d.ts.map +1 -0
  196. package/dist/core/checklist/patch-schemas.js +89 -0
  197. package/dist/core/checklist/patch-schemas.js.map +1 -0
  198. package/dist/core/checklist/patch-validator.d.ts +76 -0
  199. package/dist/core/checklist/patch-validator.d.ts.map +1 -0
  200. package/dist/core/checklist/patch-validator.js +404 -0
  201. package/dist/core/checklist/patch-validator.js.map +1 -0
  202. package/dist/core/checklist/schemas.d.ts +270 -0
  203. package/dist/core/checklist/schemas.d.ts.map +1 -0
  204. package/dist/core/checklist/schemas.js +229 -0
  205. package/dist/core/checklist/schemas.js.map +1 -0
  206. package/dist/core/checklist/test-utils.d.ts +7 -0
  207. package/dist/core/checklist/test-utils.d.ts.map +1 -0
  208. package/dist/core/checklist/test-utils.js +13 -0
  209. package/dist/core/checklist/test-utils.js.map +1 -0
  210. package/dist/core/command-generation/adapters/claude.d.ts +11 -0
  211. package/dist/core/command-generation/adapters/claude.d.ts.map +1 -0
  212. package/dist/core/command-generation/adapters/claude.js +91 -0
  213. package/dist/core/command-generation/adapters/claude.js.map +1 -0
  214. package/dist/core/command-generation/types.d.ts +14 -0
  215. package/dist/core/command-generation/types.d.ts.map +1 -0
  216. package/dist/core/command-generation/types.js +2 -0
  217. package/dist/core/command-generation/types.js.map +1 -0
  218. package/dist/core/employment/jurisdiction-rules.d.ts +20 -0
  219. package/dist/core/employment/jurisdiction-rules.d.ts.map +1 -0
  220. package/dist/core/employment/jurisdiction-rules.js +57 -0
  221. package/dist/core/employment/jurisdiction-rules.js.map +1 -0
  222. package/dist/core/employment/memo.d.ts +57 -0
  223. package/dist/core/employment/memo.d.ts.map +1 -0
  224. package/dist/core/employment/memo.js +589 -0
  225. package/dist/core/employment/memo.js.map +1 -0
  226. package/dist/core/engine.d.ts +13 -0
  227. package/dist/core/engine.d.ts.map +1 -0
  228. package/dist/core/engine.js +182 -0
  229. package/dist/core/engine.js.map +1 -0
  230. package/dist/core/external/index.d.ts +8 -0
  231. package/dist/core/external/index.d.ts.map +1 -0
  232. package/dist/core/external/index.js +50 -0
  233. package/dist/core/external/index.js.map +1 -0
  234. package/dist/core/external/types.d.ts +18 -0
  235. package/dist/core/external/types.d.ts.map +1 -0
  236. package/dist/core/external/types.js +2 -0
  237. package/dist/core/external/types.js.map +1 -0
  238. package/dist/core/fill-pipeline.d.ts +64 -0
  239. package/dist/core/fill-pipeline.d.ts.map +1 -0
  240. package/dist/core/fill-pipeline.js +350 -0
  241. package/dist/core/fill-pipeline.js.map +1 -0
  242. package/dist/core/fill-utils.d.ts +39 -0
  243. package/dist/core/fill-utils.d.ts.map +1 -0
  244. package/dist/core/fill-utils.js +127 -0
  245. package/dist/core/fill-utils.js.map +1 -0
  246. package/dist/core/metadata.d.ts +194 -0
  247. package/dist/core/metadata.d.ts.map +1 -0
  248. package/dist/core/metadata.js +197 -0
  249. package/dist/core/metadata.js.map +1 -0
  250. package/dist/core/recipe/bracket-normalizer.d.ts +46 -0
  251. package/dist/core/recipe/bracket-normalizer.d.ts.map +1 -0
  252. package/dist/core/recipe/bracket-normalizer.js +354 -0
  253. package/dist/core/recipe/bracket-normalizer.js.map +1 -0
  254. package/dist/core/recipe/cleaner.d.ts +27 -0
  255. package/dist/core/recipe/cleaner.d.ts.map +1 -0
  256. package/dist/core/recipe/cleaner.js +345 -0
  257. package/dist/core/recipe/cleaner.js.map +1 -0
  258. package/dist/core/recipe/computed.d.ts +136 -0
  259. package/dist/core/recipe/computed.d.ts.map +1 -0
  260. package/dist/core/recipe/computed.js +225 -0
  261. package/dist/core/recipe/computed.js.map +1 -0
  262. package/dist/core/recipe/downloader.d.ts +8 -0
  263. package/dist/core/recipe/downloader.d.ts.map +1 -0
  264. package/dist/core/recipe/downloader.js +58 -0
  265. package/dist/core/recipe/downloader.js.map +1 -0
  266. package/dist/core/recipe/index.d.ts +17 -0
  267. package/dist/core/recipe/index.d.ts.map +1 -0
  268. package/dist/core/recipe/index.js +90 -0
  269. package/dist/core/recipe/index.js.map +1 -0
  270. package/dist/core/recipe/ooxml-parts.d.ts +21 -0
  271. package/dist/core/recipe/ooxml-parts.d.ts.map +1 -0
  272. package/dist/core/recipe/ooxml-parts.js +33 -0
  273. package/dist/core/recipe/ooxml-parts.js.map +1 -0
  274. package/dist/core/recipe/patcher.d.ts +34 -0
  275. package/dist/core/recipe/patcher.d.ts.map +1 -0
  276. package/dist/core/recipe/patcher.js +423 -0
  277. package/dist/core/recipe/patcher.js.map +1 -0
  278. package/dist/core/recipe/replacement-keys.d.ts +33 -0
  279. package/dist/core/recipe/replacement-keys.d.ts.map +1 -0
  280. package/dist/core/recipe/replacement-keys.js +53 -0
  281. package/dist/core/recipe/replacement-keys.js.map +1 -0
  282. package/dist/core/recipe/source-drift.d.ts +33 -0
  283. package/dist/core/recipe/source-drift.d.ts.map +1 -0
  284. package/dist/core/recipe/source-drift.js +113 -0
  285. package/dist/core/recipe/source-drift.js.map +1 -0
  286. package/dist/core/recipe/types.d.ts +33 -0
  287. package/dist/core/recipe/types.d.ts.map +1 -0
  288. package/dist/core/recipe/types.js +2 -0
  289. package/dist/core/recipe/types.js.map +1 -0
  290. package/dist/core/recipe/verifier.d.ts +24 -0
  291. package/dist/core/recipe/verifier.d.ts.map +1 -0
  292. package/dist/core/recipe/verifier.js +158 -0
  293. package/dist/core/recipe/verifier.js.map +1 -0
  294. package/dist/core/selector.d.ts +41 -0
  295. package/dist/core/selector.d.ts.map +1 -0
  296. package/dist/core/selector.js +323 -0
  297. package/dist/core/selector.js.map +1 -0
  298. package/dist/core/unified-pipeline.d.ts +53 -0
  299. package/dist/core/unified-pipeline.d.ts.map +1 -0
  300. package/dist/core/unified-pipeline.js +107 -0
  301. package/dist/core/unified-pipeline.js.map +1 -0
  302. package/dist/core/validation/external.d.ts +16 -0
  303. package/dist/core/validation/external.d.ts.map +1 -0
  304. package/dist/core/validation/external.js +114 -0
  305. package/dist/core/validation/external.js.map +1 -0
  306. package/dist/core/validation/license.d.ts +15 -0
  307. package/dist/core/validation/license.d.ts.map +1 -0
  308. package/dist/core/validation/license.js +30 -0
  309. package/dist/core/validation/license.js.map +1 -0
  310. package/dist/core/validation/output.d.ts +12 -0
  311. package/dist/core/validation/output.d.ts.map +1 -0
  312. package/dist/core/validation/output.js +47 -0
  313. package/dist/core/validation/output.js.map +1 -0
  314. package/dist/core/validation/recipe.d.ts +19 -0
  315. package/dist/core/validation/recipe.d.ts.map +1 -0
  316. package/dist/core/validation/recipe.js +159 -0
  317. package/dist/core/validation/recipe.js.map +1 -0
  318. package/dist/core/validation/scan-metadata.d.ts +21 -0
  319. package/dist/core/validation/scan-metadata.d.ts.map +1 -0
  320. package/dist/core/validation/scan-metadata.js +70 -0
  321. package/dist/core/validation/scan-metadata.js.map +1 -0
  322. package/dist/core/validation/template.d.ts +11 -0
  323. package/dist/core/validation/template.d.ts.map +1 -0
  324. package/dist/core/validation/template.js +248 -0
  325. package/dist/core/validation/template.js.map +1 -0
  326. package/dist/index.d.ts +16 -0
  327. package/dist/index.d.ts.map +1 -0
  328. package/dist/index.js +23 -0
  329. package/dist/index.js.map +1 -0
  330. package/dist/utils/paths.d.ts +43 -0
  331. package/dist/utils/paths.d.ts.map +1 -0
  332. package/dist/utils/paths.js +149 -0
  333. package/dist/utils/paths.js.map +1 -0
  334. package/package.json +148 -0
  335. package/skills/cloud-service-agreement/CONNECTORS.md +19 -0
  336. package/skills/cloud-service-agreement/SKILL.md +172 -0
  337. package/skills/data-privacy-agreement/CONNECTORS.md +19 -0
  338. package/skills/data-privacy-agreement/SKILL.md +158 -0
  339. package/skills/delaware-franchise-tax/CONNECTORS.md +16 -0
  340. package/skills/delaware-franchise-tax/SKILL.md +206 -0
  341. package/skills/delaware-franchise-tax/reference/ecorp-portal-playwright-notes.md +136 -0
  342. package/skills/delaware-franchise-tax/reference/faq.md +101 -0
  343. package/skills/delaware-franchise-tax/reference/filing-instructions.md +111 -0
  344. package/skills/delaware-franchise-tax/reference/tax-calculation.md +167 -0
  345. package/skills/employment-contract/CONNECTORS.md +19 -0
  346. package/skills/employment-contract/SKILL.md +157 -0
  347. package/skills/nda/CONNECTORS.md +19 -0
  348. package/skills/nda/SKILL.md +153 -0
  349. package/skills/open-agreements/CONNECTORS.md +19 -0
  350. package/skills/open-agreements/SKILL.md +182 -0
  351. package/skills/safe/CONNECTORS.md +19 -0
  352. package/skills/safe/SKILL.md +161 -0
  353. package/skills/services-agreement/CONNECTORS.md +19 -0
  354. package/skills/services-agreement/SKILL.md +156 -0
  355. package/skills/unit-test-philosophy/SKILL.md +113 -0
  356. package/skills/unit-test-philosophy/references/allure-test-spec-writing-guide.md +164 -0
  357. package/skills/venture-financing/CONNECTORS.md +19 -0
  358. package/skills/venture-financing/SKILL.md +169 -0
@@ -0,0 +1,182 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { loadMetadata, loadCleanConfig } from './metadata.js';
4
+ import { loadSelectionsConfig } from './selector.js';
5
+ import { runFillPipeline } from './unified-pipeline.js';
6
+ import { BLANK_PLACEHOLDER, verifyTemplateFill } from './fill-utils.js';
7
+ /**
8
+ * Compute display fields for radio/checkbox groups in table rows.
9
+ * docx-templates only allows one {IF} per table row, so multi-option rows
10
+ * use a single computed display tag that the engine populates from input fields.
11
+ *
12
+ * This is template-specific logic — only activates when metadata declares
13
+ * the relevant display field names.
14
+ */
15
+ function computeDisplayFields(data, fieldNames) {
16
+ const str = (key) => String(data[key] ?? '');
17
+ const bool = (key) => data[key] === true;
18
+ const isBlankPlaceholder = (value) => typeof value === 'string' && value.trim() === BLANK_PLACEHOLDER;
19
+ const toGoogleDocUrl = (value) => {
20
+ const raw = value.trim();
21
+ if (raw === '')
22
+ return '';
23
+ if (/^https?:\/\//i.test(raw))
24
+ return raw;
25
+ if (/^docs\.google\.com\/document\/d\//i.test(raw))
26
+ return `https://${raw}`;
27
+ if (/^[A-Za-z0-9_-]{20,}$/.test(raw))
28
+ return `https://docs.google.com/document/d/${raw}/`;
29
+ return raw;
30
+ };
31
+ // Optional cover-table rows in employment templates should disappear when blank.
32
+ // The default blank placeholder is intentionally visible in most contexts,
33
+ // but for these optional rows we normalize blank placeholders to empty strings
34
+ // so {IF field} conditions evaluate false and remove the row.
35
+ if (isBlankPlaceholder(data['bonus_terms'])) {
36
+ data['bonus_terms'] = '';
37
+ }
38
+ if (isBlankPlaceholder(data['equity_terms'])) {
39
+ data['equity_terms'] = '';
40
+ }
41
+ if (isBlankPlaceholder(data['cloud_drive_id'])) {
42
+ data['cloud_drive_id'] = '';
43
+ }
44
+ const cloudDriveId = typeof data['cloud_drive_id'] === 'string' ? data['cloud_drive_id'].trim() : '';
45
+ if (fieldNames.has('cloud_drive_id_footer')) {
46
+ const docUrl = cloudDriveId ? toGoogleDocUrl(cloudDriveId) : '';
47
+ data['cloud_drive_id_footer'] = docUrl ? `Document URL: ${docUrl}` : '';
48
+ }
49
+ // Order Date: "Date of last signature" or custom date
50
+ if (fieldNames.has('order_date_display') && !data['order_date_display']) {
51
+ data['order_date_display'] = bool('order_date_is_last_signature')
52
+ ? '( x )\tDate of last signature on this Order Form'
53
+ : `( x )\t${str('custom_order_date')}`;
54
+ }
55
+ // Pilot fee: paid or free trial
56
+ if (fieldNames.has('pilot_fee_display') && !data['pilot_fee_display']) {
57
+ data['pilot_fee_display'] = bool('pilot_is_free')
58
+ ? '( x )\tFree trial'
59
+ : `( x )\tFee for Pilot Period: ${str('pilot_fee')}`;
60
+ }
61
+ // Cloud Service Fees: build from selected checkboxes
62
+ if (fieldNames.has('fees_display') && !data['fees_display']) {
63
+ const lines = [];
64
+ if (bool('fee_is_per_unit')) {
65
+ lines.push(`[ x ] ${str('fees')} per ${str('fee_unit')}`);
66
+ }
67
+ if (bool('fee_is_other')) {
68
+ lines.push(`[ x ] Other fee structure: ${str('other_fee_structure')}`);
69
+ }
70
+ if (bool('fee_may_increase')) {
71
+ lines.push(`[ x ] Fees may increase up to ${str('fee_increase_cap_pct')}% per renewal`);
72
+ }
73
+ if (bool('fee_will_increase')) {
74
+ lines.push(`[ x ] Fees will increase ${str('fee_increase_fixed_pct')}% per renewal`);
75
+ }
76
+ if (bool('fee_inclusive_of_taxes')) {
77
+ lines.push('[ x ] Fees are inclusive of taxes (modifies Standard Terms Section 4.1)');
78
+ }
79
+ data['fees_display'] = lines.join('\n');
80
+ }
81
+ // Payment Process: invoice or automatic
82
+ if (fieldNames.has('payment_display') && !data['payment_display']) {
83
+ if (bool('payment_by_invoice')) {
84
+ const freq = str('payment_frequency');
85
+ const days = str('payment_terms_days');
86
+ const from = str('payment_due_from');
87
+ data['payment_display'] =
88
+ `( x )\tPay by invoice\n` +
89
+ `Provider will invoice Customer ${freq}.\n` +
90
+ `Customer will pay each invoice within ${days} days of ${from}.`;
91
+ }
92
+ else {
93
+ const freq = str('payment_frequency');
94
+ data['payment_display'] =
95
+ `( x )\tAutomatic payment\n` +
96
+ `Customer authorizes Provider to charge the payment method on file ${freq}.`;
97
+ }
98
+ }
99
+ // Auto-renewal
100
+ if (fieldNames.has('auto_renewal_display') && !data['auto_renewal_display']) {
101
+ if (bool('auto_renew')) {
102
+ const days = str('non_renewal_notice_days');
103
+ data['auto_renewal_display'] =
104
+ `( x )\tNon-Renewal Notice Date is ${days} days before the end of the current Subscription Period.`;
105
+ }
106
+ else {
107
+ data['auto_renewal_display'] = '( x )\tThis Order does not automatically renew.';
108
+ }
109
+ }
110
+ // Effective Date
111
+ if (fieldNames.has('effective_date_display') && !data['effective_date_display']) {
112
+ data['effective_date_display'] = bool('effective_date_is_last_signature')
113
+ ? '( x )\tDate of last Cover Page signature'
114
+ : `( x )\t${str('custom_effective_date')}`;
115
+ }
116
+ // Covered Claims
117
+ if (fieldNames.has('covered_claims_display') && !data['covered_claims_display']) {
118
+ const lines = [];
119
+ if (bool('has_provider_covered_claims')) {
120
+ lines.push('[ x ] Provider Covered Claims: [Any action, proceeding, or claim that the Cloud Service, when used by Customer as permitted under the Agreement, infringes or misappropriates a third party\u2019s intellectual property rights.]');
121
+ }
122
+ if (bool('has_customer_covered_claims')) {
123
+ lines.push('[ x ] Customer Covered Claims: [Any action, proceeding, or claim that (1) the Customer Content, when used according to the Agreement, infringes or misappropriates a third party\u2019s intellectual property rights; or (2) results from the Customer\u2019s breach of Section 2.4.]');
124
+ }
125
+ data['covered_claims_display'] = lines.join('\n');
126
+ }
127
+ // General Cap Amount
128
+ if (fieldNames.has('general_cap_display') && !data['general_cap_display']) {
129
+ if (bool('general_cap_is_multiplier')) {
130
+ data['general_cap_display'] = `( x )\t${str('general_cap_multiplier')}x the Fees paid or payable by Customer in the 12 month period immediately preceding the claim`;
131
+ }
132
+ else if (bool('general_cap_is_dollar')) {
133
+ data['general_cap_display'] = `( x )\t$${str('general_cap_dollar')}`;
134
+ }
135
+ else if (bool('general_cap_is_greater_of')) {
136
+ data['general_cap_display'] = `( x )\tThe greater of $${str('general_cap_greater_dollar')} or ${str('general_cap_greater_multiplier')}x the Fees paid or payable by Customer in the 12 month period immediately preceding the claim`;
137
+ }
138
+ }
139
+ }
140
+ export async function fillTemplate(options) {
141
+ const { templateDir, values, outputPath } = options;
142
+ const metadata = loadMetadata(templateDir);
143
+ const fieldNames = new Set(metadata.fields.map((f) => f.name));
144
+ // Warn about unknown keys not in metadata
145
+ const unknownKeys = Object.keys(values).filter((k) => !fieldNames.has(k));
146
+ if (unknownKeys.length > 0) {
147
+ console.warn(`Warning: unknown field(s) not in metadata: ${unknownKeys.join(', ')}`);
148
+ }
149
+ // Build cleanPatch if replacements.json exists
150
+ const templatePath = join(templateDir, 'template.docx');
151
+ const replacementsPath = join(templateDir, 'replacements.json');
152
+ const cleanPatch = existsSync(replacementsPath)
153
+ ? {
154
+ cleanConfig: loadCleanConfig(templateDir),
155
+ replacements: JSON.parse(readFileSync(replacementsPath, 'utf-8')),
156
+ }
157
+ : undefined;
158
+ // Load selectionsConfig if selections.json exists
159
+ const selectionsPath = join(templateDir, 'selections.json');
160
+ const selectionsConfig = existsSync(selectionsPath)
161
+ ? loadSelectionsConfig(selectionsPath)
162
+ : undefined;
163
+ const result = await runFillPipeline({
164
+ inputPath: templatePath,
165
+ outputPath,
166
+ values,
167
+ fields: metadata.fields,
168
+ requiredFieldNames: metadata.required_fields,
169
+ cleanPatch,
170
+ selectionsConfig,
171
+ coerceBooleans: true,
172
+ computeDisplayFields: (d) => computeDisplayFields(d, fieldNames),
173
+ fixSmartQuotes: true,
174
+ verify: (p) => verifyTemplateFill(p),
175
+ });
176
+ return {
177
+ outputPath: result.outputPath,
178
+ metadata,
179
+ fieldsUsed: result.fieldsUsed,
180
+ };
181
+ }
182
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ExternalFillOptions, ExternalFillResult } from './types.js';
2
+ /**
3
+ * Run the external fill pipeline: integrity check → clean → patch → fill → verify.
4
+ * Uses the local DOCX file from the external/ directory (never modifies the original).
5
+ */
6
+ export declare function runExternalFill(options: ExternalFillOptions): Promise<ExternalFillResult>;
7
+ export type { ExternalFillOptions, ExternalFillResult } from './types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/external/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE1E;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA+C/F;AAED,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { createHash } from 'node:crypto';
4
+ import { loadExternalMetadata, loadCleanConfig } from '../metadata.js';
5
+ import { resolveExternalDir } from '../../utils/paths.js';
6
+ import { verifyOutput } from '../recipe/verifier.js';
7
+ import { runFillPipeline } from '../unified-pipeline.js';
8
+ /**
9
+ * Run the external fill pipeline: integrity check → clean → patch → fill → verify.
10
+ * Uses the local DOCX file from the external/ directory (never modifies the original).
11
+ */
12
+ export async function runExternalFill(options) {
13
+ const { externalId, outputPath, values, keepIntermediate } = options;
14
+ const externalDir = resolveExternalDir(externalId);
15
+ const metadata = loadExternalMetadata(externalDir);
16
+ // SHA-256 integrity check
17
+ const docxPath = join(externalDir, 'template.docx');
18
+ const docxBuf = readFileSync(docxPath);
19
+ const actualHash = createHash('sha256').update(docxBuf).digest('hex');
20
+ if (actualHash !== metadata.source_sha256) {
21
+ throw new Error(`Integrity check failed for "${externalId}": DOCX has been modified.\n` +
22
+ ` Expected SHA-256: ${metadata.source_sha256}\n` +
23
+ ` Actual SHA-256: ${actualHash}`);
24
+ }
25
+ // CC-BY-ND redistribution warning
26
+ console.log(`\nNote: This is an external document (${metadata.license}). ` +
27
+ `You may fill it for your own use, but do not redistribute modified versions.\n` +
28
+ `See: ${metadata.source_url}\n`);
29
+ // Load clean config and replacements
30
+ const cleanConfig = loadCleanConfig(externalDir);
31
+ const replacementsPath = join(externalDir, 'replacements.json');
32
+ const replacements = JSON.parse(readFileSync(replacementsPath, 'utf-8'));
33
+ const result = await runFillPipeline({
34
+ inputPath: docxPath,
35
+ outputPath,
36
+ values,
37
+ fields: metadata.fields,
38
+ requiredFieldNames: metadata.required_fields,
39
+ cleanPatch: { cleanConfig, replacements },
40
+ verify: (p) => verifyOutput(p, values, replacements, cleanConfig),
41
+ keepIntermediate,
42
+ });
43
+ return {
44
+ outputPath: result.outputPath,
45
+ metadata,
46
+ fieldsUsed: result.fieldsUsed,
47
+ stages: result.stages,
48
+ };
49
+ }
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/external/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA4B;IAChE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IACrE,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEnD,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,+BAA+B,UAAU,8BAA8B;YACvE,uBAAuB,QAAQ,CAAC,aAAa,IAAI;YACjD,uBAAuB,UAAU,EAAE,CACpC,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,OAAO,CAAC,GAAG,CACT,yCAAyC,QAAQ,CAAC,OAAO,KAAK;QAC9D,gFAAgF;QAChF,QAAQ,QAAQ,CAAC,UAAU,IAAI,CAChC,CAAC;IAEF,qCAAqC;IACrC,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAChE,MAAM,YAAY,GAA2B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,SAAS,EAAE,QAAQ;QACnB,UAAU;QACV,MAAM;QACN,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,kBAAkB,EAAE,QAAQ,CAAC,eAAe;QAC5C,UAAU,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;QACzC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC;QACjE,gBAAgB;KACjB,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ;QACR,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAO;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ExternalMetadata } from '../metadata.js';
2
+ export interface ExternalFillOptions {
3
+ externalId: string;
4
+ outputPath: string;
5
+ values: Record<string, unknown>;
6
+ keepIntermediate?: boolean;
7
+ }
8
+ export interface ExternalFillResult {
9
+ outputPath: string;
10
+ metadata: ExternalMetadata;
11
+ fieldsUsed: string[];
12
+ stages: {
13
+ clean: string;
14
+ patch: string;
15
+ fill: string;
16
+ };
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/external/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/external/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Shared fill pipeline used by all three fill paths (template, external, recipe).
3
+ * Centralizes: defaults, boolean coercion, display fields, currency sanitization,
4
+ * drafting note removal, and the docx-templates createReport() call.
5
+ */
6
+ import type { FieldDefinition } from './metadata.js';
7
+ export interface PrepareFillDataOptions {
8
+ /** User-provided values. */
9
+ values: Record<string, unknown>;
10
+ /** Field definitions from metadata. */
11
+ fields: FieldDefinition[];
12
+ /** Required field names from metadata.required_fields. */
13
+ requiredFieldNames?: string[];
14
+ /**
15
+ * When true, unfilled optional fields default to BLANK_PLACEHOLDER ('_______')
16
+ * so omissions are visible. When false, they default to '' (empty string).
17
+ * All fill paths use true by default.
18
+ */
19
+ useBlankPlaceholder?: boolean;
20
+ /** Coerce boolean-typed fields to actual JS booleans for IF conditions. */
21
+ coerceBooleans?: boolean;
22
+ /**
23
+ * Optional callback for computing display fields (template-specific).
24
+ * Called after defaults and boolean coercion are applied.
25
+ */
26
+ computeDisplayFields?: (data: Record<string, unknown>) => void;
27
+ }
28
+ export interface FillDocxOptions {
29
+ /** Template DOCX buffer (already patched with {tags}). */
30
+ templateBuffer: Buffer;
31
+ /** Prepared fill data from prepareFillData(). */
32
+ data: Record<string, unknown>;
33
+ /** Apply docx-templates smart quote normalization. */
34
+ fixSmartQuotes?: boolean;
35
+ /**
36
+ * Regex patterns for paragraphs to remove before filling.
37
+ * Paragraphs whose text matches any pattern are stripped from the DOCX.
38
+ * If a matched paragraph is the only content in a table row, the entire
39
+ * row is removed to avoid empty highlighted rows.
40
+ *
41
+ * Default: `[/\bDrafting note\b/i]` — removes Common Paper drafting notes.
42
+ * Pass `[]` to disable.
43
+ */
44
+ stripParagraphPatterns?: RegExp[];
45
+ }
46
+ /**
47
+ * Prepare fill data with all normalization steps:
48
+ * 1. Validate required fields are present
49
+ * 2. Apply defaults for optional fields not provided
50
+ * 3. Coerce boolean fields (optional)
51
+ * 4. Compute display fields (optional, template-specific)
52
+ */
53
+ export declare function prepareFillData(options: PrepareFillDataOptions): Record<string, unknown>;
54
+ /**
55
+ * Fill a DOCX template with prepared data:
56
+ * 1. Strip drafting note paragraphs (configurable, on by default)
57
+ * 2. Strip highlighting from runs with filled fields (unfilled keep their highlight)
58
+ * 3. Sanitize currency values by scanning the template buffer for ${field} patterns
59
+ * 4. Call docx-templates createReport() with standard delimiters
60
+ * 5. Remove structurally empty table rows left by conditional rendering
61
+ * 6. Return the filled buffer
62
+ */
63
+ export declare function fillDocx(options: FillDocxOptions): Promise<Uint8Array>;
64
+ //# sourceMappingURL=fill-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fill-pipeline.d.ts","sourceRoot":"","sources":["../../src/core/fill-pipeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIrD,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,uCAAuC;IACvC,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1B,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC;IAEvB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,sDAAsD;IACtD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC;AAKD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkDxF;AAgRD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CA0C5E"}