@humain/terminal 0.0.6 → 0.0.8

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 (493) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +17 -10
  3. package/dist/bundle/chunks/anthropic-messages-GDMGYAZB.js +6 -0
  4. package/dist/bundle/chunks/anthropic.js +75 -0
  5. package/dist/bundle/chunks/azure-openai-responses-ZN52D6YC.js +2 -0
  6. package/dist/bundle/chunks/bedrock-converse-stream.js +77 -0
  7. package/dist/bundle/chunks/chunk-3VI4HD7D.js +31 -0
  8. package/dist/bundle/chunks/chunk-6R7UI4IY.js +2 -0
  9. package/dist/bundle/chunks/chunk-72KO4OMP.js +2 -0
  10. package/dist/bundle/chunks/chunk-74NVHVNZ.js +16 -0
  11. package/dist/bundle/chunks/chunk-7DDKXS2Q.js +2 -0
  12. package/dist/bundle/chunks/chunk-ARF4OE6X.js +105 -0
  13. package/dist/bundle/chunks/chunk-BOW22LW6.js +42 -0
  14. package/dist/bundle/chunks/chunk-BZQ53VGE.js +70 -0
  15. package/dist/bundle/chunks/chunk-CBHC6EL7.js +133 -0
  16. package/dist/bundle/chunks/chunk-D7XAASZM.js +4 -0
  17. package/dist/bundle/chunks/chunk-ECWELYBH.js +17 -0
  18. package/dist/bundle/chunks/chunk-GMWCTUPB.js +2 -0
  19. package/dist/bundle/chunks/chunk-H2O6VOXT.js +11 -0
  20. package/dist/bundle/chunks/chunk-JUUC5AZY.js +2 -0
  21. package/dist/bundle/chunks/chunk-JXWJOIH4.js +2 -0
  22. package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  23. package/dist/bundle/chunks/chunk-LVVZS2NO.js +12 -0
  24. package/dist/bundle/chunks/chunk-MA4UUCYX.js +18 -0
  25. package/dist/bundle/chunks/chunk-MMFBCF6F.js +5986 -0
  26. package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  27. package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  28. package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  29. package/dist/bundle/chunks/chunk-PSKDLDLZ.js +44 -0
  30. package/dist/bundle/chunks/chunk-SGTGQNNP.js +4 -0
  31. package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
  32. package/dist/bundle/chunks/chunk-TXBQIIIO.js +2 -0
  33. package/dist/bundle/chunks/chunk-WJZ4KLGL.js +2 -0
  34. package/dist/bundle/chunks/chunk-XNGRGP62.js +2 -0
  35. package/dist/bundle/chunks/dist-BXEVYJIO.js +7 -0
  36. package/dist/bundle/chunks/es-P2KNSZYR.js +9 -0
  37. package/dist/bundle/chunks/es5-FGTJ7ZFW.js +2 -0
  38. package/dist/bundle/chunks/event-streams-JOSQQSII.js +2 -0
  39. package/dist/bundle/chunks/extract-2L7ZVN7F.js +106 -0
  40. package/dist/bundle/chunks/github-copilot.js +2 -0
  41. package/dist/bundle/chunks/google-generative-ai-FF7M7XHT.js +2 -0
  42. package/dist/bundle/chunks/google-vertex-YMUBFRBA.js +2 -0
  43. package/dist/bundle/chunks/https-proxy-agent-562J2I52.js +2 -0
  44. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  45. package/dist/bundle/chunks/kimi-coding.js +2 -0
  46. package/dist/bundle/chunks/mistral-conversations-O4M7IQML.js +5 -0
  47. package/dist/bundle/chunks/multipart-parser-FMGQ7342.js +3 -0
  48. package/dist/bundle/chunks/node-XY3CBY3C.js +294 -0
  49. package/dist/bundle/chunks/node-ZHY4LHC7.js +15 -0
  50. package/dist/bundle/chunks/openai-codex-responses-HRVCDY54.js +8 -0
  51. package/dist/bundle/chunks/openai-codex.js +75 -0
  52. package/dist/bundle/chunks/openai-completions-L4AHDQ5D.js +7 -0
  53. package/dist/bundle/chunks/openai-responses-4MWLJHIK.js +2 -0
  54. package/dist/bundle/chunks/openrouter-images-Y2PCWAQH.js +2 -0
  55. package/dist/bundle/chunks/openrouter.js +75 -0
  56. package/dist/bundle/chunks/pdfjs-UKQT3OWY.js +107 -0
  57. package/dist/bundle/chunks/pi-messages-57K43J6J.js +8 -0
  58. package/dist/bundle/chunks/promise-J5TGSM32.js +2 -0
  59. package/dist/bundle/chunks/radius.js +75 -0
  60. package/dist/bundle/chunks/src-QKGKDFSU.js +4 -0
  61. package/dist/bundle/chunks/undici-D6ABF53Q.js +2 -0
  62. package/dist/bundle/chunks/webapi-AFS5FDJJ.js +5 -0
  63. package/dist/bundle/chunks/xai.js +2 -0
  64. package/dist/bundle/cli.js +3 -0
  65. package/dist/bundle/client.js +2 -0
  66. package/dist/bundle/index.js +2 -0
  67. package/dist/bundle/rpc-entry.js +3 -0
  68. package/dist/cli/args.d.ts +1 -0
  69. package/dist/cli/args.d.ts.map +1 -1
  70. package/dist/cli/args.js +29 -9
  71. package/dist/cli/args.js.map +1 -1
  72. package/dist/cli/file-processor.d.ts.map +1 -1
  73. package/dist/cli/file-processor.js +2 -1
  74. package/dist/cli/file-processor.js.map +1 -1
  75. package/dist/cli/startup-ui.d.ts.map +1 -1
  76. package/dist/cli/startup-ui.js +2 -1
  77. package/dist/cli/startup-ui.js.map +1 -1
  78. package/dist/config.d.ts +1 -0
  79. package/dist/config.d.ts.map +1 -1
  80. package/dist/config.js +19 -11
  81. package/dist/config.js.map +1 -1
  82. package/dist/core/agent-session.d.ts +62 -15
  83. package/dist/core/agent-session.d.ts.map +1 -1
  84. package/dist/core/agent-session.js +240 -104
  85. package/dist/core/agent-session.js.map +1 -1
  86. package/dist/core/auth-storage.d.ts.map +1 -1
  87. package/dist/core/auth-storage.js +6 -7
  88. package/dist/core/auth-storage.js.map +1 -1
  89. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  90. package/dist/core/compaction/branch-summarization.js +7 -3
  91. package/dist/core/compaction/branch-summarization.js.map +1 -1
  92. package/dist/core/compaction/compaction.d.ts +9 -3
  93. package/dist/core/compaction/compaction.d.ts.map +1 -1
  94. package/dist/core/compaction/compaction.js +59 -36
  95. package/dist/core/compaction/compaction.js.map +1 -1
  96. package/dist/core/defaults.d.ts +1 -0
  97. package/dist/core/defaults.d.ts.map +1 -1
  98. package/dist/core/defaults.js +9 -0
  99. package/dist/core/defaults.js.map +1 -1
  100. package/dist/core/extensions/index.d.ts +2 -2
  101. package/dist/core/extensions/index.d.ts.map +1 -1
  102. package/dist/core/extensions/index.js +1 -1
  103. package/dist/core/extensions/index.js.map +1 -1
  104. package/dist/core/extensions/loader.d.ts.map +1 -1
  105. package/dist/core/extensions/loader.js +115 -48
  106. package/dist/core/extensions/loader.js.map +1 -1
  107. package/dist/core/extensions/runner.d.ts +5 -0
  108. package/dist/core/extensions/runner.d.ts.map +1 -1
  109. package/dist/core/extensions/runner.js +44 -1
  110. package/dist/core/extensions/runner.js.map +1 -1
  111. package/dist/core/extensions/types.d.ts +56 -10
  112. package/dist/core/extensions/types.d.ts.map +1 -1
  113. package/dist/core/extensions/types.js +3 -0
  114. package/dist/core/extensions/types.js.map +1 -1
  115. package/dist/core/footer-data-provider.d.ts +1 -1
  116. package/dist/core/footer-data-provider.js +1 -1
  117. package/dist/core/footer-data-provider.js.map +1 -1
  118. package/dist/core/keybindings.d.ts +20 -19
  119. package/dist/core/keybindings.d.ts.map +1 -1
  120. package/dist/core/keybindings.js +26 -5
  121. package/dist/core/keybindings.js.map +1 -1
  122. package/dist/core/model-config.d.ts +5 -0
  123. package/dist/core/model-config.d.ts.map +1 -1
  124. package/dist/core/model-config.js +3 -1
  125. package/dist/core/model-config.js.map +1 -1
  126. package/dist/core/model-resolver.d.ts +1 -0
  127. package/dist/core/model-resolver.d.ts.map +1 -1
  128. package/dist/core/model-resolver.js +14 -8
  129. package/dist/core/model-resolver.js.map +1 -1
  130. package/dist/core/models-store.d.ts.map +1 -1
  131. package/dist/core/models-store.js +2 -1
  132. package/dist/core/models-store.js.map +1 -1
  133. package/dist/core/package-manager.d.ts.map +1 -1
  134. package/dist/core/package-manager.js +22 -14
  135. package/dist/core/package-manager.js.map +1 -1
  136. package/dist/core/pi-manifest.d.ts.map +1 -1
  137. package/dist/core/pi-manifest.js +2 -1
  138. package/dist/core/pi-manifest.js.map +1 -1
  139. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  140. package/dist/core/remote-catalog-provider.js +2 -1
  141. package/dist/core/remote-catalog-provider.js.map +1 -1
  142. package/dist/core/resource-loader.d.ts.map +1 -1
  143. package/dist/core/resource-loader.js +3 -2
  144. package/dist/core/resource-loader.js.map +1 -1
  145. package/dist/core/sdk.d.ts +2 -2
  146. package/dist/core/sdk.d.ts.map +1 -1
  147. package/dist/core/sdk.js +10 -3
  148. package/dist/core/sdk.js.map +1 -1
  149. package/dist/core/session-export.d.ts +4 -0
  150. package/dist/core/session-export.d.ts.map +1 -0
  151. package/dist/core/session-export.js +32 -0
  152. package/dist/core/session-export.js.map +1 -0
  153. package/dist/core/session-manager.d.ts.map +1 -1
  154. package/dist/core/session-manager.js +6 -3
  155. package/dist/core/session-manager.js.map +1 -1
  156. package/dist/core/settings-diagnostics.d.ts +9 -0
  157. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  158. package/dist/core/settings-diagnostics.js +21 -0
  159. package/dist/core/settings-diagnostics.js.map +1 -0
  160. package/dist/core/settings-manager.d.ts +17 -1
  161. package/dist/core/settings-manager.d.ts.map +1 -1
  162. package/dist/core/settings-manager.js +68 -10
  163. package/dist/core/settings-manager.js.map +1 -1
  164. package/dist/core/skills.d.ts.map +1 -1
  165. package/dist/core/skills.js +51 -33
  166. package/dist/core/skills.js.map +1 -1
  167. package/dist/core/slash-commands.d.ts.map +1 -1
  168. package/dist/core/slash-commands.js +2 -1
  169. package/dist/core/slash-commands.js.map +1 -1
  170. package/dist/core/system-prompt.d.ts.map +1 -1
  171. package/dist/core/system-prompt.js +11 -2
  172. package/dist/core/system-prompt.js.map +1 -1
  173. package/dist/core/tools/bash.d.ts +16 -3
  174. package/dist/core/tools/bash.d.ts.map +1 -1
  175. package/dist/core/tools/bash.js +62 -29
  176. package/dist/core/tools/bash.js.map +1 -1
  177. package/dist/core/tools/edit-diff.d.ts +0 -5
  178. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  179. package/dist/core/tools/edit-diff.js +2 -5
  180. package/dist/core/tools/edit-diff.js.map +1 -1
  181. package/dist/core/tools/edit.d.ts.map +1 -1
  182. package/dist/core/tools/edit.js +20 -4
  183. package/dist/core/tools/edit.js.map +1 -1
  184. package/dist/core/tools/index.d.ts +4 -1
  185. package/dist/core/tools/index.d.ts.map +1 -1
  186. package/dist/core/tools/index.js +19 -1
  187. package/dist/core/tools/index.js.map +1 -1
  188. package/dist/core/tools/powershell.d.ts +16 -0
  189. package/dist/core/tools/powershell.d.ts.map +1 -0
  190. package/dist/core/tools/powershell.js +39 -0
  191. package/dist/core/tools/powershell.js.map +1 -0
  192. package/dist/core/tools/subagent.d.ts.map +1 -1
  193. package/dist/core/tools/subagent.js +4 -1
  194. package/dist/core/tools/subagent.js.map +1 -1
  195. package/dist/core/trust-manager.d.ts.map +1 -1
  196. package/dist/core/trust-manager.js +2 -1
  197. package/dist/core/trust-manager.js.map +1 -1
  198. package/dist/extensions/llama/client.d.ts +6 -0
  199. package/dist/extensions/llama/client.d.ts.map +1 -1
  200. package/dist/extensions/llama/client.js +7 -0
  201. package/dist/extensions/llama/client.js.map +1 -1
  202. package/dist/extensions/llama/index.d.ts.map +1 -1
  203. package/dist/extensions/llama/index.js +2 -0
  204. package/dist/extensions/llama/index.js.map +1 -1
  205. package/dist/extensions/llama/provider.d.ts +3 -1
  206. package/dist/extensions/llama/provider.d.ts.map +1 -1
  207. package/dist/extensions/llama/provider.js +29 -4
  208. package/dist/extensions/llama/provider.js.map +1 -1
  209. package/dist/humain/agent-execution-protocol.d.ts +1 -217
  210. package/dist/humain/agent-execution-protocol.d.ts.map +1 -1
  211. package/dist/humain/agent-execution-protocol.js +1 -203
  212. package/dist/humain/agent-execution-protocol.js.map +1 -1
  213. package/dist/humain/bedrock-provider/vendor/index.bundle.mjs +107 -16
  214. package/dist/humain/mcp-adapter/vendor/CHANGELOG.md +82 -0
  215. package/dist/humain/mcp-adapter/vendor/README.md +47 -15
  216. package/dist/humain/mcp-adapter/vendor/cli.js +4 -4
  217. package/dist/humain/mcp-adapter/vendor/commands.ts +5 -3
  218. package/dist/humain/mcp-adapter/vendor/config.ts +46 -5
  219. package/dist/humain/mcp-adapter/vendor/direct-tools.ts +103 -92
  220. package/dist/humain/mcp-adapter/vendor/dist/agent-dir.d.ts +10 -0
  221. package/dist/humain/mcp-adapter/vendor/dist/agent-dir.js +63 -0
  222. package/dist/humain/mcp-adapter/vendor/dist/agent-dir.js.map +1 -0
  223. package/dist/humain/mcp-adapter/vendor/dist/agent-plugin-loader.d.ts +8 -0
  224. package/dist/humain/mcp-adapter/vendor/dist/agent-plugin-loader.js +356 -0
  225. package/dist/humain/mcp-adapter/vendor/dist/agent-plugin-loader.js.map +1 -0
  226. package/dist/humain/mcp-adapter/vendor/dist/config.d.ts +123 -0
  227. package/dist/humain/mcp-adapter/vendor/dist/config.js +1088 -0
  228. package/dist/humain/mcp-adapter/vendor/dist/config.js.map +1 -0
  229. package/dist/humain/mcp-adapter/vendor/dist/mcp-bearer-store.d.ts +24 -0
  230. package/dist/humain/mcp-adapter/vendor/dist/mcp-bearer-store.js +336 -0
  231. package/dist/humain/mcp-adapter/vendor/dist/mcp-bearer-store.js.map +1 -0
  232. package/dist/humain/mcp-adapter/vendor/dist/metadata-cache.d.ts +19 -0
  233. package/dist/humain/mcp-adapter/vendor/dist/metadata-cache.js +319 -0
  234. package/dist/humain/mcp-adapter/vendor/dist/metadata-cache.js.map +1 -0
  235. package/dist/humain/mcp-adapter/vendor/dist/package-mcp-loader.d.ts +2 -0
  236. package/dist/humain/mcp-adapter/vendor/dist/package-mcp-loader.js +156 -0
  237. package/dist/humain/mcp-adapter/vendor/dist/package-mcp-loader.js.map +1 -0
  238. package/dist/humain/mcp-adapter/vendor/dist/resource-tools.d.ts +1 -0
  239. package/dist/humain/mcp-adapter/vendor/dist/resource-tools.js +15 -0
  240. package/dist/humain/mcp-adapter/vendor/dist/resource-tools.js.map +1 -0
  241. package/dist/humain/mcp-adapter/vendor/dist/types.d.ts +566 -0
  242. package/dist/humain/mcp-adapter/vendor/dist/types.js +287 -0
  243. package/dist/humain/mcp-adapter/vendor/dist/types.js.map +1 -0
  244. package/dist/humain/mcp-adapter/vendor/dist/ui-app-bridge-helpers.d.ts +6 -0
  245. package/dist/humain/mcp-adapter/vendor/dist/ui-app-bridge-helpers.js +37 -0
  246. package/dist/humain/mcp-adapter/vendor/dist/ui-app-bridge-helpers.js.map +1 -0
  247. package/dist/humain/mcp-adapter/vendor/dist/ui-stream-types.d.ts +104 -0
  248. package/dist/humain/mcp-adapter/vendor/dist/ui-stream-types.js +59 -0
  249. package/dist/humain/mcp-adapter/vendor/dist/ui-stream-types.js.map +1 -0
  250. package/dist/humain/mcp-adapter/vendor/dist/ui-tool-visibility.d.ts +4 -0
  251. package/dist/humain/mcp-adapter/vendor/dist/ui-tool-visibility.js +27 -0
  252. package/dist/humain/mcp-adapter/vendor/dist/ui-tool-visibility.js.map +1 -0
  253. package/dist/humain/mcp-adapter/vendor/dist/utils.d.ts +32 -0
  254. package/dist/humain/mcp-adapter/vendor/dist/utils.js +338 -0
  255. package/dist/humain/mcp-adapter/vendor/dist/utils.js.map +1 -0
  256. package/dist/humain/mcp-adapter/vendor/failure-backoff.ts +23 -0
  257. package/dist/humain/mcp-adapter/vendor/index.bundle.mjs +4870 -3878
  258. package/dist/humain/mcp-adapter/vendor/index.ts +294 -88
  259. package/dist/humain/mcp-adapter/vendor/init.ts +41 -30
  260. package/dist/humain/mcp-adapter/vendor/lifecycle.ts +16 -8
  261. package/dist/humain/mcp-adapter/vendor/mcp-auth-flow.ts +124 -32
  262. package/dist/humain/mcp-adapter/vendor/mcp-bearer-store.ts +0 -2
  263. package/dist/humain/mcp-adapter/vendor/mcp-code.ts +2 -0
  264. package/dist/humain/mcp-adapter/vendor/mcp-oauth-provider.ts +155 -16
  265. package/dist/humain/mcp-adapter/vendor/mcp-output-guard.ts +95 -7
  266. package/dist/humain/mcp-adapter/vendor/mcp-probe.ts +18 -4
  267. package/dist/humain/mcp-adapter/vendor/mcp-references.ts +376 -0
  268. package/dist/humain/mcp-adapter/vendor/mcp-status.ts +8 -19
  269. package/dist/humain/mcp-adapter/vendor/metadata-cache.ts +20 -12
  270. package/dist/humain/mcp-adapter/vendor/namespace-tools.ts +276 -0
  271. package/dist/humain/mcp-adapter/vendor/package.json +26 -8
  272. package/dist/humain/mcp-adapter/vendor/proxy-modes.ts +128 -32
  273. package/dist/humain/mcp-adapter/vendor/request-headers-command.ts +1 -1
  274. package/dist/humain/mcp-adapter/vendor/search-ranking.ts +2 -0
  275. package/dist/humain/mcp-adapter/vendor/server-manager.ts +69 -12
  276. package/dist/humain/mcp-adapter/vendor/state.ts +1 -3
  277. package/dist/humain/mcp-adapter/vendor/tool-result-renderer.ts +16 -2
  278. package/dist/humain/mcp-adapter/vendor/types.ts +51 -2
  279. package/dist/humain/mcp-adapter/vendor/ui-server.ts +3 -19
  280. package/dist/humain/mcp-adapter/vendor/ui-session.ts +2 -1
  281. package/dist/humain/mcp-adapter/vendor/utils.ts +21 -19
  282. package/dist/humain/mcp-adapter.d.ts.map +1 -1
  283. package/dist/humain/mcp-adapter.js +4 -0
  284. package/dist/humain/mcp-adapter.js.map +1 -1
  285. package/dist/humain/web-access/vendor/chrome-cookies.d.ts +14 -0
  286. package/dist/humain/web-access/vendor/chrome-cookies.d.ts.map +1 -1
  287. package/dist/humain/web-access/vendor/chrome-cookies.js +85 -33
  288. package/dist/humain/web-access/vendor/chrome-cookies.js.map +1 -1
  289. package/dist/humain/web-access/vendor/credential-source.d.ts +1 -1
  290. package/dist/humain/web-access/vendor/credential-source.d.ts.map +1 -1
  291. package/dist/humain/web-access/vendor/credential-source.js +3 -1
  292. package/dist/humain/web-access/vendor/credential-source.js.map +1 -1
  293. package/dist/humain/web-access/vendor/curator-page.d.ts +2 -29
  294. package/dist/humain/web-access/vendor/curator-page.d.ts.map +1 -1
  295. package/dist/humain/web-access/vendor/curator-page.js +10 -1
  296. package/dist/humain/web-access/vendor/curator-page.js.map +1 -1
  297. package/dist/humain/web-access/vendor/curator-server.d.ts +2 -29
  298. package/dist/humain/web-access/vendor/curator-server.d.ts.map +1 -1
  299. package/dist/humain/web-access/vendor/curator-server.js +4 -0
  300. package/dist/humain/web-access/vendor/curator-server.js.map +1 -1
  301. package/dist/humain/web-access/vendor/extract.d.ts +11 -0
  302. package/dist/humain/web-access/vendor/extract.d.ts.map +1 -1
  303. package/dist/humain/web-access/vendor/extract.js +163 -20
  304. package/dist/humain/web-access/vendor/extract.js.map +1 -1
  305. package/dist/humain/web-access/vendor/fetch-params.d.ts +2 -0
  306. package/dist/humain/web-access/vendor/fetch-params.d.ts.map +1 -1
  307. package/dist/humain/web-access/vendor/fetch-params.js +11 -0
  308. package/dist/humain/web-access/vendor/fetch-params.js.map +1 -1
  309. package/dist/humain/web-access/vendor/gemini-adc.d.ts +10 -0
  310. package/dist/humain/web-access/vendor/gemini-adc.d.ts.map +1 -0
  311. package/dist/humain/web-access/vendor/gemini-adc.js +268 -0
  312. package/dist/humain/web-access/vendor/gemini-adc.js.map +1 -0
  313. package/dist/humain/web-access/vendor/gemini-api.d.ts +7 -1
  314. package/dist/humain/web-access/vendor/gemini-api.d.ts.map +1 -1
  315. package/dist/humain/web-access/vendor/gemini-api.js +51 -15
  316. package/dist/humain/web-access/vendor/gemini-api.js.map +1 -1
  317. package/dist/humain/web-access/vendor/gemini-search.d.ts +9 -4
  318. package/dist/humain/web-access/vendor/gemini-search.d.ts.map +1 -1
  319. package/dist/humain/web-access/vendor/gemini-search.js +63 -21
  320. package/dist/humain/web-access/vendor/gemini-search.js.map +1 -1
  321. package/dist/humain/web-access/vendor/gemini-url-context.d.ts.map +1 -1
  322. package/dist/humain/web-access/vendor/gemini-url-context.js +3 -2
  323. package/dist/humain/web-access/vendor/gemini-url-context.js.map +1 -1
  324. package/dist/humain/web-access/vendor/gemini-web-config.d.ts +8 -1
  325. package/dist/humain/web-access/vendor/gemini-web-config.d.ts.map +1 -1
  326. package/dist/humain/web-access/vendor/gemini-web-config.js +49 -4
  327. package/dist/humain/web-access/vendor/gemini-web-config.js.map +1 -1
  328. package/dist/humain/web-access/vendor/gemini-web.d.ts +2 -1
  329. package/dist/humain/web-access/vendor/gemini-web.d.ts.map +1 -1
  330. package/dist/humain/web-access/vendor/gemini-web.js +8 -3
  331. package/dist/humain/web-access/vendor/gemini-web.js.map +1 -1
  332. package/dist/humain/web-access/vendor/github-api.d.ts +1 -1
  333. package/dist/humain/web-access/vendor/github-api.d.ts.map +1 -1
  334. package/dist/humain/web-access/vendor/github-api.js +6 -4
  335. package/dist/humain/web-access/vendor/github-api.js.map +1 -1
  336. package/dist/humain/web-access/vendor/github-extract.d.ts.map +1 -1
  337. package/dist/humain/web-access/vendor/github-extract.js +50 -3
  338. package/dist/humain/web-access/vendor/github-extract.js.map +1 -1
  339. package/dist/humain/web-access/vendor/github-issue-pr.d.ts +27 -0
  340. package/dist/humain/web-access/vendor/github-issue-pr.d.ts.map +1 -0
  341. package/dist/humain/web-access/vendor/github-issue-pr.js +701 -0
  342. package/dist/humain/web-access/vendor/github-issue-pr.js.map +1 -0
  343. package/dist/humain/web-access/vendor/index.d.ts +3 -31
  344. package/dist/humain/web-access/vendor/index.d.ts.map +1 -1
  345. package/dist/humain/web-access/vendor/index.js +643 -530
  346. package/dist/humain/web-access/vendor/index.js.map +1 -1
  347. package/dist/humain/web-access/vendor/kimi-search.d.ts +5 -0
  348. package/dist/humain/web-access/vendor/kimi-search.d.ts.map +1 -0
  349. package/dist/humain/web-access/vendor/kimi-search.js +228 -0
  350. package/dist/humain/web-access/vendor/kimi-search.js.map +1 -0
  351. package/dist/humain/web-access/vendor/openai-search.d.ts +3 -0
  352. package/dist/humain/web-access/vendor/openai-search.d.ts.map +1 -1
  353. package/dist/humain/web-access/vendor/openai-search.js +89 -16
  354. package/dist/humain/web-access/vendor/openai-search.js.map +1 -1
  355. package/dist/humain/web-access/vendor/page-query.d.ts.map +1 -1
  356. package/dist/humain/web-access/vendor/page-query.js +56 -8
  357. package/dist/humain/web-access/vendor/page-query.js.map +1 -1
  358. package/dist/humain/web-access/vendor/ssrf-protection.js +6 -1
  359. package/dist/humain/web-access/vendor/ssrf-protection.js.map +1 -1
  360. package/dist/humain/web-access/vendor/utils.d.ts +12 -0
  361. package/dist/humain/web-access/vendor/utils.d.ts.map +1 -1
  362. package/dist/humain/web-access/vendor/utils.js +343 -1
  363. package/dist/humain/web-access/vendor/utils.js.map +1 -1
  364. package/dist/humain/web-access/vendor/xcrawl.d.ts +4 -0
  365. package/dist/humain/web-access/vendor/xcrawl.d.ts.map +1 -0
  366. package/dist/humain/web-access/vendor/xcrawl.js +251 -0
  367. package/dist/humain/web-access/vendor/xcrawl.js.map +1 -0
  368. package/dist/humain/web-access/vendor/youtube-extract.js +2 -2
  369. package/dist/humain/web-access/vendor/youtube-extract.js.map +1 -1
  370. package/dist/index.d.ts +6 -5
  371. package/dist/index.d.ts.map +1 -1
  372. package/dist/index.js +5 -4
  373. package/dist/index.js.map +1 -1
  374. package/dist/main.d.ts +3 -0
  375. package/dist/main.d.ts.map +1 -1
  376. package/dist/main.js +19 -14
  377. package/dist/main.js.map +1 -1
  378. package/dist/migrations.d.ts.map +1 -1
  379. package/dist/migrations.js +4 -3
  380. package/dist/migrations.js.map +1 -1
  381. package/dist/modes/interactive/components/model-selector.d.ts +9 -3
  382. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  383. package/dist/modes/interactive/components/model-selector.js +53 -10
  384. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  385. package/dist/modes/interactive/components/settings-selector.d.ts +9 -2
  386. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  387. package/dist/modes/interactive/components/settings-selector.js +128 -55
  388. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  389. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  390. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  391. package/dist/modes/interactive/components/settings-submenu.js +151 -0
  392. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  393. package/dist/modes/interactive/components/thinking-selector.d.ts +15 -3
  394. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  395. package/dist/modes/interactive/components/thinking-selector.js +68 -17
  396. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  397. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  398. package/dist/modes/interactive/external-editor.js +2 -1
  399. package/dist/modes/interactive/external-editor.js.map +1 -1
  400. package/dist/modes/interactive/interactive-mode.d.ts +15 -0
  401. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  402. package/dist/modes/interactive/interactive-mode.js +224 -130
  403. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  404. package/dist/modes/interactive/session-share.d.ts +16 -0
  405. package/dist/modes/interactive/session-share.d.ts.map +1 -0
  406. package/dist/modes/interactive/session-share.js +188 -0
  407. package/dist/modes/interactive/session-share.js.map +1 -0
  408. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  409. package/dist/modes/interactive/theme/theme.js +6 -5
  410. package/dist/modes/interactive/theme/theme.js.map +1 -1
  411. package/dist/modes/json-event.d.ts +16 -13
  412. package/dist/modes/json-event.d.ts.map +1 -1
  413. package/dist/modes/json-event.js +20 -6
  414. package/dist/modes/json-event.js.map +1 -1
  415. package/dist/modes/rpc/rpc-client.d.ts +7 -0
  416. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  417. package/dist/modes/rpc/rpc-client.js +10 -2
  418. package/dist/modes/rpc/rpc-client.js.map +1 -1
  419. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  420. package/dist/modes/rpc/rpc-mode.js +3 -0
  421. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  422. package/dist/modes/rpc/rpc-types.d.ts +14 -7
  423. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  424. package/dist/modes/rpc/rpc-types.js.map +1 -1
  425. package/dist/package-manager-cli.d.ts +1 -0
  426. package/dist/package-manager-cli.d.ts.map +1 -1
  427. package/dist/package-manager-cli.js +189 -3
  428. package/dist/package-manager-cli.js.map +1 -1
  429. package/dist/utils/changelog.d.ts +1 -1
  430. package/dist/utils/changelog.d.ts.map +1 -1
  431. package/dist/utils/changelog.js +12 -2
  432. package/dist/utils/changelog.js.map +1 -1
  433. package/dist/utils/frontmatter.d.ts.map +1 -1
  434. package/dist/utils/frontmatter.js +2 -1
  435. package/dist/utils/frontmatter.js.map +1 -1
  436. package/dist/utils/management-http.d.ts +5 -3
  437. package/dist/utils/management-http.d.ts.map +1 -1
  438. package/dist/utils/management-http.js +14 -10
  439. package/dist/utils/management-http.js.map +1 -1
  440. package/dist/utils/shell.d.ts +3 -0
  441. package/dist/utils/shell.d.ts.map +1 -1
  442. package/dist/utils/shell.js +23 -9
  443. package/dist/utils/shell.js.map +1 -1
  444. package/dist/utils/syntax-highlight.d.ts +1 -0
  445. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  446. package/dist/utils/syntax-highlight.js +64 -1
  447. package/dist/utils/syntax-highlight.js.map +1 -1
  448. package/dist/utils/text.d.ts +8 -0
  449. package/dist/utils/text.d.ts.map +1 -0
  450. package/dist/utils/text.js +9 -0
  451. package/dist/utils/text.js.map +1 -0
  452. package/dist/utils/version-check.js +4 -4
  453. package/dist/utils/version-check.js.map +1 -1
  454. package/docs/compaction.md +17 -0
  455. package/docs/custom-provider.md +12 -9
  456. package/docs/environment-variables.md +11 -8
  457. package/docs/extensions.md +35 -7
  458. package/docs/json.md +7 -2
  459. package/docs/keybindings.md +9 -9
  460. package/docs/llama-cpp.md +2 -0
  461. package/docs/models.md +8 -2
  462. package/docs/packages.md +2 -2
  463. package/docs/quickstart.md +1 -1
  464. package/docs/rpc.md +32 -3
  465. package/docs/sdk.md +7 -2
  466. package/docs/settings.md +23 -7
  467. package/docs/skills.md +3 -2
  468. package/docs/terminal-setup.md +20 -0
  469. package/docs/usage.md +14 -10
  470. package/docs/windows.md +15 -1
  471. package/examples/extensions/border-status-editor.ts +1 -1
  472. package/examples/extensions/custom-provider-anthropic/package-lock.json +70 -8
  473. package/examples/extensions/custom-provider-anthropic/package.json +2 -2
  474. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  475. package/examples/extensions/git-checkpoint.ts +2 -2
  476. package/examples/extensions/gondolin/package-lock.json +2 -2
  477. package/examples/extensions/gondolin/package.json +1 -1
  478. package/examples/extensions/notify.ts +3 -1
  479. package/examples/extensions/sandbox/package-lock.json +14 -40
  480. package/examples/extensions/sandbox/package.json +2 -2
  481. package/examples/extensions/titlebar-spinner.ts +1 -1
  482. package/examples/extensions/with-deps/package-lock.json +4 -4
  483. package/examples/extensions/with-deps/package.json +1 -1
  484. package/examples/rpc-extension-ui.ts +1 -1
  485. package/examples/sdk/06-extensions.ts +1 -1
  486. package/examples/sdk/README.md +1 -1
  487. package/npm-shrinkwrap.json +293 -221
  488. package/package.json +21 -18
  489. package/src/humain/mcp-adapter/UPSTREAM.md +15 -5
  490. package/src/humain/mcp-adapter/upstream.json +4 -3
  491. package/src/humain/mcp-adapter/vendor/CHANGELOG.md +82 -0
  492. package/src/humain/web-access/UPSTREAM.md +1 -1
  493. package/src/humain/web-access/upstream.json +6 -4
@@ -0,0 +1,105 @@
1
+ import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
+ import{compile,init_dist,is,require_canvas,require_lib}from"./chunk-MA4UUCYX.js";import{__commonJS,__export,__require,__toESM}from"./chunk-JXWJOIH4.js";var require_windows=__commonJS({"node_modules/isexe/windows.js"(exports,module){module.exports=isexe;isexe.sync=sync;var fs2=__require("fs");function checkPathExt(path2,options){var pathext=options.pathExt!==void 0?options.pathExt:process.env.PATHEXT;if(!pathext||(pathext=pathext.split(";"),pathext.indexOf("")!==-1))return!0;for(var i=0;i<pathext.length;i++){var p=pathext[i].toLowerCase();if(p&&path2.substr(-p.length).toLowerCase()===p)return!0}return!1}function checkStat(stat,path2,options){return!stat.isSymbolicLink()&&!stat.isFile()?!1:checkPathExt(path2,options)}function isexe(path2,options,cb){fs2.stat(path2,function(er,stat){cb(er,er?!1:checkStat(stat,path2,options))})}function sync(path2,options){return checkStat(fs2.statSync(path2),path2,options)}}});var require_mode=__commonJS({"node_modules/isexe/mode.js"(exports,module){module.exports=isexe;isexe.sync=sync;var fs2=__require("fs");function isexe(path2,options,cb){fs2.stat(path2,function(er,stat){cb(er,er?!1:checkStat(stat,options))})}function sync(path2,options){return checkStat(fs2.statSync(path2),options)}function checkStat(stat,options){return stat.isFile()&&checkMode(stat,options)}function checkMode(stat,options){var mod=stat.mode,uid=stat.uid,gid=stat.gid,myUid=options.uid!==void 0?options.uid:process.getuid&&process.getuid(),myGid=options.gid!==void 0?options.gid:process.getgid&&process.getgid(),u=parseInt("100",8),g=parseInt("010",8),o=parseInt("001",8),ug=u|g,ret=mod&o||mod&g&&gid===myGid||mod&u&&uid===myUid||mod&ug&&myUid===0;return ret}}});var require_isexe=__commonJS({"node_modules/isexe/index.js"(exports,module){var fs2=__require("fs"),core;process.platform==="win32"||global.TESTING_WINDOWS?core=require_windows():core=require_mode();module.exports=isexe;isexe.sync=sync;function isexe(path2,options,cb){if(typeof options=="function"&&(cb=options,options={}),!cb){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(resolve2,reject){isexe(path2,options||{},function(er,is2){er?reject(er):resolve2(is2)})})}core(path2,options||{},function(er,is2){er&&(er.code==="EACCES"||options&&options.ignoreErrors)&&(er=null,is2=!1),cb(er,is2)})}function sync(path2,options){try{return core.sync(path2,options||{})}catch(er){if(options&&options.ignoreErrors||er.code==="EACCES")return!1;throw er}}}});var require_which=__commonJS({"node_modules/which/which.js"(exports,module){var isWindows=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",path2=__require("path"),COLON=isWindows?";":":",isexe=require_isexe(),getNotFoundError=cmd=>Object.assign(new Error(`not found: ${cmd}`),{code:"ENOENT"}),getPathInfo=(cmd,opt)=>{let colon=opt.colon||COLON,pathEnv=cmd.match(/\//)||isWindows&&cmd.match(/\\/)?[""]:[...isWindows?[process.cwd()]:[],...(opt.path||process.env.PATH||"").split(colon)],pathExtExe=isWindows?opt.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",pathExt=isWindows?pathExtExe.split(colon):[""];return isWindows&&cmd.indexOf(".")!==-1&&pathExt[0]!==""&&pathExt.unshift(""),{pathEnv,pathExt,pathExtExe}},which=(cmd,opt,cb)=>{typeof opt=="function"&&(cb=opt,opt={}),opt||(opt={});let{pathEnv,pathExt,pathExtExe}=getPathInfo(cmd,opt),found=[],step=i=>new Promise((resolve2,reject)=>{if(i===pathEnv.length)return opt.all&&found.length?resolve2(found):reject(getNotFoundError(cmd));let ppRaw=pathEnv[i],pathPart=/^".*"$/.test(ppRaw)?ppRaw.slice(1,-1):ppRaw,pCmd=path2.join(pathPart,cmd),p=!pathPart&&/^\.[\\\/]/.test(cmd)?cmd.slice(0,2)+pCmd:pCmd;resolve2(subStep(p,i,0))}),subStep=(p,i,ii)=>new Promise((resolve2,reject)=>{if(ii===pathExt.length)return resolve2(step(i+1));let ext=pathExt[ii];isexe(p+ext,{pathExt:pathExtExe},(er,is2)=>{if(!er&&is2)if(opt.all)found.push(p+ext);else return resolve2(p+ext);return resolve2(subStep(p,i,ii+1))})});return cb?step(0).then(res=>cb(null,res),cb):step(0)},whichSync=(cmd,opt)=>{opt=opt||{};let{pathEnv,pathExt,pathExtExe}=getPathInfo(cmd,opt),found=[];for(let i=0;i<pathEnv.length;i++){let ppRaw=pathEnv[i],pathPart=/^".*"$/.test(ppRaw)?ppRaw.slice(1,-1):ppRaw,pCmd=path2.join(pathPart,cmd),p=!pathPart&&/^\.[\\\/]/.test(cmd)?cmd.slice(0,2)+pCmd:pCmd;for(let j=0;j<pathExt.length;j++){let cur=p+pathExt[j];try{if(isexe.sync(cur,{pathExt:pathExtExe}))if(opt.all)found.push(cur);else return cur}catch{}}}if(opt.all&&found.length)return found;if(opt.nothrow)return null;throw getNotFoundError(cmd)};module.exports=which;which.sync=whichSync}});var require_path_key=__commonJS({"node_modules/path-key/index.js"(exports,module){"use strict";var pathKey=(options={})=>{let environment=options.env||process.env;return(options.platform||process.platform)!=="win32"?"PATH":Object.keys(environment).reverse().find(key2=>key2.toUpperCase()==="PATH")||"Path"};module.exports=pathKey;module.exports.default=pathKey}});var require_resolveCommand=__commonJS({"node_modules/cross-spawn/lib/util/resolveCommand.js"(exports,module){"use strict";var path2=__require("path"),which=require_which(),getPathKey=require_path_key();function resolveCommandAttempt(parsed,withoutPathExt){let env=parsed.options.env||process.env,cwd=process.cwd(),hasCustomCwd=parsed.options.cwd!=null,shouldSwitchCwd=hasCustomCwd&&process.chdir!==void 0&&!process.chdir.disabled;if(shouldSwitchCwd)try{process.chdir(parsed.options.cwd)}catch{}let resolved;try{resolved=which.sync(parsed.command,{path:env[getPathKey({env})],pathExt:withoutPathExt?path2.delimiter:void 0})}catch{}finally{shouldSwitchCwd&&process.chdir(cwd)}return resolved&&(resolved=path2.resolve(hasCustomCwd?parsed.options.cwd:"",resolved)),resolved}function resolveCommand(parsed){return resolveCommandAttempt(parsed)||resolveCommandAttempt(parsed,!0)}module.exports=resolveCommand}});var require_escape=__commonJS({"node_modules/cross-spawn/lib/util/escape.js"(exports,module){"use strict";var metaCharsRegExp=/([()\][%!^"`<>&|;, *?])/g;function escapeCommand(arg){return arg=arg.replace(metaCharsRegExp,"^$1"),arg}function escapeArgument(arg,doubleEscapeMetaChars){return arg=`${arg}`,arg=arg.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),arg=arg.replace(/(?=(\\+?)?)\1$/,"$1$1"),arg=`"${arg}"`,arg=arg.replace(metaCharsRegExp,"^$1"),doubleEscapeMetaChars&&(arg=arg.replace(metaCharsRegExp,"^$1")),arg}module.exports.command=escapeCommand;module.exports.argument=escapeArgument}});var require_shebang_regex=__commonJS({"node_modules/shebang-regex/index.js"(exports,module){"use strict";module.exports=/^#!(.*)/}});var require_shebang_command=__commonJS({"node_modules/shebang-command/index.js"(exports,module){"use strict";var shebangRegex=require_shebang_regex();module.exports=(string="")=>{let match=string.match(shebangRegex);if(!match)return null;let[path2,argument]=match[0].replace(/#! ?/,"").split(" "),binary=path2.split("/").pop();return binary==="env"?argument:argument?`${binary} ${argument}`:binary}}});var require_readShebang=__commonJS({"node_modules/cross-spawn/lib/util/readShebang.js"(exports,module){"use strict";var fs2=__require("fs"),shebangCommand=require_shebang_command();function readShebang(command){let buffer=Buffer.alloc(150),fd;try{fd=fs2.openSync(command,"r"),fs2.readSync(fd,buffer,0,150,0),fs2.closeSync(fd)}catch{}return shebangCommand(buffer.toString())}module.exports=readShebang}});var require_parse=__commonJS({"node_modules/cross-spawn/lib/parse.js"(exports,module){"use strict";var path2=__require("path"),resolveCommand=require_resolveCommand(),escape3=require_escape(),readShebang=require_readShebang(),isWin=process.platform==="win32",isExecutableRegExp=/\.(?:com|exe)$/i,isCmdShimRegExp=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function detectShebang(parsed){parsed.file=resolveCommand(parsed);let shebang=parsed.file&&readShebang(parsed.file);return shebang?(parsed.args.unshift(parsed.file),parsed.command=shebang,resolveCommand(parsed)):parsed.file}function parseNonShell(parsed){if(!isWin)return parsed;let commandFile=detectShebang(parsed),needsShell=!isExecutableRegExp.test(commandFile);if(parsed.options.forceShell||needsShell){let needsDoubleEscapeMetaChars=isCmdShimRegExp.test(commandFile);parsed.command=path2.normalize(parsed.command),parsed.command=escape3.command(parsed.command),parsed.args=parsed.args.map(arg=>escape3.argument(arg,needsDoubleEscapeMetaChars));let shellCommand=[parsed.command].concat(parsed.args).join(" ");parsed.args=["/d","/s","/c",`"${shellCommand}"`],parsed.command=process.env.comspec||"cmd.exe",parsed.options.windowsVerbatimArguments=!0}return parsed}function parse3(command,args,options){args&&!Array.isArray(args)&&(options=args,args=null),args=args?args.slice(0):[],options=Object.assign({},options);let parsed={command,args,options,file:void 0,original:{command,args}};return options.shell?parsed:parseNonShell(parsed)}module.exports=parse3}});var require_enoent=__commonJS({"node_modules/cross-spawn/lib/enoent.js"(exports,module){"use strict";var isWin=process.platform==="win32";function notFoundError(original,syscall){return Object.assign(new Error(`${syscall} ${original.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${syscall} ${original.command}`,path:original.command,spawnargs:original.args})}function hookChildProcess(cp,parsed){if(!isWin)return;let originalEmit=cp.emit;cp.emit=function(name,arg1){if(name==="exit"){let err=verifyENOENT(arg1,parsed);if(err)return originalEmit.call(cp,"error",err)}return originalEmit.apply(cp,arguments)}}function verifyENOENT(status,parsed){return isWin&&status===1&&!parsed.file?notFoundError(parsed.original,"spawn"):null}function verifyENOENTSync(status,parsed){return isWin&&status===1&&!parsed.file?notFoundError(parsed.original,"spawnSync"):null}module.exports={hookChildProcess,verifyENOENT,verifyENOENTSync,notFoundError}}});var require_cross_spawn=__commonJS({"node_modules/cross-spawn/index.js"(exports,module){"use strict";var cp=__require("child_process"),parse3=require_parse(),enoent=require_enoent();function spawn3(command,args,options){let parsed=parse3(command,args,options),spawned=cp.spawn(parsed.command,parsed.args,parsed.options);return enoent.hookChildProcess(spawned,parsed),spawned}function spawnSync(command,args,options){let parsed=parse3(command,args,options),result=cp.spawnSync(parsed.command,parsed.args,parsed.options);return result.error=result.error||enoent.verifyENOENTSync(result.status,parsed),result}module.exports=spawn3;module.exports.spawn=spawn3;module.exports.sync=spawnSync;module.exports._parse=parse3;module.exports._enoent=enoent}});import{accessSync,constants,existsSync,readFileSync,realpathSync as realpathSync2}from"fs";import{homedir as homedir2}from"os";import{basename,dirname,join as join2,resolve,sep as sep2,win32}from"path";import{fileURLToPath as fileURLToPath2}from"url";var import_cross_spawn=__toESM(require_cross_spawn(),1);import{spawn as nodeSpawn,spawnSync as nodeSpawnSync}from"node:child_process";var EXIT_STDIO_GRACE_MS=100;function spawnProcess(command,args,options){return process.platform==="win32"?(0,import_cross_spawn.default)(command,args,options):nodeSpawn(command,args,options)}function spawnProcessSync(command,args,options){return process.platform==="win32"?import_cross_spawn.default.sync(command,args,options):nodeSpawnSync(command,args,options)}function waitForChildProcess(child){return new Promise((resolve2,reject)=>{let settled=!1,exited=!1,exitCode=null,postExitTimer,stdoutEnded=child.stdout===null,stderrEnded=child.stderr===null,cleanup=()=>{postExitTimer&&(clearTimeout(postExitTimer),postExitTimer=void 0),child.removeListener("error",onError),child.removeListener("exit",onExit),child.removeListener("close",onClose),child.stdout?.removeListener("end",onStdoutEnd),child.stderr?.removeListener("end",onStderrEnd),child.stdout?.removeListener("data",onData),child.stderr?.removeListener("data",onData)},finalize=code=>{settled||(settled=!0,cleanup(),child.stdout?.destroy(),child.stderr?.destroy(),resolve2(code))},maybeFinalizeAfterExit=()=>{!exited||settled||stdoutEnded&&stderrEnded&&finalize(exitCode)},armIdleTimer=()=>{postExitTimer&&clearTimeout(postExitTimer),postExitTimer=setTimeout(()=>finalize(exitCode),EXIT_STDIO_GRACE_MS)},onData=()=>{exited&&!settled&&armIdleTimer()},onStdoutEnd=()=>{stdoutEnded=!0,maybeFinalizeAfterExit()},onStderrEnd=()=>{stderrEnded=!0,maybeFinalizeAfterExit()},onError=err=>{settled||(settled=!0,cleanup(),reject(err))},onExit=code=>{exited=!0,exitCode=code,maybeFinalizeAfterExit(),settled||armIdleTimer()},onClose=code=>{finalize(code)};child.stdout?.once("end",onStdoutEnd),child.stderr?.once("end",onStderrEnd),child.stdout?.on("data",onData),child.stderr?.on("data",onData),child.once("error",onError),child.once("exit",onExit),child.once("close",onClose)})}import{realpathSync,statSync}from"node:fs";import{homedir}from"node:os";import{isAbsolute,join,resolve as nodeResolvePath,relative,sep}from"node:path";import{fileURLToPath}from"node:url";var UNICODE_SPACES=/[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;function canonicalizePath(path2){try{return realpathSync(path2)}catch{return path2}}function getFileRevision(path2){try{let stats=statSync(path2,{bigint:!0});return`${stats.dev}:${stats.ino}:${stats.size}:${stats.mtimeNs}:${stats.ctimeNs}`}catch{return}}function isLocalPath(value){let trimmed=value.trim();return!(trimmed.startsWith("npm:")||trimmed.startsWith("git:")||trimmed.startsWith("github:")||trimmed.startsWith("http:")||trimmed.startsWith("https:")||trimmed.startsWith("ssh:"))}function normalizeWindowsShellPath(filePath){if(!filePath.startsWith("/")||filePath.startsWith("//")||filePath.includes("\\"))return filePath;let match=filePath.match(/^\/(?:mnt\/|cygdrive\/)?([a-z])(?:\/(.*))?$/i);if(!match)return filePath;let suffix=match[2]?.replaceAll("/","\\");return`${match[1].toUpperCase()}:\\${suffix??""}`}function normalizePath(input,options={}){let normalized=options.trim?input.trim():input;if(options.normalizeUnicodeSpaces&&(normalized=normalized.replace(UNICODE_SPACES," ")),options.stripAtPrefix&&normalized.startsWith("@")&&(normalized=normalized.slice(1)),process.platform==="win32"&&(normalized=normalizeWindowsShellPath(normalized)),options.expandTilde??!0){let home=options.homeDir??homedir();if(normalized==="~")return home;if(normalized.startsWith("~/")||process.platform==="win32"&&normalized.startsWith("~\\"))return join(home,normalized.slice(2))}return/^file:\/\//.test(normalized)?fileURLToPath(normalized):normalized}function resolvePath(input,baseDir=process.cwd(),options={}){let normalized=normalizePath(input,options),normalizedBaseDir=normalizePath(baseDir);return isAbsolute(normalized)?nodeResolvePath(normalized):nodeResolvePath(normalizedBaseDir,normalized)}function getCwdRelativePath(filePath,cwd){let resolvedCwd=resolvePath(cwd),resolvedPath=resolvePath(filePath,resolvedCwd),relativePath=relative(resolvedCwd,resolvedPath);return relativePath===""||relativePath!==".."&&!relativePath.startsWith(`..${sep}`)&&!isAbsolute(relativePath)?relativePath||".":void 0}function formatPathRelativeToCwdOrAbsolute(filePath,cwd){let absolutePath=resolvePath(filePath,cwd);return(getCwdRelativePath(absolutePath,cwd)??absolutePath).split(sep).join("/")}function markPathIgnoredByCloudSync(path2){let attrs=process.platform==="darwin"?["com.dropbox.ignored","com.apple.fileprovider.ignore#P"]:process.platform==="linux"?["user.com.dropbox.ignored"]:[];for(let attr of attrs)process.platform==="darwin"?spawnProcessSync("xattr",["-w",attr,"1",path2],{encoding:"utf-8",stdio:"ignore"}):spawnProcessSync("setfattr",["-n",attr,"-v","1",path2],{encoding:"utf-8",stdio:"ignore"})}function splitBom(content){return content.startsWith("\uFEFF")?{bom:"\uFEFF",text:content.slice(1)}:{bom:"",text:content}}function stripBom(content){return splitBom(content).text}var __filename=fileURLToPath2(import.meta.url),__dirname=dirname(__filename),BOOTSTRAP_ENV_PACKAGE_DIR="HUMAIN_TERMINAL_PACKAGE_DIR",isBunBinary=import.meta.url.includes("$bunfs")||import.meta.url.includes("~BUN")||import.meta.url.includes("%7EBUN"),isBunRuntime=!!process.versions.bun;function normalizeSelfUpdatePackageTarget(target){return typeof target=="string"?{packageName:target,installSpec:target}:{packageName:target.packageName,installSpec:target.installSpec??target.packageName}}function makeSelfUpdateCommand(installStep,uninstallStep){return uninstallStep?{...installStep,display:`${uninstallStep.display} && ${installStep.display}`,steps:[uninstallStep,installStep]}:installStep}function makeSelfUpdateCommandStep(command,args){return{command,args,display:[command,...args].map(arg=>/\s/.test(arg)?`"${arg}"`:arg).join(" ")}}function detectInstallMethod(){if(isBunBinary)return"bun-binary";let resolvedPath=`${__dirname}\0${process.execPath||""}`.toLowerCase().replace(/\\/g,"/");return resolvedPath.includes("/pnpm/")||resolvedPath.includes("/.pnpm/")?"pnpm":resolvedPath.includes("/yarn/")||resolvedPath.includes("/.yarn/")?"yarn":isBunRuntime||resolvedPath.includes("/install/global/node_modules/")?"bun":resolvedPath.includes("/npm/")||resolvedPath.includes("/node_modules/")?"npm":"unknown"}function getInferredNpmInstall(){let packageDir=getPackageDir(),path2=process.platform==="win32"||packageDir.includes("\\")?win32:{basename,dirname},parent=path2.dirname(packageDir),root;if(path2.basename(parent).startsWith("@")&&path2.basename(path2.dirname(parent))==="node_modules"?root=path2.dirname(parent):path2.basename(parent)==="node_modules"&&(root=parent),!root)return;let rootParent=path2.dirname(root);if(path2.basename(rootParent)==="lib")return{root,prefix:path2.dirname(rootParent)}}function getSelfUpdateCommandForMethod(method,installedPackageName,updatePackageTarget=installedPackageName,npmCommand){let target=normalizeSelfUpdatePackageTarget(updatePackageTarget);switch(method){case"bun-binary":return;case"pnpm":{let match=readCommandOutput("pnpm",["root","-g"])?void 0:/^(.*[\\/]global[\\/][^\\/]+)[\\/]\.pnpm[\\/]/.exec(getPackageDir()),binDirArgs=match?[`--config.global-bin-dir=${process.env.PNPM_HOME||dirname(dirname(match[1]))}`]:[];return makeSelfUpdateCommand(makeSelfUpdateCommandStep("pnpm",["install","-g","--ignore-scripts","--config.minimumReleaseAge=0",...binDirArgs,target.installSpec]),target.packageName===installedPackageName?void 0:makeSelfUpdateCommandStep("pnpm",["remove","-g",...binDirArgs,installedPackageName]))}case"yarn":return makeSelfUpdateCommand(makeSelfUpdateCommandStep("yarn",["global","add","--ignore-scripts",target.installSpec]),target.packageName===installedPackageName?void 0:makeSelfUpdateCommandStep("yarn",["global","remove",installedPackageName]));case"bun":return makeSelfUpdateCommand(makeSelfUpdateCommandStep("bun",["install","-g","--ignore-scripts","--minimum-release-age=0",target.installSpec]),target.packageName===installedPackageName?void 0:makeSelfUpdateCommandStep("bun",["uninstall","-g",installedPackageName]));case"npm":{let[command="npm",...npmArgs]=npmCommand??[],inferred=npmCommand?.length?void 0:getInferredNpmInstall(),prefixArgs=[...npmArgs,...inferred?["--prefix",inferred.prefix]:[]],installStep=makeSelfUpdateCommandStep(command,[...prefixArgs,"install","-g","--ignore-scripts","--min-release-age=0",target.installSpec]),uninstallStep=target.packageName===installedPackageName?void 0:makeSelfUpdateCommandStep(command,[...prefixArgs,"uninstall","-g",installedPackageName]);return makeSelfUpdateCommand(installStep,uninstallStep)}case"unknown":return}}function readCommandOutput(command,args,options={}){let result=spawnProcessSync(command,args,{encoding:"utf-8",stdio:["ignore","pipe","pipe"]});if(result.status===0)return result.stdout.trim()||void 0;if(options.requireSuccess){let reason=result.error?.message||result.stderr.trim()||`exit code ${result.status??"unknown"}`;throw new Error(`Failed to run ${[command,...args].join(" ")}: ${reason}`)}}function getGlobalPackageRoots(method,_packageName,npmCommand){switch(method){case"npm":{let configured=!!npmCommand?.length,[command="npm",...npmArgs]=npmCommand??[];if(configured&&command==="bun"){let bunBin=readCommandOutput(command,[...npmArgs,"pm","bin","-g"],{requireSuccess:!0}),roots=[join2(homedir2(),".bun","install","global","node_modules")];return bunBin&&roots.push(join2(dirname(bunBin),"install","global","node_modules")),roots}let root=readCommandOutput(command,[...npmArgs,"root","-g"],{requireSuccess:configured}),inferred=configured?void 0:getInferredNpmInstall();return[root,inferred?.root].filter(x=>!!x)}case"pnpm":{let root=readCommandOutput("pnpm",["root","-g"]);if(root)return[root,dirname(root)];let match=/^(.*[\\/]global[\\/][^\\/]+)[\\/]\.pnpm[\\/]/.exec(getPackageDir());return match?[match[1]]:[]}case"yarn":{let dir=readCommandOutput("yarn",["global","dir"]);return dir?[dir,join2(dir,"node_modules")]:[]}case"bun":{let bunBin=readCommandOutput("bun",["pm","bin","-g"]),roots=[join2(homedir2(),".bun","install","global","node_modules")];return bunBin&&roots.push(join2(dirname(bunBin),"install","global","node_modules")),roots}case"bun-binary":case"unknown":return[]}}function normalizeExistingPathForComparison(path2,resolveSymlinks){let resolvedPath=resolve(path2);if(!existsSync(resolvedPath))return;let normalizedPath=resolvedPath;if(resolveSymlinks)try{normalizedPath=realpathSync2(resolvedPath)}catch{return}return process.platform==="win32"&&(normalizedPath=normalizedPath.toLowerCase()),normalizedPath}function getPathComparisonCandidates(path2){return Array.from(new Set([normalizeExistingPathForComparison(path2,!1),normalizeExistingPathForComparison(path2,!0)].filter(candidate=>!!candidate)))}function getEntrypointPackageDir(){let entrypoint=process.argv[1];if(!entrypoint)return;let dir=dirname(entrypoint);for(;dir!==dirname(dir);){if(existsSync(join2(dir,"package.json")))return dir;dir=dirname(dir)}}function isSelfUpdatePathWritable(){let packageDir=getPackageDir();try{return accessSync(packageDir,constants.W_OK),accessSync(dirname(packageDir),constants.W_OK),!0}catch{return!1}}function isManagedByGlobalPackageManager(method,packageName,npmCommand){let packageDirCandidates=[getPackageDir(),getEntrypointPackageDir()].filter(dir=>!!dir).flatMap(dir=>getPathComparisonCandidates(dir));return getGlobalPackageRoots(method,packageName,npmCommand).some(root=>getPathComparisonCandidates(root).some(normalizedRoot=>{let rootPrefix=normalizedRoot.endsWith(sep2)?normalizedRoot:`${normalizedRoot}${sep2}`;return packageDirCandidates.some(packageDir=>packageDir.startsWith(rootPrefix))}))}function getSelfUpdateCommand(packageName,npmCommand,updatePackageTarget=packageName){let method=detectInstallMethod(),command=getSelfUpdateCommandForMethod(method,packageName,updatePackageTarget,npmCommand);if(!(!command||!isManagedByGlobalPackageManager(method,packageName,npmCommand)||!isSelfUpdatePathWritable()))return command}function getSelfUpdateUnavailableInstruction(packageName,npmCommand,updatePackageTarget=packageName){let method=detectInstallMethod(),target=normalizeSelfUpdatePackageTarget(updatePackageTarget);if(method==="bun-binary")return`Download from: ${getBinaryReleaseUrl()}`;let command=getSelfUpdateCommandForMethod(method,packageName,target,npmCommand);return command?isManagedByGlobalPackageManager(method,packageName,npmCommand)&&!isSelfUpdatePathWritable()?`This installation is managed by a global ${method} install, but the install path is not writable. Update it yourself with: ${command.display}`:`This installation is not managed by a global ${method} install. Update it with the package manager, wrapper, or source checkout that provides it.`:`Update ${target.installSpec} using the package manager, wrapper, or source checkout that provides this installation.`}function findNodePackageDir(startDir){let dir=startDir;for(;dir!==dirname(dir);){if(existsSync(join2(dir,"package.json"))){let parent=dirname(dir);return basename(dir)==="dist"&&existsSync(join2(parent,"package.json"))?parent:dir}dir=dirname(dir)}return startDir}function getPackageDir(){let envDir=process.env[BOOTSTRAP_ENV_PACKAGE_DIR];return envDir?normalizePath(envDir):isBunBinary?dirname(process.execPath):findNodePackageDir(__dirname)}function getThemesDir(){if(isBunBinary)return join2(getPackageDir(),"theme");let packageDir=getPackageDir(),distThemes=join2(packageDir,"dist","modes","interactive","theme");return existsSync(join2(distThemes,"dark.json"))?distThemes:join2(packageDir,"src","modes","interactive","theme")}function getExportTemplateDir(){if(isBunBinary)return join2(getPackageDir(),"export-html");let packageDir=getPackageDir(),srcOrDist=existsSync(join2(packageDir,"src"))?"src":"dist";return join2(packageDir,srcOrDist,"core","export-html")}function getPackageJsonPath(){return join2(getPackageDir(),"package.json")}function getReadmePath(){return resolve(join2(getPackageDir(),"README.md"))}function getDocsPath(){return resolve(join2(getPackageDir(),"docs"))}function getExamplesPath(){return resolve(join2(getPackageDir(),"examples"))}function getChangelogPath(){return resolve(join2(getPackageDir(),"CHANGELOG.md"))}function getInteractiveAssetsDir(){if(isBunBinary)return join2(getPackageDir(),"assets");let packageDir=getPackageDir(),srcOrDist=existsSync(join2(packageDir,"src"))?"src":"dist";return join2(packageDir,srcOrDist,"modes","interactive","assets")}function getBundledInteractiveAssetPath(name){return join2(getInteractiveAssetsDir(),name)}var pkg={};try{pkg=JSON.parse(stripBom(readFileSync(getPackageJsonPath(),"utf-8")))}catch(e){if(e.code!=="ENOENT")throw e}var appConfig=pkg.humainTerminalConfig??pkg.piConfig,appConfigName=appConfig?.name,appConfigTitle=appConfig?.title,appConfigEnvPrefix=appConfig?.envPrefix;function sanitizeEnvPrefix(value){return value.trim().replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_+|_+$/g,"").toUpperCase()}var PACKAGE_NAME=pkg.name||"@humain/terminal",APP_NAME=appConfigName||"pi",APP_TITLE=appConfigTitle||(appConfigName?APP_NAME:"\u03C0"),CONFIG_DIR_NAME=appConfig?.configDir||".pi",FIRST_TIME_SETUP_ENABLED=appConfig?.firstTimeSetup??!1,VERSION=pkg.version||"0.0.0",UPSTREAM_PI_VERSION=appConfig?.upstreamPiVersion||"0.0.0",ENV_PREFIX=sanitizeEnvPrefix(appConfigEnvPrefix||APP_NAME),ENV_AGENT_DIR=`${ENV_PREFIX}_CODING_AGENT_DIR`,ENV_SESSION_DIR=`${ENV_PREFIX}_CODING_AGENT_SESSION_DIR`,ENV_SESSION_ID=`${ENV_PREFIX}_SESSION_ID`,ENV_SESSION_FILE=`${ENV_PREFIX}_SESSION_FILE`,ENV_PROVIDER=`${ENV_PREFIX}_PROVIDER`,ENV_MODEL=`${ENV_PREFIX}_MODEL`,ENV_REASONING_LEVEL=`${ENV_PREFIX}_REASONING_LEVEL`,ENV_OFFLINE=`${ENV_PREFIX}_OFFLINE`,ENV_PACKAGE_DIR=`${ENV_PREFIX}_PACKAGE_DIR`,ENV_SHARE_VIEWER_URL=`${ENV_PREFIX}_SHARE_VIEWER_URL`,ENV_SKIP_VERSION_CHECK=`${ENV_PREFIX}_SKIP_VERSION_CHECK`,ENV_STARTUP_BENCHMARK=`${ENV_PREFIX}_STARTUP_BENCHMARK`,ENV_TELEMETRY=`${ENV_PREFIX}_TELEMETRY`,ENV_VERSION_CHECK_URL=`${ENV_PREFIX}_VERSION_CHECK_URL`,ENV_BINARY_RELEASE_URL=`${ENV_PREFIX}_BINARY_RELEASE_URL`,ENV_INSTALL_TELEMETRY_URL=`${ENV_PREFIX}_INSTALL_TELEMETRY_URL`,ENV_CHANGELOG_URL=`${ENV_PREFIX}_CHANGELOG_URL`;function expandTildePath(path2){return normalizePath(path2)}var HUMAIN_TERMINAL_WEB_URL="https://terminal.humain.com",HUMAIN_TERMINAL_BINARY_RELEASE_URL="https://gitlab.humain.com/humain/data-and-ai-modeling/standard/agentic/humain-terminal/-/releases/permalink/latest",HUMAIN_TERMINAL_VERSION_CHECK_URL=`${HUMAIN_TERMINAL_WEB_URL}/api/latest-version`,HUMAIN_TERMINAL_INSTALL_TELEMETRY_URL=`${HUMAIN_TERMINAL_WEB_URL}/api/report-install`,HUMAIN_TERMINAL_CHANGELOG_URL=`${HUMAIN_TERMINAL_WEB_URL}/changelog`,DEFAULT_SHARE_VIEWER_URL=`${HUMAIN_TERMINAL_WEB_URL}/session/`;function getVersionCheckUrl(){return process.env[ENV_VERSION_CHECK_URL]||HUMAIN_TERMINAL_VERSION_CHECK_URL}function getBinaryReleaseUrl(){return process.env[ENV_BINARY_RELEASE_URL]||HUMAIN_TERMINAL_BINARY_RELEASE_URL}function getShareViewerUrl(gistId){return`${process.env[ENV_SHARE_VIEWER_URL]||process.env.PI_SHARE_VIEWER_URL||DEFAULT_SHARE_VIEWER_URL}#${gistId}`}function getAgentDir(){let envDir=process.env[ENV_AGENT_DIR];return envDir?expandTildePath(envDir):join2(homedir2(),CONFIG_DIR_NAME,"agent")}function getCustomThemesDir(){return join2(getAgentDir(),"themes")}function getAuthPath(){return join2(getAgentDir(),"auth.json")}function getSettingsPath(){return join2(getAgentDir(),"settings.json")}function getBinDir(){return join2(getAgentDir(),"bin")}function getSessionsDir(){return join2(getAgentDir(),"sessions")}function getDebugLogPath(){return join2(getAgentDir(),`${APP_NAME}-debug.log`)}import{Worker}from"node:worker_threads";function readOrientationFromTiff(bytes,tiffStart){if(tiffStart+8>bytes.length)return 1;let le=(bytes[tiffStart]<<8|bytes[tiffStart+1])===18761,read16=pos=>le?bytes[pos]|bytes[pos+1]<<8:bytes[pos]<<8|bytes[pos+1],ifdOffset=(pos=>le?bytes[pos]|bytes[pos+1]<<8|bytes[pos+2]<<16|bytes[pos+3]<<24:(bytes[pos]<<24|bytes[pos+1]<<16|bytes[pos+2]<<8|bytes[pos+3])>>>0)(tiffStart+4),ifdStart=tiffStart+ifdOffset;if(ifdStart+2>bytes.length)return 1;let entryCount=read16(ifdStart);for(let i=0;i<entryCount;i++){let entryPos=ifdStart+2+i*12;if(entryPos+12>bytes.length)return 1;if(read16(entryPos)===274){let value=read16(entryPos+8);return value>=1&&value<=8?value:1}}return 1}function findJpegTiffOffset(bytes){let offset=2;for(;offset<bytes.length-1;){if(bytes[offset]!==255)return-1;let marker=bytes[offset+1];if(marker===255){offset++;continue}if(marker===225){if(offset+4>=bytes.length)return-1;let segmentStart=offset+4;return segmentStart+6>bytes.length||!hasExifHeader(bytes,segmentStart)?-1:segmentStart+6}if(offset+4>bytes.length)return-1;let length=bytes[offset+2]<<8|bytes[offset+3];offset+=2+length}return-1}function findWebpTiffOffset(bytes){let offset=12;for(;offset+8<=bytes.length;){let chunkId=String.fromCharCode(bytes[offset],bytes[offset+1],bytes[offset+2],bytes[offset+3]),chunkSize=bytes[offset+4]|bytes[offset+5]<<8|bytes[offset+6]<<16|bytes[offset+7]<<24,dataStart=offset+8;if(chunkId==="EXIF")return dataStart+chunkSize>bytes.length?-1:chunkSize>=6&&hasExifHeader(bytes,dataStart)?dataStart+6:dataStart;offset=dataStart+chunkSize+chunkSize%2}return-1}function hasExifHeader(bytes,offset){return bytes[offset]===69&&bytes[offset+1]===120&&bytes[offset+2]===105&&bytes[offset+3]===102&&bytes[offset+4]===0&&bytes[offset+5]===0}function getExifOrientation(bytes){let tiffOffset=-1;return bytes.length>=2&&bytes[0]===255&&bytes[1]===216?tiffOffset=findJpegTiffOffset(bytes):bytes.length>=12&&bytes[0]===82&&bytes[1]===73&&bytes[2]===70&&bytes[3]===70&&bytes[8]===87&&bytes[9]===69&&bytes[10]===66&&bytes[11]===80&&(tiffOffset=findWebpTiffOffset(bytes)),tiffOffset===-1?1:readOrientationFromTiff(bytes,tiffOffset)}function rotate90(photon,image,dstIndex){let w=image.get_width(),h=image.get_height(),src=image.get_raw_pixels(),dst=new Uint8Array(src.length);for(let y=0;y<h;y++)for(let x=0;x<w;x++){let srcIdx=(y*w+x)*4,dstIdx=dstIndex(x,y,w,h)*4;dst[dstIdx]=src[srcIdx],dst[dstIdx+1]=src[srcIdx+1],dst[dstIdx+2]=src[srcIdx+2],dst[dstIdx+3]=src[srcIdx+3]}return new photon.PhotonImage(dst,h,w)}function applyExifOrientation(photon,image,originalBytes){let orientation=getExifOrientation(originalBytes);if(orientation===1)return image;switch(orientation){case 2:return photon.fliph(image),image;case 3:return photon.fliph(image),photon.flipv(image),image;case 4:return photon.flipv(image),image;case 5:{let rotated=rotate90(photon,image,(x,y,_w,h)=>x*h+(h-1-y));return photon.fliph(rotated),rotated}case 6:return rotate90(photon,image,(x,y,_w,h)=>x*h+(h-1-y));case 7:{let rotated=rotate90(photon,image,(x,y,w,h)=>(w-1-x)*h+y);return photon.fliph(rotated),rotated}case 8:return rotate90(photon,image,(x,y,w,h)=>(w-1-x)*h+y);default:return image}}import{createRequire}from"module";import*as path from"path";import{fileURLToPath as fileURLToPath3}from"url";var require2=createRequire(import.meta.url),fs=require2("fs"),WASM_FILENAME="photon_rs_bg.wasm",photonModule=null,loadPromise=null;function pathOrNull(file){return typeof file=="string"?file:file instanceof URL?fileURLToPath3(file):null}function getFallbackWasmPaths(){let execDir=path.dirname(process.execPath);return[path.join(execDir,WASM_FILENAME),path.join(execDir,"photon",WASM_FILENAME),path.join(process.cwd(),WASM_FILENAME)]}function patchPhotonWasmRead(){let originalReadFileSync=fs.readFileSync.bind(fs),fallbackPaths=getFallbackWasmPaths(),mutableFs=fs,patchedReadFileSync=((...args)=>{let[file,options]=args;if(pathOrNull(file)?.endsWith(WASM_FILENAME))try{return originalReadFileSync(...args)}catch(error){let err=error;if(err?.code&&err.code!=="ENOENT")throw error;for(let fallbackPath of fallbackPaths)if(fs.existsSync(fallbackPath))return options===void 0?originalReadFileSync(fallbackPath):originalReadFileSync(fallbackPath,options);throw error}return originalReadFileSync(...args)});try{mutableFs.readFileSync=patchedReadFileSync}catch{Object.defineProperty(fs,"readFileSync",{value:patchedReadFileSync,writable:!0,configurable:!0})}return()=>{try{mutableFs.readFileSync=originalReadFileSync}catch{Object.defineProperty(fs,"readFileSync",{value:originalReadFileSync,writable:!0,configurable:!0})}}}async function loadPhoton(){return photonModule||loadPromise||(loadPromise=(async()=>{let restoreReadFileSync=patchPhotonWasmRead();try{return photonModule=await import("@silvia-odwyer/photon-node"),photonModule}catch{return photonModule=null,photonModule}finally{restoreReadFileSync()}})(),loadPromise)}var DEFAULT_MAX_BYTES=4.5*1024*1024,DEFAULT_OPTIONS={maxWidth:2e3,maxHeight:2e3,maxBytes:DEFAULT_MAX_BYTES,jpegQuality:80};function encodeCandidate(buffer,mimeType){let data=Buffer.from(buffer).toString("base64");return{data,encodedSize:Buffer.byteLength(data,"utf-8"),mimeType}}async function resizeImageInProcess(inputBytes,mimeType,options){let opts={...DEFAULT_OPTIONS,...options},inputBase64Size=Math.ceil(inputBytes.byteLength/3)*4,photon=await loadPhoton();if(!photon)return null;let image;try{let tryEncodings=function(width,height,jpegQualities){let resized=photon.resize(image,width,height,photon.SamplingFilter.Lanczos3);try{let candidates=[encodeCandidate(resized.get_bytes(),"image/png")];for(let quality of jpegQualities)candidates.push(encodeCandidate(resized.get_bytes_jpeg(quality),"image/jpeg"));return candidates}finally{resized.free()}},rawImage=photon.PhotonImage.new_from_byteslice(inputBytes);image=applyExifOrientation(photon,rawImage,inputBytes),image!==rawImage&&rawImage.free();let originalWidth=image.get_width(),originalHeight=image.get_height(),format=mimeType.split("/")[1]??"png";if(originalWidth<=opts.maxWidth&&originalHeight<=opts.maxHeight&&inputBase64Size<opts.maxBytes)return{data:Buffer.from(inputBytes).toString("base64"),mimeType:mimeType||`image/${format}`,originalWidth,originalHeight,width:originalWidth,height:originalHeight,wasResized:!1};let targetWidth=originalWidth,targetHeight=originalHeight;targetWidth>opts.maxWidth&&(targetHeight=Math.round(targetHeight*opts.maxWidth/targetWidth),targetWidth=opts.maxWidth),targetHeight>opts.maxHeight&&(targetWidth=Math.round(targetWidth*opts.maxHeight/targetHeight),targetHeight=opts.maxHeight);let qualitySteps=Array.from(new Set([opts.jpegQuality,85,70,55,40])),currentWidth=targetWidth,currentHeight=targetHeight;for(;;){let candidates=tryEncodings(currentWidth,currentHeight,qualitySteps);for(let candidate of candidates)if(candidate.encodedSize<opts.maxBytes)return{data:candidate.data,mimeType:candidate.mimeType,originalWidth,originalHeight,width:currentWidth,height:currentHeight,wasResized:!0};if(currentWidth===1&&currentHeight===1)break;let nextWidth=currentWidth===1?1:Math.max(1,Math.floor(currentWidth*.75)),nextHeight=currentHeight===1?1:Math.max(1,Math.floor(currentHeight*.75));if(nextWidth===currentWidth&&nextHeight===currentHeight)break;currentWidth=nextWidth,currentHeight=nextHeight}return null}catch{return null}finally{image&&image.free()}}function toTransferableBytes(input){return new Uint8Array(input)}function isResizeImageWorkerResponse(value){return value!==null&&typeof value=="object"}function createResizeWorker(workerSpecifier){return new Worker(workerSpecifier)}async function resizeImageInWorker(workerSpecifier,inputBytes,mimeType,options){let worker=createResizeWorker(workerSpecifier);try{let inputBytesForWorker=toTransferableBytes(inputBytes);return await new Promise((resolve2,reject)=>{let settled=!1,settle=result=>{settled||(settled=!0,resolve2(result))},fail=error=>{settled||(settled=!0,reject(error))};worker.once("message",message=>{if(!isResizeImageWorkerResponse(message)){fail(new Error("Invalid image resize worker response"));return}if(message.error){fail(new Error(message.error));return}settle(message.result??null)}),worker.once("error",fail),worker.once("exit",code=>{settled||fail(new Error(`Image resize worker exited with code ${code}`))}),worker.postMessage({inputBytes:inputBytesForWorker,mimeType,options},[inputBytesForWorker.buffer])})}finally{worker.terminate().catch(()=>{})}}async function resizeImage(inputBytes,mimeType,options){let isTypeScriptRuntime=import.meta.url.endsWith(".ts"),workerUrl=new URL(isTypeScriptRuntime?"./image-resize-worker.ts":"./image-resize-worker.js",import.meta.url);if(typeof process.versions.bun=="string")try{return await resizeImageInWorker("./src/utils/image-resize-worker.ts",inputBytes,mimeType,options)}catch{}try{return await resizeImageInWorker(workerUrl,inputBytes,mimeType,options)}catch{return resizeImageInProcess(inputBytes,mimeType,options)}}function formatDimensionNote(result){if(!result.wasResized)return;let scale=result.originalWidth/result.width;return`[Image: original ${result.originalWidth}x${result.originalHeight}, displayed at ${result.width}x${result.height}. Multiply coordinates by ${scale.toFixed(2)} to map to original image.]`}import{AsyncLocalStorage}from"node:async_hooks";import{spawn}from"node:child_process";import{existsSync as existsSync2,readFileSync as readFileSync2}from"node:fs";import{mkdtemp,readFile,rm,writeFile}from"node:fs/promises";import{hostname,tmpdir}from"node:os";import{join as join4}from"node:path";function getWebSearchConfigDir(){return getAgentDir()}function getWebSearchConfigPath(){return join4(getWebSearchConfigDir(),"web-search.json")}function resolveApiBaseUrl(options){let fromEnvironment=options.environmentValue!==void 0,value=fromEnvironment?options.environmentValue:options.configuredValue;if(value===void 0)return options.defaultValue;let source=fromEnvironment?options.environmentKey:`${options.configKey} in ${getWebSearchConfigPath()}`;if(typeof value!="string"||value.trim().length===0)throw new Error(`${source} must be an absolute HTTP(S) URL`);let url;try{url=new URL(value.trim())}catch{throw new Error(`${source} must be an absolute HTTP(S) URL`)}if(url.protocol!=="https:")throw new Error(`${source} must be an absolute HTTPS URL`);if(url.username||url.password)throw new Error(`${source} must not include credentials`);if(url.search||url.hash)throw new Error(`${source} must not include query parameters or fragments`);return url.search="",url.hash="",url.pathname=url.pathname.replace(/\/+$/,""),url.toString().replace(/\/+$/,"")}var API_REDIRECT_STATUSES=new Set([301,302,303,307,308]),API_REQUEST_BODY_HEADERS=["Content-Encoding","Content-Language","Content-Location","Content-Type"],MAX_API_REDIRECTS=5;async function fetchWithCredentialRedirects(url,init,credentialHeaders){let current=new URL(url),requestInit=init;for(let redirects=0;;redirects++){let response=await fetch(current,{...requestInit,redirect:"manual"});if(!API_REDIRECT_STATUSES.has(response.status))return response;let location=response.headers.get("location");if(!location)return response;if(redirects===MAX_API_REDIRECTS)throw new Error(`Too many API redirects from ${url}`);let next=new URL(location,current);if(next.protocol!=="http:"&&next.protocol!=="https:")throw new Error(`API redirect from ${current.origin} must use HTTP(S)`);let method=requestInit.method?.toUpperCase()??"GET";if((response.status===301||response.status===302)&&method==="POST"||response.status===303&&method!=="GET"&&method!=="HEAD"){let headers=new Headers(requestInit.headers);for(let name of API_REQUEST_BODY_HEADERS)headers.delete(name);let{body:_body,...withoutBody}=requestInit;requestInit={...withoutBody,method:"GET",headers}}if(next.origin!==current.origin){let headers=new Headers(requestInit.headers);for(let name of credentialHeaders)headers.delete(name);requestInit={...requestInit,headers}}current=next}}var LOCAL_CURATOR_NETWORK_DEFAULTS={enabled:!1,host:"localhost",bind:"127.0.0.1"};function trimmedString(value){if(typeof value!="string")return;let trimmed=value.trim();return trimmed.length>0?trimmed:void 0}function resolveCuratorNetworkConfig(){let configPath=getWebSearchConfigPath();if(!existsSync2(configPath))return LOCAL_CURATOR_NETWORK_DEFAULTS;let raw;try{raw=JSON.parse(readFileSync2(configPath,"utf-8"))}catch{return LOCAL_CURATOR_NETWORK_DEFAULTS}if(!raw||typeof raw!="object"||Array.isArray(raw))return LOCAL_CURATOR_NETWORK_DEFAULTS;let curatorRemote=raw.curatorRemote;if(curatorRemote===!0)return{enabled:!0,host:hostname(),bind:"0.0.0.0"};if(curatorRemote&&typeof curatorRemote=="object"&&!Array.isArray(curatorRemote)){let obj=curatorRemote;return{enabled:!0,host:trimmedString(obj.host)??hostname(),bind:trimmedString(obj.bind)??"0.0.0.0"}}return LOCAL_CURATOR_NETWORK_DEFAULTS}function formatSeconds(s){let h=Math.floor(s/3600),m=Math.floor(s%3600/60),sec=s%60;return h>0?`${h}:${String(m).padStart(2,"0")}:${String(sec).padStart(2,"0")}`:`${m}:${String(sec).padStart(2,"0")}`}function readExecError(err){if(!err||typeof err!="object")return{stderr:"",message:String(err)};let code=err.code,message=err.message??"",stderrRaw=err.stderr,stderr=Buffer.isBuffer(stderrRaw)?stderrRaw.toString("utf-8"):typeof stderrRaw=="string"?stderrRaw:"";return{code,stderr,message}}function isTimeoutError(err){if(!err||typeof err!="object")return!1;if(err.killed)return!0;let name=err.name,code=err.code,message=err.message??"";return name==="AbortError"||code==="ETIMEDOUT"||message.toLowerCase().includes("timed out")}function trimErrorText(text){return text.replace(/\s+/g," ").trim().slice(0,200)}function mapFfmpegError(err){let{code,stderr,message}=readExecError(err);if(code==="ENOENT")return"ffmpeg is not installed. Install with: brew install ffmpeg";if(isTimeoutError(err))return"ffmpeg timed out extracting frame";if(stderr.includes("403"))return"Stream URL returned 403 \u2014 may have expired, try again";let snippet=trimErrorText(stderr||message);return snippet?`ffmpeg failed: ${snippet}`:"ffmpeg failed"}var proxyStorage=new AsyncLocalStorage;function normalizeProxyUrl(value,source){if(value==null)return null;if(typeof value!="string")throw new Error(`${source} must be an http(s) proxy URL string`);let trimmed=value.trim();if(!trimmed)return null;let parsed;try{parsed=new URL(trimmed)}catch{throw new Error(`${source} must be a valid proxy URL: ${JSON.stringify(trimmed)}`)}if(parsed.protocol!=="http:"&&parsed.protocol!=="https:")throw new Error(`${source} must use the http:// or https:// scheme: ${trimmed}`);if(!parsed.hostname)throw new Error(`${source} must include a proxy host: ${trimmed}`);return parsed.hash="",parsed.search="",parsed.toString()}function redactProxyUrl(value){let parsed=new URL(value);return parsed.username&&(parsed.username="redacted"),parsed.password&&(parsed.password="redacted"),parsed.toString()}function loadConfiguredProxy(){let configured,path2=getWebSearchConfigPath();if(existsSync2(path2)){let raw;try{raw=JSON.parse(readFileSync2(path2,"utf-8"))}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to load proxy config from ${path2}: ${message}`)}raw&&typeof raw=="object"&&!Array.isArray(raw)&&(configured=raw.proxy)}return configured===void 0?null:normalizeProxyUrl(configured,`proxy in ${getWebSearchConfigPath()}`)}function runWithProxy(proxy,fn){let normalized=proxy===void 0?loadConfiguredProxy():normalizeProxyUrl(proxy,"proxy");return proxyStorage.run(normalized,fn)}function getActiveProxy(){let scoped=proxyStorage.getStore();return scoped!==void 0?scoped:loadConfiguredProxy()}function hasScopedProxyDecision(){return proxyStorage.getStore()!==void 0}function noProxyEntryMatches(hostname2,entry){if(!entry)return!1;if(entry==="*")return!0;let host=entry;if(host.startsWith("[")){let close=host.indexOf("]");close>0&&(host=host.slice(0,close+1))}else{let colon=host.lastIndexOf(":");colon>-1&&/^\d+$/.test(host.slice(colon+1))&&(host=host.slice(0,colon))}return host=host.toLowerCase().replace(/^\[|\]$/g,""),host?hostname2===host||hostname2.endsWith(host.startsWith(".")?host:`.${host}`):!1}function isProxyBypassedUrl(url){let hostname2=url.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(hostname2==="localhost"||hostname2.endsWith(".localhost")||hostname2==="127.0.0.1"||hostname2==="::1")return!0;let noProxy=process.env.NO_PROXY||process.env.no_proxy;return!!(noProxy&&noProxy.split(",").some(entry=>noProxyEntryMatches(hostname2,entry.trim())))}function installGlobalProxyFetch(){let current=globalThis.fetch;if(typeof current!="function"||current.__piWebAccessProxyFetch===!0)return;let nativeFetch=current,wrapped=((input,init)=>{let proxy=init?.__proxy??(hasScopedProxyDecision()?getActiveProxy():null);if(!proxy)return nativeFetch(input,init);let url=null;try{url=new URL(typeof input=="string"||input instanceof URL?input:input.url)}catch{url=null}return!url||url.protocol!=="http:"&&url.protocol!=="https:"||isProxyBypassedUrl(url)?nativeFetch(input,init):fetchViaCurl(url,init??{},proxy)});wrapped.__piWebAccessProxyFetch=!0,globalThis.fetch=wrapped}function parseHeaderDump(dump){let blocks=dump.split(/\r?\n\r?\n/).filter(block2=>/^HTTP\/[\d.]+\s+\d{3}/.test(block2.trim())),lines=(blocks.length>0?blocks[blocks.length-1]:"").trim().split(/\r?\n/),status=0,statusText="",headers=[];for(let line of lines){let match=/^HTTP\/[\d.]+\s+(\d{3})(?:\s+(.*))?$/.exec(line.trim());if(match){status=Number(match[1]),statusText=match[2]??"",headers.length=0;continue}let separator=line.indexOf(":");if(separator>0){let name=line.slice(0,separator).trim();if(name.toLowerCase()==="content-encoding"||name.toLowerCase()==="content-length")continue;headers.push([name,line.slice(separator+1).trim()])}}return{status,statusText,headers}}var CurlTransportError=class extends Error{};function quoteCurlConfigValue(value,label){if(/[\0-\x08\x0c\x0e-\x1f\x7f]/.test(value))throw new Error(`${label} contains unsupported control characters`);return`"${value.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\v/g,"\\v")}"`}function curlConfigOption(name,value,label=name){return value===void 0?name:`${name} = ${quoteCurlConfigValue(value,label)}`}async function fetchViaCurl(url,init,proxyUrl){let current=url,currentInit=init;for(let redirects=0;;redirects++){let response=await fetchViaCurlOnce(current,currentInit,proxyUrl),location=response.headers.get("location");if(!location||![301,302,303,307,308].includes(response.status))return redirects>0&&Object.defineProperty(response,"redirected",{value:!0,configurable:!0}),response;if(currentInit.redirect==="manual")return response;if(currentInit.redirect==="error")throw new TypeError(`Proxy fetch redirect blocked from ${current.toString()}`);if(redirects===20)throw new Error(`Too many proxy redirects from ${url.toString()}`);let next=new URL(location,current);if(next.protocol!=="http:"&&next.protocol!=="https:")throw new Error(`Proxy redirect from ${current.origin} must use HTTP(S)`);let headers=new Headers(currentInit.headers),nextInit,method=currentInit.method?.toUpperCase()??"GET";if((response.status===301||response.status===302)&&method==="POST"||response.status===303&&method!=="GET"&&method!=="HEAD"){for(let name of["Content-Encoding","Content-Language","Content-Location","Content-Type"])headers.delete(name);let{body:_body,...withoutBody}=currentInit;nextInit={...withoutBody,method:"GET",headers}}else nextInit={...currentInit,headers};next.origin!==current.origin&&(headers=new Headers,nextInit={...nextInit,headers}),current=next,currentInit=nextInit}}async function fetchViaCurlOnce(url,init,proxyUrl){let method=(init.method??"GET").toUpperCase(),headers=new Headers(init.headers),dir=await mkdtemp(join4(tmpdir(),"pi-web-access-proxy-")),headerFile=join4(dir,"headers"),bodyFile=join4(dir,"body"),requestBodyFile=join4(dir,"request-body"),config=[curlConfigOption("silent"),curlConfigOption("show-error"),curlConfigOption("compressed"),curlConfigOption("connect-timeout","20"),curlConfigOption("proxy",proxyUrl,"proxy URL"),curlConfigOption("dump-header",headerFile),curlConfigOption("output",bodyFile),curlConfigOption("write-out","%{json}")];method!=="GET"&&method!=="HEAD"&&config.push(curlConfigOption("request",method));for(let[name,value]of headers.entries())value!==""&&config.push(curlConfigOption("header",`${name}: ${value}`,`header ${name}`));let body=init.body;if(body!=null){let buffer;if(typeof body=="string")buffer=Buffer.from(body,"utf-8");else if(body instanceof URLSearchParams)buffer=Buffer.from(body.toString(),"utf-8");else if(body instanceof ArrayBuffer)buffer=Buffer.from(body);else if(ArrayBuffer.isView(body))buffer=Buffer.from(body.buffer,body.byteOffset,body.byteLength);else throw new Error(`Unsupported request body type for proxy fetch: ${typeof body}`);await writeFile(requestBodyFile,buffer,{mode:384}),config.push(curlConfigOption("data-binary",`@${requestBodyFile}`)),method==="GET"&&config.push(curlConfigOption("request","GET"))}config.push(curlConfigOption("url",url.toString(),"request URL"));let configInput=`${config.join(`
3
+ `)}
4
+ `,signal=init.signal??null,stdout;try{stdout=await new Promise((resolve2,reject)=>{if(signal?.aborted){reject(new DOMException("The operation was aborted.","AbortError"));return}let child=spawn("curl",["--config","-"],{windowsHide:!0,stdio:["pipe","pipe","pipe"]}),out="",stderr="",onAbort=()=>{try{child.kill()}catch{}};if(signal&&signal.addEventListener("abort",onAbort,{once:!0}),child.stdout?.on("data",chunk=>{out+=chunk.toString("utf-8")}),child.stderr?.on("data",chunk=>{stderr.length<4096&&(stderr+=chunk.toString("utf-8"))}),child.once("error",err=>{signal?.removeEventListener("abort",onAbort),reject(new CurlTransportError(err.code==="ENOENT"?"curl executable not found on PATH; proxy transport requires curl":`curl failed to start: ${err.message}`))}),child.once("close",code=>{if(signal?.removeEventListener("abort",onAbort),signal?.aborted)return reject(new DOMException("The operation was aborted.","AbortError"));if(code!==0&&!out.trim())return reject(new CurlTransportError(`curl exited with code ${code??"unknown"} via ${redactProxyUrl(proxyUrl)}${stderr.trim()?`: ${stderr.trim()}`:""}`));resolve2(out)}),!child.stdin){child.kill(),reject(new CurlTransportError("curl stdin unavailable for protected proxy configuration"));return}child.stdin.on("error",err=>reject(new CurlTransportError(`curl stdin failed: ${err.message}`))),child.stdin.end(configInput)})}catch(err){throw await rm(dir,{recursive:!0,force:!0}).catch(()=>{}),err instanceof CurlTransportError?new Error(err.message):err}let bodyBuffer=Buffer.alloc(0),dump="";try{[dump,bodyBuffer]=await Promise.all([readFile(headerFile,"utf-8"),readFile(bodyFile)])}catch{}finally{await rm(dir,{recursive:!0,force:!0}).catch(()=>{})}let{status,statusText,headers:responseHeaders}=parseHeaderDump(dump);if(status===0)throw new Error(`Proxy fetch to ${url.toString()} via ${redactProxyUrl(proxyUrl)} returned no HTTP status`);let finalUrl=url.toString(),redirected=!1;try{let trimmed=stdout.trim();if(trimmed.startsWith("{")){let writeOut=JSON.parse(trimmed);writeOut.url_effective&&(finalUrl=writeOut.url_effective),redirected=(writeOut.num_redirects??0)>0}}catch{}let nullBody=status===204||status===205||status===304,response=new Response(nullBody?null:new Uint8Array(bodyBuffer),{status,statusText:statusText||void 0,headers:new Headers(responseHeaders)});return Object.defineProperty(response,"url",{value:finalUrl,configurable:!0}),Object.defineProperty(response,"redirected",{value:redirected,configurable:!0}),response}import{existsSync as existsSync3,readFileSync as readFileSync3}from"node:fs";var WEB_SEARCH_CONFIG_PATH=getWebSearchConfigPath(),AUTH_PROFILE_NAME_PATTERN=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/;function resolveAuthFetchProfile(request){let profiles=loadAuthFetchProfiles();if(profiles.length===0)throw new Error(`auth requires at least one authFetch profile in ${WEB_SEARCH_CONFIG_PATH}`);if(request===!0){if(profiles.length!==1)throw new Error("auth: true requires exactly one authFetch profile; use a profile name instead");return profiles[0]}let name=request.trim(),profile=profiles.find(candidate=>candidate.name===name);if(!profile)throw new Error(`Unknown authFetch profile: ${name}`);return profile}function assertAuthFetchUrl(profile,rawUrl){let url;try{url=new URL(rawUrl)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Authenticated fetch requires an HTTPS URL: ${message}`)}if(url.protocol!=="https:")throw new Error("Authenticated fetch requires an HTTPS URL");let hostname2=normalizeHostname(url.hostname);if(!profile.hosts.some(host=>hostMatches(hostname2,host)))throw new Error(`URL host ${hostname2} is not allowed by authFetch profile ${profile.name}`);return url}function authFetchRedirectGuard(profile,from,to){if(profile.redirects==="same-origin"&&to.origin!==from.origin)throw new Error(`Authenticated fetch refused cross-origin redirect: ${from.origin} -> ${to.origin}`)}function loadAuthFetchProfiles(){if(!existsSync3(WEB_SEARCH_CONFIG_PATH))return[];let raw=readFileSync3(WEB_SEARCH_CONFIG_PATH,"utf-8"),parsed;try{let value=JSON.parse(raw);if(!value||typeof value!="object"||Array.isArray(value))throw new Error("expected a JSON object");parsed=value}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${WEB_SEARCH_CONFIG_PATH}: ${message}`)}if(parsed.authFetch===void 0||parsed.authFetch===null)return[];if(typeof parsed.authFetch!="object"||Array.isArray(parsed.authFetch))throw new Error(`authFetch in ${WEB_SEARCH_CONFIG_PATH} must be an object`);return Object.entries(parsed.authFetch).map(([name,value])=>parseProfile(name,value))}function parseProfile(name,value){if(!AUTH_PROFILE_NAME_PATTERN.test(name))throw new Error(`authFetch profile name ${JSON.stringify(name)} must start with a letter and contain only letters, numbers, underscores, or hyphens`);if(Array.isArray(value))return{name,hosts:parseHosts(value,`authFetch.${name}`),redirects:"same-origin",cache:"session"};if(!value||typeof value!="object")throw new Error(`authFetch.${name} in ${WEB_SEARCH_CONFIG_PATH} must be an array of hosts or an object`);let config=value;if(!Array.isArray(config.hosts))throw new Error(`authFetch.${name}.hosts in ${WEB_SEARCH_CONFIG_PATH} must be a non-empty array of hostnames`);let redirects=config.redirects??"same-origin";if(redirects!=="same-origin")throw new Error(`authFetch.${name}.redirects in ${WEB_SEARCH_CONFIG_PATH} must be "same-origin"`);let cache=config.cache??"session";if(cache!=="session"&&cache!=="off")throw new Error(`authFetch.${name}.cache in ${WEB_SEARCH_CONFIG_PATH} must be "session" or "off"`);let chromeProfile=parseChromeProfile(config.chromeProfile,`authFetch.${name}.chromeProfile`);return{name,hosts:parseHosts(config.hosts,`authFetch.${name}.hosts`),...chromeProfile?{chromeProfile}:{},redirects,cache}}function parseHosts(value,label){if(value.length===0)throw new Error(`${label} in ${WEB_SEARCH_CONFIG_PATH} must be a non-empty array of hostnames`);let hosts=value.map(entry=>{if(typeof entry!="string")throw new Error(`${label} in ${WEB_SEARCH_CONFIG_PATH} must contain only hostnames`);return parseHost(entry,label)});return[...new Set(hosts)]}function parseHost(value,label){let host=normalizeHostname(value.trim());if(!host||host.startsWith(".")||host.endsWith(".")||/\s|[\\/?:#@*]/.test(host))throw new Error(`${label} in ${WEB_SEARCH_CONFIG_PATH} contains an invalid hostname: ${JSON.stringify(value)}`);if(host.length>253||!/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i.test(host))throw new Error(`${label} in ${WEB_SEARCH_CONFIG_PATH} contains an invalid hostname: ${JSON.stringify(value)}`);return host}function parseChromeProfile(value,label){if(value==null)return;if(typeof value!="string")throw new Error(`${label} in ${WEB_SEARCH_CONFIG_PATH} must be a string`);let normalized=value.trim();if(!normalized||normalized==="."||normalized===".."||normalized.includes("/")||normalized.includes("\\"))throw new Error(`${label} in ${WEB_SEARCH_CONFIG_PATH} must be a profile directory name, not a path`);return normalized}function normalizeHostname(hostname2){return hostname2.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"")}function hostMatches(hostname2,allowedHost){return hostname2===allowedHost||hostname2.endsWith(`.${allowedHost}`)}var ActivityMonitor=class{constructor(){this.entries=[],this.maxEntries=10,this.listeners=new Set,this.rateLimitInfo={used:0,max:10,oldestTimestamp:null,windowMs:6e4},this.nextId=1}logStart(partial){let id=`act-${this.nextId++}`,entry={...partial,id,startTime:Date.now(),status:null};return this.entries.push(entry),this.entries.length>this.maxEntries&&this.entries.shift(),this.notify(),id}logComplete(id,status){let entry=this.entries.find(e=>e.id===id);entry&&(entry.endTime=Date.now(),entry.status=status,this.notify())}logError(id,error){let entry=this.entries.find(e=>e.id===id);entry&&(entry.endTime=Date.now(),entry.error=error,this.notify())}getEntries(){return this.entries}getRateLimitInfo(){return this.rateLimitInfo}updateRateLimit(info){this.rateLimitInfo=info,this.notify()}onUpdate(callback){return this.listeners.add(callback),()=>this.listeners.delete(callback)}clear(){this.entries=[],this.rateLimitInfo={used:0,max:10,oldestTimestamp:null,windowMs:6e4},this.notify()}notify(){for(let cb of this.listeners)try{cb()}catch{}}},activityMonitor=new ActivityMonitor;import{chmodSync,closeSync,existsSync as existsSync4,lstatSync,mkdirSync,mkdtempSync,openSync,readFileSync as readFileSync4,readSync,readdirSync,realpathSync as realpathSync3,rmSync,statSync as statSync2,unlinkSync}from"node:fs";import{execFile as execFile2,spawn as spawn2}from"node:child_process";import{createHash}from"node:crypto";import{basename as basename2,dirname as dirname3,extname,join as join5,resolve as resolvePath2,sep as pathSep}from"node:path";import{execFile}from"node:child_process";var MAX_TREE_ENTRIES=200,MAX_INLINE_FILE_CHARS=1e5,ghAvailable=null,ghHintShown=!1;async function checkGhAvailable(signal){return ghAvailable!==null?ghAvailable:new Promise(resolve2=>{execFile("gh",["--version"],{timeout:5e3,...signal?{signal}:{}},err=>{let available=!err;signal?.aborted||(ghAvailable=available),resolve2(available)})})}function showGhHint(){ghHintShown||(ghHintShown=!0,console.error("[pi-web-access] Install `gh` CLI for better GitHub repo access including private repos."))}async function checkRepoSize(owner,repo){return await checkGhAvailable()?new Promise(resolve2=>{execFile("gh",["api",`repos/${owner}/${repo}`,"--jq",".size"],{timeout:1e4},(err,stdout)=>{if(err){resolve2(null);return}let kb=parseInt(stdout.trim(),10);resolve2(Number.isNaN(kb)?null:kb)})}):null}async function getDefaultBranch(owner,repo){return await checkGhAvailable()?new Promise(resolve2=>{execFile("gh",["api",`repos/${owner}/${repo}`,"--jq",".default_branch"],{timeout:1e4},(err,stdout)=>{if(err){resolve2(null);return}let branch=stdout.trim();resolve2(branch||null)})}):null}async function fetchTreeViaApi(owner,repo,ref){return await checkGhAvailable()?new Promise(resolve2=>{execFile("gh",["api",`repos/${owner}/${repo}/git/trees/${ref}?recursive=1`,"--jq",".tree[].path"],{timeout:15e3,maxBuffer:5*1024*1024},(err,stdout)=>{if(err){resolve2(null);return}let paths=stdout.trim().split(`
5
+ `).filter(Boolean);if(paths.length===0){resolve2(null);return}let truncated=paths.length>MAX_TREE_ENTRIES,display=paths.slice(0,MAX_TREE_ENTRIES).join(`
6
+ `);resolve2(truncated?display+`
7
+ ... (${paths.length} total entries)`:display)})}):null}async function fetchReadmeViaApi(owner,repo,ref){return await checkGhAvailable()?new Promise(resolve2=>{execFile("gh",["api",`repos/${owner}/${repo}/readme?ref=${ref}`,"--jq",".content"],{timeout:1e4},(err,stdout)=>{if(err){resolve2(null);return}try{let decoded=Buffer.from(stdout.trim(),"base64").toString("utf-8");resolve2(decoded.length>8192?decoded.slice(0,8192)+`
8
+
9
+ [README truncated at 8K chars]`:decoded)}catch{resolve2(null)}})}):null}async function fetchFileViaApi(owner,repo,path2,ref){return await checkGhAvailable()?new Promise(resolve2=>{execFile("gh",["api",`repos/${owner}/${repo}/contents/${path2}?ref=${ref}`,"--jq",".content"],{timeout:1e4,maxBuffer:2*1024*1024},(err,stdout)=>{if(err){resolve2(null);return}try{resolve2(Buffer.from(stdout.trim(),"base64").toString("utf-8"))}catch{resolve2(null)}})}):null}async function fetchViaApi(url,owner,repo,info,sizeNote){let ref=info.ref||await getDefaultBranch(owner,repo);if(!ref)return null;let lines=[];if(sizeNote&&(lines.push(sizeNote),lines.push("")),info.type==="blob"&&info.path){let content=await fetchFileViaApi(owner,repo,info.path,ref);return content?(lines.push(`## ${info.path}`),content.length>MAX_INLINE_FILE_CHARS?(lines.push(content.slice(0,MAX_INLINE_FILE_CHARS)),lines.push(`
10
+ [File truncated at 100K chars]`)):lines.push(content),{url,title:`${owner}/${repo} - ${info.path}`,content:lines.join(`
11
+ `),error:null}):null}let[tree,readme]=await Promise.all([fetchTreeViaApi(owner,repo,ref),fetchReadmeViaApi(owner,repo,ref)]);if(!tree&&!readme)return null;tree&&(lines.push("## Structure"),lines.push(tree),lines.push("")),readme&&(lines.push("## README.md"),lines.push(readme),lines.push("")),lines.push("This is an API-only view. Clone the repo or use `read`/`bash` for deeper exploration.");let title=info.path?`${owner}/${repo} - ${info.path}`:`${owner}/${repo}`;return{url,title,content:lines.join(`
12
+ `),error:null}}var CONFIG_PATH=getWebSearchConfigPath(),BINARY_EXTENSIONS=new Set([".png",".jpg",".jpeg",".gif",".bmp",".ico",".webp",".svg",".tiff",".tif",".mp3",".mp4",".avi",".mov",".mkv",".flv",".wmv",".wav",".ogg",".webm",".flac",".aac",".zip",".tar",".gz",".bz2",".xz",".7z",".rar",".zst",".exe",".dll",".so",".dylib",".bin",".o",".a",".lib",".woff",".woff2",".ttf",".otf",".eot",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".sqlite",".db",".sqlite3",".pyc",".pyo",".class",".jar",".war",".iso",".img",".dmg"]),NOISE_DIRS=new Set(["node_modules","vendor",".next","dist","build","__pycache__",".venv","venv",".tox",".mypy_cache",".pytest_cache","target",".gradle",".idea",".vscode"]),MAX_INLINE_FILE_CHARS2=1e5,MAX_TREE_ENTRIES2=200,cloneCache=new Map,cachedConfig=null,cloneRuntime=null;function normalizeEnabled(value,fallback){return typeof value=="boolean"?value:fallback}function normalizePositiveNumber(value,fallback){return typeof value!="number"||!Number.isFinite(value)?fallback:value>0?value:fallback}function expandPath(value){let expanded=value;return(expanded.startsWith("~/")||expanded==="~")&&(expanded=expanded.replace(/^~/,process.env.HOME||process.env.USERPROFILE||"")),expanded=expanded.replace(/\$([A-Z_][A-Z0-9_]*)/gi,(match,varName)=>process.env[varName]??match),expanded}function normalizeClonePath(value,fallback){if(typeof value!="string")return fallback;let normalized=value.trim();return normalized.length===0?fallback:expandPath(normalized)}function loadGitHubConfig(){if(cachedConfig)return cachedConfig;let defaults={enabled:!0,maxRepoSizeMB:350,cloneTimeoutSeconds:30,clonePath:"/tmp/pi-github-repos"};if(!existsSync4(CONFIG_PATH))return cachedConfig=defaults,cachedConfig;let rawText=readFileSync4(CONFIG_PATH,"utf-8"),raw;try{raw=JSON.parse(rawText)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH}: ${message}`)}let gc=raw.githubClone??{};return cachedConfig={enabled:normalizeEnabled(gc.enabled,defaults.enabled),maxRepoSizeMB:normalizePositiveNumber(gc.maxRepoSizeMB,defaults.maxRepoSizeMB),cloneTimeoutSeconds:normalizePositiveNumber(gc.cloneTimeoutSeconds,defaults.cloneTimeoutSeconds),clonePath:normalizeClonePath(gc.clonePath,defaults.clonePath)},cachedConfig}var NON_CODE_SEGMENTS=new Set(["issues","pull","pulls","discussions","releases","wiki","actions","settings","security","projects","graphs","compare","commits","tags","branches","stargazers","watchers","network","forks","milestone","labels","packages","codespaces","contribute","community","sponsors","invitations","notifications","insights"]);function parseGitHubUrl(url){let parsed;try{parsed=new URL(url)}catch{return null}let host=parsed.hostname.toLowerCase();if(host!=="github.com"&&host!=="www.github.com")return null;let segments=[];for(let segment of parsed.pathname.split("/").filter(Boolean))try{segments.push(decodeURIComponent(segment))}catch{return null}if(segments.length<2)return null;let owner=segments[0],repo=segments[1].replace(/\.git$/,"");if(!/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,37}[A-Za-z0-9])?$/.test(owner)||owner.includes("--")||!/^[A-Za-z0-9._-]{1,100}$/.test(repo)||repo==="."||repo===".."||NON_CODE_SEGMENTS.has(segments[2]?.toLowerCase()))return null;if(segments.length===2)return{owner,repo,refIsFullSha:!1,type:"root"};let action=segments[2];if(action!=="blob"&&action!=="tree"||segments.length<4)return null;let ref=segments[3];if(ref.length===0||ref.length>1024||/[\0-\x1f\x7f]/.test(ref))return null;let refIsFullSha=/^[0-9a-f]{40}$/.test(ref),pathParts=segments.slice(4),path2=pathParts.length>0?pathParts.join("/"):"";return{owner,repo,ref,refIsFullSha,path:path2,type:action}}function cacheKey(owner,repo,ref){return ref?`${owner}/${repo}@${ref}`:`${owner}/${repo}`}function removeCloneRuntime(parentPath,runtimePath){let normalizedParentPath=resolvePath2(parentPath),normalizedRuntimePath=resolvePath2(runtimePath);if(!(dirname3(normalizedRuntimePath)!==normalizedParentPath||!basename2(normalizedRuntimePath).startsWith("runtime-")))try{lstatSync(normalizedRuntimePath).isSymbolicLink()?unlinkSync(normalizedRuntimePath):rmSync(normalizedRuntimePath,{recursive:!0,force:!0})}catch{}}function getCloneRuntimeRoot(config){if(cloneRuntime)return cloneRuntime.rootPath;let parentPath=null,runtimePath=null;try{let configuredPath=resolvePath2(config.clonePath);mkdirSync(configuredPath,{recursive:!0}),parentPath=realpathSync3(configuredPath),runtimePath=mkdtempSync(join5(parentPath,"runtime-")),chmodSync(runtimePath,448);let rootPath=realpathSync3(runtimePath);return dirname3(rootPath)!==parentPath?(removeCloneRuntime(parentPath,runtimePath),null):(cloneRuntime={parentPath,rootPath},rootPath)}catch{return parentPath&&runtimePath&&removeCloneRuntime(parentPath,runtimePath),null}}function cloneDestination(config,owner,repo,ref){try{let rootPath=getCloneRuntimeRoot(config);if(!rootPath)return null;let digest=createHash("sha256").update(JSON.stringify([owner,repo,ref??null])).digest("hex"),localPath=resolvePath2(rootPath,digest);return dirname3(localPath)!==rootPath?null:{rootPath,localPath}}catch{return null}}function removeCloneDestination(destination){let rootPath=resolvePath2(destination.rootPath),localPath=resolvePath2(destination.localPath);if(dirname3(localPath)!==rootPath||!/^[0-9a-f]{64}$/.test(basename2(localPath)))return!1;try{return lstatSync(localPath).isSymbolicLink()?unlinkSync(localPath):rmSync(localPath,{recursive:!0,force:!0}),!0}catch(err){return!!(err&&typeof err=="object"&&"code"in err&&err.code==="ENOENT")}}var PROCESS_KILL_GRACE_MS=3e3;function terminateProcessTree(child){let pid=child.pid;if(!pid)return;if(process.platform==="win32"){execFile2("taskkill",["/pid",String(pid),"/T","/F"],{windowsHide:!0},err=>{err&&child.kill()}).unref();return}try{process.kill(-pid,"SIGTERM")}catch{child.kill()}setTimeout(()=>{try{process.kill(-pid,"SIGKILL")}catch{child.kill("SIGKILL")}},PROCESS_KILL_GRACE_MS).unref()}function execClone(args,destination,timeoutMs,signal){return new Promise(resolve2=>{let{localPath}=destination,settled=!1,timeout,onAbort,finish=success=>{if(!settled){if(settled=!0,timeout&&clearTimeout(timeout),signal&&onAbort&&signal.removeEventListener("abort",onAbort),!success){removeCloneDestination(destination),resolve2(null);return}resolve2(localPath)}},child=spawn2(args[0],args.slice(1),{detached:process.platform!=="win32",env:{...process.env,GIT_TERMINAL_PROMPT:"0",GCM_INTERACTIVE:"Never",GH_PROMPT_DISABLED:"1"},stdio:"ignore",windowsHide:!0});child.once("error",()=>finish(!1)),child.once("close",code=>finish(code===0)),timeout=setTimeout(()=>terminateProcessTree(child),timeoutMs),timeout.unref(),signal&&(onAbort=()=>{timeout&&clearTimeout(timeout),terminateProcessTree(child)},signal.aborted?onAbort():signal.addEventListener("abort",onAbort,{once:!0}))})}async function cloneRepo(owner,repo,ref,config,destination,signal){let{localPath}=destination;if(!removeCloneDestination(destination))return null;let timeoutMs=config.cloneTimeoutSeconds*1e3;if(await checkGhAvailable()){let args2=["gh","repo","clone",`${owner}/${repo}`,localPath,"--","--depth","1","--single-branch"];return ref&&args2.push("--branch",ref),execClone(args2,destination,timeoutMs,signal)}showGhHint();let gitUrl=`https://github.com/${owner}/${repo}.git`,args=["git","clone","--depth","1","--single-branch"];return ref&&args.push("--branch",ref),args.push(gitUrl,localPath),execClone(args,destination,timeoutMs,signal)}function isBinaryFile(filePath){let ext=extname(filePath).toLowerCase();if(BINARY_EXTENSIONS.has(ext))return!0;let fd;try{fd=openSync(filePath,"r")}catch{return!1}try{let buf=Buffer.alloc(512),bytesRead=readSync(fd,buf,0,512,0);for(let i=0;i<bytesRead;i++)if(buf[i]===0)return!0}catch{return!1}finally{closeSync(fd)}return!1}function formatFileSize(bytes){return bytes<1024?`${bytes} B`:bytes<1024*1024?`${(bytes/1024).toFixed(1)} KB`:`${(bytes/(1024*1024)).toFixed(1)} MB`}function resolveWithinRepo(rootPath,relativePath){let normalizedRoot=resolvePath2(rootPath),candidate=resolvePath2(normalizedRoot,relativePath);if(candidate!==normalizedRoot){let rootPrefix=normalizedRoot.endsWith(pathSep)?normalizedRoot:normalizedRoot+pathSep;if(!candidate.startsWith(rootPrefix))return null}if(!existsSync4(candidate))return candidate;try{let realRoot=realpathSync3(normalizedRoot),realCandidate=realpathSync3(candidate);if(realCandidate===realRoot)return candidate;let realRootPrefix=realRoot.endsWith(pathSep)?realRoot:realRoot+pathSep;return realCandidate.startsWith(realRootPrefix)?candidate:null}catch{return null}}function readTextFile(path2){try{return readFileSync4(path2,"utf-8")}catch{return null}}function buildTree(rootPath){let entries2=[];function walk(dir,relPath){if(entries2.length>=MAX_TREE_ENTRIES2)return;let items;try{items=readdirSync(dir).sort()}catch{return}for(let item of items){if(entries2.length>=MAX_TREE_ENTRIES2)return;if(item===".git")continue;let rel=relPath?`${relPath}/${item}`:item,safePath=resolveWithinRepo(rootPath,rel);if(!safePath){entries2.push(`${rel} [outside repo skipped]`);continue}let stat;try{stat=statSync2(safePath)}catch{continue}if(stat.isDirectory()){if(NOISE_DIRS.has(item)){entries2.push(`${rel}/ [skipped]`);continue}entries2.push(`${rel}/`),walk(safePath,rel)}else entries2.push(rel)}}return walk(rootPath,""),entries2.length>=MAX_TREE_ENTRIES2&&entries2.push(`... (truncated at ${MAX_TREE_ENTRIES2} entries)`),entries2.join(`
13
+ `)}function buildDirListing(rootPath,subPath){let targetPath=resolveWithinRepo(rootPath,subPath);if(!targetPath)return"(path escapes repository root)";let lines=[],items;try{items=readdirSync(targetPath).sort()}catch{return"(directory not readable)"}for(let item of items){if(item===".git")continue;let rel=subPath?`${subPath}/${item}`:item,safePath=resolveWithinRepo(rootPath,rel);if(!safePath){lines.push(` ${item} (outside repo)`);continue}try{let stat=statSync2(safePath);stat.isDirectory()?lines.push(` ${item}/`):lines.push(` ${item} (${formatFileSize(stat.size)})`)}catch{lines.push(` ${item} (unreadable)`)}}return lines.join(`
14
+ `)}function readReadme(localPath){let candidates=["README.md","readme.md","README","README.txt","README.rst"];for(let name of candidates){let readmePath=join5(localPath,name);if(existsSync4(readmePath))try{let content=readFileSync4(readmePath,"utf-8");return content.length>8192?content.slice(0,8192)+`
15
+
16
+ [README truncated at 8K chars]`:content}catch{continue}}return null}function generateContent(localPath,info){let lines=[];if(lines.push(`Repository cloned to: ${localPath}`),lines.push(""),info.type==="root"){lines.push("## Structure"),lines.push(buildTree(localPath)),lines.push("");let readme=readReadme(localPath);return readme&&(lines.push("## README.md"),lines.push(readme),lines.push("")),lines.push("Use `read` and `bash` tools at the path above to explore further."),lines.join(`
17
+ `)}if(info.type==="tree"){let dirPath=info.path||"",fullDirPath=resolveWithinRepo(localPath,dirPath);return!fullDirPath||!existsSync4(fullDirPath)?(lines.push(`Path \`${dirPath}\` not found in clone. Showing repository root instead.`),lines.push(""),lines.push("## Structure"),lines.push(buildTree(localPath))):(lines.push(`## ${dirPath||"/"}`),lines.push(buildDirListing(localPath,dirPath))),lines.push(""),lines.push("Use `read` and `bash` tools at the path above to explore further."),lines.join(`
18
+ `)}if(info.type==="blob"){let filePath=info.path||"",fullFilePath=resolveWithinRepo(localPath,filePath);if(!fullFilePath||!existsSync4(fullFilePath))return lines.push(`Path \`${filePath}\` not found in clone. Showing repository root instead.`),lines.push(""),lines.push("## Structure"),lines.push(buildTree(localPath)),lines.push(""),lines.push("Use `read` and `bash` tools at the path above to explore further."),lines.join(`
19
+ `);let stat;try{stat=statSync2(fullFilePath)}catch(err){let message=err instanceof Error?err.message:String(err);return lines.push(`Could not inspect \`${filePath}\`: ${message}`),lines.push(""),lines.push("Use `read` and `bash` tools at the path above to explore further."),lines.join(`
20
+ `)}if(stat.isDirectory())return lines.push(`## ${filePath||"/"}`),lines.push(buildDirListing(localPath,filePath)),lines.push(""),lines.push("Use `read` and `bash` tools at the path above to explore further."),lines.join(`
21
+ `);if(isBinaryFile(fullFilePath)){let ext=extname(filePath).replace(".","");return lines.push(`## ${filePath}`),lines.push(`Binary file (${ext}, ${formatFileSize(stat.size)}). Use \`read\` or \`bash\` tools at the path above to inspect.`),lines.join(`
22
+ `)}let content=readTextFile(fullFilePath);return content===null?(lines.push(`Could not read \`${filePath}\` as UTF-8 text.`),lines.push(""),lines.push("Use `read` and `bash` tools at the path above to explore further."),lines.join(`
23
+ `)):(lines.push(`## ${filePath}`),content.length>MAX_INLINE_FILE_CHARS2?(lines.push(content.slice(0,MAX_INLINE_FILE_CHARS2)),lines.push(""),lines.push(`[File truncated at 100K chars. Full file: ${fullFilePath}]`)):lines.push(content),lines.push(""),lines.push("Use `read` and `bash` tools at the path above to explore further."),lines.join(`
24
+ `))}return lines.join(`
25
+ `)}async function awaitCachedClone(cached,url,owner,repo,info,signal){if(signal?.aborted)return null;let result=await cached.clonePromise;if(signal?.aborted)return null;if(result){let content=generateContent(result,info),title=info.path?`${owner}/${repo} - ${info.path}`:`${owner}/${repo}`;return{url,title,content,error:null}}return fetchViaApi(url,owner,repo,info)}async function extractGitHub(url,signal,forceClone){let info=parseGitHubUrl(url);if(!info||signal?.aborted)return null;let config=loadGitHubConfig();if(!config.enabled)return null;let{owner,repo}=info,key2=cacheKey(owner,repo,info.ref),cached=cloneCache.get(key2);if(cached)return awaitCachedClone(cached,url,owner,repo,info,signal);if(info.refIsFullSha)return signal?.aborted?null:fetchViaApi(url,owner,repo,info,"Note: Commit SHA URLs use the GitHub API instead of cloning.");let activityId=activityMonitor.logStart({type:"fetch",url:`github.com/${owner}/${repo}`});if(!forceClone){let sizeKB=await checkRepoSize(owner,repo);if(signal?.aborted)return activityMonitor.logComplete(activityId,0),null;if(sizeKB!==null){let sizeMB=sizeKB/1024;if(sizeMB>config.maxRepoSizeMB){if(signal?.aborted)return activityMonitor.logComplete(activityId,0),null;let sizeNote=`Note: Repository is ${Math.round(sizeMB)}MB (threshold: ${config.maxRepoSizeMB}MB). Showing API-fetched content instead of full clone. Ask the user if they'd like to clone the full repo -- if yes, call fetch_content again with the same URL and add forceClone: true to the params.`,apiView=await fetchViaApi(url,owner,repo,info,sizeNote);return apiView?(activityMonitor.logComplete(activityId,200),apiView):(activityMonitor.logError(activityId,"api fallback unavailable for oversized repository"),null)}}}if(signal?.aborted)return activityMonitor.logComplete(activityId,0),null;let cachedAfterSizeCheck=cloneCache.get(key2);if(cachedAfterSizeCheck){let cachedResult=await awaitCachedClone(cachedAfterSizeCheck,url,owner,repo,info,signal);return signal?.aborted?activityMonitor.logComplete(activityId,0):cachedResult?activityMonitor.logComplete(activityId,200):activityMonitor.logError(activityId,"clone failed"),cachedResult}let destination=cloneDestination(config,owner,repo,info.ref);if(!destination){let apiFallback=await fetchViaApi(url,owner,repo,info);return apiFallback?activityMonitor.logComplete(activityId,200):activityMonitor.logError(activityId,"invalid clone destination"),apiFallback}let clonePromise=cloneRepo(owner,repo,info.ref,config,destination,signal);cloneCache.set(key2,{destination,clonePromise});let result=await clonePromise;if(signal?.aborted)return result||cloneCache.delete(key2),activityMonitor.logComplete(activityId,0),null;if(!result){if(cloneCache.delete(key2),signal?.aborted)return activityMonitor.logComplete(activityId,0),null;let apiFallback=await fetchViaApi(url,owner,repo,info);return apiFallback?(activityMonitor.logComplete(activityId,200),apiFallback):(activityMonitor.logError(activityId,"clone and API fallback failed"),null)}activityMonitor.logComplete(activityId,200);let content=generateContent(result,info),title=info.path?`${owner}/${repo} - ${info.path}`:`${owner}/${repo}`;return{url,title,content,error:null}}function clearCloneCache(){for(let entry of cloneCache.values())removeCloneDestination(entry.destination);cloneCache.clear(),cloneRuntime&&removeCloneRuntime(cloneRuntime.parentPath,cloneRuntime.rootPath),cloneRuntime=null,cachedConfig=null}import{exec}from"node:child_process";import{promisify}from"node:util";var execAsync=promisify(exec),COMMAND_TIMEOUT_MS=5e3,MAX_CREDENTIAL_BYTES=16384,ENV_SOURCE=/^\$(?:([A-Za-z_][A-Za-z0-9_]*)|\{([A-Za-z_][A-Za-z0-9_]*)\})$/,OP_SESSION_NAME=/^OP_SESSION_[A-Za-z0-9_]+$/,COMMAND_ENVIRONMENT_NAMES=["HOME","USER","LOGNAME","PATH","LANG","LC_ALL","LC_CTYPE","TERM","TMPDIR","XDG_CONFIG_HOME","XDG_RUNTIME_DIR","DBUS_SESSION_BUS_ADDRESS","SSH_AUTH_SOCK","WSL_DISTRO_NAME","WSL_INTEROP"],CredentialResolutionError=class extends Error{constructor(provider,category){let suffix=category==="command-aborted"?"aborted":category==="oauth-credential-rejected"?"OAuth token exchange rejected the credentials":category;super(`${provider} credential resolution failed: ${suffix}`),this.name="CredentialResolutionError",this.provider=provider,this.category=category}};function redactCredential(text,credential){return credential?text.split(credential).join("[redacted]"):text}function normalize(value){if(typeof value!="string")return null;let normalized=value.trim();return normalized.length>0?normalized:null}function commandEnvironment(source){let environment={};for(let name of COMMAND_ENVIRONMENT_NAMES){let value=source[name];value!==void 0&&(environment[name]=value)}for(let[name,value]of Object.entries(source))value!==void 0&&OP_SESSION_NAME.test(name)&&(environment[name]=value);return environment}function configuredSource(options){return normalize(options.configuredValue)}function explicitEnvironmentName(source){let match=source.match(ENV_SOURCE);return match?match[1]??match[2]:null}function escapedSource(source){return source.startsWith("$$")||source.startsWith("$!")?source.slice(1):null}function isMalformedExplicitSource(source){return source.startsWith("$")&&escapedSource(source)===null&&explicitEnvironmentName(source)===null}async function defaultRunCommand(command,options){return{stdout:(await execAsync(command,{encoding:"utf8",env:options.environment,maxBuffer:options.maxOutputBytes+1,signal:options.signal,timeout:options.timeoutMs,windowsHide:!0})).stdout}}function commandFailureCategory(error,signal){if(signal?.aborted)return"command-aborted";if(error&&typeof error=="object"){let code=error.code;if(code==="ERR_CHILD_PROCESS_STDIO_MAXBUFFER")return"command-output-too-large";if(error.killed||code==="ETIMEDOUT")return"command-timeout"}return"command-failed"}function hasCredentialSource(options){let source=configuredSource(options);return source?.startsWith("!")||source?.startsWith("$")?!0:normalize(options.environmentValue)!==null||source!==null}async function resolveCredential(options){let source=configuredSource(options),escaped=source?escapedSource(source):null;if(escaped!==null)return escaped;if(source?.startsWith("!")){let command=source.slice(1).trim();if(!command)throw new CredentialResolutionError(options.provider,"invalid-source");let result;try{result=await(options.runCommand??defaultRunCommand)(command,{signal:options.signal,timeoutMs:COMMAND_TIMEOUT_MS,maxOutputBytes:MAX_CREDENTIAL_BYTES,environment:commandEnvironment(options.environment??process.env)})}catch(error){throw new CredentialResolutionError(options.provider,commandFailureCategory(error,options.signal))}let stdout=Buffer.isBuffer(result.stdout)?result.stdout.toString("utf8"):result.stdout;if(Buffer.byteLength(stdout,"utf8")>MAX_CREDENTIAL_BYTES)throw new CredentialResolutionError(options.provider,"command-output-too-large");let value=stdout.trim();if(!value)throw new CredentialResolutionError(options.provider,"command-empty");if(/[\0-\x1f\x7f]/.test(value))throw new CredentialResolutionError(options.provider,"command-invalid-output");return value}if(source&&isMalformedExplicitSource(source))throw new CredentialResolutionError(options.provider,"invalid-source");if(source?.startsWith("$")){let name=explicitEnvironmentName(source);if(!name)throw new CredentialResolutionError(options.provider,"invalid-source");let value=normalize((options.environment??process.env)[name]);if(!value)throw new CredentialResolutionError(options.provider,"environment-empty");return value}return normalize(options.environmentValue)??source}import{execFile as execFile3}from"node:child_process";import{pbkdf2Sync,createDecipheriv}from"node:crypto";import{copyFileSync,existsSync as existsSync6,mkdtempSync as mkdtempSync2,readdirSync as readdirSync2,readFileSync as readFileSync6,realpathSync as realpathSync4,rmSync as rmSync2}from"node:fs";import{tmpdir as tmpdir2,homedir as homedir3}from"node:os";import{isAbsolute as isAbsolute2,join as join6,sep as sep3}from"node:path";import{existsSync as existsSync5,readFileSync as readFileSync5}from"node:fs";var CONFIG_PATH2=getWebSearchConfigPath(),BROWSER_COOKIE_PRESETS=["helium","chrome","brave","arc","chromium","edge"],cachedConfig2=null;function normalizeChromeProfile(value){if(typeof value!="string")return;let normalized=value.trim();return normalized.length>0?normalized:void 0}function parseBrowserCookies(value){if(value===void 0)return;if(!value||typeof value!="object"||Array.isArray(value))throw new Error(`browserCookies in ${CONFIG_PATH2} must be an object`);let raw=value;if("profilePath"in raw)throw new Error(`browserCookies.profilePath is not supported; use a browser preset and profile directory name in ${CONFIG_PATH2}`);let browser;if(raw.browser!==void 0){if(typeof raw.browser!="string")throw new Error(`browserCookies.browser in ${CONFIG_PATH2} must be a supported browser name`);let normalized=raw.browser.trim().toLowerCase(),preset=BROWSER_COOKIE_PRESETS.find(candidate=>candidate===normalized);if(!preset)throw new Error(`Unsupported browserCookies.browser ${JSON.stringify(raw.browser)} in ${CONFIG_PATH2}`);browser=preset}if(raw.profile!==void 0&&typeof raw.profile!="string")throw new Error(`browserCookies.profile in ${CONFIG_PATH2} must be a profile directory name`);let profile=normalizeChromeProfile(raw.profile);if(profile&&(profile==="."||profile===".."||profile.includes("/")||profile.includes("\\")))throw new Error(`browserCookies.profile in ${CONFIG_PATH2} must be a profile directory name, not a path`);return{...browser?{browser}:{},...profile?{profile}:{}}}function loadConfig(){if(cachedConfig2)return cachedConfig2;if(!existsSync5(CONFIG_PATH2))return cachedConfig2={},cachedConfig2;let rawText=readFileSync5(CONFIG_PATH2,"utf-8"),raw;try{raw=JSON.parse(rawText)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH2}: ${message}`)}if(raw.chromeProfile!==void 0)throw new Error(`chromeProfile in ${CONFIG_PATH2} is no longer supported; use browserCookies.profile`);return cachedConfig2={browserCookies:parseBrowserCookies(raw.browserCookies),allowBrowserCookies:raw.allowBrowserCookies===!0},cachedConfig2}function getBrowserCookieSelectionFromConfig(){return{...loadConfig().browserCookies}}function isBrowserCookieAccessAllowed(){if(process.env.PI_ALLOW_BROWSER_COOKIES==="1"||process.env.FEYNMAN_ALLOW_BROWSER_COOKIES==="1")return!0;if(!existsSync5(CONFIG_PATH2))return!1;let rawText=readFileSync5(CONFIG_PATH2,"utf-8"),raw;try{raw=JSON.parse(rawText)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH2}: ${message}`)}return raw.allowBrowserCookies===!0}var GOOGLE_ORIGINS=["https://gemini.google.com","https://accounts.google.com","https://www.google.com"],ALL_COOKIE_NAMES=new Set(["__Secure-1PSID","__Secure-1PSIDTS","__Secure-1PSIDCC","__Secure-1PAPISID","NID","AEC","SOCS","__Secure-BUCKET","__Secure-ENID","SID","HSID","SSID","APISID","SAPISID","__Secure-3PSID","__Secure-3PSIDTS","__Secure-3PAPISID","SIDCC"]),MACOS_BROWSER_CONFIGS=[{id:"helium",name:"Helium",baseDir:"Library/Application Support/net.imput.helium",keychainService:"Helium Storage Key",keychainAccount:"Helium"},{id:"chrome",name:"Chrome",baseDir:"Library/Application Support/Google/Chrome",keychainService:"Chrome Safe Storage",keychainAccount:"Chrome"},{id:"brave",name:"Brave",baseDir:"Library/Application Support/BraveSoftware/Brave-Browser",keychainService:"Brave Safe Storage",keychainAccount:"Brave"},{id:"arc",name:"Arc",baseDir:"Library/Application Support/Arc/User Data",keychainService:"Arc Safe Storage",keychainAccount:"Arc"}],LINUX_BROWSER_CONFIGS=[{id:"chromium",name:"Chromium",baseDir:".config/chromium",secretToolApp:"chromium"},{id:"chrome",name:"Chrome",baseDir:".config/google-chrome",secretToolApp:"chrome"}],WINDOWS_BROWSER_CONFIGS=[{id:"chrome",name:"Chrome",baseDir:"Google/Chrome/User Data",usesLocalAppData:!0},{id:"edge",name:"Edge",baseDir:"Microsoft/Edge/User Data",usesLocalAppData:!0}],browserPasswordCache=new Map,lastCookieDiagnostic=null,lastCookieDiagnosticDetails=null,sqliteModule=null,sqliteImportAttempted=!1;function getLastGoogleCookieDiagnostic(){return lastCookieDiagnostic}function getLastBrowserCookieDiagnostic(){return lastCookieDiagnostic}function getLastGoogleCookieDiagnosticDetails(){return lastCookieDiagnosticDetails}async function getGoogleCookies(options){return getBrowserCookiesForHosts({hosts:GOOGLE_ORIGINS.map(origin=>new URL(origin).hostname),browser:options?.browser,profile:options?.profile,requiredCookies:options?.requiredCookies,cookieNames:ALL_COOKIE_NAMES,requiredLabel:"Gemini"})}async function getBrowserCookiesForHosts(options){if(lastCookieDiagnostic=null,lastCookieDiagnosticDetails=null,!isBrowserCookieAccessAllowed())return setCookieDiagnostic("Browser cookie access is disabled; enable allowBrowserCookies to use browser cookies."),null;let currentPlatform=process.platform,platformConfigs=currentPlatform==="darwin"?MACOS_BROWSER_CONFIGS:currentPlatform==="linux"?LINUX_BROWSER_CONFIGS:currentPlatform==="win32"?WINDOWS_BROWSER_CONFIGS:[],configs=options.browser?platformConfigs.filter(config=>config.id===options.browser):platformConfigs;if(options.browser&&configs.length===0)return setCookieDiagnostic(`Browser preset '${options.browser}' is not supported on this platform.`),null;if(configs.length===0)return setCookieDiagnostic("Chromium cookie extraction is unsupported on this platform."),null;let warningSet=new Set,rawProfile=typeof options.profile=="string"?options.profile.trim():"",requestedProfile=normalizeProfileName(options.profile);if(rawProfile&&!requestedProfile)return setCookieDiagnostic("Configured Chromium profile must be a profile directory name, not a path."),null;let requiredCookies=normalizeCookieNames(options.requiredCookies),cookieNames=normalizeCookieNames(options.cookieNames?[...options.cookieNames]:void 0),hosts=normalizeHosts(options.hosts);if(hosts.length===0)return setCookieDiagnostic("No valid cookie hosts were requested."),null;let attempts=[],home=currentPlatform==="win32"?process.env.USERPROFILE||homedir3():homedir3(),sawCookieDatabase=!1,sawRequiredCookies=!1,sawAnyHostCookie=!1,sawBackendFailure,sawUnsafeProfilePath=!1,sawWindowsAppBoundCookie=!1,sawDecryptionFailure=!1;for(let config of configs){let profiles=requestedProfile?[requestedProfile]:listBrowserProfiles(home,config);for(let profile of profiles){let profilePath=resolveProfilePath(home,config,profile);if(profilePath==="outside-root"){sawUnsafeProfilePath=!0,recordCookieAttempt(attempts,config,profile,"unsafe-profile");continue}if(!profilePath){recordCookieAttempt(attempts,config,profile,"missing-database");continue}let cookiesPath=cookieDatabasePath(profilePath,config);if(!cookiesPath){recordCookieAttempt(attempts,config,profile,"missing-database");continue}sawCookieDatabase=!0;let tempDir=mkdtempSync2(join6(tmpdir2(),"pi-chrome-cookies-"));try{let tempDb=join6(tempDir,"Cookies");if(copyFileSync(cookiesPath,tempDb),copySidecar(cookiesPath,tempDb,"-wal"),copySidecar(cookiesPath,tempDb,"-shm"),requiredCookies?.length){let preflight=await hasCookieNames(tempDb,hosts,requiredCookies);if(preflight.failure){sawBackendFailure=preflight.failure,recordCookieAttempt(attempts,config,profile,preflight.failure==="unavailable"?"sqlite-unavailable":"sqlite-query-failed");continue}if(!preflight.present){recordCookieAttempt(attempts,config,profile,"missing-required-cookies");continue}sawRequiredCookies=!0}let key2=currentPlatform==="win32"?await readWindowsEncryptionKey(config,home):await readBrowserPassword(config,currentPlatform).then(password=>password?pbkdf2Sync(password,"saltysalt",currentPlatform==="darwin"?1003:1,16,"sha1"):null);if(!key2){warningSet.add(currentPlatform==="win32"?`Could not read ${config.name} Windows cookie encryption key`:`Could not read ${config.name} cookie encryption password`),recordCookieAttempt(attempts,config,profile,"password-read-failed");continue}let metaVersion=await readMetaVersion(tempDb);if(metaVersion.failure&&(sawBackendFailure=metaVersion.failure,recordCookieAttempt(attempts,config,profile,metaVersion.failure==="unavailable"?"sqlite-unavailable":"sqlite-query-failed")),metaVersion.value===null)continue;let rowsResult=await queryCookieRows(tempDb,hosts,cookieNames??null,!!options.requestUrl);if(rowsResult.status==="failure"){sawBackendFailure=rowsResult.failure,recordCookieAttempt(attempts,config,profile,rowsResult.failure==="unavailable"?"sqlite-unavailable":"sqlite-query-failed");continue}let entries2=[],cookies={},requiredDecryptFailures=new Set;for(let row of rowsResult.rows){let name=typeof row.name=="string"?row.name:"";if(!name)continue;let value=typeof row.value=="string"&&row.value.length>0?row.value:null;if(!value&&typeof row.encrypted_value_hex=="string"&&/^[0-9a-f]*$/i.test(row.encrypted_value_hex)){let encrypted=Buffer.from(row.encrypted_value_hex,"hex");currentPlatform==="win32"&&encrypted.subarray(0,3).toString("utf8")==="v20"&&(sawWindowsAppBoundCookie=!0),value=currentPlatform==="win32"?decryptWindowsCookieValue(encrypted,key2,metaVersion.value>=24):decryptCookieValue(encrypted,key2,metaVersion.value>=24),!value&&requiredCookies?.includes(name)&&requiredDecryptFailures.add(name)}if(!value)continue;let path2=typeof row.path=="string"&&row.path.startsWith("/")?row.path:"/";options.requestUrl&&!pathMatches(options.requestUrl.pathname||"/",path2)||(entries2.push({name,value,path:path2}),cookies[name]||(cookies[name]=value))}if(entries2.length>0&&(sawAnyHostCookie=!0),requiredCookies?.length&&!requiredCookies.every(name=>!!cookies[name])){requiredCookies.some(name=>!cookies[name]&&requiredDecryptFailures.has(name))?(sawDecryptionFailure=!0,recordCookieAttempt(attempts,config,profile,"decryption-failed")):recordCookieAttempt(attempts,config,profile,"missing-required-cookies");continue}if(entries2.length===0){recordCookieAttempt(attempts,config,profile,requiredDecryptFailures.size>0?"decryption-failed":"no-host-cookies"),requiredDecryptFailures.size>0&&(sawDecryptionFailure=!0);continue}return{cookies,warnings:[...warningSet],...options.requestUrl?{cookieHeader:buildCookieHeader(entries2)}:{}}}finally{rmSync2(tempDir,{recursive:!0,force:!0})}}}return sawBackendFailure==="unavailable"?setCookieDiagnostic("SQLite backend unavailable: install sqlite3 or use a runtime with SQLite support.",attempts):sawBackendFailure==="query"?setCookieDiagnostic("SQLite query failed while reading the copied Chromium cookie database.",attempts):sawUnsafeProfilePath?setCookieDiagnostic("Configured Chromium profile must resolve inside the browser profile root.",attempts):sawCookieDatabase?requiredCookies?.length&&!sawRequiredCookies?setCookieDiagnostic(`No detected Chromium profile contains the required ${options.requiredLabel??"browser"} cookies.`,attempts):sawWindowsAppBoundCookie?setCookieDiagnostic("Windows Chromium v20 app-bound cookies are not supported.",attempts):warningSet.size>0?setCookieDiagnostic([...warningSet][0],attempts):setCookieDiagnostic(sawDecryptionFailure?`Required ${options.requiredLabel??"browser"} cookies could not be decrypted.`:sawAnyHostCookie?"Required Gemini cookies were not available or could not be decrypted.":options.requestUrl?"No detected Chromium profile contains cookies for the requested URL.":"No detected Chromium profile contains cookies for the requested host.",attempts):setCookieDiagnostic(requestedProfile?`Chromium profile '${requestedProfile}' does not contain a cookie database.`:"No detected Chromium profile contains a cookie database.",attempts),null}function setCookieDiagnostic(message,attempts=[]){lastCookieDiagnostic=message,lastCookieDiagnosticDetails={message,attempts}}function recordCookieAttempt(attempts,config,profile,status){attempts.push({browser:config.name,profile,status})}function normalizeProfileName(value){if(typeof value!="string")return;let normalized=value.trim();if(normalized&&!(isAbsolute2(normalized)||normalized==="."||normalized===".."||normalized.includes("/")||normalized.includes("\\")))return normalized}function resolveProfilePath(home,config,profile){let basePath=browserBasePath(home,config),profilePath=join6(basePath,profile);if(!cookieDatabasePath(profilePath,config))return null;try{let baseRealPath=realpathSync4(basePath),profileRealPath=realpathSync4(profilePath);return profileRealPath!==baseRealPath&&!profileRealPath.startsWith(`${baseRealPath}${sep3}`)?"outside-root":profileRealPath}catch{return null}}function cookieDatabasePath(profilePath,config){let networkCookies=join6(profilePath,"Network","Cookies");if(config.usesLocalAppData&&existsSync6(networkCookies))return networkCookies;let legacyCookies=join6(profilePath,"Cookies");return existsSync6(legacyCookies)?legacyCookies:null}function browserBasePath(home,config){return config.usesLocalAppData?join6(process.env.LOCALAPPDATA||join6(home,"AppData","Local"),config.baseDir):join6(home,config.baseDir)}function normalizeCookieNames(names){if(!names?.length)return;let normalized=names.filter(name=>typeof name=="string").map(name=>name.trim()).filter(Boolean);return normalized.length>0?[...new Set(normalized)]:void 0}function normalizeHosts(hosts){return[...new Set(hosts.map(host=>host.trim().toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"")).filter(Boolean))]}function listBrowserProfiles(home,config){let basePath=browserBasePath(home,config);if(!existsSync6(basePath))return["Default"];let profiles=new Set;try{for(let entry of readdirSync2(basePath,{withFileTypes:!0}))entry.isDirectory()&&cookieDatabasePath(join6(basePath,entry.name),config)&&profiles.add(entry.name)}catch{}return profiles.size===0?["Default"]:[...profiles].sort(compareProfileNames)}function compareProfileNames(a,b){let key2=name=>{if(name==="Default")return[0,0];let profile=/^Profile\s+(\d+)$/i.exec(name);if(profile)return[1,Number(profile[1])];let person=/^Person\s+(\d+)$/i.exec(name);return person?[2,Number(person[1])]:[3,Number.MAX_SAFE_INTEGER]},[ap,ai]=key2(a),[bp,bi]=key2(b);return ap-bp||ai-bi||a.localeCompare(b,void 0,{sensitivity:"base",numeric:!0})}function decryptCookieValue(encrypted,key2,stripHash){let buf=Buffer.from(encrypted);if(buf.length<3||!/^v\d\d$/.test(buf.subarray(0,3).toString("utf8")))return null;let ciphertext=buf.subarray(3);if(!ciphertext.length)return"";try{let decipher=createDecipheriv("aes-128-cbc",key2,Buffer.alloc(16,32));decipher.setAutoPadding(!1);let unpadded=removePkcs7Padding(Buffer.concat([decipher.update(ciphertext),decipher.final()])),bytes=stripHash&&unpadded.length>=32?unpadded.subarray(32):unpadded,decoded=new TextDecoder("utf-8",{fatal:!0}).decode(bytes),i=0;for(;i<decoded.length&&decoded.charCodeAt(i)<32;)i++;return decoded.slice(i)}catch{return null}}function decryptWindowsCookieValue(encrypted,key2,stripHash){let buf=Buffer.from(encrypted);if(buf.subarray(0,3).toString("utf8")!=="v10"||buf.length<31)return null;try{let nonce=buf.subarray(3,15),ciphertext=buf.subarray(15,-16),decipher=createDecipheriv("aes-256-gcm",key2,nonce);decipher.setAuthTag(buf.subarray(-16));let plaintext=Buffer.concat([decipher.update(ciphertext),decipher.final()]);return new TextDecoder("utf-8",{fatal:!0}).decode(stripHash&&plaintext.length>=32?plaintext.subarray(32):plaintext)}catch{return null}}function removePkcs7Padding(buf){if(!buf.length)return buf;let padding=buf[buf.length-1];return!padding||padding>16?buf:buf.subarray(0,buf.length-padding)}function readBrowserPassword(config,currentPlatform){let cacheKey2=`${currentPlatform}:${config.name}`,cached=browserPasswordCache.get(cacheKey2);if(cached)return cached;let passwordPromise=(currentPlatform==="darwin"?config.keychainAccount&&config.keychainService?readKeychainPassword(config.keychainAccount,config.keychainService).then(password=>({password,cacheable:!!password})):Promise.resolve({password:null,cacheable:!1}):currentPlatform==="linux"?readLinuxPassword(config.secretToolApp):Promise.resolve({password:null,cacheable:!1})).then(({password,cacheable})=>(cacheable||browserPasswordCache.delete(cacheKey2),password),error=>{throw browserPasswordCache.delete(cacheKey2),error});return browserPasswordCache.set(cacheKey2,passwordPromise),passwordPromise}async function readWindowsEncryptionKey(config,home){try{let encodedKey=JSON.parse(readFileSync6(join6(browserBasePath(home,config),"Local State"),"utf8")).os_crypt?.encrypted_key;if(typeof encodedKey!="string")return null;let protectedKey=Buffer.from(encodedKey,"base64");if(protectedKey.subarray(0,5).toString("utf8")!=="DPAPI")return null;let decrypted=await unprotectWindowsData(protectedKey.subarray(5));return decrypted?.length===32?decrypted:null}catch{return null}}function unprotectWindowsData(protectedData){return new Promise(resolve2=>{let encoded=Buffer.from("Add-Type -AssemblyName System.Security;$data=[Convert]::FromBase64String($env:PIWA_PROTECTED);$clear=[System.Security.Cryptography.ProtectedData]::Unprotect($data,$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser);[Console]::Write([Convert]::ToBase64String($clear))","utf16le").toString("base64");execFile3("powershell.exe",["-NoProfile","-NonInteractive","-EncodedCommand",encoded],{timeout:5e3,maxBuffer:1024*1024,env:{...process.env,PIWA_PROTECTED:protectedData.toString("base64")}},(err,stdout)=>{if(err){resolve2(null);return}try{resolve2(Buffer.from(stdout.trim(),"base64"))}catch{resolve2(null)}})})}function readKeychainPassword(account,service){return new Promise(resolve2=>{execFile3("security",["find-generic-password","-w","-a",account,"-s",service],{timeout:5e3},(err,stdout)=>{if(err){resolve2(null);return}resolve2(stdout.trim()||null)})})}function readLinuxPassword(secretToolApp){return secretToolApp?new Promise(resolve2=>{execFile3("secret-tool",["lookup","application",secretToolApp],{timeout:5e3},(err,stdout)=>{if(err){resolve2({password:"peanuts",cacheable:!1});return}let password=stdout.trim();resolve2(password?{password,cacheable:!0}:{password:"peanuts",cacheable:!1})})}):Promise.resolve({password:"peanuts",cacheable:!0})}async function importSqlite(){if(process.env.PI_WEB_ACCESS_DISABLE_NODE_SQLITE==="1")return null;if(sqliteImportAttempted)return sqliteModule;sqliteImportAttempted=!0;let orig=process.emitWarning.bind(process);process.emitWarning=((warning,...args)=>{if(!(typeof warning=="string"?warning:warning?.message??"").includes("SQLite is an experimental feature"))return orig(warning,...args)});try{sqliteModule=await import("node:sqlite")}catch{sqliteModule=null}finally{process.emitWarning=orig}return sqliteModule}async function runSqliteQuery(dbPath,sql){let sqlite=await importSqlite(),queryFailed=!1;if(sqlite)try{let db=new sqlite.DatabaseSync(dbPath,{readOnly:!0});try{return{status:"success",rows:db.prepare(sql).all()}}finally{db.close()}}catch{queryFailed=!0}let cli=await runSqliteCli(dbPath,sql);if(cli.status==="success")return cli;cli.failure==="query"&&(queryFailed=!0);let python=await runPythonSqlite(dbPath,sql);return python.status==="success"?python:(python.failure==="query"&&(queryFailed=!0),{status:"failure",failure:queryFailed?"query":"unavailable"})}function runSqliteCli(dbPath,sql){return new Promise(resolve2=>{execFile3("sqlite3",["-readonly","-json",dbPath,sql],{timeout:5e3,maxBuffer:1024*1024},(err,stdout)=>{if(err){resolve2({status:"failure",failure:err.code==="ENOENT"?"unavailable":"query"});return}try{let parsed=JSON.parse(stdout||"[]");resolve2(Array.isArray(parsed)?{status:"success",rows:parsed}:{status:"failure",failure:"query"})}catch{resolve2({status:"failure",failure:"query"})}})})}function runPythonSqlite(dbPath,sql){let script=`import json,sqlite3,sys
26
+ try:
27
+ c=sqlite3.connect('file:'+sys.argv[1]+'?mode=ro',uri=True)
28
+ c.row_factory=sqlite3.Row
29
+ print(json.dumps([dict(r) for r in c.execute(sys.argv[2]).fetchall()]))
30
+ except Exception:
31
+ sys.exit(1)`;return new Promise(resolve2=>{execFile3("python3",["-c",script,dbPath,sql],{timeout:5e3,maxBuffer:1024*1024},(err,stdout)=>{if(err){resolve2({status:"failure",failure:err.code==="ENOENT"?"unavailable":"query"});return}try{let parsed=JSON.parse(stdout||"[]");resolve2(Array.isArray(parsed)?{status:"success",rows:parsed}:{status:"failure",failure:"query"})}catch{resolve2({status:"failure",failure:"query"})}})})}async function readMetaVersion(dbPath){let result=await runSqliteQuery(dbPath,"SELECT value FROM meta WHERE key = 'version'");if(result.status==="failure")return result.failure==="unavailable"?{value:null,failure:result.failure}:{value:0};let value=result.rows[0]?.value;return typeof value=="number"?{value:Math.floor(value)}:typeof value=="string"?{value:parseInt(value,10)||0}:{value:0}}async function hasCookieNames(dbPath,hosts,names){let result=await runSqliteQuery(dbPath,`SELECT DISTINCT name FROM cookies WHERE ${buildCookieWhere(hosts,names)}`);if(result.status==="failure")return{present:!1,failure:result.failure};let present=new Set(result.rows.map(row=>typeof row.name=="string"?row.name:""));return{present:names.every(name=>present.has(name))}}async function queryCookieRows(dbPath,hosts,names,filterExpired){let columns=await readCookieColumns(dbPath);if(columns.status==="failure")return columns;let pathExpr=columns.columns.has("path")?"path":"'/' AS path",expiresExpr=columns.columns.has("expires_utc")?chromeExpiryMillisExpr():"0",expiryFilter=filterExpired&&columns.columns.has("expires_utc")?` AND (${expiresExpr} = 0 OR ${expiresExpr} > ${chromeExpiryNowMillis()})`:"",partitionFilter=filterExpired?unpartitionedCookieFilter(columns.columns):"";return runSqliteQuery(dbPath,`SELECT name, value, host_key, ${pathExpr}, ${expiresExpr} AS expires_utc, hex(encrypted_value) AS encrypted_value_hex FROM cookies WHERE ${buildCookieWhere(hosts,names??void 0)}${expiryFilter}${partitionFilter} ORDER BY length(path) DESC, ${expiresExpr} ASC`)}async function readCookieColumns(dbPath){let result=await runSqliteQuery(dbPath,"PRAGMA table_info(cookies)");return result.status==="failure"?result:{status:"success",columns:new Set(result.rows.map(row=>typeof row.name=="string"?row.name:""))}}function chromeExpiryMillisExpr(){return"CASE WHEN expires_utc = 0 THEN 0 ELSE CAST(expires_utc / 1000 AS INTEGER) + CASE WHEN expires_utc % 1000 = 0 THEN 0 ELSE 1 END END"}function chromeExpiryNowMillis(){return Date.now()+116444736e5}function unpartitionedCookieFilter(columns){let clauses=[];return columns.has("top_frame_site_key")&&clauses.push("(top_frame_site_key IS NULL OR top_frame_site_key = '')"),columns.has("partition_key")&&clauses.push("(partition_key IS NULL OR partition_key = '')"),columns.has("is_partitioned")&&clauses.push("(is_partitioned IS NULL OR is_partitioned = 0)"),clauses.length>0?` AND ${clauses.join(" AND ")}`:""}function buildCookieHeader(entries2){return entries2.sort((a,b)=>b.path.length-a.path.length).map(({name,value})=>`${name}=${value}`).join("; ")}function pathMatches(requestPath,cookiePath){return requestPath===cookiePath?!0:requestPath.startsWith(cookiePath)?cookiePath.endsWith("/")?!0:requestPath[cookiePath.length]==="/":!1}function buildCookieWhere(hosts,cookieNames){let hostClauses=[];for(let host of hosts){let escapedHost=escapeSqlString(host);hostClauses.push(`host_key = '${escapedHost}'`);for(let candidate of domainCookieHosts(host))hostClauses.push(`host_key = '.${escapeSqlString(candidate)}'`)}let where=`(${[...new Set(hostClauses)].join(" OR ")})`,names=cookieNames?[...cookieNames].filter(Boolean):[];return names.length&&(where+=` AND name IN (${names.map(name=>`'${escapeSqlString(name)}'`).join(", ")})`),where}function escapeSqlString(value){return value.replaceAll("'","''")}function domainCookieHosts(host){let parts=host.split(".").filter(Boolean);if(parts.length<=1)return[];let candidates=new Set;for(let i=0;i<=parts.length-2;i++)candidates.add(parts.slice(i).join("."));return[...candidates]}function copySidecar(srcDb,targetDb,suffix){let sidecar=`${srcDb}${suffix}`;if(existsSync6(sidecar))try{copyFileSync(sidecar,`${targetDb}${suffix}`)}catch{}}import{existsSync as existsSync7,readFileSync as readFileSync7}from"node:fs";var PARALLEL_SEARCH_URL="https://api.parallel.ai/v1/search",PARALLEL_EXTRACT_URL="https://api.parallel.ai/v1/extract",CONFIG_PATH3=getWebSearchConfigPath(),MIN_PARALLEL_API_KEY_LENGTH=8,MIN_USEFUL_CONTENT=500,SEARCH_TIMEOUT_MS=6e4,PLACEHOLDER_API_KEY_DENYLIST=new Set(["replace_with_your_parallel_api_key","parallel_api_key","your-key","your-key-here","your-api-key-here","dummy","placeholder","changeme","insert-your-key","insert-your-key-here","api-key","xxx"]),cachedConfig3=null;function loadConfig2(){if(cachedConfig3)return cachedConfig3;if(!existsSync7(CONFIG_PATH3))return cachedConfig3={},cachedConfig3;let raw=readFileSync7(CONFIG_PATH3,"utf-8");try{return cachedConfig3=JSON.parse(raw),cachedConfig3}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH3}: ${message}`)}}function normalizeApiKey(value){if(typeof value!="string")return null;let normalized=value.trim();return normalized.length>0?normalized:null}function isPlaceholderApiKey(key2){let normalized=key2.trim();return normalized.length<MIN_PARALLEL_API_KEY_LENGTH||PLACEHOLDER_API_KEY_DENYLIST.has(normalized.toLowerCase())}async function resolveParallelApiKey(signal){let configKey=normalizeApiKey(loadConfig2().parallelApiKey);if(configKey?.startsWith("$")||configKey?.startsWith("!")){let resolved=await resolveCredential({provider:"Parallel",configuredValue:configKey,environmentValue:process.env.PARALLEL_API_KEY,signal});return resolved&&!isPlaceholderApiKey(resolved)?resolved:null}let envKey=normalizeApiKey(process.env.PARALLEL_API_KEY);return envKey&&!isPlaceholderApiKey(envKey)?envKey:configKey&&!isPlaceholderApiKey(configKey)?configKey:null}function hasConfiguredApiKey(){let configKey=normalizeApiKey(loadConfig2().parallelApiKey);if(configKey?.startsWith("$")||configKey?.startsWith("!"))return hasCredentialSource({provider:"Parallel",configuredValue:configKey,environmentValue:process.env.PARALLEL_API_KEY});let envKey=normalizeApiKey(process.env.PARALLEL_API_KEY);return envKey!==null&&!isPlaceholderApiKey(envKey)||configKey!==null&&!isPlaceholderApiKey(configKey)}async function getApiKey(signal){let key2=await resolveParallelApiKey(signal);if(!key2)throw new Error(`Parallel API key not found. Either:
32
+ 1. Create ${CONFIG_PATH3} with { "parallelApiKey": "your-key" }
33
+ 2. Set PARALLEL_API_KEY environment variable
34
+ Get a key at https://platform.parallel.ai`);return key2}function hasParallelApiKey(){return hasConfiguredApiKey()}function isParallelAvailable(){return hasParallelApiKey()}function requestSignal(signal){let timeout=AbortSignal.timeout(SEARCH_TIMEOUT_MS);return signal?AbortSignal.any([signal,timeout]):timeout}function errorMessage(err){return err instanceof Error?err.message:String(err)}function activityContext(url,body){if(typeof body.objective=="string"&&body.objective.trim().length>0)return{type:"api",query:body.objective};let searchQueries=body.search_queries;if(Array.isArray(searchQueries)&&typeof searchQueries[0]=="string")return{type:"api",query:searchQueries[0]};let urls=body.urls;return Array.isArray(urls)&&typeof urls[0]=="string"?{type:"fetch",url:urls[0]}:url.includes("/search")?{type:"api",query:"Parallel search"}:{type:"fetch",url}}function recencyToAfterDate(filter2){let now=new Date,days={day:1,week:7,month:30,year:365}[filter2]??0;return new Date(now.getTime()-days*864e5).toISOString().slice(0,10)}function normalizeDomain(value){let input=value.trim().toLowerCase();if(!input||(input.startsWith("-")&&(input=input.slice(1).trim()),!input))return null;try{input=(input.includes("://")?new URL(input):new URL(`https://${input}`)).hostname}catch{input=input.split("/")[0]?.split(":")[0]??""}return input=input.replace(/^\.+|\.+$/g,""),/^[a-z0-9][a-z0-9.-]*\.[a-z]{2,}$/i.test(input)?input:null}function mapDomainFilter(domainFilter){if(!domainFilter?.length)return{};let include_domains=[],exclude_domains=[];for(let raw of domainFilter){let domain=normalizeDomain(raw);if(!domain)continue;let target=raw.trim().startsWith("-")?exclude_domains:include_domains;target.includes(domain)||target.push(domain)}return{...include_domains.length?{include_domains}:{},...exclude_domains.length?{exclude_domains}:{}}}function buildSearchRequestBody(query2,options={}){let numResults=Math.max(1,Math.min(Math.floor(options.numResults??5),20)),sourcePolicy={...mapDomainFilter(options.domainFilter),...options.recencyFilter?{after_date:recencyToAfterDate(options.recencyFilter)}:{}};return{objective:query2,search_queries:[query2],advanced_settings:{max_results:numResults,...Object.keys(sourcePolicy).length>0?{source_policy:sourcePolicy}:{}}}}function normalizeExcerpts(value){return Array.isArray(value)?value.filter(item=>typeof item=="string"&&item.trim().length>0):[]}function mapSearchResults(results){if(!Array.isArray(results))return[];let mapped=[];for(let i=0;i<results.length;i++){let item=results[i];if(!item?.url)continue;let excerpts2=normalizeExcerpts(item.excerpts);mapped.push({title:item.title||`Source ${i+1}`,url:item.url,snippet:excerpts2.length>0?excerpts2[0].replace(/\s+/g," ").trim().slice(0,200):""})}return mapped}function buildAnswerFromExcerpts(results){if(!Array.isArray(results))return"";let parts=[];for(let i=0;i<results.length;i++){let item=results[i];if(!item?.url)continue;let excerpts2=normalizeExcerpts(item.excerpts);excerpts2.length!==0&&parts.push(`${excerpts2.join(" ")}
35
+ Source: ${item.title||`Source ${i+1}`} (${item.url})`)}return parts.join(`
36
+
37
+ `)}function mapInlineContent(results){return Array.isArray(results)?results.flatMap(result=>{if(!result?.url)return[];let excerpts2=normalizeExcerpts(result.excerpts);return excerpts2.length===0?[]:[{url:result.url,title:result.title||"",content:excerpts2.join(`
38
+
39
+ `),error:null}]}):[]}function resolveExtractContent(result){let fullContent=typeof result.full_content=="string"?result.full_content.trim():"";return fullContent.length>0?fullContent:normalizeExcerpts(result.excerpts).join(`
40
+
41
+ `)}function mapExtractResult(result){if(!result?.url)return null;let content=resolveExtractContent(result);return content.length<MIN_USEFUL_CONTENT?null:{url:result.url,title:typeof result.title=="string"?result.title.trim():"",content,error:null}}function buildExtractRequestBody(url,options={},fullContent=!1){let body={urls:[url]},prompt=options.prompt?.trim();return prompt&&(body.objective=prompt),fullContent&&(body.advanced_settings={full_content:!0}),body}function findExtractResult(results,url){if(Array.isArray(results))return results.find(item=>item?.url===url)??results[0]}function hasExtractUrlError(errors,url){return Array.isArray(errors)?errors.some(entry=>typeof entry=="string"?entry===url:typeof entry=="object"&&entry!==null&&entry.url===url):!1}async function fetchAndMapExtractResult(url,body,signal){let data=await parallelFetch(PARALLEL_EXTRACT_URL,body,signal);if(hasExtractUrlError(data.errors,url))return{mapped:null,result:void 0};let result=findExtractResult(data.results,url);return{mapped:mapExtractResult(result),result}}async function searchWithParallel(query2,options={}){let results=(await parallelFetch(PARALLEL_SEARCH_URL,buildSearchRequestBody(query2,options),options.signal)).results,response={answer:buildAnswerFromExcerpts(results),results:mapSearchResults(results)};if(options.includeContent){let inlineContent=mapInlineContent(results);inlineContent.length>0&&(response.inlineContent=inlineContent)}return response}async function extractWithParallel(url,signal,options={}){let initial=await fetchAndMapExtractResult(url,buildExtractRequestBody(url,options),signal);return initial.mapped?initial.mapped:!initial.result||resolveExtractContent(initial.result).length>=MIN_USEFUL_CONTENT?null:(await fetchAndMapExtractResult(url,buildExtractRequestBody(url,options,!0),signal)).mapped}async function parallelFetch(url,body,signal){let apiKey=await getApiKey(signal),activityId=activityMonitor.logStart(activityContext(url,body)),response;try{response=await fetch(url,{method:"POST",headers:{"x-api-key":apiKey,"Content-Type":"application/json"},body:JSON.stringify(body),signal:requestSignal(signal)})}catch(err){let message=errorMessage(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}if(!response.ok){activityMonitor.logComplete(activityId,response.status);let errorText=redactCredential(await response.text(),apiKey);throw new Error(`Parallel API error ${response.status}: ${errorText.slice(0,300)}`)}try{let data=await response.json();return activityMonitor.logComplete(activityId,response.status),data}catch(err){throw activityMonitor.logComplete(activityId,response.status),new Error(`Parallel API returned invalid JSON: ${errorMessage(err)}`)}}var PARALLEL_MCP_URL="https://search.parallel.ai/mcp",CONFIG_PATH4=getWebSearchConfigPath(),REQUEST_TIMEOUT_MS=6e4;function requestSignal2(signal){let timeout=AbortSignal.timeout(REQUEST_TIMEOUT_MS);return signal?AbortSignal.any([signal,timeout]):timeout}function errorMessage2(err){return err instanceof Error?err.message:String(err)}function normalizeDomain2(value){let input=value.trim().toLowerCase();if(input.startsWith("-")&&(input=input.slice(1).trim()),!input)return null;try{input=(input.includes("://")?new URL(input):new URL(`https://${input}`)).hostname}catch{input=input.split("/")[0]?.split(":")[0]??""}return input=input.replace(/^\.+|\.+$/g,""),/^[a-z0-9][a-z0-9.-]*\.[a-z]{2,}$/i.test(input)?input:null}function domainMatches(hostname2,domain){return hostname2===domain||hostname2.endsWith(`.${domain}`)}function filterResults(results,domainFilter){if(!domainFilter?.length)return results;let included=domainFilter.filter(value=>!value.trim().startsWith("-")).map(normalizeDomain2).filter(value=>value!==null),excluded=domainFilter.filter(value=>value.trim().startsWith("-")).map(normalizeDomain2).filter(value=>value!==null);return results.filter(result=>{let hostname2;try{hostname2=new URL(result.url).hostname.toLowerCase()}catch{return!1}return(included.length===0||included.some(domain=>domainMatches(hostname2,domain)))&&!excluded.some(domain=>domainMatches(hostname2,domain))})}function buildSearchQuery(query2,options){let parts=[query2];for(let raw of options.domainFilter??[]){let domain=normalizeDomain2(raw);domain&&parts.push(raw.trim().startsWith("-")?`-site:${domain}`:`site:${domain}`)}if(options.recencyFilter){let labels={day:"past 24 hours",week:"past week",month:"past month",year:"past year"};parts.push(labels[options.recencyFilter])}return parts.join(" ")}async function callParallelMcp(toolName,args,signal){let apiKey=await resolveParallelApiKey(signal),headers={"Content-Type":"application/json",Accept:"application/json, text/event-stream"};apiKey&&(headers.Authorization=`Bearer ${apiKey}`);let response;try{response=await fetch(PARALLEL_MCP_URL,{method:"POST",headers,body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/call",params:{name:toolName,arguments:args}}),signal:requestSignal2(signal)})}catch(err){let message=apiKey?redactCredential(errorMessage2(err),apiKey):errorMessage2(err);throw message===errorMessage2(err)?err:new Error(message)}let body=await response.text(),safeBody=apiKey?redactCredential(body,apiKey):body;if(!response.ok)throw response.status===429?new Error(`Parallel MCP rate limit reached (429). Add parallelApiKey to ${CONFIG_PATH4} or set PARALLEL_API_KEY for higher limits: ${safeBody.slice(0,200)}`):new Error(`Parallel MCP error ${response.status}: ${safeBody.slice(0,300)}`);let parsed=null;for(let candidateText of[...body.split(`
42
+ `).filter(line=>line.startsWith("data:")).map(line=>line.slice(5).trim()),body])if(candidateText)try{let candidate=JSON.parse(candidateText);if(candidate.result||candidate.error){parsed=candidate;break}}catch{}if(!parsed)throw new Error("Parallel MCP returned invalid JSON-RPC content");if(parsed.error){let code=typeof parsed.error.code=="number"?` ${parsed.error.code}`:"",message=apiKey?redactCredential(parsed.error.message||"Unknown error",apiKey):parsed.error.message||"Unknown error";throw new Error(`Parallel MCP error${code}: ${message}`)}if(parsed.result?.isError){let text2=parsed.result.content?.find(item=>item.type==="text"&&typeof item.text=="string")?.text?.trim()||"Parallel MCP returned an error";throw new Error(apiKey?redactCredential(text2,apiKey):text2)}if(parsed.result?.structuredContent&&typeof parsed.result.structuredContent=="object")return parsed.result.structuredContent;let text=parsed.result?.content?.find(item=>item.type==="text"&&typeof item.text=="string"&&item.text.trim())?.text;if(!text)throw new Error("Parallel MCP returned empty content");try{return JSON.parse(text)}catch{return text}}function parseTextResults(text){return text.split(/(?=^Title: )/m).flatMap(block=>{let url=block.match(/^URL: (.+)/m)?.[1]?.trim();if(!url)return[];let title=block.match(/^Title: (.+)/m)?.[1]?.trim()??"",textStart=block.indexOf(`
43
+ Text: `),excerpt=textStart>=0?block.slice(textStart+7).replace(/\n---\s*$/,"").trim():"";return[{url,title,excerpts:excerpt?[excerpt]:[]}]})}function getResults(payload){if(typeof payload=="string")return parseTextResults(payload);if(!payload||typeof payload!="object")return[];let results=payload.results;return Array.isArray(results)?results.filter(item=>!!item&&typeof item=="object"&&typeof item.url=="string"):[]}function excerpts(result){return Array.isArray(result.excerpts)?result.excerpts.filter(item=>typeof item=="string"&&item.trim()):[]}function isParallelMcpAvailable(){return!0}async function searchWithParallelMcp(query2,options={}){let activityId=activityMonitor.logStart({type:"api",query:query2});try{let searchQuery=buildSearchQuery(query2,options),payload=await callParallelMcp("web_search",{objective:query2,search_queries:[searchQuery]},options.signal),maxResults=Math.max(1,Math.min(Math.floor(options.numResults??5),20)),results=filterResults(getResults(payload),options.domainFilter).slice(0,maxResults);activityMonitor.logComplete(activityId,200);let response={answer:results.flatMap((result,index)=>{let content=excerpts(result).join(" ").trim();return content?[`${content}
44
+ Source: ${result.title||`Source ${index+1}`} (${result.url})`]:[]}).join(`
45
+
46
+ `),results:results.map((result,index)=>({title:result.title||`Source ${index+1}`,url:result.url,snippet:excerpts(result)[0]?.replace(/\s+/g," ").trim().slice(0,200)??""}))};if(options.includeContent){let inlineContent=results.flatMap(result=>{let content=excerpts(result).join(`
47
+
48
+ `);return content?[{url:result.url,title:result.title||"",content,error:null}]:[]});inlineContent.length&&(response.inlineContent=inlineContent)}return response}catch(err){let message=errorMessage2(err);throw message.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,message),err}}async function extractWithParallelMcp(url,signal,options={}){let activityId=activityMonitor.logStart({type:"fetch",url});try{let objective=options.prompt?.trim(),payload=await callParallelMcp("web_fetch",{urls:[url],...objective?{objective:objective.slice(0,200)}:{},full_content:!0},signal),result=getResults(payload).find(item=>item.url===url)??getResults(payload)[0];if(!result)return activityMonitor.logComplete(activityId,200),null;let content=(typeof result.full_content=="string"?result.full_content.trim():"")||excerpts(result).join(`
49
+
50
+ `);return activityMonitor.logComplete(activityId,200),content?{url:result.url,title:result.title||"",content,error:null}:null}catch(err){let message=errorMessage2(err);throw message.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,message),err}}import{existsSync as existsSync8,readFileSync as readFileSync8}from"node:fs";var TINYFISH_SEARCH_URL="https://api.search.tinyfish.ai",TINYFISH_FETCH_URL="https://api.fetch.tinyfish.ai",CONFIG_PATH5=getWebSearchConfigPath(),SEARCH_TIMEOUT_MS2=6e4,FETCH_TIMEOUT_MS=15e4,MAX_FETCH_URLS=10,MAX_FETCH_PER_URL_TIMEOUT_MS=11e4,cachedConfig4=null;function loadConfig3(){if(cachedConfig4)return cachedConfig4;if(!existsSync8(CONFIG_PATH5))return cachedConfig4={},cachedConfig4;let raw=readFileSync8(CONFIG_PATH5,"utf-8");try{return cachedConfig4=JSON.parse(raw),cachedConfig4}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH5}: ${message}`)}}async function getApiKey2(signal){let key2=await resolveCredential({provider:"TinyFish",configuredValue:loadConfig3().tinyfishApiKey,environmentValue:process.env.TINYFISH_API_KEY,signal});if(!key2)throw new Error(`TinyFish API key not found. Either:
51
+ 1. Create ${CONFIG_PATH5} with { "tinyfishApiKey": "your-key" }
52
+ 2. Set TINYFISH_API_KEY environment variable
53
+ Get a key at https://agent.tinyfish.ai/api-keys`);return key2}function isTinyFishAvailable(){return hasCredentialSource({provider:"TinyFish",configuredValue:loadConfig3().tinyfishApiKey,environmentValue:process.env.TINYFISH_API_KEY})}function errorMessage3(err){return err instanceof Error?err.message:String(err)}function requestSignal3(signal,timeoutMs){let timeout=AbortSignal.timeout(timeoutMs);return signal?AbortSignal.any([signal,timeout]):timeout}function normalizeDomain3(value){let input=value.trim().toLowerCase();if(!input||(input.startsWith("-")&&(input=input.slice(1).trim()),!input))return null;try{input=(input.includes("://")?new URL(input):new URL(`https://${input}`)).hostname}catch{input=input.split("/")[0]?.split(":")[0]??""}return input=input.replace(/^\.+|\.+$/g,""),/^[a-z0-9][a-z0-9.-]*\.[a-z]{2,}$/i.test(input)?input:null}function mapDomainFilter2(domainFilter){let includeDomains=[],excludeDomains=[];for(let raw of domainFilter??[]){let domain=normalizeDomain3(raw);if(!domain)continue;let target=raw.trim().startsWith("-")?excludeDomains:includeDomains;target.includes(domain)||target.push(domain)}return{includeDomains,excludeDomains}}function recencyMinutes(filter2){return filter2?{day:1440,week:10080,month:43200,year:525600}[filter2]:void 0}function normalizeNumResults(value){return typeof value!="number"||!Number.isFinite(value)?5:Math.max(1,Math.min(Math.floor(value),20))}function buildSearchUrl(query2,options,page){let params=new URLSearchParams({query:query2}),{includeDomains,excludeDomains}=mapDomainFilter2(options.domainFilter);includeDomains.length>0&&params.set("include_domains",includeDomains.join(",")),excludeDomains.length>0&&params.set("exclude_domains",excludeDomains.join(","));let recency=recencyMinutes(options.recencyFilter);return recency!==void 0&&params.set("recency_minutes",String(recency)),page>0&&params.set("page",String(page)),`${TINYFISH_SEARCH_URL}?${params.toString()}`}async function tinyFishJsonRequest(label,url,apiKey,init,timeoutMs,signal){let response;try{response=await fetch(url,{...init,headers:{"X-API-Key":apiKey,...init.body?{"Content-Type":"application/json"}:{},...init.headers},signal:requestSignal3(signal,timeoutMs)})}catch(err){let message=errorMessage3(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}let raw=await response.text();if(!response.ok)throw new Error(`TinyFish ${label} API error ${response.status}: ${redactCredential(raw,apiKey).slice(0,300)}`);try{return JSON.parse(raw)}catch(err){throw new Error(`TinyFish ${label} API returned invalid JSON: ${errorMessage3(err)}`)}}function mapSearchResults2(results){return Array.isArray(results)?results.flatMap(item=>{if(!item||typeof item.url!="string"||item.url.trim().length===0)return[];let url=item.url.trim();return[{title:typeof item.title=="string"&&item.title.trim()?item.title.trim():url,url,snippet:typeof item.snippet=="string"?item.snippet.replace(/\s+/g," ").trim():""}]}):[]}function deduplicateResults(results,limit){let seen=new Set,unique=[];for(let result of results)if(!seen.has(result.url)&&(seen.add(result.url),unique.push(result),unique.length>=limit))break;return unique}function buildAnswer(results){return results.map(result=>result.snippet?`${result.snippet}
54
+ Source: ${result.title} (${result.url})`:`Source: ${result.title} (${result.url})`).join(`
55
+
56
+ `)}function fetchPerUrlTimeout(value){return typeof value!="number"||!Number.isFinite(value)?MAX_FETCH_PER_URL_TIMEOUT_MS:Math.max(1,Math.min(Math.floor(value),MAX_FETCH_PER_URL_TIMEOUT_MS))}function fetchBody(urls,options={}){let body={urls,format:"markdown",per_url_timeout_ms:fetchPerUrlTimeout(options.timeoutMs)},purpose=options.prompt?.trim();return purpose&&(body.purpose=purpose.slice(0,2e3)),body}function findFetchError(errors,url){if(Array.isArray(errors))return errors.find(item=>item?.url===url)??errors[0]}function fetchResultContent(result){return typeof result.text=="string"?result.text.trim():result.text&&typeof result.text=="object"?JSON.stringify(result.text,null,2):""}function mapFetchResult(result,requestedUrl){if(!result)return null;let content=fetchResultContent(result);return content?{url:requestedUrl,title:typeof result.title=="string"?result.title.trim():"",content,error:null}:null}async function fetchBatch(urls,apiKey,signal,options={}){return tinyFishJsonRequest("Fetch",TINYFISH_FETCH_URL,apiKey,{method:"POST",body:JSON.stringify(fetchBody(urls,options))},FETCH_TIMEOUT_MS,signal)}async function fetchInlineContent(urls,apiKey,signal){let content=[];for(let offset=0;offset<urls.length;offset+=MAX_FETCH_URLS){let batch=urls.slice(offset,offset+MAX_FETCH_URLS),data=await fetchBatch(batch,apiKey,signal);if(!Array.isArray(data.results)||!Array.isArray(data.errors))throw new Error("TinyFish Fetch API returned an unexpected response shape");for(let url of batch){let result=Array.isArray(data.results)?data.results.find(item=>item?.url===url||item?.final_url===url):void 0,mapped=mapFetchResult(result,url);mapped&&content.push(mapped)}}return content}async function searchWithTinyFish(query2,options={}){let apiKey=await getApiKey2(options.signal),numResults=normalizeNumResults(options.numResults),activityId=activityMonitor.logStart({type:"api",query:query2});try{let combined=[],pages=numResults>10?2:1;for(let page=0;page<pages;page++){let data=await tinyFishJsonRequest("Search",buildSearchUrl(query2,options,page),apiKey,{method:"GET"},SEARCH_TIMEOUT_MS2,options.signal);if(!Array.isArray(data.results))throw new Error("TinyFish Search API returned an unexpected response shape");if(combined.push(...mapSearchResults2(data.results)),data.results.length<10)break}let results=deduplicateResults(combined,numResults),response={answer:buildAnswer(results),results};if(options.includeContent&&results.length>0){let inlineContent=await fetchInlineContent(results.map(result=>result.url),apiKey,options.signal);inlineContent.length>0&&(response.inlineContent=inlineContent)}return activityMonitor.logComplete(activityId,200),response}catch(err){let message=errorMessage3(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}}async function extractWithTinyFish(url,signal,options={}){let apiKey=await getApiKey2(signal),activityId=activityMonitor.logStart({type:"fetch",url});try{let data=await fetchBatch([url],apiKey,signal,options);if(!Array.isArray(data.results)||!Array.isArray(data.errors))throw new Error("TinyFish Fetch API returned an unexpected response shape");let result=data.results.find(item=>item?.url===url||item?.final_url===url)??data.results[0],mapped=mapFetchResult(result,url);if(mapped)return activityMonitor.logComplete(activityId,200),mapped;let fetchError=findFetchError(data.errors,url);if(fetchError){let status=typeof fetchError.status=="number"?` (HTTP ${fetchError.status})`:"";throw new Error(`TinyFish Fetch failed for ${url}: ${fetchError.error||"unknown error"}${status}`)}return activityMonitor.logComplete(activityId,200),null}catch(err){let message=errorMessage3(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}}import{existsSync as existsSync9,readFileSync as readFileSync9}from"node:fs";var SEARCH1API_SEARCH_URL="https://api.search1api.com/search",SEARCH1API_CRAWL_URL="https://api.search1api.com/crawl",CONFIG_PATH6=getWebSearchConfigPath(),SEARCH_TIMEOUT_MS3=6e4,CRAWL_TIMEOUT_MS=6e4,cachedConfig5=null;function loadConfig4(){if(cachedConfig5)return cachedConfig5;if(!existsSync9(CONFIG_PATH6))return cachedConfig5={},cachedConfig5;let raw=readFileSync9(CONFIG_PATH6,"utf-8"),parsed;try{parsed=JSON.parse(raw)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH6}: ${message}`)}if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error(`Invalid config in ${CONFIG_PATH6}: expected a JSON object`);return cachedConfig5=parsed,cachedConfig5}async function getApiKey3(signal){let key2=await resolveCredential({provider:"Search1API",configuredValue:loadConfig4().search1apiApiKey,environmentValue:process.env.SEARCH1API_KEY,signal});if(!key2)throw new Error(`Search1API key not found. Either:
57
+ 1. Create ${CONFIG_PATH6} with { "search1apiApiKey": "your-key" }
58
+ 2. Set SEARCH1API_KEY environment variable
59
+ Create a key at https://dashboard.search1api.com`);return key2}function isSearch1APIAvailable(){return hasCredentialSource({provider:"Search1API",configuredValue:loadConfig4().search1apiApiKey,environmentValue:process.env.SEARCH1API_KEY})}function errorMessage4(err){return err instanceof Error?err.message:String(err)}function requestSignal4(signal,timeoutMs){let timeout=AbortSignal.timeout(timeoutMs);return signal?AbortSignal.any([signal,timeout]):timeout}function normalizeNumResults2(value){return typeof value!="number"||!Number.isFinite(value)?5:Math.max(1,Math.min(Math.floor(value),20))}function normalizeDomain4(value){let input=value.trim().toLowerCase();if(!input||(input.startsWith("-")&&(input=input.slice(1).trim()),!input))return null;try{input=(input.includes("://")?new URL(input):new URL(`https://${input}`)).hostname}catch{input=input.split("/")[0]?.split(":")[0]??""}return input=input.replace(/^\.+|\.+$/g,""),/^[a-z0-9][a-z0-9.-]*\.[a-z]{2,}$/i.test(input)?input:null}function mapDomainFilter3(domainFilter){let includeSites=[],excludeSites=[];for(let raw of domainFilter??[]){let domain=normalizeDomain4(raw);if(!domain)continue;let target=raw.trim().startsWith("-")?excludeSites:includeSites;target.includes(domain)||target.push(domain)}return{includeSites,excludeSites}}function buildSearchBody(query2,options){let numResults=normalizeNumResults2(options.numResults),{includeSites,excludeSites}=mapDomainFilter3(options.domainFilter);return{query:query2,max_results:numResults,crawl_results:options.includeContent?numResults:0,...includeSites.length>0?{include_sites:includeSites}:{},...excludeSites.length>0?{exclude_sites:excludeSites}:{},...options.recencyFilter?{time_range:options.recencyFilter}:{}}}async function search1APIJsonRequest(label,url,apiKey,body,timeoutMs,signal){let response;try{response=await fetch(url,{method:"POST",headers:{Authorization:`Bearer ${apiKey}`,"Content-Type":"application/json"},body:JSON.stringify(body),signal:requestSignal4(signal,timeoutMs)})}catch(err){let message=errorMessage4(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}let raw=await response.text();if(!response.ok)throw new Error(`Search1API ${label} API error ${response.status}: ${redactCredential(raw,apiKey).slice(0,300)}`);try{return JSON.parse(raw)}catch(err){throw new Error(`Search1API ${label} API returned invalid JSON: ${errorMessage4(err)}`)}}function mapSearchResults3(results){if(!Array.isArray(results))throw new Error("Search1API Search API returned an unexpected response shape");return results.flatMap(item=>{if(!item||typeof item.link!="string"||item.link.trim().length===0)return[];let url=item.link.trim();return[{title:typeof item.title=="string"&&item.title.trim()?item.title.trim():url,url,snippet:typeof item.snippet=="string"?item.snippet.replace(/\s+/g," ").trim():""}]})}function mapInlineContent2(results){return Array.isArray(results)?results.flatMap(item=>!item||typeof item.link!="string"||item.link.trim().length===0?[]:typeof item.content!="string"||item.content.trim().length===0?[]:[{url:item.link.trim(),title:typeof item.title=="string"?item.title.trim():"",content:item.content,error:null}]):[]}function buildAnswer2(results){return results.map(result=>result.snippet?`${result.snippet}
60
+ Source: ${result.title} (${result.url})`:`Source: ${result.title} (${result.url})`).join(`
61
+
62
+ `)}async function searchWithSearch1API(query2,options={}){let apiKey=await getApiKey3(options.signal),activityId=activityMonitor.logStart({type:"api",query:query2});try{let data=await search1APIJsonRequest("Search",SEARCH1API_SEARCH_URL,apiKey,buildSearchBody(query2,options),SEARCH_TIMEOUT_MS3,options.signal),results=mapSearchResults3(data.results),response={answer:buildAnswer2(results),results};if(options.includeContent){let inlineContent=mapInlineContent2(data.results);inlineContent.length>0&&(response.inlineContent=inlineContent)}return activityMonitor.logComplete(activityId,200),response}catch(err){let message=errorMessage4(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}}async function extractWithSearch1API(url,signal,options={}){let apiKey=await getApiKey3(signal),activityId=activityMonitor.logStart({type:"fetch",url});try{let result=(await search1APIJsonRequest("Crawl",SEARCH1API_CRAWL_URL,apiKey,{url},typeof options.timeoutMs=="number"&&Number.isFinite(options.timeoutMs)?Math.max(1,Math.floor(options.timeoutMs)):CRAWL_TIMEOUT_MS,signal)).results;if(!result||typeof result!="object")throw new Error("Search1API Crawl API returned an unexpected response shape");let content=typeof result.content=="string"?result.content.trim():"";return content?(activityMonitor.logComplete(activityId,200),{url,title:typeof result.title=="string"?result.title.trim():"",content,error:null}):(activityMonitor.logComplete(activityId,200),null)}catch(err){let message=errorMessage4(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}}import{existsSync as existsSync10,readFileSync as readFileSync10}from"node:fs";var QUERIT_SEARCH_URL="https://api.querit.ai/v1/search",QUERIT_CONTENTS_URL="https://api.querit.ai/v1/contents",CONFIG_PATH7=getWebSearchConfigPath(),SEARCH_TIMEOUT_MS4=6e4,CONTENTS_TIMEOUT_MS=6e4,MAX_CONTENT_URLS=10,cachedConfig6=null;function loadConfig5(){if(cachedConfig6)return cachedConfig6;if(!existsSync10(CONFIG_PATH7))return cachedConfig6={},cachedConfig6;let raw=readFileSync10(CONFIG_PATH7,"utf-8"),parsed;try{parsed=JSON.parse(raw)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH7}: ${message}`)}if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error(`Invalid config in ${CONFIG_PATH7}: expected a JSON object`);return cachedConfig6=parsed,cachedConfig6}async function getApiKey4(signal){let key2=await resolveCredential({provider:"Querit",configuredValue:loadConfig5().queritApiKey,environmentValue:process.env.QUERIT_API_KEY,signal});if(!key2)throw new Error(`Querit API key not found. Either:
63
+ 1. Create ${CONFIG_PATH7} with { "queritApiKey": "your-key" }
64
+ 2. Set QUERIT_API_KEY environment variable
65
+ Create a key at https://www.querit.ai/en/dashboard/api-keys`);return key2}function isQueritAvailable(){return hasCredentialSource({provider:"Querit",configuredValue:loadConfig5().queritApiKey,environmentValue:process.env.QUERIT_API_KEY})}function errorMessage5(err){return err instanceof Error?err.message:String(err)}function requestSignal5(signal,timeoutMs){let timeout=AbortSignal.timeout(timeoutMs);return signal?AbortSignal.any([signal,timeout]):timeout}function normalizeNumResults3(value){return typeof value!="number"||!Number.isFinite(value)?5:Math.max(1,Math.min(Math.floor(value),20))}function normalizeDomain5(value){let input=value.trim().toLowerCase();if(!input||(input.startsWith("-")&&(input=input.slice(1).trim()),!input))return null;try{input=(input.includes("://")?new URL(input):new URL(`https://${input}`)).hostname}catch{input=input.split("/")[0]?.split(":")[0]??""}return input=input.replace(/^\.+|\.+$/g,""),/^[a-z0-9][a-z0-9.-]*\.[a-z]{2,}$/i.test(input)?input:null}function mapDomainFilter4(domainFilter){let include=[],exclude=[];for(let raw of domainFilter??[]){let domain=normalizeDomain5(raw);if(!domain)continue;let target=raw.trim().startsWith("-")?exclude:include;target.includes(domain)||target.push(domain)}return{include,exclude}}function mapRecencyFilter(value){if(value==="day")return"d1";if(value==="week")return"w1";if(value==="month")return"m1";if(value==="year")return"y1"}function buildSearchBody2(query2,options){let{include,exclude}=mapDomainFilter4(options.domainFilter),date=mapRecencyFilter(options.recencyFilter),filters={};return(include.length>0||exclude.length>0)&&(filters.sites={...include.length>0?{include}:{},...exclude.length>0?{exclude}:{}}),date&&(filters.timeRange={date}),{query:query2,count:normalizeNumResults3(options.numResults),...Object.keys(filters).length>0?{filters}:{}}}function normalizeTimeoutMs(value){return typeof value!="number"||!Number.isFinite(value)?CONTENTS_TIMEOUT_MS:Math.max(1,Math.floor(value))}function crawlTimeoutSeconds(value){return typeof value!="number"||!Number.isFinite(value)?10:Math.max(1,Math.min(Math.ceil(value/1e3),60))}function buildContentsBody(urls,options={}){return{urls,format:"markdown",crawlTimeout:crawlTimeoutSeconds(options.timeoutMs),extrasMeta:!0}}async function queritJsonRequest(label,url,apiKey,body,timeoutMs,signal){let response;try{response=await fetch(url,{method:"POST",headers:{Authorization:`Bearer ${apiKey}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(body),signal:requestSignal5(signal,timeoutMs)})}catch(err){let message=errorMessage5(err),isRequestAbort=err instanceof Error?err.name==="AbortError"||err.name==="TimeoutError"||/abort|timeout/i.test(message):/abort|timeout/i.test(message);if(!signal?.aborted&&isRequestAbort){let timeoutError=new Error(`Querit ${label} API request timed out after ${Math.ceil(timeoutMs/1e3)} seconds`);throw timeoutError.name="TimeoutError",timeoutError}let redactedMessage=redactCredential(message,apiKey);if(redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}let raw=await response.text();if(!response.ok)throw new Error(`Querit ${label} API error ${response.status}: ${redactCredential(raw,apiKey).slice(0,300)}`);try{return JSON.parse(raw)}catch(err){throw new Error(`Querit ${label} API returned invalid JSON: ${errorMessage5(err)}`)}}function assertApiSuccess(label,data){let code=Number(data.error_code);if(!Number.isFinite(code)||code!==200){let renderedCode=data.error_code===void 0?"unknown":String(data.error_code),message=typeof data.error_msg=="string"&&data.error_msg.trim()?`: ${data.error_msg.trim()}`:"";throw new Error(`Querit ${label} API returned error ${renderedCode}${message}`)}}function mapSearchResults4(data){let items=data.results?.result;if(!Array.isArray(items))throw new Error("Querit Search API returned an unexpected response shape");return items.flatMap(item=>{if(!item||typeof item.url!="string"||item.url.trim().length===0)return[];let url=item.url.trim();return[{title:typeof item.title=="string"&&item.title.trim()?item.title.trim():url,url,snippet:typeof item.snippet=="string"?item.snippet.replace(/\s+/g," ").trim():""}]})}function buildAnswer3(results){return results.map(result=>result.snippet?`${result.snippet}
66
+ Source: ${result.title} (${result.url})`:`Source: ${result.title} (${result.url})`).join(`
67
+
68
+ `)}function mapContentResult(result,requestedUrl){if(!result||typeof result.content!="string"||result.content.trim().length===0)return null;let metadata=result.extrasMeta;return{url:requestedUrl,title:metadata&&typeof metadata.title=="string"?metadata.title.trim():"",content:result.content.trim(),error:null}}function findContentResult(data,requestedUrl,index,requestedCount){if(!Array.isArray(data.results))return;let exact=data.results.find(item=>item?.url===requestedUrl||item?.extrasMeta?.url===requestedUrl);return exact||(requestedCount===1?data.results[0]:data.results.length===requestedCount?data.results[index]:void 0)}function failedContentStatus(data,result,index){return Array.isArray(data.statuses)?(result?.id?data.statuses.find(item=>item?.id===result.id):data.statuses[index])?.status==="failed":!1}async function fetchContentsBatch(urls,apiKey,signal,options={}){let data=await queritJsonRequest("Contents",QUERIT_CONTENTS_URL,apiKey,buildContentsBody(urls,options),normalizeTimeoutMs(options.timeoutMs),signal);if(assertApiSuccess("Contents",data),!Array.isArray(data.results)||!Array.isArray(data.statuses))throw new Error("Querit Contents API returned an unexpected response shape");return data}async function fetchInlineContent2(urls,apiKey,signal){let content=[];for(let offset=0;offset<urls.length;offset+=MAX_CONTENT_URLS){let batch=urls.slice(offset,offset+MAX_CONTENT_URLS),data=await fetchContentsBatch(batch,apiKey,signal);for(let index=0;index<batch.length;index++){let requestedUrl=batch[index],result=findContentResult(data,requestedUrl,index,batch.length),mapped=mapContentResult(result,requestedUrl);mapped&&content.push(mapped)}}return content}async function searchWithQuerit(query2,options={}){let apiKey=await getApiKey4(options.signal),activityId=activityMonitor.logStart({type:"api",query:query2});try{let data=await queritJsonRequest("Search",QUERIT_SEARCH_URL,apiKey,buildSearchBody2(query2,options),SEARCH_TIMEOUT_MS4,options.signal);assertApiSuccess("Search",data);let results=mapSearchResults4(data),response={answer:buildAnswer3(results),results};if(options.includeContent&&results.length>0){let inlineContent=await fetchInlineContent2(results.map(result=>result.url),apiKey,options.signal);inlineContent.length>0&&(response.inlineContent=inlineContent)}return activityMonitor.logComplete(activityId,200),response}catch(err){let message=errorMessage5(err),redactedMessage=redactCredential(message,apiKey);if(options.signal?.aborted?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}}async function extractWithQuerit(url,signal,options={}){let apiKey=await getApiKey4(signal),activityId=activityMonitor.logStart({type:"fetch",url});try{let data=await fetchContentsBatch([url],apiKey,signal,options),result=findContentResult(data,url,0,1),mapped=mapContentResult(result,url);if(mapped)return activityMonitor.logComplete(activityId,200),mapped;if(failedContentStatus(data,result,0))throw new Error(`Querit Contents API failed to crawl ${url}`);return activityMonitor.logComplete(activityId,200),null}catch(err){let message=errorMessage5(err),redactedMessage=redactCredential(message,apiKey);if(signal?.aborted?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}}import{lookup as dnsLookup}from"node:dns/promises";import{existsSync as existsSync11,readFileSync as readFileSync11,statSync as statSync3}from"node:fs";import net from"node:net";var DEFAULT_MAX_REDIRECTS=5,REDIRECT_STATUSES=new Set([301,302,303,307,308]),LOOPBACK_ALLOW_RANGES=["127.0.0.0/8","::1","::ffff:127.0.0.0/104"],WEB_SEARCH_CONFIG_PATH2=getWebSearchConfigPath(),cachedConfigRoot=null;function loadConfigRoot(){if(!existsSync11(WEB_SEARCH_CONFIG_PATH2))return null;let signature;try{let stat=statSync3(WEB_SEARCH_CONFIG_PATH2);signature=`${stat.mtimeMs}:${stat.size}`}catch{return null}if(cachedConfigRoot?.signature===signature)return cachedConfigRoot.value;let raw;try{raw=readFileSync11(WEB_SEARCH_CONFIG_PATH2,"utf-8")}catch{return null}let parsed;try{parsed=JSON.parse(raw)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${WEB_SEARCH_CONFIG_PATH2}: ${message}`)}let value=parsed&&typeof parsed=="object"&&!Array.isArray(parsed)?parsed:null;return cachedConfigRoot={signature,value},value}var DEFAULT_DOMAIN_POLICY={allow:[],deny:[]};function loadFetchContentDomainPolicy(){let parsed=loadConfigRoot();if(!parsed)return{...DEFAULT_DOMAIN_POLICY};let fetchContent=parsed.fetchContent;if(fetchContent==null)return{...DEFAULT_DOMAIN_POLICY};if(typeof fetchContent!="object"||Array.isArray(fetchContent))throw new Error(`fetchContent in ${WEB_SEARCH_CONFIG_PATH2} must be an object`);let policy=fetchContent.domainPolicy;if(policy==null)return{...DEFAULT_DOMAIN_POLICY};if(typeof policy!="object"||Array.isArray(policy))throw new Error(`fetchContent.domainPolicy in ${WEB_SEARCH_CONFIG_PATH2} must be an object`);let config=policy;return{allow:parseDomainEntries(config.allow,"allow"),deny:parseDomainEntries(config.deny,"deny")}}function parseDomainEntries(value,field){if(value==null)return[];if(!Array.isArray(value))throw new Error(`fetchContent.domainPolicy.${field} in ${WEB_SEARCH_CONFIG_PATH2} must be an array of hostnames`);return value.map((entry,index)=>{if(typeof entry!="string")throw new Error(`fetchContent.domainPolicy.${field} in ${WEB_SEARCH_CONFIG_PATH2} must contain only hostnames; entry ${index+1} is ${typeof entry}`);let hostname2=normalizeDomainEntry(entry);if(!hostname2)throw new Error(`fetchContent.domainPolicy.${field} in ${WEB_SEARCH_CONFIG_PATH2} contains an invalid hostname: ${JSON.stringify(entry)}`);return hostname2})}function normalizeDomainEntry(entry){let hostname2=normalizeHostname2(entry.trim());return!hostname2||/\s|[\\/?:#@]/.test(hostname2)?null:net.isIP(hostname2)?hostname2:hostname2.length>253||!/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i.test(hostname2)?null:hostname2}function loadSsrfConfig(){let parsed=loadConfigRoot();if(!parsed)return{allowRanges:[],trustEnvProxy:!1};let ssrf=parsed.ssrf;if(ssrf==null)return{allowRanges:[],trustEnvProxy:!1};if(typeof ssrf!="object"||Array.isArray(ssrf))throw new Error(`ssrf in ${WEB_SEARCH_CONFIG_PATH2} must be an object`);let config=ssrf;if(config.allowRanges!==void 0&&config.allowRanges!==null&&!Array.isArray(config.allowRanges))throw new Error(`ssrf.allowRanges in ${WEB_SEARCH_CONFIG_PATH2} must be an array of CIDR strings`);if(config.trustEnvProxy!==void 0&&typeof config.trustEnvProxy!="boolean")throw new Error(`ssrf.trustEnvProxy in ${WEB_SEARCH_CONFIG_PATH2} must be a boolean`);let allowRanges=(Array.isArray(config.allowRanges)?config.allowRanges:[]).map((entry,index)=>{if(typeof entry!="string")throw new Error(`ssrf.allowRanges in ${WEB_SEARCH_CONFIG_PATH2} must contain only CIDR strings; entry ${index+1} is ${typeof entry}`);return entry.trim()}).filter(Boolean);return parseAllowRanges(allowRanges),{allowRanges,trustEnvProxy:config.trustEnvProxy===!0}}async function defaultLookup(hostname2){return dnsLookup(hostname2,{all:!0,verbatim:!0})}async function validateRemoteUrl(rawUrl,options={}){let url=rawUrl instanceof URL?rawUrl:new URL(rawUrl);if(url.protocol!=="http:"&&url.protocol!=="https:")throw new Error("Only HTTP and HTTPS URLs can be fetched remotely");let hostname2=normalizeHostname2(url.hostname);if(!hostname2)throw new Error("URL must include a hostname");if(hostname2==="localhost"){if(options.allowLoopback===!0)return url;throw new Error(`Blocked internal hostname: ${hostname2}`)}if(hostname2.endsWith(".localhost"))throw new Error(`Blocked internal hostname: ${hostname2}`);let allowRanges=parseAllowRanges(options.allowRanges);if(assertDomainPolicy(hostname2,options.domainPolicy),net.isIP(hostname2)){let addressAllowRanges=options.allowLoopback===!0?[...allowRanges,...parseAllowRanges(LOOPBACK_ALLOW_RANGES)]:allowRanges;return assertPublicAddress(hostname2,hostname2,addressAllowRanges),url}if(shouldTrustEnvProxy(url,options.trustEnvProxy===!0))return url;let addresses;try{addresses=await(options.lookup??defaultLookup)(hostname2)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to resolve ${hostname2}: ${message}`)}if(addresses.length===0)throw new Error(`Failed to resolve ${hostname2}: no addresses returned`);for(let{address}of addresses)assertPublicAddress(address,hostname2,allowRanges);return url}async function fetchRemoteUrl(url,init={},options={}){let fetchImpl=options.fetch??fetch,maxRedirects=options.maxRedirects??DEFAULT_MAX_REDIRECTS,current=await validateRemoteUrl(url,options),requestInit=init;for(let redirects=0;redirects<=maxRedirects;redirects++){let response=await fetchImpl(current,{...requestInit,redirect:"manual"});if(!REDIRECT_STATUSES.has(response.status))return response;let location=response.headers.get("location");if(!location)return response;if(redirects===maxRedirects)throw new Error(`Too many redirects fetching ${current.toString()}`);let from=current;if(current=await validateRemoteUrl(new URL(location,current),options),response.status===303||(response.status===301||response.status===302)&&requestInit.method?.toUpperCase()==="POST"){let{body:_body,...nextInit}=requestInit;requestInit={...nextInit,method:"GET"}}options.onRedirect&&(requestInit=options.onRedirect({from,to:current,init:requestInit,response}))}throw new Error(`Too many redirects fetching ${current.toString()}`)}function normalizeHostname2(hostname2){return hostname2.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"")}function assertDomainPolicy(hostname2,policy){if(policy){if(policy.deny.some(entry=>domainMatches2(hostname2,entry)))throw new Error(`Blocked hostname by fetch_content domain policy: ${hostname2}`);if(policy.allow.length>0&&!policy.allow.some(entry=>domainMatches2(hostname2,entry)))throw new Error(`Hostname not allowed by fetch_content domain policy: ${hostname2}`)}}function domainMatches2(hostname2,entry){return hostname2===entry||hostname2.endsWith(`.${entry}`)}function getProxyForProtocol(protocol){let candidates=protocol==="http:"?[process.env.HTTP_PROXY,process.env.http_proxy,process.env.ALL_PROXY,process.env.all_proxy]:protocol==="https:"?[process.env.HTTPS_PROXY,process.env.https_proxy,process.env.HTTP_PROXY,process.env.http_proxy,process.env.ALL_PROXY,process.env.all_proxy]:[];for(let candidate of candidates){let value=candidate?.trim();if(value)try{let proxyUrl=new URL(value);if((proxyUrl.protocol==="http:"||proxyUrl.protocol==="https:")&&proxyUrl.hostname)return value}catch{}}return""}function hostnameMatchesNoProxy(hostname2,port,entry){let trimmed=entry.trim();if(!trimmed)return!1;if(trimmed==="*")return!0;let hostEntry=trimmed,entryPort;if(hostEntry.startsWith("[")){let closingBracket=hostEntry.indexOf("]");if(closingBracket>=0){let suffix2=hostEntry.slice(closingBracket+1);/^:\\d+$/.test(suffix2)&&(entryPort=suffix2.slice(1)),hostEntry=hostEntry.slice(0,closingBracket+1)}}else{let colon=hostEntry.lastIndexOf(":");colon>-1&&/^\d+$/.test(hostEntry.slice(colon+1))&&(entryPort=hostEntry.slice(colon+1),hostEntry=hostEntry.slice(0,colon))}if(entryPort!==void 0&&entryPort!==port)return!1;let normalizedEntry=normalizeHostname2(hostEntry);if(!normalizedEntry)return!1;if(normalizedEntry===hostname2)return!0;let suffix=normalizedEntry.startsWith("*.")?normalizedEntry.slice(1):normalizedEntry.startsWith(".")?normalizedEntry:`.${normalizedEntry}`;return hostname2.endsWith(suffix)}function shouldTrustEnvProxy(url,enabled){if(!enabled||!getProxyForProtocol(url.protocol)||hasScopedProxyDecision()||getActiveProxy()&&!isProxyBypassedUrl(url))return!1;let hostname2=normalizeHostname2(url.hostname),port=url.port||(url.protocol==="https:"?"443":"80");return!(process.env.NO_PROXY||process.env.no_proxy||"").split(",").some(entry=>hostnameMatchesNoProxy(hostname2,port,entry))}function assertPublicAddress(address,hostname2,allowRanges=[]){let normalized=normalizeHostname2(address),ipVersion=net.isIP(normalized);if(ipVersion===0)throw new Error(`Resolved non-IP address for ${hostname2}: ${address}`);if(!isInAllowedRange(normalized,ipVersion,allowRanges)){if(ipVersion===4&&isBlockedIPv4(normalized)){let hint=isFakeIpProxyAddress(normalized)?'. This address is in 198.18.0.0/15, commonly used by TUN/fake-IP proxies. If that matches your setup, configure ssrf.allowRanges with ["198.18.0.0/15"] in web-search.json.':"";throw new Error(`Blocked internal address for ${hostname2}: ${normalized}${hint}`)}if(ipVersion===6&&isBlockedIPv6(normalized))throw new Error(`Blocked internal address for ${hostname2}: ${normalized}`)}}function isFakeIpProxyAddress(address){let[a,b]=address.split(".").map(part=>Number(part));return a===198&&(b===18||b===19)}function isBlockedIPv4(address){let parts=address.split(".").map(part=>Number(part));if(parts.length!==4||parts.some(part=>!Number.isInteger(part)||part<0||part>255))return!0;let[a,b]=parts;return a===0||a===10||a===127||a===100&&b>=64&&b<=127||a===169&&b===254||a===172&&b>=16&&b<=31||a===192&&b===168||isFakeIpProxyAddress(address)||a>=224}function isBlockedIPv6(address){let groups=parseIPv6(address);if(!groups)return!0;let first=groups[0];if(groups.every(group=>group===0)||groups.slice(0,7).every(group=>group===0)&&groups[7]===1||(first&65024)===64512||(first&65472)===65152)return!0;if(groups.slice(0,5).every(group=>group===0)&&groups[5]===65535){let ipv4=[groups[6]>>8,groups[6]&255,groups[7]>>8,groups[7]&255].join(".");return isBlockedIPv4(ipv4)}return!1}function parseIPv6(address){if(address.includes(".")){let lastColon=address.lastIndexOf(":"),ipv4=address.slice(lastColon+1);if(net.isIP(ipv4)!==4)return null;let octets=ipv4.split(".").map(part=>Number(part));address=`${address.slice(0,lastColon)}:${(octets[0]<<8|octets[1]).toString(16)}:${(octets[2]<<8|octets[3]).toString(16)}`}let pieces=address.split("::");if(pieces.length>2)return null;let left=pieces[0]?pieces[0].split(":"):[],right=pieces.length===2&&pieces[1]?pieces[1].split(":"):[],missing=8-left.length-right.length;if(pieces.length===1&&missing!==0||pieces.length===2&&missing<0)return null;let groups=[...left,...Array(missing).fill("0"),...right].map(part=>/^[0-9a-f]{1,4}$/i.test(part)?parseInt(part,16):-1);return groups.length===8&&groups.every(group=>group>=0&&group<=65535)?groups:null}function parseAllowRanges(input){if(input==null)return[];if(!Array.isArray(input))throw new Error("ssrf.allowRanges must be an array of CIDR strings");let rules=[];for(let entry of input){if(typeof entry!="string")throw new Error(`ssrf.allowRanges entries must be strings, got ${typeof entry}`);let rule=parseCidr(entry.trim());if(!rule)throw new Error(`Invalid CIDR notation in ssrf.allowRanges: "${entry}"`);rules.push(rule)}return rules}function parseCidr(raw){if(!raw)return null;let slash=raw.lastIndexOf("/"),addrPart=slash>=0?raw.slice(0,slash):raw,prefixPart=slash>=0?raw.slice(slash+1):null;if(prefixPart!==null&&!/^\d+$/.test(prefixPart))return null;let version=net.isIP(addrPart);if(version===4){let bytes=ipv4ToBytes(addrPart);if(!bytes)return null;let prefix=prefixPart===null?32:Number(prefixPart);return!Number.isInteger(prefix)||prefix<1||prefix>32?null:{bytes,prefix}}if(version===6){let groups=parseIPv6(addrPart);if(!groups)return null;let prefix=prefixPart===null?128:Number(prefixPart);return!Number.isInteger(prefix)||prefix<1||prefix>128?null:{bytes:ipv6GroupsToBytes(groups),prefix}}return null}function ipv4ToBytes(address){let parts=address.split(".");if(parts.length!==4)return null;let bytes=new Uint8Array(4);for(let i=0;i<4;i++){let octet=Number(parts[i]);if(!Number.isInteger(octet)||octet<0||octet>255)return null;bytes[i]=octet}return bytes}function ipv6GroupsToBytes(groups){let bytes=new Uint8Array(16);for(let i=0;i<8;i++)bytes[i*2]=groups[i]>>8,bytes[i*2+1]=groups[i]&255;return bytes}function ipToBytes(address,version){if(version===4)return ipv4ToBytes(address);if(version===6){let groups=parseIPv6(address);return groups?ipv6GroupsToBytes(groups):null}return null}function isInAllowedRange(address,ipVersion,allowRanges){if(allowRanges.length===0)return!1;let addrBytes=ipToBytes(address,ipVersion);if(!addrBytes)return!1;for(let rule of allowRanges)if(rule.bytes.length===addrBytes.length&&bytesMatchPrefix(addrBytes,rule.bytes,rule.prefix))return!0;return!1}function bytesMatchPrefix(addr,network,prefix){let fullBytes=prefix>>3,remBits=prefix&7;for(let i=0;i<fullBytes;i++)if(addr[i]!==network[i])return!1;if(remBits>0&&fullBytes<addr.length){let mask=255<<8-remBits&255;if((addr[fullBytes]&mask)!==(network[fullBytes]&mask))return!1}return!0}import{existsSync as existsSync12,readFileSync as readFileSync12}from"node:fs";import net2 from"node:net";var CONFIG_PATH8=getWebSearchConfigPath(),DEFAULT_API_VERSION="v2",EXTRACT_TIMEOUT_MS=6e4,SEARCH_TIMEOUT_MS5=6e4,DEFAULT_MAX_REDIRECTS2=5,REDIRECT_STATUSES2=new Set([301,302,303,307,308]),SUPPORTED_API_VERSIONS=["v1","v2"],cachedConfig7=null;function loadConfig6(){if(cachedConfig7)return cachedConfig7;if(!existsSync12(CONFIG_PATH8))return cachedConfig7={},cachedConfig7;let raw=readFileSync12(CONFIG_PATH8,"utf8"),parsed;try{parsed=JSON.parse(raw)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH8}: ${message}`)}if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error(`Invalid config in ${CONFIG_PATH8}: expected a JSON object`);return cachedConfig7=parsed,cachedConfig7}function normalizeBaseUrl(value){if(typeof value!="string")return null;let trimmed=value.trim();if(!trimmed)return null;let parsed;try{parsed=new URL(trimmed)}catch{throw new Error(`Invalid Firecrawl base URL in ${CONFIG_PATH8}: expected an HTTP or HTTPS URL`)}if(parsed.protocol!=="http:"&&parsed.protocol!=="https:")throw new Error(`Invalid Firecrawl base URL in ${CONFIG_PATH8}: expected an HTTP or HTTPS URL`);if(parsed.username||parsed.password)throw new Error(`Invalid Firecrawl base URL in ${CONFIG_PATH8}: URL credentials are not allowed`);return parsed.pathname=parsed.pathname.replace(/\/+$/,""),parsed.search="",parsed.hash="",parsed.toString().replace(/\/+$/,"")}function getBaseUrl(){return normalizeBaseUrl(process.env.FIRECRAWL_BASE_URL)??normalizeBaseUrl(loadConfig6().firecrawlBaseUrl)}function requireBaseUrl(){let baseUrl=getBaseUrl();if(!baseUrl)throw new Error(`Firecrawl base URL not configured. Either:
69
+ 1. Set firecrawlBaseUrl in ${CONFIG_PATH8}
70
+ 2. Set FIRECRAWL_BASE_URL environment variable`);return baseUrl}function getApiVersion(){let raw=(typeof process.env.FIRECRAWL_API_VERSION=="string"?process.env.FIRECRAWL_API_VERSION.trim():"")||loadConfig6().firecrawlApiVersion;if(raw==null)return DEFAULT_API_VERSION;if(typeof raw!="string")throw new Error(`firecrawlApiVersion in ${CONFIG_PATH8} must be a string ("v1" or "v2")`);let normalized=raw.trim().toLowerCase();if(!normalized)return DEFAULT_API_VERSION;if(!SUPPORTED_API_VERSIONS.includes(normalized))throw new Error(`Unsupported Firecrawl API version "${raw}". Supported versions: ${SUPPORTED_API_VERSIONS.join(", ")}`);return normalized}function allowFreshScrape(){let environmentValue=process.env.FIRECRAWL_FRESH_SCRAPE;if(environmentValue!==void 0)return environmentValue==="1"||environmentValue.toLowerCase()==="true";let configured=loadConfig6().firecrawlFreshScrape;if(configured==null)return!1;if(typeof configured!="boolean")throw new Error(`firecrawlFreshScrape in ${CONFIG_PATH8} must be a boolean`);return configured}async function getApiKey5(signal){let configKey=loadConfig6().firecrawlApiKey;return resolveCredential({provider:"Firecrawl",configuredValue:configKey,environmentValue:process.env.FIRECRAWL_API_KEY,signal})}function requestSignal6(timeoutMs,signal){let timeout=AbortSignal.timeout(timeoutMs);return signal?AbortSignal.any([timeout,signal]):timeout}function errorMessage6(err){return err instanceof Error?err.message:String(err)}function isAbortError(err){return errorMessage6(err).toLowerCase().includes("abort")}function ssrfOptions(options){let config=loadSsrfConfig();return{allowRanges:options?.ssrf?.allowRanges??config.allowRanges,trustEnvProxy:options?.ssrf?.trustEnvProxy??config.trustEnvProxy,...options?.lookup?{lookup:options.lookup}:{}}}function isLoopbackApiUrl(url){let hostname2=url.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"");return hostname2==="localhost"||hostname2==="::1"?!0:net2.isIP(hostname2)!==4?!1:hostname2.split(".")[0]==="127"}function firecrawlApiSsrfOptions(options,allowLoopback){return{...ssrfOptions(options),allowLoopback}}function withoutSensitiveHeaders(headers){let next={...headers};return delete next.Authorization,delete next.authorization,delete next.Cookie,delete next.cookie,delete next["X-API-Key"],delete next["x-api-key"],next}async function fetchFirecrawlApi(url,init,options){let allowLoopback=isLoopbackApiUrl(new URL(url)),current=await validateRemoteUrl(url,firecrawlApiSsrfOptions(options,allowLoopback)),headers=init.headers;for(let redirects=0;redirects<=DEFAULT_MAX_REDIRECTS2;redirects++){let response=await fetch(current,{...init,headers,redirect:"manual"});if(!REDIRECT_STATUSES2.has(response.status))return response;let location=response.headers.get("location");if(!location)return response;if(redirects===DEFAULT_MAX_REDIRECTS2)throw new Error(`Too many redirects fetching ${current.toString()}`);let next=await validateRemoteUrl(new URL(location,current),firecrawlApiSsrfOptions(options,allowLoopback));next.origin!==current.origin&&(headers=withoutSensitiveHeaders(headers)),current=next}throw new Error(`Too many redirects fetching ${current.toString()}`)}function scrapeBody(url){return{url,formats:["markdown"],onlyMainContent:!0,...allowFreshScrape()?{}:{lockdown:!0}}}function normalizeCount(value){return typeof value!="number"||!Number.isFinite(value)?5:Math.max(1,Math.min(Math.floor(value),20))}function normalizeDomain6(value){let input=value.trim().toLowerCase();if(!input||(input.startsWith("-")&&(input=input.slice(1).trim()),!input))return null;try{input=(input.includes("://")?new URL(input):new URL(`https://${input}`)).hostname}catch{input=input.split("/")[0]?.split(":")[0]??""}return input=input.replace(/^\.+|\.+$/g,""),/^[a-z0-9][a-z0-9.-]*\.[a-z]{2,}$/i.test(input)?input:null}function parseDomainFilter(domainFilter){let filters={include:[],exclude:[]};for(let raw of domainFilter??[]){let domain=normalizeDomain6(raw);if(!domain)continue;let target=raw.trim().startsWith("-")?filters.exclude:filters.include;target.includes(domain)||target.push(domain)}return filters}function passesDomainFilters(url,filters){if(filters.include.length===0&&filters.exclude.length===0)return!0;let hostname2;try{hostname2=new URL(url).hostname.toLowerCase()}catch{return!1}let matches2=domain=>hostname2===domain||hostname2.endsWith(`.${domain}`);return filters.exclude.some(matches2)?!1:filters.include.length===0||filters.include.some(matches2)}function mapRecencyFilter2(value){switch(value){case"day":return"qdr:d";case"week":return"qdr:w";case"month":return"qdr:m";case"year":return"qdr:y";default:return}}function searchBody(query2,options,numResults,filters){return{query:query2,limit:numResults,sources:["web"],...filters.include.length>0?{includeDomains:filters.include}:{},...filters.include.length===0&&filters.exclude.length>0?{excludeDomains:filters.exclude}:{},...mapRecencyFilter2(options.recencyFilter)?{tbs:mapRecencyFilter2(options.recencyFilter)}:{},...options.includeContent?{scrapeOptions:{formats:["markdown"],onlyMainContent:!0,...allowFreshScrape()?{}:{lockdown:!0}}}:{}}}function firstString(...values){for(let value of values)if(typeof value=="string"&&value.trim())return value.trim();return null}function buildAnswer4(results){return results.map(result=>result.snippet?`${result.snippet}
71
+ Source: ${result.title} (${result.url})`:`Source: ${result.title} (${result.url})`).join(`
72
+
73
+ `)}function mapSearchResults5(data,numResults,filters){let web=Array.isArray(data)?data:data&&typeof data=="object"?data.web:void 0;if(!Array.isArray(web))throw new Error("Firecrawl search returned an unexpected web result shape");let results=[],inlineContent=[],seen=new Set;for(let rawItem of web){if(!rawItem||typeof rawItem!="object"||Array.isArray(rawItem))continue;let item=rawItem,url=firstString(item.url,item.metadata?.sourceURL,item.metadata?.url);if(!url||seen.has(url)||!passesDomainFilters(url,filters))continue;seen.add(url);let title=firstString(item.title,item.metadata?.title)??url,snippet=firstString(item.description,item.snippet,item.metadata?.description)??"";results.push({title,url,snippet});let markdown=firstString(item.markdown);if(markdown&&inlineContent.push({url,title,content:markdown,error:null}),results.length>=numResults)break}return{results,inlineContent}}async function firecrawlFetch(endpoint,body,signal,options,label=endpoint,activity=void 0){let baseUrl=requireBaseUrl(),version=getApiVersion(),apiKey=await getApiKey5(signal),headers={"Content-Type":"application/json"};apiKey&&(headers.Authorization=`Bearer ${apiKey}`);let requestUrl=`${baseUrl}/${version}/${endpoint}`,activityId=activityMonitor.logStart(activity??{type:"fetch",url:requestUrl});try{let response=await fetchFirecrawlApi(requestUrl,{method:"POST",headers,body:JSON.stringify(body),signal:requestSignal6(options?.timeoutMs??EXTRACT_TIMEOUT_MS,signal)},options);if(!response.ok){let text=await response.text().catch(()=>"");throw new Error(`Firecrawl ${label} error ${response.status}: ${redactCredential(text.slice(0,300),apiKey)}`)}let data;try{data=await response.json()}catch(err){throw new Error(`Firecrawl ${label} returned invalid JSON: ${errorMessage6(err)}`)}if(!data||typeof data!="object"||Array.isArray(data))throw new Error(`Firecrawl ${label} returned an unexpected response shape`);let envelope=data;if(envelope.success===!1){let reason=typeof envelope.error=="string"&&envelope.error.trim()?envelope.error:"unknown error";throw new Error(`Firecrawl ${label} unsuccessful: ${redactCredential(reason,apiKey)}`)}if(envelope.success!==!0)throw new Error(`Firecrawl ${label} returned an unexpected response shape`);return activityMonitor.logComplete(activityId,response.status),envelope}catch(err){throw isAbortError(err)?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,errorMessage6(err)),err}}function isFirecrawlAvailable(){return getBaseUrl()!==null}async function searchWithFirecrawl(query2,options={}){requireBaseUrl();let numResults=normalizeCount(options.numResults),filters=parseDomainFilter(options.domainFilter),envelope=await firecrawlFetch("search",searchBody(query2,options,numResults,filters),options.signal,{...options,timeoutMs:options.timeoutMs??SEARCH_TIMEOUT_MS5},"search",{type:"api",query:query2}),mapped=mapSearchResults5(envelope.data,numResults,filters),response={answer:buildAnswer4(mapped.results),results:mapped.results};return options.includeContent&&mapped.inlineContent.length>0&&(response.inlineContent=mapped.inlineContent),response}async function extractWithFirecrawl(url,signal,options){requireBaseUrl(),await validateRemoteUrl(url,ssrfOptions(options));let data=(await firecrawlFetch("scrape",scrapeBody(url),signal,options)).data;if(!data||typeof data!="object"||Array.isArray(data))throw new Error("Firecrawl scrape returned an unexpected data shape");let scrape=data;if(typeof scrape.markdown!="string")throw new Error("Firecrawl scrape returned markdown in an unexpected shape");let content=scrape.markdown.trim();if(!content)return null;let metadataTitle=scrape.metadata?.title,title=typeof metadataTitle=="string"&&metadataTitle.trim()?metadataTitle.trim():typeof scrape.title=="string"?scrape.title.trim():"";return{url,title,content,error:null}}import{existsSync as existsSync13,readFileSync as readFileSync13}from"node:fs";var KAGI_SEARCH_URL="https://kagi.com/api/v1/search",KAGI_EXTRACT_URL="https://kagi.com/api/v1/extract",CONFIG_PATH9=getWebSearchConfigPath(),SEARCH_TIMEOUT_MS6=6e4,cachedConfig8=null;function loadConfig7(){if(cachedConfig8)return cachedConfig8;if(!existsSync13(CONFIG_PATH9))return cachedConfig8={},cachedConfig8;let raw=readFileSync13(CONFIG_PATH9,"utf-8"),parsed;try{parsed=JSON.parse(raw)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH9}: ${message}`)}if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error(`Invalid config in ${CONFIG_PATH9}: expected a JSON object`);return cachedConfig8=parsed,cachedConfig8}async function getApiKey6(signal){return resolveCredential({provider:"Kagi",configuredValue:loadConfig7().kagiApiKey,environmentValue:process.env.KAGI_API_KEY,signal})}async function requireApiKey(signal){let apiKey=await getApiKey6(signal);if(!apiKey)throw new Error(`Kagi API key not found. Either:
74
+ 1. Create ${CONFIG_PATH9} with { "kagiApiKey": "your-key" }
75
+ 2. Set KAGI_API_KEY environment variable
76
+ Create a key at https://kagi.com/settings?p=api`);return apiKey}function normalizeCount2(value){return typeof value!="number"||!Number.isFinite(value)?5:Math.max(1,Math.min(Math.floor(value),20))}function errorMessage7(err){return err instanceof Error?err.message:String(err)}function invalidResponse(message){return new Error(`Kagi API returned invalid response: ${message}`)}function firstString2(...values){for(let value of values)if(typeof value=="string"&&value.trim())return value.trim();return null}function appendSearchItems(value,results,inlineContent){if(Array.isArray(value)){for(let item2 of value)appendSearchItems(item2,results,inlineContent);return}if(!value||typeof value!="object")return;let item=value,url=firstString2(item.url,item.href,item.link);if(!url)return;let title=firstString2(item.title,item.name)??url,snippet=firstString2(item.snippet,item.description,item.summary,item.content,item.markdown,item.text)??"";results.push({title,url,snippet});let content=firstString2(item.markdown,item.content,item.text);content&&inlineContent.push({url,title,content,error:null})}function parseErrors(value){if(!value||typeof value!="object"||Array.isArray(value))return null;let envelope=value,rawErrors=envelope.errors??envelope.error;if(!Array.isArray(rawErrors))return null;let messages=rawErrors.map(entry=>{if(!entry||typeof entry!="object")return String(entry);let raw=entry;return firstString2(raw.message,raw.msg,raw.code)??JSON.stringify(raw)});return messages.length>0?messages.join("; "):null}function parseSearchResponse(value){if(!value||typeof value!="object"||Array.isArray(value))throw invalidResponse("expected an object envelope");let message=parseErrors(value);if(message)throw invalidResponse(message);let envelope=value,results=[],inlineContent=[],data=envelope.data,items=typeof data=="object"&&data!==null&&!Array.isArray(data)?data.search:data;return appendSearchItems(items,results,inlineContent),{results,inlineContent}}function parseExtractResponse(value,requestedUrl){if(!value||typeof value!="object"||Array.isArray(value))throw invalidResponse("expected extract object envelope");let message=parseErrors(value);if(message)throw invalidResponse(message);let envelope=value,candidates=Array.isArray(envelope.data)?envelope.data:[envelope.data??envelope];for(let candidate of candidates){if(!candidate||typeof candidate!="object"||Array.isArray(candidate))continue;let item=candidate,content=firstString2(item.markdown,item.content,item.text);if(content)return{url:firstString2(item.url,item.href,item.link)??requestedUrl,title:firstString2(item.title,item.name)??requestedUrl,content,error:null}}return null}function buildAnswer5(results){return results.map(result=>result.snippet?`${result.snippet}
77
+ Source: ${result.title} (${result.url})`:`Source: ${result.title} (${result.url})`).join(`
78
+
79
+ `)}function isKagiAvailable(){return hasCredentialSource({provider:"Kagi",configuredValue:loadConfig7().kagiApiKey,environmentValue:process.env.KAGI_API_KEY})}async function searchWithKagi(query2,options={}){let apiKey=await requireApiKey(options.signal),numResults=normalizeCount2(options.numResults),activityId=activityMonitor.logStart({type:"api",query:query2}),response;try{response=await fetch(KAGI_SEARCH_URL,{method:"POST",headers:{Authorization:`Bearer ${apiKey}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:query2,limit:numResults}),signal:options.signal?AbortSignal.any([AbortSignal.timeout(SEARCH_TIMEOUT_MS6),options.signal]):AbortSignal.timeout(SEARCH_TIMEOUT_MS6)})}catch(err){let message=errorMessage7(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}if(!response.ok){activityMonitor.logComplete(activityId,response.status);let errorText=redactCredential(await response.text(),apiKey);throw new Error(`Kagi API error ${response.status}: ${errorText.slice(0,300)}`)}let rawData;try{rawData=await response.json()}catch(err){throw activityMonitor.logComplete(activityId,response.status),new Error(`Kagi API returned invalid JSON: ${errorMessage7(err)}`)}let parsed=parseSearchResponse(rawData);activityMonitor.logComplete(activityId,response.status);let results=parsed.results.slice(0,numResults),mapped={answer:buildAnswer5(results),results};if(options.includeContent){let urls=new Set(results.map(result=>result.url)),inlineContent=parsed.inlineContent.filter(content=>urls.has(content.url));inlineContent.length>0&&(mapped.inlineContent=inlineContent)}return mapped}function isKagiExtractAvailable(){return isKagiAvailable()}async function extractWithKagi(url,signal,options={}){let ssrf=options.ssrf??loadSsrfConfig(),domainPolicy=loadFetchContentDomainPolicy();await validateRemoteUrl(url,{allowRanges:ssrf.allowRanges,trustEnvProxy:ssrf.trustEnvProxy,domainPolicy,...options.lookup?{lookup:options.lookup}:{}});let apiKey=await requireApiKey(signal),activityId=activityMonitor.logStart({type:"api",query:`kagi extract: ${url}`}),response;try{response=await fetchRemoteUrl(KAGI_EXTRACT_URL,{method:"POST",headers:{Authorization:`Bearer ${apiKey}`,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({pages:[{url}]}),signal:signal?AbortSignal.any([AbortSignal.timeout(options.timeoutMs??SEARCH_TIMEOUT_MS6),signal]):AbortSignal.timeout(options.timeoutMs??SEARCH_TIMEOUT_MS6)},{allowRanges:ssrf.allowRanges,trustEnvProxy:ssrf.trustEnvProxy,onRedirect:({from,to,init})=>to.origin===from.origin?init:{...init,headers:{"Content-Type":"application/json",Accept:"application/json"}},...options.lookup?{lookup:options.lookup}:{}})}catch(err){let message=errorMessage7(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}if(!response.ok){activityMonitor.logComplete(activityId,response.status);let errorText=redactCredential(await response.text(),apiKey);throw new Error(`Kagi Extract API error ${response.status}: ${errorText.slice(0,300)}`)}let rawData;try{rawData=await response.json()}catch(err){throw activityMonitor.logComplete(activityId,response.status),new Error(`Kagi Extract API returned invalid JSON: ${errorMessage7(err)}`)}let parsed=parseExtractResponse(rawData,url);return activityMonitor.logComplete(activityId,response.status),parsed}import{existsSync as existsSync14,readFileSync as readFileSync14}from"node:fs";var OLLAMA_SEARCH_URL="https://ollama.com/api/web_search",OLLAMA_FETCH_URL="https://ollama.com/api/web_fetch",CONFIG_PATH10=getWebSearchConfigPath(),SEARCH_TIMEOUT_MS7=6e4,cachedConfig9=null;function loadConfig8(){if(cachedConfig9)return cachedConfig9;if(!existsSync14(CONFIG_PATH10))return cachedConfig9={},cachedConfig9;let raw=readFileSync14(CONFIG_PATH10,"utf-8"),parsed;try{parsed=JSON.parse(raw)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH10}: ${message}`)}if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error(`Invalid config in ${CONFIG_PATH10}: expected a JSON object`);return cachedConfig9=parsed,cachedConfig9}async function getApiKey7(signal){return resolveCredential({provider:"Ollama",configuredValue:loadConfig8().ollamaApiKey,environmentValue:process.env.OLLAMA_API_KEY,signal})}async function requireApiKey2(signal){let apiKey=await getApiKey7(signal);if(!apiKey)throw new Error(`Ollama API key not found. Either:
80
+ 1. Create ${CONFIG_PATH10} with { "ollamaApiKey": "your-key" }
81
+ 2. Set OLLAMA_API_KEY environment variable
82
+ Create a key at https://ollama.com/settings/keys`);return apiKey}function normalizeCount3(value){return typeof value!="number"||!Number.isFinite(value)?5:Math.max(1,Math.min(Math.floor(value),10))}function errorMessage8(err){return err instanceof Error?err.message:String(err)}function invalidResponse2(message){return new Error(`Ollama API returned invalid response: ${message}`)}function parseSearchResponse2(value){if(!value||typeof value!="object"||Array.isArray(value))throw invalidResponse2("expected an object envelope");let envelope=value;if(!Array.isArray(envelope.results))throw invalidResponse2("expected results array");let results=[];for(let[index,value2]of envelope.results.entries()){if(!value2||typeof value2!="object"||Array.isArray(value2))throw invalidResponse2(`expected results[${index}] object`);let item=value2;if(typeof item.title!="string")throw invalidResponse2(`expected results[${index}].title string`);if(typeof item.url!="string"||!item.url)throw invalidResponse2(`expected results[${index}].url non-empty string`);if(typeof item.content!="string")throw invalidResponse2(`expected results[${index}].content string`);results.push({title:item.title,url:item.url,content:item.content})}return{results}}function parseFetchResponse(value){if(!value||typeof value!="object"||Array.isArray(value))throw invalidResponse2("expected fetch object envelope");let envelope=value;if(typeof envelope.title!="string")throw invalidResponse2("expected title string");if(typeof envelope.content!="string")throw invalidResponse2("expected content string");return{title:envelope.title,content:envelope.content,links:envelope.links}}function buildAnswer6(results){return results.map(result=>result.snippet?`${result.snippet}
83
+ Source: ${result.title} (${result.url})`:`Source: ${result.title} (${result.url})`).join(`
84
+
85
+ `)}function isOllamaAvailable(){return hasCredentialSource({provider:"Ollama",configuredValue:loadConfig8().ollamaApiKey,environmentValue:process.env.OLLAMA_API_KEY})}async function searchWithOllama(query2,options={}){let apiKey=await requireApiKey2(options.signal),numResults=normalizeCount3(options.numResults),activityId=activityMonitor.logStart({type:"api",query:query2}),response;try{response=await fetch(OLLAMA_SEARCH_URL,{method:"POST",headers:{Authorization:`Bearer ${apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({query:query2,max_results:numResults}),signal:options.signal?AbortSignal.any([AbortSignal.timeout(SEARCH_TIMEOUT_MS7),options.signal]):AbortSignal.timeout(SEARCH_TIMEOUT_MS7)})}catch(err){let message=errorMessage8(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}if(!response.ok){activityMonitor.logComplete(activityId,response.status);let errorText=redactCredential(await response.text(),apiKey);throw new Error(`Ollama API error ${response.status}: ${errorText.slice(0,300)}`)}let rawData;try{rawData=await response.json()}catch(err){throw activityMonitor.logComplete(activityId,response.status),new Error(`Ollama API returned invalid JSON: ${errorMessage8(err)}`)}let data=parseSearchResponse2(rawData);activityMonitor.logComplete(activityId,response.status);let results=data.results.slice(0,numResults).map(result=>({title:result.title,url:result.url,snippet:result.content})),mapped={answer:buildAnswer6(results),results};if(options.includeContent){let inlineContent=data.results.slice(0,numResults).filter(result=>result.content.trim().length>0).map(result=>({url:result.url,title:result.title,content:result.content,error:null}));inlineContent.length>0&&(mapped.inlineContent=inlineContent)}return mapped}function isOllamaFetchAvailable(){return isOllamaAvailable()}async function extractWithOllama(url,signal,options={}){let ssrf=options.ssrf??loadSsrfConfig(),domainPolicy=loadFetchContentDomainPolicy();await validateRemoteUrl(url,{allowRanges:ssrf.allowRanges,trustEnvProxy:ssrf.trustEnvProxy,domainPolicy,...options.lookup?{lookup:options.lookup}:{}});let apiKey=await requireApiKey2(signal),activityId=activityMonitor.logStart({type:"api",query:`ollama fetch: ${url}`}),response;try{response=await fetchRemoteUrl(OLLAMA_FETCH_URL,{method:"POST",headers:{Authorization:`Bearer ${apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({url}),signal:signal?AbortSignal.any([AbortSignal.timeout(options.timeoutMs??SEARCH_TIMEOUT_MS7),signal]):AbortSignal.timeout(options.timeoutMs??SEARCH_TIMEOUT_MS7)},{allowRanges:ssrf.allowRanges,trustEnvProxy:ssrf.trustEnvProxy,onRedirect:({from,to,init})=>to.origin===from.origin?init:{...init,headers:{"Content-Type":"application/json"}},...options.lookup?{lookup:options.lookup}:{}})}catch(err){let message=errorMessage8(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}if(!response.ok){activityMonitor.logComplete(activityId,response.status);let errorText=redactCredential(await response.text(),apiKey);throw new Error(`Ollama Web Fetch error ${response.status}: ${errorText.slice(0,300)}`)}let rawData;try{rawData=await response.json()}catch(err){throw activityMonitor.logComplete(activityId,response.status),new Error(`Ollama Web Fetch returned invalid JSON: ${errorMessage8(err)}`)}let data=parseFetchResponse(rawData);activityMonitor.logComplete(activityId,response.status);let content=data.content.trim();return content?{url,title:data.title,content,error:null}:null}var CHANGED=Symbol("changed"),CLASS_LIST=Symbol("classList"),CUSTOM_ELEMENTS=Symbol("CustomElements"),CONTENT=Symbol("content"),DATASET=Symbol("dataset"),DOCTYPE=Symbol("doctype"),DOM_PARSER=Symbol("DOMParser"),END=Symbol("end"),EVENT_TARGET=Symbol("EventTarget"),GLOBALS=Symbol("globals"),IMAGE=Symbol("image"),MIME=Symbol("mime"),MUTATION_OBSERVER=Symbol("MutationObserver"),NEXT=Symbol("next"),OWNER_ELEMENT=Symbol("ownerElement"),PREV=Symbol("prev"),PRIVATE=Symbol("private"),SHEET=Symbol("sheet"),START=Symbol("start"),STYLE=Symbol("style"),UPGRADE=Symbol("upgrade"),VALUE=Symbol("value");var esm_exports3={};__export(esm_exports3,{DefaultHandler:()=>DomHandler,DomHandler:()=>DomHandler,DomUtils:()=>esm_exports2,ElementType:()=>esm_exports,Parser:()=>Parser,QuoteType:()=>QuoteType,Tokenizer:()=>Tokenizer,createDocumentStream:()=>createDocumentStream,createDomStream:()=>createDomStream,getFeed:()=>getFeed,parseDOM:()=>parseDOM,parseDocument:()=>parseDocument,parseFeed:()=>parseFeed});var _a,decodeMap=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),fromCodePoint=(_a=String.fromCodePoint)!==null&&_a!==void 0?_a:(codePoint=>{let output="";return codePoint>65535&&(codePoint-=65536,output+=String.fromCharCode(codePoint>>>10&1023|55296),codePoint=56320|codePoint&1023),output+=String.fromCharCode(codePoint),output});function replaceCodePoint(codePoint){var _a3;return codePoint>=55296&&codePoint<=57343||codePoint>1114111?65533:(_a3=decodeMap.get(codePoint))!==null&&_a3!==void 0?_a3:codePoint}function decodeBase64(input){let binary=typeof atob=="function"?atob(input):typeof Buffer.from=="function"?Buffer.from(input,"base64").toString("binary"):new Buffer(input,"base64").toString("binary"),evenLength=binary.length&-2,out=new Uint16Array(evenLength/2);for(let index=0,outIndex=0;index<evenLength;index+=2){let lo=binary.charCodeAt(index),hi=binary.charCodeAt(index+1);out[outIndex++]=lo|hi<<8}return out}var htmlDecodeTree=decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var xmlDecodeTree=decodeBase64("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");var BinTrieFlags;(function(BinTrieFlags3){BinTrieFlags3[BinTrieFlags3.VALUE_LENGTH=49152]="VALUE_LENGTH",BinTrieFlags3[BinTrieFlags3.FLAG13=8192]="FLAG13",BinTrieFlags3[BinTrieFlags3.BRANCH_LENGTH=8064]="BRANCH_LENGTH",BinTrieFlags3[BinTrieFlags3.JUMP_TABLE=127]="JUMP_TABLE"})(BinTrieFlags||(BinTrieFlags={}));var CharCodes;(function(CharCodes4){CharCodes4[CharCodes4.NUM=35]="NUM",CharCodes4[CharCodes4.SEMI=59]="SEMI",CharCodes4[CharCodes4.EQUALS=61]="EQUALS",CharCodes4[CharCodes4.ZERO=48]="ZERO",CharCodes4[CharCodes4.NINE=57]="NINE",CharCodes4[CharCodes4.LOWER_A=97]="LOWER_A",CharCodes4[CharCodes4.LOWER_F=102]="LOWER_F",CharCodes4[CharCodes4.LOWER_X=120]="LOWER_X",CharCodes4[CharCodes4.LOWER_Z=122]="LOWER_Z",CharCodes4[CharCodes4.UPPER_A=65]="UPPER_A",CharCodes4[CharCodes4.UPPER_F=70]="UPPER_F",CharCodes4[CharCodes4.UPPER_Z=90]="UPPER_Z"})(CharCodes||(CharCodes={}));var TO_LOWER_BIT=32;function isNumber(code){return code>=CharCodes.ZERO&&code<=CharCodes.NINE}function isHexadecimalCharacter(code){return code>=CharCodes.UPPER_A&&code<=CharCodes.UPPER_F||code>=CharCodes.LOWER_A&&code<=CharCodes.LOWER_F}function isAsciiAlphaNumeric(code){return code>=CharCodes.UPPER_A&&code<=CharCodes.UPPER_Z||code>=CharCodes.LOWER_A&&code<=CharCodes.LOWER_Z||isNumber(code)}function isEntityInAttributeInvalidEnd(code){return code===CharCodes.EQUALS||isAsciiAlphaNumeric(code)}var EntityDecoderState;(function(EntityDecoderState3){EntityDecoderState3[EntityDecoderState3.EntityStart=0]="EntityStart",EntityDecoderState3[EntityDecoderState3.NumericStart=1]="NumericStart",EntityDecoderState3[EntityDecoderState3.NumericDecimal=2]="NumericDecimal",EntityDecoderState3[EntityDecoderState3.NumericHex=3]="NumericHex",EntityDecoderState3[EntityDecoderState3.NamedEntity=4]="NamedEntity"})(EntityDecoderState||(EntityDecoderState={}));var DecodingMode;(function(DecodingMode3){DecodingMode3[DecodingMode3.Legacy=0]="Legacy",DecodingMode3[DecodingMode3.Strict=1]="Strict",DecodingMode3[DecodingMode3.Attribute=2]="Attribute"})(DecodingMode||(DecodingMode={}));var EntityDecoder=class{constructor(decodeTree,emitCodePoint,errors){this.decodeTree=decodeTree,this.emitCodePoint=emitCodePoint,this.errors=errors,this.state=EntityDecoderState.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=DecodingMode.Strict,this.runConsumed=0}startEntity(decodeMode){this.decodeMode=decodeMode,this.state=EntityDecoderState.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(input,offset){switch(this.state){case EntityDecoderState.EntityStart:return input.charCodeAt(offset)===CharCodes.NUM?(this.state=EntityDecoderState.NumericStart,this.consumed+=1,this.stateNumericStart(input,offset+1)):(this.state=EntityDecoderState.NamedEntity,this.stateNamedEntity(input,offset));case EntityDecoderState.NumericStart:return this.stateNumericStart(input,offset);case EntityDecoderState.NumericDecimal:return this.stateNumericDecimal(input,offset);case EntityDecoderState.NumericHex:return this.stateNumericHex(input,offset);case EntityDecoderState.NamedEntity:return this.stateNamedEntity(input,offset)}}stateNumericStart(input,offset){return offset>=input.length?-1:(input.charCodeAt(offset)|TO_LOWER_BIT)===CharCodes.LOWER_X?(this.state=EntityDecoderState.NumericHex,this.consumed+=1,this.stateNumericHex(input,offset+1)):(this.state=EntityDecoderState.NumericDecimal,this.stateNumericDecimal(input,offset))}stateNumericHex(input,offset){for(;offset<input.length;){let char=input.charCodeAt(offset);if(isNumber(char)||isHexadecimalCharacter(char)){let digit=char<=CharCodes.NINE?char-CharCodes.ZERO:(char|TO_LOWER_BIT)-CharCodes.LOWER_A+10;this.result=this.result*16+digit,this.consumed++,offset++}else return this.emitNumericEntity(char,3)}return-1}stateNumericDecimal(input,offset){for(;offset<input.length;){let char=input.charCodeAt(offset);if(isNumber(char))this.result=this.result*10+(char-CharCodes.ZERO),this.consumed++,offset++;else return this.emitNumericEntity(char,2)}return-1}emitNumericEntity(lastCp,expectedLength){var _a3;if(this.consumed<=expectedLength)return(_a3=this.errors)===null||_a3===void 0||_a3.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(lastCp===CharCodes.SEMI)this.consumed+=1;else if(this.decodeMode===DecodingMode.Strict)return 0;return this.emitCodePoint(replaceCodePoint(this.result),this.consumed),this.errors&&(lastCp!==CharCodes.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(input,offset){let{decodeTree}=this,current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14;for(;offset<input.length;){if(valueLength===0&&(current&BinTrieFlags.FLAG13)!==0){let runLength=(current&BinTrieFlags.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let firstChar=current&BinTrieFlags.JUMP_TABLE;if(input.charCodeAt(offset)!==firstChar)return this.result===0?0:this.emitNotTerminatedNamedEntity();offset++,this.excess++,this.runConsumed++}for(;this.runConsumed<runLength;){if(offset>=input.length)return-1;let charIndexInPacked=this.runConsumed-1,packedWord=decodeTree[this.treeIndex+1+(charIndexInPacked>>1)],expectedChar=charIndexInPacked%2===0?packedWord&255:packedWord>>8&255;if(input.charCodeAt(offset)!==expectedChar)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();offset++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(runLength>>1),current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14}if(offset>=input.length)break;let char=input.charCodeAt(offset);if(char===CharCodes.SEMI&&valueLength!==0&&(current&BinTrieFlags.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,valueLength,this.consumed+this.excess);if(this.treeIndex=determineBranch(decodeTree,current,this.treeIndex+Math.max(1,valueLength),char),this.treeIndex<0)return this.result===0||this.decodeMode===DecodingMode.Attribute&&(valueLength===0||isEntityInAttributeInvalidEnd(char))?0:this.emitNotTerminatedNamedEntity();if(current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags.VALUE_LENGTH)>>14,valueLength!==0){if(char===CharCodes.SEMI)return this.emitNamedEntityData(this.treeIndex,valueLength,this.consumed+this.excess);this.decodeMode!==DecodingMode.Strict&&(current&BinTrieFlags.FLAG13)===0&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}offset++,this.excess++}return-1}emitNotTerminatedNamedEntity(){var _a3;let{result,decodeTree}=this,valueLength=(decodeTree[result]&BinTrieFlags.VALUE_LENGTH)>>14;return this.emitNamedEntityData(result,valueLength,this.consumed),(_a3=this.errors)===null||_a3===void 0||_a3.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(result,valueLength,consumed){let{decodeTree}=this;return this.emitCodePoint(valueLength===1?decodeTree[result]&~(BinTrieFlags.VALUE_LENGTH|BinTrieFlags.FLAG13):decodeTree[result+1],consumed),valueLength===3&&this.emitCodePoint(decodeTree[result+2],consumed),consumed}end(){var _a3;switch(this.state){case EntityDecoderState.NamedEntity:return this.result!==0&&(this.decodeMode!==DecodingMode.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case EntityDecoderState.NumericDecimal:return this.emitNumericEntity(0,2);case EntityDecoderState.NumericHex:return this.emitNumericEntity(0,3);case EntityDecoderState.NumericStart:return(_a3=this.errors)===null||_a3===void 0||_a3.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case EntityDecoderState.EntityStart:return 0}}};function determineBranch(decodeTree,current,nodeIndex,char){let branchCount=(current&BinTrieFlags.BRANCH_LENGTH)>>7,jumpOffset=current&BinTrieFlags.JUMP_TABLE;if(branchCount===0)return jumpOffset!==0&&char===jumpOffset?nodeIndex:-1;if(jumpOffset){let value=char-jumpOffset;return value<0||value>=branchCount?-1:decodeTree[nodeIndex+value]-1}let packedKeySlots=branchCount+1>>1,lo=0,hi=branchCount-1;for(;lo<=hi;){let mid=lo+hi>>>1,slot=mid>>1,midKey=decodeTree[nodeIndex+slot]>>(mid&1)*8&255;if(midKey<char)lo=mid+1;else if(midKey>char)hi=mid-1;else return decodeTree[nodeIndex+packedKeySlots+mid]}return-1}var CharCodes2;(function(CharCodes4){CharCodes4[CharCodes4.Tab=9]="Tab",CharCodes4[CharCodes4.NewLine=10]="NewLine",CharCodes4[CharCodes4.FormFeed=12]="FormFeed",CharCodes4[CharCodes4.CarriageReturn=13]="CarriageReturn",CharCodes4[CharCodes4.Space=32]="Space",CharCodes4[CharCodes4.ExclamationMark=33]="ExclamationMark",CharCodes4[CharCodes4.Number=35]="Number",CharCodes4[CharCodes4.Amp=38]="Amp",CharCodes4[CharCodes4.SingleQuote=39]="SingleQuote",CharCodes4[CharCodes4.DoubleQuote=34]="DoubleQuote",CharCodes4[CharCodes4.Dash=45]="Dash",CharCodes4[CharCodes4.Slash=47]="Slash",CharCodes4[CharCodes4.Zero=48]="Zero",CharCodes4[CharCodes4.Nine=57]="Nine",CharCodes4[CharCodes4.Semi=59]="Semi",CharCodes4[CharCodes4.Lt=60]="Lt",CharCodes4[CharCodes4.Eq=61]="Eq",CharCodes4[CharCodes4.Gt=62]="Gt",CharCodes4[CharCodes4.Questionmark=63]="Questionmark",CharCodes4[CharCodes4.UpperA=65]="UpperA",CharCodes4[CharCodes4.LowerA=97]="LowerA",CharCodes4[CharCodes4.UpperF=70]="UpperF",CharCodes4[CharCodes4.LowerF=102]="LowerF",CharCodes4[CharCodes4.UpperZ=90]="UpperZ",CharCodes4[CharCodes4.LowerZ=122]="LowerZ",CharCodes4[CharCodes4.LowerX=120]="LowerX",CharCodes4[CharCodes4.OpeningSquareBracket=91]="OpeningSquareBracket"})(CharCodes2||(CharCodes2={}));var State;(function(State2){State2[State2.Text=1]="Text",State2[State2.BeforeTagName=2]="BeforeTagName",State2[State2.InTagName=3]="InTagName",State2[State2.InSelfClosingTag=4]="InSelfClosingTag",State2[State2.BeforeClosingTagName=5]="BeforeClosingTagName",State2[State2.InClosingTagName=6]="InClosingTagName",State2[State2.AfterClosingTagName=7]="AfterClosingTagName",State2[State2.BeforeAttributeName=8]="BeforeAttributeName",State2[State2.InAttributeName=9]="InAttributeName",State2[State2.AfterAttributeName=10]="AfterAttributeName",State2[State2.BeforeAttributeValue=11]="BeforeAttributeValue",State2[State2.InAttributeValueDq=12]="InAttributeValueDq",State2[State2.InAttributeValueSq=13]="InAttributeValueSq",State2[State2.InAttributeValueNq=14]="InAttributeValueNq",State2[State2.BeforeDeclaration=15]="BeforeDeclaration",State2[State2.InDeclaration=16]="InDeclaration",State2[State2.InProcessingInstruction=17]="InProcessingInstruction",State2[State2.BeforeComment=18]="BeforeComment",State2[State2.CDATASequence=19]="CDATASequence",State2[State2.InSpecialComment=20]="InSpecialComment",State2[State2.InCommentLike=21]="InCommentLike",State2[State2.BeforeSpecialS=22]="BeforeSpecialS",State2[State2.BeforeSpecialT=23]="BeforeSpecialT",State2[State2.SpecialStartSequence=24]="SpecialStartSequence",State2[State2.InSpecialTag=25]="InSpecialTag",State2[State2.InEntity=26]="InEntity"})(State||(State={}));function isWhitespace(c){return c===CharCodes2.Space||c===CharCodes2.NewLine||c===CharCodes2.Tab||c===CharCodes2.FormFeed||c===CharCodes2.CarriageReturn}function isEndOfTagSection(c){return c===CharCodes2.Slash||c===CharCodes2.Gt||isWhitespace(c)}function isASCIIAlpha(c){return c>=CharCodes2.LowerA&&c<=CharCodes2.LowerZ||c>=CharCodes2.UpperA&&c<=CharCodes2.UpperZ}var QuoteType;(function(QuoteType2){QuoteType2[QuoteType2.NoValue=0]="NoValue",QuoteType2[QuoteType2.Unquoted=1]="Unquoted",QuoteType2[QuoteType2.Single=2]="Single",QuoteType2[QuoteType2.Double=3]="Double"})(QuoteType||(QuoteType={}));var Sequences={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97]),XmpEnd:new Uint8Array([60,47,120,109,112])},Tokenizer=class{constructor({xmlMode=!1,decodeEntities=!0},cbs){this.cbs=cbs,this.state=State.Text,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=State.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.currentSequence=void 0,this.sequenceIndex=0,this.xmlMode=xmlMode,this.decodeEntities=decodeEntities,this.entityDecoder=new EntityDecoder(xmlMode?xmlDecodeTree:htmlDecodeTree,(cp,consumed)=>this.emitCodePoint(cp,consumed))}reset(){this.state=State.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=State.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(chunk){this.offset+=this.buffer.length,this.buffer=chunk,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.index<this.buffer.length+this.offset&&this.parse()}stateText(c){c===CharCodes2.Lt||!this.decodeEntities&&this.fastForwardTo(CharCodes2.Lt)?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=State.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&c===CharCodes2.Amp&&this.startEntity()}stateSpecialStartSequence(c){let isEnd=this.sequenceIndex===this.currentSequence.length;if(!(isEnd?isEndOfTagSection(c):(c|32)===this.currentSequence[this.sequenceIndex]))this.isSpecial=!1;else if(!isEnd){this.sequenceIndex++;return}this.sequenceIndex=0,this.state=State.InTagName,this.stateInTagName(c)}stateInSpecialTag(c){if(this.sequenceIndex===this.currentSequence.length){if(c===CharCodes2.Gt||isWhitespace(c)){let endOfText=this.index-this.currentSequence.length;if(this.sectionStart<endOfText){let actualIndex=this.index;this.index=endOfText,this.cbs.ontext(this.sectionStart,endOfText),this.index=actualIndex}this.isSpecial=!1,this.sectionStart=endOfText+2,this.stateInClosingTagName(c);return}this.sequenceIndex=0}(c|32)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:this.sequenceIndex===0?this.currentSequence===Sequences.TitleEnd?this.decodeEntities&&c===CharCodes2.Amp&&this.startEntity():this.fastForwardTo(CharCodes2.Lt)&&(this.sequenceIndex=1):this.sequenceIndex=+(c===CharCodes2.Lt)}stateCDATASequence(c){c===Sequences.Cdata[this.sequenceIndex]?++this.sequenceIndex===Sequences.Cdata.length&&(this.state=State.InCommentLike,this.currentSequence=Sequences.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=State.InDeclaration,this.stateInDeclaration(c))}fastForwardTo(c){for(;++this.index<this.buffer.length+this.offset;)if(this.buffer.charCodeAt(this.index-this.offset)===c)return!0;return this.index=this.buffer.length+this.offset-1,!1}stateInCommentLike(c){c===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===Sequences.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index,2):this.cbs.oncomment(this.sectionStart,this.index,2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=State.Text):this.sequenceIndex===0?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):c!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}isTagStartChar(c){return this.xmlMode?!isEndOfTagSection(c):isASCIIAlpha(c)}startSpecial(sequence,offset){this.isSpecial=!0,this.currentSequence=sequence,this.sequenceIndex=offset,this.state=State.SpecialStartSequence}stateBeforeTagName(c){if(c===CharCodes2.ExclamationMark)this.state=State.BeforeDeclaration,this.sectionStart=this.index+1;else if(c===CharCodes2.Questionmark)this.state=State.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(c)){let lower=c|32;this.sectionStart=this.index,this.xmlMode?this.state=State.InTagName:lower===Sequences.ScriptEnd[2]?this.state=State.BeforeSpecialS:lower===Sequences.TitleEnd[2]||lower===Sequences.XmpEnd[2]?this.state=State.BeforeSpecialT:this.state=State.InTagName}else c===CharCodes2.Slash?this.state=State.BeforeClosingTagName:(this.state=State.Text,this.stateText(c))}stateInTagName(c){isEndOfTagSection(c)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=State.BeforeAttributeName,this.stateBeforeAttributeName(c))}stateBeforeClosingTagName(c){isWhitespace(c)||(c===CharCodes2.Gt?this.state=State.Text:(this.state=this.isTagStartChar(c)?State.InClosingTagName:State.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(c){(c===CharCodes2.Gt||isWhitespace(c))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=State.AfterClosingTagName,this.stateAfterClosingTagName(c))}stateAfterClosingTagName(c){(c===CharCodes2.Gt||this.fastForwardTo(CharCodes2.Gt))&&(this.state=State.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(c){c===CharCodes2.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=State.InSpecialTag,this.sequenceIndex=0):this.state=State.Text,this.sectionStart=this.index+1):c===CharCodes2.Slash?this.state=State.InSelfClosingTag:isWhitespace(c)||(this.state=State.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(c){c===CharCodes2.Gt?(this.cbs.onselfclosingtag(this.index),this.state=State.Text,this.sectionStart=this.index+1,this.isSpecial=!1):isWhitespace(c)||(this.state=State.BeforeAttributeName,this.stateBeforeAttributeName(c))}stateInAttributeName(c){(c===CharCodes2.Eq||isEndOfTagSection(c))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=this.index,this.state=State.AfterAttributeName,this.stateAfterAttributeName(c))}stateAfterAttributeName(c){c===CharCodes2.Eq?this.state=State.BeforeAttributeValue:c===CharCodes2.Slash||c===CharCodes2.Gt?(this.cbs.onattribend(QuoteType.NoValue,this.sectionStart),this.sectionStart=-1,this.state=State.BeforeAttributeName,this.stateBeforeAttributeName(c)):isWhitespace(c)||(this.cbs.onattribend(QuoteType.NoValue,this.sectionStart),this.state=State.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(c){c===CharCodes2.DoubleQuote?(this.state=State.InAttributeValueDq,this.sectionStart=this.index+1):c===CharCodes2.SingleQuote?(this.state=State.InAttributeValueSq,this.sectionStart=this.index+1):isWhitespace(c)||(this.sectionStart=this.index,this.state=State.InAttributeValueNq,this.stateInAttributeValueNoQuotes(c))}handleInAttributeValue(c,quote){c===quote||!this.decodeEntities&&this.fastForwardTo(quote)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(quote===CharCodes2.DoubleQuote?QuoteType.Double:QuoteType.Single,this.index+1),this.state=State.BeforeAttributeName):this.decodeEntities&&c===CharCodes2.Amp&&this.startEntity()}stateInAttributeValueDoubleQuotes(c){this.handleInAttributeValue(c,CharCodes2.DoubleQuote)}stateInAttributeValueSingleQuotes(c){this.handleInAttributeValue(c,CharCodes2.SingleQuote)}stateInAttributeValueNoQuotes(c){isWhitespace(c)||c===CharCodes2.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(QuoteType.Unquoted,this.index),this.state=State.BeforeAttributeName,this.stateBeforeAttributeName(c)):this.decodeEntities&&c===CharCodes2.Amp&&this.startEntity()}stateBeforeDeclaration(c){c===CharCodes2.OpeningSquareBracket?(this.state=State.CDATASequence,this.sequenceIndex=0):this.state=c===CharCodes2.Dash?State.BeforeComment:State.InDeclaration}stateInDeclaration(c){(c===CharCodes2.Gt||this.fastForwardTo(CharCodes2.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=State.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(c){(c===CharCodes2.Gt||this.fastForwardTo(CharCodes2.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=State.Text,this.sectionStart=this.index+1)}stateBeforeComment(c){c===CharCodes2.Dash?(this.state=State.InCommentLike,this.currentSequence=Sequences.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=State.InDeclaration}stateInSpecialComment(c){(c===CharCodes2.Gt||this.fastForwardTo(CharCodes2.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=State.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(c){let lower=c|32;lower===Sequences.ScriptEnd[3]?this.startSpecial(Sequences.ScriptEnd,4):lower===Sequences.StyleEnd[3]?this.startSpecial(Sequences.StyleEnd,4):(this.state=State.InTagName,this.stateInTagName(c))}stateBeforeSpecialT(c){switch(c|32){case Sequences.TitleEnd[3]:{this.startSpecial(Sequences.TitleEnd,4);break}case Sequences.TextareaEnd[3]:{this.startSpecial(Sequences.TextareaEnd,4);break}case Sequences.XmpEnd[3]:{this.startSpecial(Sequences.XmpEnd,4);break}default:this.state=State.InTagName,this.stateInTagName(c)}}startEntity(){this.baseState=this.state,this.state=State.InEntity,this.entityStart=this.index,this.entityDecoder.startEntity(this.xmlMode?DecodingMode.Strict:this.baseState===State.Text||this.baseState===State.InSpecialTag?DecodingMode.Legacy:DecodingMode.Attribute)}stateInEntity(){let indexInBuffer=this.index-this.offset,length=this.entityDecoder.write(this.buffer,indexInBuffer);if(length>=0)this.state=this.baseState,length===0&&(this.index-=1);else{if(indexInBuffer<this.buffer.length&&this.buffer.charCodeAt(indexInBuffer)===CharCodes2.Amp){this.state=this.baseState,this.index-=1;return}this.index=this.offset+this.buffer.length-1}}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===State.Text||this.state===State.InSpecialTag&&this.sequenceIndex===0?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(this.state===State.InAttributeValueDq||this.state===State.InAttributeValueSq||this.state===State.InAttributeValueNq)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index<this.buffer.length+this.offset&&this.running}parse(){for(;this.shouldContinue();){let c=this.buffer.charCodeAt(this.index-this.offset);switch(this.state){case State.Text:{this.stateText(c);break}case State.SpecialStartSequence:{this.stateSpecialStartSequence(c);break}case State.InSpecialTag:{this.stateInSpecialTag(c);break}case State.CDATASequence:{this.stateCDATASequence(c);break}case State.InAttributeValueDq:{this.stateInAttributeValueDoubleQuotes(c);break}case State.InAttributeName:{this.stateInAttributeName(c);break}case State.InCommentLike:{this.stateInCommentLike(c);break}case State.InSpecialComment:{this.stateInSpecialComment(c);break}case State.BeforeAttributeName:{this.stateBeforeAttributeName(c);break}case State.InTagName:{this.stateInTagName(c);break}case State.InClosingTagName:{this.stateInClosingTagName(c);break}case State.BeforeTagName:{this.stateBeforeTagName(c);break}case State.AfterAttributeName:{this.stateAfterAttributeName(c);break}case State.InAttributeValueSq:{this.stateInAttributeValueSingleQuotes(c);break}case State.BeforeAttributeValue:{this.stateBeforeAttributeValue(c);break}case State.BeforeClosingTagName:{this.stateBeforeClosingTagName(c);break}case State.AfterClosingTagName:{this.stateAfterClosingTagName(c);break}case State.BeforeSpecialS:{this.stateBeforeSpecialS(c);break}case State.BeforeSpecialT:{this.stateBeforeSpecialT(c);break}case State.InAttributeValueNq:{this.stateInAttributeValueNoQuotes(c);break}case State.InSelfClosingTag:{this.stateInSelfClosingTag(c);break}case State.InDeclaration:{this.stateInDeclaration(c);break}case State.BeforeDeclaration:{this.stateBeforeDeclaration(c);break}case State.BeforeComment:{this.stateBeforeComment(c);break}case State.InProcessingInstruction:{this.stateInProcessingInstruction(c);break}case State.InEntity:{this.stateInEntity();break}}this.index++}this.cleanup()}finish(){this.state===State.InEntity&&(this.entityDecoder.end(),this.state=this.baseState),this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){let endIndex=this.buffer.length+this.offset;this.sectionStart>=endIndex||(this.state===State.InCommentLike?this.currentSequence===Sequences.CdataEnd?this.cbs.oncdata(this.sectionStart,endIndex,0):this.cbs.oncomment(this.sectionStart,endIndex,0):this.state===State.InTagName||this.state===State.BeforeAttributeName||this.state===State.BeforeAttributeValue||this.state===State.AfterAttributeName||this.state===State.InAttributeName||this.state===State.InAttributeValueSq||this.state===State.InAttributeValueDq||this.state===State.InAttributeValueNq||this.state===State.InClosingTagName||this.cbs.ontext(this.sectionStart,endIndex))}emitCodePoint(cp,consumed){this.baseState!==State.Text&&this.baseState!==State.InSpecialTag?(this.sectionStart<this.entityStart&&this.cbs.onattribdata(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+consumed,this.index=this.sectionStart-1,this.cbs.onattribentity(cp)):(this.sectionStart<this.entityStart&&this.cbs.ontext(this.sectionStart,this.entityStart),this.sectionStart=this.entityStart+consumed,this.index=this.sectionStart-1,this.cbs.ontextentity(cp,this.sectionStart))}};var formTags=new Set(["input","option","optgroup","select","button","datalist","textarea"]),pTag=new Set(["p"]),tableSectionTags=new Set(["thead","tbody"]),ddtTags=new Set(["dd","dt"]),rtpTags=new Set(["rt","rp"]),openImpliesClose=new Map([["tr",new Set(["tr","th","td"])],["th",new Set(["th"])],["td",new Set(["thead","th","td"])],["body",new Set(["head","link","script"])],["li",new Set(["li"])],["p",pTag],["h1",pTag],["h2",pTag],["h3",pTag],["h4",pTag],["h5",pTag],["h6",pTag],["select",formTags],["input",formTags],["output",formTags],["button",formTags],["datalist",formTags],["textarea",formTags],["option",new Set(["option"])],["optgroup",new Set(["optgroup","option"])],["dd",ddtTags],["dt",ddtTags],["address",pTag],["article",pTag],["aside",pTag],["blockquote",pTag],["details",pTag],["div",pTag],["dl",pTag],["fieldset",pTag],["figcaption",pTag],["figure",pTag],["footer",pTag],["form",pTag],["header",pTag],["hr",pTag],["main",pTag],["nav",pTag],["ol",pTag],["pre",pTag],["section",pTag],["table",pTag],["ul",pTag],["rt",rtpTags],["rp",rtpTags],["tbody",tableSectionTags],["tfoot",tableSectionTags]]),voidElements=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),foreignContextElements=new Set(["math","svg"]),htmlIntegrationElements=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignobject","desc","title"]),reNameEnd=/\s|\//,Parser=class{constructor(cbs,options={}){var _a3,_b,_c,_d,_e,_f;this.options=options,this.startIndex=0,this.endIndex=0,this.openTagStart=0,this.tagname="",this.attribname="",this.attribvalue="",this.attribs=null,this.stack=[],this.buffers=[],this.bufferOffset=0,this.writeIndex=0,this.ended=!1,this.cbs=cbs??{},this.htmlMode=!this.options.xmlMode,this.lowerCaseTagNames=(_a3=options.lowerCaseTags)!==null&&_a3!==void 0?_a3:this.htmlMode,this.lowerCaseAttributeNames=(_b=options.lowerCaseAttributeNames)!==null&&_b!==void 0?_b:this.htmlMode,this.recognizeSelfClosing=(_c=options.recognizeSelfClosing)!==null&&_c!==void 0?_c:!this.htmlMode,this.tokenizer=new((_d=options.Tokenizer)!==null&&_d!==void 0?_d:Tokenizer)(this.options,this),this.foreignContext=[!this.htmlMode],(_f=(_e=this.cbs).onparserinit)===null||_f===void 0||_f.call(_e,this)}ontext(start,endIndex){var _a3,_b;let data=this.getSlice(start,endIndex);this.endIndex=endIndex-1,(_b=(_a3=this.cbs).ontext)===null||_b===void 0||_b.call(_a3,data),this.startIndex=endIndex}ontextentity(cp,endIndex){var _a3,_b;this.endIndex=endIndex-1,(_b=(_a3=this.cbs).ontext)===null||_b===void 0||_b.call(_a3,fromCodePoint(cp)),this.startIndex=endIndex}isVoidElement(name){return this.htmlMode&&voidElements.has(name)}onopentagname(start,endIndex){this.endIndex=endIndex;let name=this.getSlice(start,endIndex);this.lowerCaseTagNames&&(name=name.toLowerCase()),this.emitOpenTag(name)}emitOpenTag(name){var _a3,_b,_c,_d;this.openTagStart=this.startIndex,this.tagname=name;let impliesClose=this.htmlMode&&openImpliesClose.get(name);if(impliesClose)for(;this.stack.length>0&&impliesClose.has(this.stack[0]);){let element=this.stack.shift();(_b=(_a3=this.cbs).onclosetag)===null||_b===void 0||_b.call(_a3,element,!0)}this.isVoidElement(name)||(this.stack.unshift(name),this.htmlMode&&(foreignContextElements.has(name)?this.foreignContext.unshift(!0):htmlIntegrationElements.has(name)&&this.foreignContext.unshift(!1))),(_d=(_c=this.cbs).onopentagname)===null||_d===void 0||_d.call(_c,name),this.cbs.onopentag&&(this.attribs={})}endOpenTag(isImplied){var _a3,_b;this.startIndex=this.openTagStart,this.attribs&&((_b=(_a3=this.cbs).onopentag)===null||_b===void 0||_b.call(_a3,this.tagname,this.attribs,isImplied),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(endIndex){this.endIndex=endIndex,this.endOpenTag(!1),this.startIndex=endIndex+1}onclosetag(start,endIndex){var _a3,_b,_c,_d,_e,_f,_g,_h;this.endIndex=endIndex;let name=this.getSlice(start,endIndex);if(this.lowerCaseTagNames&&(name=name.toLowerCase()),this.htmlMode&&(foreignContextElements.has(name)||htmlIntegrationElements.has(name))&&this.foreignContext.shift(),this.isVoidElement(name))this.htmlMode&&name==="br"&&((_d=(_c=this.cbs).onopentagname)===null||_d===void 0||_d.call(_c,"br"),(_f=(_e=this.cbs).onopentag)===null||_f===void 0||_f.call(_e,"br",{},!0),(_h=(_g=this.cbs).onclosetag)===null||_h===void 0||_h.call(_g,"br",!1));else{let pos=this.stack.indexOf(name);if(pos!==-1)for(let index=0;index<=pos;index++){let element=this.stack.shift();(_b=(_a3=this.cbs).onclosetag)===null||_b===void 0||_b.call(_a3,element,index!==pos)}else this.htmlMode&&name==="p"&&(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=endIndex+1}onselfclosingtag(endIndex){this.endIndex=endIndex,this.recognizeSelfClosing||this.foreignContext[0]?(this.closeCurrentTag(!1),this.startIndex=endIndex+1):this.onopentagend(endIndex)}closeCurrentTag(isOpenImplied){var _a3,_b;let name=this.tagname;this.endOpenTag(isOpenImplied),this.stack[0]===name&&((_b=(_a3=this.cbs).onclosetag)===null||_b===void 0||_b.call(_a3,name,!isOpenImplied),this.stack.shift())}onattribname(start,endIndex){this.startIndex=start;let name=this.getSlice(start,endIndex);this.attribname=this.lowerCaseAttributeNames?name.toLowerCase():name}onattribdata(start,endIndex){this.attribvalue+=this.getSlice(start,endIndex)}onattribentity(cp){this.attribvalue+=fromCodePoint(cp)}onattribend(quote,endIndex){var _a3,_b;this.endIndex=endIndex,(_b=(_a3=this.cbs).onattribute)===null||_b===void 0||_b.call(_a3,this.attribname,this.attribvalue,quote===QuoteType.Double?'"':quote===QuoteType.Single?"'":quote===QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(value){let index=value.search(reNameEnd),name=index<0?value:value.substr(0,index);return this.lowerCaseTagNames&&(name=name.toLowerCase()),name}ondeclaration(start,endIndex){this.endIndex=endIndex;let value=this.getSlice(start,endIndex);if(this.cbs.onprocessinginstruction){let name=this.getInstructionName(value);this.cbs.onprocessinginstruction(`!${name}`,`!${value}`)}this.startIndex=endIndex+1}onprocessinginstruction(start,endIndex){this.endIndex=endIndex;let value=this.getSlice(start,endIndex);if(this.cbs.onprocessinginstruction){let name=this.getInstructionName(value);this.cbs.onprocessinginstruction(`?${name}`,`?${value}`)}this.startIndex=endIndex+1}oncomment(start,endIndex,offset){var _a3,_b,_c,_d;this.endIndex=endIndex,(_b=(_a3=this.cbs).oncomment)===null||_b===void 0||_b.call(_a3,this.getSlice(start,endIndex-offset)),(_d=(_c=this.cbs).oncommentend)===null||_d===void 0||_d.call(_c),this.startIndex=endIndex+1}oncdata(start,endIndex,offset){var _a3,_b,_c,_d,_e,_f,_g,_h,_j,_k;this.endIndex=endIndex;let value=this.getSlice(start,endIndex-offset);!this.htmlMode||this.options.recognizeCDATA?((_b=(_a3=this.cbs).oncdatastart)===null||_b===void 0||_b.call(_a3),(_d=(_c=this.cbs).ontext)===null||_d===void 0||_d.call(_c,value),(_f=(_e=this.cbs).oncdataend)===null||_f===void 0||_f.call(_e)):((_h=(_g=this.cbs).oncomment)===null||_h===void 0||_h.call(_g,`[CDATA[${value}]]`),(_k=(_j=this.cbs).oncommentend)===null||_k===void 0||_k.call(_j)),this.startIndex=endIndex+1}onend(){var _a3,_b;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let index=0;index<this.stack.length;index++)this.cbs.onclosetag(this.stack[index],!0)}(_b=(_a3=this.cbs).onend)===null||_b===void 0||_b.call(_a3)}reset(){var _a3,_b,_c,_d;(_b=(_a3=this.cbs).onreset)===null||_b===void 0||_b.call(_a3),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,(_d=(_c=this.cbs).onparserinit)===null||_d===void 0||_d.call(_c,this),this.buffers.length=0,this.foreignContext.length=0,this.foreignContext.unshift(!this.htmlMode),this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(data){this.reset(),this.end(data)}getSlice(start,end){for(;start-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let slice=this.buffers[0].slice(start-this.bufferOffset,end-this.bufferOffset);for(;end-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),slice+=this.buffers[0].slice(0,end-this.bufferOffset);return slice}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(chunk){var _a3,_b;if(this.ended){(_b=(_a3=this.cbs).onerror)===null||_b===void 0||_b.call(_a3,new Error(".write() after done!"));return}this.buffers.push(chunk),this.tokenizer.running&&(this.tokenizer.write(chunk),this.writeIndex++)}end(chunk){var _a3,_b;if(this.ended){(_b=(_a3=this.cbs).onerror)===null||_b===void 0||_b.call(_a3,new Error(".end() after done!"));return}chunk&&this.write(chunk),this.ended=!0,this.tokenizer.end()}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex<this.buffers.length;)this.tokenizer.write(this.buffers[this.writeIndex++]);this.ended&&this.tokenizer.end()}parseChunk(chunk){this.write(chunk)}done(chunk){this.end(chunk)}};var esm_exports={};__export(esm_exports,{CDATA:()=>CDATA,Comment:()=>Comment,Directive:()=>Directive,Doctype:()=>Doctype,ElementType:()=>ElementType,Root:()=>Root,Script:()=>Script,Style:()=>Style,Tag:()=>Tag,Text:()=>Text,isTag:()=>isTag});var ElementType;(function(ElementType2){ElementType2.Root="root",ElementType2.Text="text",ElementType2.Directive="directive",ElementType2.Comment="comment",ElementType2.Script="script",ElementType2.Style="style",ElementType2.Tag="tag",ElementType2.CDATA="cdata",ElementType2.Doctype="doctype"})(ElementType||(ElementType={}));function isTag(elem){return elem.type===ElementType.Tag||elem.type===ElementType.Script||elem.type===ElementType.Style}var Root=ElementType.Root,Text=ElementType.Text,Directive=ElementType.Directive,Comment=ElementType.Comment,Script=ElementType.Script,Style=ElementType.Style,Tag=ElementType.Tag,CDATA=ElementType.CDATA,Doctype=ElementType.Doctype;var Node=class{constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(parent){this.parent=parent}get previousSibling(){return this.prev}set previousSibling(prev){this.prev=prev}get nextSibling(){return this.next}set nextSibling(next){this.next=next}cloneNode(recursive=!1){return cloneNode(this,recursive)}},DataNode=class extends Node{constructor(data){super(),this.data=data}get nodeValue(){return this.data}set nodeValue(data){this.data=data}},Text2=class extends DataNode{constructor(){super(...arguments),this.type=ElementType.Text}get nodeType(){return 3}},Comment2=class extends DataNode{constructor(){super(...arguments),this.type=ElementType.Comment}get nodeType(){return 8}},ProcessingInstruction=class extends DataNode{constructor(name,data){super(data),this.name=name,this.type=ElementType.Directive}get nodeType(){return 1}},NodeWithChildren=class extends Node{constructor(children){super(),this.children=children}get firstChild(){var _a3;return(_a3=this.children[0])!==null&&_a3!==void 0?_a3:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(children){this.children=children}},CDATA2=class extends NodeWithChildren{constructor(){super(...arguments),this.type=ElementType.CDATA}get nodeType(){return 4}},Document=class extends NodeWithChildren{constructor(){super(...arguments),this.type=ElementType.Root}get nodeType(){return 9}},Element=class extends NodeWithChildren{constructor(name,attribs,children=[],type=name==="script"?ElementType.Script:name==="style"?ElementType.Style:ElementType.Tag){super(children),this.name=name,this.attribs=attribs,this.type=type}get nodeType(){return 1}get tagName(){return this.name}set tagName(name){this.name=name}get attributes(){return Object.keys(this.attribs).map(name=>{var _a3,_b;return{name,value:this.attribs[name],namespace:(_a3=this["x-attribsNamespace"])===null||_a3===void 0?void 0:_a3[name],prefix:(_b=this["x-attribsPrefix"])===null||_b===void 0?void 0:_b[name]}})}};function isTag2(node){return isTag(node)}function isCDATA(node){return node.type===ElementType.CDATA}function isText(node){return node.type===ElementType.Text}function isComment(node){return node.type===ElementType.Comment}function isDirective(node){return node.type===ElementType.Directive}function isDocument(node){return node.type===ElementType.Root}function hasChildren(node){return Object.prototype.hasOwnProperty.call(node,"children")}function cloneNode(node,recursive=!1){let result;if(isText(node))result=new Text2(node.data);else if(isComment(node))result=new Comment2(node.data);else if(isTag2(node)){let children=recursive?cloneChildren(node.children):[],clone=new Element(node.name,{...node.attribs},children);children.forEach(child=>child.parent=clone),node.namespace!=null&&(clone.namespace=node.namespace),node["x-attribsNamespace"]&&(clone["x-attribsNamespace"]={...node["x-attribsNamespace"]}),node["x-attribsPrefix"]&&(clone["x-attribsPrefix"]={...node["x-attribsPrefix"]}),result=clone}else if(isCDATA(node)){let children=recursive?cloneChildren(node.children):[],clone=new CDATA2(children);children.forEach(child=>child.parent=clone),result=clone}else if(isDocument(node)){let children=recursive?cloneChildren(node.children):[],clone=new Document(children);children.forEach(child=>child.parent=clone),node["x-mode"]&&(clone["x-mode"]=node["x-mode"]),result=clone}else if(isDirective(node)){let instruction=new ProcessingInstruction(node.name,node.data);node["x-name"]!=null&&(instruction["x-name"]=node["x-name"],instruction["x-publicId"]=node["x-publicId"],instruction["x-systemId"]=node["x-systemId"]),result=instruction}else throw new Error(`Not implemented yet: ${node.type}`);return result.startIndex=node.startIndex,result.endIndex=node.endIndex,node.sourceCodeLocation!=null&&(result.sourceCodeLocation=node.sourceCodeLocation),result}function cloneChildren(childs){let children=childs.map(child=>cloneNode(child,!0));for(let i=1;i<children.length;i++)children[i].prev=children[i-1],children[i-1].next=children[i];return children}var defaultOpts={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},DomHandler=class{constructor(callback,options,elementCB){this.dom=[],this.root=new Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,typeof options=="function"&&(elementCB=options,options=defaultOpts),typeof callback=="object"&&(options=callback,callback=void 0),this.callback=callback??null,this.options=options??defaultOpts,this.elementCB=elementCB??null}onparserinit(parser){this.parser=parser}onreset(){this.dom=[],this.root=new Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(error){this.handleCallback(error)}onclosetag(){this.lastNode=null;let elem=this.tagStack.pop();this.options.withEndIndices&&(elem.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(elem)}onopentag(name,attribs){let type=this.options.xmlMode?ElementType.Tag:void 0,element=new Element(name,attribs,void 0,type);this.addNode(element),this.tagStack.push(element)}ontext(data){let{lastNode}=this;if(lastNode&&lastNode.type===ElementType.Text)lastNode.data+=data,this.options.withEndIndices&&(lastNode.endIndex=this.parser.endIndex);else{let node=new Text2(data);this.addNode(node),this.lastNode=node}}oncomment(data){if(this.lastNode&&this.lastNode.type===ElementType.Comment){this.lastNode.data+=data;return}let node=new Comment2(data);this.addNode(node),this.lastNode=node}oncommentend(){this.lastNode=null}oncdatastart(){let text=new Text2(""),node=new CDATA2([text]);this.addNode(node),text.parent=node,this.lastNode=text}oncdataend(){this.lastNode=null}onprocessinginstruction(name,data){let node=new ProcessingInstruction(name,data);this.addNode(node)}handleCallback(error){if(typeof this.callback=="function")this.callback(error,this.dom);else if(error)throw error}addNode(node){let parent=this.tagStack[this.tagStack.length-1],previousSibling2=parent.children[parent.children.length-1];this.options.withStartIndices&&(node.startIndex=this.parser.startIndex),this.options.withEndIndices&&(node.endIndex=this.parser.endIndex),parent.children.push(node),previousSibling2&&(node.prev=previousSibling2,previousSibling2.next=node),node.parent=parent,this.lastNode=null}};var esm_exports2={};__export(esm_exports2,{DocumentPosition:()=>DocumentPosition,append:()=>append,appendChild:()=>appendChild,compareDocumentPosition:()=>compareDocumentPosition,existsOne:()=>existsOne,filter:()=>filter,find:()=>find,findAll:()=>findAll,findOne:()=>findOne,findOneChild:()=>findOneChild,getAttributeValue:()=>getAttributeValue,getChildren:()=>getChildren,getElementById:()=>getElementById,getElements:()=>getElements,getElementsByClassName:()=>getElementsByClassName,getElementsByTagName:()=>getElementsByTagName,getElementsByTagType:()=>getElementsByTagType,getFeed:()=>getFeed,getInnerHTML:()=>getInnerHTML,getName:()=>getName,getOuterHTML:()=>getOuterHTML,getParent:()=>getParent,getSiblings:()=>getSiblings,getText:()=>getText,hasAttrib:()=>hasAttrib,hasChildren:()=>hasChildren,innerText:()=>innerText,isCDATA:()=>isCDATA,isComment:()=>isComment,isDocument:()=>isDocument,isTag:()=>isTag2,isText:()=>isText,nextElementSibling:()=>nextElementSibling,prepend:()=>prepend,prependChild:()=>prependChild,prevElementSibling:()=>prevElementSibling,removeElement:()=>removeElement,removeSubsets:()=>removeSubsets,replaceElement:()=>replaceElement,testElement:()=>testElement,textContent:()=>textContent,uniqueSort:()=>uniqueSort});var decode_data_html_default=new Uint16Array('\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(c=>c.charCodeAt(0)));var decode_data_xml_default=new Uint16Array("\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(c=>c.charCodeAt(0)));var _a2,decodeMap2=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),fromCodePoint2=(_a2=String.fromCodePoint)!==null&&_a2!==void 0?_a2:function(codePoint){let output="";return codePoint>65535&&(codePoint-=65536,output+=String.fromCharCode(codePoint>>>10&1023|55296),codePoint=56320|codePoint&1023),output+=String.fromCharCode(codePoint),output};function replaceCodePoint2(codePoint){var _a3;return codePoint>=55296&&codePoint<=57343||codePoint>1114111?65533:(_a3=decodeMap2.get(codePoint))!==null&&_a3!==void 0?_a3:codePoint}var CharCodes3;(function(CharCodes4){CharCodes4[CharCodes4.NUM=35]="NUM",CharCodes4[CharCodes4.SEMI=59]="SEMI",CharCodes4[CharCodes4.EQUALS=61]="EQUALS",CharCodes4[CharCodes4.ZERO=48]="ZERO",CharCodes4[CharCodes4.NINE=57]="NINE",CharCodes4[CharCodes4.LOWER_A=97]="LOWER_A",CharCodes4[CharCodes4.LOWER_F=102]="LOWER_F",CharCodes4[CharCodes4.LOWER_X=120]="LOWER_X",CharCodes4[CharCodes4.LOWER_Z=122]="LOWER_Z",CharCodes4[CharCodes4.UPPER_A=65]="UPPER_A",CharCodes4[CharCodes4.UPPER_F=70]="UPPER_F",CharCodes4[CharCodes4.UPPER_Z=90]="UPPER_Z"})(CharCodes3||(CharCodes3={}));var TO_LOWER_BIT2=32,BinTrieFlags2;(function(BinTrieFlags3){BinTrieFlags3[BinTrieFlags3.VALUE_LENGTH=49152]="VALUE_LENGTH",BinTrieFlags3[BinTrieFlags3.BRANCH_LENGTH=16256]="BRANCH_LENGTH",BinTrieFlags3[BinTrieFlags3.JUMP_TABLE=127]="JUMP_TABLE"})(BinTrieFlags2||(BinTrieFlags2={}));function isNumber2(code){return code>=CharCodes3.ZERO&&code<=CharCodes3.NINE}function isHexadecimalCharacter2(code){return code>=CharCodes3.UPPER_A&&code<=CharCodes3.UPPER_F||code>=CharCodes3.LOWER_A&&code<=CharCodes3.LOWER_F}function isAsciiAlphaNumeric2(code){return code>=CharCodes3.UPPER_A&&code<=CharCodes3.UPPER_Z||code>=CharCodes3.LOWER_A&&code<=CharCodes3.LOWER_Z||isNumber2(code)}function isEntityInAttributeInvalidEnd2(code){return code===CharCodes3.EQUALS||isAsciiAlphaNumeric2(code)}var EntityDecoderState2;(function(EntityDecoderState3){EntityDecoderState3[EntityDecoderState3.EntityStart=0]="EntityStart",EntityDecoderState3[EntityDecoderState3.NumericStart=1]="NumericStart",EntityDecoderState3[EntityDecoderState3.NumericDecimal=2]="NumericDecimal",EntityDecoderState3[EntityDecoderState3.NumericHex=3]="NumericHex",EntityDecoderState3[EntityDecoderState3.NamedEntity=4]="NamedEntity"})(EntityDecoderState2||(EntityDecoderState2={}));var DecodingMode2;(function(DecodingMode3){DecodingMode3[DecodingMode3.Legacy=0]="Legacy",DecodingMode3[DecodingMode3.Strict=1]="Strict",DecodingMode3[DecodingMode3.Attribute=2]="Attribute"})(DecodingMode2||(DecodingMode2={}));var EntityDecoder2=class{constructor(decodeTree,emitCodePoint,errors){this.decodeTree=decodeTree,this.emitCodePoint=emitCodePoint,this.errors=errors,this.state=EntityDecoderState2.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=DecodingMode2.Strict}startEntity(decodeMode){this.decodeMode=decodeMode,this.state=EntityDecoderState2.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(str,offset){switch(this.state){case EntityDecoderState2.EntityStart:return str.charCodeAt(offset)===CharCodes3.NUM?(this.state=EntityDecoderState2.NumericStart,this.consumed+=1,this.stateNumericStart(str,offset+1)):(this.state=EntityDecoderState2.NamedEntity,this.stateNamedEntity(str,offset));case EntityDecoderState2.NumericStart:return this.stateNumericStart(str,offset);case EntityDecoderState2.NumericDecimal:return this.stateNumericDecimal(str,offset);case EntityDecoderState2.NumericHex:return this.stateNumericHex(str,offset);case EntityDecoderState2.NamedEntity:return this.stateNamedEntity(str,offset)}}stateNumericStart(str,offset){return offset>=str.length?-1:(str.charCodeAt(offset)|TO_LOWER_BIT2)===CharCodes3.LOWER_X?(this.state=EntityDecoderState2.NumericHex,this.consumed+=1,this.stateNumericHex(str,offset+1)):(this.state=EntityDecoderState2.NumericDecimal,this.stateNumericDecimal(str,offset))}addToNumericResult(str,start,end,base){if(start!==end){let digitCount=end-start;this.result=this.result*Math.pow(base,digitCount)+parseInt(str.substr(start,digitCount),base),this.consumed+=digitCount}}stateNumericHex(str,offset){let startIdx=offset;for(;offset<str.length;){let char=str.charCodeAt(offset);if(isNumber2(char)||isHexadecimalCharacter2(char))offset+=1;else return this.addToNumericResult(str,startIdx,offset,16),this.emitNumericEntity(char,3)}return this.addToNumericResult(str,startIdx,offset,16),-1}stateNumericDecimal(str,offset){let startIdx=offset;for(;offset<str.length;){let char=str.charCodeAt(offset);if(isNumber2(char))offset+=1;else return this.addToNumericResult(str,startIdx,offset,10),this.emitNumericEntity(char,2)}return this.addToNumericResult(str,startIdx,offset,10),-1}emitNumericEntity(lastCp,expectedLength){var _a3;if(this.consumed<=expectedLength)return(_a3=this.errors)===null||_a3===void 0||_a3.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(lastCp===CharCodes3.SEMI)this.consumed+=1;else if(this.decodeMode===DecodingMode2.Strict)return 0;return this.emitCodePoint(replaceCodePoint2(this.result),this.consumed),this.errors&&(lastCp!==CharCodes3.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(str,offset){let{decodeTree}=this,current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags2.VALUE_LENGTH)>>14;for(;offset<str.length;offset++,this.excess++){let char=str.charCodeAt(offset);if(this.treeIndex=determineBranch2(decodeTree,current,this.treeIndex+Math.max(1,valueLength),char),this.treeIndex<0)return this.result===0||this.decodeMode===DecodingMode2.Attribute&&(valueLength===0||isEntityInAttributeInvalidEnd2(char))?0:this.emitNotTerminatedNamedEntity();if(current=decodeTree[this.treeIndex],valueLength=(current&BinTrieFlags2.VALUE_LENGTH)>>14,valueLength!==0){if(char===CharCodes3.SEMI)return this.emitNamedEntityData(this.treeIndex,valueLength,this.consumed+this.excess);this.decodeMode!==DecodingMode2.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var _a3;let{result,decodeTree}=this,valueLength=(decodeTree[result]&BinTrieFlags2.VALUE_LENGTH)>>14;return this.emitNamedEntityData(result,valueLength,this.consumed),(_a3=this.errors)===null||_a3===void 0||_a3.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(result,valueLength,consumed){let{decodeTree}=this;return this.emitCodePoint(valueLength===1?decodeTree[result]&~BinTrieFlags2.VALUE_LENGTH:decodeTree[result+1],consumed),valueLength===3&&this.emitCodePoint(decodeTree[result+2],consumed),consumed}end(){var _a3;switch(this.state){case EntityDecoderState2.NamedEntity:return this.result!==0&&(this.decodeMode!==DecodingMode2.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case EntityDecoderState2.NumericDecimal:return this.emitNumericEntity(0,2);case EntityDecoderState2.NumericHex:return this.emitNumericEntity(0,3);case EntityDecoderState2.NumericStart:return(_a3=this.errors)===null||_a3===void 0||_a3.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case EntityDecoderState2.EntityStart:return 0}}};function getDecoder(decodeTree){let ret="",decoder=new EntityDecoder2(decodeTree,str=>ret+=fromCodePoint2(str));return function(str,decodeMode){let lastIndex=0,offset=0;for(;(offset=str.indexOf("&",offset))>=0;){ret+=str.slice(lastIndex,offset),decoder.startEntity(decodeMode);let len=decoder.write(str,offset+1);if(len<0){lastIndex=offset+decoder.end();break}lastIndex=offset+len,offset=len===0?lastIndex+1:lastIndex}let result=ret+str.slice(lastIndex);return ret="",result}}function determineBranch2(decodeTree,current,nodeIdx,char){let branchCount=(current&BinTrieFlags2.BRANCH_LENGTH)>>7,jumpOffset=current&BinTrieFlags2.JUMP_TABLE;if(branchCount===0)return jumpOffset!==0&&char===jumpOffset?nodeIdx:-1;if(jumpOffset){let value=char-jumpOffset;return value<0||value>=branchCount?-1:decodeTree[nodeIdx+value]-1}let lo=nodeIdx,hi=lo+branchCount-1;for(;lo<=hi;){let mid=lo+hi>>>1,midVal=decodeTree[mid];if(midVal<char)lo=mid+1;else if(midVal>char)hi=mid-1;else return decodeTree[mid+branchCount]}return-1}var htmlDecoder=getDecoder(decode_data_html_default),xmlDecoder=getDecoder(decode_data_xml_default);function restoreDiff(arr){for(let i=1;i<arr.length;i++)arr[i][0]+=arr[i-1][0]+1;return arr}var encode_html_default=new Map(restoreDiff([[9,"&Tab;"],[0,"&NewLine;"],[22,"&excl;"],[0,"&quot;"],[0,"&num;"],[0,"&dollar;"],[0,"&percnt;"],[0,"&amp;"],[0,"&apos;"],[0,"&lpar;"],[0,"&rpar;"],[0,"&ast;"],[0,"&plus;"],[0,"&comma;"],[1,"&period;"],[0,"&sol;"],[10,"&colon;"],[0,"&semi;"],[0,{v:"&lt;",n:8402,o:"&nvlt;"}],[0,{v:"&equals;",n:8421,o:"&bne;"}],[0,{v:"&gt;",n:8402,o:"&nvgt;"}],[0,"&quest;"],[0,"&commat;"],[26,"&lbrack;"],[0,"&bsol;"],[0,"&rbrack;"],[0,"&Hat;"],[0,"&lowbar;"],[0,"&DiacriticalGrave;"],[5,{n:106,o:"&fjlig;"}],[20,"&lbrace;"],[0,"&verbar;"],[0,"&rbrace;"],[34,"&nbsp;"],[0,"&iexcl;"],[0,"&cent;"],[0,"&pound;"],[0,"&curren;"],[0,"&yen;"],[0,"&brvbar;"],[0,"&sect;"],[0,"&die;"],[0,"&copy;"],[0,"&ordf;"],[0,"&laquo;"],[0,"&not;"],[0,"&shy;"],[0,"&circledR;"],[0,"&macr;"],[0,"&deg;"],[0,"&PlusMinus;"],[0,"&sup2;"],[0,"&sup3;"],[0,"&acute;"],[0,"&micro;"],[0,"&para;"],[0,"&centerdot;"],[0,"&cedil;"],[0,"&sup1;"],[0,"&ordm;"],[0,"&raquo;"],[0,"&frac14;"],[0,"&frac12;"],[0,"&frac34;"],[0,"&iquest;"],[0,"&Agrave;"],[0,"&Aacute;"],[0,"&Acirc;"],[0,"&Atilde;"],[0,"&Auml;"],[0,"&angst;"],[0,"&AElig;"],[0,"&Ccedil;"],[0,"&Egrave;"],[0,"&Eacute;"],[0,"&Ecirc;"],[0,"&Euml;"],[0,"&Igrave;"],[0,"&Iacute;"],[0,"&Icirc;"],[0,"&Iuml;"],[0,"&ETH;"],[0,"&Ntilde;"],[0,"&Ograve;"],[0,"&Oacute;"],[0,"&Ocirc;"],[0,"&Otilde;"],[0,"&Ouml;"],[0,"&times;"],[0,"&Oslash;"],[0,"&Ugrave;"],[0,"&Uacute;"],[0,"&Ucirc;"],[0,"&Uuml;"],[0,"&Yacute;"],[0,"&THORN;"],[0,"&szlig;"],[0,"&agrave;"],[0,"&aacute;"],[0,"&acirc;"],[0,"&atilde;"],[0,"&auml;"],[0,"&aring;"],[0,"&aelig;"],[0,"&ccedil;"],[0,"&egrave;"],[0,"&eacute;"],[0,"&ecirc;"],[0,"&euml;"],[0,"&igrave;"],[0,"&iacute;"],[0,"&icirc;"],[0,"&iuml;"],[0,"&eth;"],[0,"&ntilde;"],[0,"&ograve;"],[0,"&oacute;"],[0,"&ocirc;"],[0,"&otilde;"],[0,"&ouml;"],[0,"&div;"],[0,"&oslash;"],[0,"&ugrave;"],[0,"&uacute;"],[0,"&ucirc;"],[0,"&uuml;"],[0,"&yacute;"],[0,"&thorn;"],[0,"&yuml;"],[0,"&Amacr;"],[0,"&amacr;"],[0,"&Abreve;"],[0,"&abreve;"],[0,"&Aogon;"],[0,"&aogon;"],[0,"&Cacute;"],[0,"&cacute;"],[0,"&Ccirc;"],[0,"&ccirc;"],[0,"&Cdot;"],[0,"&cdot;"],[0,"&Ccaron;"],[0,"&ccaron;"],[0,"&Dcaron;"],[0,"&dcaron;"],[0,"&Dstrok;"],[0,"&dstrok;"],[0,"&Emacr;"],[0,"&emacr;"],[2,"&Edot;"],[0,"&edot;"],[0,"&Eogon;"],[0,"&eogon;"],[0,"&Ecaron;"],[0,"&ecaron;"],[0,"&Gcirc;"],[0,"&gcirc;"],[0,"&Gbreve;"],[0,"&gbreve;"],[0,"&Gdot;"],[0,"&gdot;"],[0,"&Gcedil;"],[1,"&Hcirc;"],[0,"&hcirc;"],[0,"&Hstrok;"],[0,"&hstrok;"],[0,"&Itilde;"],[0,"&itilde;"],[0,"&Imacr;"],[0,"&imacr;"],[2,"&Iogon;"],[0,"&iogon;"],[0,"&Idot;"],[0,"&imath;"],[0,"&IJlig;"],[0,"&ijlig;"],[0,"&Jcirc;"],[0,"&jcirc;"],[0,"&Kcedil;"],[0,"&kcedil;"],[0,"&kgreen;"],[0,"&Lacute;"],[0,"&lacute;"],[0,"&Lcedil;"],[0,"&lcedil;"],[0,"&Lcaron;"],[0,"&lcaron;"],[0,"&Lmidot;"],[0,"&lmidot;"],[0,"&Lstrok;"],[0,"&lstrok;"],[0,"&Nacute;"],[0,"&nacute;"],[0,"&Ncedil;"],[0,"&ncedil;"],[0,"&Ncaron;"],[0,"&ncaron;"],[0,"&napos;"],[0,"&ENG;"],[0,"&eng;"],[0,"&Omacr;"],[0,"&omacr;"],[2,"&Odblac;"],[0,"&odblac;"],[0,"&OElig;"],[0,"&oelig;"],[0,"&Racute;"],[0,"&racute;"],[0,"&Rcedil;"],[0,"&rcedil;"],[0,"&Rcaron;"],[0,"&rcaron;"],[0,"&Sacute;"],[0,"&sacute;"],[0,"&Scirc;"],[0,"&scirc;"],[0,"&Scedil;"],[0,"&scedil;"],[0,"&Scaron;"],[0,"&scaron;"],[0,"&Tcedil;"],[0,"&tcedil;"],[0,"&Tcaron;"],[0,"&tcaron;"],[0,"&Tstrok;"],[0,"&tstrok;"],[0,"&Utilde;"],[0,"&utilde;"],[0,"&Umacr;"],[0,"&umacr;"],[0,"&Ubreve;"],[0,"&ubreve;"],[0,"&Uring;"],[0,"&uring;"],[0,"&Udblac;"],[0,"&udblac;"],[0,"&Uogon;"],[0,"&uogon;"],[0,"&Wcirc;"],[0,"&wcirc;"],[0,"&Ycirc;"],[0,"&ycirc;"],[0,"&Yuml;"],[0,"&Zacute;"],[0,"&zacute;"],[0,"&Zdot;"],[0,"&zdot;"],[0,"&Zcaron;"],[0,"&zcaron;"],[19,"&fnof;"],[34,"&imped;"],[63,"&gacute;"],[65,"&jmath;"],[142,"&circ;"],[0,"&caron;"],[16,"&breve;"],[0,"&DiacriticalDot;"],[0,"&ring;"],[0,"&ogon;"],[0,"&DiacriticalTilde;"],[0,"&dblac;"],[51,"&DownBreve;"],[127,"&Alpha;"],[0,"&Beta;"],[0,"&Gamma;"],[0,"&Delta;"],[0,"&Epsilon;"],[0,"&Zeta;"],[0,"&Eta;"],[0,"&Theta;"],[0,"&Iota;"],[0,"&Kappa;"],[0,"&Lambda;"],[0,"&Mu;"],[0,"&Nu;"],[0,"&Xi;"],[0,"&Omicron;"],[0,"&Pi;"],[0,"&Rho;"],[1,"&Sigma;"],[0,"&Tau;"],[0,"&Upsilon;"],[0,"&Phi;"],[0,"&Chi;"],[0,"&Psi;"],[0,"&ohm;"],[7,"&alpha;"],[0,"&beta;"],[0,"&gamma;"],[0,"&delta;"],[0,"&epsi;"],[0,"&zeta;"],[0,"&eta;"],[0,"&theta;"],[0,"&iota;"],[0,"&kappa;"],[0,"&lambda;"],[0,"&mu;"],[0,"&nu;"],[0,"&xi;"],[0,"&omicron;"],[0,"&pi;"],[0,"&rho;"],[0,"&sigmaf;"],[0,"&sigma;"],[0,"&tau;"],[0,"&upsi;"],[0,"&phi;"],[0,"&chi;"],[0,"&psi;"],[0,"&omega;"],[7,"&thetasym;"],[0,"&Upsi;"],[2,"&phiv;"],[0,"&piv;"],[5,"&Gammad;"],[0,"&digamma;"],[18,"&kappav;"],[0,"&rhov;"],[3,"&epsiv;"],[0,"&backepsilon;"],[10,"&IOcy;"],[0,"&DJcy;"],[0,"&GJcy;"],[0,"&Jukcy;"],[0,"&DScy;"],[0,"&Iukcy;"],[0,"&YIcy;"],[0,"&Jsercy;"],[0,"&LJcy;"],[0,"&NJcy;"],[0,"&TSHcy;"],[0,"&KJcy;"],[1,"&Ubrcy;"],[0,"&DZcy;"],[0,"&Acy;"],[0,"&Bcy;"],[0,"&Vcy;"],[0,"&Gcy;"],[0,"&Dcy;"],[0,"&IEcy;"],[0,"&ZHcy;"],[0,"&Zcy;"],[0,"&Icy;"],[0,"&Jcy;"],[0,"&Kcy;"],[0,"&Lcy;"],[0,"&Mcy;"],[0,"&Ncy;"],[0,"&Ocy;"],[0,"&Pcy;"],[0,"&Rcy;"],[0,"&Scy;"],[0,"&Tcy;"],[0,"&Ucy;"],[0,"&Fcy;"],[0,"&KHcy;"],[0,"&TScy;"],[0,"&CHcy;"],[0,"&SHcy;"],[0,"&SHCHcy;"],[0,"&HARDcy;"],[0,"&Ycy;"],[0,"&SOFTcy;"],[0,"&Ecy;"],[0,"&YUcy;"],[0,"&YAcy;"],[0,"&acy;"],[0,"&bcy;"],[0,"&vcy;"],[0,"&gcy;"],[0,"&dcy;"],[0,"&iecy;"],[0,"&zhcy;"],[0,"&zcy;"],[0,"&icy;"],[0,"&jcy;"],[0,"&kcy;"],[0,"&lcy;"],[0,"&mcy;"],[0,"&ncy;"],[0,"&ocy;"],[0,"&pcy;"],[0,"&rcy;"],[0,"&scy;"],[0,"&tcy;"],[0,"&ucy;"],[0,"&fcy;"],[0,"&khcy;"],[0,"&tscy;"],[0,"&chcy;"],[0,"&shcy;"],[0,"&shchcy;"],[0,"&hardcy;"],[0,"&ycy;"],[0,"&softcy;"],[0,"&ecy;"],[0,"&yucy;"],[0,"&yacy;"],[1,"&iocy;"],[0,"&djcy;"],[0,"&gjcy;"],[0,"&jukcy;"],[0,"&dscy;"],[0,"&iukcy;"],[0,"&yicy;"],[0,"&jsercy;"],[0,"&ljcy;"],[0,"&njcy;"],[0,"&tshcy;"],[0,"&kjcy;"],[1,"&ubrcy;"],[0,"&dzcy;"],[7074,"&ensp;"],[0,"&emsp;"],[0,"&emsp13;"],[0,"&emsp14;"],[1,"&numsp;"],[0,"&puncsp;"],[0,"&ThinSpace;"],[0,"&hairsp;"],[0,"&NegativeMediumSpace;"],[0,"&zwnj;"],[0,"&zwj;"],[0,"&lrm;"],[0,"&rlm;"],[0,"&dash;"],[2,"&ndash;"],[0,"&mdash;"],[0,"&horbar;"],[0,"&Verbar;"],[1,"&lsquo;"],[0,"&CloseCurlyQuote;"],[0,"&lsquor;"],[1,"&ldquo;"],[0,"&CloseCurlyDoubleQuote;"],[0,"&bdquo;"],[1,"&dagger;"],[0,"&Dagger;"],[0,"&bull;"],[2,"&nldr;"],[0,"&hellip;"],[9,"&permil;"],[0,"&pertenk;"],[0,"&prime;"],[0,"&Prime;"],[0,"&tprime;"],[0,"&backprime;"],[3,"&lsaquo;"],[0,"&rsaquo;"],[3,"&oline;"],[2,"&caret;"],[1,"&hybull;"],[0,"&frasl;"],[10,"&bsemi;"],[7,"&qprime;"],[7,{v:"&MediumSpace;",n:8202,o:"&ThickSpace;"}],[0,"&NoBreak;"],[0,"&af;"],[0,"&InvisibleTimes;"],[0,"&ic;"],[72,"&euro;"],[46,"&tdot;"],[0,"&DotDot;"],[37,"&complexes;"],[2,"&incare;"],[4,"&gscr;"],[0,"&hamilt;"],[0,"&Hfr;"],[0,"&Hopf;"],[0,"&planckh;"],[0,"&hbar;"],[0,"&imagline;"],[0,"&Ifr;"],[0,"&lagran;"],[0,"&ell;"],[1,"&naturals;"],[0,"&numero;"],[0,"&copysr;"],[0,"&weierp;"],[0,"&Popf;"],[0,"&Qopf;"],[0,"&realine;"],[0,"&real;"],[0,"&reals;"],[0,"&rx;"],[3,"&trade;"],[1,"&integers;"],[2,"&mho;"],[0,"&zeetrf;"],[0,"&iiota;"],[2,"&bernou;"],[0,"&Cayleys;"],[1,"&escr;"],[0,"&Escr;"],[0,"&Fouriertrf;"],[1,"&Mellintrf;"],[0,"&order;"],[0,"&alefsym;"],[0,"&beth;"],[0,"&gimel;"],[0,"&daleth;"],[12,"&CapitalDifferentialD;"],[0,"&dd;"],[0,"&ee;"],[0,"&ii;"],[10,"&frac13;"],[0,"&frac23;"],[0,"&frac15;"],[0,"&frac25;"],[0,"&frac35;"],[0,"&frac45;"],[0,"&frac16;"],[0,"&frac56;"],[0,"&frac18;"],[0,"&frac38;"],[0,"&frac58;"],[0,"&frac78;"],[49,"&larr;"],[0,"&ShortUpArrow;"],[0,"&rarr;"],[0,"&darr;"],[0,"&harr;"],[0,"&updownarrow;"],[0,"&nwarr;"],[0,"&nearr;"],[0,"&LowerRightArrow;"],[0,"&LowerLeftArrow;"],[0,"&nlarr;"],[0,"&nrarr;"],[1,{v:"&rarrw;",n:824,o:"&nrarrw;"}],[0,"&Larr;"],[0,"&Uarr;"],[0,"&Rarr;"],[0,"&Darr;"],[0,"&larrtl;"],[0,"&rarrtl;"],[0,"&LeftTeeArrow;"],[0,"&mapstoup;"],[0,"&map;"],[0,"&DownTeeArrow;"],[1,"&hookleftarrow;"],[0,"&hookrightarrow;"],[0,"&larrlp;"],[0,"&looparrowright;"],[0,"&harrw;"],[0,"&nharr;"],[1,"&lsh;"],[0,"&rsh;"],[0,"&ldsh;"],[0,"&rdsh;"],[1,"&crarr;"],[0,"&cularr;"],[0,"&curarr;"],[2,"&circlearrowleft;"],[0,"&circlearrowright;"],[0,"&leftharpoonup;"],[0,"&DownLeftVector;"],[0,"&RightUpVector;"],[0,"&LeftUpVector;"],[0,"&rharu;"],[0,"&DownRightVector;"],[0,"&dharr;"],[0,"&dharl;"],[0,"&RightArrowLeftArrow;"],[0,"&udarr;"],[0,"&LeftArrowRightArrow;"],[0,"&leftleftarrows;"],[0,"&upuparrows;"],[0,"&rightrightarrows;"],[0,"&ddarr;"],[0,"&leftrightharpoons;"],[0,"&Equilibrium;"],[0,"&nlArr;"],[0,"&nhArr;"],[0,"&nrArr;"],[0,"&DoubleLeftArrow;"],[0,"&DoubleUpArrow;"],[0,"&DoubleRightArrow;"],[0,"&dArr;"],[0,"&DoubleLeftRightArrow;"],[0,"&DoubleUpDownArrow;"],[0,"&nwArr;"],[0,"&neArr;"],[0,"&seArr;"],[0,"&swArr;"],[0,"&lAarr;"],[0,"&rAarr;"],[1,"&zigrarr;"],[6,"&larrb;"],[0,"&rarrb;"],[15,"&DownArrowUpArrow;"],[7,"&loarr;"],[0,"&roarr;"],[0,"&hoarr;"],[0,"&forall;"],[0,"&comp;"],[0,{v:"&part;",n:824,o:"&npart;"}],[0,"&exist;"],[0,"&nexist;"],[0,"&empty;"],[1,"&Del;"],[0,"&Element;"],[0,"&NotElement;"],[1,"&ni;"],[0,"&notni;"],[2,"&prod;"],[0,"&coprod;"],[0,"&sum;"],[0,"&minus;"],[0,"&MinusPlus;"],[0,"&dotplus;"],[1,"&Backslash;"],[0,"&lowast;"],[0,"&compfn;"],[1,"&radic;"],[2,"&prop;"],[0,"&infin;"],[0,"&angrt;"],[0,{v:"&ang;",n:8402,o:"&nang;"}],[0,"&angmsd;"],[0,"&angsph;"],[0,"&mid;"],[0,"&nmid;"],[0,"&DoubleVerticalBar;"],[0,"&NotDoubleVerticalBar;"],[0,"&and;"],[0,"&or;"],[0,{v:"&cap;",n:65024,o:"&caps;"}],[0,{v:"&cup;",n:65024,o:"&cups;"}],[0,"&int;"],[0,"&Int;"],[0,"&iiint;"],[0,"&conint;"],[0,"&Conint;"],[0,"&Cconint;"],[0,"&cwint;"],[0,"&ClockwiseContourIntegral;"],[0,"&awconint;"],[0,"&there4;"],[0,"&becaus;"],[0,"&ratio;"],[0,"&Colon;"],[0,"&dotminus;"],[1,"&mDDot;"],[0,"&homtht;"],[0,{v:"&sim;",n:8402,o:"&nvsim;"}],[0,{v:"&backsim;",n:817,o:"&race;"}],[0,{v:"&ac;",n:819,o:"&acE;"}],[0,"&acd;"],[0,"&VerticalTilde;"],[0,"&NotTilde;"],[0,{v:"&eqsim;",n:824,o:"&nesim;"}],[0,"&sime;"],[0,"&NotTildeEqual;"],[0,"&cong;"],[0,"&simne;"],[0,"&ncong;"],[0,"&ap;"],[0,"&nap;"],[0,"&ape;"],[0,{v:"&apid;",n:824,o:"&napid;"}],[0,"&backcong;"],[0,{v:"&asympeq;",n:8402,o:"&nvap;"}],[0,{v:"&bump;",n:824,o:"&nbump;"}],[0,{v:"&bumpe;",n:824,o:"&nbumpe;"}],[0,{v:"&doteq;",n:824,o:"&nedot;"}],[0,"&doteqdot;"],[0,"&efDot;"],[0,"&erDot;"],[0,"&Assign;"],[0,"&ecolon;"],[0,"&ecir;"],[0,"&circeq;"],[1,"&wedgeq;"],[0,"&veeeq;"],[1,"&triangleq;"],[2,"&equest;"],[0,"&ne;"],[0,{v:"&Congruent;",n:8421,o:"&bnequiv;"}],[0,"&nequiv;"],[1,{v:"&le;",n:8402,o:"&nvle;"}],[0,{v:"&ge;",n:8402,o:"&nvge;"}],[0,{v:"&lE;",n:824,o:"&nlE;"}],[0,{v:"&gE;",n:824,o:"&ngE;"}],[0,{v:"&lnE;",n:65024,o:"&lvertneqq;"}],[0,{v:"&gnE;",n:65024,o:"&gvertneqq;"}],[0,{v:"&ll;",n:new Map(restoreDiff([[824,"&nLtv;"],[7577,"&nLt;"]]))}],[0,{v:"&gg;",n:new Map(restoreDiff([[824,"&nGtv;"],[7577,"&nGt;"]]))}],[0,"&between;"],[0,"&NotCupCap;"],[0,"&nless;"],[0,"&ngt;"],[0,"&nle;"],[0,"&nge;"],[0,"&lesssim;"],[0,"&GreaterTilde;"],[0,"&nlsim;"],[0,"&ngsim;"],[0,"&LessGreater;"],[0,"&gl;"],[0,"&NotLessGreater;"],[0,"&NotGreaterLess;"],[0,"&pr;"],[0,"&sc;"],[0,"&prcue;"],[0,"&sccue;"],[0,"&PrecedesTilde;"],[0,{v:"&scsim;",n:824,o:"&NotSucceedsTilde;"}],[0,"&NotPrecedes;"],[0,"&NotSucceeds;"],[0,{v:"&sub;",n:8402,o:"&NotSubset;"}],[0,{v:"&sup;",n:8402,o:"&NotSuperset;"}],[0,"&nsub;"],[0,"&nsup;"],[0,"&sube;"],[0,"&supe;"],[0,"&NotSubsetEqual;"],[0,"&NotSupersetEqual;"],[0,{v:"&subne;",n:65024,o:"&varsubsetneq;"}],[0,{v:"&supne;",n:65024,o:"&varsupsetneq;"}],[1,"&cupdot;"],[0,"&UnionPlus;"],[0,{v:"&sqsub;",n:824,o:"&NotSquareSubset;"}],[0,{v:"&sqsup;",n:824,o:"&NotSquareSuperset;"}],[0,"&sqsube;"],[0,"&sqsupe;"],[0,{v:"&sqcap;",n:65024,o:"&sqcaps;"}],[0,{v:"&sqcup;",n:65024,o:"&sqcups;"}],[0,"&CirclePlus;"],[0,"&CircleMinus;"],[0,"&CircleTimes;"],[0,"&osol;"],[0,"&CircleDot;"],[0,"&circledcirc;"],[0,"&circledast;"],[1,"&circleddash;"],[0,"&boxplus;"],[0,"&boxminus;"],[0,"&boxtimes;"],[0,"&dotsquare;"],[0,"&RightTee;"],[0,"&dashv;"],[0,"&DownTee;"],[0,"&bot;"],[1,"&models;"],[0,"&DoubleRightTee;"],[0,"&Vdash;"],[0,"&Vvdash;"],[0,"&VDash;"],[0,"&nvdash;"],[0,"&nvDash;"],[0,"&nVdash;"],[0,"&nVDash;"],[0,"&prurel;"],[1,"&LeftTriangle;"],[0,"&RightTriangle;"],[0,{v:"&LeftTriangleEqual;",n:8402,o:"&nvltrie;"}],[0,{v:"&RightTriangleEqual;",n:8402,o:"&nvrtrie;"}],[0,"&origof;"],[0,"&imof;"],[0,"&multimap;"],[0,"&hercon;"],[0,"&intcal;"],[0,"&veebar;"],[1,"&barvee;"],[0,"&angrtvb;"],[0,"&lrtri;"],[0,"&bigwedge;"],[0,"&bigvee;"],[0,"&bigcap;"],[0,"&bigcup;"],[0,"&diam;"],[0,"&sdot;"],[0,"&sstarf;"],[0,"&divideontimes;"],[0,"&bowtie;"],[0,"&ltimes;"],[0,"&rtimes;"],[0,"&leftthreetimes;"],[0,"&rightthreetimes;"],[0,"&backsimeq;"],[0,"&curlyvee;"],[0,"&curlywedge;"],[0,"&Sub;"],[0,"&Sup;"],[0,"&Cap;"],[0,"&Cup;"],[0,"&fork;"],[0,"&epar;"],[0,"&lessdot;"],[0,"&gtdot;"],[0,{v:"&Ll;",n:824,o:"&nLl;"}],[0,{v:"&Gg;",n:824,o:"&nGg;"}],[0,{v:"&leg;",n:65024,o:"&lesg;"}],[0,{v:"&gel;",n:65024,o:"&gesl;"}],[2,"&cuepr;"],[0,"&cuesc;"],[0,"&NotPrecedesSlantEqual;"],[0,"&NotSucceedsSlantEqual;"],[0,"&NotSquareSubsetEqual;"],[0,"&NotSquareSupersetEqual;"],[2,"&lnsim;"],[0,"&gnsim;"],[0,"&precnsim;"],[0,"&scnsim;"],[0,"&nltri;"],[0,"&NotRightTriangle;"],[0,"&nltrie;"],[0,"&NotRightTriangleEqual;"],[0,"&vellip;"],[0,"&ctdot;"],[0,"&utdot;"],[0,"&dtdot;"],[0,"&disin;"],[0,"&isinsv;"],[0,"&isins;"],[0,{v:"&isindot;",n:824,o:"&notindot;"}],[0,"&notinvc;"],[0,"&notinvb;"],[1,{v:"&isinE;",n:824,o:"&notinE;"}],[0,"&nisd;"],[0,"&xnis;"],[0,"&nis;"],[0,"&notnivc;"],[0,"&notnivb;"],[6,"&barwed;"],[0,"&Barwed;"],[1,"&lceil;"],[0,"&rceil;"],[0,"&LeftFloor;"],[0,"&rfloor;"],[0,"&drcrop;"],[0,"&dlcrop;"],[0,"&urcrop;"],[0,"&ulcrop;"],[0,"&bnot;"],[1,"&profline;"],[0,"&profsurf;"],[1,"&telrec;"],[0,"&target;"],[5,"&ulcorn;"],[0,"&urcorn;"],[0,"&dlcorn;"],[0,"&drcorn;"],[2,"&frown;"],[0,"&smile;"],[9,"&cylcty;"],[0,"&profalar;"],[7,"&topbot;"],[6,"&ovbar;"],[1,"&solbar;"],[60,"&angzarr;"],[51,"&lmoustache;"],[0,"&rmoustache;"],[2,"&OverBracket;"],[0,"&bbrk;"],[0,"&bbrktbrk;"],[37,"&OverParenthesis;"],[0,"&UnderParenthesis;"],[0,"&OverBrace;"],[0,"&UnderBrace;"],[2,"&trpezium;"],[4,"&elinters;"],[59,"&blank;"],[164,"&circledS;"],[55,"&boxh;"],[1,"&boxv;"],[9,"&boxdr;"],[3,"&boxdl;"],[3,"&boxur;"],[3,"&boxul;"],[3,"&boxvr;"],[7,"&boxvl;"],[7,"&boxhd;"],[7,"&boxhu;"],[7,"&boxvh;"],[19,"&boxH;"],[0,"&boxV;"],[0,"&boxdR;"],[0,"&boxDr;"],[0,"&boxDR;"],[0,"&boxdL;"],[0,"&boxDl;"],[0,"&boxDL;"],[0,"&boxuR;"],[0,"&boxUr;"],[0,"&boxUR;"],[0,"&boxuL;"],[0,"&boxUl;"],[0,"&boxUL;"],[0,"&boxvR;"],[0,"&boxVr;"],[0,"&boxVR;"],[0,"&boxvL;"],[0,"&boxVl;"],[0,"&boxVL;"],[0,"&boxHd;"],[0,"&boxhD;"],[0,"&boxHD;"],[0,"&boxHu;"],[0,"&boxhU;"],[0,"&boxHU;"],[0,"&boxvH;"],[0,"&boxVh;"],[0,"&boxVH;"],[19,"&uhblk;"],[3,"&lhblk;"],[3,"&block;"],[8,"&blk14;"],[0,"&blk12;"],[0,"&blk34;"],[13,"&square;"],[8,"&blacksquare;"],[0,"&EmptyVerySmallSquare;"],[1,"&rect;"],[0,"&marker;"],[2,"&fltns;"],[1,"&bigtriangleup;"],[0,"&blacktriangle;"],[0,"&triangle;"],[2,"&blacktriangleright;"],[0,"&rtri;"],[3,"&bigtriangledown;"],[0,"&blacktriangledown;"],[0,"&dtri;"],[2,"&blacktriangleleft;"],[0,"&ltri;"],[6,"&loz;"],[0,"&cir;"],[32,"&tridot;"],[2,"&bigcirc;"],[8,"&ultri;"],[0,"&urtri;"],[0,"&lltri;"],[0,"&EmptySmallSquare;"],[0,"&FilledSmallSquare;"],[8,"&bigstar;"],[0,"&star;"],[7,"&phone;"],[49,"&female;"],[1,"&male;"],[29,"&spades;"],[2,"&clubs;"],[1,"&hearts;"],[0,"&diamondsuit;"],[3,"&sung;"],[2,"&flat;"],[0,"&natural;"],[0,"&sharp;"],[163,"&check;"],[3,"&cross;"],[8,"&malt;"],[21,"&sext;"],[33,"&VerticalSeparator;"],[25,"&lbbrk;"],[0,"&rbbrk;"],[84,"&bsolhsub;"],[0,"&suphsol;"],[28,"&LeftDoubleBracket;"],[0,"&RightDoubleBracket;"],[0,"&lang;"],[0,"&rang;"],[0,"&Lang;"],[0,"&Rang;"],[0,"&loang;"],[0,"&roang;"],[7,"&longleftarrow;"],[0,"&longrightarrow;"],[0,"&longleftrightarrow;"],[0,"&DoubleLongLeftArrow;"],[0,"&DoubleLongRightArrow;"],[0,"&DoubleLongLeftRightArrow;"],[1,"&longmapsto;"],[2,"&dzigrarr;"],[258,"&nvlArr;"],[0,"&nvrArr;"],[0,"&nvHarr;"],[0,"&Map;"],[6,"&lbarr;"],[0,"&bkarow;"],[0,"&lBarr;"],[0,"&dbkarow;"],[0,"&drbkarow;"],[0,"&DDotrahd;"],[0,"&UpArrowBar;"],[0,"&DownArrowBar;"],[2,"&Rarrtl;"],[2,"&latail;"],[0,"&ratail;"],[0,"&lAtail;"],[0,"&rAtail;"],[0,"&larrfs;"],[0,"&rarrfs;"],[0,"&larrbfs;"],[0,"&rarrbfs;"],[2,"&nwarhk;"],[0,"&nearhk;"],[0,"&hksearow;"],[0,"&hkswarow;"],[0,"&nwnear;"],[0,"&nesear;"],[0,"&seswar;"],[0,"&swnwar;"],[8,{v:"&rarrc;",n:824,o:"&nrarrc;"}],[1,"&cudarrr;"],[0,"&ldca;"],[0,"&rdca;"],[0,"&cudarrl;"],[0,"&larrpl;"],[2,"&curarrm;"],[0,"&cularrp;"],[7,"&rarrpl;"],[2,"&harrcir;"],[0,"&Uarrocir;"],[0,"&lurdshar;"],[0,"&ldrushar;"],[2,"&LeftRightVector;"],[0,"&RightUpDownVector;"],[0,"&DownLeftRightVector;"],[0,"&LeftUpDownVector;"],[0,"&LeftVectorBar;"],[0,"&RightVectorBar;"],[0,"&RightUpVectorBar;"],[0,"&RightDownVectorBar;"],[0,"&DownLeftVectorBar;"],[0,"&DownRightVectorBar;"],[0,"&LeftUpVectorBar;"],[0,"&LeftDownVectorBar;"],[0,"&LeftTeeVector;"],[0,"&RightTeeVector;"],[0,"&RightUpTeeVector;"],[0,"&RightDownTeeVector;"],[0,"&DownLeftTeeVector;"],[0,"&DownRightTeeVector;"],[0,"&LeftUpTeeVector;"],[0,"&LeftDownTeeVector;"],[0,"&lHar;"],[0,"&uHar;"],[0,"&rHar;"],[0,"&dHar;"],[0,"&luruhar;"],[0,"&ldrdhar;"],[0,"&ruluhar;"],[0,"&rdldhar;"],[0,"&lharul;"],[0,"&llhard;"],[0,"&rharul;"],[0,"&lrhard;"],[0,"&udhar;"],[0,"&duhar;"],[0,"&RoundImplies;"],[0,"&erarr;"],[0,"&simrarr;"],[0,"&larrsim;"],[0,"&rarrsim;"],[0,"&rarrap;"],[0,"&ltlarr;"],[1,"&gtrarr;"],[0,"&subrarr;"],[1,"&suplarr;"],[0,"&lfisht;"],[0,"&rfisht;"],[0,"&ufisht;"],[0,"&dfisht;"],[5,"&lopar;"],[0,"&ropar;"],[4,"&lbrke;"],[0,"&rbrke;"],[0,"&lbrkslu;"],[0,"&rbrksld;"],[0,"&lbrksld;"],[0,"&rbrkslu;"],[0,"&langd;"],[0,"&rangd;"],[0,"&lparlt;"],[0,"&rpargt;"],[0,"&gtlPar;"],[0,"&ltrPar;"],[3,"&vzigzag;"],[1,"&vangrt;"],[0,"&angrtvbd;"],[6,"&ange;"],[0,"&range;"],[0,"&dwangle;"],[0,"&uwangle;"],[0,"&angmsdaa;"],[0,"&angmsdab;"],[0,"&angmsdac;"],[0,"&angmsdad;"],[0,"&angmsdae;"],[0,"&angmsdaf;"],[0,"&angmsdag;"],[0,"&angmsdah;"],[0,"&bemptyv;"],[0,"&demptyv;"],[0,"&cemptyv;"],[0,"&raemptyv;"],[0,"&laemptyv;"],[0,"&ohbar;"],[0,"&omid;"],[0,"&opar;"],[1,"&operp;"],[1,"&olcross;"],[0,"&odsold;"],[1,"&olcir;"],[0,"&ofcir;"],[0,"&olt;"],[0,"&ogt;"],[0,"&cirscir;"],[0,"&cirE;"],[0,"&solb;"],[0,"&bsolb;"],[3,"&boxbox;"],[3,"&trisb;"],[0,"&rtriltri;"],[0,{v:"&LeftTriangleBar;",n:824,o:"&NotLeftTriangleBar;"}],[0,{v:"&RightTriangleBar;",n:824,o:"&NotRightTriangleBar;"}],[11,"&iinfin;"],[0,"&infintie;"],[0,"&nvinfin;"],[4,"&eparsl;"],[0,"&smeparsl;"],[0,"&eqvparsl;"],[5,"&blacklozenge;"],[8,"&RuleDelayed;"],[1,"&dsol;"],[9,"&bigodot;"],[0,"&bigoplus;"],[0,"&bigotimes;"],[1,"&biguplus;"],[1,"&bigsqcup;"],[5,"&iiiint;"],[0,"&fpartint;"],[2,"&cirfnint;"],[0,"&awint;"],[0,"&rppolint;"],[0,"&scpolint;"],[0,"&npolint;"],[0,"&pointint;"],[0,"&quatint;"],[0,"&intlarhk;"],[10,"&pluscir;"],[0,"&plusacir;"],[0,"&simplus;"],[0,"&plusdu;"],[0,"&plussim;"],[0,"&plustwo;"],[1,"&mcomma;"],[0,"&minusdu;"],[2,"&loplus;"],[0,"&roplus;"],[0,"&Cross;"],[0,"&timesd;"],[0,"&timesbar;"],[1,"&smashp;"],[0,"&lotimes;"],[0,"&rotimes;"],[0,"&otimesas;"],[0,"&Otimes;"],[0,"&odiv;"],[0,"&triplus;"],[0,"&triminus;"],[0,"&tritime;"],[0,"&intprod;"],[2,"&amalg;"],[0,"&capdot;"],[1,"&ncup;"],[0,"&ncap;"],[0,"&capand;"],[0,"&cupor;"],[0,"&cupcap;"],[0,"&capcup;"],[0,"&cupbrcap;"],[0,"&capbrcup;"],[0,"&cupcup;"],[0,"&capcap;"],[0,"&ccups;"],[0,"&ccaps;"],[2,"&ccupssm;"],[2,"&And;"],[0,"&Or;"],[0,"&andand;"],[0,"&oror;"],[0,"&orslope;"],[0,"&andslope;"],[1,"&andv;"],[0,"&orv;"],[0,"&andd;"],[0,"&ord;"],[1,"&wedbar;"],[6,"&sdote;"],[3,"&simdot;"],[2,{v:"&congdot;",n:824,o:"&ncongdot;"}],[0,"&easter;"],[0,"&apacir;"],[0,{v:"&apE;",n:824,o:"&napE;"}],[0,"&eplus;"],[0,"&pluse;"],[0,"&Esim;"],[0,"&Colone;"],[0,"&Equal;"],[1,"&ddotseq;"],[0,"&equivDD;"],[0,"&ltcir;"],[0,"&gtcir;"],[0,"&ltquest;"],[0,"&gtquest;"],[0,{v:"&leqslant;",n:824,o:"&nleqslant;"}],[0,{v:"&geqslant;",n:824,o:"&ngeqslant;"}],[0,"&lesdot;"],[0,"&gesdot;"],[0,"&lesdoto;"],[0,"&gesdoto;"],[0,"&lesdotor;"],[0,"&gesdotol;"],[0,"&lap;"],[0,"&gap;"],[0,"&lne;"],[0,"&gne;"],[0,"&lnap;"],[0,"&gnap;"],[0,"&lEg;"],[0,"&gEl;"],[0,"&lsime;"],[0,"&gsime;"],[0,"&lsimg;"],[0,"&gsiml;"],[0,"&lgE;"],[0,"&glE;"],[0,"&lesges;"],[0,"&gesles;"],[0,"&els;"],[0,"&egs;"],[0,"&elsdot;"],[0,"&egsdot;"],[0,"&el;"],[0,"&eg;"],[2,"&siml;"],[0,"&simg;"],[0,"&simlE;"],[0,"&simgE;"],[0,{v:"&LessLess;",n:824,o:"&NotNestedLessLess;"}],[0,{v:"&GreaterGreater;",n:824,o:"&NotNestedGreaterGreater;"}],[1,"&glj;"],[0,"&gla;"],[0,"&ltcc;"],[0,"&gtcc;"],[0,"&lescc;"],[0,"&gescc;"],[0,"&smt;"],[0,"&lat;"],[0,{v:"&smte;",n:65024,o:"&smtes;"}],[0,{v:"&late;",n:65024,o:"&lates;"}],[0,"&bumpE;"],[0,{v:"&PrecedesEqual;",n:824,o:"&NotPrecedesEqual;"}],[0,{v:"&sce;",n:824,o:"&NotSucceedsEqual;"}],[2,"&prE;"],[0,"&scE;"],[0,"&precneqq;"],[0,"&scnE;"],[0,"&prap;"],[0,"&scap;"],[0,"&precnapprox;"],[0,"&scnap;"],[0,"&Pr;"],[0,"&Sc;"],[0,"&subdot;"],[0,"&supdot;"],[0,"&subplus;"],[0,"&supplus;"],[0,"&submult;"],[0,"&supmult;"],[0,"&subedot;"],[0,"&supedot;"],[0,{v:"&subE;",n:824,o:"&nsubE;"}],[0,{v:"&supE;",n:824,o:"&nsupE;"}],[0,"&subsim;"],[0,"&supsim;"],[2,{v:"&subnE;",n:65024,o:"&varsubsetneqq;"}],[0,{v:"&supnE;",n:65024,o:"&varsupsetneqq;"}],[2,"&csub;"],[0,"&csup;"],[0,"&csube;"],[0,"&csupe;"],[0,"&subsup;"],[0,"&supsub;"],[0,"&subsub;"],[0,"&supsup;"],[0,"&suphsub;"],[0,"&supdsub;"],[0,"&forkv;"],[0,"&topfork;"],[0,"&mlcp;"],[8,"&Dashv;"],[1,"&Vdashl;"],[0,"&Barv;"],[0,"&vBar;"],[0,"&vBarv;"],[1,"&Vbar;"],[0,"&Not;"],[0,"&bNot;"],[0,"&rnmid;"],[0,"&cirmid;"],[0,"&midcir;"],[0,"&topcir;"],[0,"&nhpar;"],[0,"&parsim;"],[9,{v:"&parsl;",n:8421,o:"&nparsl;"}],[44343,{n:new Map(restoreDiff([[56476,"&Ascr;"],[1,"&Cscr;"],[0,"&Dscr;"],[2,"&Gscr;"],[2,"&Jscr;"],[0,"&Kscr;"],[2,"&Nscr;"],[0,"&Oscr;"],[0,"&Pscr;"],[0,"&Qscr;"],[1,"&Sscr;"],[0,"&Tscr;"],[0,"&Uscr;"],[0,"&Vscr;"],[0,"&Wscr;"],[0,"&Xscr;"],[0,"&Yscr;"],[0,"&Zscr;"],[0,"&ascr;"],[0,"&bscr;"],[0,"&cscr;"],[0,"&dscr;"],[1,"&fscr;"],[1,"&hscr;"],[0,"&iscr;"],[0,"&jscr;"],[0,"&kscr;"],[0,"&lscr;"],[0,"&mscr;"],[0,"&nscr;"],[1,"&pscr;"],[0,"&qscr;"],[0,"&rscr;"],[0,"&sscr;"],[0,"&tscr;"],[0,"&uscr;"],[0,"&vscr;"],[0,"&wscr;"],[0,"&xscr;"],[0,"&yscr;"],[0,"&zscr;"],[52,"&Afr;"],[0,"&Bfr;"],[1,"&Dfr;"],[0,"&Efr;"],[0,"&Ffr;"],[0,"&Gfr;"],[2,"&Jfr;"],[0,"&Kfr;"],[0,"&Lfr;"],[0,"&Mfr;"],[0,"&Nfr;"],[0,"&Ofr;"],[0,"&Pfr;"],[0,"&Qfr;"],[1,"&Sfr;"],[0,"&Tfr;"],[0,"&Ufr;"],[0,"&Vfr;"],[0,"&Wfr;"],[0,"&Xfr;"],[0,"&Yfr;"],[1,"&afr;"],[0,"&bfr;"],[0,"&cfr;"],[0,"&dfr;"],[0,"&efr;"],[0,"&ffr;"],[0,"&gfr;"],[0,"&hfr;"],[0,"&ifr;"],[0,"&jfr;"],[0,"&kfr;"],[0,"&lfr;"],[0,"&mfr;"],[0,"&nfr;"],[0,"&ofr;"],[0,"&pfr;"],[0,"&qfr;"],[0,"&rfr;"],[0,"&sfr;"],[0,"&tfr;"],[0,"&ufr;"],[0,"&vfr;"],[0,"&wfr;"],[0,"&xfr;"],[0,"&yfr;"],[0,"&zfr;"],[0,"&Aopf;"],[0,"&Bopf;"],[1,"&Dopf;"],[0,"&Eopf;"],[0,"&Fopf;"],[0,"&Gopf;"],[1,"&Iopf;"],[0,"&Jopf;"],[0,"&Kopf;"],[0,"&Lopf;"],[0,"&Mopf;"],[1,"&Oopf;"],[3,"&Sopf;"],[0,"&Topf;"],[0,"&Uopf;"],[0,"&Vopf;"],[0,"&Wopf;"],[0,"&Xopf;"],[0,"&Yopf;"],[1,"&aopf;"],[0,"&bopf;"],[0,"&copf;"],[0,"&dopf;"],[0,"&eopf;"],[0,"&fopf;"],[0,"&gopf;"],[0,"&hopf;"],[0,"&iopf;"],[0,"&jopf;"],[0,"&kopf;"],[0,"&lopf;"],[0,"&mopf;"],[0,"&nopf;"],[0,"&oopf;"],[0,"&popf;"],[0,"&qopf;"],[0,"&ropf;"],[0,"&sopf;"],[0,"&topf;"],[0,"&uopf;"],[0,"&vopf;"],[0,"&wopf;"],[0,"&xopf;"],[0,"&yopf;"],[0,"&zopf;"]]))}],[8906,"&fflig;"],[0,"&filig;"],[0,"&fllig;"],[0,"&ffilig;"],[0,"&ffllig;"]]));var xmlReplacer=/["&'<>$\x80-\uFFFF]/g,xmlCodeMap=new Map([[34,"&quot;"],[38,"&amp;"],[39,"&apos;"],[60,"&lt;"],[62,"&gt;"]]),getCodePoint=String.prototype.codePointAt!=null?(str,index)=>str.codePointAt(index):(c,index)=>(c.charCodeAt(index)&64512)===55296?(c.charCodeAt(index)-55296)*1024+c.charCodeAt(index+1)-56320+65536:c.charCodeAt(index);function encodeXML(str){let ret="",lastIdx=0,match;for(;(match=xmlReplacer.exec(str))!==null;){let i=match.index,char=str.charCodeAt(i),next=xmlCodeMap.get(char);next!==void 0?(ret+=str.substring(lastIdx,i)+next,lastIdx=i+1):(ret+=`${str.substring(lastIdx,i)}&#x${getCodePoint(str,i).toString(16)};`,lastIdx=xmlReplacer.lastIndex+=+((char&64512)===55296))}return ret+str.substr(lastIdx)}function getEscaper(regex,map){return function(data){let match,lastIdx=0,result="";for(;match=regex.exec(data);)lastIdx!==match.index&&(result+=data.substring(lastIdx,match.index)),result+=map.get(match[0].charCodeAt(0)),lastIdx=match.index+1;return result+data.substring(lastIdx)}}var escapeUTF8=getEscaper(/[&<>'"]/g,xmlCodeMap),escapeAttribute=getEscaper(/["&\u00A0]/g,new Map([[34,"&quot;"],[38,"&amp;"],[160,"&nbsp;"]])),escapeText=getEscaper(/[&<>\u00A0]/g,new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[160,"&nbsp;"]]));var EntityLevel;(function(EntityLevel2){EntityLevel2[EntityLevel2.XML=0]="XML",EntityLevel2[EntityLevel2.HTML=1]="HTML"})(EntityLevel||(EntityLevel={}));var EncodingMode;(function(EncodingMode2){EncodingMode2[EncodingMode2.UTF8=0]="UTF8",EncodingMode2[EncodingMode2.ASCII=1]="ASCII",EncodingMode2[EncodingMode2.Extensive=2]="Extensive",EncodingMode2[EncodingMode2.Attribute=3]="Attribute",EncodingMode2[EncodingMode2.Text=4]="Text"})(EncodingMode||(EncodingMode={}));var elementNames=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(val=>[val.toLowerCase(),val])),attributeNames=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(val=>[val.toLowerCase(),val]));var unencodedElements=new Set(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);function replaceQuotes(value){return value.replace(/"/g,"&quot;")}function formatAttributes(attributes,opts){var _a3;if(!attributes)return;let encode=((_a3=opts.encodeEntities)!==null&&_a3!==void 0?_a3:opts.decodeEntities)===!1?replaceQuotes:opts.xmlMode||opts.encodeEntities!=="utf8"?encodeXML:escapeAttribute;return Object.keys(attributes).map(key2=>{var _a4,_b;let value=(_a4=attributes[key2])!==null&&_a4!==void 0?_a4:"";return opts.xmlMode==="foreign"&&(key2=(_b=attributeNames.get(key2))!==null&&_b!==void 0?_b:key2),!opts.emptyAttrs&&!opts.xmlMode&&value===""?key2:`${key2}="${encode(value)}"`}).join(" ")}var singleTag=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]);function render(node,options={}){let nodes="length"in node?node:[node],output="";for(let i=0;i<nodes.length;i++)output+=renderNode(nodes[i],options);return output}var esm_default=render;function renderNode(node,options){switch(node.type){case Root:return render(node.children,options);case Doctype:case Directive:return renderDirective(node);case Comment:return renderComment(node);case CDATA:return renderCdata(node);case Script:case Style:case Tag:return renderTag(node,options);case Text:return renderText(node,options)}}var foreignModeIntegrationPoints=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),foreignElements=new Set(["svg","math"]);function renderTag(elem,opts){var _a3;opts.xmlMode==="foreign"&&(elem.name=(_a3=elementNames.get(elem.name))!==null&&_a3!==void 0?_a3:elem.name,elem.parent&&foreignModeIntegrationPoints.has(elem.parent.name)&&(opts={...opts,xmlMode:!1})),!opts.xmlMode&&foreignElements.has(elem.name)&&(opts={...opts,xmlMode:"foreign"});let tag=`<${elem.name}`,attribs=formatAttributes(elem.attribs,opts);return attribs&&(tag+=` ${attribs}`),elem.children.length===0&&(opts.xmlMode?opts.selfClosingTags!==!1:opts.selfClosingTags&&singleTag.has(elem.name))?(opts.xmlMode||(tag+=" "),tag+="/>"):(tag+=">",elem.children.length>0&&(tag+=render(elem.children,opts)),(opts.xmlMode||!singleTag.has(elem.name))&&(tag+=`</${elem.name}>`)),tag}function renderDirective(elem){return`<${elem.data}>`}function renderText(elem,opts){var _a3;let data=elem.data||"";return((_a3=opts.encodeEntities)!==null&&_a3!==void 0?_a3:opts.decodeEntities)!==!1&&!(!opts.xmlMode&&elem.parent&&unencodedElements.has(elem.parent.name))&&(data=opts.xmlMode||opts.encodeEntities!=="utf8"?encodeXML(data):escapeText(data)),data}function renderCdata(elem){return`<![CDATA[${elem.children[0].data}]]>`}function renderComment(elem){return`<!--${elem.data}-->`}function getOuterHTML(node,options){return esm_default(node,options)}function getInnerHTML(node,options){return hasChildren(node)?node.children.map(node2=>getOuterHTML(node2,options)).join(""):""}function getText(node){return Array.isArray(node)?node.map(getText).join(""):isTag2(node)?node.name==="br"?`
86
+ `:getText(node.children):isCDATA(node)?getText(node.children):isText(node)?node.data:""}function textContent(node){return Array.isArray(node)?node.map(textContent).join(""):hasChildren(node)&&!isComment(node)?textContent(node.children):isText(node)?node.data:""}function innerText(node){return Array.isArray(node)?node.map(innerText).join(""):hasChildren(node)&&(node.type===ElementType.Tag||isCDATA(node))?innerText(node.children):isText(node)?node.data:""}function getChildren(elem){return hasChildren(elem)?elem.children:[]}function getParent(elem){return elem.parent||null}function getSiblings(elem){let parent=getParent(elem);if(parent!=null)return getChildren(parent);let siblings=[elem],{prev,next}=elem;for(;prev!=null;)siblings.unshift(prev),{prev}=prev;for(;next!=null;)siblings.push(next),{next}=next;return siblings}function getAttributeValue(elem,name){var _a3;return(_a3=elem.attribs)===null||_a3===void 0?void 0:_a3[name]}function hasAttrib(elem,name){return elem.attribs!=null&&Object.prototype.hasOwnProperty.call(elem.attribs,name)&&elem.attribs[name]!=null}function getName(elem){return elem.name}function nextElementSibling(elem){let{next}=elem;for(;next!==null&&!isTag2(next);)({next}=next);return next}function prevElementSibling(elem){let{prev}=elem;for(;prev!==null&&!isTag2(prev);)({prev}=prev);return prev}function removeElement(elem){if(elem.prev&&(elem.prev.next=elem.next),elem.next&&(elem.next.prev=elem.prev),elem.parent){let childs=elem.parent.children,childsIndex=childs.lastIndexOf(elem);childsIndex>=0&&childs.splice(childsIndex,1)}elem.next=null,elem.prev=null,elem.parent=null}function replaceElement(elem,replacement){let prev=replacement.prev=elem.prev;prev&&(prev.next=replacement);let next=replacement.next=elem.next;next&&(next.prev=replacement);let parent=replacement.parent=elem.parent;if(parent){let childs=parent.children;childs[childs.lastIndexOf(elem)]=replacement,elem.parent=null}}function appendChild(parent,child){if(removeElement(child),child.next=null,child.parent=parent,parent.children.push(child)>1){let sibling=parent.children[parent.children.length-2];sibling.next=child,child.prev=sibling}else child.prev=null}function append(elem,next){removeElement(next);let{parent}=elem,currNext=elem.next;if(next.next=currNext,next.prev=elem,elem.next=next,next.parent=parent,currNext){if(currNext.prev=next,parent){let childs=parent.children;childs.splice(childs.lastIndexOf(currNext),0,next)}}else parent&&parent.children.push(next)}function prependChild(parent,child){if(removeElement(child),child.parent=parent,child.prev=null,parent.children.unshift(child)!==1){let sibling=parent.children[1];sibling.prev=child,child.next=sibling}else child.next=null}function prepend(elem,prev){removeElement(prev);let{parent}=elem;if(parent){let childs=parent.children;childs.splice(childs.indexOf(elem),0,prev)}elem.prev&&(elem.prev.next=prev),prev.parent=parent,prev.prev=elem.prev,prev.next=elem,elem.prev=prev}function filter(test,node,recurse=!0,limit=1/0){return find(test,Array.isArray(node)?node:[node],recurse,limit)}function find(test,nodes,recurse,limit){let result=[],nodeStack=[Array.isArray(nodes)?nodes:[nodes]],indexStack=[0];for(;;){if(indexStack[0]>=nodeStack[0].length){if(indexStack.length===1)return result;nodeStack.shift(),indexStack.shift();continue}let elem=nodeStack[0][indexStack[0]++];if(test(elem)&&(result.push(elem),--limit<=0))return result;recurse&&hasChildren(elem)&&elem.children.length>0&&(indexStack.unshift(0),nodeStack.unshift(elem.children))}}function findOneChild(test,nodes){return nodes.find(test)}function findOne(test,nodes,recurse=!0){let searchedNodes=Array.isArray(nodes)?nodes:[nodes];for(let i=0;i<searchedNodes.length;i++){let node=searchedNodes[i];if(isTag2(node)&&test(node))return node;if(recurse&&hasChildren(node)&&node.children.length>0){let found=findOne(test,node.children,!0);if(found)return found}}return null}function existsOne(test,nodes){return(Array.isArray(nodes)?nodes:[nodes]).some(node=>isTag2(node)&&test(node)||hasChildren(node)&&existsOne(test,node.children))}function findAll(test,nodes){let result=[],nodeStack=[Array.isArray(nodes)?nodes:[nodes]],indexStack=[0];for(;;){if(indexStack[0]>=nodeStack[0].length){if(nodeStack.length===1)return result;nodeStack.shift(),indexStack.shift();continue}let elem=nodeStack[0][indexStack[0]++];isTag2(elem)&&test(elem)&&result.push(elem),hasChildren(elem)&&elem.children.length>0&&(indexStack.unshift(0),nodeStack.unshift(elem.children))}}var Checks={tag_name(name){return typeof name=="function"?elem=>isTag2(elem)&&name(elem.name):name==="*"?isTag2:elem=>isTag2(elem)&&elem.name===name},tag_type(type){return typeof type=="function"?elem=>type(elem.type):elem=>elem.type===type},tag_contains(data){return typeof data=="function"?elem=>isText(elem)&&data(elem.data):elem=>isText(elem)&&elem.data===data}};function getAttribCheck(attrib,value){return typeof value=="function"?elem=>isTag2(elem)&&value(elem.attribs[attrib]):elem=>isTag2(elem)&&elem.attribs[attrib]===value}function combineFuncs(a,b){return elem=>a(elem)||b(elem)}function compileTest(options){let funcs=Object.keys(options).map(key2=>{let value=options[key2];return Object.prototype.hasOwnProperty.call(Checks,key2)?Checks[key2](value):getAttribCheck(key2,value)});return funcs.length===0?null:funcs.reduce(combineFuncs)}function testElement(options,node){let test=compileTest(options);return test?test(node):!0}function getElements(options,nodes,recurse,limit=1/0){let test=compileTest(options);return test?filter(test,nodes,recurse,limit):[]}function getElementById(id,nodes,recurse=!0){return Array.isArray(nodes)||(nodes=[nodes]),findOne(getAttribCheck("id",id),nodes,recurse)}function getElementsByTagName(tagName19,nodes,recurse=!0,limit=1/0){return filter(Checks.tag_name(tagName19),nodes,recurse,limit)}function getElementsByClassName(className,nodes,recurse=!0,limit=1/0){return filter(getAttribCheck("class",className),nodes,recurse,limit)}function getElementsByTagType(type,nodes,recurse=!0,limit=1/0){return filter(Checks.tag_type(type),nodes,recurse,limit)}function removeSubsets(nodes){let idx=nodes.length;for(;--idx>=0;){let node=nodes[idx];if(idx>0&&nodes.lastIndexOf(node,idx-1)>=0){nodes.splice(idx,1);continue}for(let ancestor=node.parent;ancestor;ancestor=ancestor.parent)if(nodes.includes(ancestor)){nodes.splice(idx,1);break}}return nodes}var DocumentPosition;(function(DocumentPosition2){DocumentPosition2[DocumentPosition2.DISCONNECTED=1]="DISCONNECTED",DocumentPosition2[DocumentPosition2.PRECEDING=2]="PRECEDING",DocumentPosition2[DocumentPosition2.FOLLOWING=4]="FOLLOWING",DocumentPosition2[DocumentPosition2.CONTAINS=8]="CONTAINS",DocumentPosition2[DocumentPosition2.CONTAINED_BY=16]="CONTAINED_BY"})(DocumentPosition||(DocumentPosition={}));function compareDocumentPosition(nodeA,nodeB){let aParents=[],bParents=[];if(nodeA===nodeB)return 0;let current=hasChildren(nodeA)?nodeA:nodeA.parent;for(;current;)aParents.unshift(current),current=current.parent;for(current=hasChildren(nodeB)?nodeB:nodeB.parent;current;)bParents.unshift(current),current=current.parent;let maxIdx=Math.min(aParents.length,bParents.length),idx=0;for(;idx<maxIdx&&aParents[idx]===bParents[idx];)idx++;if(idx===0)return DocumentPosition.DISCONNECTED;let sharedParent=aParents[idx-1],siblings=sharedParent.children,aSibling=aParents[idx],bSibling=bParents[idx];return siblings.indexOf(aSibling)>siblings.indexOf(bSibling)?sharedParent===nodeB?DocumentPosition.FOLLOWING|DocumentPosition.CONTAINED_BY:DocumentPosition.FOLLOWING:sharedParent===nodeA?DocumentPosition.PRECEDING|DocumentPosition.CONTAINS:DocumentPosition.PRECEDING}function uniqueSort(nodes){return nodes=nodes.filter((node,i,arr)=>!arr.includes(node,i+1)),nodes.sort((a,b)=>{let relative2=compareDocumentPosition(a,b);return relative2&DocumentPosition.PRECEDING?-1:relative2&DocumentPosition.FOLLOWING?1:0}),nodes}function getFeed(doc){let feedRoot=getOneElement(isValidFeed,doc);return feedRoot?feedRoot.name==="feed"?getAtomFeed(feedRoot):getRssFeed(feedRoot):null}function getAtomFeed(feedRoot){var _a3;let childs=feedRoot.children,feed={type:"atom",items:getElementsByTagName("entry",childs).map(item=>{var _a4;let{children}=item,entry={media:getMediaElements(children)};addConditionally(entry,"id","id",children),addConditionally(entry,"title","title",children);let href2=(_a4=getOneElement("link",children))===null||_a4===void 0?void 0:_a4.attribs.href;href2&&(entry.link=href2);let description=fetch2("summary",children)||fetch2("content",children);description&&(entry.description=description);let pubDate=fetch2("updated",children);return pubDate&&(entry.pubDate=new Date(pubDate)),entry})};addConditionally(feed,"id","id",childs),addConditionally(feed,"title","title",childs);let href=(_a3=getOneElement("link",childs))===null||_a3===void 0?void 0:_a3.attribs.href;href&&(feed.link=href),addConditionally(feed,"description","subtitle",childs);let updated=fetch2("updated",childs);return updated&&(feed.updated=new Date(updated)),addConditionally(feed,"author","email",childs,!0),feed}function getRssFeed(feedRoot){var _a3,_b;let childs=(_b=(_a3=getOneElement("channel",feedRoot.children))===null||_a3===void 0?void 0:_a3.children)!==null&&_b!==void 0?_b:[],feed={type:feedRoot.name.substr(0,3),id:"",items:getElementsByTagName("item",feedRoot.children).map(item=>{let{children}=item,entry={media:getMediaElements(children)};addConditionally(entry,"id","guid",children),addConditionally(entry,"title","title",children),addConditionally(entry,"link","link",children),addConditionally(entry,"description","description",children);let pubDate=fetch2("pubDate",children)||fetch2("dc:date",children);return pubDate&&(entry.pubDate=new Date(pubDate)),entry})};addConditionally(feed,"title","title",childs),addConditionally(feed,"link","link",childs),addConditionally(feed,"description","description",childs);let updated=fetch2("lastBuildDate",childs);return updated&&(feed.updated=new Date(updated)),addConditionally(feed,"author","managingEditor",childs,!0),feed}var MEDIA_KEYS_STRING=["url","type","lang"],MEDIA_KEYS_INT=["fileSize","bitrate","framerate","samplingrate","channels","duration","height","width"];function getMediaElements(where){return getElementsByTagName("media:content",where).map(elem=>{let{attribs}=elem,media={medium:attribs.medium,isDefault:!!attribs.isDefault};for(let attrib of MEDIA_KEYS_STRING)attribs[attrib]&&(media[attrib]=attribs[attrib]);for(let attrib of MEDIA_KEYS_INT)attribs[attrib]&&(media[attrib]=parseInt(attribs[attrib],10));return attribs.expression&&(media.expression=attribs.expression),media})}function getOneElement(tagName19,node){return getElementsByTagName(tagName19,node,!0,1)[0]}function fetch2(tagName19,where,recurse=!1){return textContent(getElementsByTagName(tagName19,where,recurse,1)).trim()}function addConditionally(obj,prop2,tagName19,where,recurse=!1){let val=fetch2(tagName19,where,recurse);val&&(obj[prop2]=val)}function isValidFeed(value){return value==="rss"||value==="feed"||value==="rdf:RDF"}function parseDocument(data,options){let handler4=new DomHandler(void 0,options);return new Parser(handler4,options).end(data),handler4.root}function parseDOM(data,options){return parseDocument(data,options).children}function createDocumentStream(callback,options,elementCallback){let handler4=new DomHandler(error=>callback(error,handler4.root),options,elementCallback);return new Parser(handler4,options)}function createDomStream(callback,options,elementCallback){let handler4=new DomHandler(callback,options,elementCallback);return new Parser(handler4,options)}var parseFeedDefaultOptions={xmlMode:!0};function parseFeed(feed,options=parseFeedDefaultOptions){return getFeed(parseDOM(feed,options))}var BLOCK_ELEMENTS=new Set(["ARTICLE","ASIDE","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","COL","COLGROUP","DD","DIV","DL","DT","EMBED","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","LI","UL","OL","P"]),SHOW_ALL=-1,SHOW_ELEMENT=1,SHOW_TEXT=4,SHOW_CDATA_SECTION=8,SHOW_COMMENT=128,DOCUMENT_POSITION_DISCONNECTED=1,DOCUMENT_POSITION_PRECEDING=2,DOCUMENT_POSITION_FOLLOWING=4,DOCUMENT_POSITION_CONTAINS=8,DOCUMENT_POSITION_CONTAINED_BY=16,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC=32,SVG_NAMESPACE="http://www.w3.org/2000/svg";var{assign,create,defineProperties,entries,getOwnPropertyDescriptors,keys,setPrototypeOf}=Object;var $String=String;var getEnd=node=>node.nodeType===1?node[END]:node,ignoreCase=({ownerDocument})=>ownerDocument[MIME].ignoreCase,knownAdjacent=(prev,next)=>{prev[NEXT]=next,next[PREV]=prev},knownBoundaries=(prev,current,next)=>{knownAdjacent(prev,current),knownAdjacent(getEnd(current),next)},knownSegment=(prev,start,end,next)=>{knownAdjacent(prev,start),knownAdjacent(getEnd(end),next)},knownSiblings=(prev,current,next)=>{knownAdjacent(prev,current),knownAdjacent(current,next)},localCase=({localName,ownerDocument})=>ownerDocument[MIME].ignoreCase?localName.toUpperCase():localName,setAdjacent=(prev,next)=>{prev&&(prev[NEXT]=next),next&&(next[PREV]=prev)},htmlToFragment=(ownerDocument,html)=>{let fragment=ownerDocument.createDocumentFragment(),elem=ownerDocument.createElement("");elem.innerHTML=html;let{firstChild,lastChild}=elem;if(firstChild){knownSegment(fragment,firstChild,lastChild,fragment[END]);let child=firstChild;do child.parentNode=fragment;while(child!==lastChild&&(child=getEnd(child)[NEXT]))}return fragment};var shadowRoots=new WeakMap;var reactive=!1,Classes=new WeakMap,customElements=new WeakMap,attributeChangedCallback=(element,attributeName,oldValue,newValue)=>{reactive&&customElements.has(element)&&element.attributeChangedCallback&&element.constructor.observedAttributes.includes(attributeName)&&element.attributeChangedCallback(attributeName,oldValue,newValue)},createTrigger=(method,isConnected2)=>element=>{if(customElements.has(element)){let info=customElements.get(element);info.connected!==isConnected2&&element.isConnected===isConnected2&&(info.connected=isConnected2,method in element&&element[method]())}},triggerConnected=createTrigger("connectedCallback",!0),connectedCallback=element=>{if(reactive){triggerConnected(element),shadowRoots.has(element)&&(element=shadowRoots.get(element).shadowRoot);let{[NEXT]:next,[END]:end}=element;for(;next!==end;)next.nodeType===1&&triggerConnected(next),next=next[NEXT]}},triggerDisconnected=createTrigger("disconnectedCallback",!1),disconnectedCallback=element=>{if(reactive){triggerDisconnected(element),shadowRoots.has(element)&&(element=shadowRoots.get(element).shadowRoot);let{[NEXT]:next,[END]:end}=element;for(;next!==end;)next.nodeType===1&&triggerDisconnected(next),next=next[NEXT]}},CustomElementRegistry=class{constructor(ownerDocument){this.ownerDocument=ownerDocument,this.registry=new Map,this.waiting=new Map,this.active=!1}define(localName,Class,options={}){let{ownerDocument,registry,waiting}=this;if(registry.has(localName))throw new Error("unable to redefine "+localName);if(Classes.has(Class))throw new Error("unable to redefine the same class: "+Class);this.active=reactive=!0;let{extends:extend}=options;Classes.set(Class,{ownerDocument,options:{is:extend?localName:""},localName:extend||localName});let check=extend?element=>element.localName===extend&&element.getAttribute("is")===localName:element=>element.localName===localName;if(registry.set(localName,{Class,check}),waiting.has(localName)){for(let resolve2 of waiting.get(localName))resolve2(Class);waiting.delete(localName)}ownerDocument.querySelectorAll(extend?`${extend}[is="${localName}"]`:localName).forEach(this.upgrade,this)}upgrade(element){if(customElements.has(element))return;let{ownerDocument,registry}=this,ce=element.getAttribute("is")||element.localName;if(registry.has(ce)){let{Class,check}=registry.get(ce);if(check(element)){let{attributes,isConnected:isConnected2}=element;for(let attr of attributes)element.removeAttributeNode(attr);let values=entries(element);for(let[key2]of values)delete element[key2];setPrototypeOf(element,Class.prototype),ownerDocument[UPGRADE]={element,values},new Class(ownerDocument,ce),customElements.set(element,{connected:isConnected2});for(let attr of attributes)element.setAttributeNode(attr);isConnected2&&element.connectedCallback&&element.connectedCallback()}}}whenDefined(localName){let{registry,waiting}=this;return new Promise(resolve2=>{registry.has(localName)?resolve2(registry.get(localName).Class):(waiting.has(localName)||waiting.set(localName,[]),waiting.get(localName).push(resolve2))})}get(localName){let info=this.registry.get(localName);return info&&info.Class}getName(Class){if(Classes.has(Class)){let{localName}=Classes.get(Class);return localName}return null}};var{Parser:Parser2}=esm_exports3,notParsing=!0,append2=(self,node,active)=>{let end=self[END];return node.parentNode=self,knownBoundaries(end[PREV],node,end),active&&node.nodeType===1&&connectedCallback(node),node},attribute=(element,end,attribute2,value,active)=>{attribute2[VALUE]=value,attribute2.ownerElement=element,knownSiblings(end[PREV],attribute2,end),attribute2.name==="class"&&(element.className=value),active&&attributeChangedCallback(element,attribute2.name,null,value)};var parseFromString=(document,isHTML,markupLanguage)=>{let{active,registry}=document[CUSTOM_ELEMENTS],node=document,ownerSVGElement=null,parsingCData=!1;notParsing=!1;let content=new Parser2({onprocessinginstruction(name,data){name.toLowerCase()==="!doctype"&&(document.doctype=data.slice(name.length).trim())},onopentag(name,attributes){let create3=!0;if(isHTML){if(ownerSVGElement)node=append2(node,document.createElementNS(SVG_NAMESPACE,name),active),node.ownerSVGElement=ownerSVGElement,create3=!1;else if(name==="svg"||name==="SVG")ownerSVGElement=document.createElementNS(SVG_NAMESPACE,name),node=append2(node,ownerSVGElement,active),create3=!1;else if(active){let ce=name.includes("-")?name:attributes.is||"";if(ce&&registry.has(ce)){let{Class}=registry.get(ce);node=append2(node,new Class,active),delete attributes.is,create3=!1}}}create3&&(node=append2(node,document.createElement(name),!1));let end=node[END];for(let name2 of keys(attributes))attribute(node,end,document.createAttribute(name2),attributes[name2],active)},oncomment(data){append2(node,document.createComment(data),active)},ontext(text){parsingCData?append2(node,document.createCDATASection(text),active):append2(node,document.createTextNode(text),active)},oncdatastart(){parsingCData=!0},oncdataend(){parsingCData=!1},onclosetag(){isHTML&&node===ownerSVGElement&&(ownerSVGElement=null),node=node.parentNode}},{lowerCaseAttributeNames:!1,decodeEntities:!0,xmlMode:!isHTML});return content.write(markupLanguage),content.end(),notParsing=!0,document};var htmlClasses=new Map,registerHTMLClass=(names,Class)=>{for(let name of[].concat(names))htmlClasses.set(name,Class),htmlClasses.set(name.toUpperCase(),Class)};var loopSegment=({[NEXT]:next,[END]:end},json)=>{for(;next!==end;){switch(next.nodeType){case 2:attrAsJSON(next,json);break;case 3:case 8:case 4:characterDataAsJSON(next,json);break;case 1:elementAsJSON(next,json),next=getEnd(next);break;case 10:documentTypeAsJSON(next,json);break}next=next[NEXT]}let last=json.length-1,value=json[last];typeof value=="number"&&value<0?json[last]+=-1:json.push(-1)},attrAsJSON=(attr,json)=>{json.push(2,attr.name);let value=attr[VALUE].trim();value&&json.push(value)},characterDataAsJSON=(node,json)=>{let value=node[VALUE];value.trim()&&json.push(node.nodeType,value)},nonElementAsJSON=(node,json)=>{json.push(node.nodeType),loopSegment(node,json)},documentTypeAsJSON=({name,publicId,systemId},json)=>{json.push(10,name),publicId&&json.push(publicId),systemId&&json.push(systemId)},elementAsJSON=(element,json)=>{json.push(1,element.localName),loopSegment(element,json)};var createRecord=(type,target,element,addedNodes,removedNodes,attributeName,oldValue)=>({type,target,addedNodes,removedNodes,attributeName,oldValue,previousSibling:element?.previousSibling||null,nextSibling:element?.nextSibling||null}),queueAttribute=(observer,target,attributeName,attributeFilter,attributeOldValue,oldValue)=>{if(!attributeFilter||attributeFilter.includes(attributeName)){let{callback,records,scheduled}=observer;records.push(createRecord("attributes",target,null,[],[],attributeName,attributeOldValue?oldValue:void 0)),scheduled||(observer.scheduled=!0,Promise.resolve().then(()=>{observer.scheduled=!1,callback(records.splice(0),observer)}))}},attributeChangedCallback2=(element,attributeName,oldValue)=>{let{ownerDocument}=element,{active,observers}=ownerDocument[MUTATION_OBSERVER];if(active){for(let observer of observers)for(let[target,{childList,subtree,attributes,attributeFilter,attributeOldValue}]of observer.nodes)if(childList){if(subtree&&(target===ownerDocument||target.contains(element))||!subtree&&target.children.includes(element)){queueAttribute(observer,element,attributeName,attributeFilter,attributeOldValue,oldValue);break}}else if(attributes&&target===element){queueAttribute(observer,element,attributeName,attributeFilter,attributeOldValue,oldValue);break}}},moCallback=(element,parentNode)=>{let{ownerDocument}=element,{active,observers}=ownerDocument[MUTATION_OBSERVER];if(active){for(let observer of observers)for(let[target,{subtree,childList,characterData}]of observer.nodes)if(childList&&(parentNode&&(target===parentNode||subtree&&target.contains(parentNode))||!parentNode&&(subtree&&(target===ownerDocument||target.contains(element))||!subtree&&target[characterData?"childNodes":"children"].includes(element)))){let{callback,records,scheduled}=observer;records.push(createRecord("childList",target,element,parentNode?[]:[element],parentNode?[element]:[])),scheduled||(observer.scheduled=!0,Promise.resolve().then(()=>{observer.scheduled=!1,callback(records.splice(0),observer)}));break}}},MutationObserverClass=class{constructor(ownerDocument){let observers=new Set;this.observers=observers,this.active=!1,this.class=class{constructor(callback){this.callback=callback,this.nodes=new Map,this.records=[],this.scheduled=!1}disconnect(){this.records.splice(0),this.nodes.clear(),observers.delete(this),ownerDocument[MUTATION_OBSERVER].active=!!observers.size}observe(target,options={subtree:!1,childList:!1,attributes:!1,attributeFilter:null,attributeOldValue:!1,characterData:!1}){("attributeOldValue"in options||"attributeFilter"in options)&&(options.attributes=!0),options.childList=!!options.childList,options.subtree=!!options.subtree,this.nodes.set(target,options),observers.add(this),ownerDocument[MUTATION_OBSERVER].active=!0}takeRecords(){return this.records.splice(0)}}}};var emptyAttributes=new Set(["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","class","contenteditable","controls","default","defer","disabled","draggable","formnovalidate","hidden","id","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected","style","truespeed"]),setAttribute=(element,attribute2)=>{let{[VALUE]:value,name}=attribute2;attribute2.ownerElement=element,knownSiblings(element,attribute2,element[NEXT]),name==="class"&&(element.className=value),attributeChangedCallback2(element,name,null),attributeChangedCallback(element,name,null,value)},removeAttribute=(element,attribute2)=>{let{[VALUE]:value,name}=attribute2;knownAdjacent(attribute2[PREV],attribute2[NEXT]),attribute2.ownerElement=attribute2[PREV]=attribute2[NEXT]=null,name==="class"&&(element[CLASS_LIST]=null),attributeChangedCallback2(element,name,value),attributeChangedCallback(element,name,value,null)},booleanAttribute={get(element,name){return element.hasAttribute(name)},set(element,name,value){value?element.setAttribute(name,""):element.removeAttribute(name)}},numericAttribute={get(element,name){return parseFloat(element.getAttribute(name)||0)},set(element,name,value){element.setAttribute(name,value)}},stringAttribute={get(element,name){return element.getAttribute(name)||""},set(element,name,value){element.setAttribute(name,value)}};var wm=new WeakMap;function dispatch(event,listener){return typeof listener=="function"?listener.call(event.target,event):listener.handleEvent(event),event._stopImmediatePropagationFlag}function invokeListeners({currentTarget,target}){let map=wm.get(currentTarget);if(map&&map.has(this.type)){let listeners=map.get(this.type);currentTarget===target?this.eventPhase=this.AT_TARGET:this.eventPhase=this.BUBBLING_PHASE,this.currentTarget=currentTarget,this.target=target;for(let[listener,options]of listeners)if(options&&options.once&&listeners.delete(listener),dispatch(this,listener))break;return delete this.currentTarget,delete this.target,this.cancelBubble}}var DOMEventTarget=class{constructor(){wm.set(this,new Map)}_getParent(){return null}addEventListener(type,listener,options){let map=wm.get(this);map.has(type)||map.set(type,new Map),map.get(type).set(listener,options)}removeEventListener(type,listener){let map=wm.get(this);if(map.has(type)){let listeners=map.get(type);listeners.delete(listener)&&!listeners.size&&map.delete(type)}}dispatchEvent(event){let node=this;for(event.eventPhase=event.CAPTURING_PHASE;node;)node.dispatchEvent&&event._path.push({currentTarget:node,target:this}),node=event.bubbles&&node._getParent&&node._getParent();return event._path.some(invokeListeners,event),event._path=[],event.eventPhase=event.NONE,!event.defaultPrevented}};var NodeList=class extends Array{item(i){return i<this.length?this[i]:null}};var getParentNodeCount=({parentNode})=>{let count=0;for(;parentNode;)count++,parentNode=parentNode.parentNode;return count},Node2=class extends DOMEventTarget{static get ELEMENT_NODE(){return 1}static get ATTRIBUTE_NODE(){return 2}static get TEXT_NODE(){return 3}static get CDATA_SECTION_NODE(){return 4}static get COMMENT_NODE(){return 8}static get DOCUMENT_NODE(){return 9}static get DOCUMENT_FRAGMENT_NODE(){return 11}static get DOCUMENT_TYPE_NODE(){return 10}constructor(ownerDocument,localName,nodeType){super(),this.ownerDocument=ownerDocument,this.localName=localName,this.nodeType=nodeType,this.parentNode=null,this[NEXT]=null,this[PREV]=null}get ELEMENT_NODE(){return 1}get ATTRIBUTE_NODE(){return 2}get TEXT_NODE(){return 3}get CDATA_SECTION_NODE(){return 4}get COMMENT_NODE(){return 8}get DOCUMENT_NODE(){return 9}get DOCUMENT_FRAGMENT_NODE(){return 11}get DOCUMENT_TYPE_NODE(){return 10}get baseURI(){let ownerDocument=this.nodeType===9?this:this.ownerDocument;if(ownerDocument){let base=ownerDocument.querySelector("base");if(base)return base.getAttribute("href");let{location}=ownerDocument.defaultView;if(location)return location.href}return null}get isConnected(){return!1}get nodeName(){return this.localName}get parentElement(){return null}get previousSibling(){return null}get previousElementSibling(){return null}get nextSibling(){return null}get nextElementSibling(){return null}get childNodes(){return new NodeList}get firstChild(){return null}get lastChild(){return null}get nodeValue(){return null}set nodeValue(value){}get textContent(){return null}set textContent(value){}normalize(){}cloneNode(){return null}contains(){return!1}insertBefore(newNode,referenceNode){return newNode}appendChild(child){return child}replaceChild(newChild,oldChild){return oldChild}removeChild(child){return child}toString(){return""}hasChildNodes(){return!!this.lastChild}isSameNode(node){return this===node}compareDocumentPosition(target){let result=0;if(this!==target){let self=getParentNodeCount(this),other=getParentNodeCount(target);if(self<other)result+=DOCUMENT_POSITION_FOLLOWING,this.contains(target)&&(result+=DOCUMENT_POSITION_CONTAINED_BY);else if(other<self)result+=DOCUMENT_POSITION_PRECEDING,target.contains(this)&&(result+=DOCUMENT_POSITION_CONTAINS);else if(self&&other){let{childNodes}=this.parentNode;childNodes.indexOf(this)<childNodes.indexOf(target)?result+=DOCUMENT_POSITION_FOLLOWING:result+=DOCUMENT_POSITION_PRECEDING}(!self||!other)&&(result+=DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC,result+=DOCUMENT_POSITION_DISCONNECTED)}return result}isEqualNode(node){if(this===node)return!0;if(this.nodeType===node.nodeType){switch(this.nodeType){case 9:case 11:{let aNodes=this.childNodes,bNodes=node.childNodes;return aNodes.length===bNodes.length&&aNodes.every((node2,i)=>node2.isEqualNode(bNodes[i]))}}return this.toString()===node.toString()}return!1}_getParent(){return this.parentNode}getRootNode(){let root=this;for(;root.parentNode;)root=root.parentNode;return root}};var{replace}="",ca=/[<>&\xA0]/g,esca={"\xA0":"&#160;","&":"&amp;","<":"&lt;",">":"&gt;"},pe=m=>esca[m],escape2=es=>replace.call(es,ca,pe);var QUOTE=/"/g,Attr=class _Attr extends Node2{constructor(ownerDocument,name,value=""){super(ownerDocument,name,2),this.ownerElement=null,this.name=$String(name),this[VALUE]=$String(value),this[CHANGED]=!1}get value(){return this[VALUE]}set value(newValue){let{[VALUE]:oldValue,name,ownerElement}=this;this[VALUE]=$String(newValue),this[CHANGED]=!0,ownerElement&&(attributeChangedCallback2(ownerElement,name,oldValue),attributeChangedCallback(ownerElement,name,oldValue,this[VALUE]))}cloneNode(){let{ownerDocument,name,[VALUE]:value}=this;return new _Attr(ownerDocument,name,value)}toString(){let{name,[VALUE]:value}=this;if(emptyAttributes.has(name)&&!value)return ignoreCase(this)?name:`${name}=""`;let escapedValue=(ignoreCase(this)?value:escape2(value)).replace(QUOTE,"&quot;");return`${name}="${escapedValue}"`}toJSON(){let json=[];return attrAsJSON(this,json),json}};var isConnected=({ownerDocument,parentNode})=>{for(;parentNode;){if(parentNode===ownerDocument)return!0;parentNode=parentNode.parentNode||parentNode.host}return!1},parentElement=({parentNode})=>{if(parentNode)switch(parentNode.nodeType){case 9:case 11:return null}return parentNode},previousSibling=({[PREV]:prev})=>{switch(prev?prev.nodeType:0){case-1:return prev[START];case 3:case 8:case 4:return prev}return null},nextSibling=node=>{let next=getEnd(node)[NEXT];return next&&(next.nodeType===-1?null:next)};var nextElementSibling2=node=>{let next=nextSibling(node);for(;next&&next.nodeType!==1;)next=nextSibling(next);return next},previousElementSibling=node=>{let prev=previousSibling(node);for(;prev&&prev.nodeType!==1;)prev=previousSibling(prev);return prev};var asFragment=(ownerDocument,nodes)=>{let fragment=ownerDocument.createDocumentFragment();return fragment.append(...nodes),fragment},before=(node,nodes)=>{let{ownerDocument,parentNode}=node;parentNode&&parentNode.insertBefore(asFragment(ownerDocument,nodes),node)},after=(node,nodes)=>{let{ownerDocument,parentNode}=node;parentNode&&parentNode.insertBefore(asFragment(ownerDocument,nodes),getEnd(node)[NEXT])},replaceWith=(node,nodes)=>{let{ownerDocument,parentNode}=node;parentNode&&(nodes.includes(node)&&replaceWith(node,[node=node.cloneNode()]),parentNode.insertBefore(asFragment(ownerDocument,nodes),node),node.remove())},remove=(prev,current,next)=>{let{parentNode,nodeType}=current;(prev||next)&&(setAdjacent(prev,next),current[PREV]=null,getEnd(current)[NEXT]=null),parentNode&&(current.parentNode=null,moCallback(current,parentNode),nodeType===1&&disconnectedCallback(current))};var CharacterData=class extends Node2{constructor(ownerDocument,localName,nodeType,data){super(ownerDocument,localName,nodeType),this[VALUE]=$String(data)}get isConnected(){return isConnected(this)}get parentElement(){return parentElement(this)}get previousSibling(){return previousSibling(this)}get nextSibling(){return nextSibling(this)}get previousElementSibling(){return previousElementSibling(this)}get nextElementSibling(){return nextElementSibling2(this)}before(...nodes){before(this,nodes)}after(...nodes){after(this,nodes)}replaceWith(...nodes){replaceWith(this,nodes)}remove(){remove(this[PREV],this,this[NEXT])}get data(){return this[VALUE]}set data(value){this[VALUE]=$String(value),moCallback(this,this.parentNode)}get nodeValue(){return this.data}set nodeValue(value){this.data=value}get textContent(){return this.data}set textContent(value){this.data=value}get length(){return this.data.length}substringData(offset,count){return this.data.substr(offset,count)}appendData(data){this.data+=data}insertData(offset,data){let{data:t}=this;this.data=t.slice(0,offset)+data+t.slice(offset)}deleteData(offset,count){let{data:t}=this;this.data=t.slice(0,offset)+t.slice(offset+count)}replaceData(offset,count,data){let{data:t}=this;this.data=t.slice(0,offset)+data+t.slice(offset+count)}toJSON(){let json=[];return characterDataAsJSON(this,json),json}};var CDATASection=class _CDATASection extends CharacterData{constructor(ownerDocument,data=""){super(ownerDocument,"#cdatasection",4,data)}cloneNode(){let{ownerDocument,[VALUE]:data}=this;return new _CDATASection(ownerDocument,data)}toString(){return`<![CDATA[${this[VALUE]}]]>`}};var Comment3=class _Comment extends CharacterData{constructor(ownerDocument,data=""){super(ownerDocument,"#comment",8,data)}cloneNode(){let{ownerDocument,[VALUE]:data}=this;return new _Comment(ownerDocument,data)}toString(){return`<!--${this[VALUE]}-->`}};init_dist();var{isArray}=Array,isTag3=({nodeType})=>nodeType===1,existsOne2=(test,elements)=>elements.some(element=>isTag3(element)&&(test(element)||existsOne2(test,getChildren2(element)))),getAttributeValue2=(element,name)=>name==="class"?element.classList.value:element.getAttribute(name),getChildren2=({childNodes})=>childNodes,getName2=element=>{let{localName}=element;return ignoreCase(element)?localName.toLowerCase():localName},getParent2=({parentNode})=>parentNode,getSiblings2=element=>{let{parentNode}=element;return parentNode?getChildren2(parentNode):element},getText2=node=>isArray(node)?node.map(getText2).join(""):isTag3(node)?getText2(getChildren2(node)):node.nodeType===3?node.data:"",hasAttrib2=(element,name)=>element.hasAttribute(name),removeSubsets2=nodes=>{let{length}=nodes;for(;length--;){let node=nodes[length];if(length&&-1<nodes.lastIndexOf(node,length-1)){nodes.splice(length,1);continue}for(let{parentNode}=node;parentNode;parentNode=parentNode.parentNode)if(nodes.includes(parentNode)){nodes.splice(length,1);break}}return nodes},findAll2=(test,nodes)=>{let matches2=[];for(let node of nodes)isTag3(node)&&(test(node)&&matches2.push(node),matches2.push(...findAll2(test,getChildren2(node))));return matches2},findOne2=(test,nodes)=>{for(let node of nodes)if(test(node)||(node=findOne2(test,getChildren2(node))))return node;return null},adapter={isTag:isTag3,existsOne:existsOne2,getAttributeValue:getAttributeValue2,getChildren:getChildren2,getName:getName2,getParent:getParent2,getSiblings:getSiblings2,getText:getText2,hasAttrib:hasAttrib2,removeSubsets:removeSubsets2,findAll:findAll2,findOne:findOne2},prepareMatch=(element,selectors)=>compile(selectors,{context:selectors.includes(":scope")?element:void 0,xmlMode:!ignoreCase(element),adapter}),matches=(element,selectors)=>is(element,selectors,{strict:!0,context:selectors.includes(":scope")?element:void 0,xmlMode:!ignoreCase(element),adapter});var Text3=class _Text extends CharacterData{constructor(ownerDocument,data=""){super(ownerDocument,"#text",3,data)}get wholeText(){let text=[],{previousSibling:previousSibling2,nextSibling:nextSibling2}=this;for(;previousSibling2&&previousSibling2.nodeType===3;){text.unshift(previousSibling2[VALUE]);previousSibling2=previousSibling2.previousSibling}for(text.push(this[VALUE]);nextSibling2&&nextSibling2.nodeType===3;){text.push(nextSibling2[VALUE]);nextSibling2=nextSibling2.nextSibling}return text.join("")}cloneNode(){let{ownerDocument,[VALUE]:data}=this;return new _Text(ownerDocument,data)}toString(){return escape2(this[VALUE])}};var isNode=node=>node instanceof Node2,insert=(parentNode,child,nodes)=>{let{ownerDocument}=parentNode;for(let node of nodes)parentNode.insertBefore(isNode(node)?node:new Text3(ownerDocument,node),child)},ParentNode=class extends Node2{constructor(ownerDocument,localName,nodeType){super(ownerDocument,localName,nodeType),this[PRIVATE]=null,this[NEXT]=this[END]={[NEXT]:null,[PREV]:this,[START]:this,nodeType:-1,ownerDocument:this.ownerDocument,parentNode:null}}get childNodes(){let childNodes=new NodeList,{firstChild}=this;for(;firstChild;)childNodes.push(firstChild),firstChild=nextSibling(firstChild);return childNodes}get children(){let children=new NodeList,{firstElementChild}=this;for(;firstElementChild;)children.push(firstElementChild),firstElementChild=nextElementSibling2(firstElementChild);return children}get firstChild(){let{[NEXT]:next,[END]:end}=this;for(;next.nodeType===2;)next=next[NEXT];return next===end?null:next}get firstElementChild(){let{firstChild}=this;for(;firstChild;){if(firstChild.nodeType===1)return firstChild;firstChild=nextSibling(firstChild)}return null}get lastChild(){let prev=this[END][PREV];switch(prev.nodeType){case-1:return prev[START];case 2:return null}return prev===this?null:prev}get lastElementChild(){let{lastChild}=this;for(;lastChild;){if(lastChild.nodeType===1)return lastChild;lastChild=previousSibling(lastChild)}return null}get childElementCount(){return this.children.length}prepend(...nodes){insert(this,this.firstChild,nodes)}append(...nodes){insert(this,this[END],nodes)}replaceChildren(...nodes){let{[NEXT]:next,[END]:end}=this;for(;next!==end&&next.nodeType===2;)next=next[NEXT];for(;next!==end;){let after2=getEnd(next)[NEXT];next.remove(),next=after2}nodes.length&&insert(this,end,nodes)}getElementsByClassName(className){let elements=new NodeList,{[NEXT]:next,[END]:end}=this;for(;next!==end;)next.nodeType===1&&next.hasAttribute("class")&&next.classList.has(className)&&elements.push(next),next=next[NEXT];return elements}getElementsByTagName(tagName19){let elements=new NodeList,{[NEXT]:next,[END]:end}=this;for(;next!==end;)next.nodeType===1&&(next.localName===tagName19||localCase(next)===tagName19)&&elements.push(next),next=next[NEXT];return elements}querySelector(selectors){let matches2=prepareMatch(this,selectors),{[NEXT]:next,[END]:end}=this;for(;next!==end;){if(next.nodeType===1&&matches2(next))return next;next=next.nodeType===1&&next.localName==="template"?next[END]:next[NEXT]}return null}querySelectorAll(selectors){let matches2=prepareMatch(this,selectors),elements=new NodeList,{[NEXT]:next,[END]:end}=this;for(;next!==end;)next.nodeType===1&&matches2(next)&&elements.push(next),next=next.nodeType===1&&next.localName==="template"?next[END]:next[NEXT];return elements}appendChild(node){return this.insertBefore(node,this[END])}contains(node){let parentNode=node;for(;parentNode&&parentNode!==this;)parentNode=parentNode.parentNode;return parentNode===this}insertBefore(node,before2=null){if(node===before2)return node;if(node===this)throw new Error("unable to append a node to itself");let next=before2||this[END];switch(node.nodeType){case 1:node.remove(),node.parentNode=this,knownBoundaries(next[PREV],node,next),moCallback(node,null),connectedCallback(node);break;case 11:{let{[PRIVATE]:parentNode,firstChild,lastChild}=node;if(firstChild){knownSegment(next[PREV],firstChild,lastChild,next),knownAdjacent(node,node[END]),parentNode&&parentNode.replaceChildren();do firstChild.parentNode=this,moCallback(firstChild,null),firstChild.nodeType===1&&connectedCallback(firstChild);while(firstChild!==lastChild&&(firstChild=nextSibling(firstChild)))}break}case 3:case 8:case 4:node.remove();default:node.parentNode=this,knownSiblings(next[PREV],node,next),moCallback(node,null);break}return node}normalize(){let{[NEXT]:next,[END]:end}=this;for(;next!==end;){let{[NEXT]:$next,[PREV]:$prev,nodeType}=next;nodeType===3&&(next[VALUE]?$prev&&$prev.nodeType===3&&($prev.textContent+=next.textContent,next.remove()):next.remove()),next=$next}}removeChild(node){if(node.parentNode!==this)throw new Error("node is not a child");return node.remove(),node}replaceChild(node,replaced){let next=getEnd(replaced)[NEXT];return replaced.remove(),this.insertBefore(node,next),replaced}};var NonElementParentNode=class extends ParentNode{getElementById(id){let{[NEXT]:next,[END]:end}=this;for(;next!==end;){if(next.nodeType===1&&next.id===id)return next;next=next[NEXT]}return null}cloneNode(deep){let{ownerDocument,constructor}=this,nonEPN=new constructor(ownerDocument);if(deep){let{[END]:end}=nonEPN;for(let node of this.childNodes)nonEPN.insertBefore(node.cloneNode(deep),end)}return nonEPN}toString(){let{childNodes,localName}=this;return`<${localName}>${childNodes.join("")}</${localName}>`}toJSON(){let json=[];return nonElementAsJSON(this,json),json}};var DocumentFragment=class extends NonElementParentNode{constructor(ownerDocument){super(ownerDocument,"#document-fragment",11)}};var DocumentType=class _DocumentType extends Node2{constructor(ownerDocument,name,publicId="",systemId=""){super(ownerDocument,"#document-type",10),this.name=name,this.publicId=publicId,this.systemId=systemId}cloneNode(){let{ownerDocument,name,publicId,systemId}=this;return new _DocumentType(ownerDocument,name,publicId,systemId)}toString(){let{name,publicId,systemId}=this,hasPublic=0<publicId.length,str=[name];return hasPublic&&str.push("PUBLIC",`"${publicId}"`),systemId.length&&(hasPublic||str.push("SYSTEM"),str.push(`"${systemId}"`)),`<!DOCTYPE ${str.join(" ")}>`}toJSON(){let json=[];return documentTypeAsJSON(this,json),json}};var getInnerHtml=node=>node.childNodes.join(""),setInnerHtml=(node,html)=>{let{ownerDocument}=node,{constructor}=ownerDocument,document=new constructor;document[CUSTOM_ELEMENTS]=ownerDocument[CUSTOM_ELEMENTS];let{childNodes}=parseFromString(document,ignoreCase(node),html);node.replaceChildren(...childNodes.map(setOwnerDocument,ownerDocument))};function setOwnerDocument(node){switch(node.ownerDocument=this,node.nodeType){case 1:case 11:node.childNodes.forEach(setOwnerDocument,this);break}return node}var esm_default2=camel=>camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g,"$2$5-$3$6").toLowerCase();var refs=new WeakMap,key=name=>`data-${esm_default2(name)}`,prop=name=>name.slice(5).replace(/-([a-z])/g,(_,$1)=>$1.toUpperCase()),handler={get(dataset,name){if(name in dataset)return refs.get(dataset).getAttribute(key(name))},set(dataset,name,value){return dataset[name]=value,refs.get(dataset).setAttribute(key(name),value),!0},deleteProperty(dataset,name){return name in dataset&&refs.get(dataset).removeAttribute(key(name)),delete dataset[name]}},DOMStringMap=class{constructor(ref){for(let{name,value}of ref.attributes)/^data-/.test(name)&&(this[prop(name)]=value);return refs.set(this,ref),new Proxy(this,handler)}};setPrototypeOf(DOMStringMap.prototype,null);var{add}=Set.prototype,addTokens=(self,tokens)=>{for(let token of tokens)token&&add.call(self,token)},update=({[OWNER_ELEMENT]:ownerElement,value})=>{let attribute2=ownerElement.getAttributeNode("class");attribute2?attribute2.value=value:setAttribute(ownerElement,new Attr(ownerElement.ownerDocument,"class",value))},DOMTokenList=class extends Set{constructor(ownerElement){super(),this[OWNER_ELEMENT]=ownerElement;let attribute2=ownerElement.getAttributeNode("class");attribute2&&addTokens(this,attribute2.value.split(/\s+/))}get length(){return this.size}get value(){return[...this].join(" ")}add(...tokens){addTokens(this,tokens),update(this)}contains(token){return this.has(token)}remove(...tokens){for(let token of tokens)this.delete(token);update(this)}toggle(token,force){if(this.has(token)){if(force)return!0;this.delete(token),update(this)}else if(force||arguments.length===1)return super.add(token),update(this),!0;return!1}replace(token,newToken){return this.has(token)?(this.delete(token),super.add(newToken),update(this),!0):!1}supports(){return!0}};var refs2=new WeakMap,getKeys=style=>[...style.keys()].filter(key2=>key2!==PRIVATE),updateKeys=style=>{let attr=refs2.get(style).getAttributeNode("style");if((!attr||attr[CHANGED]||style.get(PRIVATE)!==attr)&&(style.clear(),attr)){style.set(PRIVATE,attr);for(let rule of attr[VALUE].split(/\s*;\s*/)){let[key2,...rest]=rule.split(":");if(rest.length>0){key2=key2.trim();let value=rest.join(":").trim();key2&&value&&style.set(key2,value)}}}return attr},handler2={get(style,name){return name in prototype?style[name]:(updateKeys(style),name==="length"?getKeys(style).length:/^\d+$/.test(name)?getKeys(style)[name]:style.get(esm_default2(name))??"")},set(style,name,value){if(name==="cssText")style[name]=value;else{let attr=updateKeys(style);if(value==null?style.delete(esm_default2(name)):style.set(esm_default2(name),value),!attr){let element=refs2.get(style);attr=element.ownerDocument.createAttribute("style"),element.setAttributeNode(attr),style.set(PRIVATE,attr)}attr[CHANGED]=!1,attr[VALUE]=style.toString()}return!0}},CSSStyleDeclaration=class extends Map{constructor(element){return super(),refs2.set(this,element),new Proxy(this,handler2)}get cssText(){return this.toString()}set cssText(value){refs2.get(this).setAttribute("style",value)}getPropertyValue(name){let self=this[PRIVATE];return handler2.get(self,name)}setProperty(name,value){let self=this[PRIVATE];handler2.set(self,name,value)}removeProperty(name){let self=this[PRIVATE];handler2.set(self,name,null)}[Symbol.iterator](){let self=this[PRIVATE];updateKeys(self);let keys2=getKeys(self),{length}=keys2,i=0;return{next(){let done=i===length;return{done,value:done?null:keys2[i++]}}}}get[PRIVATE](){return this}toString(){let self=this[PRIVATE];updateKeys(self);let cssText=[];return self.forEach(push,cssText),cssText.join(";")}},{prototype}=CSSStyleDeclaration;function push(value,key2){key2!==PRIVATE&&this.push(`${key2}:${value}`)}function getCurrentTarget(ev){return ev.currentTarget}var GlobalEvent=class{static get BUBBLING_PHASE(){return 3}static get AT_TARGET(){return 2}static get CAPTURING_PHASE(){return 1}static get NONE(){return 0}constructor(type,eventInitDict={}){this.type=type,this.bubbles=!!eventInitDict.bubbles,this.cancelBubble=!1,this._stopImmediatePropagationFlag=!1,this.cancelable=!!eventInitDict.cancelable,this.eventPhase=this.NONE,this.timeStamp=Date.now(),this.defaultPrevented=!1,this.originalTarget=null,this.returnValue=null,this.srcElement=null,this.target=null,this._path=[]}get BUBBLING_PHASE(){return 3}get AT_TARGET(){return 2}get CAPTURING_PHASE(){return 1}get NONE(){return 0}preventDefault(){this.defaultPrevented=!0}composedPath(){return this._path.map(getCurrentTarget)}stopPropagation(){this.cancelBubble=!0}stopImmediatePropagation(){this.stopPropagation(),this._stopImmediatePropagationFlag=!0}};var NamedNodeMap=class extends Array{constructor(ownerElement){super(),this.ownerElement=ownerElement}getNamedItem(name){return this.ownerElement.getAttributeNode(name)}setNamedItem(attr){this.ownerElement.setAttributeNode(attr),this.unshift(attr)}removeNamedItem(name){let item=this.getNamedItem(name);this.ownerElement.removeAttribute(name),this.splice(this.indexOf(item),1)}item(index){return index<this.length?this[index]:null}getNamedItemNS(_,name){return this.getNamedItem(name)}setNamedItemNS(_,attr){return this.setNamedItem(attr)}removeNamedItemNS(_,name){return this.removeNamedItem(name)}};var ShadowRoot=class extends NonElementParentNode{constructor(host){super(host.ownerDocument,"#shadow-root",11),this.host=host}get innerHTML(){return getInnerHtml(this)}set innerHTML(html){setInnerHtml(this,html)}};var attributesHandler={get(target,key2){return key2 in target?target[key2]:target.find(({name})=>name===key2)}},create2=(ownerDocument,element,localName)=>{if("ownerSVGElement"in element){let svg=ownerDocument.createElementNS(SVG_NAMESPACE,localName);return svg.ownerSVGElement=element.ownerSVGElement,svg}return ownerDocument.createElement(localName)},isVoid=({localName,ownerDocument})=>ownerDocument[MIME].voidElements.test(localName),Element2=class extends ParentNode{constructor(ownerDocument,localName){super(ownerDocument,localName,1),this[CLASS_LIST]=null,this[DATASET]=null,this[STYLE]=null}get isConnected(){return isConnected(this)}get parentElement(){return parentElement(this)}get previousSibling(){return previousSibling(this)}get nextSibling(){return nextSibling(this)}get namespaceURI(){return"http://www.w3.org/1999/xhtml"}get previousElementSibling(){return previousElementSibling(this)}get nextElementSibling(){return nextElementSibling2(this)}before(...nodes){before(this,nodes)}after(...nodes){after(this,nodes)}replaceWith(...nodes){replaceWith(this,nodes)}remove(){remove(this[PREV],this,this[END][NEXT])}get id(){return stringAttribute.get(this,"id")}set id(value){stringAttribute.set(this,"id",value)}get className(){return this.classList.value}set className(value){let{classList}=this;classList.clear(),classList.add(...$String(value).split(/\s+/))}get nodeName(){return localCase(this)}get tagName(){return localCase(this)}get classList(){return this[CLASS_LIST]||(this[CLASS_LIST]=new DOMTokenList(this))}get dataset(){return this[DATASET]||(this[DATASET]=new DOMStringMap(this))}getBoundingClientRect(){return{x:0,y:0,bottom:0,height:0,left:0,right:0,top:0,width:0}}get nonce(){return stringAttribute.get(this,"nonce")}set nonce(value){stringAttribute.set(this,"nonce",value)}get style(){return this[STYLE]||(this[STYLE]=new CSSStyleDeclaration(this))}get tabIndex(){return numericAttribute.get(this,"tabindex")||-1}set tabIndex(value){numericAttribute.set(this,"tabindex",value)}get slot(){return stringAttribute.get(this,"slot")}set slot(value){stringAttribute.set(this,"slot",value)}get innerText(){let text=[],{[NEXT]:next,[END]:end}=this;for(;next!==end;)next.nodeType===3?text.push(next.textContent.replace(/\s+/g," ")):text.length&&next[NEXT]!=end&&BLOCK_ELEMENTS.has(next.tagName)&&text.push(`
87
+ `),next=next[NEXT];return text.join("")}get textContent(){let text=[],{[NEXT]:next,[END]:end}=this;for(;next!==end;){let nodeType=next.nodeType;(nodeType===3||nodeType===4)&&text.push(next.textContent),next=next[NEXT]}return text.join("")}set textContent(text){this.replaceChildren(),text!=null&&text!==""&&this.appendChild(new Text3(this.ownerDocument,text))}get innerHTML(){return getInnerHtml(this)}set innerHTML(html){setInnerHtml(this,html)}get outerHTML(){return this.toString()}set outerHTML(html){let template=this.ownerDocument.createElement("");template.innerHTML=html,this.replaceWith(...template.childNodes)}get attributes(){let attributes=new NamedNodeMap(this),next=this[NEXT];for(;next.nodeType===2;)attributes.push(next),next=next[NEXT];return new Proxy(attributes,attributesHandler)}focus(){this.dispatchEvent(new GlobalEvent("focus"))}getAttribute(name){if(name==="class")return this.className;let attribute2=this.getAttributeNode(name);return attribute2&&(ignoreCase(this)?attribute2.value:escape2(attribute2.value))}getAttributeNode(name){let next=this[NEXT];for(;next.nodeType===2;){if(next.name===name)return next;next=next[NEXT]}return null}getAttributeNames(){let attributes=new NodeList,next=this[NEXT];for(;next.nodeType===2;)attributes.push(next.name),next=next[NEXT];return attributes}hasAttribute(name){return!!this.getAttributeNode(name)}hasAttributes(){return this[NEXT].nodeType===2}removeAttribute(name){name==="class"&&this[CLASS_LIST]&&this[CLASS_LIST].clear();let next=this[NEXT];for(;next.nodeType===2;){if(next.name===name){removeAttribute(this,next);return}next=next[NEXT]}}removeAttributeNode(attribute2){let next=this[NEXT];for(;next.nodeType===2;){if(next===attribute2){removeAttribute(this,next);return}next=next[NEXT]}}setAttribute(name,value){if(name==="class")this.className=value;else{let attribute2=this.getAttributeNode(name);attribute2?attribute2.value=value:setAttribute(this,new Attr(this.ownerDocument,name,value))}}setAttributeNode(attribute2){let{name}=attribute2,previously=this.getAttributeNode(name);if(previously!==attribute2){previously&&this.removeAttributeNode(previously);let{ownerElement}=attribute2;ownerElement&&ownerElement.removeAttributeNode(attribute2),setAttribute(this,attribute2)}return previously}toggleAttribute(name,force){return this.hasAttribute(name)?force?!0:(this.removeAttribute(name),!1):force||arguments.length===1?(this.setAttribute(name,""),!0):!1}get shadowRoot(){if(shadowRoots.has(this)){let{mode,shadowRoot}=shadowRoots.get(this);if(mode==="open")return shadowRoot}return null}attachShadow(init){if(shadowRoots.has(this))throw new Error("operation not supported");let shadowRoot=new ShadowRoot(this);return shadowRoots.set(this,{mode:init.mode,shadowRoot}),shadowRoot}matches(selectors){return matches(this,selectors)}closest(selectors){let parentElement2=this,matches2=prepareMatch(parentElement2,selectors);for(;parentElement2&&!matches2(parentElement2);)parentElement2=parentElement2.parentElement;return parentElement2}insertAdjacentElement(position,element){let{parentElement:parentElement2}=this;switch(position){case"beforebegin":if(parentElement2){parentElement2.insertBefore(element,this);break}return null;case"afterbegin":this.insertBefore(element,this.firstChild);break;case"beforeend":this.insertBefore(element,null);break;case"afterend":if(parentElement2){parentElement2.insertBefore(element,this.nextSibling);break}return null}return element}insertAdjacentHTML(position,html){this.insertAdjacentElement(position,htmlToFragment(this.ownerDocument,html))}insertAdjacentText(position,text){let node=this.ownerDocument.createTextNode(text);this.insertAdjacentElement(position,node)}cloneNode(deep=!1){let{ownerDocument,localName}=this,addNext=next2=>{next2.parentNode=parentNode,knownAdjacent($next,next2),$next=next2},clone=create2(ownerDocument,this,localName),parentNode=clone,$next=clone,{[NEXT]:next,[END]:prev}=this;for(;next!==prev&&(deep||next.nodeType===2);){switch(next.nodeType){case-1:knownAdjacent($next,parentNode[END]),$next=parentNode[END],parentNode=parentNode.parentNode;break;case 1:{let node=create2(ownerDocument,next,next.localName);addNext(node),parentNode=node;break}case 2:{let attr=next.cloneNode(deep);attr.ownerElement=parentNode,addNext(attr);break}case 3:case 8:case 4:addNext(next.cloneNode(deep));break}next=next[NEXT]}return knownAdjacent($next,clone[END]),clone}toString(){let out=[],{[END]:end}=this,next={[NEXT]:this},isOpened=!1;do switch(next=next[NEXT],next.nodeType){case 2:{let attr=" "+next;switch(attr){case" id":case" class":case" style":break;default:out.push(attr)}break}case-1:{let start=next[START];isOpened?("ownerSVGElement"in start?out.push(" />"):isVoid(start)?out.push(ignoreCase(start)?">":" />"):out.push(`></${start.localName}>`),isOpened=!1):out.push(`</${start.localName}>`);break}case 1:isOpened&&out.push(">"),next.toString!==this.toString?(out.push(next.toString()),next=next[END],isOpened=!1):(out.push(`<${next.localName}`),isOpened=!0);break;case 3:case 8:case 4:out.push((isOpened?">":"")+next),isOpened=!1;break}while(next!==end);return out.join("")}toJSON(){let json=[];return elementAsJSON(this,json),json}getAttributeNS(_,name){return this.getAttribute(name)}getElementsByTagNameNS(_,name){return this.getElementsByTagName(name)}hasAttributeNS(_,name){return this.hasAttribute(name)}removeAttributeNS(_,name){this.removeAttribute(name)}setAttributeNS(_,name,value){this.setAttribute(name,value)}setAttributeNodeNS(attr){return this.setAttributeNode(attr)}};var classNames=new WeakMap,handler3={get(target,name){return target[name]},set(target,name,value){return target[name]=value,!0}},SVGElement=class extends Element2{constructor(ownerDocument,localName,ownerSVGElement=null){super(ownerDocument,localName),this.ownerSVGElement=ownerSVGElement}get className(){return classNames.has(this)||classNames.set(this,new Proxy({baseVal:"",animVal:""},handler3)),classNames.get(this)}set className(value){let{classList}=this;classList.clear(),classList.add(...$String(value).split(/\s+/))}get namespaceURI(){return"http://www.w3.org/2000/svg"}getAttribute(name){return name==="class"?[...this.classList].join(" "):super.getAttribute(name)}setAttribute(name,value){if(name==="class")this.className=value;else if(name==="style"){let{className}=this;className.baseVal=className.animVal=value}super.setAttribute(name,value)}};var illegalConstructor=()=>{throw new TypeError("Illegal constructor")};function Attr2(){illegalConstructor()}setPrototypeOf(Attr2,Attr);Attr2.prototype=Attr.prototype;function CDATASection2(){illegalConstructor()}setPrototypeOf(CDATASection2,CDATASection);CDATASection2.prototype=CDATASection.prototype;function CharacterData2(){illegalConstructor()}setPrototypeOf(CharacterData2,CharacterData);CharacterData2.prototype=CharacterData.prototype;function Comment4(){illegalConstructor()}setPrototypeOf(Comment4,Comment3);Comment4.prototype=Comment3.prototype;function DocumentFragment2(){illegalConstructor()}setPrototypeOf(DocumentFragment2,DocumentFragment);DocumentFragment2.prototype=DocumentFragment.prototype;function DocumentType2(){illegalConstructor()}setPrototypeOf(DocumentType2,DocumentType);DocumentType2.prototype=DocumentType.prototype;function Element3(){illegalConstructor()}setPrototypeOf(Element3,Element2);Element3.prototype=Element2.prototype;function Node3(){illegalConstructor()}setPrototypeOf(Node3,Node2);Node3.prototype=Node2.prototype;function ShadowRoot2(){illegalConstructor()}setPrototypeOf(ShadowRoot2,ShadowRoot);ShadowRoot2.prototype=ShadowRoot.prototype;function Text4(){illegalConstructor()}setPrototypeOf(Text4,Text3);Text4.prototype=Text3.prototype;function SVGElement2(){illegalConstructor()}setPrototypeOf(SVGElement2,SVGElement);SVGElement2.prototype=SVGElement.prototype;var Facades={Attr:Attr2,CDATASection:CDATASection2,CharacterData:CharacterData2,Comment:Comment4,DocumentFragment:DocumentFragment2,DocumentType:DocumentType2,Element:Element3,Node:Node3,ShadowRoot:ShadowRoot2,Text:Text4,SVGElement:SVGElement2};var Level0=new WeakMap,level0={get(element,name){return Level0.has(element)&&Level0.get(element)[name]||null},set(element,name,value){Level0.has(element)||Level0.set(element,{});let handlers=Level0.get(element),type=name.slice(2);handlers[name]&&element.removeEventListener(type,handlers[name],!1),(handlers[name]=value)&&element.addEventListener(type,value,!1)}},HTMLElement=class extends Element2{static get observedAttributes(){return[]}constructor(ownerDocument=null,localName=""){super(ownerDocument,localName);let ownerLess=!ownerDocument,options;if(ownerLess){let{constructor:Class}=this;if(!Classes.has(Class))throw new Error("unable to initialize this Custom Element");({ownerDocument,localName,options}=Classes.get(Class))}if(ownerDocument[UPGRADE]){let{element,values}=ownerDocument[UPGRADE];ownerDocument[UPGRADE]=null;for(let[key2,value]of values)element[key2]=value;return element}ownerLess&&(this.ownerDocument=this[END].ownerDocument=ownerDocument,this.localName=localName,customElements.set(this,{connected:!1}),options.is&&this.setAttribute("is",options.is))}blur(){this.dispatchEvent(new GlobalEvent("blur"))}click(){let clickEvent=new GlobalEvent("click",{bubbles:!0,cancelable:!0});clickEvent.button=0,this.dispatchEvent(clickEvent)}get accessKeyLabel(){let{accessKey}=this;return accessKey&&`Alt+Shift+${accessKey}`}get isContentEditable(){return this.hasAttribute("contenteditable")}get contentEditable(){return booleanAttribute.get(this,"contenteditable")}set contentEditable(value){booleanAttribute.set(this,"contenteditable",value)}get draggable(){return booleanAttribute.get(this,"draggable")}set draggable(value){booleanAttribute.set(this,"draggable",value)}get hidden(){return booleanAttribute.get(this,"hidden")}set hidden(value){booleanAttribute.set(this,"hidden",value)}get spellcheck(){return booleanAttribute.get(this,"spellcheck")}set spellcheck(value){booleanAttribute.set(this,"spellcheck",value)}get accessKey(){return stringAttribute.get(this,"accesskey")}set accessKey(value){stringAttribute.set(this,"accesskey",value)}get dir(){return stringAttribute.get(this,"dir")}set dir(value){stringAttribute.set(this,"dir",value)}get lang(){return stringAttribute.get(this,"lang")}set lang(value){stringAttribute.set(this,"lang",value)}get title(){return stringAttribute.get(this,"title")}set title(value){stringAttribute.set(this,"title",value)}get onabort(){return level0.get(this,"onabort")}set onabort(value){level0.set(this,"onabort",value)}get onblur(){return level0.get(this,"onblur")}set onblur(value){level0.set(this,"onblur",value)}get oncancel(){return level0.get(this,"oncancel")}set oncancel(value){level0.set(this,"oncancel",value)}get oncanplay(){return level0.get(this,"oncanplay")}set oncanplay(value){level0.set(this,"oncanplay",value)}get oncanplaythrough(){return level0.get(this,"oncanplaythrough")}set oncanplaythrough(value){level0.set(this,"oncanplaythrough",value)}get onchange(){return level0.get(this,"onchange")}set onchange(value){level0.set(this,"onchange",value)}get onclick(){return level0.get(this,"onclick")}set onclick(value){level0.set(this,"onclick",value)}get onclose(){return level0.get(this,"onclose")}set onclose(value){level0.set(this,"onclose",value)}get oncontextmenu(){return level0.get(this,"oncontextmenu")}set oncontextmenu(value){level0.set(this,"oncontextmenu",value)}get oncuechange(){return level0.get(this,"oncuechange")}set oncuechange(value){level0.set(this,"oncuechange",value)}get ondblclick(){return level0.get(this,"ondblclick")}set ondblclick(value){level0.set(this,"ondblclick",value)}get ondrag(){return level0.get(this,"ondrag")}set ondrag(value){level0.set(this,"ondrag",value)}get ondragend(){return level0.get(this,"ondragend")}set ondragend(value){level0.set(this,"ondragend",value)}get ondragenter(){return level0.get(this,"ondragenter")}set ondragenter(value){level0.set(this,"ondragenter",value)}get ondragleave(){return level0.get(this,"ondragleave")}set ondragleave(value){level0.set(this,"ondragleave",value)}get ondragover(){return level0.get(this,"ondragover")}set ondragover(value){level0.set(this,"ondragover",value)}get ondragstart(){return level0.get(this,"ondragstart")}set ondragstart(value){level0.set(this,"ondragstart",value)}get ondrop(){return level0.get(this,"ondrop")}set ondrop(value){level0.set(this,"ondrop",value)}get ondurationchange(){return level0.get(this,"ondurationchange")}set ondurationchange(value){level0.set(this,"ondurationchange",value)}get onemptied(){return level0.get(this,"onemptied")}set onemptied(value){level0.set(this,"onemptied",value)}get onended(){return level0.get(this,"onended")}set onended(value){level0.set(this,"onended",value)}get onerror(){return level0.get(this,"onerror")}set onerror(value){level0.set(this,"onerror",value)}get onfocus(){return level0.get(this,"onfocus")}set onfocus(value){level0.set(this,"onfocus",value)}get oninput(){return level0.get(this,"oninput")}set oninput(value){level0.set(this,"oninput",value)}get oninvalid(){return level0.get(this,"oninvalid")}set oninvalid(value){level0.set(this,"oninvalid",value)}get onkeydown(){return level0.get(this,"onkeydown")}set onkeydown(value){level0.set(this,"onkeydown",value)}get onkeypress(){return level0.get(this,"onkeypress")}set onkeypress(value){level0.set(this,"onkeypress",value)}get onkeyup(){return level0.get(this,"onkeyup")}set onkeyup(value){level0.set(this,"onkeyup",value)}get onload(){return level0.get(this,"onload")}set onload(value){level0.set(this,"onload",value)}get onloadeddata(){return level0.get(this,"onloadeddata")}set onloadeddata(value){level0.set(this,"onloadeddata",value)}get onloadedmetadata(){return level0.get(this,"onloadedmetadata")}set onloadedmetadata(value){level0.set(this,"onloadedmetadata",value)}get onloadstart(){return level0.get(this,"onloadstart")}set onloadstart(value){level0.set(this,"onloadstart",value)}get onmousedown(){return level0.get(this,"onmousedown")}set onmousedown(value){level0.set(this,"onmousedown",value)}get onmouseenter(){return level0.get(this,"onmouseenter")}set onmouseenter(value){level0.set(this,"onmouseenter",value)}get onmouseleave(){return level0.get(this,"onmouseleave")}set onmouseleave(value){level0.set(this,"onmouseleave",value)}get onmousemove(){return level0.get(this,"onmousemove")}set onmousemove(value){level0.set(this,"onmousemove",value)}get onmouseout(){return level0.get(this,"onmouseout")}set onmouseout(value){level0.set(this,"onmouseout",value)}get onmouseover(){return level0.get(this,"onmouseover")}set onmouseover(value){level0.set(this,"onmouseover",value)}get onmouseup(){return level0.get(this,"onmouseup")}set onmouseup(value){level0.set(this,"onmouseup",value)}get onmousewheel(){return level0.get(this,"onmousewheel")}set onmousewheel(value){level0.set(this,"onmousewheel",value)}get onpause(){return level0.get(this,"onpause")}set onpause(value){level0.set(this,"onpause",value)}get onplay(){return level0.get(this,"onplay")}set onplay(value){level0.set(this,"onplay",value)}get onplaying(){return level0.get(this,"onplaying")}set onplaying(value){level0.set(this,"onplaying",value)}get onprogress(){return level0.get(this,"onprogress")}set onprogress(value){level0.set(this,"onprogress",value)}get onratechange(){return level0.get(this,"onratechange")}set onratechange(value){level0.set(this,"onratechange",value)}get onreset(){return level0.get(this,"onreset")}set onreset(value){level0.set(this,"onreset",value)}get onresize(){return level0.get(this,"onresize")}set onresize(value){level0.set(this,"onresize",value)}get onscroll(){return level0.get(this,"onscroll")}set onscroll(value){level0.set(this,"onscroll",value)}get onseeked(){return level0.get(this,"onseeked")}set onseeked(value){level0.set(this,"onseeked",value)}get onseeking(){return level0.get(this,"onseeking")}set onseeking(value){level0.set(this,"onseeking",value)}get onselect(){return level0.get(this,"onselect")}set onselect(value){level0.set(this,"onselect",value)}get onshow(){return level0.get(this,"onshow")}set onshow(value){level0.set(this,"onshow",value)}get onstalled(){return level0.get(this,"onstalled")}set onstalled(value){level0.set(this,"onstalled",value)}get onsubmit(){return level0.get(this,"onsubmit")}set onsubmit(value){level0.set(this,"onsubmit",value)}get onsuspend(){return level0.get(this,"onsuspend")}set onsuspend(value){level0.set(this,"onsuspend",value)}get ontimeupdate(){return level0.get(this,"ontimeupdate")}set ontimeupdate(value){level0.set(this,"ontimeupdate",value)}get ontoggle(){return level0.get(this,"ontoggle")}set ontoggle(value){level0.set(this,"ontoggle",value)}get onvolumechange(){return level0.get(this,"onvolumechange")}set onvolumechange(value){level0.set(this,"onvolumechange",value)}get onwaiting(){return level0.get(this,"onwaiting")}set onwaiting(value){level0.set(this,"onwaiting",value)}get onauxclick(){return level0.get(this,"onauxclick")}set onauxclick(value){level0.set(this,"onauxclick",value)}get ongotpointercapture(){return level0.get(this,"ongotpointercapture")}set ongotpointercapture(value){level0.set(this,"ongotpointercapture",value)}get onlostpointercapture(){return level0.get(this,"onlostpointercapture")}set onlostpointercapture(value){level0.set(this,"onlostpointercapture",value)}get onpointercancel(){return level0.get(this,"onpointercancel")}set onpointercancel(value){level0.set(this,"onpointercancel",value)}get onpointerdown(){return level0.get(this,"onpointerdown")}set onpointerdown(value){level0.set(this,"onpointerdown",value)}get onpointerenter(){return level0.get(this,"onpointerenter")}set onpointerenter(value){level0.set(this,"onpointerenter",value)}get onpointerleave(){return level0.get(this,"onpointerleave")}set onpointerleave(value){level0.set(this,"onpointerleave",value)}get onpointermove(){return level0.get(this,"onpointermove")}set onpointermove(value){level0.set(this,"onpointermove",value)}get onpointerout(){return level0.get(this,"onpointerout")}set onpointerout(value){level0.set(this,"onpointerout",value)}get onpointerover(){return level0.get(this,"onpointerover")}set onpointerover(value){level0.set(this,"onpointerover",value)}get onpointerup(){return level0.get(this,"onpointerup")}set onpointerup(value){level0.set(this,"onpointerup",value)}};var tagName="template",HTMLTemplateElement=class extends HTMLElement{constructor(ownerDocument){super(ownerDocument,tagName);let content=this.ownerDocument.createDocumentFragment();(this[CONTENT]=content)[PRIVATE]=this}get content(){if(this.hasChildNodes()&&!this[CONTENT].hasChildNodes())for(let node of this.childNodes)this[CONTENT].appendChild(node.cloneNode(!0));return this[CONTENT]}};registerHTMLClass(tagName,HTMLTemplateElement);var HTMLHtmlElement=class extends HTMLElement{constructor(ownerDocument,localName="html"){super(ownerDocument,localName)}};var{toString}=HTMLElement.prototype,TextElement=class extends HTMLElement{get innerHTML(){return this.textContent}set innerHTML(html){this.textContent=html}toString(){return toString.call(this.cloneNode()).replace("><",()=>`>${this.textContent}<`)}};var tagName2="script",HTMLScriptElement=class extends TextElement{constructor(ownerDocument,localName=tagName2){super(ownerDocument,localName)}get type(){return stringAttribute.get(this,"type")}set type(value){stringAttribute.set(this,"type",value)}get src(){return stringAttribute.get(this,"src")}set src(value){stringAttribute.set(this,"src",value)}get defer(){return booleanAttribute.get(this,"defer")}set defer(value){booleanAttribute.set(this,"defer",value)}get crossOrigin(){return stringAttribute.get(this,"crossorigin")}set crossOrigin(value){stringAttribute.set(this,"crossorigin",value)}get nomodule(){return booleanAttribute.get(this,"nomodule")}set nomodule(value){booleanAttribute.set(this,"nomodule",value)}get referrerPolicy(){return stringAttribute.get(this,"referrerpolicy")}set referrerPolicy(value){stringAttribute.set(this,"referrerpolicy",value)}get nonce(){return stringAttribute.get(this,"nonce")}set nonce(value){stringAttribute.set(this,"nonce",value)}get async(){return booleanAttribute.get(this,"async")}set async(value){booleanAttribute.set(this,"async",value)}get text(){return this.textContent}set text(content){this.textContent=content}};registerHTMLClass(tagName2,HTMLScriptElement);var HTMLFrameElement=class extends HTMLElement{constructor(ownerDocument,localName="frame"){super(ownerDocument,localName)}};var tagName3="iframe",HTMLIFrameElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName3){super(ownerDocument,localName)}get src(){return stringAttribute.get(this,"src")}set src(value){stringAttribute.set(this,"src",value)}get srcdoc(){return stringAttribute.get(this,"srcdoc")}set srcdoc(value){stringAttribute.set(this,"srcdoc",value)}get name(){return stringAttribute.get(this,"name")}set name(value){stringAttribute.set(this,"name",value)}get allow(){return stringAttribute.get(this,"allow")}set allow(value){stringAttribute.set(this,"allow",value)}get allowFullscreen(){return booleanAttribute.get(this,"allowfullscreen")}set allowFullscreen(value){booleanAttribute.set(this,"allowfullscreen",value)}get referrerPolicy(){return stringAttribute.get(this,"referrerpolicy")}set referrerPolicy(value){stringAttribute.set(this,"referrerpolicy",value)}get loading(){return stringAttribute.get(this,"loading")}set loading(value){stringAttribute.set(this,"loading",value)}};registerHTMLClass(tagName3,HTMLIFrameElement);var HTMLObjectElement=class extends HTMLElement{constructor(ownerDocument,localName="object"){super(ownerDocument,localName)}};var HTMLHeadElement=class extends HTMLElement{constructor(ownerDocument,localName="head"){super(ownerDocument,localName)}};var HTMLBodyElement=class extends HTMLElement{constructor(ownerDocument,localName="body"){super(ownerDocument,localName)}};var import_cssom=__toESM(require_lib(),1);var tagName4="style",HTMLStyleElement=class extends TextElement{constructor(ownerDocument,localName=tagName4){super(ownerDocument,localName),this[SHEET]=null}get sheet(){let sheet=this[SHEET];return sheet!==null?sheet:this[SHEET]=(0,import_cssom.parse)(this.textContent)}get innerHTML(){return super.innerHTML||""}set innerHTML(value){super.textContent=value,this[SHEET]=null}get innerText(){return super.innerText||""}set innerText(value){super.textContent=value,this[SHEET]=null}get textContent(){return super.textContent||""}set textContent(value){super.textContent=value,this[SHEET]=null}};registerHTMLClass(tagName4,HTMLStyleElement);var HTMLTimeElement=class extends HTMLElement{constructor(ownerDocument,localName="time"){super(ownerDocument,localName)}get dateTime(){return stringAttribute.get(this,"datetime")}set dateTime(value){stringAttribute.set(this,"datetime",value)}};registerHTMLClass("time",HTMLTimeElement);var HTMLFieldSetElement=class extends HTMLElement{constructor(ownerDocument,localName="fieldset"){super(ownerDocument,localName)}};var HTMLEmbedElement=class extends HTMLElement{constructor(ownerDocument,localName="embed"){super(ownerDocument,localName)}};var HTMLHRElement=class extends HTMLElement{constructor(ownerDocument,localName="hr"){super(ownerDocument,localName)}};var HTMLProgressElement=class extends HTMLElement{constructor(ownerDocument,localName="progress"){super(ownerDocument,localName)}};var HTMLParagraphElement=class extends HTMLElement{constructor(ownerDocument,localName="p"){super(ownerDocument,localName)}};var HTMLTableElement=class extends HTMLElement{constructor(ownerDocument,localName="table"){super(ownerDocument,localName)}};var HTMLFrameSetElement=class extends HTMLElement{constructor(ownerDocument,localName="frameset"){super(ownerDocument,localName)}};var HTMLLIElement=class extends HTMLElement{constructor(ownerDocument,localName="li"){super(ownerDocument,localName)}};var HTMLBaseElement=class extends HTMLElement{constructor(ownerDocument,localName="base"){super(ownerDocument,localName)}};var HTMLDataListElement=class extends HTMLElement{constructor(ownerDocument,localName="datalist"){super(ownerDocument,localName)}};var tagName5="input",HTMLInputElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName5){super(ownerDocument,localName)}get autofocus(){return booleanAttribute.get(this,"autofocus")||-1}set autofocus(value){booleanAttribute.set(this,"autofocus",value)}get disabled(){return booleanAttribute.get(this,"disabled")}set disabled(value){booleanAttribute.set(this,"disabled",value)}get name(){return this.getAttribute("name")}set name(value){this.setAttribute("name",value)}get placeholder(){return this.getAttribute("placeholder")}set placeholder(value){this.setAttribute("placeholder",value)}get type(){return this.getAttribute("type")}set type(value){this.setAttribute("type",value)}get value(){return stringAttribute.get(this,"value")}set value(value){stringAttribute.set(this,"value",value)}};registerHTMLClass(tagName5,HTMLInputElement);var HTMLParamElement=class extends HTMLElement{constructor(ownerDocument,localName="param"){super(ownerDocument,localName)}};var HTMLMediaElement=class extends HTMLElement{constructor(ownerDocument,localName="media"){super(ownerDocument,localName)}};var HTMLAudioElement=class extends HTMLElement{constructor(ownerDocument,localName="audio"){super(ownerDocument,localName)}};var tagName6="h1",HTMLHeadingElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName6){super(ownerDocument,localName)}};registerHTMLClass([tagName6,"h2","h3","h4","h5","h6"],HTMLHeadingElement);var HTMLDirectoryElement=class extends HTMLElement{constructor(ownerDocument,localName="dir"){super(ownerDocument,localName)}};var HTMLQuoteElement=class extends HTMLElement{constructor(ownerDocument,localName="quote"){super(ownerDocument,localName)}};var import_canvas=__toESM(require_canvas(),1);var{createCanvas}=import_canvas.default,tagName7="canvas",HTMLCanvasElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName7){super(ownerDocument,localName),this[IMAGE]=createCanvas(300,150)}get width(){return this[IMAGE].width}set width(value){numericAttribute.set(this,"width",value),this[IMAGE].width=value}get height(){return this[IMAGE].height}set height(value){numericAttribute.set(this,"height",value),this[IMAGE].height=value}getContext(type){return this[IMAGE].getContext(type)}toDataURL(...args){return this[IMAGE].toDataURL(...args)}};registerHTMLClass(tagName7,HTMLCanvasElement);var HTMLLegendElement=class extends HTMLElement{constructor(ownerDocument,localName="legend"){super(ownerDocument,localName)}};var tagName8="option",HTMLOptionElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName8){super(ownerDocument,localName)}get value(){return stringAttribute.get(this,"value")}set value(value){stringAttribute.set(this,"value",value)}get selected(){return booleanAttribute.get(this,"selected")}set selected(value){let option=this.parentElement?.querySelector("option[selected]");option&&option!==this&&(option.selected=!1),booleanAttribute.set(this,"selected",value)}};registerHTMLClass(tagName8,HTMLOptionElement);var HTMLSpanElement=class extends HTMLElement{constructor(ownerDocument,localName="span"){super(ownerDocument,localName)}};var HTMLMeterElement=class extends HTMLElement{constructor(ownerDocument,localName="meter"){super(ownerDocument,localName)}};var HTMLVideoElement=class extends HTMLElement{constructor(ownerDocument,localName="video"){super(ownerDocument,localName)}};var HTMLTableCellElement=class extends HTMLElement{constructor(ownerDocument,localName="td"){super(ownerDocument,localName)}};var tagName9="title",HTMLTitleElement=class extends TextElement{constructor(ownerDocument,localName=tagName9){super(ownerDocument,localName)}};registerHTMLClass(tagName9,HTMLTitleElement);var HTMLOutputElement=class extends HTMLElement{constructor(ownerDocument,localName="output"){super(ownerDocument,localName)}};var HTMLTableRowElement=class extends HTMLElement{constructor(ownerDocument,localName="tr"){super(ownerDocument,localName)}};var HTMLDataElement=class extends HTMLElement{constructor(ownerDocument,localName="data"){super(ownerDocument,localName)}};var HTMLMenuElement=class extends HTMLElement{constructor(ownerDocument,localName="menu"){super(ownerDocument,localName)}};var tagName10="select",HTMLSelectElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName10){super(ownerDocument,localName)}get options(){let children=new NodeList,{firstElementChild}=this;for(;firstElementChild;)firstElementChild.tagName==="OPTGROUP"?children.push(...firstElementChild.children):children.push(firstElementChild),firstElementChild=firstElementChild.nextElementSibling;return children}get disabled(){return booleanAttribute.get(this,"disabled")}set disabled(value){booleanAttribute.set(this,"disabled",value)}get name(){return this.getAttribute("name")}set name(value){this.setAttribute("name",value)}get value(){return this.querySelector("option[selected]")?.value}};registerHTMLClass(tagName10,HTMLSelectElement);var HTMLBRElement=class extends HTMLElement{constructor(ownerDocument,localName="br"){super(ownerDocument,localName)}};var tagName11="button",HTMLButtonElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName11){super(ownerDocument,localName)}get disabled(){return booleanAttribute.get(this,"disabled")}set disabled(value){booleanAttribute.set(this,"disabled",value)}get name(){return this.getAttribute("name")}set name(value){this.setAttribute("name",value)}get type(){return this.getAttribute("type")}set type(value){this.setAttribute("type",value)}};registerHTMLClass(tagName11,HTMLButtonElement);var HTMLMapElement=class extends HTMLElement{constructor(ownerDocument,localName="map"){super(ownerDocument,localName)}};var HTMLOptGroupElement=class extends HTMLElement{constructor(ownerDocument,localName="optgroup"){super(ownerDocument,localName)}};var HTMLDListElement=class extends HTMLElement{constructor(ownerDocument,localName="dl"){super(ownerDocument,localName)}};var tagName12="textarea",HTMLTextAreaElement=class extends TextElement{constructor(ownerDocument,localName=tagName12){super(ownerDocument,localName)}get disabled(){return booleanAttribute.get(this,"disabled")}set disabled(value){booleanAttribute.set(this,"disabled",value)}get name(){return this.getAttribute("name")}set name(value){this.setAttribute("name",value)}get placeholder(){return this.getAttribute("placeholder")}set placeholder(value){this.setAttribute("placeholder",value)}get type(){return this.getAttribute("type")}set type(value){this.setAttribute("type",value)}get value(){return this.textContent}set value(content){this.textContent=content}};registerHTMLClass(tagName12,HTMLTextAreaElement);var HTMLFontElement=class extends HTMLElement{constructor(ownerDocument,localName="font"){super(ownerDocument,localName)}};var HTMLDivElement=class extends HTMLElement{constructor(ownerDocument,localName="div"){super(ownerDocument,localName)}};var tagName13="link",HTMLLinkElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName13){super(ownerDocument,localName)}get disabled(){return booleanAttribute.get(this,"disabled")}set disabled(value){booleanAttribute.set(this,"disabled",value)}get href(){return stringAttribute.get(this,"href").trim()}set href(value){stringAttribute.set(this,"href",value)}get hreflang(){return stringAttribute.get(this,"hreflang")}set hreflang(value){stringAttribute.set(this,"hreflang",value)}get media(){return stringAttribute.get(this,"media")}set media(value){stringAttribute.set(this,"media",value)}get rel(){return stringAttribute.get(this,"rel")}set rel(value){stringAttribute.set(this,"rel",value)}get type(){return stringAttribute.get(this,"type")}set type(value){stringAttribute.set(this,"type",value)}};registerHTMLClass(tagName13,HTMLLinkElement);var tagName14="slot",HTMLSlotElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName14){super(ownerDocument,localName)}get name(){return this.getAttribute("name")}set name(value){this.setAttribute("name",value)}assign(){}assignedNodes(options){let isNamedSlot=!!this.name,hostChildNodes=this.getRootNode().host?.childNodes??[],slottables;if(isNamedSlot?slottables=[...hostChildNodes].filter(node=>node.slot===this.name):slottables=[...hostChildNodes].filter(node=>!node.slot),options?.flatten){let result=[];for(let slottable of slottables)slottable.localName==="slot"?result.push(...slottable.assignedNodes({flatten:!0})):result.push(slottable);slottables=result}return slottables.length?slottables:[...this.childNodes]}assignedElements(options){let slottables=this.assignedNodes(options).filter(n=>n.nodeType===1);return slottables.length?slottables:[...this.children]}};registerHTMLClass(tagName14,HTMLSlotElement);var HTMLFormElement=class extends HTMLElement{constructor(ownerDocument,localName="form"){super(ownerDocument,localName)}};var tagName15="img",HTMLImageElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName15){super(ownerDocument,localName)}get alt(){return stringAttribute.get(this,"alt")}set alt(value){stringAttribute.set(this,"alt",value)}get sizes(){return stringAttribute.get(this,"sizes")}set sizes(value){stringAttribute.set(this,"sizes",value)}get src(){return stringAttribute.get(this,"src")}set src(value){stringAttribute.set(this,"src",value)}get srcset(){return stringAttribute.get(this,"srcset")}set srcset(value){stringAttribute.set(this,"srcset",value)}get title(){return stringAttribute.get(this,"title")}set title(value){stringAttribute.set(this,"title",value)}get width(){return numericAttribute.get(this,"width")}set width(value){numericAttribute.set(this,"width",value)}get height(){return numericAttribute.get(this,"height")}set height(value){numericAttribute.set(this,"height",value)}};registerHTMLClass(tagName15,HTMLImageElement);var HTMLPreElement=class extends HTMLElement{constructor(ownerDocument,localName="pre"){super(ownerDocument,localName)}};var HTMLUListElement=class extends HTMLElement{constructor(ownerDocument,localName="ul"){super(ownerDocument,localName)}};var tagName16="meta",HTMLMetaElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName16){super(ownerDocument,localName)}get name(){return stringAttribute.get(this,"name")}set name(value){stringAttribute.set(this,"name",value)}get httpEquiv(){return stringAttribute.get(this,"http-equiv")}set httpEquiv(value){stringAttribute.set(this,"http-equiv",value)}get content(){return stringAttribute.get(this,"content")}set content(value){stringAttribute.set(this,"content",value)}get charset(){return stringAttribute.get(this,"charset")}set charset(value){stringAttribute.set(this,"charset",value)}get media(){return stringAttribute.get(this,"media")}set media(value){stringAttribute.set(this,"media",value)}};registerHTMLClass(tagName16,HTMLMetaElement);var HTMLPictureElement=class extends HTMLElement{constructor(ownerDocument,localName="picture"){super(ownerDocument,localName)}};var HTMLAreaElement=class extends HTMLElement{constructor(ownerDocument,localName="area"){super(ownerDocument,localName)}};var HTMLOListElement=class extends HTMLElement{constructor(ownerDocument,localName="ol"){super(ownerDocument,localName)}};var HTMLTableCaptionElement=class extends HTMLElement{constructor(ownerDocument,localName="caption"){super(ownerDocument,localName)}};var tagName17="a",HTMLAnchorElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName17){super(ownerDocument,localName)}get href(){return encodeURI(decodeURI(stringAttribute.get(this,"href"))).trim()}set href(value){stringAttribute.set(this,"href",decodeURI(value))}get download(){return encodeURI(decodeURI(stringAttribute.get(this,"download")))}set download(value){stringAttribute.set(this,"download",decodeURI(value))}get target(){return stringAttribute.get(this,"target")}set target(value){stringAttribute.set(this,"target",value)}get type(){return stringAttribute.get(this,"type")}set type(value){stringAttribute.set(this,"type",value)}get rel(){return stringAttribute.get(this,"rel")}set rel(value){stringAttribute.set(this,"rel",value)}};registerHTMLClass(tagName17,HTMLAnchorElement);var HTMLLabelElement=class extends HTMLElement{constructor(ownerDocument,localName="label"){super(ownerDocument,localName)}};var HTMLUnknownElement=class extends HTMLElement{constructor(ownerDocument,localName="unknown"){super(ownerDocument,localName)}};var HTMLModElement=class extends HTMLElement{constructor(ownerDocument,localName="mod"){super(ownerDocument,localName)}};var HTMLDetailsElement=class extends HTMLElement{constructor(ownerDocument,localName="details"){super(ownerDocument,localName)}};var tagName18="source",HTMLSourceElement=class extends HTMLElement{constructor(ownerDocument,localName=tagName18){super(ownerDocument,localName)}get src(){return stringAttribute.get(this,"src")}set src(value){stringAttribute.set(this,"src",value)}get srcset(){return stringAttribute.get(this,"srcset")}set srcset(value){stringAttribute.set(this,"srcset",value)}get sizes(){return stringAttribute.get(this,"sizes")}set sizes(value){stringAttribute.set(this,"sizes",value)}get type(){return stringAttribute.get(this,"type")}set type(value){stringAttribute.set(this,"type",value)}};registerHTMLClass(tagName18,HTMLSourceElement);var HTMLTrackElement=class extends HTMLElement{constructor(ownerDocument,localName="track"){super(ownerDocument,localName)}};var HTMLMarqueeElement=class extends HTMLElement{constructor(ownerDocument,localName="marquee"){super(ownerDocument,localName)}};var HTMLClasses={HTMLElement,HTMLTemplateElement,HTMLHtmlElement,HTMLScriptElement,HTMLFrameElement,HTMLIFrameElement,HTMLObjectElement,HTMLHeadElement,HTMLBodyElement,HTMLStyleElement,HTMLTimeElement,HTMLFieldSetElement,HTMLEmbedElement,HTMLHRElement,HTMLProgressElement,HTMLParagraphElement,HTMLTableElement,HTMLFrameSetElement,HTMLLIElement,HTMLBaseElement,HTMLDataListElement,HTMLInputElement,HTMLParamElement,HTMLMediaElement,HTMLAudioElement,HTMLHeadingElement,HTMLDirectoryElement,HTMLQuoteElement,HTMLCanvasElement,HTMLLegendElement,HTMLOptionElement,HTMLSpanElement,HTMLMeterElement,HTMLVideoElement,HTMLTableCellElement,HTMLTitleElement,HTMLOutputElement,HTMLTableRowElement,HTMLDataElement,HTMLMenuElement,HTMLSelectElement,HTMLBRElement,HTMLButtonElement,HTMLMapElement,HTMLOptGroupElement,HTMLDListElement,HTMLTextAreaElement,HTMLFontElement,HTMLDivElement,HTMLLinkElement,HTMLSlotElement,HTMLFormElement,HTMLImageElement,HTMLPreElement,HTMLUListElement,HTMLMetaElement,HTMLPictureElement,HTMLAreaElement,HTMLOListElement,HTMLTableCaptionElement,HTMLAnchorElement,HTMLLabelElement,HTMLUnknownElement,HTMLModElement,HTMLDetailsElement,HTMLSourceElement,HTMLTrackElement,HTMLMarqueeElement};var voidElements2={test:()=>!0},Mime={"text/html":{docType:"<!DOCTYPE html>",ignoreCase:!0,voidElements:/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i},"image/svg+xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:voidElements2},"text/xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:voidElements2},"application/xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:voidElements2},"application/xhtml+xml":{docType:'<?xml version="1.0" encoding="utf-8"?>',ignoreCase:!1,voidElements:voidElements2}};var CustomEvent=class extends GlobalEvent{constructor(type,eventInitDict={}){super(type,eventInitDict),this.detail=eventInitDict.detail}};var InputEvent=class extends GlobalEvent{constructor(type,inputEventInit={}){super(type,inputEventInit),this.inputType=inputEventInit.inputType,this.data=inputEventInit.data,this.dataTransfer=inputEventInit.dataTransfer,this.isComposing=inputEventInit.isComposing||!1,this.ranges=inputEventInit.ranges}};var ImageClass=ownerDocument=>class extends HTMLImageElement{constructor(width,height){switch(super(ownerDocument),arguments.length){case 1:this.height=width,this.width=width;break;case 2:this.height=height,this.width=width;break}}};var deleteContents=({[START]:start,[END]:end},fragment=null)=>{setAdjacent(start[PREV],end[NEXT]);do{let after2=getEnd(start),next=after2===end?after2:after2[NEXT];fragment?fragment.insertBefore(start,fragment[END]):start.remove(),start=next}while(start!==end)},Range=class _Range{constructor(){this[START]=null,this[END]=null,this.commonAncestorContainer=null}insertNode(newNode){this[END].parentNode.insertBefore(newNode,this[START])}selectNode(node){this[START]=node,this[END]=getEnd(node)}selectNodeContents(node){this.selectNode(node),this.commonAncestorContainer=node}surroundContents(parentNode){parentNode.replaceChildren(this.extractContents())}setStartBefore(node){this[START]=node}setStartAfter(node){this[START]=node.nextSibling}setEndBefore(node){this[END]=getEnd(node.previousSibling)}setEndAfter(node){this[END]=getEnd(node)}cloneContents(){let{[START]:start,[END]:end}=this,fragment=start.ownerDocument.createDocumentFragment();for(;start!==end;)fragment.insertBefore(start.cloneNode(!0),fragment[END]),start=getEnd(start),start!==end&&(start=start[NEXT]);return fragment}deleteContents(){deleteContents(this)}extractContents(){let fragment=this[START].ownerDocument.createDocumentFragment();return deleteContents(this,fragment),fragment}createContextualFragment(html){let{commonAncestorContainer:doc}=this,isSVG="ownerSVGElement"in doc,document=isSVG?doc.ownerDocument:doc,content=htmlToFragment(document,html);if(isSVG){let childNodes=[...content.childNodes];content=document.createDocumentFragment(),Object.setPrototypeOf(content,SVGElement.prototype),content.ownerSVGElement=document;for(let child of childNodes)Object.setPrototypeOf(child,SVGElement.prototype),child.ownerSVGElement=document,content.appendChild(child)}else this.selectNode(content);return content}cloneRange(){let range=new _Range;return range[START]=this[START],range[END]=this[END],range}};var isOK=({nodeType},mask)=>{switch(nodeType){case 1:return mask&SHOW_ELEMENT;case 3:return mask&SHOW_TEXT;case 8:return mask&SHOW_COMMENT;case 4:return mask&SHOW_CDATA_SECTION}return 0},TreeWalker=class{constructor(root,whatToShow=SHOW_ALL){this.root=root,this.currentNode=root,this.whatToShow=whatToShow;let{[NEXT]:next,[END]:end}=root;if(root.nodeType===9){let{documentElement}=root;next=documentElement,end=documentElement[END]}let nodes=[];for(;next&&next!==end;)isOK(next,whatToShow)&&nodes.push(next),next=next[NEXT];this[PRIVATE]={i:0,nodes}}nextNode(){let $=this[PRIVATE];return this.currentNode=$.i<$.nodes.length?$.nodes[$.i++]:null,this.currentNode}};var query=(method,ownerDocument,selectors)=>{let{[NEXT]:next,[END]:end}=ownerDocument;return method.call({ownerDocument,[NEXT]:next,[END]:end},selectors)},globalExports=assign({},Facades,HTMLClasses,{CustomEvent,Event:GlobalEvent,EventTarget:DOMEventTarget,InputEvent,NamedNodeMap,NodeList}),window=new WeakMap,Document2=class extends NonElementParentNode{constructor(type){super(null,"#document",9),this[CUSTOM_ELEMENTS]={active:!1,registry:null},this[MUTATION_OBSERVER]={active:!1,class:null},this[MIME]=Mime[type],this[DOCTYPE]=null,this[DOM_PARSER]=null,this[GLOBALS]=null,this[IMAGE]=null,this[UPGRADE]=null}get defaultView(){return window.has(this)||window.set(this,new Proxy(globalThis,{set:(target,name,value)=>{switch(name){case"addEventListener":case"removeEventListener":case"dispatchEvent":this[EVENT_TARGET][name]=value;break;default:target[name]=value;break}return!0},get:(globalThis2,name)=>{switch(name){case"addEventListener":case"removeEventListener":case"dispatchEvent":if(!this[EVENT_TARGET]){let et=this[EVENT_TARGET]=new DOMEventTarget;et.dispatchEvent=et.dispatchEvent.bind(et),et.addEventListener=et.addEventListener.bind(et),et.removeEventListener=et.removeEventListener.bind(et)}return this[EVENT_TARGET][name];case"document":return this;case"navigator":return{userAgent:"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36"};case"window":return window.get(this);case"customElements":return this[CUSTOM_ELEMENTS].registry||(this[CUSTOM_ELEMENTS]=new CustomElementRegistry(this)),this[CUSTOM_ELEMENTS];case"performance":return globalThis2.performance;case"DOMParser":return this[DOM_PARSER];case"Image":return this[IMAGE]||(this[IMAGE]=ImageClass(this)),this[IMAGE];case"MutationObserver":return this[MUTATION_OBSERVER].class||(this[MUTATION_OBSERVER]=new MutationObserverClass(this)),this[MUTATION_OBSERVER].class}return this[GLOBALS]&&this[GLOBALS][name]||globalExports[name]||globalThis2[name]}})),window.get(this)}get doctype(){let docType=this[DOCTYPE];if(docType)return docType;let{firstChild}=this;return firstChild&&firstChild.nodeType===10?this[DOCTYPE]=firstChild:null}set doctype(value){if(/^([a-z:]+)(\s+system|\s+public(\s+"([^"]+)")?)?(\s+"([^"]+)")?/i.test(value)){let{$1:name,$4:publicId,$6:systemId}=RegExp;this[DOCTYPE]=new DocumentType(this,name,publicId,systemId),knownSiblings(this,this[DOCTYPE],this[NEXT])}}get documentElement(){return this.firstElementChild}get isConnected(){return!0}_getParent(){return this[EVENT_TARGET]}createAttribute(name){return new Attr(this,name)}createCDATASection(data){return new CDATASection(this,data)}createComment(textContent2){return new Comment3(this,textContent2)}createDocumentFragment(){return new DocumentFragment(this)}createDocumentType(name,publicId,systemId){return new DocumentType(this,name,publicId,systemId)}createElement(localName){return new Element2(this,localName)}createRange(){let range=new Range;return range.commonAncestorContainer=this,range}createTextNode(textContent2){return new Text3(this,textContent2)}createTreeWalker(root,whatToShow=-1){return new TreeWalker(root,whatToShow)}createNodeIterator(root,whatToShow=-1){return this.createTreeWalker(root,whatToShow)}createEvent(name){let event=create(name==="Event"?new GlobalEvent(""):new CustomEvent(""));return event.initEvent=event.initCustomEvent=(type,canBubble=!1,cancelable=!1,detail)=>{event.bubbles=!!canBubble,defineProperties(event,{type:{value:type},canBubble:{value:canBubble},cancelable:{value:cancelable},detail:{value:detail}})},event}cloneNode(deep=!1){let{constructor,[CUSTOM_ELEMENTS]:customElements2,[DOCTYPE]:doctype}=this,document=new constructor;if(document[CUSTOM_ELEMENTS]=customElements2,deep){let end=document[END],{childNodes}=this;for(let{length}=childNodes,i=0;i<length;i++)document.insertBefore(childNodes[i].cloneNode(!0),end);doctype&&(document[DOCTYPE]=childNodes[0])}return document}importNode(externalNode){let deep=1<arguments.length&&!!arguments[1],node=externalNode.cloneNode(deep),{[CUSTOM_ELEMENTS]:customElements2}=this,{active}=customElements2,upgrade=element=>{let{ownerDocument,nodeType}=element;element.ownerDocument=this,active&&ownerDocument!==this&&nodeType===1&&customElements2.upgrade(element)};if(upgrade(node),deep)switch(node.nodeType){case 1:case 11:{let{[NEXT]:next,[END]:end}=node;for(;next!==end;)next.nodeType===1&&upgrade(next),next=next[NEXT];break}}return node}toString(){return this.childNodes.join("")}querySelector(selectors){return query(super.querySelector,this,selectors)}querySelectorAll(selectors){return query(super.querySelectorAll,this,selectors)}getElementsByTagNameNS(_,name){return this.getElementsByTagName(name)}createAttributeNS(_,name){return this.createAttribute(name)}createElementNS(nsp,localName,options){return nsp===SVG_NAMESPACE?new SVGElement(this,localName,null):this.createElement(localName,options)}};setPrototypeOf(globalExports.Document=function(){illegalConstructor()},Document2).prototype=Document2.prototype;var createHTMLElement=(ownerDocument,builtin,localName,options)=>{if(!builtin&&htmlClasses.has(localName)){let Class=htmlClasses.get(localName);return new Class(ownerDocument,localName)}let{[CUSTOM_ELEMENTS]:{active,registry}}=ownerDocument;if(active){let ce=builtin?options.is:localName;if(registry.has(ce)){let{Class}=registry.get(ce),element=new Class(ownerDocument,localName);return customElements.set(element,{connected:!1}),element}}return new HTMLElement(ownerDocument,localName)},HTMLDocument=class extends Document2{constructor(){super("text/html")}get all(){let nodeList=new NodeList,{[NEXT]:next,[END]:end}=this;for(;next!==end;)next.nodeType===1&&nodeList.push(next),next=next[NEXT];return nodeList}get head(){let{documentElement}=this,{firstElementChild}=documentElement;return(!firstElementChild||firstElementChild.tagName!=="HEAD")&&(firstElementChild=this.createElement("head"),documentElement.prepend(firstElementChild)),firstElementChild}get body(){let{head}=this,{nextElementSibling:nextElementSibling3}=head;return(!nextElementSibling3||nextElementSibling3.tagName!=="BODY")&&(nextElementSibling3=this.createElement("body"),head.after(nextElementSibling3)),nextElementSibling3}get title(){let{head}=this;return head.getElementsByTagName("title").at(0)?.textContent||""}set title(textContent2){let{head}=this,title=head.getElementsByTagName("title").at(0);title?title.textContent=textContent2:head.insertBefore(this.createElement("title"),head.firstChild).textContent=textContent2}createElement(localName,options){let builtin=!!(options&&options.is),element=createHTMLElement(this,builtin,localName,options);return builtin&&element.setAttribute("is",options.is),element}};var SVGDocument=class extends Document2{constructor(){super("image/svg+xml")}toString(){return this[MIME].docType+super.toString()}};var XMLDocument=class extends Document2{constructor(){super("text/xml")}toString(){return this[MIME].docType+super.toString()}};var DOMParser=class _DOMParser{parseFromString(markupLanguage,mimeType,globals=null){let isHTML=!1,document;return mimeType==="text/html"?(isHTML=!0,document=new HTMLDocument):mimeType==="image/svg+xml"?document=new SVGDocument:document=new XMLDocument,document[DOM_PARSER]=_DOMParser,globals&&(document[GLOBALS]=globals),isHTML&&markupLanguage==="..."&&(markupLanguage="<!doctype html><html><head></head><body></body></html>"),markupLanguage?parseFromString(document,isHTML,markupLanguage):document}};var{parse:parse2}=JSON;var parseHTML=(html,globals=null)=>new DOMParser().parseFromString(html,"text/html",globals).defaultView;function Document4(){illegalConstructor()}setPrototypeOf(Document4,Document2).prototype=Document2.prototype;import{existsSync as existsSync15,readFileSync as readFileSync15}from"node:fs";import{createSign}from"node:crypto";import{homedir as homedir4}from"node:os";import{join as join7}from"node:path";var CONFIG_PATH11=getWebSearchConfigPath(),DEFAULT_ADC_PATH=join7(homedir4(),".config","gcloud","application_default_credentials.json"),TOKEN_ENDPOINT="https://oauth2.googleapis.com/token",VERTEX_HOST="https://aiplatform.googleapis.com",VERTEX_API_VERSION="v1",REFRESH_SKEW_MS=6e4,cachedConfig10=null;function loadConfig9(){if(cachedConfig10)return cachedConfig10;if(!existsSync15(CONFIG_PATH11))return cachedConfig10={},cachedConfig10;let raw=readFileSync15(CONFIG_PATH11,"utf-8");try{let parsed=JSON.parse(raw);if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error("config root must be an object");cachedConfig10=parsed}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH11}: ${message}`)}return cachedConfig10}function normalizeIdentifier(value,envName){if(typeof value=="string"){let trimmed=value.trim();if(trimmed)return trimmed}let fromEnv=process.env[envName]?.trim();return fromEnv||null}function isAdcAuthSelected(){return(loadConfig9().geminiAuth??"").toString().trim().toLowerCase()==="adc"}function getAdcProject(){return normalizeIdentifier(loadConfig9().geminiProject,"GOOGLE_CLOUD_PROJECT")??normalizeIdentifier(null,"GCLOUD_PROJECT")}function getAdcLocation(){return normalizeIdentifier(loadConfig9().geminiLocation,"GOOGLE_CLOUD_LOCATION")}function getAdcPath(){return process.env.GOOGLE_APPLICATION_CREDENTIALS?.trim()||DEFAULT_ADC_PATH}function getVertexApiBase(project,location){return`${VERTEX_HOST}/${VERTEX_API_VERSION}/projects/${encodeURIComponent(project)}/locations/${encodeURIComponent(location)}/publishers/google`}function isVertexHost(origin){return origin===VERTEX_HOST}function objectRecord(value){return value&&typeof value=="object"&&!Array.isArray(value)?value:null}function stringField(record,name){let value=record[name];return typeof value=="string"?value:void 0}function requiredString(record,name,context){let value=stringField(record,name)?.trim();if(!value)throw new Error(`${context} is missing ${name}`);return value}function parseAdcFile(raw){let parsed=objectRecord(JSON.parse(raw));if(!parsed)throw new Error("credential root must be an object");let type=stringField(parsed,"type")??"authorized_user";return type==="authorized_user"?{type,client_id:requiredString(parsed,"client_id","Gemini ADC authorized_user file"),client_secret:requiredString(parsed,"client_secret","Gemini ADC authorized_user file"),refresh_token:requiredString(parsed,"refresh_token","Gemini ADC authorized_user file"),universe_domain:stringField(parsed,"universe_domain")}:type==="service_account"?{type,client_email:requiredString(parsed,"client_email","Gemini ADC service_account file"),private_key:requiredString(parsed,"private_key","Gemini ADC service_account file"),private_key_id:stringField(parsed,"private_key_id"),token_uri:stringField(parsed,"token_uri"),universe_domain:stringField(parsed,"universe_domain")}:{type}}function parseTokenExchangeResponse(text,context){let raw;try{raw=JSON.parse(text)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`${context} returned invalid JSON: ${message}`)}let parsed=objectRecord(raw);if(!parsed)throw new Error(`${context} returned a non-object response`);let token=stringField(parsed,"access_token")?.trim();if(!token)throw new Error(`${context} returned no access_token`);let expiresIn=parsed.expires_in??3600;if(typeof expiresIn!="number"||!Number.isFinite(expiresIn))throw new Error(`${context} returned invalid expires_in`);return{token,expiresAt:Date.now()+Math.max(expiresIn*1e3-REFRESH_SKEW_MS,6e4)}}async function loadAdcFile(){let path2=getAdcPath();if(!path2||!existsSync15(path2))throw new Error(`Google Application Default Credentials file not found at ${path2}`);let raw=readFileSync15(path2,"utf-8");try{return parseAdcFile(raw)}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse Google Application Default Credentials file at ${path2}: ${message}`)}}var cachedToken=null;var OAUTH_CREDENTIAL_REJECTION_STATUSES=new Set([400,401,403]);function throwOnTokenExchangeFailure(res,detail,status){throw OAUTH_CREDENTIAL_REJECTION_STATUSES.has(status)?new CredentialResolutionError("Gemini ADC","oauth-credential-rejected"):new Error(`Gemini ADC token exchange failed (${status}): ${detail.slice(0,300)}`)}function redactValues(text,values){let redacted=text;for(let value of values)value&&(redacted=redactCredential(redacted,value));return redacted}async function exchangeRefreshToken(cfg,signal){let body=new URLSearchParams({client_id:cfg.client_id??"",client_secret:cfg.client_secret??"",refresh_token:cfg.refresh_token??"",grant_type:"refresh_token"}),res=await fetch(TOKEN_ENDPOINT,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body,signal}),text=await res.text();return res.ok||throwOnTokenExchangeFailure(res,redactValues(text,[cfg.client_secret,cfg.refresh_token]),res.status),parseTokenExchangeResponse(text,"Gemini ADC token exchange")}async function exchangeServiceAccountJwt(cfg,signal){if(!cfg.client_email||!cfg.private_key)throw new Error("Gemini ADC service_account file is missing client_email or private_key");let now=Math.floor(Date.now()/1e3),header={alg:"RS256",typ:"JWT"},claims={iss:cfg.client_email,scope:"https://www.googleapis.com/auth/cloud-platform",aud:TOKEN_ENDPOINT,iat:now,exp:now+3600},encodePart=obj=>Buffer.from(JSON.stringify(obj)).toString("base64url"),assertion=`${encodePart(header)}.${encodePart(claims)}`,signer=createSign("RSA-SHA256");signer.update(assertion),signer.end();let signature=signer.sign(cfg.private_key,"base64url"),jwt=`${assertion}.${signature}`,body=new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:jwt}),res=await fetch(TOKEN_ENDPOINT,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body,signal}),text=await res.text();return res.ok||throwOnTokenExchangeFailure(res,redactValues(text,[jwt,cfg.private_key]),res.status),parseTokenExchangeResponse(text,"Gemini ADC service account token exchange")}async function getAdcAccessToken(signal){if(cachedToken&&cachedToken.expiresAt>Date.now())return cachedToken.token;let cfg=await loadAdcFile(),type=cfg.type??"authorized_user";if(type==="authorized_user")cachedToken=await exchangeRefreshToken(cfg,signal);else if(type==="service_account")cachedToken=await exchangeServiceAccountJwt(cfg,signal);else throw new Error(`Gemini ADC unsupported credential type "${type}" (expected authorized_user or service_account)`);return cachedToken.token}function isGeminiAdcAvailable(){return!isAdcAuthSelected()||hasGeminiApiKeySource()||hasExplicitApiBase()||!getAdcProject()||!getAdcLocation()?!1:existsSync15(getAdcPath())}function hasGeminiApiKeySource(){let configured=loadConfig9().geminiApiKey;return typeof configured=="string"&&configured.trim()?!0:!!process.env.GEMINI_API_KEY?.trim()}function hasExplicitApiBase(){if(process.env.GOOGLE_GEMINI_BASE_URL?.trim())return!0;let configured=loadConfig9().geminiBaseUrl;return typeof configured=="string"&&configured.trim().length>0}import{existsSync as existsSync16,readFileSync as readFileSync16}from"node:fs";var DEFAULT_API_HOST="https://generativelanguage.googleapis.com",API_VERSION="v1beta",API_BASE=`${DEFAULT_API_HOST}/${API_VERSION}`,CONFIG_PATH12=getWebSearchConfigPath(),DEFAULT_MODEL="gemini-3.6-flash",cachedConfig11=null;function loadConfig10(){if(cachedConfig11)return cachedConfig11;if(!existsSync16(CONFIG_PATH12))return cachedConfig11={},cachedConfig11;let raw=readFileSync16(CONFIG_PATH12,"utf-8");try{return cachedConfig11=JSON.parse(raw),cachedConfig11}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH12}: ${message}`)}}function withTimeout(signal,timeoutMs){let timeout=AbortSignal.timeout(timeoutMs);return signal?AbortSignal.any([signal,timeout]):timeout}function normalizeApiKey2(value){if(typeof value!="string")return null;let normalized=value.trim();return normalized.length>0?normalized:null}function normalizeBaseUrl2(value){if(typeof value!="string")return null;let normalized=value.trim().replace(/\/+$/,"");return normalized.length>0?normalized:null}function isCloudflareGateway(){return getApiHost().includes("gateway.ai.cloudflare.com")}async function getApiKey8(signal){return resolveCredential({provider:"Gemini",configuredValue:loadConfig10().geminiApiKey,environmentValue:process.env.GEMINI_API_KEY,signal})}function getApiHost(){return normalizeBaseUrl2(process.env.GOOGLE_GEMINI_BASE_URL)??normalizeBaseUrl2(loadConfig10().geminiBaseUrl)??DEFAULT_API_HOST}function getVersionedApiBase(){let project=getAdcProject(),location=getAdcLocation();return isGeminiAdcAvailable()&&project&&location?getVertexApiBase(project,location):`${getApiHost()}/${API_VERSION}`}function getUploadBase(){return`${getApiHost()}/upload/${API_VERSION}`}function getLegacyCloudflareApiKey(){return normalizeApiKey2(process.env.CLOUDFLARE_API_KEY)??normalizeApiKey2(loadConfig10().cloudflareApiKey)}async function resolveCloudflareApiKey(signal){return resolveCredential({provider:"Cloudflare",configuredValue:loadConfig10().cloudflareApiKey,environmentValue:process.env.CLOUDFLARE_API_KEY,signal})}function isGatewayConfigured(){return isCloudflareGateway()&&hasCredentialSource({provider:"Cloudflare",configuredValue:loadConfig10().cloudflareApiKey,environmentValue:process.env.CLOUDFLARE_API_KEY})}function buildAuthHeaders(apiKey=null,cloudflareApiKey=getLegacyCloudflareApiKey()){return isCloudflareGateway()?cloudflareApiKey?{"cf-aig-authorization":`Bearer ${cloudflareApiKey}`}:{}:apiKey?{"x-goog-api-key":apiKey}:{}}function redactGeminiCredentials(text,apiKey,cloudflareApiKey,adcToken){let out=redactCredential(redactCredential(text,apiKey),cloudflareApiKey);return adcToken&&(out=redactCredential(out,adcToken)),out}var responseCredentials=new WeakMap;function redactGeminiApiResponse(response,text,apiKey,adcToken){let credentials=responseCredentials.get(response);return redactGeminiCredentials(text,credentials?.apiKey??apiKey,credentials?.cloudflareApiKey,credentials?.adcToken??adcToken)}async function fetchGeminiApi(url,init={},apiKey){let parsedUrl=new URL(url);for(let name of parsedUrl.searchParams.keys())if(["key","api_key"].includes(name.toLowerCase()))throw new Error("Gemini API credential query parameters are not allowed");let project=getAdcProject(),location=getAdcLocation(),adcMode=isGeminiAdcAvailable()&&!!project&&!!location&&isVertexHost(parsedUrl.origin),adcToken=null;adcMode&&(adcToken=await getAdcAccessToken(init.signal??void 0));let resolvedApiKey=adcMode?null:apiKey===void 0?await getApiKey8(init.signal??void 0):apiKey,cloudflareApiKey=isCloudflareGateway()?await resolveCloudflareApiKey(init.signal??void 0):null,allowedOrigins=new Set([new URL(getApiHost()).origin,new URL(DEFAULT_API_HOST).origin,...adcMode?[parsedUrl.origin]:[]]);if((resolvedApiKey||isGatewayConfigured()||adcMode)&&!allowedOrigins.has(parsedUrl.origin))throw new Error("Gemini API request host is not allowed");let headers=new Headers(init.headers);if(headers.delete("x-goog-api-key"),headers.delete("cf-aig-authorization"),headers.delete("authorization"),adcMode&&adcToken)headers.set("Authorization",`Bearer ${adcToken}`);else for(let[name,value]of Object.entries(buildAuthHeaders(resolvedApiKey,cloudflareApiKey)))headers.set(name,value);try{let response=await fetch(parsedUrl,{...init,headers});return responseCredentials.set(response,{apiKey:resolvedApiKey,cloudflareApiKey,adcToken}),response}catch(error){let message=error instanceof Error?error.message:String(error),redactedMessage=redactGeminiCredentials(message,resolvedApiKey,cloudflareApiKey,adcToken);if(redactedMessage===message)throw error;let redactedError=new Error(redactedMessage);throw error instanceof Error&&(redactedError.name=error.name),redactedError}}function hasGeminiApiKeySource2(){return hasCredentialSource({provider:"Gemini",configuredValue:loadConfig10().geminiApiKey,environmentValue:process.env.GEMINI_API_KEY})}function isGeminiApiAvailable(){return isGeminiAdcAvailable()||hasGeminiApiKeySource2()||isGatewayConfigured()}function isGeminiApiAvailableWithVideo(){return hasGeminiApiKeySource2()||isGatewayConfigured()}async function queryGeminiApiWithInlineData(prompt,data,mimeType,options={}){let signal=withTimeout(options.signal,options.timeoutMs??12e4),apiKey=isGeminiAdcAvailable()?null:options.apiKey??await getApiKey8(signal);if(!apiKey&&!isGatewayConfigured()&&!isGeminiAdcAvailable())throw new Error(`Gemini API not configured. Either:
88
+ 1. Configure geminiApiKey in ${CONFIG_PATH12} or set GEMINI_API_KEY
89
+ 2. Set GOOGLE_GEMINI_BASE_URL + CLOUDFLARE_API_KEY for Cloudflare AI Gateway routing
90
+ 3. Set geminiAuth to "adc" with a Google Cloud ADC (GOOGLE_APPLICATION_CREDENTIALS) + project/location`);let model=options.model??DEFAULT_MODEL,url=`${getVersionedApiBase()}/models/${model}:generateContent`,res=await fetchGeminiApi(url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{role:"user",parts:[{inlineData:{mimeType,data}},{text:prompt}]}]}),signal},apiKey);if(!res.ok){let errorText=redactGeminiApiResponse(res,await res.text(),apiKey);throw new Error(`Gemini API error ${res.status}: ${errorText.slice(0,300)}`)}let response=await res.json(),candidate=response.candidates?.[0];return{text:candidate?.content?.parts?.map(part=>part.text).filter(part=>typeof part=="string"&&part.length>0).join(`
91
+ `)??"",...candidate?.finishReason?{finishReason:candidate.finishReason}:{},...response.promptFeedback?.blockReason?{blockReason:response.promptFeedback.blockReason}:{}}}async function queryGeminiApiWithVideo(prompt,videoUri,options={}){let signal=withTimeout(options.signal,options.timeoutMs??12e4),apiKey=options.apiKey??await getApiKey8(signal);if(!apiKey&&!isGatewayConfigured())throw new Error(`Gemini API not configured. Either:
92
+ 1. Configure geminiApiKey in ${CONFIG_PATH12} or set GEMINI_API_KEY
93
+ 2. Set GOOGLE_GEMINI_BASE_URL + CLOUDFLARE_API_KEY for Cloudflare AI Gateway routing`);let model=options.model??DEFAULT_MODEL,url=`${getVersionedApiBase()}/models/${model}:generateContent`,fileData={fileUri:videoUri};options.mimeType&&(fileData.mimeType=options.mimeType);let res=await fetchGeminiApi(url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{role:"user",parts:[{fileData},{text:prompt}]}]}),signal},apiKey);if(!res.ok){let errorText=redactGeminiApiResponse(res,await res.text(),apiKey);throw new Error(`Gemini API error ${res.status}: ${errorText.slice(0,300)}`)}let text=(await res.json()).candidates?.[0]?.content?.parts?.map(p=>p.text).filter(Boolean).join(`
94
+ `);if(!text)throw new Error("Gemini API returned empty response");return text}import{readFileSync as readFileSync17}from"node:fs";import{basename as basename3}from"node:path";var GEMINI_APP_URL="https://gemini.google.com/app",GEMINI_STREAM_GENERATE_URL="https://gemini.google.com/_/BardChatUi/data/assistant.lamda.BardFrontendService/StreamGenerate",GEMINI_UPLOAD_URL="https://content-push.googleapis.com/upload",GEMINI_UPLOAD_PUSH_ID="feeds/mcudyrk2a4khkz",GOOGLE_LIST_ACCOUNTS_URL="https://accounts.google.com/ListAccounts?gpsia=1&source=ChromiumBrowser&laf=b64bin&json=standard",USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",MODEL_HEADER_NAME="x-goog-ext-525001261-jspb",DEFAULT_GEMINI_WEB_MODEL="gemini-3.1-pro",MODEL_HEADERS={[DEFAULT_GEMINI_WEB_MODEL]:'[1,null,null,null,"9d8ca3786ebdfbea",null,null,0,[4]]',"gemini-2.5-pro":'[1,null,null,null,"4af6c7f5da75d65d",null,null,0,[4]]',"gemini-2.5-flash":'[1,null,null,null,"9ec249fc9ad08861",null,null,0,[4]]'},REQUIRED_COOKIES=["__Secure-1PSID","__Secure-1PSIDTS"],geminiFetchImpl=null;var geminiFetchOverride=null,GEMINI_MAX_HEADER_SIZE=4*1024*1024;function createGeminiFetch(undiciImpl){let agent=new undiciImpl.EnvHttpProxyAgent({allowH2:!1,connectTimeout:3e4,maxHeaderSize:GEMINI_MAX_HEADER_SIZE,pipelining:1});return(input,init)=>undiciImpl.fetch(input,{...init,dispatcher:agent})}async function resolveGeminiFetch(){if(geminiFetchOverride)return geminiFetchOverride;if(geminiFetchImpl)return geminiFetchImpl;let undici;try{undici=await import("./undici-D6ABF53Q.js")}catch{return geminiFetchImpl=fetch,geminiFetchImpl}return geminiFetchImpl=createGeminiFetch(undici),geminiFetchImpl}async function isGeminiWebAvailable(chromeProfile){if(!isBrowserCookieAccessAllowed())return null;let configured=getBrowserCookieSelectionFromConfig(),result=await getGoogleCookies({browser:configured.browser,profile:normalizeChromeProfile(chromeProfile)??configured.profile,requiredCookies:REQUIRED_COOKIES});return result?result.cookies:null}function getGeminiWebAvailabilityDiagnostic(){return isBrowserCookieAccessAllowed()?getLastGoogleCookieDiagnostic():null}function getGeminiWebAvailabilityDiagnosticDetails(){return isBrowserCookieAccessAllowed()?getLastGoogleCookieDiagnosticDetails():null}async function getActiveGoogleEmail(cookies){let cookieHeader=buildCookieHeader2(cookies);if(!cookieHeader)return null;try{let html=await fetchWithCookieRedirects(GEMINI_APP_URL,cookieHeader,10,AbortSignal.timeout(1e4)),email=extractEmailFromGeminiHtml(html);if(email)return email}catch{}try{let response=await fetchWithCookieRedirects(GOOGLE_LIST_ACCOUNTS_URL,cookieHeader,10,AbortSignal.timeout(1e4));return extractEmailFromListAccounts(response)}catch{return null}}async function queryWithCookies(prompt,cookieMap,options={}){let model=options.model??DEFAULT_GEMINI_WEB_MODEL;if(!MODEL_HEADERS[model])throw new Error(`Gemini Web does not support model ${model}; configure Gemini API or choose a supported Gemini Web model.`);let timeoutMs=options.timeoutMs??12e4,fullPrompt=prompt;options.youtubeUrl&&(fullPrompt=`${fullPrompt}
95
+
96
+ YouTube video: ${options.youtubeUrl}`);let result=await runGeminiWebOnce(fullPrompt,cookieMap,model,options.files,timeoutMs,options.signal);if(result.errorMessage)throw new Error(result.errorMessage);if(!result.text)throw new Error("Gemini Web returned empty response");return result.text}async function runGeminiWebOnce(prompt,cookieMap,model,files,timeoutMs,signal){let effectiveSignal=withTimeout2(signal,timeoutMs),cookieHeader=buildCookieHeader2(cookieMap),accessToken=await fetchAccessToken(cookieHeader,effectiveSignal),uploaded=[];if(files)for(let filePath of files)uploaded.push(await uploadFile(filePath,cookieHeader,effectiveSignal));let fReq=buildFReqPayload(prompt,uploaded),params=new URLSearchParams;params.set("at",accessToken),params.set("f.req",fReq);let res=await(await resolveGeminiFetch())(GEMINI_STREAM_GENERATE_URL,{method:"POST",redirect:"error",headers:{"content-type":"application/x-www-form-urlencoded;charset=utf-8",host:"gemini.google.com",origin:"https://gemini.google.com",referer:"https://gemini.google.com/","x-same-domain":"1","user-agent":USER_AGENT,cookie:cookieHeader,[MODEL_HEADER_NAME]:MODEL_HEADERS[model]},body:params.toString(),signal:effectiveSignal}),rawText=await res.text();if(!res.ok)return{text:"",errorMessage:`Gemini request failed: ${res.status}`};try{return parseStreamGenerateResponse(rawText)}catch(err){let errorCode;try{let json=JSON.parse(trimJsonEnvelope(rawText));errorCode=extractErrorCode(json)}catch{}return{text:"",errorCode,errorMessage:err instanceof Error?err.message:String(err)}}}async function fetchAccessToken(cookieHeader,signal){let html=await fetchWithCookieRedirects(GEMINI_APP_URL,cookieHeader,10,signal);for(let key2 of["SNlM0e","thykhd"]){let match=html.match(new RegExp(`"${key2}":"(.*?)"`));if(match?.[1])return match[1]}throw new Error("Unable to authenticate with Gemini. Make sure you're signed into gemini.google.com in a supported Chromium-based browser.")}async function fetchWithCookieRedirects(url,cookieHeader,maxRedirects,signal){let current=url,allowedOrigin=new URL(url).origin;for(let i=0;i<=maxRedirects;i++){let res=await(await resolveGeminiFetch())(current,{headers:{"user-agent":USER_AGENT,cookie:cookieHeader},redirect:"manual",signal});if(res.status>=300&&res.status<400){let location=res.headers.get("location");if(location){let next=new URL(location,current);if(next.origin!==allowedOrigin)throw new Error(`Refusing to send Google cookies across origins: ${allowedOrigin} -> ${next.origin}`);current=next.toString();continue}}return await res.text()}throw new Error(`Too many redirects (>${maxRedirects})`)}function extractEmailFromGeminiHtml(html){let patterns=[/"oPEP7c"\s*:\s*"([^"]+)"/,/aria-label="Google Account:[^"]*?\(([^)]+)\)"/,/"displayEmail"\s*:\s*"([^"]+)"/,/"defaultEmail"\s*:\s*"([^"]+)"/,/"email"\s*:\s*"([^"]+)"/,/"identifier"\s*:\s*"([^"]+)"/,/"gaiaIdentifier"\s*:\s*"([^"]+)"/];for(let pattern of patterns){let match=html.match(pattern),email=normalizeEmail(match?.[1]);if(email)return email}return findFirstEmail(html)}function extractEmailFromListAccounts(text){let trimmed=text.replace(/^\)\]\}'\s*/,"");try{return findEmailInValue(JSON.parse(trimmed))??findFirstEmail(trimmed)}catch{return findFirstEmail(trimmed)}}function findEmailInValue(value){if(typeof value=="string")return normalizeEmail(value);if(Array.isArray(value)){for(let item of value){let email=findEmailInValue(item);if(email)return email}return null}if(value&&typeof value=="object")for(let item of Object.values(value)){let email=findEmailInValue(item);if(email)return email}return null}function findFirstEmail(text){return decodeEmailEscapes(text).match(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/i)?.[0]??null}function normalizeEmail(value){if(!value)return null;let normalized=decodeEmailEscapes(value.trim());return/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(normalized)?normalized:null}function decodeEmailEscapes(value){return value.replace(/\\u0040/gi,"@").replace(/\\x40/gi,"@").replace(/&#64;/gi,"@").replace(/&commat;/gi,"@").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}async function uploadFile(filePath,cookieHeader,signal){let data=readFileSync17(filePath),fileName=basename3(filePath),boundary="----FormBoundary"+Math.random().toString(36).slice(2),header=`--${boundary}\r
97
+ Content-Disposition: form-data; name="file"; filename="${fileName}"\r
98
+ Content-Type: application/octet-stream\r
99
+ \r
100
+ `,footer=`\r
101
+ --${boundary}--\r
102
+ `,body=Buffer.concat([Buffer.from(header,"utf-8"),data,Buffer.from(footer,"utf-8")]),res=await(await resolveGeminiFetch())(GEMINI_UPLOAD_URL,{method:"POST",redirect:"error",headers:{"content-type":`multipart/form-data; boundary=${boundary}`,"push-id":GEMINI_UPLOAD_PUSH_ID,"user-agent":USER_AGENT,cookie:cookieHeader},body,signal});if(!res.ok){let text=await res.text();throw new Error(`File upload failed: ${res.status} (${text.slice(0,200)})`)}return{id:await res.text(),name:fileName}}function buildFReqPayload(prompt,uploaded){let innerList=[uploaded.length>0?[prompt,0,null,uploaded.map(file=>[[file.id,1]])]:[prompt],null,null];return JSON.stringify([null,JSON.stringify(innerList)])}function withTimeout2(signal,timeoutMs){let timeout=AbortSignal.timeout(timeoutMs);return signal?AbortSignal.any([signal,timeout]):timeout}function buildCookieHeader2(cookieMap){return Object.entries(cookieMap).filter(([,value])=>typeof value=="string"&&value.length>0).map(([name,value])=>`${name}=${value}`).join("; ")}function getNestedValue(value,pathParts){let current=value;for(let part of pathParts){if(current==null||!Array.isArray(current))return;current=current[part]}return current}function trimJsonEnvelope(text){let start=text.indexOf("["),end=text.lastIndexOf("]");if(start===-1||end===-1||end<=start)throw new Error("Gemini response did not contain a JSON payload.");return text.slice(start,end+1)}function extractErrorCode(responseJson){let code=getNestedValue(responseJson,[0,5,2,0,1,0]);return typeof code=="number"&&code>=0?code:void 0}function extractCandidateText(candidate){let textRaw=getNestedValue(candidate,[1,0]),text=typeof textRaw=="string"?textRaw:"";if(/^http:\/\/googleusercontent\.com\/card_content\/\d+/.test(text)){let alt=getNestedValue(candidate,[22,0]);typeof alt=="string"&&alt.length>0&&(text=alt)}return text}function parseStreamGenerateResponse(rawText){let responseJson=JSON.parse(trimJsonEnvelope(rawText)),errorCode=extractErrorCode(responseJson),parts=Array.isArray(responseJson)?responseJson:[],firstCandidateSeen,latestNonEmptyText="";for(let i=0;i<parts.length;i++){let partBody=getNestedValue(parts[i],[2]);if(!(!partBody||typeof partBody!="string"))try{let parsed=JSON.parse(partBody),candidateList=getNestedValue(parsed,[4]);if(!Array.isArray(candidateList)||candidateList.length===0)continue;let firstCandidate=candidateList[0];firstCandidateSeen===void 0&&(firstCandidateSeen=firstCandidate);let text2=extractCandidateText(firstCandidate);text2.length>0&&(latestNonEmptyText=text2)}catch{}}return{text:latestNonEmptyText.length>0?latestNonEmptyText:extractCandidateText(firstCandidateSeen),errorCode}}import{existsSync as existsSync17,readFileSync as readFileSync18}from"node:fs";var PERPLEXITY_API_URL="https://api.perplexity.ai/chat/completions",CONFIG_PATH13=getWebSearchConfigPath(),RATE_LIMIT={maxRequests:10,windowMs:60*1e3},requestTimestamps=[],cachedConfig12=null;function loadConfig11(){if(cachedConfig12)return cachedConfig12;if(!existsSync17(CONFIG_PATH13))return cachedConfig12={},cachedConfig12;let content=readFileSync18(CONFIG_PATH13,"utf-8");try{return cachedConfig12=JSON.parse(content),cachedConfig12}catch(err){let message=err instanceof Error?err.message:String(err);throw new Error(`Failed to parse ${CONFIG_PATH13}: ${message}`)}}async function getApiKey9(signal){let key2=await resolveCredential({provider:"Perplexity",configuredValue:loadConfig11().perplexityApiKey,environmentValue:process.env.PERPLEXITY_API_KEY,signal});if(!key2)throw new Error(`Perplexity API key not found. Either:
103
+ 1. Create ${CONFIG_PATH13} with { "perplexityApiKey": "your-key" }
104
+ 2. Set PERPLEXITY_API_KEY environment variable
105
+ Get a key at https://perplexity.ai/settings/api`);return key2}function checkRateLimit(){let now=Date.now(),windowStart=now-RATE_LIMIT.windowMs;for(;requestTimestamps.length>0&&requestTimestamps[0]<windowStart;)requestTimestamps.shift();if(requestTimestamps.length>=RATE_LIMIT.maxRequests){let waitMs=requestTimestamps[0]+RATE_LIMIT.windowMs-now;throw new Error(`Rate limited. Try again in ${Math.ceil(waitMs/1e3)}s`)}requestTimestamps.push(now)}function validateDomainFilter(domains){return domains.filter(d=>{let domain=d.startsWith("-")?d.slice(1):d;return/^[a-zA-Z0-9][a-zA-Z0-9-_.]*\.[a-zA-Z]{2,}$/.test(domain)})}function isPerplexityAvailable(){return hasCredentialSource({provider:"Perplexity",configuredValue:loadConfig11().perplexityApiKey,environmentValue:process.env.PERPLEXITY_API_KEY})}async function searchWithPerplexity(query2,options={}){checkRateLimit();let activityId=activityMonitor.logStart({type:"api",query:query2});activityMonitor.updateRateLimit({used:requestTimestamps.length,max:RATE_LIMIT.maxRequests,oldestTimestamp:requestTimestamps[0]??null,windowMs:RATE_LIMIT.windowMs});let apiKey=await getApiKey9(options.signal),numResults=typeof options.numResults=="number"&&Number.isFinite(options.numResults)?Math.max(1,Math.min(Math.floor(options.numResults),20)):5,requestBody={model:"sonar",messages:[{role:"user",content:query2}],max_tokens:1024,return_related_questions:!1};if(options.recencyFilter&&(requestBody.search_recency_filter=options.recencyFilter),options.domainFilter&&options.domainFilter.length>0){let validated=validateDomainFilter(options.domainFilter);validated.length>0&&(requestBody.search_domain_filter=validated)}let response;try{response=await fetch(PERPLEXITY_API_URL,{method:"POST",headers:{Authorization:`Bearer ${apiKey}`,"Content-Type":"application/json"},body:JSON.stringify(requestBody),...options.signal?{signal:options.signal}:{}})}catch(err){let message=err instanceof Error?err.message:String(err),redactedMessage=redactCredential(message,apiKey);if(redactedMessage.toLowerCase().includes("abort")?activityMonitor.logComplete(activityId,0):activityMonitor.logError(activityId,redactedMessage),redactedMessage===message)throw err;let redactedError=new Error(redactedMessage);throw err instanceof Error&&(redactedError.name=err.name),redactedError}if(!response.ok){activityMonitor.logComplete(activityId,response.status);let errorText=redactCredential(await response.text(),apiKey);throw new Error(`Perplexity API error ${response.status}: ${errorText}`)}let data;try{data=await response.json()}catch(err){activityMonitor.logComplete(activityId,response.status);let message=err instanceof Error?err.message:String(err);throw new Error(`Perplexity API returned invalid JSON: ${message}`)}let answer=data.choices?.[0]?.message?.content||"",citations=Array.isArray(data.citations)?data.citations:[],results=[];for(let i=0;i<Math.min(citations.length,numResults);i++){let citation=citations[i];typeof citation=="string"?results.push({title:`Source ${i+1}`,url:citation,snippet:""}):citation&&typeof citation=="object"&&typeof citation.url=="string"&&results.push({title:citation.title||`Source ${i+1}`,url:citation.url,snippet:""})}return activityMonitor.logComplete(activityId,response.status),{answer,results}}export{require_cross_spawn,spawnProcess,spawnProcessSync,waitForChildProcess,canonicalizePath,getFileRevision,isLocalPath,normalizePath,resolvePath,getCwdRelativePath,formatPathRelativeToCwdOrAbsolute,markPathIgnoredByCloudSync,splitBom,stripBom,isBunBinary,detectInstallMethod,getSelfUpdateCommand,getSelfUpdateUnavailableInstruction,getPackageDir,getThemesDir,getExportTemplateDir,getReadmePath,getDocsPath,getExamplesPath,getChangelogPath,getBundledInteractiveAssetPath,PACKAGE_NAME,APP_NAME,APP_TITLE,CONFIG_DIR_NAME,FIRST_TIME_SETUP_ENABLED,VERSION,UPSTREAM_PI_VERSION,ENV_PREFIX,ENV_AGENT_DIR,ENV_SESSION_DIR,ENV_OFFLINE,ENV_SHARE_VIEWER_URL,ENV_SKIP_VERSION_CHECK,ENV_TELEMETRY,expandTildePath,HUMAIN_TERMINAL_WEB_URL,DEFAULT_SHARE_VIEWER_URL,getVersionCheckUrl,getShareViewerUrl,getAgentDir,getCustomThemesDir,getAuthPath,getSettingsPath,getBinDir,getSessionsDir,getDebugLogPath,applyExifOrientation,loadPhoton,resizeImage,formatDimensionNote,getWebSearchConfigDir,getWebSearchConfigPath,resolveApiBaseUrl,fetchWithCredentialRedirects,resolveCuratorNetworkConfig,formatSeconds,readExecError,isTimeoutError,trimErrorText,mapFfmpegError,normalizeProxyUrl,runWithProxy,installGlobalProxyFetch,resolveAuthFetchProfile,assertAuthFetchUrl,authFetchRedirectGuard,activityMonitor,checkGhAvailable,showGhHint,extractGitHub,clearCloneCache,CredentialResolutionError,redactCredential,hasCredentialSource,resolveCredential,isGeminiAdcAvailable,DEFAULT_MODEL,getApiKey8 as getApiKey,getVersionedApiBase,getUploadBase,isGatewayConfigured,redactGeminiApiResponse,fetchGeminiApi,isGeminiApiAvailable,isGeminiApiAvailableWithVideo,queryGeminiApiWithInlineData,queryGeminiApiWithVideo,isBrowserCookieAccessAllowed,getLastBrowserCookieDiagnostic,getBrowserCookiesForHosts,isGeminiWebAvailable,getGeminiWebAvailabilityDiagnostic,getGeminiWebAvailabilityDiagnosticDetails,getActiveGoogleEmail,queryWithCookies,isPerplexityAvailable,searchWithPerplexity,isParallelAvailable,searchWithParallel,extractWithParallel,isParallelMcpAvailable,searchWithParallelMcp,extractWithParallelMcp,isTinyFishAvailable,searchWithTinyFish,extractWithTinyFish,isSearch1APIAvailable,searchWithSearch1API,extractWithSearch1API,isQueritAvailable,searchWithQuerit,extractWithQuerit,loadFetchContentDomainPolicy,loadSsrfConfig,validateRemoteUrl,fetchRemoteUrl,isFirecrawlAvailable,searchWithFirecrawl,extractWithFirecrawl,isKagiAvailable,searchWithKagi,isKagiExtractAvailable,extractWithKagi,isOllamaAvailable,searchWithOllama,isOllamaFetchAvailable,extractWithOllama,parseHTML};