p-spore 0.1.3 → 0.1.42

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 (396) hide show
  1. package/README.md +110 -15
  2. package/dist/agents/agent-manager.d.ts +3 -3
  3. package/dist/agents/agent-manager.d.ts.map +1 -1
  4. package/dist/agents/agent-manager.js +3 -2
  5. package/dist/agents/agent-manager.js.map +1 -1
  6. package/dist/application/agent-application.d.ts +29 -5
  7. package/dist/application/agent-application.d.ts.map +1 -1
  8. package/dist/application/agent-application.js +444 -14
  9. package/dist/application/agent-application.js.map +1 -1
  10. package/dist/articles/diff.d.ts +70 -0
  11. package/dist/articles/diff.d.ts.map +1 -0
  12. package/dist/articles/diff.js +330 -0
  13. package/dist/articles/diff.js.map +1 -0
  14. package/dist/articles/docx.d.ts +10 -0
  15. package/dist/articles/docx.d.ts.map +1 -0
  16. package/dist/articles/docx.js +219 -0
  17. package/dist/articles/docx.js.map +1 -0
  18. package/dist/articles/draft.d.ts +18 -0
  19. package/dist/articles/draft.d.ts.map +1 -0
  20. package/dist/articles/draft.js +88 -0
  21. package/dist/articles/draft.js.map +1 -0
  22. package/dist/articles/edits.d.ts +24 -0
  23. package/dist/articles/edits.d.ts.map +1 -0
  24. package/dist/articles/edits.js +54 -0
  25. package/dist/articles/edits.js.map +1 -0
  26. package/dist/articles/html.d.ts +10 -0
  27. package/dist/articles/html.d.ts.map +1 -0
  28. package/dist/articles/html.js +122 -0
  29. package/dist/articles/html.js.map +1 -0
  30. package/dist/articles/plain.d.ts +8 -0
  31. package/dist/articles/plain.d.ts.map +1 -0
  32. package/dist/articles/plain.js +69 -0
  33. package/dist/articles/plain.js.map +1 -0
  34. package/dist/articles/preview.d.ts +43 -0
  35. package/dist/articles/preview.d.ts.map +1 -0
  36. package/dist/articles/preview.js +90 -0
  37. package/dist/articles/preview.js.map +1 -0
  38. package/dist/articles/publish.d.ts +10 -0
  39. package/dist/articles/publish.d.ts.map +1 -0
  40. package/dist/articles/publish.js +54 -0
  41. package/dist/articles/publish.js.map +1 -0
  42. package/dist/articles/receipt.d.ts +16 -0
  43. package/dist/articles/receipt.d.ts.map +1 -0
  44. package/dist/articles/receipt.js +27 -0
  45. package/dist/articles/receipt.js.map +1 -0
  46. package/dist/articles/store.d.ts +78 -0
  47. package/dist/articles/store.d.ts.map +1 -0
  48. package/dist/articles/store.js +308 -0
  49. package/dist/articles/store.js.map +1 -0
  50. package/dist/articles/tool.d.ts +14 -0
  51. package/dist/articles/tool.d.ts.map +1 -0
  52. package/dist/articles/tool.js +175 -0
  53. package/dist/articles/tool.js.map +1 -0
  54. package/dist/articles/writer-context.d.ts +5 -0
  55. package/dist/articles/writer-context.d.ts.map +1 -0
  56. package/dist/articles/writer-context.js +56 -0
  57. package/dist/articles/writer-context.js.map +1 -0
  58. package/dist/articles/writer.d.ts +18 -0
  59. package/dist/articles/writer.d.ts.map +1 -0
  60. package/dist/articles/writer.js +79 -0
  61. package/dist/articles/writer.js.map +1 -0
  62. package/dist/articles/zip-write.d.ts +11 -0
  63. package/dist/articles/zip-write.d.ts.map +1 -0
  64. package/dist/articles/zip-write.js +63 -0
  65. package/dist/articles/zip-write.js.map +1 -0
  66. package/dist/bundled-skills/README.md +17 -0
  67. package/dist/bundled-skills/aegis-search/SKILL.md +59 -0
  68. package/dist/bundled-skills/aegis-search/bin/.gitkeep +0 -0
  69. package/dist/bundled-skills/article-canvas/SKILL.md +28 -0
  70. package/dist/bundled-skills/binaries.json +23 -0
  71. package/dist/bundled-skills/doc-extract/SKILL.md +56 -0
  72. package/dist/cli/main.d.ts.map +1 -1
  73. package/dist/cli/main.js +407 -54
  74. package/dist/cli/main.js.map +1 -1
  75. package/dist/config/config.d.ts +43 -0
  76. package/dist/config/config.d.ts.map +1 -1
  77. package/dist/config/config.js +150 -6
  78. package/dist/config/config.js.map +1 -1
  79. package/dist/daemon/daemon.d.ts.map +1 -1
  80. package/dist/daemon/daemon.js +80 -11
  81. package/dist/daemon/daemon.js.map +1 -1
  82. package/dist/desktop/application.d.ts +4 -0
  83. package/dist/desktop/application.d.ts.map +1 -0
  84. package/dist/desktop/application.js +1688 -0
  85. package/dist/desktop/application.js.map +1 -0
  86. package/dist/desktop/article-export.d.ts +12 -0
  87. package/dist/desktop/article-export.d.ts.map +1 -0
  88. package/dist/desktop/article-export.js +87 -0
  89. package/dist/desktop/article-export.js.map +1 -0
  90. package/dist/desktop/assets/pspore.png +0 -0
  91. package/dist/desktop/assets/pspore.svg +24 -0
  92. package/dist/desktop/conversation-smoke.d.ts +5 -0
  93. package/dist/desktop/conversation-smoke.d.ts.map +1 -0
  94. package/dist/desktop/conversation-smoke.js +93 -0
  95. package/dist/desktop/conversation-smoke.js.map +1 -0
  96. package/dist/desktop/daemon-bridge.d.ts.map +1 -1
  97. package/dist/desktop/daemon-bridge.js +62 -17
  98. package/dist/desktop/daemon-bridge.js.map +1 -1
  99. package/dist/desktop/ipc-contract.d.ts +124 -0
  100. package/dist/desktop/ipc-contract.d.ts.map +1 -1
  101. package/dist/desktop/ipc-contract.js +191 -12
  102. package/dist/desktop/ipc-contract.js.map +1 -1
  103. package/dist/desktop/local-path.d.ts +15 -0
  104. package/dist/desktop/local-path.d.ts.map +1 -0
  105. package/dist/desktop/local-path.js +59 -0
  106. package/dist/desktop/local-path.js.map +1 -0
  107. package/dist/desktop/main.d.ts +10 -1
  108. package/dist/desktop/main.d.ts.map +1 -1
  109. package/dist/desktop/main.js +122 -530
  110. package/dist/desktop/main.js.map +1 -1
  111. package/dist/desktop/native-startup.d.ts +4 -0
  112. package/dist/desktop/native-startup.d.ts.map +1 -0
  113. package/dist/desktop/native-startup.js +57 -0
  114. package/dist/desktop/native-startup.js.map +1 -0
  115. package/dist/desktop/preload.cjs +28 -1
  116. package/dist/desktop/renderer/article-panel.d.ts +45 -0
  117. package/dist/desktop/renderer/article-panel.d.ts.map +1 -0
  118. package/dist/desktop/renderer/article-panel.js +1126 -0
  119. package/dist/desktop/renderer/article-panel.js.map +1 -0
  120. package/dist/desktop/renderer/article-split.d.ts +32 -0
  121. package/dist/desktop/renderer/article-split.d.ts.map +1 -0
  122. package/dist/desktop/renderer/article-split.js +48 -0
  123. package/dist/desktop/renderer/article-split.js.map +1 -0
  124. package/dist/desktop/renderer/composer-file-references.d.ts +23 -0
  125. package/dist/desktop/renderer/composer-file-references.d.ts.map +1 -0
  126. package/dist/desktop/renderer/composer-file-references.js +51 -0
  127. package/dist/desktop/renderer/composer-file-references.js.map +1 -0
  128. package/dist/desktop/renderer/conversation.d.ts +23 -0
  129. package/dist/desktop/renderer/conversation.d.ts.map +1 -0
  130. package/dist/desktop/renderer/conversation.js +66 -0
  131. package/dist/desktop/renderer/conversation.js.map +1 -0
  132. package/dist/desktop/renderer/dom-reconcile.d.ts +15 -0
  133. package/dist/desktop/renderer/dom-reconcile.d.ts.map +1 -0
  134. package/dist/desktop/renderer/dom-reconcile.js +33 -0
  135. package/dist/desktop/renderer/dom-reconcile.js.map +1 -0
  136. package/dist/desktop/renderer/index.html +211 -34
  137. package/dist/desktop/renderer/indexing-view.d.ts +22 -0
  138. package/dist/desktop/renderer/indexing-view.d.ts.map +1 -0
  139. package/dist/desktop/renderer/indexing-view.js +115 -0
  140. package/dist/desktop/renderer/indexing-view.js.map +1 -0
  141. package/dist/desktop/renderer/markdown-view.d.ts +23 -0
  142. package/dist/desktop/renderer/markdown-view.d.ts.map +1 -0
  143. package/dist/desktop/renderer/markdown-view.js +436 -0
  144. package/dist/desktop/renderer/markdown-view.js.map +1 -0
  145. package/dist/desktop/renderer/motion.d.ts +67 -0
  146. package/dist/desktop/renderer/motion.d.ts.map +1 -0
  147. package/dist/desktop/renderer/motion.js +296 -0
  148. package/dist/desktop/renderer/motion.js.map +1 -0
  149. package/dist/desktop/renderer/renderer.js +1793 -155
  150. package/dist/desktop/renderer/renderer.js.map +1 -1
  151. package/dist/desktop/renderer/session-find.d.ts +18 -0
  152. package/dist/desktop/renderer/session-find.d.ts.map +1 -0
  153. package/dist/desktop/renderer/session-find.js +29 -0
  154. package/dist/desktop/renderer/session-find.js.map +1 -0
  155. package/dist/desktop/renderer/session-search.d.ts +30 -0
  156. package/dist/desktop/renderer/session-search.d.ts.map +1 -0
  157. package/dist/desktop/renderer/session-search.js +296 -0
  158. package/dist/desktop/renderer/session-search.js.map +1 -0
  159. package/dist/desktop/renderer/store.d.ts +35 -8
  160. package/dist/desktop/renderer/store.d.ts.map +1 -1
  161. package/dist/desktop/renderer/store.js +95 -78
  162. package/dist/desktop/renderer/store.js.map +1 -1
  163. package/dist/desktop/renderer/styles.css +910 -268
  164. package/dist/desktop/renderer/vendor/gsap.min.js +11 -0
  165. package/dist/desktop/renderer-diagnostics.d.ts +5 -0
  166. package/dist/desktop/renderer-diagnostics.d.ts.map +1 -0
  167. package/dist/desktop/renderer-diagnostics.js +47 -0
  168. package/dist/desktop/renderer-diagnostics.js.map +1 -0
  169. package/dist/desktop/security.d.ts +26 -1
  170. package/dist/desktop/security.d.ts.map +1 -1
  171. package/dist/desktop/security.js +26 -6
  172. package/dist/desktop/security.js.map +1 -1
  173. package/dist/desktop/smoke-fixture.d.ts.map +1 -1
  174. package/dist/desktop/smoke-fixture.js +77 -3
  175. package/dist/desktop/smoke-fixture.js.map +1 -1
  176. package/dist/desktop/splash/index.html +25 -0
  177. package/dist/desktop/splash/splash.d.ts +2 -0
  178. package/dist/desktop/splash/splash.d.ts.map +1 -0
  179. package/dist/desktop/splash/splash.js +8 -0
  180. package/dist/desktop/splash/splash.js.map +1 -0
  181. package/dist/desktop/splash/styles.css +24 -0
  182. package/dist/desktop/system-open.d.ts +16 -0
  183. package/dist/desktop/system-open.d.ts.map +1 -0
  184. package/dist/desktop/system-open.js +90 -0
  185. package/dist/desktop/system-open.js.map +1 -0
  186. package/dist/desktop/validation.d.ts.map +1 -1
  187. package/dist/desktop/validation.js +99 -21
  188. package/dist/desktop/validation.js.map +1 -1
  189. package/dist/desktop/window-security.d.ts +4 -0
  190. package/dist/desktop/window-security.d.ts.map +1 -0
  191. package/dist/desktop/window-security.js +26 -0
  192. package/dist/desktop/window-security.js.map +1 -0
  193. package/dist/documents/errors.d.ts +12 -0
  194. package/dist/documents/errors.d.ts.map +1 -0
  195. package/dist/documents/errors.js +12 -0
  196. package/dist/documents/errors.js.map +1 -0
  197. package/dist/documents/extract.d.ts +37 -0
  198. package/dist/documents/extract.d.ts.map +1 -0
  199. package/dist/documents/extract.js +90 -0
  200. package/dist/documents/extract.js.map +1 -0
  201. package/dist/documents/legacy-office.d.ts +23 -0
  202. package/dist/documents/legacy-office.d.ts.map +1 -0
  203. package/dist/documents/legacy-office.js +439 -0
  204. package/dist/documents/legacy-office.js.map +1 -0
  205. package/dist/documents/ole.d.ts +20 -0
  206. package/dist/documents/ole.d.ts.map +1 -0
  207. package/dist/documents/ole.js +189 -0
  208. package/dist/documents/ole.js.map +1 -0
  209. package/dist/documents/ooxml.d.ts +23 -0
  210. package/dist/documents/ooxml.d.ts.map +1 -0
  211. package/dist/documents/ooxml.js +197 -0
  212. package/dist/documents/ooxml.js.map +1 -0
  213. package/dist/documents/pdf.d.ts +20 -0
  214. package/dist/documents/pdf.d.ts.map +1 -0
  215. package/dist/documents/pdf.js +95 -0
  216. package/dist/documents/pdf.js.map +1 -0
  217. package/dist/documents/plain-text.d.ts +22 -0
  218. package/dist/documents/plain-text.d.ts.map +1 -0
  219. package/dist/documents/plain-text.js +57 -0
  220. package/dist/documents/plain-text.js.map +1 -0
  221. package/dist/documents/zip.d.ts +15 -0
  222. package/dist/documents/zip.d.ts.map +1 -0
  223. package/dist/documents/zip.js +137 -0
  224. package/dist/documents/zip.js.map +1 -0
  225. package/dist/domain/indexing.d.ts +60 -0
  226. package/dist/domain/indexing.d.ts.map +1 -0
  227. package/dist/domain/indexing.js +13 -0
  228. package/dist/domain/indexing.js.map +1 -0
  229. package/dist/domain/runtime.d.ts +133 -5
  230. package/dist/domain/runtime.d.ts.map +1 -1
  231. package/dist/gateway/local-gateway.d.ts +8 -0
  232. package/dist/gateway/local-gateway.d.ts.map +1 -1
  233. package/dist/gateway/local-gateway.js +105 -21
  234. package/dist/gateway/local-gateway.js.map +1 -1
  235. package/dist/indexing/index-service.d.ts +56 -0
  236. package/dist/indexing/index-service.d.ts.map +1 -0
  237. package/dist/indexing/index-service.js +262 -0
  238. package/dist/indexing/index-service.js.map +1 -0
  239. package/dist/kernel/loop.d.ts +10 -0
  240. package/dist/kernel/loop.d.ts.map +1 -1
  241. package/dist/kernel/loop.js +6 -2
  242. package/dist/kernel/loop.js.map +1 -1
  243. package/dist/kernel/reducer.d.ts.map +1 -1
  244. package/dist/kernel/reducer.js +17 -1
  245. package/dist/kernel/reducer.js.map +1 -1
  246. package/dist/kernel/state.d.ts +17 -4
  247. package/dist/kernel/state.d.ts.map +1 -1
  248. package/dist/kernel/state.js +2 -0
  249. package/dist/kernel/state.js.map +1 -1
  250. package/dist/memory/memory-tools.d.ts.map +1 -1
  251. package/dist/memory/memory-tools.js +25 -5
  252. package/dist/memory/memory-tools.js.map +1 -1
  253. package/dist/pi/context-budget.d.ts +8 -0
  254. package/dist/pi/context-budget.d.ts.map +1 -0
  255. package/dist/pi/context-budget.js +62 -0
  256. package/dist/pi/context-budget.js.map +1 -0
  257. package/dist/pi/pi-runtime-adapter.d.ts +38 -3
  258. package/dist/pi/pi-runtime-adapter.d.ts.map +1 -1
  259. package/dist/pi/pi-runtime-adapter.js +551 -56
  260. package/dist/pi/pi-runtime-adapter.js.map +1 -1
  261. package/dist/plugins/bundled-skills.d.ts +56 -0
  262. package/dist/plugins/bundled-skills.d.ts.map +1 -0
  263. package/dist/plugins/bundled-skills.js +243 -0
  264. package/dist/plugins/bundled-skills.js.map +1 -0
  265. package/dist/plugins/extension-manager.d.ts +23 -1
  266. package/dist/plugins/extension-manager.d.ts.map +1 -1
  267. package/dist/plugins/extension-manager.js +117 -0
  268. package/dist/plugins/extension-manager.js.map +1 -1
  269. package/dist/plugins/types.d.ts +29 -0
  270. package/dist/plugins/types.d.ts.map +1 -1
  271. package/dist/plugins/workspace-skills.d.ts +36 -0
  272. package/dist/plugins/workspace-skills.d.ts.map +1 -0
  273. package/dist/plugins/workspace-skills.js +309 -0
  274. package/dist/plugins/workspace-skills.js.map +1 -0
  275. package/dist/policy/policy.d.ts.map +1 -1
  276. package/dist/policy/policy.js +26 -4
  277. package/dist/policy/policy.js.map +1 -1
  278. package/dist/protocol/client.d.ts +1 -0
  279. package/dist/protocol/client.d.ts.map +1 -1
  280. package/dist/protocol/client.js +49 -24
  281. package/dist/protocol/client.js.map +1 -1
  282. package/dist/protocol/limits.d.ts +69 -0
  283. package/dist/protocol/limits.d.ts.map +1 -0
  284. package/dist/protocol/limits.js +166 -0
  285. package/dist/protocol/limits.js.map +1 -0
  286. package/dist/protocol/schema.d.ts +6 -0
  287. package/dist/protocol/schema.d.ts.map +1 -1
  288. package/dist/protocol/schema.js.map +1 -1
  289. package/dist/protocol/server-frame-codec.d.ts +18 -0
  290. package/dist/protocol/server-frame-codec.d.ts.map +1 -0
  291. package/dist/protocol/server-frame-codec.js +211 -0
  292. package/dist/protocol/server-frame-codec.js.map +1 -0
  293. package/dist/service/legacy-daemon.d.ts +6 -0
  294. package/dist/service/legacy-daemon.d.ts.map +1 -0
  295. package/dist/service/legacy-daemon.js +42 -0
  296. package/dist/service/legacy-daemon.js.map +1 -0
  297. package/dist/service/service-launch.d.ts +10 -0
  298. package/dist/service/service-launch.d.ts.map +1 -0
  299. package/dist/service/service-launch.js +56 -0
  300. package/dist/service/service-launch.js.map +1 -0
  301. package/dist/service/system-service.d.ts +57 -0
  302. package/dist/service/system-service.d.ts.map +1 -0
  303. package/dist/service/system-service.js +263 -0
  304. package/dist/service/system-service.js.map +1 -0
  305. package/dist/sessions/session-catalog.d.ts +45 -0
  306. package/dist/sessions/session-catalog.d.ts.map +1 -0
  307. package/dist/sessions/session-catalog.js +270 -0
  308. package/dist/sessions/session-catalog.js.map +1 -0
  309. package/dist/sessions/session-file.d.ts +12 -0
  310. package/dist/sessions/session-file.d.ts.map +1 -0
  311. package/dist/sessions/session-file.js +47 -0
  312. package/dist/sessions/session-file.js.map +1 -0
  313. package/dist/settings/compaction-settings.d.ts +10 -0
  314. package/dist/settings/compaction-settings.d.ts.map +1 -0
  315. package/dist/settings/compaction-settings.js +8 -0
  316. package/dist/settings/compaction-settings.js.map +1 -0
  317. package/dist/settings/indexing-settings-service.d.ts +16 -0
  318. package/dist/settings/indexing-settings-service.d.ts.map +1 -0
  319. package/dist/settings/indexing-settings-service.js +57 -0
  320. package/dist/settings/indexing-settings-service.js.map +1 -0
  321. package/dist/settings/indexing-settings.d.ts +30 -0
  322. package/dist/settings/indexing-settings.d.ts.map +1 -0
  323. package/dist/settings/indexing-settings.js +58 -0
  324. package/dist/settings/indexing-settings.js.map +1 -0
  325. package/dist/settings/llm-settings-service.d.ts +6 -0
  326. package/dist/settings/llm-settings-service.d.ts.map +1 -1
  327. package/dist/settings/llm-settings-service.js +137 -12
  328. package/dist/settings/llm-settings-service.js.map +1 -1
  329. package/dist/settings/llm-settings.d.ts +68 -2
  330. package/dist/settings/llm-settings.d.ts.map +1 -1
  331. package/dist/settings/llm-settings.js +119 -17
  332. package/dist/settings/llm-settings.js.map +1 -1
  333. package/dist/settings/model-api.d.ts +10 -0
  334. package/dist/settings/model-api.d.ts.map +1 -0
  335. package/dist/settings/model-api.js +10 -0
  336. package/dist/settings/model-api.js.map +1 -0
  337. package/dist/storage/home.d.ts +1 -0
  338. package/dist/storage/home.d.ts.map +1 -1
  339. package/dist/storage/home.js +37 -2
  340. package/dist/storage/home.js.map +1 -1
  341. package/dist/tools/core-tools.d.ts +2 -0
  342. package/dist/tools/core-tools.d.ts.map +1 -1
  343. package/dist/tools/core-tools.js +91 -1
  344. package/dist/tools/core-tools.js.map +1 -1
  345. package/dist/ui/shared/activity.d.ts +27 -0
  346. package/dist/ui/shared/activity.d.ts.map +1 -0
  347. package/dist/ui/shared/activity.js +384 -0
  348. package/dist/ui/shared/activity.js.map +1 -0
  349. package/dist/ui/shared/full-message.d.ts +22 -0
  350. package/dist/ui/shared/full-message.d.ts.map +1 -0
  351. package/dist/ui/shared/full-message.js +40 -0
  352. package/dist/ui/shared/full-message.js.map +1 -0
  353. package/dist/ui/shared/local-links.d.ts +7 -0
  354. package/dist/ui/shared/local-links.d.ts.map +1 -0
  355. package/dist/ui/shared/local-links.js +24 -0
  356. package/dist/ui/shared/local-links.js.map +1 -0
  357. package/dist/ui/shared/markdown-stream.d.ts +25 -0
  358. package/dist/ui/shared/markdown-stream.d.ts.map +1 -0
  359. package/dist/ui/shared/markdown-stream.js +35 -0
  360. package/dist/ui/shared/markdown-stream.js.map +1 -0
  361. package/dist/ui/shared/markdown.d.ts +70 -0
  362. package/dist/ui/shared/markdown.d.ts.map +1 -0
  363. package/dist/ui/shared/markdown.js +434 -0
  364. package/dist/ui/shared/markdown.js.map +1 -0
  365. package/dist/ui/shared/presentation.d.ts +10 -2
  366. package/dist/ui/shared/presentation.d.ts.map +1 -1
  367. package/dist/ui/shared/presentation.js +83 -22
  368. package/dist/ui/shared/presentation.js.map +1 -1
  369. package/dist/ui/shared/protocol-state.d.ts +19 -0
  370. package/dist/ui/shared/protocol-state.d.ts.map +1 -1
  371. package/dist/ui/shared/protocol-state.js +188 -26
  372. package/dist/ui/shared/protocol-state.js.map +1 -1
  373. package/dist/ui/shared/virtual-list.d.ts +34 -0
  374. package/dist/ui/shared/virtual-list.d.ts.map +1 -0
  375. package/dist/ui/shared/virtual-list.js +143 -0
  376. package/dist/ui/shared/virtual-list.js.map +1 -0
  377. package/dist/ui/tui/commands.d.ts +1 -1
  378. package/dist/ui/tui/commands.d.ts.map +1 -1
  379. package/dist/ui/tui/commands.js +9 -3
  380. package/dist/ui/tui/commands.js.map +1 -1
  381. package/dist/ui/tui/store.d.ts +26 -0
  382. package/dist/ui/tui/store.d.ts.map +1 -1
  383. package/dist/ui/tui/store.js +67 -3
  384. package/dist/ui/tui/store.js.map +1 -1
  385. package/dist/ui/tui/tui-app.d.ts.map +1 -1
  386. package/dist/ui/tui/tui-app.js +316 -38
  387. package/dist/ui/tui/tui-app.js.map +1 -1
  388. package/dist/ui/tui/view.d.ts +10 -0
  389. package/dist/ui/tui/view.d.ts.map +1 -1
  390. package/dist/ui/tui/view.js +253 -49
  391. package/dist/ui/tui/view.js.map +1 -1
  392. package/dist/version.d.ts +1 -1
  393. package/dist/version.d.ts.map +1 -1
  394. package/dist/version.js +1 -1
  395. package/dist/version.js.map +1 -1
  396. package/package.json +13 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/documents/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { OleDocument } from "./ole.js";
2
+ /**
3
+ * Text out of the pre-2007 binary Office formats.
4
+ *
5
+ * Each of the three keeps its text somewhere different inside the compound
6
+ * document, and none of them stores it as a contiguous run, so the shape of
7
+ * every function here follows the format rather than a shared abstraction.
8
+ * The goal throughout is the words on the page: layout, styling and revision
9
+ * history are deliberately dropped.
10
+ */
11
+ export type LegacyKind = "doc" | "xls" | "ppt";
12
+ export interface LegacyDocument {
13
+ kind: LegacyKind;
14
+ text: string;
15
+ sections: readonly {
16
+ name: string;
17
+ text: string;
18
+ }[];
19
+ }
20
+ /** Which legacy format a compound document holds, decided by its streams. */
21
+ export declare function detectLegacyKind(document: OleDocument): LegacyKind | undefined;
22
+ export declare function extractLegacy(document: OleDocument, kind: LegacyKind): LegacyDocument;
23
+ //# sourceMappingURL=legacy-office.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-office.d.ts","sourceRoot":"","sources":["../../src/documents/legacy-office.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;;;;;GAQG;AAEH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrD;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAK9E;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc,CAIrF"}
@@ -0,0 +1,439 @@
1
+ import { OleDocument } from "./ole.js";
2
+ /** Which legacy format a compound document holds, decided by its streams. */
3
+ export function detectLegacyKind(document) {
4
+ if (document.has("WordDocument"))
5
+ return "doc";
6
+ if (document.has("Workbook") || document.has("Book"))
7
+ return "xls";
8
+ if (document.has("PowerPoint Document"))
9
+ return "ppt";
10
+ return undefined;
11
+ }
12
+ export function extractLegacy(document, kind) {
13
+ if (kind === "doc")
14
+ return { kind, text: extractWord(document), sections: [] };
15
+ if (kind === "xls")
16
+ return extractWorkbook(document);
17
+ return extractPresentation(document);
18
+ }
19
+ // ---------------------------------------------------------------------------
20
+ // Word 97-2003
21
+ // ---------------------------------------------------------------------------
22
+ /** Offsets into the File Information Block, which is fixed for Word 97 onwards. */
23
+ const FIB_FLAGS = 0x000a;
24
+ const FIB_CCP_TEXT = 0x004c;
25
+ const FIB_FC_CLX = 0x01a2;
26
+ const FIB_LCB_CLX = 0x01a6;
27
+ /** Bit 9 of the FIB flags picks which of the two table streams is in use. */
28
+ const FIB_WHICH_TABLE_STREAM = 0x0200;
29
+ /**
30
+ * Word does not store its text in reading order. The document is a sequence of
31
+ * pieces, and the piece table in the table stream says where each one lives and
32
+ * whether it was written as 8-bit or 16-bit characters. Reading the text stream
33
+ * directly returns the pieces in whatever order editing left them.
34
+ */
35
+ function extractWord(document) {
36
+ const main = document.read("WordDocument");
37
+ if (!main || main.length < FIB_LCB_CLX + 4)
38
+ throw new Error("Word document has no readable FIB");
39
+ const useOneTable = (main.readUInt16LE(FIB_FLAGS) & FIB_WHICH_TABLE_STREAM) !== 0;
40
+ const table = document.read(useOneTable ? "1Table" : "0Table") ?? document.read("1Table") ?? document.read("0Table");
41
+ const characterCount = main.readUInt32LE(FIB_CCP_TEXT);
42
+ if (!table) {
43
+ // A document written by a very old release keeps its text contiguously from
44
+ // the start of the text stream, with no piece table to consult.
45
+ return collapse(decodeWordRun(main.subarray(0x0800, 0x0800 + characterCount), true));
46
+ }
47
+ const clxOffset = main.readUInt32LE(FIB_FC_CLX);
48
+ const clxLength = main.readUInt32LE(FIB_LCB_CLX);
49
+ const pieces = readPieceTable(table.subarray(clxOffset, clxOffset + clxLength), characterCount);
50
+ let text = "";
51
+ for (const piece of pieces) {
52
+ text += decodeWordRun(main.subarray(piece.offset, piece.offset + piece.byteLength), piece.compressed);
53
+ }
54
+ return collapse(text);
55
+ }
56
+ /**
57
+ * Walks the CLX to its piece table. The CLX is a list of property runs, each
58
+ * introduced by 0x01, followed by the piece table introduced by 0x02, so the
59
+ * property runs have to be stepped over rather than searched past.
60
+ */
61
+ function readPieceTable(clx, characterCount) {
62
+ let cursor = 0;
63
+ while (cursor < clx.length && clx[cursor] === 0x01) {
64
+ if (cursor + 3 > clx.length)
65
+ return [];
66
+ cursor += 3 + clx.readUInt16LE(cursor + 1);
67
+ }
68
+ if (cursor >= clx.length || clx[cursor] !== 0x02 || cursor + 5 > clx.length)
69
+ return [];
70
+ const length = clx.readUInt32LE(cursor + 1);
71
+ const table = clx.subarray(cursor + 5, cursor + 5 + length);
72
+ // The table is (n + 1) character positions followed by n 8-byte descriptors,
73
+ // which is what fixes n for a given length.
74
+ const count = Math.floor((table.length - 4) / 12);
75
+ const pieces = [];
76
+ for (let index = 0; index < count; index += 1) {
77
+ const start = table.readUInt32LE(index * 4);
78
+ const end = table.readUInt32LE((index + 1) * 4);
79
+ if (end <= start || start > characterCount)
80
+ continue;
81
+ const descriptor = (count + 1) * 4 + index * 8;
82
+ if (descriptor + 8 > table.length)
83
+ break;
84
+ const fc = table.readUInt32LE(descriptor + 2);
85
+ // Bit 30 marks a piece written one byte per character; clearing it and
86
+ // halving the remainder gives the byte offset of a compressed piece.
87
+ const compressed = (fc & 0x40000000) !== 0;
88
+ const offset = compressed ? (fc & 0x3fffffff) >>> 1 : fc & 0x3fffffff;
89
+ const characters = end - start;
90
+ pieces.push({ offset, byteLength: compressed ? characters : characters * 2, compressed });
91
+ }
92
+ return pieces;
93
+ }
94
+ /**
95
+ * Word's control characters, mapped to what they mean to a reader. Everything
96
+ * below a space that is not listed marks a field or an anchor and is dropped.
97
+ */
98
+ function decodeWordRun(run, compressed) {
99
+ const decoded = compressed
100
+ // A compressed piece is Windows-1252 with a handful of remapped positions;
101
+ // for the CJK documents this exists to read, those pieces are pure ASCII.
102
+ ? new TextDecoder("windows-1252").decode(run)
103
+ : new TextDecoder("utf-16le").decode(run);
104
+ let text = "";
105
+ for (const character of decoded) {
106
+ const code = character.codePointAt(0) ?? 0;
107
+ if (code === 0x0d || code === 0x07)
108
+ text += "\n";
109
+ else if (code === 0x0b)
110
+ text += "\n";
111
+ else if (code === 0x09)
112
+ text += "\t";
113
+ else if (code === 0x0c)
114
+ text += "\n\n";
115
+ else if (code === 0x1e)
116
+ text += "-";
117
+ else if (code === 0x1f)
118
+ text += "";
119
+ else if (code >= 0x20 || code === 0x0a)
120
+ text += character;
121
+ }
122
+ return text;
123
+ }
124
+ // ---------------------------------------------------------------------------
125
+ // Excel 97-2003
126
+ // ---------------------------------------------------------------------------
127
+ const RECORD_FORMULA = 0x0006;
128
+ const RECORD_EOF = 0x000a;
129
+ const RECORD_CONTINUE = 0x003c;
130
+ const RECORD_BOUNDSHEET = 0x0085;
131
+ const RECORD_SST = 0x00fc;
132
+ const RECORD_LABELSST = 0x00fd;
133
+ const RECORD_MULRK = 0x00bd;
134
+ const RECORD_BOF = 0x0809;
135
+ const RECORD_RK = 0x027e;
136
+ const RECORD_LABEL = 0x0204;
137
+ const RECORD_NUMBER = 0x0203;
138
+ const RECORD_STRING = 0x0207;
139
+ const RECORD_BOOLERR = 0x0205;
140
+ /**
141
+ * Excel writes one flat record stream for the whole workbook: a global section
142
+ * holding the shared string table and the sheet directory, then one section per
143
+ * sheet. Cells reference strings by index, so the table has to be read first.
144
+ */
145
+ function extractWorkbook(document) {
146
+ const stream = document.read("Workbook") ?? document.read("Book");
147
+ if (!stream)
148
+ throw new Error("Workbook stream is missing");
149
+ const records = readBiffRecords(stream);
150
+ const sharedStrings = readSharedStringTable(records);
151
+ const sheets = records
152
+ .filter((record) => record.id === RECORD_BOUNDSHEET && record.body.length >= 8)
153
+ .map((record) => ({
154
+ offset: record.body.readUInt32LE(0),
155
+ name: readShortBiffString(record.body, 6),
156
+ }));
157
+ const sections = sheets.map((sheet, index) => ({
158
+ name: sheet.name || `工作表 ${index + 1}`,
159
+ text: readSheetCells(stream, sheet.offset, sharedStrings),
160
+ }));
161
+ return { kind: "xls", sections, text: joinSections(sections) };
162
+ }
163
+ function readBiffRecords(stream, from = 0, stopAtEof = false) {
164
+ const records = [];
165
+ let cursor = from;
166
+ while (cursor + 4 <= stream.length) {
167
+ const id = stream.readUInt16LE(cursor);
168
+ const length = stream.readUInt16LE(cursor + 2);
169
+ if (cursor + 4 + length > stream.length)
170
+ break;
171
+ const body = stream.subarray(cursor + 4, cursor + 4 + length);
172
+ cursor += 4 + length;
173
+ if (id === RECORD_CONTINUE) {
174
+ // A CONTINUE belongs to whatever record came before it; on its own it has
175
+ // no meaning, and dropping it would truncate long strings.
176
+ records.at(-1)?.continuations.push(body);
177
+ continue;
178
+ }
179
+ records.push({ id, body, continuations: [] });
180
+ if (stopAtEof && id === RECORD_EOF)
181
+ break;
182
+ }
183
+ return records;
184
+ }
185
+ /**
186
+ * The shared string table can outgrow one record, and a string may straddle the
187
+ * boundary. Each continuation restarts with its own flags byte saying whether
188
+ * the remainder is 8- or 16-bit, so the pieces cannot simply be concatenated.
189
+ */
190
+ function readSharedStringTable(records) {
191
+ const record = records.find((candidate) => candidate.id === RECORD_SST);
192
+ if (!record || record.body.length < 8)
193
+ return [];
194
+ const chunks = [record.body, ...record.continuations];
195
+ const uniqueCount = record.body.readUInt32LE(4);
196
+ const strings = [];
197
+ let chunk = 0;
198
+ let cursor = 8;
199
+ const advance = () => {
200
+ while (chunk < chunks.length && cursor >= (chunks[chunk]?.length ?? 0)) {
201
+ chunk += 1;
202
+ cursor = 0;
203
+ }
204
+ return chunk < chunks.length;
205
+ };
206
+ for (let index = 0; index < uniqueCount; index += 1) {
207
+ if (!advance())
208
+ break;
209
+ const current = chunks[chunk];
210
+ if (cursor + 3 > current.length)
211
+ break;
212
+ const characters = current.readUInt16LE(cursor);
213
+ let flags = current.readUInt8(cursor + 2);
214
+ cursor += 3;
215
+ // Rich-text runs and East Asian phonetic guides are sized here and skipped
216
+ // after the characters; both are formatting, not content.
217
+ let runCount = 0;
218
+ let phoneticBytes = 0;
219
+ if ((flags & 0x08) !== 0) {
220
+ runCount = current.readUInt16LE(cursor);
221
+ cursor += 2;
222
+ }
223
+ if ((flags & 0x04) !== 0) {
224
+ phoneticBytes = current.readUInt32LE(cursor);
225
+ cursor += 4;
226
+ }
227
+ let text = "";
228
+ let remaining = characters;
229
+ while (remaining > 0) {
230
+ if (!advance())
231
+ break;
232
+ const buffer = chunks[chunk];
233
+ const wide = (flags & 0x01) !== 0;
234
+ const available = buffer.length - cursor;
235
+ const take = Math.min(remaining, wide ? Math.floor(available / 2) : available);
236
+ if (take <= 0) {
237
+ // The value continues in the next record, which restates its own width.
238
+ chunk += 1;
239
+ cursor = 0;
240
+ if (chunk >= chunks.length)
241
+ break;
242
+ flags = chunks[chunk].readUInt8(0);
243
+ cursor = 1;
244
+ continue;
245
+ }
246
+ const bytes = wide ? take * 2 : take;
247
+ text += wide
248
+ ? new TextDecoder("utf-16le").decode(buffer.subarray(cursor, cursor + bytes))
249
+ : new TextDecoder("windows-1252").decode(buffer.subarray(cursor, cursor + bytes));
250
+ cursor += bytes;
251
+ remaining -= take;
252
+ }
253
+ strings.push(text);
254
+ cursor += runCount * 4 + phoneticBytes;
255
+ }
256
+ return strings;
257
+ }
258
+ function readSheetCells(stream, offset, sharedStrings) {
259
+ if (offset <= 0 || offset >= stream.length || stream.readUInt16LE(offset) !== RECORD_BOF)
260
+ return "";
261
+ const rows = new Map();
262
+ const put = (row, column, value) => {
263
+ if (value === "")
264
+ return;
265
+ const line = rows.get(row) ?? new Map();
266
+ line.set(column, value);
267
+ rows.set(row, line);
268
+ };
269
+ const records = readBiffRecords(stream, offset, true);
270
+ for (const [index, record] of records.entries()) {
271
+ const body = record.body;
272
+ if (body.length < 4)
273
+ continue;
274
+ const row = body.readUInt16LE(0);
275
+ const column = body.readUInt16LE(2);
276
+ switch (record.id) {
277
+ case RECORD_LABELSST:
278
+ if (body.length >= 10)
279
+ put(row, column, sharedStrings[body.readUInt32LE(6)] ?? "");
280
+ break;
281
+ case RECORD_LABEL:
282
+ put(row, column, readShortBiffString(body, 6));
283
+ break;
284
+ case RECORD_NUMBER:
285
+ if (body.length >= 14)
286
+ put(row, column, formatNumber(body.readDoubleLE(6)));
287
+ break;
288
+ case RECORD_RK:
289
+ if (body.length >= 10)
290
+ put(row, column, formatNumber(decodeRk(body.readUInt32LE(6))));
291
+ break;
292
+ case RECORD_MULRK:
293
+ // One record carrying a run of numbers across consecutive columns.
294
+ for (let cell = 0; cell + 6 <= body.length - 2; cell += 6) {
295
+ put(row, column + cell / 6, formatNumber(decodeRk(body.readUInt32LE(4 + cell + 2))));
296
+ }
297
+ break;
298
+ case RECORD_BOOLERR:
299
+ if (body.length >= 8)
300
+ put(row, column, body.readUInt8(7) === 0 ? (body.readUInt8(6) ? "TRUE" : "FALSE") : "#ERR");
301
+ break;
302
+ case RECORD_FORMULA: {
303
+ // A formula that evaluated to text is followed by the text itself; one
304
+ // that evaluated to a number carries the result in its own body.
305
+ const next = records[index + 1];
306
+ if (next?.id === RECORD_STRING)
307
+ put(row, column, readBiffString(next.body));
308
+ else if (body.length >= 14 && body.readUInt16LE(12) !== 0xffff)
309
+ put(row, column, formatNumber(body.readDoubleLE(6)));
310
+ break;
311
+ }
312
+ default:
313
+ break;
314
+ }
315
+ }
316
+ return [...rows.entries()]
317
+ .sort(([left], [right]) => left - right)
318
+ .map(([, line]) => [...line.entries()].sort(([left], [right]) => left - right).map(([, value]) => value).join("\t"))
319
+ .join("\n");
320
+ }
321
+ /** A BIFF string whose character count is one byte, as used for sheet names. */
322
+ function readShortBiffString(body, offset) {
323
+ if (offset >= body.length)
324
+ return "";
325
+ const characters = body.readUInt8(offset);
326
+ const wide = offset + 1 < body.length && (body.readUInt8(offset + 1) & 0x01) !== 0;
327
+ const start = offset + 2;
328
+ return wide
329
+ ? new TextDecoder("utf-16le").decode(body.subarray(start, start + characters * 2))
330
+ : new TextDecoder("windows-1252").decode(body.subarray(start, start + characters));
331
+ }
332
+ /** A BIFF string whose character count is two bytes, as used for cell values. */
333
+ function readBiffString(body) {
334
+ if (body.length < 3)
335
+ return "";
336
+ const characters = body.readUInt16LE(0);
337
+ const wide = (body.readUInt8(2) & 0x01) !== 0;
338
+ return wide
339
+ ? new TextDecoder("utf-16le").decode(body.subarray(3, 3 + characters * 2))
340
+ : new TextDecoder("windows-1252").decode(body.subarray(3, 3 + characters));
341
+ }
342
+ /**
343
+ * RK packs a number into 32 bits: the low two bits say whether the value was
344
+ * stored as a truncated double or a 30-bit integer, and whether it was scaled.
345
+ */
346
+ function decodeRk(value) {
347
+ const isInteger = (value & 0x02) !== 0;
348
+ let number;
349
+ if (isInteger) {
350
+ // Arithmetic shift: the 30-bit payload is signed.
351
+ number = value >> 2;
352
+ }
353
+ else {
354
+ const buffer = Buffer.alloc(8);
355
+ buffer.writeUInt32LE(value & 0xfffffffc, 4);
356
+ number = buffer.readDoubleLE(0);
357
+ }
358
+ return (value & 0x01) !== 0 ? number / 100 : number;
359
+ }
360
+ function formatNumber(value) {
361
+ if (!Number.isFinite(value))
362
+ return "";
363
+ // Excel stores everything as a double; integers should not read as "3.0", and
364
+ // the rest should not carry the noise of binary rounding.
365
+ return Number.isInteger(value) ? String(value) : String(Number(value.toPrecision(15)));
366
+ }
367
+ // ---------------------------------------------------------------------------
368
+ // PowerPoint 97-2003
369
+ // ---------------------------------------------------------------------------
370
+ const ATOM_TEXT_CHARS = 0x0fa0;
371
+ const ATOM_TEXT_BYTES = 0x0fa8;
372
+ const ATOM_SLIDE_PERSIST = 0x03f3;
373
+ /**
374
+ * PowerPoint stores its text as atoms scattered through a record tree. Walking
375
+ * the tree in order recovers the text in slide order without having to model
376
+ * the drawing hierarchy the atoms hang off.
377
+ */
378
+ function extractPresentation(document) {
379
+ const stream = document.read("PowerPoint Document");
380
+ if (!stream)
381
+ throw new Error("PowerPoint Document stream is missing");
382
+ const slides = [];
383
+ let current = [];
384
+ walkPptRecords(stream, 0, stream.length, (type, body) => {
385
+ if (type === ATOM_SLIDE_PERSIST && current.length > 0) {
386
+ slides.push(current);
387
+ current = [];
388
+ return;
389
+ }
390
+ const text = type === ATOM_TEXT_CHARS
391
+ ? new TextDecoder("utf-16le").decode(body)
392
+ : type === ATOM_TEXT_BYTES
393
+ ? new TextDecoder("windows-1252").decode(body)
394
+ : undefined;
395
+ // Vertical tab is a soft line break and carriage return ends a paragraph.
396
+ if (text !== undefined && text.trim() !== "")
397
+ current.push(text.replace(/[\v\r]/g, "\n").trim());
398
+ });
399
+ if (current.length > 0)
400
+ slides.push(current);
401
+ const sections = slides.map((lines, index) => ({
402
+ name: `幻灯片 ${index + 1}`,
403
+ text: lines.join("\n"),
404
+ }));
405
+ return { kind: "ppt", sections, text: joinSections(sections) };
406
+ }
407
+ /**
408
+ * Records nest: the low nibble of the first field is 0xF on a container, whose
409
+ * body is more records rather than data.
410
+ */
411
+ function walkPptRecords(stream, from, to, visit, depth = 0) {
412
+ if (depth > 32)
413
+ return;
414
+ let cursor = from;
415
+ while (cursor + 8 <= to) {
416
+ const version = stream.readUInt16LE(cursor) & 0x000f;
417
+ const type = stream.readUInt16LE(cursor + 2);
418
+ const length = stream.readUInt32LE(cursor + 4);
419
+ const start = cursor + 8;
420
+ const end = start + length;
421
+ if (length < 0 || end > to)
422
+ break;
423
+ if (version === 0x0f)
424
+ walkPptRecords(stream, start, end, visit, depth + 1);
425
+ else
426
+ visit(type, stream.subarray(start, end));
427
+ cursor = end;
428
+ }
429
+ }
430
+ function joinSections(sections) {
431
+ return sections
432
+ .filter((section) => section.text.trim() !== "")
433
+ .map((section) => `## ${section.name}\n${section.text}`)
434
+ .join("\n\n");
435
+ }
436
+ function collapse(value) {
437
+ return value.replace(/\n{3,}/g, "\n\n").trim();
438
+ }
439
+ //# sourceMappingURL=legacy-office.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-office.js","sourceRoot":"","sources":["../../src/documents/legacy-office.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The container every pre-2007 Office file is written in.
3
+ *
4
+ * A `.doc`, `.xls` or `.ppt` is a Compound File Binary document: a FAT-style
5
+ * filesystem inside one file, whose named streams hold the actual format. The
6
+ * reader is here so the three legacy parsers share one implementation of the
7
+ * container and only differ in how they read their own stream.
8
+ */
9
+ export declare class OleDocument {
10
+ #private;
11
+ private constructor();
12
+ static open(buffer: Buffer): OleDocument;
13
+ /** Stream names present in the document, for diagnostics and format sniffing. */
14
+ names(): string[];
15
+ has(name: string): boolean;
16
+ /** Reads a whole named stream, or undefined when the document has no such stream. */
17
+ read(name: string): Buffer | undefined;
18
+ }
19
+ export declare function looksLikeOle(buffer: Buffer): boolean;
20
+ //# sourceMappingURL=ole.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ole.d.ts","sourceRoot":"","sources":["../../src/documents/ole.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqBH,qBAAa,WAAW;;IAUtB,OAAO;IAeP,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;IAKxC,iFAAiF;IACjF,KAAK,IAAI,MAAM,EAAE;IAIjB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,qFAAqF;IACrF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CA4HvC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpD"}