@atom8n/n8n-editor-ui 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/.stylelintcache +1 -0
  2. package/README.md +59 -0
  3. package/biome.jsonc +8 -0
  4. package/build.log +55 -0
  5. package/data/node-popularity.json +3998 -0
  6. package/dist/assets/AddDataTableModal-UINkk54_.js +1555 -0
  7. package/dist/assets/AgentEditorModal-CVww87TJ.js +358 -0
  8. package/dist/assets/Alert-Dy86dyOr.js +102 -0
  9. package/dist/assets/AnimatedSpinner-DmPN4poP.js +15 -0
  10. package/dist/assets/AnnotationTagsDropdown.ee-BJ7N9lek.js +71 -0
  11. package/dist/assets/AuthView-D2LWHrMp.js +106 -0
  12. package/dist/assets/BottomMenu-CIQiK_dJ.js +532 -0
  13. package/dist/assets/CalendarDate-DgQUMbNo.js +875 -0
  14. package/dist/assets/ChangePasswordView-Z6tUkw0u.js +133 -0
  15. package/dist/assets/ChatAgentAvatar-50YBnv3N.js +67 -0
  16. package/dist/assets/ChatFile-xZxmc2nV.js +146 -0
  17. package/dist/assets/ChatLayout-CTE_5SiM.js +96 -0
  18. package/dist/assets/ChatPersonalAgentsView-BGpHk03K.js +149 -0
  19. package/dist/assets/ChatSidebar-BkVwIypC.js +528 -0
  20. package/dist/assets/ChatView-BbbdeU9x.js +1559 -0
  21. package/dist/assets/ChatWorkflowAgentsView-BtunOxlC.js +116 -0
  22. package/dist/assets/CollectionParameter-BdcPG1lu.js +52 -0
  23. package/dist/assets/CommitMonoVariable-ytizKI8U.woff2 +0 -0
  24. package/dist/assets/CommunityNodeUpdateInfo-C37kca4W.js +273 -0
  25. package/dist/assets/CopyInput-DDZVu2iU.js +74 -0
  26. package/dist/assets/CredentialIcon-8YdTTFZ1.js +80 -0
  27. package/dist/assets/CredentialPicker-DWtj314o.js +293 -0
  28. package/dist/assets/CredentialSelectorModal-DTW2fKh0.js +138 -0
  29. package/dist/assets/CredentialsView-BjUchcCu.js +480 -0
  30. package/dist/assets/DataTableActions-DpAkoxg_.js +95 -0
  31. package/dist/assets/DataTableDetailsView-Coq7zdW5.js +41922 -0
  32. package/dist/assets/DataTableView-Cs-BIkzw.js +293 -0
  33. package/dist/assets/DemoFooter-Cga3jvi-.js +65 -0
  34. package/dist/assets/Draggable-vfvXl9Sp.js +105 -0
  35. package/dist/assets/EmptySharedSectionActionBox-DOXZtTCv.js +36 -0
  36. package/dist/assets/EnterpriseEdition.ee-D_rCFexM.js +15 -0
  37. package/dist/assets/EntityNotFound-3dhTRWsE.js +85 -0
  38. package/dist/assets/EntityUnAuthorised-ChJYZakE.js +66 -0
  39. package/dist/assets/ErrorView-zT9cX76a.js +61 -0
  40. package/dist/assets/EvaluationsRootView-C-OVWYnY.js +523 -0
  41. package/dist/assets/EvaluationsView-CJwJTruc.js +469 -0
  42. package/dist/assets/ExecutionsTime-DEQiyozR.js +573 -0
  43. package/dist/assets/ExecutionsView-Bd5Oh8TH.js +791 -0
  44. package/dist/assets/ExternalSecretsProviderConnectionSwitch.ee-C7Ih-uRo.js +191 -0
  45. package/dist/assets/FixedCollectionParameter-CYuTDW9t.js +496 -0
  46. package/dist/assets/ForgotMyPasswordView-Bs_L9P27.js +102 -0
  47. package/dist/assets/InsightsChartAverageRuntime-Bp3VA8_7.js +62 -0
  48. package/dist/assets/InsightsChartFailed-KPaNWoEr.js +52 -0
  49. package/dist/assets/InsightsChartFailureRate-DE6kE3FM.js +54 -0
  50. package/dist/assets/InsightsChartTimeSaved-auABNZlc.js +68 -0
  51. package/dist/assets/InsightsChartTotal-BKzYRKE7.js +56 -0
  52. package/dist/assets/InsightsDashboard-JWx4W6Db.js +473 -0
  53. package/dist/assets/InsightsPaywall-C8zLLKe8.js +63 -0
  54. package/dist/assets/InsightsSummary-cmN1lHDm.js +210 -0
  55. package/dist/assets/InsightsTableWorkflows-CqcC3IbQ.js +203 -0
  56. package/dist/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
  57. package/dist/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
  58. package/dist/assets/ItemsRenderer-DC8WVyMv.js +922 -0
  59. package/dist/assets/KeyboardShortcutTooltip-D8PAK5JP.js +31 -0
  60. package/dist/assets/LogsPanel-BR06u9RK.js +52 -0
  61. package/dist/assets/LogsPanel-C-_acMHp.js +2325 -0
  62. package/dist/assets/MCPConnectWorkflowsModal-3g8_iUa4.js +303 -0
  63. package/dist/assets/MainHeader-DiQc1edn.js +2153 -0
  64. package/dist/assets/MainSidebar-CoPGG5Ea.js +804 -0
  65. package/dist/assets/MigrationRuleDetail-BAxk1Pvl.js +295 -0
  66. package/dist/assets/MigrationRules-IW9lZMpE.js +285 -0
  67. package/dist/assets/Modal-CIzXlZdZ.js +204 -0
  68. package/dist/assets/ModelByIdSelectorModal-DLvBjzJO.js +115 -0
  69. package/dist/assets/NDVEmptyState-33UoX00I.js +19743 -0
  70. package/dist/assets/NodeCreation-BNzbSWSB.js +240 -0
  71. package/dist/assets/NodeCreator-BftgCKx7.js +1288 -0
  72. package/dist/assets/NodeDetailsView-CsoQCpcF.js +1075 -0
  73. package/dist/assets/NodeDetailsViewV2-C_wNQR_3.js +981 -0
  74. package/dist/assets/NodeIcon-B9VW6tX6.js +87 -0
  75. package/dist/assets/NodeSettings-ZwVip6VR.js +1872 -0
  76. package/dist/assets/NodeView-D4WUEvLB.js +2452 -0
  77. package/dist/assets/OAuthConsentView-DlrUqZbT.js +230 -0
  78. package/dist/assets/PageViewLayout-NT1KPFgy.js +12 -0
  79. package/dist/assets/ParameterInputList-sG2nz-Jo.js +38091 -0
  80. package/dist/assets/PrebuiltAgentTemplatesView-Csi5U8dc.js +154 -0
  81. package/dist/assets/ProjectBreadcrumb-C_XiY7sc.js +98 -0
  82. package/dist/assets/ProjectCardBadge-t_hs7vzx.js +209 -0
  83. package/dist/assets/ProjectHeader-Dq5Ihb26.js +549 -0
  84. package/dist/assets/ProjectIcon-DY8gGuHX.js +64 -0
  85. package/dist/assets/ProjectRoleView-Du-KTrAC.js +435 -0
  86. package/dist/assets/ProjectRolesView-DjxM_y4u.js +239 -0
  87. package/dist/assets/ProjectSettings-C6kWuV21.js +966 -0
  88. package/dist/assets/ProjectSharing-CVUgNWAY.js +262 -0
  89. package/dist/assets/ProjectVariables-CJlAo3dv.js +467 -0
  90. package/dist/assets/ProviderSettingsModal-BUFC2ZLv.js +307 -0
  91. package/dist/assets/PushConnectionTracker-DPBnGV0v.js +27 -0
  92. package/dist/assets/ResolversView-3BdkvvYA.js +209 -0
  93. package/dist/assets/ResourceFiltersDropdown-dgyXpcEX.js +159 -0
  94. package/dist/assets/ResourcesListLayout-qBLtomK6.js +631 -0
  95. package/dist/assets/RunDataHtml-BrW0OQra.js +7 -0
  96. package/dist/assets/RunDataHtml-Cleia4Cj.js +40 -0
  97. package/dist/assets/RunDataJson-uxkrhYRK.js +227 -0
  98. package/dist/assets/RunDataJsonActions-DkPk7E8d.js +5007 -0
  99. package/dist/assets/RunDataParsedAiContent-CtPRjig-.js +26 -0
  100. package/dist/assets/RunDataParsedAiContent-WAuqLQ5M.js +192 -0
  101. package/dist/assets/RunDataSearch-YBWUr93C.js +141 -0
  102. package/dist/assets/RunDataTable-DcXaBynW.js +631 -0
  103. package/dist/assets/SamlOnboarding-BTdQ_hr3.js +78 -0
  104. package/dist/assets/SaveButton-D5sQSxIk.js +89 -0
  105. package/dist/assets/SelectedItemsInfo-BHZ-NvF5.js +58 -0
  106. package/dist/assets/SettingsApiView-IfZTMXx1.js +313 -0
  107. package/dist/assets/SettingsChatHubView-gWh2X6vX.js +285 -0
  108. package/dist/assets/SettingsCommunityNodesView-D8VQtpGY.js +349 -0
  109. package/dist/assets/SettingsExternalSecrets-CpMc7mkW.js +233 -0
  110. package/dist/assets/SettingsLdapView-CU5a2MAy.js +2553 -0
  111. package/dist/assets/SettingsLogStreamingView-uojTe-oX.js +375 -0
  112. package/dist/assets/SettingsMCPView-B5Swp1C_.js +1214 -0
  113. package/dist/assets/SettingsPersonalView-Cr3aGood.js +402 -0
  114. package/dist/assets/SettingsSourceControl-DXOvFDEY.js +547 -0
  115. package/dist/assets/SettingsSso-27MfU1HV.js +1032 -0
  116. package/dist/assets/SettingsUsageAndPlan-DqIO-G46.js +419 -0
  117. package/dist/assets/SettingsUsersView-DfHB4_Kh.js +833 -0
  118. package/dist/assets/SettingsView-C4sA7Uny.js +90 -0
  119. package/dist/assets/SetupTemplateFormStep-BmiSzZin.js +258 -0
  120. package/dist/assets/SetupView-VORZ-L_u.js +112 -0
  121. package/dist/assets/SetupWorkflowCredentialsButton-DTmkOAW5.js +73 -0
  122. package/dist/assets/SetupWorkflowFromTemplateView-B9NupdJE.js +286 -0
  123. package/dist/assets/SeverityTag-CX1qTTNA.js +45 -0
  124. package/dist/assets/SigninView-D9_Pm16j.js +358 -0
  125. package/dist/assets/SignoutView-BFsjEAGz.js +19 -0
  126. package/dist/assets/SignupView-Am4ot0QZ.js +137 -0
  127. package/dist/assets/SkeletonAgentCard-C5TL-h8F.js +191 -0
  128. package/dist/assets/TagsDropdown-Bvx_Hd6Q.js +230 -0
  129. package/dist/assets/TemplateCard-CyQ1GuVz.js +105 -0
  130. package/dist/assets/TemplateDetails-CZRusTxE.js +124 -0
  131. package/dist/assets/TemplateList-DKvbwuiY.js +333 -0
  132. package/dist/assets/TemplatesCollectionView-D8dxU8By.js +184 -0
  133. package/dist/assets/TemplatesSearchView-CebC_GLs.js +1230 -0
  134. package/dist/assets/TemplatesView-025CcmIY.js +57 -0
  135. package/dist/assets/TemplatesWorkflowView-C2JfwJAn.js +170 -0
  136. package/dist/assets/TestRunDetailView-Ck78TTWO.js +395 -0
  137. package/dist/assets/TextWithHighlights-BxumwGnv.js +57 -0
  138. package/dist/assets/TimeAgo-C6EN4lCs.js +123 -0
  139. package/dist/assets/ToolsSelectorModal-8QJoUvRL.js +368 -0
  140. package/dist/assets/TriggerPanel-B6pacLkk.js +1225 -0
  141. package/dist/assets/VirtualSchema-B3zGe_8b.js +2402 -0
  142. package/dist/assets/VirtualSchema-Dkh0Cu5z.js +37 -0
  143. package/dist/assets/VueMarkdown-CQqJL9vK.js +28 -0
  144. package/dist/assets/WorkerView-Caznsljo.js +563 -0
  145. package/dist/assets/WorkflowActivationErrorMessage-CGrfPi9O.js +17 -0
  146. package/dist/assets/WorkflowActivator-BINnz0f7.js +362 -0
  147. package/dist/assets/WorkflowExecutionsInfoAccordion-Dg37yEfT.js +166 -0
  148. package/dist/assets/WorkflowExecutionsLandingPage-V2wdubhK.js +93 -0
  149. package/dist/assets/WorkflowExecutionsPreview-DdJaqYV6.js +616 -0
  150. package/dist/assets/WorkflowExecutionsView-DV8ySTfn.js +808 -0
  151. package/dist/assets/WorkflowHistory-GtaBMzIM.js +973 -0
  152. package/dist/assets/WorkflowLocation-CQ9Sq-2y.js +164 -0
  153. package/dist/assets/WorkflowOnboardingView-C49gt0Jr.js +61 -0
  154. package/dist/assets/WorkflowPreview-CXdvv4Nq.js +186 -0
  155. package/dist/assets/WorkflowTagsDropdown-QwbICWjN.js +71 -0
  156. package/dist/assets/WorkflowsView-B-MWIECO.js +3253 -0
  157. package/dist/assets/_MapCache-CcdIl4Ae.js +363 -0
  158. package/dist/assets/_baseOrderBy-N8Be_6z6.js +2989 -0
  159. package/dist/assets/_initCloneObject-viQQyT6o.js +80 -0
  160. package/dist/assets/_plugin-vue_export-helper-BwBpWJRZ.js +6 -0
  161. package/dist/assets/aiTemplatesStarterCollection.store-nL9nePkK.js +656 -0
  162. package/dist/assets/apiKeys.store-BhOFmP2j.js +51 -0
  163. package/dist/assets/assistant.store-CNywgN4S.js +518 -0
  164. package/dist/assets/auth.eventBus-CWXS0Qp7.js +5 -0
  165. package/dist/assets/banners.store-CGEcBTDn.js +195 -0
  166. package/dist/assets/builder.store-Czk2ipDE.js +31417 -0
  167. package/dist/assets/buttons.esm-yintpW2E.js +364 -0
  168. package/dist/assets/chart-CNvyywtJ.js +10958 -0
  169. package/dist/assets/chartjs.utils-BAE52Cv9.js +155 -0
  170. package/dist/assets/chat.store-290YeyrQ.js +865 -0
  171. package/dist/assets/chatPanel.store-NDaawEZL.js +118 -0
  172. package/dist/assets/chunk-6z4oVpB-.js +36 -0
  173. package/dist/assets/col-Cmt4cmuS.js +158 -0
  174. package/dist/assets/constants-C8OH4tTq.js +106256 -0
  175. package/dist/assets/constants-DMrsrpD7.js +32 -0
  176. package/dist/assets/core-B9gt_4yk.js +4 -0
  177. package/dist/assets/core-CP5FY4aX.js +1202 -0
  178. package/dist/assets/core-CRbPymLT.js +9741 -0
  179. package/dist/assets/dataTable.store-DmipQsol.js +207 -0
  180. package/dist/assets/date-picker-2IDsBs2n.js +4115 -0
  181. package/dist/assets/dateFormatter-ik4-9_9r.js +33 -0
  182. package/dist/assets/dateformat-hG8NERse.js +181 -0
  183. package/dist/assets/dialog-lMho1TD8.js +425 -0
  184. package/dist/assets/dist-Cw46Is-h.js +151 -0
  185. package/dist/assets/doppler-B__k0MeW.webp +0 -0
  186. package/dist/assets/element-icons-B-tDfklg.woff +0 -0
  187. package/dist/assets/element-icons-_lZGOqcG.ttf +0 -0
  188. package/dist/assets/empty-BuGRxzl4.js +2210 -0
  189. package/dist/assets/en-CF30SCh2.js +95 -0
  190. package/dist/assets/en-DyO2pPiC.js +2 -0
  191. package/dist/assets/es-BkUFJVtD.js +43338 -0
  192. package/dist/assets/evaluation.constants-GYAwmJnh.js +284 -0
  193. package/dist/assets/executions.store-B9uRYwgv.js +205 -0
  194. package/dist/assets/exports-Crx_gvt_.js +1799 -0
  195. package/dist/assets/externalSecrets.ee.store-BJh4a_6G.js +118 -0
  196. package/dist/assets/fileUtils-CRWqOQje.js +20 -0
  197. package/dist/assets/folders.store-yAFj-5Vl.js +235 -0
  198. package/dist/assets/get-BcEmeOxn.js +2781 -0
  199. package/dist/assets/index-SL8542zQ.js +28372 -0
  200. package/dist/assets/insights.constants-BkJCYJTL.js +55 -0
  201. package/dist/assets/insights.store-BFc3kDUo.js +61 -0
  202. package/dist/assets/insights.utils-CcLXdrrz.js +77 -0
  203. package/dist/assets/isEmpty-C3XXoHqJ.js +35216 -0
  204. package/dist/assets/languageModules-9LyndCqU.js +13862 -0
  205. package/dist/assets/logStreaming.store-IZhWe_VK.js +190 -0
  206. package/dist/assets/mcp.constants-_Jcn7fPq.js +10 -0
  207. package/dist/assets/mcp.store-B9yfcAN9.js +116 -0
  208. package/dist/assets/merge-DhuTk1HM.js +564 -0
  209. package/dist/assets/nodeCreator.store-Bpnrwp2l.js +5444 -0
  210. package/dist/assets/nodeIcon-D6X-ENYt.js +102 -0
  211. package/dist/assets/nodeTransforms-RzcOM0v2.js +42 -0
  212. package/dist/assets/orderBy-Cu9F9DU_.js +15 -0
  213. package/dist/assets/path-browserify-RUt2u7iT.js +328 -0
  214. package/dist/assets/personalizedTemplatesV3.store-BGYp0YBN.js +334 -0
  215. package/dist/assets/pickBy-UI0Jt4wC.js +18 -0
  216. package/dist/assets/preload-helper-dyVz7ck7.js +59 -0
  217. package/dist/assets/radio-CSce3UT0.js +262 -0
  218. package/dist/assets/readyToRun.store-YEMvPUqo.js +626 -0
  219. package/dist/assets/readyToRunWorkflows.store-G3srgIze.js +1319 -0
  220. package/dist/assets/retry-BgHaYzbB.js +23 -0
  221. package/dist/assets/roles.store-CRf_zJTb.js +51 -0
  222. package/dist/assets/router-DNpzz3GH.js +2631 -0
  223. package/dist/assets/sanitize-html-CbW56HUN.js +10758 -0
  224. package/dist/assets/schemaPreview.store-DUgN1yVE.js +113 -0
  225. package/dist/assets/semver-Bk6DGseV.js +1306 -0
  226. package/dist/assets/smartDecimal-DAZl4HKA.js +6 -0
  227. package/dist/assets/sortByProperty-Cn7iGKYu.js +8 -0
  228. package/dist/assets/sourceControl.eventBus-D47xXSc_.js +3 -0
  229. package/dist/assets/sqlite3-DBpDb1lf.wasm +0 -0
  230. package/dist/assets/sqlite3-opfs-async-proxy-vVtmDGHX.js +461 -0
  231. package/dist/assets/sqlite3-worker1-bundler-friendly-DLarOZDL.js +9405 -0
  232. package/dist/assets/src-jviYSG25.js +55454 -0
  233. package/dist/assets/sso.store-DyApJwhx.js +139 -0
  234. package/dist/assets/style-E3CrYFV8.css +111829 -0
  235. package/dist/assets/table-we1DjFMV.js +3944 -0
  236. package/dist/assets/templateActions-bEDSARw2.js +65 -0
  237. package/dist/assets/templateTransforms-BHWiRbtR.js +43 -0
  238. package/dist/assets/truncate-C0KYt7i3.js +4176 -0
  239. package/dist/assets/typescript.worker-CYqLvLHh.js +152048 -0
  240. package/dist/assets/uniqBy-xDyuCRP0.js +10 -0
  241. package/dist/assets/usage.store-CU5J_nGm.js +100 -0
  242. package/dist/assets/useActions-B1JckIRj.js +255 -0
  243. package/dist/assets/useBeforeUnload-DiDkvI8p.js +40 -0
  244. package/dist/assets/useCanvasMapping-BXT7rGhC.js +12570 -0
  245. package/dist/assets/useCanvasOperations-8ULLtMkY.js +1765 -0
  246. package/dist/assets/useClipboard-DvjhVHqJ.js +39 -0
  247. package/dist/assets/useCommandBar-C4tLJbKt.js +2425 -0
  248. package/dist/assets/useCredentialResolvers-BKeFGJnY.js +78 -0
  249. package/dist/assets/useCustomAgent-DpILEt5e.js +471 -0
  250. package/dist/assets/useDebounce-Br5_1ug-.js +147 -0
  251. package/dist/assets/useExecutionData-M5iKsX6z.js +23 -0
  252. package/dist/assets/useExecutionDebugging-8azMzbnd.js +191 -0
  253. package/dist/assets/useExecutionHelpers-BgRRhpBM.js +91 -0
  254. package/dist/assets/useImportCurlCommand-CKiEmX5P.js +8891 -0
  255. package/dist/assets/useIntersectionObserver-BWMwOueh.js +33 -0
  256. package/dist/assets/useKeybindings-B2jfN6rd.js +62 -0
  257. package/dist/assets/useLogsTreeExpand-sZViUfdM.js +843 -0
  258. package/dist/assets/useMcp-DoMOIfqT.js +27 -0
  259. package/dist/assets/usePageRedirectionHelper-DjkznpX6.js +51 -0
  260. package/dist/assets/usePinnedData-BhZkqttf.js +203 -0
  261. package/dist/assets/usePushConnection-DMS-F_IW.js +513 -0
  262. package/dist/assets/useRecentResources-BVORr7eM.js +118 -0
  263. package/dist/assets/useRunWorkflow-LO7ffLp9.js +950 -0
  264. package/dist/assets/useSettingsItems-BhZXwMZn.js +144 -0
  265. package/dist/assets/useTelemetryContext-V6bv4YRq.js +34 -0
  266. package/dist/assets/useWorkflowActivate-DeSmDXjI.js +152 -0
  267. package/dist/assets/useWorkflowsCache-DtcEEAIR.js +179 -0
  268. package/dist/assets/userRoleProvisioning.store-kkSIdeTo.js +33 -0
  269. package/dist/assets/utils-DI7dLldp.js +54 -0
  270. package/dist/assets/versions.store-B1z2OrLE.js +191 -0
  271. package/dist/assets/vue-CydWIhxN.js +4378 -0
  272. package/dist/assets/vue-json-pretty-CsGX66mG.js +1130 -0
  273. package/dist/assets/vue.runtime.esm-bundler-tP5dCd7J.js +7325 -0
  274. package/dist/assets/xml-B_oj6Mle.js +2060 -0
  275. package/dist/favicon.ico +0 -0
  276. package/dist/index.html +157 -0
  277. package/dist/static/base-path.js +1 -0
  278. package/dist/static/community_package_tooltip_img.png +0 -0
  279. package/dist/static/data-mapping-gif.gif +0 -0
  280. package/dist/static/form-grey.svg +1 -0
  281. package/dist/static/google-auth/disabled.dark.png +0 -0
  282. package/dist/static/google-auth/disabled.png +0 -0
  283. package/dist/static/google-auth/focus.dark.png +0 -0
  284. package/dist/static/google-auth/focus.png +0 -0
  285. package/dist/static/google-auth/normal.dark.png +0 -0
  286. package/dist/static/google-auth/normal.png +0 -0
  287. package/dist/static/google-auth/pressed.dark.png +0 -0
  288. package/dist/static/google-auth/pressed.png +0 -0
  289. package/dist/static/n8n-logo.png +0 -0
  290. package/dist/static/og_image.png +0 -0
  291. package/dist/static/open-ai.svg +1 -0
  292. package/dist/static/openChat.png +0 -0
  293. package/dist/static/posthog.init.js +41 -0
  294. package/dist/static/prefers-color-scheme.css +5 -0
  295. package/dist/static/webhook-icon.svg +1 -0
  296. package/dist/tree-sitter-bash.wasm +0 -0
  297. package/dist/tree-sitter.wasm +0 -0
  298. package/eslint.config.mjs +59 -0
  299. package/index.html +45 -0
  300. package/index.js +0 -0
  301. package/package.json +147 -0
  302. package/postcss.config.cjs +6 -0
  303. package/scripts/fetch-node-popularity.mjs +102 -0
  304. package/stylelint.config.mjs +9 -0
  305. package/tailwind.config.js +8 -0
  306. package/tsconfig.json +36 -0
  307. package/vite/i18n-locales-hmr-helpers.ts +19 -0
  308. package/vite/source-map-js-shim.ts +1 -0
  309. package/vite/vite-plugin-node-popularity.mts +32 -0
  310. package/vite.config.mts +304 -0
@@ -0,0 +1,950 @@
1
+ import { o as __toESM } from "./chunk-6z4oVpB-.js";
2
+ import { C as computed, It as ref, _t as watch } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
3
+ import { rt as useI18n, v as useLocalStorage } from "./core-CRbPymLT.js";
4
+ import { Hi as isEmpty, Kn as useNodeHelpers, P as useWorkflowsStore, Qr as BulkCommand, Tt as displayForm, Xn as useDocumentTitle, Xr as AddConnectionCommand, Yr as useHistoryStore, Zr as AddNodeCommand, ei as EnableNodeToggleCommand, k as useTelemetry, ms as useSettingsStore, n as useWorkflowSaving, ni as RemoveConnectionCommand, qn as injectWorkflowState, qr as CanvasNodeDirtiness, ri as RemoveNodeCommand, wc as STORES, x as useExternalHooks, y as useToast, zn as useWorkflowHelpers } from "./builder.store-Czk2ipDE.js";
5
+ import { t as require_get } from "./get-BcEmeOxn.js";
6
+ import { Bs as LOCAL_STORAGE_RUN_DATA_WORKER, Jr as createHeartbeatMessage, M as IN_PROGRESS_EXECUTION_ID, Ua as NodeConnectionTypes, Vi as createRunExecutionData, qi as generateNodesGraph, zt as CHAT_TRIGGER_NODE_TYPE } from "./constants-C8OH4tTq.js";
7
+ import { k as defineStore, r as useRootStore } from "./_baseOrderBy-N8Be_6z6.js";
8
+ import { t as retry } from "./retry-BgHaYzbB.js";
9
+ import { t as useExecutionsStore } from "./executions.store-B9uRYwgv.js";
10
+ import { t as useCanvasOperations } from "./useCanvasOperations-8ULLtMkY.js";
11
+ const useHeartbeat = (options) => {
12
+ const { interval, onHeartbeat } = options;
13
+ const heartbeatTimer = ref(null);
14
+ const startHeartbeat = () => {
15
+ heartbeatTimer.value = setInterval(onHeartbeat, interval);
16
+ };
17
+ const stopHeartbeat = () => {
18
+ if (heartbeatTimer.value) {
19
+ clearInterval(heartbeatTimer.value);
20
+ heartbeatTimer.value = null;
21
+ }
22
+ };
23
+ return {
24
+ startHeartbeat,
25
+ stopHeartbeat
26
+ };
27
+ };
28
+ const useReconnectTimer = ({ onAttempt, onAttemptScheduled }) => {
29
+ const initialReconnectDelay = 1e3;
30
+ const maxReconnectDelay = 15e3;
31
+ const reconnectTimer = ref(null);
32
+ const reconnectAttempts = ref(0);
33
+ const scheduleReconnect = () => {
34
+ const delay = Math.min(initialReconnectDelay * 2 ** reconnectAttempts.value, maxReconnectDelay);
35
+ reconnectAttempts.value++;
36
+ onAttemptScheduled(delay);
37
+ reconnectTimer.value = setTimeout(() => {
38
+ onAttempt();
39
+ }, delay);
40
+ };
41
+ const stopReconnectTimer = () => {
42
+ if (reconnectTimer.value) {
43
+ clearTimeout(reconnectTimer.value);
44
+ reconnectTimer.value = null;
45
+ }
46
+ };
47
+ const resetConnectionAttempts = () => {
48
+ reconnectAttempts.value = 0;
49
+ };
50
+ return {
51
+ scheduleReconnect,
52
+ stopReconnectTimer,
53
+ resetConnectionAttempts
54
+ };
55
+ };
56
+ const useWebSocketClient = (options) => {
57
+ const isConnected = ref(false);
58
+ const socket = ref(null);
59
+ const { startHeartbeat, stopHeartbeat } = useHeartbeat({
60
+ interval: 3e4,
61
+ onHeartbeat: () => {
62
+ socket.value?.send(JSON.stringify(createHeartbeatMessage()));
63
+ }
64
+ });
65
+ const onConnected = () => {
66
+ socket.value?.removeEventListener("open", onConnected);
67
+ isConnected.value = true;
68
+ startHeartbeat();
69
+ reconnectTimer.resetConnectionAttempts();
70
+ };
71
+ const onConnectionLost = (event) => {
72
+ console.warn(`[WebSocketClient] Connection lost, code=${event.code ?? "unknown"}`);
73
+ disconnect();
74
+ reconnectTimer.scheduleReconnect();
75
+ };
76
+ const onMessage = (event) => {
77
+ options.onMessage(event.data);
78
+ };
79
+ const onError = (error) => {
80
+ console.warn("[WebSocketClient] Connection error:", error);
81
+ };
82
+ const disconnect = () => {
83
+ if (socket.value) {
84
+ stopHeartbeat();
85
+ reconnectTimer.stopReconnectTimer();
86
+ socket.value.removeEventListener("message", onMessage);
87
+ socket.value.removeEventListener("error", onError);
88
+ socket.value.removeEventListener("close", onConnectionLost);
89
+ socket.value.close(1e3);
90
+ socket.value = null;
91
+ }
92
+ isConnected.value = false;
93
+ };
94
+ const connect = () => {
95
+ disconnect();
96
+ socket.value = new WebSocket(options.url);
97
+ socket.value.addEventListener("open", onConnected);
98
+ socket.value.addEventListener("message", onMessage);
99
+ socket.value.addEventListener("error", onError);
100
+ socket.value.addEventListener("close", onConnectionLost);
101
+ socket.value.binaryType = "arraybuffer";
102
+ };
103
+ const reconnectTimer = useReconnectTimer({
104
+ onAttempt: connect,
105
+ onAttemptScheduled: (delay) => {
106
+ console.log(`[WebSocketClient] Attempting to reconnect in ${delay}ms`);
107
+ }
108
+ });
109
+ const sendMessage = (serializedMessage) => {
110
+ if (!isConnected.value || !socket.value) throw new Error("Not connected to the server");
111
+ socket.value.send(serializedMessage);
112
+ };
113
+ return {
114
+ isConnected,
115
+ connect,
116
+ disconnect,
117
+ sendMessage
118
+ };
119
+ };
120
+ const useEventSourceClient = (options) => {
121
+ const isConnected = ref(false);
122
+ const eventSource = ref(null);
123
+ const onConnected = () => {
124
+ isConnected.value = true;
125
+ reconnectTimer.resetConnectionAttempts();
126
+ };
127
+ const onConnectionLost = () => {
128
+ console.warn("[EventSourceClient] Connection lost");
129
+ isConnected.value = false;
130
+ reconnectTimer.scheduleReconnect();
131
+ };
132
+ const onMessage = (event) => {
133
+ options.onMessage(event.data);
134
+ };
135
+ const disconnect = () => {
136
+ if (eventSource.value) {
137
+ reconnectTimer.stopReconnectTimer();
138
+ eventSource.value.close();
139
+ eventSource.value = null;
140
+ }
141
+ isConnected.value = false;
142
+ };
143
+ const connect = () => {
144
+ disconnect();
145
+ eventSource.value = new EventSource(options.url, { withCredentials: true });
146
+ eventSource.value.addEventListener("open", onConnected);
147
+ eventSource.value.addEventListener("message", onMessage);
148
+ eventSource.value.addEventListener("close", onConnectionLost);
149
+ };
150
+ const reconnectTimer = useReconnectTimer({
151
+ onAttempt: connect,
152
+ onAttemptScheduled: (delay) => {
153
+ console.log(`[EventSourceClient] Attempting to reconnect in ${delay}ms`);
154
+ }
155
+ });
156
+ const sendMessage = (_) => {};
157
+ return {
158
+ isConnected,
159
+ connect,
160
+ disconnect,
161
+ sendMessage
162
+ };
163
+ };
164
+ /**
165
+ * @license
166
+ * Copyright 2019 Google LLC
167
+ * SPDX-License-Identifier: Apache-2.0
168
+ */
169
+ var proxyMarker = Symbol("Comlink.proxy");
170
+ var createEndpoint = Symbol("Comlink.endpoint");
171
+ var releaseProxy = Symbol("Comlink.releaseProxy");
172
+ var finalizer = Symbol("Comlink.finalizer");
173
+ var throwMarker = Symbol("Comlink.thrown");
174
+ var isObject = (val) => typeof val === "object" && val !== null || typeof val === "function";
175
+ var transferHandlers = new Map([["proxy", {
176
+ canHandle: (val) => isObject(val) && val[proxyMarker],
177
+ serialize(obj) {
178
+ const { port1, port2 } = new MessageChannel();
179
+ expose(obj, port1);
180
+ return [port2, [port2]];
181
+ },
182
+ deserialize(port) {
183
+ port.start();
184
+ return wrap(port);
185
+ }
186
+ }], ["throw", {
187
+ canHandle: (value) => isObject(value) && throwMarker in value,
188
+ serialize({ value }) {
189
+ let serialized;
190
+ if (value instanceof Error) serialized = {
191
+ isError: true,
192
+ value: {
193
+ message: value.message,
194
+ name: value.name,
195
+ stack: value.stack
196
+ }
197
+ };
198
+ else serialized = {
199
+ isError: false,
200
+ value
201
+ };
202
+ return [serialized, []];
203
+ },
204
+ deserialize(serialized) {
205
+ if (serialized.isError) throw Object.assign(new Error(serialized.value.message), serialized.value);
206
+ throw serialized.value;
207
+ }
208
+ }]]);
209
+ function isAllowedOrigin(allowedOrigins, origin) {
210
+ for (const allowedOrigin of allowedOrigins) {
211
+ if (origin === allowedOrigin || allowedOrigin === "*") return true;
212
+ if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) return true;
213
+ }
214
+ return false;
215
+ }
216
+ function expose(obj, ep = globalThis, allowedOrigins = ["*"]) {
217
+ ep.addEventListener("message", function callback(ev) {
218
+ if (!ev || !ev.data) return;
219
+ if (!isAllowedOrigin(allowedOrigins, ev.origin)) {
220
+ console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);
221
+ return;
222
+ }
223
+ const { id, type, path } = Object.assign({ path: [] }, ev.data);
224
+ const argumentList = (ev.data.argumentList || []).map(fromWireValue);
225
+ let returnValue;
226
+ try {
227
+ const parent = path.slice(0, -1).reduce((obj$1, prop) => obj$1[prop], obj);
228
+ const rawValue = path.reduce((obj$1, prop) => obj$1[prop], obj);
229
+ switch (type) {
230
+ case "GET":
231
+ returnValue = rawValue;
232
+ break;
233
+ case "SET":
234
+ parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);
235
+ returnValue = true;
236
+ break;
237
+ case "APPLY":
238
+ returnValue = rawValue.apply(parent, argumentList);
239
+ break;
240
+ case "CONSTRUCT":
241
+ returnValue = proxy(new rawValue(...argumentList));
242
+ break;
243
+ case "ENDPOINT":
244
+ {
245
+ const { port1, port2 } = new MessageChannel();
246
+ expose(obj, port2);
247
+ returnValue = transfer(port1, [port1]);
248
+ }
249
+ break;
250
+ case "RELEASE":
251
+ returnValue = void 0;
252
+ break;
253
+ default: return;
254
+ }
255
+ } catch (value) {
256
+ returnValue = {
257
+ value,
258
+ [throwMarker]: 0
259
+ };
260
+ }
261
+ Promise.resolve(returnValue).catch((value) => {
262
+ return {
263
+ value,
264
+ [throwMarker]: 0
265
+ };
266
+ }).then((returnValue$1) => {
267
+ const [wireValue, transferables] = toWireValue(returnValue$1);
268
+ ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);
269
+ if (type === "RELEASE") {
270
+ ep.removeEventListener("message", callback);
271
+ closeEndPoint(ep);
272
+ if (finalizer in obj && typeof obj[finalizer] === "function") obj[finalizer]();
273
+ }
274
+ }).catch((error) => {
275
+ const [wireValue, transferables] = toWireValue({
276
+ value: /* @__PURE__ */ new TypeError("Unserializable return value"),
277
+ [throwMarker]: 0
278
+ });
279
+ ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);
280
+ });
281
+ });
282
+ if (ep.start) ep.start();
283
+ }
284
+ function isMessagePort(endpoint) {
285
+ return endpoint.constructor.name === "MessagePort";
286
+ }
287
+ function closeEndPoint(endpoint) {
288
+ if (isMessagePort(endpoint)) endpoint.close();
289
+ }
290
+ function wrap(ep, target) {
291
+ return createProxy(ep, [], target);
292
+ }
293
+ function throwIfProxyReleased(isReleased) {
294
+ if (isReleased) throw new Error("Proxy has been released and is not useable");
295
+ }
296
+ function releaseEndpoint(ep) {
297
+ return requestResponseMessage(ep, { type: "RELEASE" }).then(() => {
298
+ closeEndPoint(ep);
299
+ });
300
+ }
301
+ var proxyCounter = /* @__PURE__ */ new WeakMap();
302
+ var proxyFinalizers = "FinalizationRegistry" in globalThis && new FinalizationRegistry((ep) => {
303
+ const newCount = (proxyCounter.get(ep) || 0) - 1;
304
+ proxyCounter.set(ep, newCount);
305
+ if (newCount === 0) releaseEndpoint(ep);
306
+ });
307
+ function registerProxy(proxy$1, ep) {
308
+ const newCount = (proxyCounter.get(ep) || 0) + 1;
309
+ proxyCounter.set(ep, newCount);
310
+ if (proxyFinalizers) proxyFinalizers.register(proxy$1, ep, proxy$1);
311
+ }
312
+ function unregisterProxy(proxy$1) {
313
+ if (proxyFinalizers) proxyFinalizers.unregister(proxy$1);
314
+ }
315
+ function createProxy(ep, path = [], target = function() {}) {
316
+ let isProxyReleased = false;
317
+ const proxy$1 = new Proxy(target, {
318
+ get(_target, prop) {
319
+ throwIfProxyReleased(isProxyReleased);
320
+ if (prop === releaseProxy) return () => {
321
+ unregisterProxy(proxy$1);
322
+ releaseEndpoint(ep);
323
+ isProxyReleased = true;
324
+ };
325
+ if (prop === "then") {
326
+ if (path.length === 0) return { then: () => proxy$1 };
327
+ const r = requestResponseMessage(ep, {
328
+ type: "GET",
329
+ path: path.map((p) => p.toString())
330
+ }).then(fromWireValue);
331
+ return r.then.bind(r);
332
+ }
333
+ return createProxy(ep, [...path, prop]);
334
+ },
335
+ set(_target, prop, rawValue) {
336
+ throwIfProxyReleased(isProxyReleased);
337
+ const [value, transferables] = toWireValue(rawValue);
338
+ return requestResponseMessage(ep, {
339
+ type: "SET",
340
+ path: [...path, prop].map((p) => p.toString()),
341
+ value
342
+ }, transferables).then(fromWireValue);
343
+ },
344
+ apply(_target, _thisArg, rawArgumentList) {
345
+ throwIfProxyReleased(isProxyReleased);
346
+ const last = path[path.length - 1];
347
+ if (last === createEndpoint) return requestResponseMessage(ep, { type: "ENDPOINT" }).then(fromWireValue);
348
+ if (last === "bind") return createProxy(ep, path.slice(0, -1));
349
+ const [argumentList, transferables] = processArguments(rawArgumentList);
350
+ return requestResponseMessage(ep, {
351
+ type: "APPLY",
352
+ path: path.map((p) => p.toString()),
353
+ argumentList
354
+ }, transferables).then(fromWireValue);
355
+ },
356
+ construct(_target, rawArgumentList) {
357
+ throwIfProxyReleased(isProxyReleased);
358
+ const [argumentList, transferables] = processArguments(rawArgumentList);
359
+ return requestResponseMessage(ep, {
360
+ type: "CONSTRUCT",
361
+ path: path.map((p) => p.toString()),
362
+ argumentList
363
+ }, transferables).then(fromWireValue);
364
+ }
365
+ });
366
+ registerProxy(proxy$1, ep);
367
+ return proxy$1;
368
+ }
369
+ function myFlat(arr) {
370
+ return Array.prototype.concat.apply([], arr);
371
+ }
372
+ function processArguments(argumentList) {
373
+ const processed = argumentList.map(toWireValue);
374
+ return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];
375
+ }
376
+ var transferCache = /* @__PURE__ */ new WeakMap();
377
+ function transfer(obj, transfers) {
378
+ transferCache.set(obj, transfers);
379
+ return obj;
380
+ }
381
+ function proxy(obj) {
382
+ return Object.assign(obj, { [proxyMarker]: true });
383
+ }
384
+ function toWireValue(value) {
385
+ for (const [name, handler] of transferHandlers) if (handler.canHandle(value)) {
386
+ const [serializedValue, transferables] = handler.serialize(value);
387
+ return [{
388
+ type: "HANDLER",
389
+ name,
390
+ value: serializedValue
391
+ }, transferables];
392
+ }
393
+ return [{
394
+ type: "RAW",
395
+ value
396
+ }, transferCache.get(value) || []];
397
+ }
398
+ function fromWireValue(value) {
399
+ switch (value.type) {
400
+ case "HANDLER": return transferHandlers.get(value.name).deserialize(value.value);
401
+ case "RAW": return value.value;
402
+ }
403
+ }
404
+ function requestResponseMessage(ep, msg, transfers) {
405
+ return new Promise((resolve) => {
406
+ const id = generateUUID();
407
+ ep.addEventListener("message", function l(ev) {
408
+ if (!ev.data || !ev.data.id || ev.data.id !== id) return;
409
+ ep.removeEventListener("message", l);
410
+ resolve(ev.data);
411
+ });
412
+ if (ep.start) ep.start();
413
+ ep.postMessage(Object.assign({ id }, msg), transfers);
414
+ });
415
+ }
416
+ function generateUUID() {
417
+ return new Array(4).fill(0).map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)).join("-");
418
+ }
419
+ var jsContent = "/**\n* @license\n* Copyright 2019 Google LLC\n* SPDX-License-Identifier: Apache-2.0\n*/\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => typeof val === \"object\" && val !== null || typeof val === \"function\";\nconst transferHandlers = new Map([[\"proxy\", {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n }\n}], [\"throw\", {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack\n }\n };\n else serialized = {\n isError: false,\n value\n };\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) throw Object.assign(new Error(serialized.value.message), serialized.value);\n throw serialized.value;\n }\n}]]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") return true;\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) return true;\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) return;\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj$1, prop) => obj$1[prop], obj);\n const rawValue = path.reduce((obj$1, prop) => obj$1[prop], obj);\n switch (type) {\n case \"GET\":\n returnValue = rawValue;\n break;\n case \"SET\":\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n break;\n case \"APPLY\":\n returnValue = rawValue.apply(parent, argumentList);\n break;\n case \"CONSTRUCT\":\n returnValue = proxy(new rawValue(...argumentList));\n break;\n case \"ENDPOINT\":\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\":\n returnValue = void 0;\n break;\n default: return;\n }\n } catch (value) {\n returnValue = {\n value,\n [throwMarker]: 0\n };\n }\n Promise.resolve(returnValue).catch((value) => {\n return {\n value,\n [throwMarker]: 0\n };\n }).then((returnValue$1) => {\n const [wireValue, transferables] = toWireValue(returnValue$1);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\") {\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") obj[finalizer]();\n }\n }).catch((error) => {\n const [wireValue, transferables] = toWireValue({\n value: /* @__PURE__ */ new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) ep.start();\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint)) endpoint.close();\n}\nfunction wrap(ep, target) {\n return createProxy(ep, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) throw new Error(\"Proxy has been released and is not useable\");\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, { type: \"RELEASE\" }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = /* @__PURE__ */ new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis && new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) releaseEndpoint(ep);\n});\nfunction registerProxy(proxy$1, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) proxyFinalizers.register(proxy$1, ep, proxy$1);\n}\nfunction unregisterProxy(proxy$1) {\n if (proxyFinalizers) proxyFinalizers.unregister(proxy$1);\n}\nfunction createProxy(ep, path = [], target = function() {}) {\n let isProxyReleased = false;\n const proxy$1 = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) return () => {\n unregisterProxy(proxy$1);\n releaseEndpoint(ep);\n isProxyReleased = true;\n };\n if (prop === \"then\") {\n if (path.length === 0) return { then: () => proxy$1 };\n const r = requestResponseMessage(ep, {\n type: \"GET\",\n path: path.map((p) => p.toString())\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, {\n type: \"SET\",\n path: [...path, prop].map((p) => p.toString()),\n value\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) return requestResponseMessage(ep, { type: \"ENDPOINT\" }).then(fromWireValue);\n if (last === \"bind\") return createProxy(ep, path.slice(0, -1));\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"APPLY\",\n path: path.map((p) => p.toString()),\n argumentList\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, {\n type: \"CONSTRUCT\",\n path: path.map((p) => p.toString()),\n argumentList\n }, transferables).then(fromWireValue);\n }\n });\n registerProxy(proxy$1, ep);\n return proxy$1;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v$1) => v$1[0]), myFlat(processed.map((v$1) => v$1[1]))];\n}\nconst transferCache = /* @__PURE__ */ new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [{\n type: \"HANDLER\",\n name,\n value: serializedValue\n }, transferables];\n }\n return [{\n type: \"RAW\",\n value\n }, transferCache.get(value) || []];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\": return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\": return value.value;\n }\n}\nfunction requestResponseMessage(ep, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n ep.addEventListener(\"message\", function l(ev) {\n if (!ev.data || !ev.data.id || ev.data.id !== id) return;\n ep.removeEventListener(\"message\", l);\n resolve(ev.data);\n });\n if (ep.start) ep.start();\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4).fill(0).map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16)).join(\"-\");\n}\nconst databaseConfig = {\n filename: \"file:n8n.sqlite3?vfs=opfs\",\n tables: { executions: {\n name: \"executions\",\n schema: `\n CREATE TABLE IF NOT EXISTS executions (\n id INTEGER PRIMARY KEY,\n workflow_id INTEGER NOT NULL,\n data TEXT CHECK (json_valid(data)) NOT NULL,\n workflow TEXT CHECK (json_valid(workflow)) NOT NULL,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n );\n `\n } }\n};\nvar sqlite3InitModule = (() => {\n var _scriptName = import.meta.url;\n return function(moduleArg = {}) {\n var moduleRtn;\n var Module = moduleArg;\n var readyPromiseResolve, readyPromiseReject;\n var readyPromise = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n var ENVIRONMENT_IS_WEB = typeof window == \"object\";\n var ENVIRONMENT_IS_WORKER = typeof importScripts == \"function\";\n typeof process == \"object\" && typeof process.versions == \"object\" && typeof process.versions.node == \"string\" && process.type;\n const sqlite3InitModuleState = globalThis.sqlite3InitModuleState || Object.assign(Object.create(null), { debugModule: () => {} });\n delete globalThis.sqlite3InitModuleState;\n sqlite3InitModuleState.debugModule(\"globalThis.location =\", globalThis.location);\n var moduleOverrides = Object.assign({}, Module);\n var thisProgram = \"./this.program\";\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n return scriptDirectory + path;\n }\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href;\n else if (typeof document != \"undefined\" && document.currentScript) scriptDirectory = document.currentScript.src;\n if (_scriptName) scriptDirectory = _scriptName;\n if (scriptDirectory.startsWith(\"blob:\")) scriptDirectory = \"\";\n else scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n if (ENVIRONMENT_IS_WORKER) readBinary = (url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n readAsync = (url) => {\n return fetch(url, { credentials: \"same-origin\" }).then((response) => {\n if (response.ok) return response.arrayBuffer();\n return Promise.reject(/* @__PURE__ */ new Error(response.status + \" : \" + response.url));\n });\n };\n }\n var out = Module[\"print\"] || console.log.bind(console);\n var err = Module[\"printErr\"] || console.error.bind(console);\n Object.assign(Module, moduleOverrides);\n moduleOverrides = null;\n if (Module[\"arguments\"]) Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n var wasmBinary = Module[\"wasmBinary\"], wasmMemory, ABORT = false, HEAP8, HEAPU8, HEAP16, HEAP32, HEAPU32, HEAP64;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = new Uint16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = new Float32Array(b);\n Module[\"HEAPF64\"] = new Float64Array(b);\n Module[\"HEAP64\"] = HEAP64 = new BigInt64Array(b);\n Module[\"HEAPU64\"] = new BigUint64Array(b);\n }\n if (Module[\"wasmMemory\"]) wasmMemory = Module[\"wasmMemory\"];\n else {\n var INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 16777216;\n wasmMemory = new WebAssembly.Memory({\n initial: INITIAL_MEMORY / 65536,\n maximum: 32768\n });\n }\n updateMemoryViews();\n var __ATPRERUN__ = [];\n var __ATINIT__ = [];\n var __ATPOSTRUN__ = [];\n function preRun() {\n var preRuns = Module[\"preRun\"];\n if (preRuns) {\n if (typeof preRuns == \"function\") preRuns = [preRuns];\n preRuns.forEach(addOnPreRun);\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n function initRuntime() {\n if (!Module[\"noFSInit\"] && !FS.initialized) FS.init();\n FS.ignorePermissions = false;\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n }\n function postRun() {\n var postRuns = Module[\"postRun\"];\n if (postRuns) {\n if (typeof postRuns == \"function\") postRuns = [postRuns];\n postRuns.forEach(addOnPostRun);\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n var runDependencies = 0;\n var runDependencyWatcher = null;\n var dependenciesFulfilled = null;\n function getUniqueRunDependency(id) {\n return id;\n }\n function addRunDependency(id) {\n runDependencies++;\n Module[\"monitorRunDependencies\"]?.(runDependencies);\n }\n function removeRunDependency(id) {\n runDependencies--;\n Module[\"monitorRunDependencies\"]?.(runDependencies);\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n function abort(what) {\n Module[\"onAbort\"]?.(what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n }\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n var isDataURI = (filename) => filename.startsWith(dataURIPrefix);\n function findWasmBinary() {\n if (Module[\"locateFile\"]) {\n var f = \"sqlite3.wasm\";\n if (!isDataURI(f)) return locateFile(f);\n return f;\n }\n return new URL(\"\" + new URL(\"sqlite3-DBpDb1lf.wasm\", import.meta.url).href, \"\" + import.meta.url).href;\n }\n var wasmBinaryFile;\n function getBinarySync(file) {\n if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n if (readBinary) return readBinary(file);\n throw \"both async and sync fetching of the wasm failed\";\n }\n function getBinaryPromise(binaryFile) {\n if (!wasmBinary) return readAsync(binaryFile).then((response) => new Uint8Array(response), () => getBinarySync(binaryFile));\n return Promise.resolve().then(() => getBinarySync(binaryFile));\n }\n function instantiateArrayBuffer(binaryFile, imports, receiver) {\n return getBinaryPromise(binaryFile).then((binary) => {\n return WebAssembly.instantiate(binary, imports);\n }).then(receiver, (reason) => {\n err(`failed to asynchronously prepare wasm: ${reason}`);\n abort(reason);\n });\n }\n function instantiateAsync(binary, binaryFile, imports, callback) {\n if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && typeof fetch == \"function\") return fetch(binaryFile, { credentials: \"same-origin\" }).then((response) => {\n return WebAssembly.instantiateStreaming(response, imports).then(callback, function(reason) {\n err(`wasm streaming compile failed: ${reason}`);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(binaryFile, imports, callback);\n });\n });\n return instantiateArrayBuffer(binaryFile, imports, callback);\n }\n function getWasmImports() {\n return {\n env: wasmImports,\n wasi_snapshot_preview1: wasmImports\n };\n }\n function createWasm() {\n var info = getWasmImports();\n function receiveInstance(instance, module) {\n wasmExports = instance.exports;\n addOnInit(wasmExports[\"__wasm_call_ctors\"]);\n removeRunDependency(\"wasm-instantiate\");\n return wasmExports;\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result[\"instance\"]);\n }\n if (Module[\"instantiateWasm\"]) try {\n return Module[\"instantiateWasm\"](info, receiveInstance);\n } catch (e) {\n err(`Module.instantiateWasm callback failed with error: ${e}`);\n readyPromiseReject(e);\n }\n wasmBinaryFile ??= findWasmBinary();\n instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n return {};\n }\n var callRuntimeCallbacks = (callbacks) => {\n callbacks.forEach((f) => f(Module));\n };\n Module[\"noExitRuntime\"];\n var PATH = {\n isAbs: (path) => path.charAt(0) === \"/\",\n splitPath: (filename) => {\n return /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(filename).slice(1);\n },\n normalizeArray: (parts, allowAboveRoot) => {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") parts.splice(i, 1);\n else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) for (; up; up--) parts.unshift(\"..\");\n return parts;\n },\n normalize: (path) => {\n var isAbsolute = PATH.isAbs(path), trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter((p) => !!p), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) path = \".\";\n if (path && trailingSlash) path += \"/\";\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: (path) => {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) return \".\";\n if (dir) dir = dir.substr(0, dir.length - 1);\n return root + dir;\n },\n basename: (path) => {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n join: (...paths) => PATH.normalize(paths.join(\"/\")),\n join2: (l, r) => PATH.normalize(l + \"/\" + r)\n };\n var initRandomFill = () => {\n if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") return (view) => crypto.getRandomValues(view);\n else abort(\"initRandomDevice\");\n };\n var randomFill = (view) => {\n return (randomFill = initRandomFill())(view);\n };\n var PATH_FS = {\n resolve: (...args) => {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? args[i] : FS.cwd();\n if (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n else if (!path) return \"\";\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = PATH.isAbs(path);\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p) => !!p), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: (from, to) => {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) if (arr[start] !== \"\") break;\n var end = arr.length - 1;\n for (; end >= 0; end--) if (arr[end] !== \"\") break;\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) outputParts.push(\"..\");\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n };\n var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder() : void 0;\n var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n else u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n if (u0 < 65536) str += String.fromCharCode(u0);\n else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n };\n var FS_stdin_getChar_buffer = [];\n var lengthBytesUTF8 = (str) => {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var c = str.charCodeAt(i);\n if (c <= 127) len++;\n else if (c <= 2047) len += 2;\n else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i;\n } else len += 3;\n }\n return len;\n };\n var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n };\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n }\n var FS_stdin_getChar = () => {\n if (!FS_stdin_getChar_buffer.length) {\n var result = null;\n if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) result += \"\\n\";\n }\n if (!result) return null;\n FS_stdin_getChar_buffer = intArrayFromString(result, true);\n }\n return FS_stdin_getChar_buffer.shift();\n };\n var TTY = {\n ttys: [],\n init() {},\n shutdown() {},\n register(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) throw new FS.ErrnoError(43);\n stream.tty = tty;\n stream.seekable = false;\n },\n close(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n fsync(stream) {\n stream.tty.ops.fsync(stream.tty);\n },\n read(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === void 0) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n try {\n for (var i = 0; i < length; i++) stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n },\n default_tty_ops: {\n get_char(tty) {\n return FS_stdin_getChar();\n },\n put_char(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output));\n tty.output = [];\n }\n },\n ioctl_tcgets(tty) {\n return {\n c_iflag: 25856,\n c_oflag: 5,\n c_cflag: 191,\n c_lflag: 35387,\n c_cc: [\n 3,\n 28,\n 127,\n 21,\n 4,\n 0,\n 1,\n 0,\n 17,\n 19,\n 26,\n 0,\n 18,\n 15,\n 23,\n 22,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]\n };\n },\n ioctl_tcsets(tty, optional_actions, data) {\n return 0;\n },\n ioctl_tiocgwinsz(tty) {\n return [24, 80];\n }\n },\n default_tty1_ops: {\n put_char(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output));\n tty.output = [];\n } else if (val != 0) tty.output.push(val);\n },\n fsync(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output));\n tty.output = [];\n }\n }\n }\n };\n var zeroMemory = (address, size) => {\n HEAPU8.fill(0, address, address + size);\n };\n var alignMemory = (size, alignment) => {\n return Math.ceil(size / alignment) * alignment;\n };\n var mmapAlloc = (size) => {\n size = alignMemory(size, 65536);\n var ptr = _emscripten_builtin_memalign(65536, size);\n if (ptr) zeroMemory(ptr, size);\n return ptr;\n };\n var MEMFS = {\n ops_table: null,\n mount(mount) {\n return MEMFS.createNode(null, \"/\", 16895, 0);\n },\n createNode(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n MEMFS.ops_table ||= {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: { llseek: MEMFS.stream_ops.llseek }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsTypedArray(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < 1024 * 1024 ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n },\n resizeFileStorage(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n } else {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n node.usedBytes = newSize;\n }\n },\n node_ops: {\n getattr(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) attr.size = 4096;\n else if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n else if (FS.isLink(node.mode)) attr.size = node.link.length;\n else attr.size = 0;\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr(node, attr) {\n if (attr.mode !== void 0) node.mode = attr.mode;\n if (attr.timestamp !== void 0) node.timestamp = attr.timestamp;\n if (attr.size !== void 0) MEMFS.resizeFileStorage(node, attr.size);\n },\n lookup(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) for (var i in new_node.contents) throw new FS.ErrnoError(55);\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n },\n unlink(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir(parent, name) {\n for (var i in FS.lookupNode(parent, name).contents) throw new FS.ErrnoError(55);\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir(node) {\n var entries = [\".\", \"..\"];\n for (var key of Object.keys(node.contents)) entries.push(key);\n return entries;\n },\n symlink(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 41471, 0);\n node.link = oldpath;\n return node;\n },\n readlink(node) {\n if (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n return node.link;\n }\n },\n stream_ops: {\n read(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n else for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n return size;\n },\n write(stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) canOwn = false;\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n else for (var i = 0; i < length; i++) node.contents[position + i] = buffer[offset + i];\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek(stream, offset, whence) {\n var position = offset;\n if (whence === 1) position += stream.position;\n else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n }\n if (position < 0) throw new FS.ErrnoError(28);\n return position;\n },\n allocate(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap(stream, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents && contents.buffer === HEAP8.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n if (contents) {\n if (position > 0 || position + length < contents.length) if (contents.subarray) contents = contents.subarray(position, position + length);\n else contents = Array.prototype.slice.call(contents, position, position + length);\n HEAP8.set(contents, ptr);\n }\n }\n return {\n ptr,\n allocated\n };\n },\n msync(stream, buffer, offset, length, mmapFlags) {\n MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n };\n var asyncLoad = (url, onload, onerror, noRunDep) => {\n var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : \"\";\n readAsync(url).then((arrayBuffer) => {\n onload(new Uint8Array(arrayBuffer));\n if (dep) removeRunDependency(dep);\n }, (err$1) => {\n if (onerror) onerror();\n else throw `Loading data file \"${url}\" failed.`;\n });\n if (dep) addRunDependency(dep);\n };\n var FS_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => {\n FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn);\n };\n var preloadPlugins = Module[\"preloadPlugins\"] || [];\n var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {\n if (typeof Browser != \"undefined\") Browser.init();\n var handled = false;\n preloadPlugins.forEach((plugin) => {\n if (handled) return;\n if (plugin[\"canHandle\"](fullname)) {\n plugin[\"handle\"](byteArray, fullname, finish, onerror);\n handled = true;\n }\n });\n return handled;\n };\n var FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(`cp ${fullname}`);\n function processData(byteArray) {\n function finish(byteArray$1) {\n preFinish?.();\n if (!dontCreateFile) FS_createDataFile(parent, name, byteArray$1, canRead, canWrite, canOwn);\n onload?.();\n removeRunDependency(dep);\n }\n if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => {\n onerror?.();\n removeRunDependency(dep);\n })) return;\n finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") asyncLoad(url, processData, onerror);\n else processData(url);\n };\n var FS_modeStringToFlags = (str) => {\n var flags = {\n r: 0,\n \"r+\": 2,\n w: 577,\n \"w+\": 578,\n a: 1089,\n \"a+\": 1090\n }[str];\n if (typeof flags == \"undefined\") throw new Error(`Unknown file open mode: ${str}`);\n return flags;\n };\n var FS_getMode = (canRead, canWrite) => {\n var mode = 0;\n if (canRead) mode |= 365;\n if (canWrite) mode |= 146;\n return mode;\n };\n var FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n ErrnoError: class {\n constructor(errno) {\n this.name = \"ErrnoError\";\n this.errno = errno;\n }\n },\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n readFiles: {},\n FSStream: class {\n constructor() {\n this.shared = {};\n }\n get object() {\n return this.node;\n }\n set object(val) {\n this.node = val;\n }\n get isRead() {\n return (this.flags & 2097155) !== 1;\n }\n get isWrite() {\n return (this.flags & 2097155) !== 0;\n }\n get isAppend() {\n return this.flags & 1024;\n }\n get flags() {\n return this.shared.flags;\n }\n set flags(val) {\n this.shared.flags = val;\n }\n get position() {\n return this.shared.position;\n }\n set position(val) {\n this.shared.position = val;\n }\n },\n FSNode: class {\n constructor(parent, name, mode, rdev) {\n if (!parent) parent = this;\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n this.readMode = 365;\n this.writeMode = 146;\n }\n get read() {\n return (this.mode & this.readMode) === this.readMode;\n }\n set read(val) {\n val ? this.mode |= this.readMode : this.mode &= ~this.readMode;\n }\n get write() {\n return (this.mode & this.writeMode) === this.writeMode;\n }\n set write(val) {\n val ? this.mode |= this.writeMode : this.mode &= ~this.writeMode;\n }\n get isFolder() {\n return FS.isDir(this.mode);\n }\n get isDevice() {\n return FS.isChrdev(this.mode);\n }\n },\n lookupPath(path, opts = {}) {\n path = PATH_FS.resolve(path);\n if (!path) return {\n path: \"\",\n node: null\n };\n opts = Object.assign({\n follow_mount: true,\n recurse_count: 0\n }, opts);\n if (opts.recurse_count > 8) throw new FS.ErrnoError(32);\n var parts = path.split(\"/\").filter((p) => !!p);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) break;\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) current = current.mounted.root;\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n current = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 }).node;\n if (count++ > 40) throw new FS.ErrnoError(32);\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath(node) {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? `${mount}/${path}` : mount + path;\n }\n path = path ? `${node.name}/${path}` : node.name;\n node = node.parent;\n }\n },\n hashName(parentid, name) {\n var hash = 0;\n for (var i = 0; i < name.length; i++) hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode(parent, name) {\n var errCode = FS.mayLookup(parent);\n if (errCode) throw new FS.ErrnoError(errCode);\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) return node;\n }\n return FS.lookup(parent, name);\n },\n createNode(parent, name, mode, rdev) {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode(node) {\n FS.hashRemoveNode(node);\n },\n isRoot(node) {\n return node === node.parent;\n },\n isMountpoint(node) {\n return !!node.mounted;\n },\n isFile(mode) {\n return (mode & 61440) === 32768;\n },\n isDir(mode) {\n return (mode & 61440) === 16384;\n },\n isLink(mode) {\n return (mode & 61440) === 40960;\n },\n isChrdev(mode) {\n return (mode & 61440) === 8192;\n },\n isBlkdev(mode) {\n return (mode & 61440) === 24576;\n },\n isFIFO(mode) {\n return (mode & 61440) === 4096;\n },\n isSocket(mode) {\n return (mode & 49152) === 49152;\n },\n flagsToPermissionString(flag) {\n var perms = [\n \"r\",\n \"w\",\n \"rw\"\n ][flag & 3];\n if (flag & 512) perms += \"w\";\n return perms;\n },\n nodePermissions(node, perms) {\n if (FS.ignorePermissions) return 0;\n if (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n else if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n else if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n return 0;\n },\n mayLookup(dir) {\n if (!FS.isDir(dir.mode)) return 54;\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate(dir, name) {\n try {\n FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete(dir, name, isdir) {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) return errCode;\n if (isdir) {\n if (!FS.isDir(node.mode)) return 54;\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n } else if (FS.isDir(node.mode)) return 31;\n return 0;\n },\n mayOpen(node, flags) {\n if (!node) return 44;\n if (FS.isLink(node.mode)) return 32;\n else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) return 31;\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd() {\n for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) if (!FS.streams[fd]) return fd;\n throw new FS.ErrnoError(33);\n },\n getStreamChecked(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n },\n getStream: (fd) => FS.streams[fd],\n createStream(stream, fd = -1) {\n stream = Object.assign(new FS.FSStream(), stream);\n if (fd == -1) fd = FS.nextfd();\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream(fd) {\n FS.streams[fd] = null;\n },\n dupStream(origStream, fd = -1) {\n var stream = FS.createStream(origStream, fd);\n stream.stream_ops?.dup?.(stream);\n return stream;\n },\n chrdev_stream_ops: {\n open(stream) {\n stream.stream_ops = FS.getDevice(stream.node.rdev).stream_ops;\n stream.stream_ops.open?.(stream);\n },\n llseek() {\n throw new FS.ErrnoError(70);\n }\n },\n major: (dev) => dev >> 8,\n minor: (dev) => dev & 255,\n makedev: (ma, mi) => ma << 8 | mi,\n registerDevice(dev, ops) {\n FS.devices[dev] = { stream_ops: ops };\n },\n getDevice: (dev) => FS.devices[dev],\n getMounts(mount) {\n var mounts = [];\n var check = [mount];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push(...m.mounts);\n }\n return mounts;\n },\n syncfs(populate, callback) {\n if (typeof populate == \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) doCallback(null);\n }\n mounts.forEach((mount) => {\n if (!mount.type.syncfs) return done(null);\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount(type, opts, mountpoint) {\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) throw new FS.ErrnoError(10);\n else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n if (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n }\n var mount = {\n type,\n opts,\n mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) FS.root = mountRoot;\n else if (node) {\n node.mounted = mount;\n if (node.mount) node.mount.mounts.push(mount);\n }\n return mountRoot;\n },\n unmount(mountpoint) {\n var lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n if (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach((hash) => {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.includes(current.mount)) FS.destroyNode(current);\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup(parent, name) {\n return parent.node_ops.lookup(parent, name);\n },\n mknod(path, mode, dev) {\n var parent = FS.lookupPath(path, { parent: true }).node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") throw new FS.ErrnoError(28);\n var errCode = FS.mayCreate(parent, name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create(path, mode) {\n mode = mode !== void 0 ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir(path, mode) {\n mode = mode !== void 0 ? mode : 511;\n mode &= 1023;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree(path, mode) {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev(path, mode, dev) {\n if (typeof dev == \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink(oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n var parent = FS.lookupPath(newpath, { parent: true }).node;\n if (!parent) throw new FS.ErrnoError(44);\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename(old_path, new_path) {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup = FS.lookupPath(old_path, { parent: true }), old_dir = lookup.node, new_dir;\n lookup = FS.lookupPath(new_path, { parent: true });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) return;\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) throw new FS.ErrnoError(errCode);\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n old_node.parent = new_dir;\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n },\n rmdir(path) {\n var parent = FS.lookupPath(path, { parent: true }).node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n },\n readdir(path) {\n var node = FS.lookupPath(path, { follow: true }).node;\n if (!node.node_ops.readdir) throw new FS.ErrnoError(54);\n return node.node_ops.readdir(node);\n },\n unlink(path) {\n var parent = FS.lookupPath(path, { parent: true }).node;\n if (!parent) throw new FS.ErrnoError(44);\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) throw new FS.ErrnoError(errCode);\n if (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n if (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n },\n readlink(path) {\n var link = FS.lookupPath(path).node;\n if (!link) throw new FS.ErrnoError(44);\n if (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat(path, dontFollow) {\n var node = FS.lookupPath(path, { follow: !dontFollow }).node;\n if (!node) throw new FS.ErrnoError(44);\n if (!node.node_ops.getattr) throw new FS.ErrnoError(63);\n return node.node_ops.getattr(node);\n },\n lstat(path) {\n return FS.stat(path, true);\n },\n chmod(path, mode, dontFollow) {\n var node;\n if (typeof path == \"string\") node = FS.lookupPath(path, { follow: !dontFollow }).node;\n else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & -4096,\n timestamp: Date.now()\n });\n },\n lchmod(path, mode) {\n FS.chmod(path, mode, true);\n },\n fchmod(fd, mode) {\n var stream = FS.getStreamChecked(fd);\n FS.chmod(stream.node, mode);\n },\n chown(path, uid, gid, dontFollow) {\n var node;\n if (typeof path == \"string\") node = FS.lookupPath(path, { follow: !dontFollow }).node;\n else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n node.node_ops.setattr(node, { timestamp: Date.now() });\n },\n lchown(path, uid, gid) {\n FS.chown(path, uid, gid, true);\n },\n fchown(fd, uid, gid) {\n var stream = FS.getStreamChecked(fd);\n FS.chown(stream.node, uid, gid);\n },\n truncate(path, len) {\n if (len < 0) throw new FS.ErrnoError(28);\n var node;\n if (typeof path == \"string\") node = FS.lookupPath(path, { follow: true }).node;\n else node = path;\n if (!node.node_ops.setattr) throw new FS.ErrnoError(63);\n if (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n if (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) throw new FS.ErrnoError(errCode);\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate(fd, len) {\n var stream = FS.getStreamChecked(fd);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n FS.truncate(stream.node, len);\n },\n utime(path, atime, mtime) {\n var node = FS.lookupPath(path, { follow: true }).node;\n node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });\n },\n open(path, flags, mode) {\n if (path === \"\") throw new FS.ErrnoError(44);\n flags = typeof flags == \"string\" ? FS_modeStringToFlags(flags) : flags;\n if (flags & 64) {\n mode = typeof mode == \"undefined\" ? 438 : mode;\n mode = mode & 4095 | 32768;\n } else mode = 0;\n var node;\n if (typeof path == \"object\") node = path;\n else {\n path = PATH.normalize(path);\n try {\n node = FS.lookupPath(path, { follow: !(flags & 131072) }).node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) if (node) {\n if (flags & 128) throw new FS.ErrnoError(20);\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n if (!node) throw new FS.ErrnoError(44);\n if (FS.isChrdev(node.mode)) flags &= -513;\n if (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) throw new FS.ErrnoError(errCode);\n }\n if (flags & 512 && !created) FS.truncate(node, 0);\n flags &= -131713;\n var stream = FS.createStream({\n node,\n path: FS.getPath(node),\n flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n });\n if (stream.stream_ops.open) stream.stream_ops.open(stream);\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n }\n return stream;\n },\n close(stream) {\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) stream.stream_ops.close(stream);\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed(stream) {\n return stream.fd === null;\n },\n llseek(stream, offset, whence) {\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n if (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read(stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write(stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) throw new FS.ErrnoError(28);\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n if (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n if (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n var seeking = typeof position != \"undefined\";\n if (!seeking) position = stream.position;\n else if (!stream.seekable) throw new FS.ErrnoError(70);\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n return bytesWritten;\n },\n allocate(stream, offset, length) {\n if (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n if (offset < 0 || length <= 0) throw new FS.ErrnoError(28);\n if ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) throw new FS.ErrnoError(43);\n if (!stream.stream_ops.allocate) throw new FS.ErrnoError(138);\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap(stream, length, position, prot, flags) {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n if ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n if (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n if (!length) throw new FS.ErrnoError(28);\n return stream.stream_ops.mmap(stream, length, position, prot, flags);\n },\n msync(stream, buffer, offset, length, mmapFlags) {\n if (!stream.stream_ops.msync) return 0;\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n ioctl(stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile(path, opts = {}) {\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") throw new Error(`Invalid encoding type \"${opts.encoding}\"`);\n var ret;\n var stream = FS.open(path, opts.flags);\n var length = FS.stat(path).size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") ret = UTF8ArrayToString(buf);\n else if (opts.encoding === \"binary\") ret = buf;\n FS.close(stream);\n return ret;\n },\n writeFile(path, data, opts = {}) {\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data == \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, void 0, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn);\n else throw new Error(\"Unsupported data type\");\n FS.close(stream);\n },\n cwd: () => FS.currentPath,\n chdir(path) {\n var lookup = FS.lookupPath(path, { follow: true });\n if (lookup.node === null) throw new FS.ErrnoError(44);\n if (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) throw new FS.ErrnoError(errCode);\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories() {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices() {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: () => 0,\n write: (stream, buffer, offset, length, pos) => length\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var randomBuffer = new Uint8Array(1024), randomLeft = 0;\n var randomByte = () => {\n if (randomLeft === 0) randomLeft = randomFill(randomBuffer).byteLength;\n return randomBuffer[--randomLeft];\n };\n FS.createDevice(\"/dev\", \"random\", randomByte);\n FS.createDevice(\"/dev\", \"urandom\", randomByte);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories() {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({ mount() {\n var node = FS.createNode(proc_self, \"fd\", 16895, 73);\n node.node_ops = { lookup(parent, name) {\n var fd = +name;\n var stream = FS.getStreamChecked(fd);\n var ret = {\n parent: null,\n mount: { mountpoint: \"fake\" },\n node_ops: { readlink: () => stream.path }\n };\n ret.parent = ret;\n return ret;\n } };\n return node;\n } }, {}, \"/proc/self/fd\");\n },\n createStandardStreams(input, output, error) {\n if (input) FS.createDevice(\"/dev\", \"stdin\", input);\n else FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n if (output) FS.createDevice(\"/dev\", \"stdout\", null, output);\n else FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n if (error) FS.createDevice(\"/dev\", \"stderr\", null, error);\n else FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n FS.open(\"/dev/stdin\", 0);\n FS.open(\"/dev/stdout\", 1);\n FS.open(\"/dev/stderr\", 1);\n },\n staticInit() {\n [44].forEach((code) => {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"<generic error, no stack>\";\n });\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = { MEMFS };\n },\n init(input, output, error) {\n FS.initialized = true;\n input ??= Module[\"stdin\"];\n output ??= Module[\"stdout\"];\n error ??= Module[\"stderr\"];\n FS.createStandardStreams(input, output, error);\n },\n quit() {\n FS.initialized = false;\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) continue;\n FS.close(stream);\n }\n },\n findObject(path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (!ret.exists) return null;\n return ret.object;\n },\n analyzePath(path, dontResolveLastLink) {\n try {\n var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, { parent: true });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath(parent, path, canRead, canWrite) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile(parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS_getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile(parent, name, data, canRead, canWrite, canOwn) {\n var path = name;\n if (parent) {\n parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n path = name ? PATH.join2(parent, name) : parent;\n }\n var mode = FS_getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data == \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n },\n createDevice(parent, name, input, output) {\n var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS_getMode(!!input, !!output);\n FS.createDevice.major ??= 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open(stream) {\n stream.seekable = false;\n },\n close(stream) {\n if (output?.buffer?.length) output(10);\n },\n read(stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === void 0 && bytesRead === 0) throw new FS.ErrnoError(6);\n if (result === null || result === void 0) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) stream.node.timestamp = Date.now();\n return bytesRead;\n },\n write(stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) stream.node.timestamp = Date.now();\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile(obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest != \"undefined\") throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n else try {\n obj.contents = readBinary(obj.url);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n },\n createLazyFile(parent, name, url, canRead, canWrite) {\n class LazyUint8Array {\n constructor() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n get(idx) {\n if (idx > this.length - 1 || idx < 0) return;\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n }\n setDataGetter(getter) {\n this.getter = getter;\n }\n cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = (from, to) => {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr$1 = new XMLHttpRequest();\n xhr$1.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr$1.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n xhr$1.responseType = \"arraybuffer\";\n if (xhr$1.overrideMimeType) xhr$1.overrideMimeType(\"text/plain; charset=x-user-defined\");\n xhr$1.send(null);\n if (!(xhr$1.status >= 200 && xhr$1.status < 300 || xhr$1.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr$1.status);\n if (xhr$1.response !== void 0) return new Uint8Array(xhr$1.response || []);\n return intArrayFromString(xhr$1.responseText || \"\", true);\n };\n var lazyArray = this;\n lazyArray.setDataGetter((chunkNum) => {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n }\n get length() {\n if (!this.lengthKnown) this.cacheLength();\n return this._length;\n }\n get chunkSize() {\n if (!this.lengthKnown) this.cacheLength();\n return this._chunkSize;\n }\n }\n if (typeof XMLHttpRequest != \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var properties = {\n isDevice: false,\n contents: new LazyUint8Array()\n };\n } else var properties = {\n isDevice: false,\n url\n };\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) node.contents = properties.contents;\n else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, { usedBytes: { get: function() {\n return this.contents.length;\n } } });\n var stream_ops = {};\n Object.keys(node.stream_ops).forEach((key) => {\n var fn = node.stream_ops[key];\n stream_ops[key] = (...args) => {\n FS.forceLoadFile(node);\n return fn(...args);\n };\n });\n function writeChunks(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n else for (var i = 0; i < size; i++) buffer[offset + i] = contents.get(position + i);\n return size;\n }\n stream_ops.read = (stream, buffer, offset, length, position) => {\n FS.forceLoadFile(node);\n return writeChunks(stream, buffer, offset, length, position);\n };\n stream_ops.mmap = (stream, length, position, prot, flags) => {\n FS.forceLoadFile(node);\n var ptr = mmapAlloc(length);\n if (!ptr) throw new FS.ErrnoError(48);\n writeChunks(stream, HEAP8, ptr, length, position);\n return {\n ptr,\n allocated: true\n };\n };\n node.stream_ops = stream_ops;\n return node;\n }\n };\n var UTF8ToString = (ptr, maxBytesToRead) => {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n };\n var SYSCALLS = {\n DEFAULT_POLLMASK: 5,\n calculateAt(dirfd, path, allowEmpty) {\n if (PATH.isAbs(path)) return path;\n var dir;\n if (dirfd === -100) dir = FS.cwd();\n else dir = SYSCALLS.getStreamFromFD(dirfd).path;\n if (path.length == 0) {\n if (!allowEmpty) throw new FS.ErrnoError(44);\n return dir;\n }\n return PATH.join2(dir, path);\n },\n doStat(func, path, buf) {\n var stat = func(path);\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 4 >> 2] = stat.mode;\n HEAPU32[buf + 8 >> 2] = stat.nlink;\n HEAP32[buf + 12 >> 2] = stat.uid;\n HEAP32[buf + 16 >> 2] = stat.gid;\n HEAP32[buf + 20 >> 2] = stat.rdev;\n HEAP64[buf + 24 >> 3] = BigInt(stat.size);\n HEAP32[buf + 32 >> 2] = 4096;\n HEAP32[buf + 36 >> 2] = stat.blocks;\n var atime = stat.atime.getTime();\n var mtime = stat.mtime.getTime();\n var ctime = stat.ctime.getTime();\n HEAP64[buf + 40 >> 3] = BigInt(Math.floor(atime / 1e3));\n HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3 * 1e3;\n HEAP64[buf + 56 >> 3] = BigInt(Math.floor(mtime / 1e3));\n HEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3 * 1e3;\n HEAP64[buf + 72 >> 3] = BigInt(Math.floor(ctime / 1e3));\n HEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3 * 1e3;\n HEAP64[buf + 88 >> 3] = BigInt(stat.ino);\n return 0;\n },\n doMsync(addr, stream, len, flags, offset) {\n if (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n if (flags & 2) return 0;\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n getStreamFromFD(fd) {\n return FS.getStreamChecked(fd);\n },\n varargs: void 0,\n getStr(ptr) {\n return UTF8ToString(ptr);\n }\n };\n function ___syscall_chmod(path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n FS.chmod(path, mode);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (amode & -8) return -28;\n var node = FS.lookupPath(path, { follow: true }).node;\n if (!node) return -44;\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) return -2;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_fchmod(fd, mode) {\n try {\n FS.fchmod(fd, mode);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_fchown32(fd, owner, group) {\n try {\n FS.fchown(fd, owner, group);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function syscallGetVarargI() {\n var ret = HEAP32[+SYSCALLS.varargs >> 2];\n SYSCALLS.varargs += 4;\n return ret;\n }\n var syscallGetVarargP = syscallGetVarargI;\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n var arg = syscallGetVarargI();\n if (arg < 0) return -28;\n while (FS.streams[arg]) arg++;\n return FS.dupStream(stream, arg).fd;\n case 1:\n case 2: return 0;\n case 3: return stream.flags;\n case 4:\n var arg = syscallGetVarargI();\n stream.flags |= arg;\n return 0;\n case 12:\n var arg = syscallGetVarargP();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n case 13:\n case 14: return 0;\n }\n return -28;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_fstat64(fd, buf) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n return SYSCALLS.doStat(FS.stat, stream.path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var INT53_MAX = 9007199254740992;\n var INT53_MIN = -9007199254740992;\n var bigintToI53Checked = (num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);\n function ___syscall_ftruncate64(fd, length) {\n length = bigintToI53Checked(length);\n try {\n if (isNaN(length)) return 61;\n FS.ftruncate(fd, length);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var stringToUTF8 = (str, outPtr, maxBytesToWrite) => {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n };\n function ___syscall_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n if (size < cwdLengthInBytes) return -68;\n stringToUTF8(cwd, buf, size);\n return cwdLengthInBytes;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n if (!stream.tty) return -59;\n return 0;\n case 21505:\n if (!stream.tty) return -59;\n if (stream.tty.ops.ioctl_tcgets) {\n var termios = stream.tty.ops.ioctl_tcgets(stream);\n var argp = syscallGetVarargP();\n HEAP32[argp >> 2] = termios.c_iflag || 0;\n HEAP32[argp + 4 >> 2] = termios.c_oflag || 0;\n HEAP32[argp + 8 >> 2] = termios.c_cflag || 0;\n HEAP32[argp + 12 >> 2] = termios.c_lflag || 0;\n for (var i = 0; i < 32; i++) HEAP8[argp + i + 17] = termios.c_cc[i] || 0;\n return 0;\n }\n return 0;\n case 21510:\n case 21511:\n case 21512:\n if (!stream.tty) return -59;\n return 0;\n case 21506:\n case 21507:\n case 21508:\n if (!stream.tty) return -59;\n if (stream.tty.ops.ioctl_tcsets) {\n var argp = syscallGetVarargP();\n var c_iflag = HEAP32[argp >> 2];\n var c_oflag = HEAP32[argp + 4 >> 2];\n var c_cflag = HEAP32[argp + 8 >> 2];\n var c_lflag = HEAP32[argp + 12 >> 2];\n var c_cc = [];\n for (var i = 0; i < 32; i++) c_cc.push(HEAP8[argp + i + 17]);\n return stream.tty.ops.ioctl_tcsets(stream.tty, op, {\n c_iflag,\n c_oflag,\n c_cflag,\n c_lflag,\n c_cc\n });\n }\n return 0;\n case 21519:\n if (!stream.tty) return -59;\n var argp = syscallGetVarargP();\n HEAP32[argp >> 2] = 0;\n return 0;\n case 21520:\n if (!stream.tty) return -59;\n return -28;\n case 21531:\n var argp = syscallGetVarargP();\n return FS.ioctl(stream, op, argp);\n case 21523:\n if (!stream.tty) return -59;\n if (stream.tty.ops.ioctl_tiocgwinsz) {\n var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);\n var argp = syscallGetVarargP();\n HEAP16[argp >> 1] = winsize[0];\n HEAP16[argp + 2 >> 1] = winsize[1];\n }\n return 0;\n case 21524:\n if (!stream.tty) return -59;\n return 0;\n case 21515:\n if (!stream.tty) return -59;\n return 0;\n default: return -28;\n }\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_lstat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_mkdirat(dirfd, path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_newfstatat(dirfd, path, buf, flags) {\n try {\n path = SYSCALLS.getStr(path);\n var nofollow = flags & 256;\n var allowEmpty = flags & 4096;\n flags = flags & -6401;\n path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n var mode = varargs ? syscallGetVarargI() : 0;\n return FS.open(path, flags, mode).fd;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_rmdir(path) {\n try {\n path = SYSCALLS.getStr(path);\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function ___syscall_unlinkat(dirfd, path, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n if (flags === 0) FS.unlink(path);\n else if (flags === 512) FS.rmdir(path);\n else abort(\"Invalid flags passed to unlinkat\");\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var readI53FromI64 = (ptr) => {\n return HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n };\n function ___syscall_utimensat(dirfd, path, times, flags) {\n try {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path, true);\n var now = Date.now(), atime, mtime;\n if (!times) {\n atime = now;\n mtime = now;\n } else {\n var seconds = readI53FromI64(times);\n var nanoseconds = HEAP32[times + 8 >> 2];\n if (nanoseconds == 1073741823) atime = now;\n else if (nanoseconds == 1073741822) atime = -1;\n else atime = seconds * 1e3 + nanoseconds / (1e3 * 1e3);\n times += 16;\n seconds = readI53FromI64(times);\n nanoseconds = HEAP32[times + 8 >> 2];\n if (nanoseconds == 1073741823) mtime = now;\n else if (nanoseconds == 1073741822) mtime = -1;\n else mtime = seconds * 1e3 + nanoseconds / (1e3 * 1e3);\n }\n if (mtime != -1 || atime != -1) FS.utime(path, atime, mtime);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var nowIsMonotonic = 1;\n var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;\n var isLeapYear = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n var MONTH_DAYS_LEAP_CUMULATIVE = [\n 0,\n 31,\n 60,\n 91,\n 121,\n 152,\n 182,\n 213,\n 244,\n 274,\n 305,\n 335\n ];\n var MONTH_DAYS_REGULAR_CUMULATIVE = [\n 0,\n 31,\n 59,\n 90,\n 120,\n 151,\n 181,\n 212,\n 243,\n 273,\n 304,\n 334\n ];\n var ydayFromDate = (date) => {\n return (isLeapYear(date.getFullYear()) ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE)[date.getMonth()] + date.getDate() - 1;\n };\n function __localtime_js(time, tmPtr) {\n time = bigintToI53Checked(time);\n var date = /* @__PURE__ */ new Date(time * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var yday = ydayFromDate(date) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var start = new Date(date.getFullYear(), 0, 1);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n }\n function __mmap_js(len, prot, flags, fd, offset, allocated, addr) {\n offset = bigintToI53Checked(offset);\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n var res = FS.mmap(stream, len, offset, prot, flags);\n var ptr = res.ptr;\n HEAP32[allocated >> 2] = res.allocated;\n HEAPU32[addr >> 2] = ptr;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n function __munmap_js(addr, len, prot, flags, fd, offset) {\n offset = bigintToI53Checked(offset);\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (prot & 2) SYSCALLS.doMsync(addr, stream, len, flags, offset);\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return -e.errno;\n }\n }\n var __tzset_js = (timezone, daylight, std_name, dst_name) => {\n var currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n var extractZone = (timezoneOffset) => {\n var sign = timezoneOffset >= 0 ? \"-\" : \"+\";\n var absOffset = Math.abs(timezoneOffset);\n return `UTC${sign}${String(Math.floor(absOffset / 60)).padStart(2, \"0\")}${String(absOffset % 60).padStart(2, \"0\")}`;\n };\n var winterName = extractZone(winterOffset);\n var summerName = extractZone(summerOffset);\n if (summerOffset < winterOffset) {\n stringToUTF8(winterName, std_name, 17);\n stringToUTF8(summerName, dst_name, 17);\n } else {\n stringToUTF8(winterName, dst_name, 17);\n stringToUTF8(summerName, std_name, 17);\n }\n };\n var _emscripten_date_now = () => Date.now();\n var _emscripten_get_now = () => performance.now();\n var getHeapMax = () => 2147483648;\n var growMemory = (size) => {\n var pages = (size - wasmMemory.buffer.byteLength + 65535) / 65536 | 0;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {}\n };\n var _emscripten_resize_heap = (requestedSize) => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) return false;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n if (growMemory(Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)))) return true;\n }\n return false;\n };\n var ENV = {};\n var getExecutableName = () => {\n return thisProgram || \"./this.program\";\n };\n var getEnvStrings = () => {\n if (!getEnvStrings.strings) {\n var env = {\n USER: \"web_user\",\n LOGNAME: \"web_user\",\n PATH: \"/\",\n PWD: \"/\",\n HOME: \"/home/web_user\",\n LANG: (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\",\n _: getExecutableName()\n };\n for (var x in ENV) if (ENV[x] === void 0) delete env[x];\n else env[x] = ENV[x];\n var strings = [];\n for (var x in env) strings.push(`${x}=${env[x]}`);\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n };\n var stringToAscii = (str, buffer) => {\n for (var i = 0; i < str.length; ++i) HEAP8[buffer++] = str.charCodeAt(i);\n HEAP8[buffer] = 0;\n };\n var _environ_get = (__environ, environ_buf) => {\n var bufSize = 0;\n getEnvStrings().forEach((string, i) => {\n var ptr = environ_buf + bufSize;\n HEAPU32[__environ + i * 4 >> 2] = ptr;\n stringToAscii(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n };\n var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n var strings = getEnvStrings();\n HEAPU32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach((string) => bufSize += string.length + 1);\n HEAPU32[penviron_buf_size >> 2] = bufSize;\n return 0;\n };\n function _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _fd_fdstat_get(fd, pbuf) {\n try {\n var rightsBase = 0;\n var rightsInheriting = 0;\n var flags = 0;\n var stream = SYSCALLS.getStreamFromFD(fd);\n HEAP8[pbuf] = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n HEAP16[pbuf + 2 >> 1] = flags;\n HEAP64[pbuf + 8 >> 3] = BigInt(rightsBase);\n HEAP64[pbuf + 16 >> 3] = BigInt(rightsInheriting);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n var doReadv = (stream, iov, iovcnt, offset) => {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset != \"undefined\") offset += curr;\n }\n return ret;\n };\n function _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var num = doReadv(SYSCALLS.getStreamFromFD(fd), iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _fd_seek(fd, offset, whence, newOffset) {\n offset = bigintToI53Checked(offset);\n try {\n if (isNaN(offset)) return 61;\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.llseek(stream, offset, whence);\n HEAP64[newOffset >> 3] = BigInt(stream.position);\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n function _fd_sync(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (stream.stream_ops?.fsync) return stream.stream_ops.fsync(stream);\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n var doWritev = (stream, iov, iovcnt, offset) => {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAPU32[iov >> 2];\n var len = HEAPU32[iov + 4 >> 2];\n iov += 8;\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n if (typeof offset != \"undefined\") offset += curr;\n }\n return ret;\n };\n function _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var num = doWritev(SYSCALLS.getStreamFromFD(fd), iov, iovcnt);\n HEAPU32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n return e.errno;\n }\n }\n FS.createPreloadedFile = FS_createPreloadedFile;\n FS.staticInit();\n var wasmImports = {\n __syscall_chmod: ___syscall_chmod,\n __syscall_faccessat: ___syscall_faccessat,\n __syscall_fchmod: ___syscall_fchmod,\n __syscall_fchown32: ___syscall_fchown32,\n __syscall_fcntl64: ___syscall_fcntl64,\n __syscall_fstat64: ___syscall_fstat64,\n __syscall_ftruncate64: ___syscall_ftruncate64,\n __syscall_getcwd: ___syscall_getcwd,\n __syscall_ioctl: ___syscall_ioctl,\n __syscall_lstat64: ___syscall_lstat64,\n __syscall_mkdirat: ___syscall_mkdirat,\n __syscall_newfstatat: ___syscall_newfstatat,\n __syscall_openat: ___syscall_openat,\n __syscall_readlinkat: ___syscall_readlinkat,\n __syscall_rmdir: ___syscall_rmdir,\n __syscall_stat64: ___syscall_stat64,\n __syscall_unlinkat: ___syscall_unlinkat,\n __syscall_utimensat: ___syscall_utimensat,\n _emscripten_get_now_is_monotonic: __emscripten_get_now_is_monotonic,\n _localtime_js: __localtime_js,\n _mmap_js: __mmap_js,\n _munmap_js: __munmap_js,\n _tzset_js: __tzset_js,\n emscripten_date_now: _emscripten_date_now,\n emscripten_get_now: _emscripten_get_now,\n emscripten_resize_heap: _emscripten_resize_heap,\n environ_get: _environ_get,\n environ_sizes_get: _environ_sizes_get,\n fd_close: _fd_close,\n fd_fdstat_get: _fd_fdstat_get,\n fd_read: _fd_read,\n fd_seek: _fd_seek,\n fd_sync: _fd_sync,\n fd_write: _fd_write,\n memory: wasmMemory\n };\n var wasmExports = createWasm();\n var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports[\"__wasm_call_ctors\"])();\n var _sqlite3_status64 = Module[\"_sqlite3_status64\"] = (a0, a1, a2, a3) => (_sqlite3_status64 = Module[\"_sqlite3_status64\"] = wasmExports[\"sqlite3_status64\"])(a0, a1, a2, a3);\n var _sqlite3_status = Module[\"_sqlite3_status\"] = (a0, a1, a2, a3) => (_sqlite3_status = Module[\"_sqlite3_status\"] = wasmExports[\"sqlite3_status\"])(a0, a1, a2, a3);\n var _sqlite3_db_status = Module[\"_sqlite3_db_status\"] = (a0, a1, a2, a3, a4) => (_sqlite3_db_status = Module[\"_sqlite3_db_status\"] = wasmExports[\"sqlite3_db_status\"])(a0, a1, a2, a3, a4);\n var _sqlite3_msize = Module[\"_sqlite3_msize\"] = (a0) => (_sqlite3_msize = Module[\"_sqlite3_msize\"] = wasmExports[\"sqlite3_msize\"])(a0);\n var _sqlite3_vfs_find = Module[\"_sqlite3_vfs_find\"] = (a0) => (_sqlite3_vfs_find = Module[\"_sqlite3_vfs_find\"] = wasmExports[\"sqlite3_vfs_find\"])(a0);\n var _sqlite3_initialize = Module[\"_sqlite3_initialize\"] = () => (_sqlite3_initialize = Module[\"_sqlite3_initialize\"] = wasmExports[\"sqlite3_initialize\"])();\n var _sqlite3_malloc = Module[\"_sqlite3_malloc\"] = (a0) => (_sqlite3_malloc = Module[\"_sqlite3_malloc\"] = wasmExports[\"sqlite3_malloc\"])(a0);\n var _sqlite3_free = Module[\"_sqlite3_free\"] = (a0) => (_sqlite3_free = Module[\"_sqlite3_free\"] = wasmExports[\"sqlite3_free\"])(a0);\n var _sqlite3_vfs_register = Module[\"_sqlite3_vfs_register\"] = (a0, a1) => (_sqlite3_vfs_register = Module[\"_sqlite3_vfs_register\"] = wasmExports[\"sqlite3_vfs_register\"])(a0, a1);\n var _sqlite3_vfs_unregister = Module[\"_sqlite3_vfs_unregister\"] = (a0) => (_sqlite3_vfs_unregister = Module[\"_sqlite3_vfs_unregister\"] = wasmExports[\"sqlite3_vfs_unregister\"])(a0);\n var _sqlite3_malloc64 = Module[\"_sqlite3_malloc64\"] = (a0) => (_sqlite3_malloc64 = Module[\"_sqlite3_malloc64\"] = wasmExports[\"sqlite3_malloc64\"])(a0);\n var _sqlite3_realloc = Module[\"_sqlite3_realloc\"] = (a0, a1) => (_sqlite3_realloc = Module[\"_sqlite3_realloc\"] = wasmExports[\"sqlite3_realloc\"])(a0, a1);\n var _sqlite3_realloc64 = Module[\"_sqlite3_realloc64\"] = (a0, a1) => (_sqlite3_realloc64 = Module[\"_sqlite3_realloc64\"] = wasmExports[\"sqlite3_realloc64\"])(a0, a1);\n var _sqlite3_value_text = Module[\"_sqlite3_value_text\"] = (a0) => (_sqlite3_value_text = Module[\"_sqlite3_value_text\"] = wasmExports[\"sqlite3_value_text\"])(a0);\n var _sqlite3_randomness = Module[\"_sqlite3_randomness\"] = (a0, a1) => (_sqlite3_randomness = Module[\"_sqlite3_randomness\"] = wasmExports[\"sqlite3_randomness\"])(a0, a1);\n var _sqlite3_stricmp = Module[\"_sqlite3_stricmp\"] = (a0, a1) => (_sqlite3_stricmp = Module[\"_sqlite3_stricmp\"] = wasmExports[\"sqlite3_stricmp\"])(a0, a1);\n var _sqlite3_strnicmp = Module[\"_sqlite3_strnicmp\"] = (a0, a1, a2) => (_sqlite3_strnicmp = Module[\"_sqlite3_strnicmp\"] = wasmExports[\"sqlite3_strnicmp\"])(a0, a1, a2);\n var _sqlite3_uri_parameter = Module[\"_sqlite3_uri_parameter\"] = (a0, a1) => (_sqlite3_uri_parameter = Module[\"_sqlite3_uri_parameter\"] = wasmExports[\"sqlite3_uri_parameter\"])(a0, a1);\n var _sqlite3_uri_boolean = Module[\"_sqlite3_uri_boolean\"] = (a0, a1, a2) => (_sqlite3_uri_boolean = Module[\"_sqlite3_uri_boolean\"] = wasmExports[\"sqlite3_uri_boolean\"])(a0, a1, a2);\n var _sqlite3_serialize = Module[\"_sqlite3_serialize\"] = (a0, a1, a2, a3) => (_sqlite3_serialize = Module[\"_sqlite3_serialize\"] = wasmExports[\"sqlite3_serialize\"])(a0, a1, a2, a3);\n var _sqlite3_prepare_v2 = Module[\"_sqlite3_prepare_v2\"] = (a0, a1, a2, a3, a4) => (_sqlite3_prepare_v2 = Module[\"_sqlite3_prepare_v2\"] = wasmExports[\"sqlite3_prepare_v2\"])(a0, a1, a2, a3, a4);\n var _sqlite3_step = Module[\"_sqlite3_step\"] = (a0) => (_sqlite3_step = Module[\"_sqlite3_step\"] = wasmExports[\"sqlite3_step\"])(a0);\n var _sqlite3_column_int64 = Module[\"_sqlite3_column_int64\"] = (a0, a1) => (_sqlite3_column_int64 = Module[\"_sqlite3_column_int64\"] = wasmExports[\"sqlite3_column_int64\"])(a0, a1);\n var _sqlite3_reset = Module[\"_sqlite3_reset\"] = (a0) => (_sqlite3_reset = Module[\"_sqlite3_reset\"] = wasmExports[\"sqlite3_reset\"])(a0);\n var _sqlite3_exec = Module[\"_sqlite3_exec\"] = (a0, a1, a2, a3, a4) => (_sqlite3_exec = Module[\"_sqlite3_exec\"] = wasmExports[\"sqlite3_exec\"])(a0, a1, a2, a3, a4);\n var _sqlite3_column_int = Module[\"_sqlite3_column_int\"] = (a0, a1) => (_sqlite3_column_int = Module[\"_sqlite3_column_int\"] = wasmExports[\"sqlite3_column_int\"])(a0, a1);\n var _sqlite3_finalize = Module[\"_sqlite3_finalize\"] = (a0) => (_sqlite3_finalize = Module[\"_sqlite3_finalize\"] = wasmExports[\"sqlite3_finalize\"])(a0);\n var _sqlite3_file_control = Module[\"_sqlite3_file_control\"] = (a0, a1, a2, a3) => (_sqlite3_file_control = Module[\"_sqlite3_file_control\"] = wasmExports[\"sqlite3_file_control\"])(a0, a1, a2, a3);\n var _sqlite3_column_name = Module[\"_sqlite3_column_name\"] = (a0, a1) => (_sqlite3_column_name = Module[\"_sqlite3_column_name\"] = wasmExports[\"sqlite3_column_name\"])(a0, a1);\n var _sqlite3_column_text = Module[\"_sqlite3_column_text\"] = (a0, a1) => (_sqlite3_column_text = Module[\"_sqlite3_column_text\"] = wasmExports[\"sqlite3_column_text\"])(a0, a1);\n var _sqlite3_column_type = Module[\"_sqlite3_column_type\"] = (a0, a1) => (_sqlite3_column_type = Module[\"_sqlite3_column_type\"] = wasmExports[\"sqlite3_column_type\"])(a0, a1);\n var _sqlite3_errmsg = Module[\"_sqlite3_errmsg\"] = (a0) => (_sqlite3_errmsg = Module[\"_sqlite3_errmsg\"] = wasmExports[\"sqlite3_errmsg\"])(a0);\n var _sqlite3_deserialize = Module[\"_sqlite3_deserialize\"] = (a0, a1, a2, a3, a4, a5) => (_sqlite3_deserialize = Module[\"_sqlite3_deserialize\"] = wasmExports[\"sqlite3_deserialize\"])(a0, a1, a2, a3, a4, a5);\n var _sqlite3_clear_bindings = Module[\"_sqlite3_clear_bindings\"] = (a0) => (_sqlite3_clear_bindings = Module[\"_sqlite3_clear_bindings\"] = wasmExports[\"sqlite3_clear_bindings\"])(a0);\n var _sqlite3_value_blob = Module[\"_sqlite3_value_blob\"] = (a0) => (_sqlite3_value_blob = Module[\"_sqlite3_value_blob\"] = wasmExports[\"sqlite3_value_blob\"])(a0);\n var _sqlite3_value_bytes = Module[\"_sqlite3_value_bytes\"] = (a0) => (_sqlite3_value_bytes = Module[\"_sqlite3_value_bytes\"] = wasmExports[\"sqlite3_value_bytes\"])(a0);\n var _sqlite3_value_double = Module[\"_sqlite3_value_double\"] = (a0) => (_sqlite3_value_double = Module[\"_sqlite3_value_double\"] = wasmExports[\"sqlite3_value_double\"])(a0);\n var _sqlite3_value_int = Module[\"_sqlite3_value_int\"] = (a0) => (_sqlite3_value_int = Module[\"_sqlite3_value_int\"] = wasmExports[\"sqlite3_value_int\"])(a0);\n var _sqlite3_value_int64 = Module[\"_sqlite3_value_int64\"] = (a0) => (_sqlite3_value_int64 = Module[\"_sqlite3_value_int64\"] = wasmExports[\"sqlite3_value_int64\"])(a0);\n var _sqlite3_value_subtype = Module[\"_sqlite3_value_subtype\"] = (a0) => (_sqlite3_value_subtype = Module[\"_sqlite3_value_subtype\"] = wasmExports[\"sqlite3_value_subtype\"])(a0);\n var _sqlite3_value_pointer = Module[\"_sqlite3_value_pointer\"] = (a0, a1) => (_sqlite3_value_pointer = Module[\"_sqlite3_value_pointer\"] = wasmExports[\"sqlite3_value_pointer\"])(a0, a1);\n var _sqlite3_value_type = Module[\"_sqlite3_value_type\"] = (a0) => (_sqlite3_value_type = Module[\"_sqlite3_value_type\"] = wasmExports[\"sqlite3_value_type\"])(a0);\n var _sqlite3_value_nochange = Module[\"_sqlite3_value_nochange\"] = (a0) => (_sqlite3_value_nochange = Module[\"_sqlite3_value_nochange\"] = wasmExports[\"sqlite3_value_nochange\"])(a0);\n var _sqlite3_value_frombind = Module[\"_sqlite3_value_frombind\"] = (a0) => (_sqlite3_value_frombind = Module[\"_sqlite3_value_frombind\"] = wasmExports[\"sqlite3_value_frombind\"])(a0);\n var _sqlite3_value_dup = Module[\"_sqlite3_value_dup\"] = (a0) => (_sqlite3_value_dup = Module[\"_sqlite3_value_dup\"] = wasmExports[\"sqlite3_value_dup\"])(a0);\n var _sqlite3_value_free = Module[\"_sqlite3_value_free\"] = (a0) => (_sqlite3_value_free = Module[\"_sqlite3_value_free\"] = wasmExports[\"sqlite3_value_free\"])(a0);\n var _sqlite3_result_blob = Module[\"_sqlite3_result_blob\"] = (a0, a1, a2, a3) => (_sqlite3_result_blob = Module[\"_sqlite3_result_blob\"] = wasmExports[\"sqlite3_result_blob\"])(a0, a1, a2, a3);\n var _sqlite3_result_error_toobig = Module[\"_sqlite3_result_error_toobig\"] = (a0) => (_sqlite3_result_error_toobig = Module[\"_sqlite3_result_error_toobig\"] = wasmExports[\"sqlite3_result_error_toobig\"])(a0);\n var _sqlite3_result_error_nomem = Module[\"_sqlite3_result_error_nomem\"] = (a0) => (_sqlite3_result_error_nomem = Module[\"_sqlite3_result_error_nomem\"] = wasmExports[\"sqlite3_result_error_nomem\"])(a0);\n var _sqlite3_result_double = Module[\"_sqlite3_result_double\"] = (a0, a1) => (_sqlite3_result_double = Module[\"_sqlite3_result_double\"] = wasmExports[\"sqlite3_result_double\"])(a0, a1);\n var _sqlite3_result_error = Module[\"_sqlite3_result_error\"] = (a0, a1, a2) => (_sqlite3_result_error = Module[\"_sqlite3_result_error\"] = wasmExports[\"sqlite3_result_error\"])(a0, a1, a2);\n var _sqlite3_result_int = Module[\"_sqlite3_result_int\"] = (a0, a1) => (_sqlite3_result_int = Module[\"_sqlite3_result_int\"] = wasmExports[\"sqlite3_result_int\"])(a0, a1);\n var _sqlite3_result_int64 = Module[\"_sqlite3_result_int64\"] = (a0, a1) => (_sqlite3_result_int64 = Module[\"_sqlite3_result_int64\"] = wasmExports[\"sqlite3_result_int64\"])(a0, a1);\n var _sqlite3_result_null = Module[\"_sqlite3_result_null\"] = (a0) => (_sqlite3_result_null = Module[\"_sqlite3_result_null\"] = wasmExports[\"sqlite3_result_null\"])(a0);\n var _sqlite3_result_pointer = Module[\"_sqlite3_result_pointer\"] = (a0, a1, a2, a3) => (_sqlite3_result_pointer = Module[\"_sqlite3_result_pointer\"] = wasmExports[\"sqlite3_result_pointer\"])(a0, a1, a2, a3);\n var _sqlite3_result_subtype = Module[\"_sqlite3_result_subtype\"] = (a0, a1) => (_sqlite3_result_subtype = Module[\"_sqlite3_result_subtype\"] = wasmExports[\"sqlite3_result_subtype\"])(a0, a1);\n var _sqlite3_result_text = Module[\"_sqlite3_result_text\"] = (a0, a1, a2, a3) => (_sqlite3_result_text = Module[\"_sqlite3_result_text\"] = wasmExports[\"sqlite3_result_text\"])(a0, a1, a2, a3);\n var _sqlite3_result_zeroblob = Module[\"_sqlite3_result_zeroblob\"] = (a0, a1) => (_sqlite3_result_zeroblob = Module[\"_sqlite3_result_zeroblob\"] = wasmExports[\"sqlite3_result_zeroblob\"])(a0, a1);\n var _sqlite3_result_zeroblob64 = Module[\"_sqlite3_result_zeroblob64\"] = (a0, a1) => (_sqlite3_result_zeroblob64 = Module[\"_sqlite3_result_zeroblob64\"] = wasmExports[\"sqlite3_result_zeroblob64\"])(a0, a1);\n var _sqlite3_result_error_code = Module[\"_sqlite3_result_error_code\"] = (a0, a1) => (_sqlite3_result_error_code = Module[\"_sqlite3_result_error_code\"] = wasmExports[\"sqlite3_result_error_code\"])(a0, a1);\n var _sqlite3_user_data = Module[\"_sqlite3_user_data\"] = (a0) => (_sqlite3_user_data = Module[\"_sqlite3_user_data\"] = wasmExports[\"sqlite3_user_data\"])(a0);\n var _sqlite3_context_db_handle = Module[\"_sqlite3_context_db_handle\"] = (a0) => (_sqlite3_context_db_handle = Module[\"_sqlite3_context_db_handle\"] = wasmExports[\"sqlite3_context_db_handle\"])(a0);\n var _sqlite3_vtab_nochange = Module[\"_sqlite3_vtab_nochange\"] = (a0) => (_sqlite3_vtab_nochange = Module[\"_sqlite3_vtab_nochange\"] = wasmExports[\"sqlite3_vtab_nochange\"])(a0);\n var _sqlite3_vtab_in_first = Module[\"_sqlite3_vtab_in_first\"] = (a0, a1) => (_sqlite3_vtab_in_first = Module[\"_sqlite3_vtab_in_first\"] = wasmExports[\"sqlite3_vtab_in_first\"])(a0, a1);\n var _sqlite3_vtab_in_next = Module[\"_sqlite3_vtab_in_next\"] = (a0, a1) => (_sqlite3_vtab_in_next = Module[\"_sqlite3_vtab_in_next\"] = wasmExports[\"sqlite3_vtab_in_next\"])(a0, a1);\n var _sqlite3_aggregate_context = Module[\"_sqlite3_aggregate_context\"] = (a0, a1) => (_sqlite3_aggregate_context = Module[\"_sqlite3_aggregate_context\"] = wasmExports[\"sqlite3_aggregate_context\"])(a0, a1);\n var _sqlite3_get_auxdata = Module[\"_sqlite3_get_auxdata\"] = (a0, a1) => (_sqlite3_get_auxdata = Module[\"_sqlite3_get_auxdata\"] = wasmExports[\"sqlite3_get_auxdata\"])(a0, a1);\n var _sqlite3_set_auxdata = Module[\"_sqlite3_set_auxdata\"] = (a0, a1, a2, a3) => (_sqlite3_set_auxdata = Module[\"_sqlite3_set_auxdata\"] = wasmExports[\"sqlite3_set_auxdata\"])(a0, a1, a2, a3);\n var _sqlite3_column_count = Module[\"_sqlite3_column_count\"] = (a0) => (_sqlite3_column_count = Module[\"_sqlite3_column_count\"] = wasmExports[\"sqlite3_column_count\"])(a0);\n var _sqlite3_data_count = Module[\"_sqlite3_data_count\"] = (a0) => (_sqlite3_data_count = Module[\"_sqlite3_data_count\"] = wasmExports[\"sqlite3_data_count\"])(a0);\n var _sqlite3_column_blob = Module[\"_sqlite3_column_blob\"] = (a0, a1) => (_sqlite3_column_blob = Module[\"_sqlite3_column_blob\"] = wasmExports[\"sqlite3_column_blob\"])(a0, a1);\n var _sqlite3_column_bytes = Module[\"_sqlite3_column_bytes\"] = (a0, a1) => (_sqlite3_column_bytes = Module[\"_sqlite3_column_bytes\"] = wasmExports[\"sqlite3_column_bytes\"])(a0, a1);\n var _sqlite3_column_double = Module[\"_sqlite3_column_double\"] = (a0, a1) => (_sqlite3_column_double = Module[\"_sqlite3_column_double\"] = wasmExports[\"sqlite3_column_double\"])(a0, a1);\n var _sqlite3_column_value = Module[\"_sqlite3_column_value\"] = (a0, a1) => (_sqlite3_column_value = Module[\"_sqlite3_column_value\"] = wasmExports[\"sqlite3_column_value\"])(a0, a1);\n var _sqlite3_column_decltype = Module[\"_sqlite3_column_decltype\"] = (a0, a1) => (_sqlite3_column_decltype = Module[\"_sqlite3_column_decltype\"] = wasmExports[\"sqlite3_column_decltype\"])(a0, a1);\n var _sqlite3_bind_blob = Module[\"_sqlite3_bind_blob\"] = (a0, a1, a2, a3, a4) => (_sqlite3_bind_blob = Module[\"_sqlite3_bind_blob\"] = wasmExports[\"sqlite3_bind_blob\"])(a0, a1, a2, a3, a4);\n var _sqlite3_bind_double = Module[\"_sqlite3_bind_double\"] = (a0, a1, a2) => (_sqlite3_bind_double = Module[\"_sqlite3_bind_double\"] = wasmExports[\"sqlite3_bind_double\"])(a0, a1, a2);\n var _sqlite3_bind_int = Module[\"_sqlite3_bind_int\"] = (a0, a1, a2) => (_sqlite3_bind_int = Module[\"_sqlite3_bind_int\"] = wasmExports[\"sqlite3_bind_int\"])(a0, a1, a2);\n var _sqlite3_bind_int64 = Module[\"_sqlite3_bind_int64\"] = (a0, a1, a2) => (_sqlite3_bind_int64 = Module[\"_sqlite3_bind_int64\"] = wasmExports[\"sqlite3_bind_int64\"])(a0, a1, a2);\n var _sqlite3_bind_null = Module[\"_sqlite3_bind_null\"] = (a0, a1) => (_sqlite3_bind_null = Module[\"_sqlite3_bind_null\"] = wasmExports[\"sqlite3_bind_null\"])(a0, a1);\n var _sqlite3_bind_pointer = Module[\"_sqlite3_bind_pointer\"] = (a0, a1, a2, a3, a4) => (_sqlite3_bind_pointer = Module[\"_sqlite3_bind_pointer\"] = wasmExports[\"sqlite3_bind_pointer\"])(a0, a1, a2, a3, a4);\n var _sqlite3_bind_text = Module[\"_sqlite3_bind_text\"] = (a0, a1, a2, a3, a4) => (_sqlite3_bind_text = Module[\"_sqlite3_bind_text\"] = wasmExports[\"sqlite3_bind_text\"])(a0, a1, a2, a3, a4);\n var _sqlite3_bind_parameter_count = Module[\"_sqlite3_bind_parameter_count\"] = (a0) => (_sqlite3_bind_parameter_count = Module[\"_sqlite3_bind_parameter_count\"] = wasmExports[\"sqlite3_bind_parameter_count\"])(a0);\n var _sqlite3_bind_parameter_name = Module[\"_sqlite3_bind_parameter_name\"] = (a0, a1) => (_sqlite3_bind_parameter_name = Module[\"_sqlite3_bind_parameter_name\"] = wasmExports[\"sqlite3_bind_parameter_name\"])(a0, a1);\n var _sqlite3_bind_parameter_index = Module[\"_sqlite3_bind_parameter_index\"] = (a0, a1) => (_sqlite3_bind_parameter_index = Module[\"_sqlite3_bind_parameter_index\"] = wasmExports[\"sqlite3_bind_parameter_index\"])(a0, a1);\n var _sqlite3_db_handle = Module[\"_sqlite3_db_handle\"] = (a0) => (_sqlite3_db_handle = Module[\"_sqlite3_db_handle\"] = wasmExports[\"sqlite3_db_handle\"])(a0);\n var _sqlite3_stmt_readonly = Module[\"_sqlite3_stmt_readonly\"] = (a0) => (_sqlite3_stmt_readonly = Module[\"_sqlite3_stmt_readonly\"] = wasmExports[\"sqlite3_stmt_readonly\"])(a0);\n var _sqlite3_stmt_isexplain = Module[\"_sqlite3_stmt_isexplain\"] = (a0) => (_sqlite3_stmt_isexplain = Module[\"_sqlite3_stmt_isexplain\"] = wasmExports[\"sqlite3_stmt_isexplain\"])(a0);\n var _sqlite3_stmt_explain = Module[\"_sqlite3_stmt_explain\"] = (a0, a1) => (_sqlite3_stmt_explain = Module[\"_sqlite3_stmt_explain\"] = wasmExports[\"sqlite3_stmt_explain\"])(a0, a1);\n var _sqlite3_stmt_busy = Module[\"_sqlite3_stmt_busy\"] = (a0) => (_sqlite3_stmt_busy = Module[\"_sqlite3_stmt_busy\"] = wasmExports[\"sqlite3_stmt_busy\"])(a0);\n var _sqlite3_stmt_status = Module[\"_sqlite3_stmt_status\"] = (a0, a1, a2) => (_sqlite3_stmt_status = Module[\"_sqlite3_stmt_status\"] = wasmExports[\"sqlite3_stmt_status\"])(a0, a1, a2);\n var _sqlite3_sql = Module[\"_sqlite3_sql\"] = (a0) => (_sqlite3_sql = Module[\"_sqlite3_sql\"] = wasmExports[\"sqlite3_sql\"])(a0);\n var _sqlite3_expanded_sql = Module[\"_sqlite3_expanded_sql\"] = (a0) => (_sqlite3_expanded_sql = Module[\"_sqlite3_expanded_sql\"] = wasmExports[\"sqlite3_expanded_sql\"])(a0);\n var _sqlite3_preupdate_old = Module[\"_sqlite3_preupdate_old\"] = (a0, a1, a2) => (_sqlite3_preupdate_old = Module[\"_sqlite3_preupdate_old\"] = wasmExports[\"sqlite3_preupdate_old\"])(a0, a1, a2);\n var _sqlite3_preupdate_count = Module[\"_sqlite3_preupdate_count\"] = (a0) => (_sqlite3_preupdate_count = Module[\"_sqlite3_preupdate_count\"] = wasmExports[\"sqlite3_preupdate_count\"])(a0);\n var _sqlite3_preupdate_depth = Module[\"_sqlite3_preupdate_depth\"] = (a0) => (_sqlite3_preupdate_depth = Module[\"_sqlite3_preupdate_depth\"] = wasmExports[\"sqlite3_preupdate_depth\"])(a0);\n var _sqlite3_preupdate_blobwrite = Module[\"_sqlite3_preupdate_blobwrite\"] = (a0) => (_sqlite3_preupdate_blobwrite = Module[\"_sqlite3_preupdate_blobwrite\"] = wasmExports[\"sqlite3_preupdate_blobwrite\"])(a0);\n var _sqlite3_preupdate_new = Module[\"_sqlite3_preupdate_new\"] = (a0, a1, a2) => (_sqlite3_preupdate_new = Module[\"_sqlite3_preupdate_new\"] = wasmExports[\"sqlite3_preupdate_new\"])(a0, a1, a2);\n var _sqlite3_value_numeric_type = Module[\"_sqlite3_value_numeric_type\"] = (a0) => (_sqlite3_value_numeric_type = Module[\"_sqlite3_value_numeric_type\"] = wasmExports[\"sqlite3_value_numeric_type\"])(a0);\n var _sqlite3_set_authorizer = Module[\"_sqlite3_set_authorizer\"] = (a0, a1, a2) => (_sqlite3_set_authorizer = Module[\"_sqlite3_set_authorizer\"] = wasmExports[\"sqlite3_set_authorizer\"])(a0, a1, a2);\n var _sqlite3_strglob = Module[\"_sqlite3_strglob\"] = (a0, a1) => (_sqlite3_strglob = Module[\"_sqlite3_strglob\"] = wasmExports[\"sqlite3_strglob\"])(a0, a1);\n var _sqlite3_strlike = Module[\"_sqlite3_strlike\"] = (a0, a1, a2) => (_sqlite3_strlike = Module[\"_sqlite3_strlike\"] = wasmExports[\"sqlite3_strlike\"])(a0, a1, a2);\n var _sqlite3_auto_extension = Module[\"_sqlite3_auto_extension\"] = (a0) => (_sqlite3_auto_extension = Module[\"_sqlite3_auto_extension\"] = wasmExports[\"sqlite3_auto_extension\"])(a0);\n var _sqlite3_cancel_auto_extension = Module[\"_sqlite3_cancel_auto_extension\"] = (a0) => (_sqlite3_cancel_auto_extension = Module[\"_sqlite3_cancel_auto_extension\"] = wasmExports[\"sqlite3_cancel_auto_extension\"])(a0);\n var _sqlite3_reset_auto_extension = Module[\"_sqlite3_reset_auto_extension\"] = () => (_sqlite3_reset_auto_extension = Module[\"_sqlite3_reset_auto_extension\"] = wasmExports[\"sqlite3_reset_auto_extension\"])();\n var _sqlite3_prepare_v3 = Module[\"_sqlite3_prepare_v3\"] = (a0, a1, a2, a3, a4, a5) => (_sqlite3_prepare_v3 = Module[\"_sqlite3_prepare_v3\"] = wasmExports[\"sqlite3_prepare_v3\"])(a0, a1, a2, a3, a4, a5);\n var _sqlite3_create_module = Module[\"_sqlite3_create_module\"] = (a0, a1, a2, a3) => (_sqlite3_create_module = Module[\"_sqlite3_create_module\"] = wasmExports[\"sqlite3_create_module\"])(a0, a1, a2, a3);\n var _sqlite3_create_module_v2 = Module[\"_sqlite3_create_module_v2\"] = (a0, a1, a2, a3, a4) => (_sqlite3_create_module_v2 = Module[\"_sqlite3_create_module_v2\"] = wasmExports[\"sqlite3_create_module_v2\"])(a0, a1, a2, a3, a4);\n var _sqlite3_drop_modules = Module[\"_sqlite3_drop_modules\"] = (a0, a1) => (_sqlite3_drop_modules = Module[\"_sqlite3_drop_modules\"] = wasmExports[\"sqlite3_drop_modules\"])(a0, a1);\n var _sqlite3_declare_vtab = Module[\"_sqlite3_declare_vtab\"] = (a0, a1) => (_sqlite3_declare_vtab = Module[\"_sqlite3_declare_vtab\"] = wasmExports[\"sqlite3_declare_vtab\"])(a0, a1);\n var _sqlite3_vtab_on_conflict = Module[\"_sqlite3_vtab_on_conflict\"] = (a0) => (_sqlite3_vtab_on_conflict = Module[\"_sqlite3_vtab_on_conflict\"] = wasmExports[\"sqlite3_vtab_on_conflict\"])(a0);\n var _sqlite3_vtab_collation = Module[\"_sqlite3_vtab_collation\"] = (a0, a1) => (_sqlite3_vtab_collation = Module[\"_sqlite3_vtab_collation\"] = wasmExports[\"sqlite3_vtab_collation\"])(a0, a1);\n var _sqlite3_vtab_in = Module[\"_sqlite3_vtab_in\"] = (a0, a1, a2) => (_sqlite3_vtab_in = Module[\"_sqlite3_vtab_in\"] = wasmExports[\"sqlite3_vtab_in\"])(a0, a1, a2);\n var _sqlite3_vtab_rhs_value = Module[\"_sqlite3_vtab_rhs_value\"] = (a0, a1, a2) => (_sqlite3_vtab_rhs_value = Module[\"_sqlite3_vtab_rhs_value\"] = wasmExports[\"sqlite3_vtab_rhs_value\"])(a0, a1, a2);\n var _sqlite3_vtab_distinct = Module[\"_sqlite3_vtab_distinct\"] = (a0) => (_sqlite3_vtab_distinct = Module[\"_sqlite3_vtab_distinct\"] = wasmExports[\"sqlite3_vtab_distinct\"])(a0);\n var _sqlite3_keyword_name = Module[\"_sqlite3_keyword_name\"] = (a0, a1, a2) => (_sqlite3_keyword_name = Module[\"_sqlite3_keyword_name\"] = wasmExports[\"sqlite3_keyword_name\"])(a0, a1, a2);\n var _sqlite3_keyword_count = Module[\"_sqlite3_keyword_count\"] = () => (_sqlite3_keyword_count = Module[\"_sqlite3_keyword_count\"] = wasmExports[\"sqlite3_keyword_count\"])();\n var _sqlite3_keyword_check = Module[\"_sqlite3_keyword_check\"] = (a0, a1) => (_sqlite3_keyword_check = Module[\"_sqlite3_keyword_check\"] = wasmExports[\"sqlite3_keyword_check\"])(a0, a1);\n var _sqlite3_complete = Module[\"_sqlite3_complete\"] = (a0) => (_sqlite3_complete = Module[\"_sqlite3_complete\"] = wasmExports[\"sqlite3_complete\"])(a0);\n var _sqlite3_libversion = Module[\"_sqlite3_libversion\"] = () => (_sqlite3_libversion = Module[\"_sqlite3_libversion\"] = wasmExports[\"sqlite3_libversion\"])();\n var _sqlite3_libversion_number = Module[\"_sqlite3_libversion_number\"] = () => (_sqlite3_libversion_number = Module[\"_sqlite3_libversion_number\"] = wasmExports[\"sqlite3_libversion_number\"])();\n var _sqlite3_shutdown = Module[\"_sqlite3_shutdown\"] = () => (_sqlite3_shutdown = Module[\"_sqlite3_shutdown\"] = wasmExports[\"sqlite3_shutdown\"])();\n var _sqlite3_last_insert_rowid = Module[\"_sqlite3_last_insert_rowid\"] = (a0) => (_sqlite3_last_insert_rowid = Module[\"_sqlite3_last_insert_rowid\"] = wasmExports[\"sqlite3_last_insert_rowid\"])(a0);\n var _sqlite3_set_last_insert_rowid = Module[\"_sqlite3_set_last_insert_rowid\"] = (a0, a1) => (_sqlite3_set_last_insert_rowid = Module[\"_sqlite3_set_last_insert_rowid\"] = wasmExports[\"sqlite3_set_last_insert_rowid\"])(a0, a1);\n var _sqlite3_changes64 = Module[\"_sqlite3_changes64\"] = (a0) => (_sqlite3_changes64 = Module[\"_sqlite3_changes64\"] = wasmExports[\"sqlite3_changes64\"])(a0);\n var _sqlite3_changes = Module[\"_sqlite3_changes\"] = (a0) => (_sqlite3_changes = Module[\"_sqlite3_changes\"] = wasmExports[\"sqlite3_changes\"])(a0);\n var _sqlite3_total_changes64 = Module[\"_sqlite3_total_changes64\"] = (a0) => (_sqlite3_total_changes64 = Module[\"_sqlite3_total_changes64\"] = wasmExports[\"sqlite3_total_changes64\"])(a0);\n var _sqlite3_total_changes = Module[\"_sqlite3_total_changes\"] = (a0) => (_sqlite3_total_changes = Module[\"_sqlite3_total_changes\"] = wasmExports[\"sqlite3_total_changes\"])(a0);\n var _sqlite3_txn_state = Module[\"_sqlite3_txn_state\"] = (a0, a1) => (_sqlite3_txn_state = Module[\"_sqlite3_txn_state\"] = wasmExports[\"sqlite3_txn_state\"])(a0, a1);\n var _sqlite3_close_v2 = Module[\"_sqlite3_close_v2\"] = (a0) => (_sqlite3_close_v2 = Module[\"_sqlite3_close_v2\"] = wasmExports[\"sqlite3_close_v2\"])(a0);\n var _sqlite3_busy_handler = Module[\"_sqlite3_busy_handler\"] = (a0, a1, a2) => (_sqlite3_busy_handler = Module[\"_sqlite3_busy_handler\"] = wasmExports[\"sqlite3_busy_handler\"])(a0, a1, a2);\n var _sqlite3_progress_handler = Module[\"_sqlite3_progress_handler\"] = (a0, a1, a2, a3) => (_sqlite3_progress_handler = Module[\"_sqlite3_progress_handler\"] = wasmExports[\"sqlite3_progress_handler\"])(a0, a1, a2, a3);\n var _sqlite3_busy_timeout = Module[\"_sqlite3_busy_timeout\"] = (a0, a1) => (_sqlite3_busy_timeout = Module[\"_sqlite3_busy_timeout\"] = wasmExports[\"sqlite3_busy_timeout\"])(a0, a1);\n var _sqlite3_interrupt = Module[\"_sqlite3_interrupt\"] = (a0) => (_sqlite3_interrupt = Module[\"_sqlite3_interrupt\"] = wasmExports[\"sqlite3_interrupt\"])(a0);\n var _sqlite3_is_interrupted = Module[\"_sqlite3_is_interrupted\"] = (a0) => (_sqlite3_is_interrupted = Module[\"_sqlite3_is_interrupted\"] = wasmExports[\"sqlite3_is_interrupted\"])(a0);\n var _sqlite3_create_function = Module[\"_sqlite3_create_function\"] = (a0, a1, a2, a3, a4, a5, a6, a7) => (_sqlite3_create_function = Module[\"_sqlite3_create_function\"] = wasmExports[\"sqlite3_create_function\"])(a0, a1, a2, a3, a4, a5, a6, a7);\n var _sqlite3_create_function_v2 = Module[\"_sqlite3_create_function_v2\"] = (a0, a1, a2, a3, a4, a5, a6, a7, a8) => (_sqlite3_create_function_v2 = Module[\"_sqlite3_create_function_v2\"] = wasmExports[\"sqlite3_create_function_v2\"])(a0, a1, a2, a3, a4, a5, a6, a7, a8);\n var _sqlite3_create_window_function = Module[\"_sqlite3_create_window_function\"] = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) => (_sqlite3_create_window_function = Module[\"_sqlite3_create_window_function\"] = wasmExports[\"sqlite3_create_window_function\"])(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n var _sqlite3_overload_function = Module[\"_sqlite3_overload_function\"] = (a0, a1, a2) => (_sqlite3_overload_function = Module[\"_sqlite3_overload_function\"] = wasmExports[\"sqlite3_overload_function\"])(a0, a1, a2);\n var _sqlite3_trace_v2 = Module[\"_sqlite3_trace_v2\"] = (a0, a1, a2, a3) => (_sqlite3_trace_v2 = Module[\"_sqlite3_trace_v2\"] = wasmExports[\"sqlite3_trace_v2\"])(a0, a1, a2, a3);\n var _sqlite3_commit_hook = Module[\"_sqlite3_commit_hook\"] = (a0, a1, a2) => (_sqlite3_commit_hook = Module[\"_sqlite3_commit_hook\"] = wasmExports[\"sqlite3_commit_hook\"])(a0, a1, a2);\n var _sqlite3_update_hook = Module[\"_sqlite3_update_hook\"] = (a0, a1, a2) => (_sqlite3_update_hook = Module[\"_sqlite3_update_hook\"] = wasmExports[\"sqlite3_update_hook\"])(a0, a1, a2);\n var _sqlite3_rollback_hook = Module[\"_sqlite3_rollback_hook\"] = (a0, a1, a2) => (_sqlite3_rollback_hook = Module[\"_sqlite3_rollback_hook\"] = wasmExports[\"sqlite3_rollback_hook\"])(a0, a1, a2);\n var _sqlite3_preupdate_hook = Module[\"_sqlite3_preupdate_hook\"] = (a0, a1, a2) => (_sqlite3_preupdate_hook = Module[\"_sqlite3_preupdate_hook\"] = wasmExports[\"sqlite3_preupdate_hook\"])(a0, a1, a2);\n var _sqlite3_error_offset = Module[\"_sqlite3_error_offset\"] = (a0) => (_sqlite3_error_offset = Module[\"_sqlite3_error_offset\"] = wasmExports[\"sqlite3_error_offset\"])(a0);\n var _sqlite3_errcode = Module[\"_sqlite3_errcode\"] = (a0) => (_sqlite3_errcode = Module[\"_sqlite3_errcode\"] = wasmExports[\"sqlite3_errcode\"])(a0);\n var _sqlite3_extended_errcode = Module[\"_sqlite3_extended_errcode\"] = (a0) => (_sqlite3_extended_errcode = Module[\"_sqlite3_extended_errcode\"] = wasmExports[\"sqlite3_extended_errcode\"])(a0);\n var _sqlite3_errstr = Module[\"_sqlite3_errstr\"] = (a0) => (_sqlite3_errstr = Module[\"_sqlite3_errstr\"] = wasmExports[\"sqlite3_errstr\"])(a0);\n var _sqlite3_limit = Module[\"_sqlite3_limit\"] = (a0, a1, a2) => (_sqlite3_limit = Module[\"_sqlite3_limit\"] = wasmExports[\"sqlite3_limit\"])(a0, a1, a2);\n var _sqlite3_open = Module[\"_sqlite3_open\"] = (a0, a1) => (_sqlite3_open = Module[\"_sqlite3_open\"] = wasmExports[\"sqlite3_open\"])(a0, a1);\n var _sqlite3_open_v2 = Module[\"_sqlite3_open_v2\"] = (a0, a1, a2, a3) => (_sqlite3_open_v2 = Module[\"_sqlite3_open_v2\"] = wasmExports[\"sqlite3_open_v2\"])(a0, a1, a2, a3);\n var _sqlite3_create_collation = Module[\"_sqlite3_create_collation\"] = (a0, a1, a2, a3, a4) => (_sqlite3_create_collation = Module[\"_sqlite3_create_collation\"] = wasmExports[\"sqlite3_create_collation\"])(a0, a1, a2, a3, a4);\n var _sqlite3_create_collation_v2 = Module[\"_sqlite3_create_collation_v2\"] = (a0, a1, a2, a3, a4, a5) => (_sqlite3_create_collation_v2 = Module[\"_sqlite3_create_collation_v2\"] = wasmExports[\"sqlite3_create_collation_v2\"])(a0, a1, a2, a3, a4, a5);\n var _sqlite3_collation_needed = Module[\"_sqlite3_collation_needed\"] = (a0, a1, a2) => (_sqlite3_collation_needed = Module[\"_sqlite3_collation_needed\"] = wasmExports[\"sqlite3_collation_needed\"])(a0, a1, a2);\n var _sqlite3_get_autocommit = Module[\"_sqlite3_get_autocommit\"] = (a0) => (_sqlite3_get_autocommit = Module[\"_sqlite3_get_autocommit\"] = wasmExports[\"sqlite3_get_autocommit\"])(a0);\n var _sqlite3_table_column_metadata = Module[\"_sqlite3_table_column_metadata\"] = (a0, a1, a2, a3, a4, a5, a6, a7, a8) => (_sqlite3_table_column_metadata = Module[\"_sqlite3_table_column_metadata\"] = wasmExports[\"sqlite3_table_column_metadata\"])(a0, a1, a2, a3, a4, a5, a6, a7, a8);\n var _sqlite3_extended_result_codes = Module[\"_sqlite3_extended_result_codes\"] = (a0, a1) => (_sqlite3_extended_result_codes = Module[\"_sqlite3_extended_result_codes\"] = wasmExports[\"sqlite3_extended_result_codes\"])(a0, a1);\n var _sqlite3_uri_key = Module[\"_sqlite3_uri_key\"] = (a0, a1) => (_sqlite3_uri_key = Module[\"_sqlite3_uri_key\"] = wasmExports[\"sqlite3_uri_key\"])(a0, a1);\n var _sqlite3_uri_int64 = Module[\"_sqlite3_uri_int64\"] = (a0, a1, a2) => (_sqlite3_uri_int64 = Module[\"_sqlite3_uri_int64\"] = wasmExports[\"sqlite3_uri_int64\"])(a0, a1, a2);\n var _sqlite3_db_name = Module[\"_sqlite3_db_name\"] = (a0, a1) => (_sqlite3_db_name = Module[\"_sqlite3_db_name\"] = wasmExports[\"sqlite3_db_name\"])(a0, a1);\n var _sqlite3_db_filename = Module[\"_sqlite3_db_filename\"] = (a0, a1) => (_sqlite3_db_filename = Module[\"_sqlite3_db_filename\"] = wasmExports[\"sqlite3_db_filename\"])(a0, a1);\n var _sqlite3_db_readonly = Module[\"_sqlite3_db_readonly\"] = (a0, a1) => (_sqlite3_db_readonly = Module[\"_sqlite3_db_readonly\"] = wasmExports[\"sqlite3_db_readonly\"])(a0, a1);\n var _sqlite3_compileoption_used = Module[\"_sqlite3_compileoption_used\"] = (a0) => (_sqlite3_compileoption_used = Module[\"_sqlite3_compileoption_used\"] = wasmExports[\"sqlite3_compileoption_used\"])(a0);\n var _sqlite3_compileoption_get = Module[\"_sqlite3_compileoption_get\"] = (a0) => (_sqlite3_compileoption_get = Module[\"_sqlite3_compileoption_get\"] = wasmExports[\"sqlite3_compileoption_get\"])(a0);\n var _sqlite3session_diff = Module[\"_sqlite3session_diff\"] = (a0, a1, a2, a3) => (_sqlite3session_diff = Module[\"_sqlite3session_diff\"] = wasmExports[\"sqlite3session_diff\"])(a0, a1, a2, a3);\n var _sqlite3session_attach = Module[\"_sqlite3session_attach\"] = (a0, a1) => (_sqlite3session_attach = Module[\"_sqlite3session_attach\"] = wasmExports[\"sqlite3session_attach\"])(a0, a1);\n var _sqlite3session_create = Module[\"_sqlite3session_create\"] = (a0, a1, a2) => (_sqlite3session_create = Module[\"_sqlite3session_create\"] = wasmExports[\"sqlite3session_create\"])(a0, a1, a2);\n var _sqlite3session_delete = Module[\"_sqlite3session_delete\"] = (a0) => (_sqlite3session_delete = Module[\"_sqlite3session_delete\"] = wasmExports[\"sqlite3session_delete\"])(a0);\n var _sqlite3session_table_filter = Module[\"_sqlite3session_table_filter\"] = (a0, a1, a2) => (_sqlite3session_table_filter = Module[\"_sqlite3session_table_filter\"] = wasmExports[\"sqlite3session_table_filter\"])(a0, a1, a2);\n var _sqlite3session_changeset = Module[\"_sqlite3session_changeset\"] = (a0, a1, a2) => (_sqlite3session_changeset = Module[\"_sqlite3session_changeset\"] = wasmExports[\"sqlite3session_changeset\"])(a0, a1, a2);\n var _sqlite3session_changeset_strm = Module[\"_sqlite3session_changeset_strm\"] = (a0, a1, a2) => (_sqlite3session_changeset_strm = Module[\"_sqlite3session_changeset_strm\"] = wasmExports[\"sqlite3session_changeset_strm\"])(a0, a1, a2);\n var _sqlite3session_patchset_strm = Module[\"_sqlite3session_patchset_strm\"] = (a0, a1, a2) => (_sqlite3session_patchset_strm = Module[\"_sqlite3session_patchset_strm\"] = wasmExports[\"sqlite3session_patchset_strm\"])(a0, a1, a2);\n var _sqlite3session_patchset = Module[\"_sqlite3session_patchset\"] = (a0, a1, a2) => (_sqlite3session_patchset = Module[\"_sqlite3session_patchset\"] = wasmExports[\"sqlite3session_patchset\"])(a0, a1, a2);\n var _sqlite3session_enable = Module[\"_sqlite3session_enable\"] = (a0, a1) => (_sqlite3session_enable = Module[\"_sqlite3session_enable\"] = wasmExports[\"sqlite3session_enable\"])(a0, a1);\n var _sqlite3session_indirect = Module[\"_sqlite3session_indirect\"] = (a0, a1) => (_sqlite3session_indirect = Module[\"_sqlite3session_indirect\"] = wasmExports[\"sqlite3session_indirect\"])(a0, a1);\n var _sqlite3session_isempty = Module[\"_sqlite3session_isempty\"] = (a0) => (_sqlite3session_isempty = Module[\"_sqlite3session_isempty\"] = wasmExports[\"sqlite3session_isempty\"])(a0);\n var _sqlite3session_memory_used = Module[\"_sqlite3session_memory_used\"] = (a0) => (_sqlite3session_memory_used = Module[\"_sqlite3session_memory_used\"] = wasmExports[\"sqlite3session_memory_used\"])(a0);\n var _sqlite3session_object_config = Module[\"_sqlite3session_object_config\"] = (a0, a1, a2) => (_sqlite3session_object_config = Module[\"_sqlite3session_object_config\"] = wasmExports[\"sqlite3session_object_config\"])(a0, a1, a2);\n var _sqlite3session_changeset_size = Module[\"_sqlite3session_changeset_size\"] = (a0) => (_sqlite3session_changeset_size = Module[\"_sqlite3session_changeset_size\"] = wasmExports[\"sqlite3session_changeset_size\"])(a0);\n var _sqlite3changeset_start = Module[\"_sqlite3changeset_start\"] = (a0, a1, a2) => (_sqlite3changeset_start = Module[\"_sqlite3changeset_start\"] = wasmExports[\"sqlite3changeset_start\"])(a0, a1, a2);\n var _sqlite3changeset_start_v2 = Module[\"_sqlite3changeset_start_v2\"] = (a0, a1, a2, a3) => (_sqlite3changeset_start_v2 = Module[\"_sqlite3changeset_start_v2\"] = wasmExports[\"sqlite3changeset_start_v2\"])(a0, a1, a2, a3);\n var _sqlite3changeset_start_strm = Module[\"_sqlite3changeset_start_strm\"] = (a0, a1, a2) => (_sqlite3changeset_start_strm = Module[\"_sqlite3changeset_start_strm\"] = wasmExports[\"sqlite3changeset_start_strm\"])(a0, a1, a2);\n var _sqlite3changeset_start_v2_strm = Module[\"_sqlite3changeset_start_v2_strm\"] = (a0, a1, a2, a3) => (_sqlite3changeset_start_v2_strm = Module[\"_sqlite3changeset_start_v2_strm\"] = wasmExports[\"sqlite3changeset_start_v2_strm\"])(a0, a1, a2, a3);\n var _sqlite3changeset_next = Module[\"_sqlite3changeset_next\"] = (a0) => (_sqlite3changeset_next = Module[\"_sqlite3changeset_next\"] = wasmExports[\"sqlite3changeset_next\"])(a0);\n var _sqlite3changeset_op = Module[\"_sqlite3changeset_op\"] = (a0, a1, a2, a3, a4) => (_sqlite3changeset_op = Module[\"_sqlite3changeset_op\"] = wasmExports[\"sqlite3changeset_op\"])(a0, a1, a2, a3, a4);\n var _sqlite3changeset_pk = Module[\"_sqlite3changeset_pk\"] = (a0, a1, a2) => (_sqlite3changeset_pk = Module[\"_sqlite3changeset_pk\"] = wasmExports[\"sqlite3changeset_pk\"])(a0, a1, a2);\n var _sqlite3changeset_old = Module[\"_sqlite3changeset_old\"] = (a0, a1, a2) => (_sqlite3changeset_old = Module[\"_sqlite3changeset_old\"] = wasmExports[\"sqlite3changeset_old\"])(a0, a1, a2);\n var _sqlite3changeset_new = Module[\"_sqlite3changeset_new\"] = (a0, a1, a2) => (_sqlite3changeset_new = Module[\"_sqlite3changeset_new\"] = wasmExports[\"sqlite3changeset_new\"])(a0, a1, a2);\n var _sqlite3changeset_conflict = Module[\"_sqlite3changeset_conflict\"] = (a0, a1, a2) => (_sqlite3changeset_conflict = Module[\"_sqlite3changeset_conflict\"] = wasmExports[\"sqlite3changeset_conflict\"])(a0, a1, a2);\n var _sqlite3changeset_fk_conflicts = Module[\"_sqlite3changeset_fk_conflicts\"] = (a0, a1) => (_sqlite3changeset_fk_conflicts = Module[\"_sqlite3changeset_fk_conflicts\"] = wasmExports[\"sqlite3changeset_fk_conflicts\"])(a0, a1);\n var _sqlite3changeset_finalize = Module[\"_sqlite3changeset_finalize\"] = (a0) => (_sqlite3changeset_finalize = Module[\"_sqlite3changeset_finalize\"] = wasmExports[\"sqlite3changeset_finalize\"])(a0);\n var _sqlite3changeset_invert = Module[\"_sqlite3changeset_invert\"] = (a0, a1, a2, a3) => (_sqlite3changeset_invert = Module[\"_sqlite3changeset_invert\"] = wasmExports[\"sqlite3changeset_invert\"])(a0, a1, a2, a3);\n var _sqlite3changeset_invert_strm = Module[\"_sqlite3changeset_invert_strm\"] = (a0, a1, a2, a3) => (_sqlite3changeset_invert_strm = Module[\"_sqlite3changeset_invert_strm\"] = wasmExports[\"sqlite3changeset_invert_strm\"])(a0, a1, a2, a3);\n var _sqlite3changeset_apply_v2 = Module[\"_sqlite3changeset_apply_v2\"] = (a0, a1, a2, a3, a4, a5, a6, a7, a8) => (_sqlite3changeset_apply_v2 = Module[\"_sqlite3changeset_apply_v2\"] = wasmExports[\"sqlite3changeset_apply_v2\"])(a0, a1, a2, a3, a4, a5, a6, a7, a8);\n var _sqlite3changeset_apply = Module[\"_sqlite3changeset_apply\"] = (a0, a1, a2, a3, a4, a5) => (_sqlite3changeset_apply = Module[\"_sqlite3changeset_apply\"] = wasmExports[\"sqlite3changeset_apply\"])(a0, a1, a2, a3, a4, a5);\n var _sqlite3changeset_apply_v2_strm = Module[\"_sqlite3changeset_apply_v2_strm\"] = (a0, a1, a2, a3, a4, a5, a6, a7, a8) => (_sqlite3changeset_apply_v2_strm = Module[\"_sqlite3changeset_apply_v2_strm\"] = wasmExports[\"sqlite3changeset_apply_v2_strm\"])(a0, a1, a2, a3, a4, a5, a6, a7, a8);\n var _sqlite3changeset_apply_strm = Module[\"_sqlite3changeset_apply_strm\"] = (a0, a1, a2, a3, a4, a5) => (_sqlite3changeset_apply_strm = Module[\"_sqlite3changeset_apply_strm\"] = wasmExports[\"sqlite3changeset_apply_strm\"])(a0, a1, a2, a3, a4, a5);\n var _sqlite3changegroup_new = Module[\"_sqlite3changegroup_new\"] = (a0) => (_sqlite3changegroup_new = Module[\"_sqlite3changegroup_new\"] = wasmExports[\"sqlite3changegroup_new\"])(a0);\n var _sqlite3changegroup_add = Module[\"_sqlite3changegroup_add\"] = (a0, a1, a2) => (_sqlite3changegroup_add = Module[\"_sqlite3changegroup_add\"] = wasmExports[\"sqlite3changegroup_add\"])(a0, a1, a2);\n var _sqlite3changegroup_output = Module[\"_sqlite3changegroup_output\"] = (a0, a1, a2) => (_sqlite3changegroup_output = Module[\"_sqlite3changegroup_output\"] = wasmExports[\"sqlite3changegroup_output\"])(a0, a1, a2);\n var _sqlite3changegroup_add_strm = Module[\"_sqlite3changegroup_add_strm\"] = (a0, a1, a2) => (_sqlite3changegroup_add_strm = Module[\"_sqlite3changegroup_add_strm\"] = wasmExports[\"sqlite3changegroup_add_strm\"])(a0, a1, a2);\n var _sqlite3changegroup_output_strm = Module[\"_sqlite3changegroup_output_strm\"] = (a0, a1, a2) => (_sqlite3changegroup_output_strm = Module[\"_sqlite3changegroup_output_strm\"] = wasmExports[\"sqlite3changegroup_output_strm\"])(a0, a1, a2);\n var _sqlite3changegroup_delete = Module[\"_sqlite3changegroup_delete\"] = (a0) => (_sqlite3changegroup_delete = Module[\"_sqlite3changegroup_delete\"] = wasmExports[\"sqlite3changegroup_delete\"])(a0);\n var _sqlite3changeset_concat = Module[\"_sqlite3changeset_concat\"] = (a0, a1, a2, a3, a4, a5) => (_sqlite3changeset_concat = Module[\"_sqlite3changeset_concat\"] = wasmExports[\"sqlite3changeset_concat\"])(a0, a1, a2, a3, a4, a5);\n var _sqlite3changeset_concat_strm = Module[\"_sqlite3changeset_concat_strm\"] = (a0, a1, a2, a3, a4, a5) => (_sqlite3changeset_concat_strm = Module[\"_sqlite3changeset_concat_strm\"] = wasmExports[\"sqlite3changeset_concat_strm\"])(a0, a1, a2, a3, a4, a5);\n var _sqlite3session_config = Module[\"_sqlite3session_config\"] = (a0, a1) => (_sqlite3session_config = Module[\"_sqlite3session_config\"] = wasmExports[\"sqlite3session_config\"])(a0, a1);\n var _sqlite3_sourceid = Module[\"_sqlite3_sourceid\"] = () => (_sqlite3_sourceid = Module[\"_sqlite3_sourceid\"] = wasmExports[\"sqlite3_sourceid\"])();\n var _sqlite3__wasm_pstack_ptr = Module[\"_sqlite3__wasm_pstack_ptr\"] = () => (_sqlite3__wasm_pstack_ptr = Module[\"_sqlite3__wasm_pstack_ptr\"] = wasmExports[\"sqlite3__wasm_pstack_ptr\"])();\n var _sqlite3__wasm_pstack_restore = Module[\"_sqlite3__wasm_pstack_restore\"] = (a0) => (_sqlite3__wasm_pstack_restore = Module[\"_sqlite3__wasm_pstack_restore\"] = wasmExports[\"sqlite3__wasm_pstack_restore\"])(a0);\n var _sqlite3__wasm_pstack_alloc = Module[\"_sqlite3__wasm_pstack_alloc\"] = (a0) => (_sqlite3__wasm_pstack_alloc = Module[\"_sqlite3__wasm_pstack_alloc\"] = wasmExports[\"sqlite3__wasm_pstack_alloc\"])(a0);\n var _sqlite3__wasm_pstack_remaining = Module[\"_sqlite3__wasm_pstack_remaining\"] = () => (_sqlite3__wasm_pstack_remaining = Module[\"_sqlite3__wasm_pstack_remaining\"] = wasmExports[\"sqlite3__wasm_pstack_remaining\"])();\n var _sqlite3__wasm_pstack_quota = Module[\"_sqlite3__wasm_pstack_quota\"] = () => (_sqlite3__wasm_pstack_quota = Module[\"_sqlite3__wasm_pstack_quota\"] = wasmExports[\"sqlite3__wasm_pstack_quota\"])();\n var _sqlite3__wasm_db_error = Module[\"_sqlite3__wasm_db_error\"] = (a0, a1, a2) => (_sqlite3__wasm_db_error = Module[\"_sqlite3__wasm_db_error\"] = wasmExports[\"sqlite3__wasm_db_error\"])(a0, a1, a2);\n var _sqlite3__wasm_test_struct = Module[\"_sqlite3__wasm_test_struct\"] = (a0) => (_sqlite3__wasm_test_struct = Module[\"_sqlite3__wasm_test_struct\"] = wasmExports[\"sqlite3__wasm_test_struct\"])(a0);\n var _sqlite3__wasm_enum_json = Module[\"_sqlite3__wasm_enum_json\"] = () => (_sqlite3__wasm_enum_json = Module[\"_sqlite3__wasm_enum_json\"] = wasmExports[\"sqlite3__wasm_enum_json\"])();\n var _sqlite3__wasm_vfs_unlink = Module[\"_sqlite3__wasm_vfs_unlink\"] = (a0, a1) => (_sqlite3__wasm_vfs_unlink = Module[\"_sqlite3__wasm_vfs_unlink\"] = wasmExports[\"sqlite3__wasm_vfs_unlink\"])(a0, a1);\n var _sqlite3__wasm_db_vfs = Module[\"_sqlite3__wasm_db_vfs\"] = (a0, a1) => (_sqlite3__wasm_db_vfs = Module[\"_sqlite3__wasm_db_vfs\"] = wasmExports[\"sqlite3__wasm_db_vfs\"])(a0, a1);\n var _sqlite3__wasm_db_reset = Module[\"_sqlite3__wasm_db_reset\"] = (a0) => (_sqlite3__wasm_db_reset = Module[\"_sqlite3__wasm_db_reset\"] = wasmExports[\"sqlite3__wasm_db_reset\"])(a0);\n var _sqlite3__wasm_db_export_chunked = Module[\"_sqlite3__wasm_db_export_chunked\"] = (a0, a1) => (_sqlite3__wasm_db_export_chunked = Module[\"_sqlite3__wasm_db_export_chunked\"] = wasmExports[\"sqlite3__wasm_db_export_chunked\"])(a0, a1);\n var _sqlite3__wasm_db_serialize = Module[\"_sqlite3__wasm_db_serialize\"] = (a0, a1, a2, a3, a4) => (_sqlite3__wasm_db_serialize = Module[\"_sqlite3__wasm_db_serialize\"] = wasmExports[\"sqlite3__wasm_db_serialize\"])(a0, a1, a2, a3, a4);\n var _sqlite3__wasm_vfs_create_file = Module[\"_sqlite3__wasm_vfs_create_file\"] = (a0, a1, a2, a3) => (_sqlite3__wasm_vfs_create_file = Module[\"_sqlite3__wasm_vfs_create_file\"] = wasmExports[\"sqlite3__wasm_vfs_create_file\"])(a0, a1, a2, a3);\n var _sqlite3__wasm_posix_create_file = Module[\"_sqlite3__wasm_posix_create_file\"] = (a0, a1, a2) => (_sqlite3__wasm_posix_create_file = Module[\"_sqlite3__wasm_posix_create_file\"] = wasmExports[\"sqlite3__wasm_posix_create_file\"])(a0, a1, a2);\n var _sqlite3__wasm_kvvfsMakeKeyOnPstack = Module[\"_sqlite3__wasm_kvvfsMakeKeyOnPstack\"] = (a0, a1) => (_sqlite3__wasm_kvvfsMakeKeyOnPstack = Module[\"_sqlite3__wasm_kvvfsMakeKeyOnPstack\"] = wasmExports[\"sqlite3__wasm_kvvfsMakeKeyOnPstack\"])(a0, a1);\n var _sqlite3__wasm_kvvfs_methods = Module[\"_sqlite3__wasm_kvvfs_methods\"] = () => (_sqlite3__wasm_kvvfs_methods = Module[\"_sqlite3__wasm_kvvfs_methods\"] = wasmExports[\"sqlite3__wasm_kvvfs_methods\"])();\n var _sqlite3__wasm_vtab_config = Module[\"_sqlite3__wasm_vtab_config\"] = (a0, a1, a2) => (_sqlite3__wasm_vtab_config = Module[\"_sqlite3__wasm_vtab_config\"] = wasmExports[\"sqlite3__wasm_vtab_config\"])(a0, a1, a2);\n var _sqlite3__wasm_db_config_ip = Module[\"_sqlite3__wasm_db_config_ip\"] = (a0, a1, a2, a3) => (_sqlite3__wasm_db_config_ip = Module[\"_sqlite3__wasm_db_config_ip\"] = wasmExports[\"sqlite3__wasm_db_config_ip\"])(a0, a1, a2, a3);\n var _sqlite3__wasm_db_config_pii = Module[\"_sqlite3__wasm_db_config_pii\"] = (a0, a1, a2, a3, a4) => (_sqlite3__wasm_db_config_pii = Module[\"_sqlite3__wasm_db_config_pii\"] = wasmExports[\"sqlite3__wasm_db_config_pii\"])(a0, a1, a2, a3, a4);\n var _sqlite3__wasm_db_config_s = Module[\"_sqlite3__wasm_db_config_s\"] = (a0, a1, a2) => (_sqlite3__wasm_db_config_s = Module[\"_sqlite3__wasm_db_config_s\"] = wasmExports[\"sqlite3__wasm_db_config_s\"])(a0, a1, a2);\n var _sqlite3__wasm_config_i = Module[\"_sqlite3__wasm_config_i\"] = (a0, a1) => (_sqlite3__wasm_config_i = Module[\"_sqlite3__wasm_config_i\"] = wasmExports[\"sqlite3__wasm_config_i\"])(a0, a1);\n var _sqlite3__wasm_config_ii = Module[\"_sqlite3__wasm_config_ii\"] = (a0, a1, a2) => (_sqlite3__wasm_config_ii = Module[\"_sqlite3__wasm_config_ii\"] = wasmExports[\"sqlite3__wasm_config_ii\"])(a0, a1, a2);\n var _sqlite3__wasm_config_j = Module[\"_sqlite3__wasm_config_j\"] = (a0, a1) => (_sqlite3__wasm_config_j = Module[\"_sqlite3__wasm_config_j\"] = wasmExports[\"sqlite3__wasm_config_j\"])(a0, a1);\n var _sqlite3__wasm_qfmt_token = Module[\"_sqlite3__wasm_qfmt_token\"] = (a0, a1) => (_sqlite3__wasm_qfmt_token = Module[\"_sqlite3__wasm_qfmt_token\"] = wasmExports[\"sqlite3__wasm_qfmt_token\"])(a0, a1);\n var _sqlite3__wasm_init_wasmfs = Module[\"_sqlite3__wasm_init_wasmfs\"] = (a0) => (_sqlite3__wasm_init_wasmfs = Module[\"_sqlite3__wasm_init_wasmfs\"] = wasmExports[\"sqlite3__wasm_init_wasmfs\"])(a0);\n var _sqlite3__wasm_test_intptr = Module[\"_sqlite3__wasm_test_intptr\"] = (a0) => (_sqlite3__wasm_test_intptr = Module[\"_sqlite3__wasm_test_intptr\"] = wasmExports[\"sqlite3__wasm_test_intptr\"])(a0);\n var _sqlite3__wasm_test_voidptr = Module[\"_sqlite3__wasm_test_voidptr\"] = (a0) => (_sqlite3__wasm_test_voidptr = Module[\"_sqlite3__wasm_test_voidptr\"] = wasmExports[\"sqlite3__wasm_test_voidptr\"])(a0);\n var _sqlite3__wasm_test_int64_max = Module[\"_sqlite3__wasm_test_int64_max\"] = () => (_sqlite3__wasm_test_int64_max = Module[\"_sqlite3__wasm_test_int64_max\"] = wasmExports[\"sqlite3__wasm_test_int64_max\"])();\n var _sqlite3__wasm_test_int64_min = Module[\"_sqlite3__wasm_test_int64_min\"] = () => (_sqlite3__wasm_test_int64_min = Module[\"_sqlite3__wasm_test_int64_min\"] = wasmExports[\"sqlite3__wasm_test_int64_min\"])();\n var _sqlite3__wasm_test_int64_times2 = Module[\"_sqlite3__wasm_test_int64_times2\"] = (a0) => (_sqlite3__wasm_test_int64_times2 = Module[\"_sqlite3__wasm_test_int64_times2\"] = wasmExports[\"sqlite3__wasm_test_int64_times2\"])(a0);\n var _sqlite3__wasm_test_int64_minmax = Module[\"_sqlite3__wasm_test_int64_minmax\"] = (a0, a1) => (_sqlite3__wasm_test_int64_minmax = Module[\"_sqlite3__wasm_test_int64_minmax\"] = wasmExports[\"sqlite3__wasm_test_int64_minmax\"])(a0, a1);\n var _sqlite3__wasm_test_int64ptr = Module[\"_sqlite3__wasm_test_int64ptr\"] = (a0) => (_sqlite3__wasm_test_int64ptr = Module[\"_sqlite3__wasm_test_int64ptr\"] = wasmExports[\"sqlite3__wasm_test_int64ptr\"])(a0);\n var _sqlite3__wasm_test_stack_overflow = Module[\"_sqlite3__wasm_test_stack_overflow\"] = (a0) => (_sqlite3__wasm_test_stack_overflow = Module[\"_sqlite3__wasm_test_stack_overflow\"] = wasmExports[\"sqlite3__wasm_test_stack_overflow\"])(a0);\n var _sqlite3__wasm_test_str_hello = Module[\"_sqlite3__wasm_test_str_hello\"] = (a0) => (_sqlite3__wasm_test_str_hello = Module[\"_sqlite3__wasm_test_str_hello\"] = wasmExports[\"sqlite3__wasm_test_str_hello\"])(a0);\n var _sqlite3__wasm_SQLTester_strglob = Module[\"_sqlite3__wasm_SQLTester_strglob\"] = (a0, a1) => (_sqlite3__wasm_SQLTester_strglob = Module[\"_sqlite3__wasm_SQLTester_strglob\"] = wasmExports[\"sqlite3__wasm_SQLTester_strglob\"])(a0, a1);\n var _malloc = Module[\"_malloc\"] = (a0) => (_malloc = Module[\"_malloc\"] = wasmExports[\"malloc\"])(a0);\n var _free = Module[\"_free\"] = (a0) => (_free = Module[\"_free\"] = wasmExports[\"free\"])(a0);\n var _realloc = Module[\"_realloc\"] = (a0, a1) => (_realloc = Module[\"_realloc\"] = wasmExports[\"realloc\"])(a0, a1);\n var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports[\"emscripten_builtin_memalign\"])(a0, a1);\n var __emscripten_stack_restore = (a0) => (__emscripten_stack_restore = wasmExports[\"_emscripten_stack_restore\"])(a0);\n var __emscripten_stack_alloc = (a0) => (__emscripten_stack_alloc = wasmExports[\"_emscripten_stack_alloc\"])(a0);\n var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports[\"emscripten_stack_get_current\"])();\n Module[\"wasmMemory\"] = wasmMemory;\n var calledRun;\n var calledPrerun;\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n };\n function run() {\n if (runDependencies > 0) return;\n if (!calledPrerun) {\n calledPrerun = 1;\n preRun();\n if (runDependencies > 0) return;\n }\n function doRun() {\n if (calledRun) return;\n calledRun = 1;\n Module[\"calledRun\"] = 1;\n if (ABORT) return;\n initRuntime();\n readyPromiseResolve(Module);\n Module[\"onRuntimeInitialized\"]?.();\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(() => {\n setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n doRun();\n }, 1);\n } else doRun();\n }\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) Module[\"preInit\"].pop()();\n }\n run();\n Module.runSQLite3PostLoadInit = function(EmscriptenModule) {\n globalThis.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(apiConfig = globalThis.sqlite3ApiConfig || sqlite3ApiBootstrap.defaultConfig) {\n if (sqlite3ApiBootstrap.sqlite3) {\n (sqlite3ApiBootstrap.sqlite3.config || console).warn(\"sqlite3ApiBootstrap() called multiple times.\", \"Config and external initializers are ignored on calls after the first.\");\n return sqlite3ApiBootstrap.sqlite3;\n }\n const config = Object.assign(Object.create(null), {\n exports: void 0,\n memory: void 0,\n bigIntEnabled: (() => {\n if (\"undefined\" !== typeof Module) {\n if (!!Module.HEAPU64) return true;\n }\n return !!globalThis.BigInt64Array;\n })(),\n debug: console.debug.bind(console),\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n log: console.log.bind(console),\n wasmfsOpfsDir: \"/opfs\",\n useStdAlloc: false\n }, apiConfig || {});\n Object.assign(config, {\n allocExportName: config.useStdAlloc ? \"malloc\" : \"sqlite3_malloc\",\n deallocExportName: config.useStdAlloc ? \"free\" : \"sqlite3_free\",\n reallocExportName: config.useStdAlloc ? \"realloc\" : \"sqlite3_realloc\"\n }, config);\n [\n \"exports\",\n \"memory\",\n \"wasmfsOpfsDir\"\n ].forEach((k) => {\n if (\"function\" === typeof config[k]) config[k] = config[k]();\n });\n delete globalThis.sqlite3ApiConfig;\n delete sqlite3ApiBootstrap.defaultConfig;\n const capi = Object.create(null);\n const wasm = Object.create(null);\n const __rcStr = (rc) => {\n return capi.sqlite3_js_rc_str && capi.sqlite3_js_rc_str(rc) || \"Unknown result code #\" + rc;\n };\n const __isInt = (n) => \"number\" === typeof n && n === (n | 0);\n class SQLite3Error extends Error {\n constructor(...args) {\n let rc;\n if (args.length) if (__isInt(args[0])) {\n rc = args[0];\n if (1 === args.length) super(__rcStr(args[0]));\n else {\n const rcStr = __rcStr(rc);\n if (\"object\" === typeof args[1]) super(rcStr, args[1]);\n else {\n args[0] = rcStr + \":\";\n super(args.join(\" \"));\n }\n }\n } else if (2 === args.length && \"object\" === typeof args[1]) super(...args);\n else super(args.join(\" \"));\n this.resultCode = rc || capi.SQLITE_ERROR;\n this.name = \"SQLite3Error\";\n }\n }\n SQLite3Error.toss = (...args) => {\n throw new SQLite3Error(...args);\n };\n const toss3 = SQLite3Error.toss;\n if (config.wasmfsOpfsDir && !/^\\/[^/]+$/.test(config.wasmfsOpfsDir)) toss3(\"config.wasmfsOpfsDir must be falsy or in the form '/dir-name'.\");\n const isInt32 = (n) => {\n return \"bigint\" !== typeof n && !!(n === (n | 0) && n <= 2147483647 && n >= -2147483648);\n };\n const bigIntFits64 = function f(b) {\n if (!f._max) {\n f._max = BigInt(\"0x7fffffffffffffff\");\n f._min = ~f._max;\n }\n return b >= f._min && b <= f._max;\n };\n const bigIntFits32 = (b) => b >= -2147483647n - 1n && b <= 2147483647n;\n const bigIntFitsDouble = function f(b) {\n if (!f._min) {\n f._min = Number.MIN_SAFE_INTEGER;\n f._max = Number.MAX_SAFE_INTEGER;\n }\n return b >= f._min && b <= f._max;\n };\n const isTypedArray = (v$1) => {\n return v$1 && v$1.constructor && isInt32(v$1.constructor.BYTES_PER_ELEMENT) ? v$1 : false;\n };\n const __SAB = \"undefined\" === typeof SharedArrayBuffer ? function() {} : SharedArrayBuffer;\n const isSharedTypedArray = (aTypedArray) => aTypedArray.buffer instanceof __SAB;\n const typedArrayPart = (aTypedArray, begin, end) => {\n return isSharedTypedArray(aTypedArray) ? aTypedArray.slice(begin, end) : aTypedArray.subarray(begin, end);\n };\n const isBindableTypedArray = (v$1) => {\n return v$1 && (v$1 instanceof Uint8Array || v$1 instanceof Int8Array || v$1 instanceof ArrayBuffer);\n };\n const isSQLableTypedArray = (v$1) => {\n return v$1 && (v$1 instanceof Uint8Array || v$1 instanceof Int8Array || v$1 instanceof ArrayBuffer);\n };\n const affirmBindableTypedArray = (v$1) => {\n return isBindableTypedArray(v$1) || toss3(\"Value is not of a supported TypedArray type.\");\n };\n const utf8Decoder = new TextDecoder(\"utf-8\");\n const typedArrayToString = function(typedArray, begin, end) {\n return utf8Decoder.decode(typedArrayPart(typedArray, begin, end));\n };\n const flexibleString = function(v$1) {\n if (isSQLableTypedArray(v$1)) return typedArrayToString(v$1 instanceof ArrayBuffer ? new Uint8Array(v$1) : v$1);\n else if (Array.isArray(v$1)) return v$1.join(\"\");\n else if (wasm.isPtr(v$1)) v$1 = wasm.cstrToJs(v$1);\n return v$1;\n };\n class WasmAllocError extends Error {\n constructor(...args) {\n if (2 === args.length && \"object\" === typeof args[1]) super(...args);\n else if (args.length) super(args.join(\" \"));\n else super(\"Allocation failed.\");\n this.resultCode = capi.SQLITE_NOMEM;\n this.name = \"WasmAllocError\";\n }\n }\n WasmAllocError.toss = (...args) => {\n throw new WasmAllocError(...args);\n };\n Object.assign(capi, {\n sqlite3_bind_blob: void 0,\n sqlite3_bind_text: void 0,\n sqlite3_create_function_v2: (pDb$1, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy) => {},\n sqlite3_create_function: (pDb$1, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal) => {},\n sqlite3_create_window_function: (pDb$1, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy) => {},\n sqlite3_prepare_v3: (dbPtr, sql, sqlByteLen, prepFlags, stmtPtrPtr, strPtrPtr) => {},\n sqlite3_prepare_v2: (dbPtr, sql, sqlByteLen, stmtPtrPtr, strPtrPtr) => {},\n sqlite3_exec: (pDb$1, sql, callback, pVoid, pErrMsg) => {},\n sqlite3_randomness: (n, outPtr) => {}\n });\n const util = {\n affirmBindableTypedArray,\n flexibleString,\n bigIntFits32,\n bigIntFits64,\n bigIntFitsDouble,\n isBindableTypedArray,\n isInt32,\n isSQLableTypedArray,\n isTypedArray,\n typedArrayToString,\n isUIThread: () => globalThis.window === globalThis && !!globalThis.document,\n isSharedTypedArray,\n toss: function(...args) {\n throw new Error(args.join(\" \"));\n },\n toss3,\n typedArrayPart,\n affirmDbHeader: function(bytes) {\n if (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n const header = \"SQLite format 3\";\n if (15 > bytes.byteLength) toss3(\"Input does not contain an SQLite3 database header.\");\n for (let i = 0; i < 15; ++i) if (header.charCodeAt(i) !== bytes[i]) toss3(\"Input does not contain an SQLite3 database header.\");\n },\n affirmIsDb: function(bytes) {\n if (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n const n = bytes.byteLength;\n if (n < 512 || n % 512 !== 0) toss3(\"Byte array size\", n, \"is invalid for an SQLite3 db.\");\n util.affirmDbHeader(bytes);\n }\n };\n Object.assign(wasm, {\n ptrSizeof: config.wasmPtrSizeof || 4,\n ptrIR: config.wasmPtrIR || \"i32\",\n bigIntEnabled: !!config.bigIntEnabled,\n exports: config.exports || toss3(\"Missing API config.exports (WASM module exports).\"),\n memory: config.memory || config.exports[\"memory\"] || toss3(\"API config object requires a WebAssembly.Memory object\", \"in either config.exports.memory (exported)\", \"or config.memory (imported).\"),\n alloc: void 0,\n realloc: void 0,\n dealloc: void 0\n });\n wasm.allocFromTypedArray = function(srcTypedArray) {\n if (srcTypedArray instanceof ArrayBuffer) srcTypedArray = new Uint8Array(srcTypedArray);\n affirmBindableTypedArray(srcTypedArray);\n const pRet = wasm.alloc(srcTypedArray.byteLength || 1);\n wasm.heapForSize(srcTypedArray.constructor).set(srcTypedArray.byteLength ? srcTypedArray : [0], pRet);\n return pRet;\n };\n {\n const keyAlloc = config.allocExportName, keyDealloc = config.deallocExportName, keyRealloc = config.reallocExportName;\n for (const key of [\n keyAlloc,\n keyDealloc,\n keyRealloc\n ]) if (!(wasm.exports[key] instanceof Function)) toss3(\"Missing required exports[\", key, \"] function.\");\n wasm.alloc = function f(n) {\n return f.impl(n) || WasmAllocError.toss(\"Failed to allocate\", n, \" bytes.\");\n };\n wasm.alloc.impl = wasm.exports[keyAlloc];\n wasm.realloc = function f(m, n) {\n const m2 = f.impl(m, n);\n return n ? m2 || WasmAllocError.toss(\"Failed to reallocate\", n, \" bytes.\") : 0;\n };\n wasm.realloc.impl = wasm.exports[keyRealloc];\n wasm.dealloc = wasm.exports[keyDealloc];\n }\n wasm.compileOptionUsed = function f(optName) {\n if (!arguments.length) {\n if (f._result) return f._result;\n else if (!f._opt) {\n f._rx = /^([^=]+)=(.+)/;\n f._rxInt = /^-?\\d+$/;\n f._opt = function(opt, rv) {\n const m = f._rx.exec(opt);\n rv[0] = m ? m[1] : opt;\n rv[1] = m ? f._rxInt.test(m[2]) ? +m[2] : m[2] : true;\n };\n }\n const rc = {}, ov = [0, 0];\n let i = 0, k;\n while (k = capi.sqlite3_compileoption_get(i++)) {\n f._opt(k, ov);\n rc[ov[0]] = ov[1];\n }\n return f._result = rc;\n } else if (Array.isArray(optName)) {\n const rc = {};\n optName.forEach((v$1) => {\n rc[v$1] = capi.sqlite3_compileoption_used(v$1);\n });\n return rc;\n } else if (\"object\" === typeof optName) {\n Object.keys(optName).forEach((k) => {\n optName[k] = capi.sqlite3_compileoption_used(k);\n });\n return optName;\n }\n return \"string\" === typeof optName ? !!capi.sqlite3_compileoption_used(optName) : false;\n };\n wasm.pstack = Object.assign(Object.create(null), {\n restore: wasm.exports.sqlite3__wasm_pstack_restore,\n alloc: function(n) {\n if (\"string\" === typeof n && !(n = wasm.sizeofIR(n))) WasmAllocError.toss(\"Invalid value for pstack.alloc(\", arguments[0], \")\");\n return wasm.exports.sqlite3__wasm_pstack_alloc(n) || WasmAllocError.toss(\"Could not allocate\", n, \"bytes from the pstack.\");\n },\n allocChunks: function(n, sz) {\n if (\"string\" === typeof sz && !(sz = wasm.sizeofIR(sz))) WasmAllocError.toss(\"Invalid size value for allocChunks(\", arguments[1], \")\");\n const mem = wasm.pstack.alloc(n * sz);\n const rc = [];\n let i = 0, offset = 0;\n for (; i < n; ++i, offset += sz) rc.push(mem + offset);\n return rc;\n },\n allocPtr: (n = 1, safePtrSize = true) => {\n return 1 === n ? wasm.pstack.alloc(safePtrSize ? 8 : wasm.ptrSizeof) : wasm.pstack.allocChunks(n, safePtrSize ? 8 : wasm.ptrSizeof);\n },\n call: function(f) {\n const stackPos = wasm.pstack.pointer;\n try {\n return f(sqlite3);\n } finally {\n wasm.pstack.restore(stackPos);\n }\n }\n });\n Object.defineProperties(wasm.pstack, {\n pointer: {\n configurable: false,\n iterable: true,\n writeable: false,\n get: wasm.exports.sqlite3__wasm_pstack_ptr\n },\n quota: {\n configurable: false,\n iterable: true,\n writeable: false,\n get: wasm.exports.sqlite3__wasm_pstack_quota\n },\n remaining: {\n configurable: false,\n iterable: true,\n writeable: false,\n get: wasm.exports.sqlite3__wasm_pstack_remaining\n }\n });\n capi.sqlite3_randomness = (...args) => {\n if (1 === args.length && util.isTypedArray(args[0]) && 1 === args[0].BYTES_PER_ELEMENT) {\n const ta = args[0];\n if (0 === ta.byteLength) {\n wasm.exports.sqlite3_randomness(0, 0);\n return ta;\n }\n const stack = wasm.pstack.pointer;\n try {\n let n = ta.byteLength, offset = 0;\n const r = wasm.exports.sqlite3_randomness;\n const heap = wasm.heap8u();\n const nAlloc = n < 512 ? n : 512;\n const ptr = wasm.pstack.alloc(nAlloc);\n do {\n const j = n > nAlloc ? nAlloc : n;\n r(j, ptr);\n ta.set(typedArrayPart(heap, ptr, ptr + j), offset);\n n -= j;\n offset += j;\n } while (n > 0);\n } catch (e) {\n console.error(\"Highly unexpected (and ignored!) exception in sqlite3_randomness():\", e);\n } finally {\n wasm.pstack.restore(stack);\n }\n return ta;\n }\n wasm.exports.sqlite3_randomness(...args);\n };\n let __wasmfsOpfsDir = void 0;\n capi.sqlite3_wasmfs_opfs_dir = function() {\n if (void 0 !== __wasmfsOpfsDir) return __wasmfsOpfsDir;\n const pdir = config.wasmfsOpfsDir;\n if (!pdir || !globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle) return __wasmfsOpfsDir = \"\";\n try {\n if (pdir && 0 === wasm.xCallWrapped(\"sqlite3__wasm_init_wasmfs\", \"i32\", [\"string\"], pdir)) return __wasmfsOpfsDir = pdir;\n else return __wasmfsOpfsDir = \"\";\n } catch (e) {\n return __wasmfsOpfsDir = \"\";\n }\n };\n capi.sqlite3_wasmfs_filename_is_persistent = function(name) {\n const p = capi.sqlite3_wasmfs_opfs_dir();\n return p && name ? name.startsWith(p + \"/\") : false;\n };\n capi.sqlite3_js_db_uses_vfs = function(pDb$1, vfsName, dbName = 0) {\n try {\n const pK = capi.sqlite3_vfs_find(vfsName);\n if (!pK) return false;\n else if (!pDb$1) return pK === capi.sqlite3_vfs_find(0) ? pK : false;\n else return pK === capi.sqlite3_js_db_vfs(pDb$1, dbName) ? pK : false;\n } catch (e) {\n return false;\n }\n };\n capi.sqlite3_js_vfs_list = function() {\n const rc = [];\n let pVfs = capi.sqlite3_vfs_find(0);\n while (pVfs) {\n const oVfs = new capi.sqlite3_vfs(pVfs);\n rc.push(wasm.cstrToJs(oVfs.$zName));\n pVfs = oVfs.$pNext;\n oVfs.dispose();\n }\n return rc;\n };\n capi.sqlite3_js_db_export = function(pDb$1, schema = 0) {\n pDb$1 = wasm.xWrap.testConvertArg(\"sqlite3*\", pDb$1);\n if (!pDb$1) toss3(\"Invalid sqlite3* argument.\");\n if (!wasm.bigIntEnabled) toss3(\"BigInt64 support is not enabled.\");\n const scope = wasm.scopedAllocPush();\n let pOut;\n try {\n const pSize = wasm.scopedAlloc(8 + wasm.ptrSizeof);\n const ppOut = pSize + 8;\n const zSchema = schema ? wasm.isPtr(schema) ? schema : wasm.scopedAllocCString(\"\" + schema) : 0;\n let rc = wasm.exports.sqlite3__wasm_db_serialize(pDb$1, zSchema, ppOut, pSize, 0);\n if (rc) toss3(\"Database serialization failed with code\", sqlite3.capi.sqlite3_js_rc_str(rc));\n pOut = wasm.peekPtr(ppOut);\n const nOut = wasm.peek(pSize, \"i64\");\n rc = nOut ? wasm.heap8u().slice(pOut, pOut + Number(nOut)) : new Uint8Array();\n return rc;\n } finally {\n if (pOut) wasm.exports.sqlite3_free(pOut);\n wasm.scopedAllocPop(scope);\n }\n };\n capi.sqlite3_js_db_vfs = (dbPointer, dbName = 0) => util.sqlite3__wasm_db_vfs(dbPointer, dbName);\n capi.sqlite3_js_aggregate_context = (pCtx, n) => {\n return capi.sqlite3_aggregate_context(pCtx, n) || (n ? WasmAllocError.toss(\"Cannot allocate\", n, \"bytes for sqlite3_aggregate_context()\") : 0);\n };\n capi.sqlite3_js_posix_create_file = function(filename, data, dataLen) {\n let pData;\n if (data && wasm.isPtr(data)) pData = data;\n else if (data instanceof ArrayBuffer || data instanceof Uint8Array) {\n pData = wasm.allocFromTypedArray(data);\n if (arguments.length < 3 || !util.isInt32(dataLen) || dataLen < 0) dataLen = data.byteLength;\n } else SQLite3Error.toss(\"Invalid 2nd argument for sqlite3_js_posix_create_file().\");\n try {\n if (!util.isInt32(dataLen) || dataLen < 0) SQLite3Error.toss(\"Invalid 3rd argument for sqlite3_js_posix_create_file().\");\n const rc = util.sqlite3__wasm_posix_create_file(filename, pData, dataLen);\n if (rc) SQLite3Error.toss(\"Creation of file failed with sqlite3 result code\", capi.sqlite3_js_rc_str(rc));\n } finally {\n wasm.dealloc(pData);\n }\n };\n capi.sqlite3_js_vfs_create_file = function(vfs, filename, data, dataLen) {\n config.warn(\"sqlite3_js_vfs_create_file() is deprecated and\", \"should be avoided because it can lead to C-level crashes.\", \"See its documentation for alternative options.\");\n let pData;\n if (data) {\n if (wasm.isPtr(data)) pData = data;\n else if (data instanceof ArrayBuffer) data = new Uint8Array(data);\n if (data instanceof Uint8Array) {\n pData = wasm.allocFromTypedArray(data);\n if (arguments.length < 4 || !util.isInt32(dataLen) || dataLen < 0) dataLen = data.byteLength;\n } else SQLite3Error.toss(\"Invalid 3rd argument type for sqlite3_js_vfs_create_file().\");\n } else pData = 0;\n if (!util.isInt32(dataLen) || dataLen < 0) {\n wasm.dealloc(pData);\n SQLite3Error.toss(\"Invalid 4th argument for sqlite3_js_vfs_create_file().\");\n }\n try {\n const rc = util.sqlite3__wasm_vfs_create_file(vfs, filename, pData, dataLen);\n if (rc) SQLite3Error.toss(\"Creation of file failed with sqlite3 result code\", capi.sqlite3_js_rc_str(rc));\n } finally {\n wasm.dealloc(pData);\n }\n };\n capi.sqlite3_js_sql_to_string = (sql) => {\n if (\"string\" === typeof sql) return sql;\n const x = flexibleString(v);\n return x === v ? void 0 : x;\n };\n if (util.isUIThread()) {\n const __kvvfsInfo = function(which) {\n const rc = Object.create(null);\n rc.prefix = \"kvvfs-\" + which;\n rc.stores = [];\n if (\"session\" === which || \"\" === which) rc.stores.push(globalThis.sessionStorage);\n if (\"local\" === which || \"\" === which) rc.stores.push(globalThis.localStorage);\n return rc;\n };\n capi.sqlite3_js_kvvfs_clear = function(which = \"\") {\n let rc = 0;\n const kvinfo = __kvvfsInfo(which);\n kvinfo.stores.forEach((s) => {\n const toRm = [];\n let i;\n for (i = 0; i < s.length; ++i) {\n const k = s.key(i);\n if (k.startsWith(kvinfo.prefix)) toRm.push(k);\n }\n toRm.forEach((kk) => s.removeItem(kk));\n rc += toRm.length;\n });\n return rc;\n };\n capi.sqlite3_js_kvvfs_size = function(which = \"\") {\n let sz = 0;\n const kvinfo = __kvvfsInfo(which);\n kvinfo.stores.forEach((s) => {\n let i;\n for (i = 0; i < s.length; ++i) {\n const k = s.key(i);\n if (k.startsWith(kvinfo.prefix)) {\n sz += k.length;\n sz += s.getItem(k).length;\n }\n }\n });\n return sz * 2;\n };\n }\n capi.sqlite3_db_config = function(pDb$1, op, ...args) {\n switch (op) {\n case capi.SQLITE_DBCONFIG_ENABLE_FKEY:\n case capi.SQLITE_DBCONFIG_ENABLE_TRIGGER:\n case capi.SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER:\n case capi.SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION:\n case capi.SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE:\n case capi.SQLITE_DBCONFIG_ENABLE_QPSG:\n case capi.SQLITE_DBCONFIG_TRIGGER_EQP:\n case capi.SQLITE_DBCONFIG_RESET_DATABASE:\n case capi.SQLITE_DBCONFIG_DEFENSIVE:\n case capi.SQLITE_DBCONFIG_WRITABLE_SCHEMA:\n case capi.SQLITE_DBCONFIG_LEGACY_ALTER_TABLE:\n case capi.SQLITE_DBCONFIG_DQS_DML:\n case capi.SQLITE_DBCONFIG_DQS_DDL:\n case capi.SQLITE_DBCONFIG_ENABLE_VIEW:\n case capi.SQLITE_DBCONFIG_LEGACY_FILE_FORMAT:\n case capi.SQLITE_DBCONFIG_TRUSTED_SCHEMA:\n case capi.SQLITE_DBCONFIG_STMT_SCANSTATUS:\n case capi.SQLITE_DBCONFIG_REVERSE_SCANORDER:\n case capi.SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE:\n case capi.SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE:\n case capi.SQLITE_DBCONFIG_ENABLE_COMMENTS:\n if (!this.ip) this.ip = wasm.xWrap(\"sqlite3__wasm_db_config_ip\", \"int\", [\n \"sqlite3*\",\n \"int\",\n \"int\",\n \"*\"\n ]);\n return this.ip(pDb$1, op, args[0], args[1] || 0);\n case capi.SQLITE_DBCONFIG_LOOKASIDE:\n if (!this.pii) this.pii = wasm.xWrap(\"sqlite3__wasm_db_config_pii\", \"int\", [\n \"sqlite3*\",\n \"int\",\n \"*\",\n \"int\",\n \"int\"\n ]);\n return this.pii(pDb$1, op, args[0], args[1], args[2]);\n case capi.SQLITE_DBCONFIG_MAINDBNAME:\n if (!this.s) this.s = wasm.xWrap(\"sqlite3__wasm_db_config_s\", \"int\", [\n \"sqlite3*\",\n \"int\",\n \"string:static\"\n ]);\n return this.s(pDb$1, op, args[0]);\n default: return capi.SQLITE_MISUSE;\n }\n }.bind(Object.create(null));\n capi.sqlite3_value_to_js = function(pVal, throwIfCannotConvert = true) {\n let arg;\n const valType = capi.sqlite3_value_type(pVal);\n switch (valType) {\n case capi.SQLITE_INTEGER:\n if (wasm.bigIntEnabled) {\n arg = capi.sqlite3_value_int64(pVal);\n if (util.bigIntFitsDouble(arg)) arg = Number(arg);\n } else arg = capi.sqlite3_value_double(pVal);\n break;\n case capi.SQLITE_FLOAT:\n arg = capi.sqlite3_value_double(pVal);\n break;\n case capi.SQLITE_TEXT:\n arg = capi.sqlite3_value_text(pVal);\n break;\n case capi.SQLITE_BLOB: {\n const n = capi.sqlite3_value_bytes(pVal);\n const pBlob = capi.sqlite3_value_blob(pVal);\n if (n && !pBlob) sqlite3.WasmAllocError.toss(\"Cannot allocate memory for blob argument of\", n, \"byte(s)\");\n arg = n ? wasm.heap8u().slice(pBlob, pBlob + Number(n)) : null;\n break;\n }\n case capi.SQLITE_NULL:\n arg = null;\n break;\n default:\n if (throwIfCannotConvert) toss3(capi.SQLITE_MISMATCH, \"Unhandled sqlite3_value_type():\", valType);\n arg = void 0;\n }\n return arg;\n };\n capi.sqlite3_values_to_js = function(argc, pArgv, throwIfCannotConvert = true) {\n let i;\n const tgt = [];\n for (i = 0; i < argc; ++i) tgt.push(capi.sqlite3_value_to_js(wasm.peekPtr(pArgv + wasm.ptrSizeof * i), throwIfCannotConvert));\n return tgt;\n };\n capi.sqlite3_result_error_js = function(pCtx, e) {\n if (e instanceof WasmAllocError) capi.sqlite3_result_error_nomem(pCtx);\n else capi.sqlite3_result_error(pCtx, \"\" + e, -1);\n };\n capi.sqlite3_result_js = function(pCtx, val) {\n if (val instanceof Error) {\n capi.sqlite3_result_error_js(pCtx, val);\n return;\n }\n try {\n switch (typeof val) {\n case \"undefined\": break;\n case \"boolean\":\n capi.sqlite3_result_int(pCtx, val ? 1 : 0);\n break;\n case \"bigint\":\n if (util.bigIntFits32(val)) capi.sqlite3_result_int(pCtx, Number(val));\n else if (util.bigIntFitsDouble(val)) capi.sqlite3_result_double(pCtx, Number(val));\n else if (wasm.bigIntEnabled) if (util.bigIntFits64(val)) capi.sqlite3_result_int64(pCtx, val);\n else toss3(\"BigInt value\", val.toString(), \"is too BigInt for int64.\");\n else toss3(\"BigInt value\", val.toString(), \"is too BigInt.\");\n break;\n case \"number\": {\n let f;\n if (util.isInt32(val)) f = capi.sqlite3_result_int;\n else if (wasm.bigIntEnabled && Number.isInteger(val) && util.bigIntFits64(BigInt(val))) f = capi.sqlite3_result_int64;\n else f = capi.sqlite3_result_double;\n f(pCtx, val);\n break;\n }\n case \"string\": {\n const [p, n] = wasm.allocCString(val, true);\n capi.sqlite3_result_text(pCtx, p, n, capi.SQLITE_WASM_DEALLOC);\n break;\n }\n case \"object\": if (null === val) {\n capi.sqlite3_result_null(pCtx);\n break;\n } else if (util.isBindableTypedArray(val)) {\n const pBlob = wasm.allocFromTypedArray(val);\n capi.sqlite3_result_blob(pCtx, pBlob, val.byteLength, capi.SQLITE_WASM_DEALLOC);\n break;\n }\n default: toss3(\"Don't not how to handle this UDF result value:\", typeof val, val);\n }\n } catch (e) {\n capi.sqlite3_result_error_js(pCtx, e);\n }\n };\n capi.sqlite3_column_js = function(pStmt, iCol, throwIfCannotConvert = true) {\n const v$1 = capi.sqlite3_column_value(pStmt, iCol);\n return 0 === v$1 ? void 0 : capi.sqlite3_value_to_js(v$1, throwIfCannotConvert);\n };\n const __newOldValue = function(pObj, iCol, impl) {\n impl = capi[impl];\n if (!this.ptr) this.ptr = wasm.allocPtr();\n else wasm.pokePtr(this.ptr, 0);\n const rc = impl(pObj, iCol, this.ptr);\n if (rc) return SQLite3Error.toss(rc, arguments[2] + \"() failed with code \" + rc);\n const pv = wasm.peekPtr(this.ptr);\n return pv ? capi.sqlite3_value_to_js(pv, true) : void 0;\n }.bind(Object.create(null));\n capi.sqlite3_preupdate_new_js = (pDb$1, iCol) => __newOldValue(pDb$1, iCol, \"sqlite3_preupdate_new\");\n capi.sqlite3_preupdate_old_js = (pDb$1, iCol) => __newOldValue(pDb$1, iCol, \"sqlite3_preupdate_old\");\n capi.sqlite3changeset_new_js = (pChangesetIter, iCol) => __newOldValue(pChangesetIter, iCol, \"sqlite3changeset_new\");\n capi.sqlite3changeset_old_js = (pChangesetIter, iCol) => __newOldValue(pChangesetIter, iCol, \"sqlite3changeset_old\");\n const sqlite3 = {\n WasmAllocError,\n SQLite3Error,\n capi,\n util,\n wasm,\n config,\n version: Object.create(null),\n client: void 0,\n asyncPostInit: async function ff() {\n if (ff.isReady instanceof Promise) return ff.isReady;\n let lia = sqlite3ApiBootstrap.initializersAsync;\n delete sqlite3ApiBootstrap.initializersAsync;\n const postInit = async () => {\n if (!sqlite3.__isUnderTest) {\n delete sqlite3.util;\n delete sqlite3.StructBinder;\n }\n return sqlite3;\n };\n const catcher = (e) => {\n config.error(\"an async sqlite3 initializer failed:\", e);\n throw e;\n };\n if (!lia || !lia.length) return ff.isReady = postInit().catch(catcher);\n lia = lia.map((f) => {\n return f instanceof Function ? async (x) => f(sqlite3) : f;\n });\n lia.push(postInit);\n let p = Promise.resolve(sqlite3);\n while (lia.length) p = p.then(lia.shift());\n return ff.isReady = p.catch(catcher);\n },\n scriptInfo: void 0\n };\n try {\n sqlite3ApiBootstrap.initializers.forEach((f) => {\n f(sqlite3);\n });\n } catch (e) {\n console.error(\"sqlite3 bootstrap initializer threw:\", e);\n throw e;\n }\n delete sqlite3ApiBootstrap.initializers;\n sqlite3ApiBootstrap.sqlite3 = sqlite3;\n return sqlite3;\n };\n globalThis.sqlite3ApiBootstrap.initializers = [];\n globalThis.sqlite3ApiBootstrap.initializersAsync = [];\n globalThis.sqlite3ApiBootstrap.defaultConfig = Object.create(null);\n globalThis.sqlite3ApiBootstrap.sqlite3 = void 0;\n globalThis.WhWasmUtilInstaller = function(target) {\n if (void 0 === target.bigIntEnabled) target.bigIntEnabled = !!globalThis[\"BigInt64Array\"];\n const toss = (...args) => {\n throw new Error(args.join(\" \"));\n };\n if (!target.exports) Object.defineProperty(target, \"exports\", {\n enumerable: true,\n configurable: true,\n get: () => target.instance && target.instance.exports\n });\n const ptrIR = target.pointerIR || \"i32\";\n const ptrSizeof = target.ptrSizeof = \"i32\" === ptrIR ? 4 : \"i64\" === ptrIR ? 8 : toss(\"Unhandled ptrSizeof:\", ptrIR);\n const cache = Object.create(null);\n cache.heapSize = 0;\n cache.memory = null;\n cache.freeFuncIndexes = [];\n cache.scopedAlloc = [];\n cache.utf8Decoder = new TextDecoder();\n cache.utf8Encoder = new TextEncoder(\"utf-8\");\n target.sizeofIR = (n) => {\n switch (n) {\n case \"i8\": return 1;\n case \"i16\": return 2;\n case \"i32\":\n case \"f32\":\n case \"float\": return 4;\n case \"i64\":\n case \"f64\":\n case \"double\": return 8;\n case \"*\": return ptrSizeof;\n default: return (\"\" + n).endsWith(\"*\") ? ptrSizeof : void 0;\n }\n };\n const heapWrappers = function() {\n if (!cache.memory) cache.memory = target.memory instanceof WebAssembly.Memory ? target.memory : target.exports.memory;\n else if (cache.heapSize === cache.memory.buffer.byteLength) return cache;\n const b = cache.memory.buffer;\n cache.HEAP8 = new Int8Array(b);\n cache.HEAP8U = new Uint8Array(b);\n cache.HEAP16 = new Int16Array(b);\n cache.HEAP16U = new Uint16Array(b);\n cache.HEAP32 = new Int32Array(b);\n cache.HEAP32U = new Uint32Array(b);\n if (target.bigIntEnabled) {\n cache.HEAP64 = new BigInt64Array(b);\n cache.HEAP64U = new BigUint64Array(b);\n }\n cache.HEAP32F = new Float32Array(b);\n cache.HEAP64F = new Float64Array(b);\n cache.heapSize = b.byteLength;\n return cache;\n };\n target.heap8 = () => heapWrappers().HEAP8;\n target.heap8u = () => heapWrappers().HEAP8U;\n target.heap16 = () => heapWrappers().HEAP16;\n target.heap16u = () => heapWrappers().HEAP16U;\n target.heap32 = () => heapWrappers().HEAP32;\n target.heap32u = () => heapWrappers().HEAP32U;\n target.heapForSize = function(n, unsigned = true) {\n const c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n switch (n) {\n case Int8Array: return c.HEAP8;\n case Uint8Array: return c.HEAP8U;\n case Int16Array: return c.HEAP16;\n case Uint16Array: return c.HEAP16U;\n case Int32Array: return c.HEAP32;\n case Uint32Array: return c.HEAP32U;\n case 8: return unsigned ? c.HEAP8U : c.HEAP8;\n case 16: return unsigned ? c.HEAP16U : c.HEAP16;\n case 32: return unsigned ? c.HEAP32U : c.HEAP32;\n case 64:\n if (c.HEAP64) return unsigned ? c.HEAP64U : c.HEAP64;\n break;\n default: if (target.bigIntEnabled) {\n if (n === globalThis[\"BigUint64Array\"]) return c.HEAP64U;\n else if (n === globalThis[\"BigInt64Array\"]) return c.HEAP64;\n break;\n }\n }\n toss(\"Invalid heapForSize() size: expecting 8, 16, 32,\", \"or (if BigInt is enabled) 64.\");\n };\n target.functionTable = function() {\n return target.exports.__indirect_function_table;\n };\n target.functionEntry = function(fptr) {\n const ft = target.functionTable();\n return fptr < ft.length ? ft.get(fptr) : void 0;\n };\n target.jsFuncToWasm = function f(func, sig) {\n if (!f._) f._ = {\n sigTypes: Object.assign(Object.create(null), {\n i: \"i32\",\n p: \"i32\",\n P: \"i32\",\n s: \"i32\",\n j: \"i64\",\n f: \"f32\",\n d: \"f64\"\n }),\n typeCodes: Object.assign(Object.create(null), {\n f64: 124,\n f32: 125,\n i64: 126,\n i32: 127\n }),\n uleb128Encode: function(tgt, method, n) {\n if (n < 128) tgt[method](n);\n else tgt[method](n % 128 | 128, n >> 7);\n },\n rxJSig: /^(\\w)\\((\\w*)\\)$/,\n sigParams: function(sig$1) {\n const m = f._.rxJSig.exec(sig$1);\n return m ? m[2] : sig$1.substr(1);\n },\n letterType: (x) => f._.sigTypes[x] || toss(\"Invalid signature letter:\", x),\n pushSigType: (dest, letter) => dest.push(f._.typeCodes[f._.letterType(letter)])\n };\n if (\"string\" === typeof func) {\n const x = sig;\n sig = func;\n func = x;\n }\n const sigParams = f._.sigParams(sig);\n const wasmCode = [1, 96];\n f._.uleb128Encode(wasmCode, \"push\", sigParams.length);\n for (const x of sigParams) f._.pushSigType(wasmCode, x);\n if (\"v\" === sig[0]) wasmCode.push(0);\n else {\n wasmCode.push(1);\n f._.pushSigType(wasmCode, sig[0]);\n }\n f._.uleb128Encode(wasmCode, \"unshift\", wasmCode.length);\n wasmCode.unshift(0, 97, 115, 109, 1, 0, 0, 0, 1);\n wasmCode.push(2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0);\n return new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array(wasmCode)), { e: { f: func } }).exports[\"f\"];\n };\n const __installFunction = function f(func, sig, scoped) {\n if (scoped && !cache.scopedAlloc.length) toss(\"No scopedAllocPush() scope is active.\");\n if (\"string\" === typeof func) {\n const x = sig;\n sig = func;\n func = x;\n }\n if (\"string\" !== typeof sig || !(func instanceof Function)) toss(\"Invalid arguments: expecting (function,signature) or (signature,function).\");\n const ft = target.functionTable();\n const oldLen = ft.length;\n let ptr;\n while (cache.freeFuncIndexes.length) {\n ptr = cache.freeFuncIndexes.pop();\n if (ft.get(ptr)) {\n ptr = null;\n continue;\n } else break;\n }\n if (!ptr) {\n ptr = oldLen;\n ft.grow(1);\n }\n try {\n ft.set(ptr, func);\n if (scoped) cache.scopedAlloc[cache.scopedAlloc.length - 1].push(ptr);\n return ptr;\n } catch (e) {\n if (!(e instanceof TypeError)) {\n if (ptr === oldLen) cache.freeFuncIndexes.push(oldLen);\n throw e;\n }\n }\n try {\n const fptr = target.jsFuncToWasm(func, sig);\n ft.set(ptr, fptr);\n if (scoped) cache.scopedAlloc[cache.scopedAlloc.length - 1].push(ptr);\n } catch (e) {\n if (ptr === oldLen) cache.freeFuncIndexes.push(oldLen);\n throw e;\n }\n return ptr;\n };\n target.installFunction = (func, sig) => __installFunction(func, sig, false);\n target.scopedInstallFunction = (func, sig) => __installFunction(func, sig, true);\n target.uninstallFunction = function(ptr) {\n if (!ptr && 0 !== ptr) return void 0;\n const fi = cache.freeFuncIndexes;\n const ft = target.functionTable();\n fi.push(ptr);\n const rc = ft.get(ptr);\n ft.set(ptr, null);\n return rc;\n };\n target.peek = function f(ptr, type = \"i8\") {\n if (type.endsWith(\"*\")) type = ptrIR;\n const c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n const list = Array.isArray(ptr) ? [] : void 0;\n let rc;\n do {\n if (list) ptr = arguments[0].shift();\n switch (type) {\n case \"i1\":\n case \"i8\":\n rc = c.HEAP8[ptr >> 0];\n break;\n case \"i16\":\n rc = c.HEAP16[ptr >> 1];\n break;\n case \"i32\":\n rc = c.HEAP32[ptr >> 2];\n break;\n case \"float\":\n case \"f32\":\n rc = c.HEAP32F[ptr >> 2];\n break;\n case \"double\":\n case \"f64\":\n rc = Number(c.HEAP64F[ptr >> 3]);\n break;\n case \"i64\": if (target.bigIntEnabled) {\n rc = BigInt(c.HEAP64[ptr >> 3]);\n break;\n }\n default: toss(\"Invalid type for peek():\", type);\n }\n if (list) list.push(rc);\n } while (list && arguments[0].length);\n return list || rc;\n };\n target.poke = function(ptr, value, type = \"i8\") {\n if (type.endsWith(\"*\")) type = ptrIR;\n const c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n for (const p of Array.isArray(ptr) ? ptr : [ptr]) switch (type) {\n case \"i1\":\n case \"i8\":\n c.HEAP8[p >> 0] = value;\n continue;\n case \"i16\":\n c.HEAP16[p >> 1] = value;\n continue;\n case \"i32\":\n c.HEAP32[p >> 2] = value;\n continue;\n case \"float\":\n case \"f32\":\n c.HEAP32F[p >> 2] = value;\n continue;\n case \"double\":\n case \"f64\":\n c.HEAP64F[p >> 3] = value;\n continue;\n case \"i64\": if (c.HEAP64) {\n c.HEAP64[p >> 3] = BigInt(value);\n continue;\n }\n default: toss(\"Invalid type for poke(): \" + type);\n }\n return this;\n };\n target.peekPtr = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, ptrIR);\n target.pokePtr = (ptr, value = 0) => target.poke(ptr, value, ptrIR);\n target.peek8 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i8\");\n target.poke8 = (ptr, value) => target.poke(ptr, value, \"i8\");\n target.peek16 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i16\");\n target.poke16 = (ptr, value) => target.poke(ptr, value, \"i16\");\n target.peek32 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i32\");\n target.poke32 = (ptr, value) => target.poke(ptr, value, \"i32\");\n target.peek64 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i64\");\n target.poke64 = (ptr, value) => target.poke(ptr, value, \"i64\");\n target.peek32f = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"f32\");\n target.poke32f = (ptr, value) => target.poke(ptr, value, \"f32\");\n target.peek64f = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"f64\");\n target.poke64f = (ptr, value) => target.poke(ptr, value, \"f64\");\n target.getMemValue = target.peek;\n target.getPtrValue = target.peekPtr;\n target.setMemValue = target.poke;\n target.setPtrValue = target.pokePtr;\n target.isPtr32 = (ptr) => \"number\" === typeof ptr && ptr === (ptr | 0) && ptr >= 0;\n target.isPtr = target.isPtr32;\n target.cstrlen = function(ptr) {\n if (!ptr || !target.isPtr(ptr)) return null;\n const h = heapWrappers().HEAP8U;\n let pos = ptr;\n for (; h[pos] !== 0; ++pos);\n return pos - ptr;\n };\n const __SAB = \"undefined\" === typeof SharedArrayBuffer ? function() {} : SharedArrayBuffer;\n const __utf8Decode = function(arrayBuffer, begin, end) {\n return cache.utf8Decoder.decode(arrayBuffer.buffer instanceof __SAB ? arrayBuffer.slice(begin, end) : arrayBuffer.subarray(begin, end));\n };\n target.cstrToJs = function(ptr) {\n const n = target.cstrlen(ptr);\n return n ? __utf8Decode(heapWrappers().HEAP8U, ptr, ptr + n) : null === n ? n : \"\";\n };\n target.jstrlen = function(str) {\n if (\"string\" !== typeof str) return null;\n const n = str.length;\n let len = 0;\n for (let i = 0; i < n; ++i) {\n let u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;\n if (u <= 127) ++len;\n else if (u <= 2047) len += 2;\n else if (u <= 65535) len += 3;\n else len += 4;\n }\n return len;\n };\n target.jstrcpy = function(jstr, tgt, offset = 0, maxBytes = -1, addNul = true) {\n if (!tgt || !(tgt instanceof Int8Array) && !(tgt instanceof Uint8Array)) toss(\"jstrcpy() target must be an Int8Array or Uint8Array.\");\n if (maxBytes < 0) maxBytes = tgt.length - offset;\n if (!(maxBytes > 0) || !(offset >= 0)) return 0;\n let i = 0, max = jstr.length;\n const begin = offset, end = offset + maxBytes - (addNul ? 1 : 0);\n for (; i < max && offset < end; ++i) {\n let u = jstr.charCodeAt(i);\n if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | jstr.charCodeAt(++i) & 1023;\n if (u <= 127) {\n if (offset >= end) break;\n tgt[offset++] = u;\n } else if (u <= 2047) {\n if (offset + 1 >= end) break;\n tgt[offset++] = 192 | u >> 6;\n tgt[offset++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (offset + 2 >= end) break;\n tgt[offset++] = 224 | u >> 12;\n tgt[offset++] = 128 | u >> 6 & 63;\n tgt[offset++] = 128 | u & 63;\n } else {\n if (offset + 3 >= end) break;\n tgt[offset++] = 240 | u >> 18;\n tgt[offset++] = 128 | u >> 12 & 63;\n tgt[offset++] = 128 | u >> 6 & 63;\n tgt[offset++] = 128 | u & 63;\n }\n }\n if (addNul) tgt[offset++] = 0;\n return offset - begin;\n };\n target.cstrncpy = function(tgtPtr, srcPtr, n) {\n if (!tgtPtr || !srcPtr) toss(\"cstrncpy() does not accept NULL strings.\");\n if (n < 0) n = target.cstrlen(strPtr) + 1;\n else if (!(n > 0)) return 0;\n const heap = target.heap8u();\n let i = 0, ch;\n for (; i < n && (ch = heap[srcPtr + i]); ++i) heap[tgtPtr + i] = ch;\n if (i < n) heap[tgtPtr + i++] = 0;\n return i;\n };\n target.jstrToUintArray = (str, addNul = false) => {\n return cache.utf8Encoder.encode(addNul ? str + \"\\0\" : str);\n };\n const __affirmAlloc = (obj, funcName) => {\n if (!(obj.alloc instanceof Function) || !(obj.dealloc instanceof Function)) toss(\"Object is missing alloc() and/or dealloc() function(s)\", \"required by\", funcName + \"().\");\n };\n const __allocCStr = function(jstr, returnWithLength, allocator, funcName) {\n __affirmAlloc(target, funcName);\n if (\"string\" !== typeof jstr) return null;\n {\n const u = cache.utf8Encoder.encode(jstr), ptr = allocator(u.length + 1), heap = heapWrappers().HEAP8U;\n heap.set(u, ptr);\n heap[ptr + u.length] = 0;\n return returnWithLength ? [ptr, u.length] : ptr;\n }\n };\n target.allocCString = (jstr, returnWithLength = false) => __allocCStr(jstr, returnWithLength, target.alloc, \"allocCString()\");\n target.scopedAllocPush = function() {\n __affirmAlloc(target, \"scopedAllocPush\");\n const a = [];\n cache.scopedAlloc.push(a);\n return a;\n };\n target.scopedAllocPop = function(state$1) {\n __affirmAlloc(target, \"scopedAllocPop\");\n const n = arguments.length ? cache.scopedAlloc.indexOf(state$1) : cache.scopedAlloc.length - 1;\n if (n < 0) toss(\"Invalid state object for scopedAllocPop().\");\n if (0 === arguments.length) state$1 = cache.scopedAlloc[n];\n cache.scopedAlloc.splice(n, 1);\n for (let p; p = state$1.pop();) if (target.functionEntry(p)) target.uninstallFunction(p);\n else target.dealloc(p);\n };\n target.scopedAlloc = function(n) {\n if (!cache.scopedAlloc.length) toss(\"No scopedAllocPush() scope is active.\");\n const p = target.alloc(n);\n cache.scopedAlloc[cache.scopedAlloc.length - 1].push(p);\n return p;\n };\n Object.defineProperty(target.scopedAlloc, \"level\", {\n configurable: false,\n enumerable: false,\n get: () => cache.scopedAlloc.length,\n set: () => toss(\"The 'active' property is read-only.\")\n });\n target.scopedAllocCString = (jstr, returnWithLength = false) => __allocCStr(jstr, returnWithLength, target.scopedAlloc, \"scopedAllocCString()\");\n const __allocMainArgv = function(isScoped, list) {\n const pList = target[isScoped ? \"scopedAlloc\" : \"alloc\"]((list.length + 1) * target.ptrSizeof);\n let i = 0;\n list.forEach((e) => {\n target.pokePtr(pList + target.ptrSizeof * i++, target[isScoped ? \"scopedAllocCString\" : \"allocCString\"](\"\" + e));\n });\n target.pokePtr(pList + target.ptrSizeof * i, 0);\n return pList;\n };\n target.scopedAllocMainArgv = (list) => __allocMainArgv(true, list);\n target.allocMainArgv = (list) => __allocMainArgv(false, list);\n target.cArgvToJs = (argc, pArgv) => {\n const list = [];\n for (let i = 0; i < argc; ++i) {\n const arg = target.peekPtr(pArgv + target.ptrSizeof * i);\n list.push(arg ? target.cstrToJs(arg) : null);\n }\n return list;\n };\n target.scopedAllocCall = function(func) {\n target.scopedAllocPush();\n try {\n return func();\n } finally {\n target.scopedAllocPop();\n }\n };\n const __allocPtr = function(howMany, safePtrSize, method) {\n __affirmAlloc(target, method);\n const pIr = safePtrSize ? \"i64\" : ptrIR;\n let m = target[method](howMany * (safePtrSize ? 8 : ptrSizeof));\n target.poke(m, 0, pIr);\n if (1 === howMany) return m;\n const a = [m];\n for (let i = 1; i < howMany; ++i) {\n m += safePtrSize ? 8 : ptrSizeof;\n a[i] = m;\n target.poke(m, 0, pIr);\n }\n return a;\n };\n target.allocPtr = (howMany = 1, safePtrSize = true) => __allocPtr(howMany, safePtrSize, \"alloc\");\n target.scopedAllocPtr = (howMany = 1, safePtrSize = true) => __allocPtr(howMany, safePtrSize, \"scopedAlloc\");\n target.xGet = function(name) {\n return target.exports[name] || toss(\"Cannot find exported symbol:\", name);\n };\n const __argcMismatch = (f, n) => toss(f + \"() requires\", n, \"argument(s).\");\n target.xCall = function(fname, ...args) {\n const f = fname instanceof Function ? fname : target.xGet(fname);\n if (!(f instanceof Function)) toss(\"Exported symbol\", fname, \"is not a function.\");\n if (f.length !== args.length) __argcMismatch(f === fname ? f.name : fname, f.length);\n return 2 === arguments.length && Array.isArray(arguments[1]) ? f.apply(null, arguments[1]) : f.apply(null, args);\n };\n cache.xWrap = Object.create(null);\n cache.xWrap.convert = Object.create(null);\n cache.xWrap.convert.arg = /* @__PURE__ */ new Map();\n cache.xWrap.convert.result = /* @__PURE__ */ new Map();\n const xArg = cache.xWrap.convert.arg, xResult = cache.xWrap.convert.result;\n if (target.bigIntEnabled) xArg.set(\"i64\", (i) => BigInt(i));\n const __xArgPtr = \"i32\" === ptrIR ? (i) => i | 0 : (i) => BigInt(i) | BigInt(0);\n xArg.set(\"i32\", __xArgPtr).set(\"i16\", (i) => (i | 0) & 65535).set(\"i8\", (i) => (i | 0) & 255).set(\"f32\", (i) => Number(i).valueOf()).set(\"float\", xArg.get(\"f32\")).set(\"f64\", xArg.get(\"f32\")).set(\"double\", xArg.get(\"f64\")).set(\"int\", xArg.get(\"i32\")).set(\"null\", (i) => i).set(null, xArg.get(\"null\")).set(\"**\", __xArgPtr).set(\"*\", __xArgPtr);\n xResult.set(\"*\", __xArgPtr).set(\"pointer\", __xArgPtr).set(\"number\", (v$1) => Number(v$1)).set(\"void\", (v$1) => void 0).set(\"null\", (v$1) => v$1).set(null, xResult.get(\"null\"));\n {\n const copyToResult = [\n \"i8\",\n \"i16\",\n \"i32\",\n \"int\",\n \"f32\",\n \"float\",\n \"f64\",\n \"double\"\n ];\n if (target.bigIntEnabled) copyToResult.push(\"i64\");\n const adaptPtr = xArg.get(ptrIR);\n for (const t of copyToResult) {\n xArg.set(t + \"*\", adaptPtr);\n xResult.set(t + \"*\", adaptPtr);\n xResult.set(t, xArg.get(t) || toss(\"Missing arg converter:\", t));\n }\n }\n const __xArgString = function(v$1) {\n if (\"string\" === typeof v$1) return target.scopedAllocCString(v$1);\n return v$1 ? __xArgPtr(v$1) : null;\n };\n xArg.set(\"string\", __xArgString).set(\"utf8\", __xArgString).set(\"pointer\", __xArgString);\n xResult.set(\"string\", (i) => target.cstrToJs(i)).set(\"utf8\", xResult.get(\"string\")).set(\"string:dealloc\", (i) => {\n try {\n return i ? target.cstrToJs(i) : null;\n } finally {\n target.dealloc(i);\n }\n }).set(\"utf8:dealloc\", xResult.get(\"string:dealloc\")).set(\"json\", (i) => JSON.parse(target.cstrToJs(i))).set(\"json:dealloc\", (i) => {\n try {\n return i ? JSON.parse(target.cstrToJs(i)) : null;\n } finally {\n target.dealloc(i);\n }\n });\n const AbstractArgAdapter = class {\n constructor(opt) {\n this.name = opt.name || \"unnamed adapter\";\n }\n convertArg(v$1, argv, argIndex) {\n toss(\"AbstractArgAdapter must be subclassed.\");\n }\n };\n xArg.FuncPtrAdapter = class FuncPtrAdapter extends AbstractArgAdapter {\n constructor(opt) {\n super(opt);\n if (xArg.FuncPtrAdapter.warnOnUse) console.warn(\"xArg.FuncPtrAdapter is an internal-only API\", \"and is not intended to be invoked from\", \"client-level code. Invoked with:\", opt);\n this.name = opt.name || \"unnamed\";\n this.signature = opt.signature;\n if (opt.contextKey instanceof Function) {\n this.contextKey = opt.contextKey;\n if (!opt.bindScope) opt.bindScope = \"context\";\n }\n this.bindScope = opt.bindScope || toss(\"FuncPtrAdapter options requires a bindScope (explicit or implied).\");\n if (FuncPtrAdapter.bindScopes.indexOf(opt.bindScope) < 0) toss(\"Invalid options.bindScope (\" + opt.bindMod + \") for FuncPtrAdapter. Expecting one of: (\" + FuncPtrAdapter.bindScopes.join(\", \") + \")\");\n this.isTransient = \"transient\" === this.bindScope;\n this.isContext = \"context\" === this.bindScope;\n this.isPermanent = \"permanent\" === this.bindScope;\n this.singleton = \"singleton\" === this.bindScope ? [] : void 0;\n this.callProxy = opt.callProxy instanceof Function ? opt.callProxy : void 0;\n }\n contextKey(argv, argIndex) {\n return this;\n }\n contextMap(key) {\n const cm = this.__cmap || (this.__cmap = /* @__PURE__ */ new Map());\n let rc = cm.get(key);\n if (void 0 === rc) cm.set(key, rc = []);\n return rc;\n }\n convertArg(v$1, argv, argIndex) {\n let pair = this.singleton;\n if (!pair && this.isContext) pair = this.contextMap(this.contextKey(argv, argIndex));\n if (pair && pair[0] === v$1) return pair[1];\n if (v$1 instanceof Function) {\n if (this.callProxy) v$1 = this.callProxy(v$1);\n const fp = __installFunction(v$1, this.signature, this.isTransient);\n if (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter installed\", this, this.contextKey(argv, argIndex), \"@\" + fp, v$1);\n if (pair) {\n if (pair[1]) {\n if (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter uninstalling\", this, this.contextKey(argv, argIndex), \"@\" + pair[1], v$1);\n try {\n cache.scopedAlloc[cache.scopedAlloc.length - 1].push(pair[1]);\n } catch (e) {}\n }\n pair[0] = v$1;\n pair[1] = fp;\n }\n return fp;\n } else if (target.isPtr(v$1) || null === v$1 || void 0 === v$1) {\n if (pair && pair[1] && pair[1] !== v$1) {\n if (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter uninstalling\", this, this.contextKey(argv, argIndex), \"@\" + pair[1], v$1);\n try {\n cache.scopedAlloc[cache.scopedAlloc.length - 1].push(pair[1]);\n } catch (e) {}\n pair[0] = pair[1] = v$1 | 0;\n }\n return v$1 || 0;\n } else throw new TypeError(\"Invalid FuncPtrAdapter argument type. Expecting a function pointer or a \" + (this.name ? this.name + \" \" : \"\") + \"function matching signature \" + this.signature + \".\");\n }\n };\n xArg.FuncPtrAdapter.warnOnUse = false;\n xArg.FuncPtrAdapter.debugFuncInstall = false;\n xArg.FuncPtrAdapter.debugOut = console.debug.bind(console);\n xArg.FuncPtrAdapter.bindScopes = [\n \"transient\",\n \"context\",\n \"singleton\",\n \"permanent\"\n ];\n const __xArgAdapterCheck = (t) => xArg.get(t) || toss(\"Argument adapter not found:\", t);\n const __xResultAdapterCheck = (t) => xResult.get(t) || toss(\"Result adapter not found:\", t);\n cache.xWrap.convertArg = (t, ...args) => __xArgAdapterCheck(t)(...args);\n cache.xWrap.convertArgNoCheck = (t, ...args) => xArg.get(t)(...args);\n cache.xWrap.convertResult = (t, v$1) => null === t ? v$1 : t ? __xResultAdapterCheck(t)(v$1) : void 0;\n cache.xWrap.convertResultNoCheck = (t, v$1) => null === t ? v$1 : t ? xResult.get(t)(v$1) : void 0;\n target.xWrap = function(fArg, resultType, ...argTypes) {\n if (3 === arguments.length && Array.isArray(arguments[2])) argTypes = arguments[2];\n if (target.isPtr(fArg)) fArg = target.functionEntry(fArg) || toss(\"Function pointer not found in WASM function table.\");\n const fIsFunc = fArg instanceof Function;\n const xf = fIsFunc ? fArg : target.xGet(fArg);\n if (fIsFunc) fArg = xf.name || \"unnamed function\";\n if (argTypes.length !== xf.length) __argcMismatch(fArg, xf.length);\n if (null === resultType && 0 === xf.length) return xf;\n if (void 0 !== resultType && null !== resultType) __xResultAdapterCheck(resultType);\n for (const t of argTypes) if (t instanceof AbstractArgAdapter) xArg.set(t, (...args) => t.convertArg(...args));\n else __xArgAdapterCheck(t);\n const cxw = cache.xWrap;\n if (0 === xf.length) return (...args) => args.length ? __argcMismatch(fArg, xf.length) : cxw.convertResult(resultType, xf.call(null));\n return function(...args) {\n if (args.length !== xf.length) __argcMismatch(fArg, xf.length);\n const scope = target.scopedAllocPush();\n try {\n let i = 0;\n for (; i < args.length; ++i) args[i] = cxw.convertArgNoCheck(argTypes[i], args[i], args, i);\n return cxw.convertResultNoCheck(resultType, xf.apply(null, args));\n } finally {\n target.scopedAllocPop(scope);\n }\n };\n };\n const __xAdapter = function(func, argc, typeName, adapter, modeName, xcvPart) {\n if (\"string\" === typeof typeName) {\n if (1 === argc) return xcvPart.get(typeName);\n else if (2 === argc) {\n if (!adapter) {\n xcvPart.delete(typeName);\n return func;\n } else if (!(adapter instanceof Function)) toss(modeName, \"requires a function argument.\");\n xcvPart.set(typeName, adapter);\n return func;\n }\n }\n toss(\"Invalid arguments to\", modeName);\n };\n target.xWrap.resultAdapter = function f(typeName, adapter) {\n return __xAdapter(f, arguments.length, typeName, adapter, \"resultAdapter()\", xResult);\n };\n target.xWrap.argAdapter = function f(typeName, adapter) {\n return __xAdapter(f, arguments.length, typeName, adapter, \"argAdapter()\", xArg);\n };\n target.xWrap.FuncPtrAdapter = xArg.FuncPtrAdapter;\n target.xCallWrapped = function(fArg, resultType, argTypes, ...args) {\n if (Array.isArray(arguments[3])) args = arguments[3];\n return target.xWrap(fArg, resultType, argTypes || []).apply(null, args || []);\n };\n target.xWrap.testConvertArg = cache.xWrap.convertArg;\n target.xWrap.testConvertResult = cache.xWrap.convertResult;\n return target;\n };\n globalThis.WhWasmUtilInstaller.yawl = function(config) {\n const wfetch = () => fetch(config.uri, { credentials: \"same-origin\" });\n const wui = this;\n const finalThen = function(arg) {\n if (config.wasmUtilTarget) {\n const toss = (...args) => {\n throw new Error(args.join(\" \"));\n };\n const tgt = config.wasmUtilTarget;\n tgt.module = arg.module;\n tgt.instance = arg.instance;\n if (!tgt.instance.exports.memory) tgt.memory = config.imports && config.imports.env && config.imports.env.memory || toss(\"Missing 'memory' object!\");\n if (!tgt.alloc && arg.instance.exports.malloc) {\n const exports = arg.instance.exports;\n tgt.alloc = function(n) {\n return exports.malloc(n) || toss(\"Allocation of\", n, \"bytes failed.\");\n };\n tgt.dealloc = function(m) {\n exports.free(m);\n };\n }\n wui(tgt);\n }\n if (config.onload) config.onload(arg, config);\n return arg;\n };\n return WebAssembly.instantiateStreaming ? function loadWasmStreaming() {\n return WebAssembly.instantiateStreaming(wfetch(), config.imports || {}).then(finalThen);\n } : function loadWasmOldSchool() {\n return wfetch().then((response) => response.arrayBuffer()).then((bytes) => WebAssembly.instantiate(bytes, config.imports || {})).then(finalThen);\n };\n }.bind(globalThis.WhWasmUtilInstaller);\n globalThis.Jaccwabyt = function StructBinderFactory(config) {\n const toss = (...args) => {\n throw new Error(args.join(\" \"));\n };\n if (!(config.heap instanceof WebAssembly.Memory) && !(config.heap instanceof Function)) toss(\"config.heap must be WebAssembly.Memory instance or a function.\");\n [\"alloc\", \"dealloc\"].forEach(function(k) {\n config[k] instanceof Function || toss(\"Config option '\" + k + \"' must be a function.\");\n });\n const SBF = StructBinderFactory;\n const heap = config.heap instanceof Function ? config.heap : () => new Uint8Array(config.heap.buffer), alloc = config.alloc, dealloc = config.dealloc, log = config.log || console.log.bind(console), memberPrefix = config.memberPrefix || \"\", memberSuffix = config.memberSuffix || \"\", bigIntEnabled = void 0 === config.bigIntEnabled ? !!globalThis[\"BigInt64Array\"] : !!config.bigIntEnabled, BigInt$1 = globalThis[\"BigInt\"], BigInt64Array$1 = globalThis[\"BigInt64Array\"], ptrSizeof = config.ptrSizeof || 4, ptrIR = config.ptrIR || \"i32\";\n if (!SBF.debugFlags) {\n SBF.__makeDebugFlags = function(deriveFrom = null) {\n if (deriveFrom && deriveFrom.__flags) deriveFrom = deriveFrom.__flags;\n const f = function f$1(flags) {\n if (0 === arguments.length) return f$1.__flags;\n if (flags < 0) {\n delete f$1.__flags.getter;\n delete f$1.__flags.setter;\n delete f$1.__flags.alloc;\n delete f$1.__flags.dealloc;\n } else {\n f$1.__flags.getter = 0 !== (1 & flags);\n f$1.__flags.setter = 0 !== (2 & flags);\n f$1.__flags.alloc = 0 !== (4 & flags);\n f$1.__flags.dealloc = 0 !== (8 & flags);\n }\n return f$1._flags;\n };\n Object.defineProperty(f, \"__flags\", {\n iterable: false,\n writable: false,\n value: Object.create(deriveFrom)\n });\n if (!deriveFrom) f(0);\n return f;\n };\n SBF.debugFlags = SBF.__makeDebugFlags();\n }\n const isLittleEndian = (function() {\n const buffer = /* @__PURE__ */ new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true);\n return new Int16Array(buffer)[0] === 256;\n })();\n const isFuncSig = (s) => \"(\" === s[1];\n const isAutoPtrSig = (s) => \"P\" === s;\n const sigLetter = (s) => isFuncSig(s) ? \"p\" : s[0];\n const sigIR = function(s) {\n switch (sigLetter(s)) {\n case \"c\":\n case \"C\": return \"i8\";\n case \"i\": return \"i32\";\n case \"p\":\n case \"P\":\n case \"s\": return ptrIR;\n case \"j\": return \"i64\";\n case \"f\": return \"float\";\n case \"d\": return \"double\";\n }\n toss(\"Unhandled signature IR:\", s);\n };\n const affirmBigIntArray = BigInt64Array$1 ? () => true : () => toss(\"BigInt64Array is not available.\");\n const sigDVGetter = function(s) {\n switch (sigLetter(s)) {\n case \"p\":\n case \"P\":\n case \"s\":\n switch (ptrSizeof) {\n case 4: return \"getInt32\";\n case 8: return affirmBigIntArray() && \"getBigInt64\";\n }\n break;\n case \"i\": return \"getInt32\";\n case \"c\": return \"getInt8\";\n case \"C\": return \"getUint8\";\n case \"j\": return affirmBigIntArray() && \"getBigInt64\";\n case \"f\": return \"getFloat32\";\n case \"d\": return \"getFloat64\";\n }\n toss(\"Unhandled DataView getter for signature:\", s);\n };\n const sigDVSetter = function(s) {\n switch (sigLetter(s)) {\n case \"p\":\n case \"P\":\n case \"s\":\n switch (ptrSizeof) {\n case 4: return \"setInt32\";\n case 8: return affirmBigIntArray() && \"setBigInt64\";\n }\n break;\n case \"i\": return \"setInt32\";\n case \"c\": return \"setInt8\";\n case \"C\": return \"setUint8\";\n case \"j\": return affirmBigIntArray() && \"setBigInt64\";\n case \"f\": return \"setFloat32\";\n case \"d\": return \"setFloat64\";\n }\n toss(\"Unhandled DataView setter for signature:\", s);\n };\n const sigDVSetWrapper = function(s) {\n switch (sigLetter(s)) {\n case \"i\":\n case \"f\":\n case \"c\":\n case \"C\":\n case \"d\": return Number;\n case \"j\": return affirmBigIntArray() && BigInt$1;\n case \"p\":\n case \"P\":\n case \"s\":\n switch (ptrSizeof) {\n case 4: return Number;\n case 8: return affirmBigIntArray() && BigInt$1;\n }\n break;\n }\n toss(\"Unhandled DataView set wrapper for signature:\", s);\n };\n const sPropName = (s, k) => s + \"::\" + k;\n const __propThrowOnSet = function(structName, propName) {\n return () => toss(sPropName(structName, propName), \"is read-only.\");\n };\n const __instancePointerMap = /* @__PURE__ */ new WeakMap();\n const xPtrPropName = \"(pointer-is-external)\";\n const __freeStruct = function(ctor, obj, m) {\n if (!m) m = __instancePointerMap.get(obj);\n if (m) {\n __instancePointerMap.delete(obj);\n if (Array.isArray(obj.ondispose)) {\n let x;\n while (x = obj.ondispose.shift()) try {\n if (x instanceof Function) x.call(obj);\n else if (x instanceof StructType) x.dispose();\n else if (\"number\" === typeof x) dealloc(x);\n } catch (e) {\n console.warn(\"ondispose() for\", ctor.structName, \"@\", m, \"threw. NOT propagating it.\", e);\n }\n } else if (obj.ondispose instanceof Function) try {\n obj.ondispose();\n } catch (e) {\n console.warn(\"ondispose() for\", ctor.structName, \"@\", m, \"threw. NOT propagating it.\", e);\n }\n delete obj.ondispose;\n if (ctor.debugFlags.__flags.dealloc) log(\"debug.dealloc:\", obj[xPtrPropName] ? \"EXTERNAL\" : \"\", ctor.structName, \"instance:\", ctor.structInfo.sizeof, \"bytes @\" + m);\n if (!obj[xPtrPropName]) dealloc(m);\n }\n };\n const rop = (v$1) => {\n return {\n configurable: false,\n writable: false,\n iterable: false,\n value: v$1\n };\n };\n const __allocStruct = function(ctor, obj, m) {\n let fill = !m;\n if (m) Object.defineProperty(obj, xPtrPropName, rop(m));\n else {\n m = alloc(ctor.structInfo.sizeof);\n if (!m) toss(\"Allocation of\", ctor.structName, \"structure failed.\");\n }\n try {\n if (ctor.debugFlags.__flags.alloc) log(\"debug.alloc:\", fill ? \"\" : \"EXTERNAL\", ctor.structName, \"instance:\", ctor.structInfo.sizeof, \"bytes @\" + m);\n if (fill) heap().fill(0, m, m + ctor.structInfo.sizeof);\n __instancePointerMap.set(obj, m);\n } catch (e) {\n __freeStruct(ctor, obj, m);\n throw e;\n }\n };\n const __memoryDump = function() {\n const p = this.pointer;\n return p ? new Uint8Array(heap().slice(p, p + this.structInfo.sizeof)) : null;\n };\n const __memberKey = (k) => memberPrefix + k + memberSuffix;\n const __memberKeyProp = rop(__memberKey);\n const __lookupMember = function(structInfo, memberName, tossIfNotFound = true) {\n let m = structInfo.members[memberName];\n if (!m && (memberPrefix || memberSuffix)) {\n for (const v$1 of Object.values(structInfo.members)) if (v$1.key === memberName) {\n m = v$1;\n break;\n }\n if (!m && tossIfNotFound) toss(sPropName(structInfo.name, memberName), \"is not a mapped struct member.\");\n }\n return m;\n };\n const __memberSignature = function f(obj, memberName, emscriptenFormat = false) {\n if (!f._) f._ = (x) => x.replace(/[^vipPsjrdcC]/g, \"\").replace(/[pPscC]/g, \"i\");\n const m = __lookupMember(obj.structInfo, memberName, true);\n return emscriptenFormat ? f._(m.signature) : m.signature;\n };\n const __ptrPropDescriptor = {\n configurable: false,\n enumerable: false,\n get: function() {\n return __instancePointerMap.get(this);\n },\n set: () => toss(\"Cannot assign the 'pointer' property of a struct.\")\n };\n const __structMemberKeys = rop(function() {\n const a = [];\n for (const k of Object.keys(this.structInfo.members)) a.push(this.memberKey(k));\n return a;\n });\n const __utf8Decoder = new TextDecoder(\"utf-8\");\n const __utf8Encoder = new TextEncoder();\n const __SAB = \"undefined\" === typeof SharedArrayBuffer ? function() {} : SharedArrayBuffer;\n const __utf8Decode = function(arrayBuffer, begin, end) {\n return __utf8Decoder.decode(arrayBuffer.buffer instanceof __SAB ? arrayBuffer.slice(begin, end) : arrayBuffer.subarray(begin, end));\n };\n const __memberIsString = function(obj, memberName, tossIfNotFound = false) {\n const m = __lookupMember(obj.structInfo, memberName, tossIfNotFound);\n return m && 1 === m.signature.length && \"s\" === m.signature[0] ? m : false;\n };\n const __affirmCStringSignature = function(member) {\n if (\"s\" === member.signature) return;\n toss(\"Invalid member type signature for C-string value:\", JSON.stringify(member));\n };\n const __memberToJsString = function f(obj, memberName) {\n const m = __lookupMember(obj.structInfo, memberName, true);\n __affirmCStringSignature(m);\n const addr = obj[m.key];\n if (!addr) return null;\n let pos = addr;\n const mem = heap();\n for (; mem[pos] !== 0; ++pos);\n return addr === pos ? \"\" : __utf8Decode(mem, addr, pos);\n };\n const __addOnDispose = function(obj, ...v$1) {\n if (obj.ondispose) {\n if (!Array.isArray(obj.ondispose)) obj.ondispose = [obj.ondispose];\n } else obj.ondispose = [];\n obj.ondispose.push(...v$1);\n };\n const __allocCString = function(str) {\n const u = __utf8Encoder.encode(str);\n const mem = alloc(u.length + 1);\n if (!mem) toss(\"Allocation error while duplicating string:\", str);\n const h = heap();\n h.set(u, mem);\n h[mem + u.length] = 0;\n return mem;\n };\n const __setMemberCString = function(obj, memberName, str) {\n const m = __lookupMember(obj.structInfo, memberName, true);\n __affirmCStringSignature(m);\n const mem = __allocCString(str);\n obj[m.key] = mem;\n __addOnDispose(obj, mem);\n return obj;\n };\n const StructType = function ctor(structName, structInfo) {\n if (arguments[2] !== rop) toss(\"Do not call the StructType constructor\", \"from client-level code.\");\n Object.defineProperties(this, {\n structName: rop(structName),\n structInfo: rop(structInfo)\n });\n };\n StructType.prototype = Object.create(null, {\n dispose: rop(function() {\n __freeStruct(this.constructor, this);\n }),\n lookupMember: rop(function(memberName, tossIfNotFound = true) {\n return __lookupMember(this.structInfo, memberName, tossIfNotFound);\n }),\n memberToJsString: rop(function(memberName) {\n return __memberToJsString(this, memberName);\n }),\n memberIsString: rop(function(memberName, tossIfNotFound = true) {\n return __memberIsString(this, memberName, tossIfNotFound);\n }),\n memberKey: __memberKeyProp,\n memberKeys: __structMemberKeys,\n memberSignature: rop(function(memberName, emscriptenFormat = false) {\n return __memberSignature(this, memberName, emscriptenFormat);\n }),\n memoryDump: rop(__memoryDump),\n pointer: __ptrPropDescriptor,\n setMemberCString: rop(function(memberName, str) {\n return __setMemberCString(this, memberName, str);\n })\n });\n Object.assign(StructType.prototype, { addOnDispose: function(...v$1) {\n __addOnDispose(this, ...v$1);\n return this;\n } });\n Object.defineProperties(StructType, {\n allocCString: rop(__allocCString),\n isA: rop((v$1) => v$1 instanceof StructType),\n hasExternalPointer: rop((v$1) => v$1 instanceof StructType && !!v$1[xPtrPropName]),\n memberKey: __memberKeyProp\n });\n const isNumericValue = (v$1) => Number.isFinite(v$1) || v$1 instanceof (BigInt$1 || Number);\n const makeMemberWrapper = function f(ctor, name, descr) {\n if (!f._) {\n f._ = {\n getters: {},\n setters: {},\n sw: {}\n };\n const a = [\n \"i\",\n \"c\",\n \"C\",\n \"p\",\n \"P\",\n \"s\",\n \"f\",\n \"d\",\n \"v()\"\n ];\n if (bigIntEnabled) a.push(\"j\");\n a.forEach(function(v$1) {\n f._.getters[v$1] = sigDVGetter(v$1);\n f._.setters[v$1] = sigDVSetter(v$1);\n f._.sw[v$1] = sigDVSetWrapper(v$1);\n });\n const rxSig1 = /^[ipPsjfdcC]$/, rxSig2 = /^[vipPsjfdcC]\\([ipPsjfdcC]*\\)$/;\n f.sigCheck = function(obj, name$1, key$1, sig) {\n if (Object.prototype.hasOwnProperty.call(obj, key$1)) toss(obj.structName, \"already has a property named\", key$1 + \".\");\n rxSig1.test(sig) || rxSig2.test(sig) || toss(\"Malformed signature for\", sPropName(obj.structName, name$1) + \":\", sig);\n };\n }\n const key = ctor.memberKey(name);\n f.sigCheck(ctor.prototype, name, key, descr.signature);\n descr.key = key;\n descr.name = name;\n const sigGlyph = sigLetter(descr.signature);\n const xPropName = sPropName(ctor.prototype.structName, key);\n const dbg = ctor.prototype.debugFlags.__flags;\n const prop = Object.create(null);\n prop.configurable = false;\n prop.enumerable = false;\n prop.get = function() {\n if (dbg.getter) log(\"debug.getter:\", f._.getters[sigGlyph], \"for\", sigIR(sigGlyph), xPropName, \"@\", this.pointer, \"+\", descr.offset, \"sz\", descr.sizeof);\n let rc = new DataView(heap().buffer, this.pointer + descr.offset, descr.sizeof)[f._.getters[sigGlyph]](0, isLittleEndian);\n if (dbg.getter) log(\"debug.getter:\", xPropName, \"result =\", rc);\n return rc;\n };\n if (descr.readOnly) prop.set = __propThrowOnSet(ctor.prototype.structName, key);\n else prop.set = function(v$1) {\n if (dbg.setter) log(\"debug.setter:\", f._.setters[sigGlyph], \"for\", sigIR(sigGlyph), xPropName, \"@\", this.pointer, \"+\", descr.offset, \"sz\", descr.sizeof, v$1);\n if (!this.pointer) toss(\"Cannot set struct property on disposed instance.\");\n if (null === v$1) v$1 = 0;\n else while (!isNumericValue(v$1)) {\n if (isAutoPtrSig(descr.signature) && v$1 instanceof StructType) {\n v$1 = v$1.pointer || 0;\n if (dbg.setter) log(\"debug.setter:\", xPropName, \"resolved to\", v$1);\n break;\n }\n toss(\"Invalid value for pointer-type\", xPropName + \".\");\n }\n new DataView(heap().buffer, this.pointer + descr.offset, descr.sizeof)[f._.setters[sigGlyph]](0, f._.sw[sigGlyph](v$1), isLittleEndian);\n };\n Object.defineProperty(ctor.prototype, key, prop);\n };\n const StructBinder = function StructBinder$1(structName, structInfo) {\n if (1 === arguments.length) {\n structInfo = structName;\n structName = structInfo.name;\n } else if (!structInfo.name) structInfo.name = structName;\n if (!structName) toss(\"Struct name is required.\");\n let lastMember = false;\n Object.keys(structInfo.members).forEach((k) => {\n const m = structInfo.members[k];\n if (!m.sizeof) toss(structName, \"member\", k, \"is missing sizeof.\");\n else if (m.sizeof === 1) m.signature === \"c\" || m.signature === \"C\" || toss(\"Unexpected sizeof==1 member\", sPropName(structInfo.name, k), \"with signature\", m.signature);\n else {\n if (0 !== m.sizeof % 4) {\n console.warn(\"Invalid struct member description =\", m, \"from\", structInfo);\n toss(structName, \"member\", k, \"sizeof is not aligned. sizeof=\" + m.sizeof);\n }\n if (0 !== m.offset % 4) {\n console.warn(\"Invalid struct member description =\", m, \"from\", structInfo);\n toss(structName, \"member\", k, \"offset is not aligned. offset=\" + m.offset);\n }\n }\n if (!lastMember || lastMember.offset < m.offset) lastMember = m;\n });\n if (!lastMember) toss(\"No member property descriptions found.\");\n else if (structInfo.sizeof < lastMember.offset + lastMember.sizeof) toss(\"Invalid struct config:\", structName, \"max member offset (\" + lastMember.offset + \") \", \"extends past end of struct (sizeof=\" + structInfo.sizeof + \").\");\n const debugFlags = rop(SBF.__makeDebugFlags(StructBinder$1.debugFlags));\n const StructCtor = function StructCtor$1(externalMemory) {\n if (!(this instanceof StructCtor$1)) toss(\"The\", structName, \"constructor may only be called via 'new'.\");\n else if (arguments.length) {\n if (externalMemory !== (externalMemory | 0) || externalMemory <= 0) toss(\"Invalid pointer value for\", structName, \"constructor.\");\n __allocStruct(StructCtor$1, this, externalMemory);\n } else __allocStruct(StructCtor$1, this);\n };\n Object.defineProperties(StructCtor, {\n debugFlags,\n isA: rop((v$1) => v$1 instanceof StructCtor),\n memberKey: __memberKeyProp,\n memberKeys: __structMemberKeys,\n methodInfoForKey: rop(function(mKey) {}),\n structInfo: rop(structInfo),\n structName: rop(structName)\n });\n StructCtor.prototype = new StructType(structName, structInfo, rop);\n Object.defineProperties(StructCtor.prototype, {\n debugFlags,\n constructor: rop(StructCtor)\n });\n Object.keys(structInfo.members).forEach((name) => makeMemberWrapper(StructCtor, name, structInfo.members[name]));\n return StructCtor;\n };\n StructBinder.StructType = StructType;\n StructBinder.config = config;\n StructBinder.allocCString = __allocCString;\n if (!StructBinder.debugFlags) StructBinder.debugFlags = SBF.__makeDebugFlags(SBF.debugFlags);\n return StructBinder;\n };\n globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n const toss = (...args) => {\n throw new Error(args.join(\" \"));\n };\n sqlite3.SQLite3Error.toss;\n const capi = sqlite3.capi, wasm = sqlite3.wasm, util = sqlite3.util;\n globalThis.WhWasmUtilInstaller(wasm);\n delete globalThis.WhWasmUtilInstaller;\n wasm.bindingSignatures = [\n [\n \"sqlite3_aggregate_context\",\n \"void*\",\n \"sqlite3_context*\",\n \"int\"\n ],\n [\n \"sqlite3_bind_double\",\n \"int\",\n \"sqlite3_stmt*\",\n \"int\",\n \"f64\"\n ],\n [\n \"sqlite3_bind_int\",\n \"int\",\n \"sqlite3_stmt*\",\n \"int\",\n \"int\"\n ],\n [\n \"sqlite3_bind_null\",\n void 0,\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_bind_parameter_count\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_bind_parameter_index\",\n \"int\",\n \"sqlite3_stmt*\",\n \"string\"\n ],\n [\n \"sqlite3_bind_parameter_name\",\n \"string\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_bind_pointer\",\n \"int\",\n \"sqlite3_stmt*\",\n \"int\",\n \"*\",\n \"string:static\",\n \"*\"\n ],\n [\n \"sqlite3_busy_handler\",\n \"int\",\n [\n \"sqlite3*\",\n new wasm.xWrap.FuncPtrAdapter({\n signature: \"i(pi)\",\n contextKey: (argv, argIndex) => argv[0]\n }),\n \"*\"\n ]\n ],\n [\n \"sqlite3_busy_timeout\",\n \"int\",\n \"sqlite3*\",\n \"int\"\n ],\n [\n \"sqlite3_changes\",\n \"int\",\n \"sqlite3*\"\n ],\n [\n \"sqlite3_clear_bindings\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_collation_needed\",\n \"int\",\n \"sqlite3*\",\n \"*\",\n \"*\"\n ],\n [\n \"sqlite3_column_blob\",\n \"*\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_column_bytes\",\n \"int\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_column_count\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_column_decltype\",\n \"string\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_column_double\",\n \"f64\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_column_int\",\n \"int\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_column_name\",\n \"string\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_column_text\",\n \"string\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_column_type\",\n \"int\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_column_value\",\n \"sqlite3_value*\",\n \"sqlite3_stmt*\",\n \"int\"\n ],\n [\n \"sqlite3_commit_hook\",\n \"void*\",\n [\n \"sqlite3*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"sqlite3_commit_hook\",\n signature: \"i(p)\",\n contextKey: (argv) => argv[0]\n }),\n \"*\"\n ]\n ],\n [\n \"sqlite3_compileoption_get\",\n \"string\",\n \"int\"\n ],\n [\n \"sqlite3_compileoption_used\",\n \"int\",\n \"string\"\n ],\n [\n \"sqlite3_complete\",\n \"int\",\n \"string:flexible\"\n ],\n [\n \"sqlite3_context_db_handle\",\n \"sqlite3*\",\n \"sqlite3_context*\"\n ],\n [\n \"sqlite3_data_count\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_db_filename\",\n \"string\",\n \"sqlite3*\",\n \"string\"\n ],\n [\n \"sqlite3_db_handle\",\n \"sqlite3*\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_db_name\",\n \"string\",\n \"sqlite3*\",\n \"int\"\n ],\n [\n \"sqlite3_db_readonly\",\n \"int\",\n \"sqlite3*\",\n \"string\"\n ],\n [\n \"sqlite3_db_status\",\n \"int\",\n \"sqlite3*\",\n \"int\",\n \"*\",\n \"*\",\n \"int\"\n ],\n [\n \"sqlite3_errcode\",\n \"int\",\n \"sqlite3*\"\n ],\n [\n \"sqlite3_errmsg\",\n \"string\",\n \"sqlite3*\"\n ],\n [\n \"sqlite3_error_offset\",\n \"int\",\n \"sqlite3*\"\n ],\n [\n \"sqlite3_errstr\",\n \"string\",\n \"int\"\n ],\n [\n \"sqlite3_exec\",\n \"int\",\n [\n \"sqlite3*\",\n \"string:flexible\",\n new wasm.xWrap.FuncPtrAdapter({\n signature: \"i(pipp)\",\n bindScope: \"transient\",\n callProxy: (callback) => {\n let aNames;\n return (pVoid, nCols, pColVals, pColNames) => {\n try {\n const aVals = wasm.cArgvToJs(nCols, pColVals);\n if (!aNames) aNames = wasm.cArgvToJs(nCols, pColNames);\n return callback(aVals, aNames) | 0;\n } catch (e) {\n return e.resultCode || capi.SQLITE_ERROR;\n }\n };\n }\n }),\n \"*\",\n \"**\"\n ]\n ],\n [\n \"sqlite3_expanded_sql\",\n \"string\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_extended_errcode\",\n \"int\",\n \"sqlite3*\"\n ],\n [\n \"sqlite3_extended_result_codes\",\n \"int\",\n \"sqlite3*\",\n \"int\"\n ],\n [\n \"sqlite3_file_control\",\n \"int\",\n \"sqlite3*\",\n \"string\",\n \"int\",\n \"*\"\n ],\n [\n \"sqlite3_finalize\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_free\",\n void 0,\n \"*\"\n ],\n [\n \"sqlite3_get_autocommit\",\n \"int\",\n \"sqlite3*\"\n ],\n [\n \"sqlite3_get_auxdata\",\n \"*\",\n \"sqlite3_context*\",\n \"int\"\n ],\n [\"sqlite3_initialize\", void 0],\n [\n \"sqlite3_interrupt\",\n void 0,\n \"sqlite3*\"\n ],\n [\n \"sqlite3_is_interrupted\",\n \"int\",\n \"sqlite3*\"\n ],\n [\"sqlite3_keyword_count\", \"int\"],\n [\n \"sqlite3_keyword_name\",\n \"int\",\n [\n \"int\",\n \"**\",\n \"*\"\n ]\n ],\n [\n \"sqlite3_keyword_check\",\n \"int\",\n [\"string\", \"int\"]\n ],\n [\"sqlite3_libversion\", \"string\"],\n [\"sqlite3_libversion_number\", \"int\"],\n [\n \"sqlite3_limit\",\n \"int\",\n [\n \"sqlite3*\",\n \"int\",\n \"int\"\n ]\n ],\n [\n \"sqlite3_malloc\",\n \"*\",\n \"int\"\n ],\n [\n \"sqlite3_open\",\n \"int\",\n \"string\",\n \"*\"\n ],\n [\n \"sqlite3_open_v2\",\n \"int\",\n \"string\",\n \"*\",\n \"int\",\n \"string\"\n ],\n [\n \"sqlite3_realloc\",\n \"*\",\n \"*\",\n \"int\"\n ],\n [\n \"sqlite3_reset\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_result_blob\",\n void 0,\n \"sqlite3_context*\",\n \"*\",\n \"int\",\n \"*\"\n ],\n [\n \"sqlite3_result_double\",\n void 0,\n \"sqlite3_context*\",\n \"f64\"\n ],\n [\n \"sqlite3_result_error\",\n void 0,\n \"sqlite3_context*\",\n \"string\",\n \"int\"\n ],\n [\n \"sqlite3_result_error_code\",\n void 0,\n \"sqlite3_context*\",\n \"int\"\n ],\n [\n \"sqlite3_result_error_nomem\",\n void 0,\n \"sqlite3_context*\"\n ],\n [\n \"sqlite3_result_error_toobig\",\n void 0,\n \"sqlite3_context*\"\n ],\n [\n \"sqlite3_result_int\",\n void 0,\n \"sqlite3_context*\",\n \"int\"\n ],\n [\n \"sqlite3_result_null\",\n void 0,\n \"sqlite3_context*\"\n ],\n [\n \"sqlite3_result_pointer\",\n void 0,\n \"sqlite3_context*\",\n \"*\",\n \"string:static\",\n \"*\"\n ],\n [\n \"sqlite3_result_subtype\",\n void 0,\n \"sqlite3_value*\",\n \"int\"\n ],\n [\n \"sqlite3_result_text\",\n void 0,\n \"sqlite3_context*\",\n \"string\",\n \"int\",\n \"*\"\n ],\n [\n \"sqlite3_result_zeroblob\",\n void 0,\n \"sqlite3_context*\",\n \"int\"\n ],\n [\n \"sqlite3_rollback_hook\",\n \"void*\",\n [\n \"sqlite3*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"sqlite3_rollback_hook\",\n signature: \"v(p)\",\n contextKey: (argv) => argv[0]\n }),\n \"*\"\n ]\n ],\n [\n \"sqlite3_set_auxdata\",\n void 0,\n [\n \"sqlite3_context*\",\n \"int\",\n \"*\",\n \"*\"\n ]\n ],\n [\"sqlite3_shutdown\", void 0],\n [\"sqlite3_sourceid\", \"string\"],\n [\n \"sqlite3_sql\",\n \"string\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_status\",\n \"int\",\n \"int\",\n \"*\",\n \"*\",\n \"int\"\n ],\n [\n \"sqlite3_step\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_stmt_busy\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_stmt_readonly\",\n \"int\",\n \"sqlite3_stmt*\"\n ],\n [\n \"sqlite3_stmt_status\",\n \"int\",\n \"sqlite3_stmt*\",\n \"int\",\n \"int\"\n ],\n [\n \"sqlite3_strglob\",\n \"int\",\n \"string\",\n \"string\"\n ],\n [\n \"sqlite3_stricmp\",\n \"int\",\n \"string\",\n \"string\"\n ],\n [\n \"sqlite3_strlike\",\n \"int\",\n \"string\",\n \"string\",\n \"int\"\n ],\n [\n \"sqlite3_strnicmp\",\n \"int\",\n \"string\",\n \"string\",\n \"int\"\n ],\n [\n \"sqlite3_table_column_metadata\",\n \"int\",\n \"sqlite3*\",\n \"string\",\n \"string\",\n \"string\",\n \"**\",\n \"**\",\n \"*\",\n \"*\",\n \"*\"\n ],\n [\n \"sqlite3_total_changes\",\n \"int\",\n \"sqlite3*\"\n ],\n [\n \"sqlite3_trace_v2\",\n \"int\",\n [\n \"sqlite3*\",\n \"int\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"sqlite3_trace_v2::callback\",\n signature: \"i(ippp)\",\n contextKey: (argv, argIndex) => argv[0]\n }),\n \"*\"\n ]\n ],\n [\n \"sqlite3_txn_state\",\n \"int\",\n [\"sqlite3*\", \"string\"]\n ],\n [\n \"sqlite3_uri_boolean\",\n \"int\",\n \"sqlite3_filename\",\n \"string\",\n \"int\"\n ],\n [\n \"sqlite3_uri_key\",\n \"string\",\n \"sqlite3_filename\",\n \"int\"\n ],\n [\n \"sqlite3_uri_parameter\",\n \"string\",\n \"sqlite3_filename\",\n \"string\"\n ],\n [\n \"sqlite3_user_data\",\n \"void*\",\n \"sqlite3_context*\"\n ],\n [\n \"sqlite3_value_blob\",\n \"*\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_bytes\",\n \"int\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_double\",\n \"f64\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_dup\",\n \"sqlite3_value*\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_free\",\n void 0,\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_frombind\",\n \"int\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_int\",\n \"int\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_nochange\",\n \"int\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_numeric_type\",\n \"int\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_pointer\",\n \"*\",\n \"sqlite3_value*\",\n \"string:static\"\n ],\n [\n \"sqlite3_value_subtype\",\n \"int\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_text\",\n \"string\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_value_type\",\n \"int\",\n \"sqlite3_value*\"\n ],\n [\n \"sqlite3_vfs_find\",\n \"*\",\n \"string\"\n ],\n [\n \"sqlite3_vfs_register\",\n \"int\",\n \"sqlite3_vfs*\",\n \"int\"\n ],\n [\n \"sqlite3_vfs_unregister\",\n \"int\",\n \"sqlite3_vfs*\"\n ]\n ];\n if (!!wasm.exports.sqlite3_progress_handler) wasm.bindingSignatures.push([\n \"sqlite3_progress_handler\",\n void 0,\n [\n \"sqlite3*\",\n \"int\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xProgressHandler\",\n signature: \"i(p)\",\n bindScope: \"context\",\n contextKey: (argv, argIndex) => argv[0]\n }),\n \"*\"\n ]\n ]);\n if (!!wasm.exports.sqlite3_stmt_explain) wasm.bindingSignatures.push([\n \"sqlite3_stmt_explain\",\n \"int\",\n \"sqlite3_stmt*\",\n \"int\"\n ], [\n \"sqlite3_stmt_isexplain\",\n \"int\",\n \"sqlite3_stmt*\"\n ]);\n if (!!wasm.exports.sqlite3_set_authorizer) wasm.bindingSignatures.push([\n \"sqlite3_set_authorizer\",\n \"int\",\n [\n \"sqlite3*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"sqlite3_set_authorizer::xAuth\",\n signature: \"i(pissss)\",\n contextKey: (argv, argIndex) => argv[0],\n callProxy: (callback) => {\n return (pV, iCode, s0, s1, s2, s3) => {\n try {\n s0 = s0 && wasm.cstrToJs(s0);\n s1 = s1 && wasm.cstrToJs(s1);\n s2 = s2 && wasm.cstrToJs(s2);\n s3 = s3 && wasm.cstrToJs(s3);\n return callback(pV, iCode, s0, s1, s2, s3) || 0;\n } catch (e) {\n return e.resultCode || capi.SQLITE_ERROR;\n }\n };\n }\n }),\n \"*\"\n ]\n ]);\n wasm.bindingSignatures.int64 = [\n [\n \"sqlite3_bind_int64\",\n \"int\",\n [\n \"sqlite3_stmt*\",\n \"int\",\n \"i64\"\n ]\n ],\n [\n \"sqlite3_changes64\",\n \"i64\",\n [\"sqlite3*\"]\n ],\n [\n \"sqlite3_column_int64\",\n \"i64\",\n [\"sqlite3_stmt*\", \"int\"]\n ],\n [\n \"sqlite3_deserialize\",\n \"int\",\n \"sqlite3*\",\n \"string\",\n \"*\",\n \"i64\",\n \"i64\",\n \"int\"\n ],\n [\n \"sqlite3_last_insert_rowid\",\n \"i64\",\n [\"sqlite3*\"]\n ],\n [\n \"sqlite3_malloc64\",\n \"*\",\n \"i64\"\n ],\n [\n \"sqlite3_msize\",\n \"i64\",\n \"*\"\n ],\n [\n \"sqlite3_overload_function\",\n \"int\",\n [\n \"sqlite3*\",\n \"string\",\n \"int\"\n ]\n ],\n [\n \"sqlite3_realloc64\",\n \"*\",\n \"*\",\n \"i64\"\n ],\n [\n \"sqlite3_result_int64\",\n void 0,\n \"*\",\n \"i64\"\n ],\n [\n \"sqlite3_result_zeroblob64\",\n \"int\",\n \"*\",\n \"i64\"\n ],\n [\n \"sqlite3_serialize\",\n \"*\",\n \"sqlite3*\",\n \"string\",\n \"*\",\n \"int\"\n ],\n [\n \"sqlite3_set_last_insert_rowid\",\n void 0,\n [\"sqlite3*\", \"i64\"]\n ],\n [\n \"sqlite3_status64\",\n \"int\",\n \"int\",\n \"*\",\n \"*\",\n \"int\"\n ],\n [\n \"sqlite3_total_changes64\",\n \"i64\",\n [\"sqlite3*\"]\n ],\n [\n \"sqlite3_update_hook\",\n \"*\",\n [\n \"sqlite3*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"sqlite3_update_hook\",\n signature: \"v(iippj)\",\n contextKey: (argv) => argv[0],\n callProxy: (callback) => {\n return (p, op, z0, z1, rowid) => {\n callback(p, op, wasm.cstrToJs(z0), wasm.cstrToJs(z1), rowid);\n };\n }\n }),\n \"*\"\n ]\n ],\n [\n \"sqlite3_uri_int64\",\n \"i64\",\n [\n \"sqlite3_filename\",\n \"string\",\n \"i64\"\n ]\n ],\n [\n \"sqlite3_value_int64\",\n \"i64\",\n \"sqlite3_value*\"\n ]\n ];\n if (wasm.bigIntEnabled && !!wasm.exports.sqlite3_declare_vtab) wasm.bindingSignatures.int64.push([\n \"sqlite3_create_module\",\n \"int\",\n [\n \"sqlite3*\",\n \"string\",\n \"sqlite3_module*\",\n \"*\"\n ]\n ], [\n \"sqlite3_create_module_v2\",\n \"int\",\n [\n \"sqlite3*\",\n \"string\",\n \"sqlite3_module*\",\n \"*\",\n \"*\"\n ]\n ], [\n \"sqlite3_declare_vtab\",\n \"int\",\n [\"sqlite3*\", \"string:flexible\"]\n ], [\n \"sqlite3_drop_modules\",\n \"int\",\n [\"sqlite3*\", \"**\"]\n ], [\n \"sqlite3_vtab_collation\",\n \"string\",\n \"sqlite3_index_info*\",\n \"int\"\n ], [\n \"sqlite3_vtab_distinct\",\n \"int\",\n \"sqlite3_index_info*\"\n ], [\n \"sqlite3_vtab_in\",\n \"int\",\n \"sqlite3_index_info*\",\n \"int\",\n \"int\"\n ], [\n \"sqlite3_vtab_in_first\",\n \"int\",\n \"sqlite3_value*\",\n \"**\"\n ], [\n \"sqlite3_vtab_in_next\",\n \"int\",\n \"sqlite3_value*\",\n \"**\"\n ], [\n \"sqlite3_vtab_nochange\",\n \"int\",\n \"sqlite3_context*\"\n ], [\n \"sqlite3_vtab_on_conflict\",\n \"int\",\n \"sqlite3*\"\n ], [\n \"sqlite3_vtab_rhs_value\",\n \"int\",\n \"sqlite3_index_info*\",\n \"int\",\n \"**\"\n ]);\n if (wasm.bigIntEnabled && !!wasm.exports.sqlite3_preupdate_hook) wasm.bindingSignatures.int64.push([\n \"sqlite3_preupdate_blobwrite\",\n \"int\",\n \"sqlite3*\"\n ], [\n \"sqlite3_preupdate_count\",\n \"int\",\n \"sqlite3*\"\n ], [\n \"sqlite3_preupdate_depth\",\n \"int\",\n \"sqlite3*\"\n ], [\n \"sqlite3_preupdate_hook\",\n \"*\",\n [\n \"sqlite3*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"sqlite3_preupdate_hook\",\n signature: \"v(ppippjj)\",\n contextKey: (argv) => argv[0],\n callProxy: (callback) => {\n return (p, db, op, zDb, zTbl, iKey1, iKey2) => {\n callback(p, db, op, wasm.cstrToJs(zDb), wasm.cstrToJs(zTbl), iKey1, iKey2);\n };\n }\n }),\n \"*\"\n ]\n ], [\n \"sqlite3_preupdate_new\",\n \"int\",\n [\n \"sqlite3*\",\n \"int\",\n \"**\"\n ]\n ], [\n \"sqlite3_preupdate_old\",\n \"int\",\n [\n \"sqlite3*\",\n \"int\",\n \"**\"\n ]\n ]);\n if (wasm.bigIntEnabled && !!wasm.exports.sqlite3changegroup_add && !!wasm.exports.sqlite3session_create && !!wasm.exports.sqlite3_preupdate_hook) {\n const __ipsProxy = {\n signature: \"i(ps)\",\n callProxy: (callback) => {\n return (p, s) => {\n try {\n return callback(p, wasm.cstrToJs(s)) | 0;\n } catch (e) {\n return e.resultCode || capi.SQLITE_ERROR;\n }\n };\n }\n };\n wasm.bindingSignatures.int64.push(...[\n [\n \"sqlite3changegroup_add\",\n \"int\",\n [\n \"sqlite3_changegroup*\",\n \"int\",\n \"void*\"\n ]\n ],\n [\n \"sqlite3changegroup_add_strm\",\n \"int\",\n [\n \"sqlite3_changegroup*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInput\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3changegroup_delete\",\n void 0,\n [\"sqlite3_changegroup*\"]\n ],\n [\n \"sqlite3changegroup_new\",\n \"int\",\n [\"**\"]\n ],\n [\n \"sqlite3changegroup_output\",\n \"int\",\n [\n \"sqlite3_changegroup*\",\n \"int*\",\n \"**\"\n ]\n ],\n [\n \"sqlite3changegroup_output_strm\",\n \"int\",\n [\n \"sqlite3_changegroup*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xOutput\",\n signature: \"i(ppi)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3changeset_apply\",\n \"int\",\n [\n \"sqlite3*\",\n \"int\",\n \"void*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xFilter\",\n bindScope: \"transient\",\n ...__ipsProxy\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xConflict\",\n signature: \"i(pip)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3changeset_apply_strm\",\n \"int\",\n [\n \"sqlite3*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInput\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xFilter\",\n bindScope: \"transient\",\n ...__ipsProxy\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xConflict\",\n signature: \"i(pip)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3changeset_apply_v2\",\n \"int\",\n [\n \"sqlite3*\",\n \"int\",\n \"void*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xFilter\",\n bindScope: \"transient\",\n ...__ipsProxy\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xConflict\",\n signature: \"i(pip)\",\n bindScope: \"transient\"\n }),\n \"void*\",\n \"**\",\n \"int*\",\n \"int\"\n ]\n ],\n [\n \"sqlite3changeset_apply_v2_strm\",\n \"int\",\n [\n \"sqlite3*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInput\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xFilter\",\n bindScope: \"transient\",\n ...__ipsProxy\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xConflict\",\n signature: \"i(pip)\",\n bindScope: \"transient\"\n }),\n \"void*\",\n \"**\",\n \"int*\",\n \"int\"\n ]\n ],\n [\n \"sqlite3changeset_concat\",\n \"int\",\n [\n \"int\",\n \"void*\",\n \"int\",\n \"void*\",\n \"int*\",\n \"**\"\n ]\n ],\n [\n \"sqlite3changeset_concat_strm\",\n \"int\",\n [\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInputA\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInputB\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xOutput\",\n signature: \"i(ppi)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3changeset_conflict\",\n \"int\",\n [\n \"sqlite3_changeset_iter*\",\n \"int\",\n \"**\"\n ]\n ],\n [\n \"sqlite3changeset_finalize\",\n \"int\",\n [\"sqlite3_changeset_iter*\"]\n ],\n [\n \"sqlite3changeset_fk_conflicts\",\n \"int\",\n [\"sqlite3_changeset_iter*\", \"int*\"]\n ],\n [\n \"sqlite3changeset_invert\",\n \"int\",\n [\n \"int\",\n \"void*\",\n \"int*\",\n \"**\"\n ]\n ],\n [\n \"sqlite3changeset_invert_strm\",\n \"int\",\n [\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInput\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xOutput\",\n signature: \"i(ppi)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3changeset_new\",\n \"int\",\n [\n \"sqlite3_changeset_iter*\",\n \"int\",\n \"**\"\n ]\n ],\n [\n \"sqlite3changeset_next\",\n \"int\",\n [\"sqlite3_changeset_iter*\"]\n ],\n [\n \"sqlite3changeset_old\",\n \"int\",\n [\n \"sqlite3_changeset_iter*\",\n \"int\",\n \"**\"\n ]\n ],\n [\n \"sqlite3changeset_op\",\n \"int\",\n [\n \"sqlite3_changeset_iter*\",\n \"**\",\n \"int*\",\n \"int*\",\n \"int*\"\n ]\n ],\n [\n \"sqlite3changeset_pk\",\n \"int\",\n [\n \"sqlite3_changeset_iter*\",\n \"**\",\n \"int*\"\n ]\n ],\n [\n \"sqlite3changeset_start\",\n \"int\",\n [\n \"**\",\n \"int\",\n \"*\"\n ]\n ],\n [\n \"sqlite3changeset_start_strm\",\n \"int\",\n [\n \"**\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInput\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3changeset_start_v2\",\n \"int\",\n [\n \"**\",\n \"int\",\n \"*\",\n \"int\"\n ]\n ],\n [\n \"sqlite3changeset_start_v2_strm\",\n \"int\",\n [\n \"**\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInput\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\",\n \"int\"\n ]\n ],\n [\n \"sqlite3session_attach\",\n \"int\",\n [\"sqlite3_session*\", \"string\"]\n ],\n [\n \"sqlite3session_changeset\",\n \"int\",\n [\n \"sqlite3_session*\",\n \"int*\",\n \"**\"\n ]\n ],\n [\n \"sqlite3session_changeset_size\",\n \"i64\",\n [\"sqlite3_session*\"]\n ],\n [\n \"sqlite3session_changeset_strm\",\n \"int\",\n [\n \"sqlite3_session*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xOutput\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3session_config\",\n \"int\",\n [\"int\", \"void*\"]\n ],\n [\n \"sqlite3session_create\",\n \"int\",\n [\n \"sqlite3*\",\n \"string\",\n \"**\"\n ]\n ],\n [\n \"sqlite3session_diff\",\n \"int\",\n [\n \"sqlite3_session*\",\n \"string\",\n \"string\",\n \"**\"\n ]\n ],\n [\n \"sqlite3session_enable\",\n \"int\",\n [\"sqlite3_session*\", \"int\"]\n ],\n [\n \"sqlite3session_indirect\",\n \"int\",\n [\"sqlite3_session*\", \"int\"]\n ],\n [\n \"sqlite3session_isempty\",\n \"int\",\n [\"sqlite3_session*\"]\n ],\n [\n \"sqlite3session_memory_used\",\n \"i64\",\n [\"sqlite3_session*\"]\n ],\n [\n \"sqlite3session_object_config\",\n \"int\",\n [\n \"sqlite3_session*\",\n \"int\",\n \"void*\"\n ]\n ],\n [\n \"sqlite3session_patchset\",\n \"int\",\n [\n \"sqlite3_session*\",\n \"*\",\n \"**\"\n ]\n ],\n [\n \"sqlite3session_patchset_strm\",\n \"int\",\n [\n \"sqlite3_session*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xOutput\",\n signature: \"i(ppp)\",\n bindScope: \"transient\"\n }),\n \"void*\"\n ]\n ],\n [\n \"sqlite3session_table_filter\",\n void 0,\n [\n \"sqlite3_session*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xFilter\",\n ...__ipsProxy,\n contextKey: (argv, argIndex) => argv[0]\n }),\n \"*\"\n ]\n ]\n ]);\n }\n wasm.bindingSignatures.wasmInternal = [\n [\n \"sqlite3__wasm_db_reset\",\n \"int\",\n \"sqlite3*\"\n ],\n [\n \"sqlite3__wasm_db_vfs\",\n \"sqlite3_vfs*\",\n \"sqlite3*\",\n \"string\"\n ],\n [\n \"sqlite3__wasm_vfs_create_file\",\n \"int\",\n \"sqlite3_vfs*\",\n \"string\",\n \"*\",\n \"int\"\n ],\n [\n \"sqlite3__wasm_posix_create_file\",\n \"int\",\n \"string\",\n \"*\",\n \"int\"\n ],\n [\n \"sqlite3__wasm_vfs_unlink\",\n \"int\",\n \"sqlite3_vfs*\",\n \"string\"\n ],\n [\n \"sqlite3__wasm_qfmt_token\",\n \"string:dealloc\",\n \"string\",\n \"int\"\n ]\n ];\n sqlite3.StructBinder = globalThis.Jaccwabyt({\n heap: wasm.heap8u,\n alloc: wasm.alloc,\n dealloc: wasm.dealloc,\n bigIntEnabled: wasm.bigIntEnabled,\n memberPrefix: \"$\"\n });\n delete globalThis.Jaccwabyt;\n {\n const __xString = wasm.xWrap.argAdapter(\"string\");\n wasm.xWrap.argAdapter(\"string:flexible\", (v$1) => __xString(util.flexibleString(v$1)));\n wasm.xWrap.argAdapter(\"string:static\", function(v$1) {\n if (wasm.isPtr(v$1)) return v$1;\n v$1 = \"\" + v$1;\n return this[v$1] || (this[v$1] = wasm.allocCString(v$1));\n }.bind(Object.create(null)));\n const __xArgPtr = wasm.xWrap.argAdapter(\"*\");\n const nilType = function() {};\n wasm.xWrap.argAdapter(\"sqlite3_filename\", __xArgPtr)(\"sqlite3_context*\", __xArgPtr)(\"sqlite3_value*\", __xArgPtr)(\"void*\", __xArgPtr)(\"sqlite3_changegroup*\", __xArgPtr)(\"sqlite3_changeset_iter*\", __xArgPtr)(\"sqlite3_session*\", __xArgPtr)(\"sqlite3_stmt*\", (v$1) => __xArgPtr(v$1 instanceof (sqlite3?.oo1?.Stmt || nilType) ? v$1.pointer : v$1))(\"sqlite3*\", (v$1) => __xArgPtr(v$1 instanceof (sqlite3?.oo1?.DB || nilType) ? v$1.pointer : v$1))(\"sqlite3_vfs*\", (v$1) => {\n if (\"string\" === typeof v$1) return capi.sqlite3_vfs_find(v$1) || sqlite3.SQLite3Error.toss(capi.SQLITE_NOTFOUND, \"Unknown sqlite3_vfs name:\", v$1);\n return __xArgPtr(v$1 instanceof (capi.sqlite3_vfs || nilType) ? v$1.pointer : v$1);\n });\n if (wasm.exports.sqlite3_declare_vtab) wasm.xWrap.argAdapter(\"sqlite3_index_info*\", (v$1) => __xArgPtr(v$1 instanceof (capi.sqlite3_index_info || nilType) ? v$1.pointer : v$1))(\"sqlite3_module*\", (v$1) => __xArgPtr(v$1 instanceof (capi.sqlite3_module || nilType) ? v$1.pointer : v$1));\n const __xRcPtr = wasm.xWrap.resultAdapter(\"*\");\n wasm.xWrap.resultAdapter(\"sqlite3*\", __xRcPtr)(\"sqlite3_context*\", __xRcPtr)(\"sqlite3_stmt*\", __xRcPtr)(\"sqlite3_value*\", __xRcPtr)(\"sqlite3_vfs*\", __xRcPtr)(\"void*\", __xRcPtr);\n if (0 === wasm.exports.sqlite3_step.length) {\n wasm.xWrap.doArgcCheck = false;\n sqlite3.config.warn(\"Disabling sqlite3.wasm.xWrap.doArgcCheck due to environmental quirks.\");\n }\n for (const e of wasm.bindingSignatures) capi[e[0]] = wasm.xWrap.apply(null, e);\n for (const e of wasm.bindingSignatures.wasmInternal) util[e[0]] = wasm.xWrap.apply(null, e);\n const fI64Disabled = function(fname) {\n return () => toss(fname + \"() is unavailable due to lack\", \"of BigInt support in this build.\");\n };\n for (const e of wasm.bindingSignatures.int64) capi[e[0]] = wasm.bigIntEnabled ? wasm.xWrap.apply(null, e) : fI64Disabled(e[0]);\n delete wasm.bindingSignatures;\n if (wasm.exports.sqlite3__wasm_db_error) {\n const __db_err = wasm.xWrap(\"sqlite3__wasm_db_error\", \"int\", \"sqlite3*\", \"int\", \"string\");\n util.sqlite3__wasm_db_error = function(pDb$1, resultCode, message) {\n if (resultCode instanceof sqlite3.WasmAllocError) {\n resultCode = capi.SQLITE_NOMEM;\n message = 0;\n } else if (resultCode instanceof Error) {\n message = message || \"\" + resultCode;\n resultCode = resultCode.resultCode || capi.SQLITE_ERROR;\n }\n return pDb$1 ? __db_err(pDb$1, resultCode, message) : resultCode;\n };\n } else util.sqlite3__wasm_db_error = function(pDb$1, errCode, msg) {\n console.warn(\"sqlite3__wasm_db_error() is not exported.\", arguments);\n return errCode;\n };\n }\n {\n const cJson = wasm.xCall(\"sqlite3__wasm_enum_json\");\n if (!cJson) toss(\"Maintenance required: increase sqlite3__wasm_enum_json()'s\", \"static buffer size!\");\n wasm.ctype = JSON.parse(wasm.cstrToJs(cJson));\n const defineGroups = [\n \"access\",\n \"authorizer\",\n \"blobFinalizers\",\n \"changeset\",\n \"config\",\n \"dataTypes\",\n \"dbConfig\",\n \"dbStatus\",\n \"encodings\",\n \"fcntl\",\n \"flock\",\n \"ioCap\",\n \"limits\",\n \"openFlags\",\n \"prepareFlags\",\n \"resultCodes\",\n \"sqlite3Status\",\n \"stmtStatus\",\n \"syncFlags\",\n \"trace\",\n \"txnState\",\n \"udfFlags\",\n \"version\"\n ];\n if (wasm.bigIntEnabled) defineGroups.push(\"serialize\", \"session\", \"vtab\");\n for (const t of defineGroups) for (const e of Object.entries(wasm.ctype[t])) capi[e[0]] = e[1];\n if (!wasm.functionEntry(capi.SQLITE_WASM_DEALLOC)) toss(\"Internal error: cannot resolve exported function\", \"entry SQLITE_WASM_DEALLOC (==\" + capi.SQLITE_WASM_DEALLOC + \").\");\n const __rcMap = Object.create(null);\n for (const t of [\"resultCodes\"]) for (const e of Object.entries(wasm.ctype[t])) __rcMap[e[1]] = e[0];\n capi.sqlite3_js_rc_str = (rc) => __rcMap[rc];\n const notThese = Object.assign(Object.create(null), {\n WasmTestStruct: true,\n sqlite3_kvvfs_methods: !util.isUIThread(),\n sqlite3_index_info: !wasm.bigIntEnabled,\n sqlite3_index_constraint: !wasm.bigIntEnabled,\n sqlite3_index_orderby: !wasm.bigIntEnabled,\n sqlite3_index_constraint_usage: !wasm.bigIntEnabled\n });\n for (const s of wasm.ctype.structs) if (!notThese[s.name]) capi[s.name] = sqlite3.StructBinder(s);\n if (capi.sqlite3_index_info) {\n for (const k of [\n \"sqlite3_index_constraint\",\n \"sqlite3_index_orderby\",\n \"sqlite3_index_constraint_usage\"\n ]) {\n capi.sqlite3_index_info[k] = capi[k];\n delete capi[k];\n }\n capi.sqlite3_vtab_config = wasm.xWrap(\"sqlite3__wasm_vtab_config\", \"int\", [\n \"sqlite3*\",\n \"int\",\n \"int\"\n ]);\n }\n }\n const __dbArgcMismatch = (pDb$1, f, n) => {\n return util.sqlite3__wasm_db_error(pDb$1, capi.SQLITE_MISUSE, f + \"() requires \" + n + \" argument\" + (1 === n ? \"\" : \"s\") + \".\");\n };\n const __errEncoding = (pDb$1) => {\n return util.sqlite3__wasm_db_error(pDb$1, capi.SQLITE_FORMAT, \"SQLITE_UTF8 is the only supported encoding.\");\n };\n const __argPDb = (pDb$1) => wasm.xWrap.argAdapter(\"sqlite3*\")(pDb$1);\n const __argStr = (str) => wasm.isPtr(str) ? wasm.cstrToJs(str) : str;\n const __dbCleanupMap = function(pDb$1, mode) {\n pDb$1 = __argPDb(pDb$1);\n let m = this.dbMap.get(pDb$1);\n if (!mode) {\n this.dbMap.delete(pDb$1);\n return m;\n } else if (!m && mode > 0) this.dbMap.set(pDb$1, m = Object.create(null));\n return m;\n }.bind(Object.assign(Object.create(null), { dbMap: /* @__PURE__ */ new Map() }));\n __dbCleanupMap.addCollation = function(pDb$1, name) {\n const m = __dbCleanupMap(pDb$1, 1);\n if (!m.collation) m.collation = /* @__PURE__ */ new Set();\n m.collation.add(__argStr(name).toLowerCase());\n };\n __dbCleanupMap._addUDF = function(pDb$1, name, arity, map) {\n name = __argStr(name).toLowerCase();\n let u = map.get(name);\n if (!u) map.set(name, u = /* @__PURE__ */ new Set());\n u.add(arity < 0 ? -1 : arity);\n };\n __dbCleanupMap.addFunction = function(pDb$1, name, arity) {\n const m = __dbCleanupMap(pDb$1, 1);\n if (!m.udf) m.udf = /* @__PURE__ */ new Map();\n this._addUDF(pDb$1, name, arity, m.udf);\n };\n if (wasm.exports.sqlite3_create_window_function) __dbCleanupMap.addWindowFunc = function(pDb$1, name, arity) {\n const m = __dbCleanupMap(pDb$1, 1);\n if (!m.wudf) m.wudf = /* @__PURE__ */ new Map();\n this._addUDF(pDb$1, name, arity, m.wudf);\n };\n __dbCleanupMap.cleanup = function(pDb$1) {\n pDb$1 = __argPDb(pDb$1);\n const closeArgs = [pDb$1];\n for (const name of [\n \"sqlite3_busy_handler\",\n \"sqlite3_commit_hook\",\n \"sqlite3_preupdate_hook\",\n \"sqlite3_progress_handler\",\n \"sqlite3_rollback_hook\",\n \"sqlite3_set_authorizer\",\n \"sqlite3_trace_v2\",\n \"sqlite3_update_hook\"\n ]) {\n const x = wasm.exports[name];\n if (!x) continue;\n closeArgs.length = x.length;\n try {\n capi[name](...closeArgs);\n } catch (e) {\n sqlite3.config.warn(\"close-time call of\", name + \"(\", closeArgs, \") threw:\", e);\n }\n }\n const m = __dbCleanupMap(pDb$1, 0);\n if (!m) return;\n if (m.collation) {\n for (const name of m.collation) try {\n capi.sqlite3_create_collation_v2(pDb$1, name, capi.SQLITE_UTF8, 0, 0, 0);\n } catch (e) {}\n delete m.collation;\n }\n let i;\n for (i = 0; i < 2; ++i) {\n const fmap = i ? m.wudf : m.udf;\n if (!fmap) continue;\n const func = i ? capi.sqlite3_create_window_function : capi.sqlite3_create_function_v2;\n for (const e of fmap) {\n const name = e[0], arities = e[1];\n const fargs = [\n pDb$1,\n name,\n 0,\n capi.SQLITE_UTF8,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n if (i) fargs.push(0);\n for (const arity of arities) try {\n fargs[2] = arity;\n func.apply(null, fargs);\n } catch (e$1) {}\n arities.clear();\n }\n fmap.clear();\n }\n delete m.udf;\n delete m.wudf;\n };\n {\n const __sqlite3CloseV2 = wasm.xWrap(\"sqlite3_close_v2\", \"int\", \"sqlite3*\");\n capi.sqlite3_close_v2 = function(pDb$1) {\n if (1 !== arguments.length) return __dbArgcMismatch(pDb$1, \"sqlite3_close_v2\", 1);\n if (pDb$1) try {\n __dbCleanupMap.cleanup(pDb$1);\n } catch (e) {}\n return __sqlite3CloseV2(pDb$1);\n };\n }\n if (capi.sqlite3session_create) {\n const __sqlite3SessionDelete = wasm.xWrap(\"sqlite3session_delete\", void 0, [\"sqlite3_session*\"]);\n capi.sqlite3session_delete = function(pSession) {\n if (1 !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3session_delete\", 1);\n else if (pSession) capi.sqlite3session_table_filter(pSession, 0, 0);\n __sqlite3SessionDelete(pSession);\n };\n }\n {\n const contextKey = (argv, argIndex) => {\n return \"argv[\" + argIndex + \"]:\" + argv[0] + \":\" + wasm.cstrToJs(argv[1]).toLowerCase();\n };\n const __sqlite3CreateCollationV2 = wasm.xWrap(\"sqlite3_create_collation_v2\", \"int\", [\n \"sqlite3*\",\n \"string\",\n \"int\",\n \"*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xCompare\",\n signature: \"i(pipip)\",\n contextKey\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xDestroy\",\n signature: \"v(p)\",\n contextKey\n })\n ]);\n capi.sqlite3_create_collation_v2 = function(pDb$1, zName, eTextRep, pArg, xCompare, xDestroy) {\n if (6 !== arguments.length) return __dbArgcMismatch(pDb$1, \"sqlite3_create_collation_v2\", 6);\n else if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n else if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb$1);\n try {\n const rc = __sqlite3CreateCollationV2(pDb$1, zName, eTextRep, pArg, xCompare, xDestroy);\n if (0 === rc && xCompare instanceof Function) __dbCleanupMap.addCollation(pDb$1, zName);\n return rc;\n } catch (e) {\n return util.sqlite3__wasm_db_error(pDb$1, e);\n }\n };\n capi.sqlite3_create_collation = (pDb$1, zName, eTextRep, pArg, xCompare) => {\n return 5 === arguments.length ? capi.sqlite3_create_collation_v2(pDb$1, zName, eTextRep, pArg, xCompare, 0) : __dbArgcMismatch(pDb$1, \"sqlite3_create_collation\", 5);\n };\n }\n {\n const contextKey = function(argv, argIndex) {\n return argv[0] + \":\" + (argv[2] < 0 ? -1 : argv[2]) + \":\" + argIndex + \":\" + wasm.cstrToJs(argv[1]).toLowerCase();\n };\n const __cfProxy = Object.assign(Object.create(null), {\n xInverseAndStep: {\n signature: \"v(pip)\",\n contextKey,\n callProxy: (callback) => {\n return (pCtx, argc, pArgv) => {\n try {\n callback(pCtx, ...capi.sqlite3_values_to_js(argc, pArgv));\n } catch (e) {\n capi.sqlite3_result_error_js(pCtx, e);\n }\n };\n }\n },\n xFinalAndValue: {\n signature: \"v(p)\",\n contextKey,\n callProxy: (callback) => {\n return (pCtx) => {\n try {\n capi.sqlite3_result_js(pCtx, callback(pCtx));\n } catch (e) {\n capi.sqlite3_result_error_js(pCtx, e);\n }\n };\n }\n },\n xFunc: {\n signature: \"v(pip)\",\n contextKey,\n callProxy: (callback) => {\n return (pCtx, argc, pArgv) => {\n try {\n capi.sqlite3_result_js(pCtx, callback(pCtx, ...capi.sqlite3_values_to_js(argc, pArgv)));\n } catch (e) {\n capi.sqlite3_result_error_js(pCtx, e);\n }\n };\n }\n },\n xDestroy: {\n signature: \"v(p)\",\n contextKey,\n callProxy: (callback) => {\n return (pVoid) => {\n try {\n callback(pVoid);\n } catch (e) {\n console.error(\"UDF xDestroy method threw:\", e);\n }\n };\n }\n }\n });\n const __sqlite3CreateFunction = wasm.xWrap(\"sqlite3_create_function_v2\", \"int\", [\n \"sqlite3*\",\n \"string\",\n \"int\",\n \"int\",\n \"*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xFunc\",\n ...__cfProxy.xFunc\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xStep\",\n ...__cfProxy.xInverseAndStep\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xFinal\",\n ...__cfProxy.xFinalAndValue\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xDestroy\",\n ...__cfProxy.xDestroy\n })\n ]);\n const __sqlite3CreateWindowFunction = wasm.exports.sqlite3_create_window_function ? wasm.xWrap(\"sqlite3_create_window_function\", \"int\", [\n \"sqlite3*\",\n \"string\",\n \"int\",\n \"int\",\n \"*\",\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xStep\",\n ...__cfProxy.xInverseAndStep\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xFinal\",\n ...__cfProxy.xFinalAndValue\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xValue\",\n ...__cfProxy.xFinalAndValue\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xInverse\",\n ...__cfProxy.xInverseAndStep\n }),\n new wasm.xWrap.FuncPtrAdapter({\n name: \"xDestroy\",\n ...__cfProxy.xDestroy\n })\n ]) : void 0;\n capi.sqlite3_create_function_v2 = function f(pDb$1, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy) {\n if (f.length !== arguments.length) return __dbArgcMismatch(pDb$1, \"sqlite3_create_function_v2\", f.length);\n else if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n else if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb$1);\n try {\n const rc = __sqlite3CreateFunction(pDb$1, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy);\n if (0 === rc && (xFunc instanceof Function || xStep instanceof Function || xFinal instanceof Function || xDestroy instanceof Function)) __dbCleanupMap.addFunction(pDb$1, funcName, nArg);\n return rc;\n } catch (e) {\n console.error(\"sqlite3_create_function_v2() setup threw:\", e);\n return util.sqlite3__wasm_db_error(pDb$1, e, \"Creation of UDF threw: \" + e);\n }\n };\n capi.sqlite3_create_function = function f(pDb$1, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal) {\n return f.length === arguments.length ? capi.sqlite3_create_function_v2(pDb$1, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, 0) : __dbArgcMismatch(pDb$1, \"sqlite3_create_function\", f.length);\n };\n if (__sqlite3CreateWindowFunction) capi.sqlite3_create_window_function = function f(pDb$1, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy) {\n if (f.length !== arguments.length) return __dbArgcMismatch(pDb$1, \"sqlite3_create_window_function\", f.length);\n else if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n else if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb$1);\n try {\n const rc = __sqlite3CreateWindowFunction(pDb$1, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy);\n if (0 === rc && (xStep instanceof Function || xFinal instanceof Function || xValue instanceof Function || xInverse instanceof Function || xDestroy instanceof Function)) __dbCleanupMap.addWindowFunc(pDb$1, funcName, nArg);\n return rc;\n } catch (e) {\n console.error(\"sqlite3_create_window_function() setup threw:\", e);\n return util.sqlite3__wasm_db_error(pDb$1, e, \"Creation of UDF threw: \" + e);\n }\n };\n else delete capi.sqlite3_create_window_function;\n capi.sqlite3_create_function_v2.udfSetResult = capi.sqlite3_create_function.udfSetResult = capi.sqlite3_result_js;\n if (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfSetResult = capi.sqlite3_result_js;\n capi.sqlite3_create_function_v2.udfConvertArgs = capi.sqlite3_create_function.udfConvertArgs = capi.sqlite3_values_to_js;\n if (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfConvertArgs = capi.sqlite3_values_to_js;\n capi.sqlite3_create_function_v2.udfSetError = capi.sqlite3_create_function.udfSetError = capi.sqlite3_result_error_js;\n if (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfSetError = capi.sqlite3_result_error_js;\n }\n {\n const __flexiString = (v$1, n) => {\n if (\"string\" === typeof v$1) n = -1;\n else if (util.isSQLableTypedArray(v$1)) {\n n = v$1.byteLength;\n v$1 = util.typedArrayToString(v$1 instanceof ArrayBuffer ? new Uint8Array(v$1) : v$1);\n } else if (Array.isArray(v$1)) {\n v$1 = v$1.join(\"\");\n n = -1;\n }\n return [v$1, n];\n };\n const __prepare = {\n basic: wasm.xWrap(\"sqlite3_prepare_v3\", \"int\", [\n \"sqlite3*\",\n \"string\",\n \"int\",\n \"int\",\n \"**\",\n \"**\"\n ]),\n full: wasm.xWrap(\"sqlite3_prepare_v3\", \"int\", [\n \"sqlite3*\",\n \"*\",\n \"int\",\n \"int\",\n \"**\",\n \"**\"\n ])\n };\n capi.sqlite3_prepare_v3 = function f(pDb$1, sql, sqlLen, prepFlags, ppStmt, pzTail) {\n if (f.length !== arguments.length) return __dbArgcMismatch(pDb$1, \"sqlite3_prepare_v3\", f.length);\n const [xSql, xSqlLen] = __flexiString(sql, sqlLen);\n switch (typeof xSql) {\n case \"string\": return __prepare.basic(pDb$1, xSql, xSqlLen, prepFlags, ppStmt, null);\n case \"number\": return __prepare.full(pDb$1, xSql, xSqlLen, prepFlags, ppStmt, pzTail);\n default: return util.sqlite3__wasm_db_error(pDb$1, capi.SQLITE_MISUSE, \"Invalid SQL argument type for sqlite3_prepare_v2/v3().\");\n }\n };\n capi.sqlite3_prepare_v2 = function f(pDb$1, sql, sqlLen, ppStmt, pzTail) {\n return f.length === arguments.length ? capi.sqlite3_prepare_v3(pDb$1, sql, sqlLen, 0, ppStmt, pzTail) : __dbArgcMismatch(pDb$1, \"sqlite3_prepare_v2\", f.length);\n };\n }\n {\n const __bindText = wasm.xWrap(\"sqlite3_bind_text\", \"int\", [\n \"sqlite3_stmt*\",\n \"int\",\n \"string\",\n \"int\",\n \"*\"\n ]);\n const __bindBlob = wasm.xWrap(\"sqlite3_bind_blob\", \"int\", [\n \"sqlite3_stmt*\",\n \"int\",\n \"*\",\n \"int\",\n \"*\"\n ]);\n capi.sqlite3_bind_text = function f(pStmt, iCol, text, nText, xDestroy) {\n if (f.length !== arguments.length) return __dbArgcMismatch(capi.sqlite3_db_handle(pStmt), \"sqlite3_bind_text\", f.length);\n else if (wasm.isPtr(text) || null === text) return __bindText(pStmt, iCol, text, nText, xDestroy);\n else if (text instanceof ArrayBuffer) text = new Uint8Array(text);\n else if (Array.isArray(pMem)) text = pMem.join(\"\");\n let p, n;\n try {\n if (util.isSQLableTypedArray(text)) {\n p = wasm.allocFromTypedArray(text);\n n = text.byteLength;\n } else if (\"string\" === typeof text) [p, n] = wasm.allocCString(text);\n else return util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), capi.SQLITE_MISUSE, \"Invalid 3rd argument type for sqlite3_bind_text().\");\n return __bindText(pStmt, iCol, p, n, capi.SQLITE_WASM_DEALLOC);\n } catch (e) {\n wasm.dealloc(p);\n return util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), e);\n }\n };\n capi.sqlite3_bind_blob = function f(pStmt, iCol, pMem$1, nMem, xDestroy) {\n if (f.length !== arguments.length) return __dbArgcMismatch(capi.sqlite3_db_handle(pStmt), \"sqlite3_bind_blob\", f.length);\n else if (wasm.isPtr(pMem$1) || null === pMem$1) return __bindBlob(pStmt, iCol, pMem$1, nMem, xDestroy);\n else if (pMem$1 instanceof ArrayBuffer) pMem$1 = new Uint8Array(pMem$1);\n else if (Array.isArray(pMem$1)) pMem$1 = pMem$1.join(\"\");\n let p, n;\n try {\n if (util.isBindableTypedArray(pMem$1)) {\n p = wasm.allocFromTypedArray(pMem$1);\n n = nMem >= 0 ? nMem : pMem$1.byteLength;\n } else if (\"string\" === typeof pMem$1) [p, n] = wasm.allocCString(pMem$1);\n else return util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), capi.SQLITE_MISUSE, \"Invalid 3rd argument type for sqlite3_bind_blob().\");\n return __bindBlob(pStmt, iCol, p, n, capi.SQLITE_WASM_DEALLOC);\n } catch (e) {\n wasm.dealloc(p);\n return util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), e);\n }\n };\n }\n capi.sqlite3_config = function(op, ...args) {\n if (arguments.length < 2) return capi.SQLITE_MISUSE;\n switch (op) {\n case capi.SQLITE_CONFIG_COVERING_INDEX_SCAN:\n case capi.SQLITE_CONFIG_MEMSTATUS:\n case capi.SQLITE_CONFIG_SMALL_MALLOC:\n case capi.SQLITE_CONFIG_SORTERREF_SIZE:\n case capi.SQLITE_CONFIG_STMTJRNL_SPILL:\n case capi.SQLITE_CONFIG_URI: return wasm.exports.sqlite3__wasm_config_i(op, args[0]);\n case capi.SQLITE_CONFIG_LOOKASIDE: return wasm.exports.sqlite3__wasm_config_ii(op, args[0], args[1]);\n case capi.SQLITE_CONFIG_MEMDB_MAXSIZE: return wasm.exports.sqlite3__wasm_config_j(op, args[0]);\n case capi.SQLITE_CONFIG_GETMALLOC:\n case capi.SQLITE_CONFIG_GETMUTEX:\n case capi.SQLITE_CONFIG_GETPCACHE2:\n case capi.SQLITE_CONFIG_GETPCACHE:\n case capi.SQLITE_CONFIG_HEAP:\n case capi.SQLITE_CONFIG_LOG:\n case capi.SQLITE_CONFIG_MALLOC:\n case capi.SQLITE_CONFIG_MMAP_SIZE:\n case capi.SQLITE_CONFIG_MULTITHREAD:\n case capi.SQLITE_CONFIG_MUTEX:\n case capi.SQLITE_CONFIG_PAGECACHE:\n case capi.SQLITE_CONFIG_PCACHE2:\n case capi.SQLITE_CONFIG_PCACHE:\n case capi.SQLITE_CONFIG_PCACHE_HDRSZ:\n case capi.SQLITE_CONFIG_PMASZ:\n case capi.SQLITE_CONFIG_SERIALIZED:\n case capi.SQLITE_CONFIG_SINGLETHREAD:\n case capi.SQLITE_CONFIG_SQLLOG:\n case capi.SQLITE_CONFIG_WIN32_HEAPSIZE:\n default: return capi.SQLITE_NOTFOUND;\n }\n };\n {\n const __autoExtFptr = /* @__PURE__ */ new Set();\n capi.sqlite3_auto_extension = function(fPtr) {\n if (fPtr instanceof Function) fPtr = wasm.installFunction(\"i(ppp)\", fPtr);\n else if (1 !== arguments.length || !wasm.isPtr(fPtr)) return capi.SQLITE_MISUSE;\n const rc = wasm.exports.sqlite3_auto_extension(fPtr);\n if (fPtr !== arguments[0]) if (0 === rc) __autoExtFptr.add(fPtr);\n else wasm.uninstallFunction(fPtr);\n return rc;\n };\n capi.sqlite3_cancel_auto_extension = function(fPtr) {\n if (!fPtr || 1 !== arguments.length || !wasm.isPtr(fPtr)) return 0;\n return wasm.exports.sqlite3_cancel_auto_extension(fPtr);\n };\n capi.sqlite3_reset_auto_extension = function() {\n wasm.exports.sqlite3_reset_auto_extension();\n for (const fp of __autoExtFptr) wasm.uninstallFunction(fp);\n __autoExtFptr.clear();\n };\n }\n const pKvvfs = capi.sqlite3_vfs_find(\"kvvfs\");\n if (pKvvfs) if (util.isUIThread()) {\n const kvvfsMethods = new capi.sqlite3_kvvfs_methods(wasm.exports.sqlite3__wasm_kvvfs_methods());\n delete capi.sqlite3_kvvfs_methods;\n const kvvfsMakeKey = wasm.exports.sqlite3__wasm_kvvfsMakeKeyOnPstack, pstack = wasm.pstack;\n const kvvfsStorage = (zClass) => 115 === wasm.peek(zClass) ? sessionStorage : localStorage;\n const kvvfsImpls = {\n xRead: (zClass, zKey, zBuf, nBuf) => {\n const stack = pstack.pointer, astack = wasm.scopedAllocPush();\n try {\n const zXKey = kvvfsMakeKey(zClass, zKey);\n if (!zXKey) return -3;\n const jKey = wasm.cstrToJs(zXKey);\n const jV = kvvfsStorage(zClass).getItem(jKey);\n if (!jV) return -1;\n const nV = jV.length;\n if (nBuf <= 0) return nV;\n else if (1 === nBuf) {\n wasm.poke(zBuf, 0);\n return nV;\n }\n const zV = wasm.scopedAllocCString(jV);\n if (nBuf > nV + 1) nBuf = nV + 1;\n wasm.heap8u().copyWithin(zBuf, zV, zV + nBuf - 1);\n wasm.poke(zBuf + nBuf - 1, 0);\n return nBuf - 1;\n } catch (e) {\n console.error(\"kvstorageRead()\", e);\n return -2;\n } finally {\n pstack.restore(stack);\n wasm.scopedAllocPop(astack);\n }\n },\n xWrite: (zClass, zKey, zData) => {\n const stack = pstack.pointer;\n try {\n const zXKey = kvvfsMakeKey(zClass, zKey);\n if (!zXKey) return 1;\n const jKey = wasm.cstrToJs(zXKey);\n kvvfsStorage(zClass).setItem(jKey, wasm.cstrToJs(zData));\n return 0;\n } catch (e) {\n console.error(\"kvstorageWrite()\", e);\n return capi.SQLITE_IOERR;\n } finally {\n pstack.restore(stack);\n }\n },\n xDelete: (zClass, zKey) => {\n const stack = pstack.pointer;\n try {\n const zXKey = kvvfsMakeKey(zClass, zKey);\n if (!zXKey) return 1;\n kvvfsStorage(zClass).removeItem(wasm.cstrToJs(zXKey));\n return 0;\n } catch (e) {\n console.error(\"kvstorageDelete()\", e);\n return capi.SQLITE_IOERR;\n } finally {\n pstack.restore(stack);\n }\n }\n };\n for (const k of Object.keys(kvvfsImpls)) kvvfsMethods[kvvfsMethods.memberKey(k)] = wasm.installFunction(kvvfsMethods.memberSignature(k), kvvfsImpls[k]);\n } else capi.sqlite3_vfs_unregister(pKvvfs);\n wasm.xWrap.FuncPtrAdapter.warnOnUse = true;\n const StructBinder = sqlite3.StructBinder;\n const installMethod = function callee(tgt, name, func, applyArgcCheck = callee.installMethodArgcCheck) {\n if (!(tgt instanceof StructBinder.StructType)) toss(\"Usage error: target object is-not-a StructType.\");\n else if (!(func instanceof Function) && !wasm.isPtr(func)) toss(\"Usage error: expecting a Function or WASM pointer to one.\");\n if (1 === arguments.length) return (n, f) => callee(tgt, n, f, applyArgcCheck);\n if (!callee.argcProxy) {\n callee.argcProxy = function(tgt$1, funcName, func$1, sig) {\n return function(...args) {\n if (func$1.length !== arguments.length) toss(\"Argument mismatch for\", tgt$1.structInfo.name + \"::\" + funcName + \": Native signature is:\", sig);\n return func$1.apply(this, args);\n };\n };\n callee.removeFuncList = function() {\n if (this.ondispose.__removeFuncList) {\n this.ondispose.__removeFuncList.forEach((v$1, ndx) => {\n if (\"number\" === typeof v$1) try {\n wasm.uninstallFunction(v$1);\n } catch (e) {}\n });\n delete this.ondispose.__removeFuncList;\n }\n };\n }\n const sigN = tgt.memberSignature(name);\n if (sigN.length < 2) toss(\"Member\", name, \"does not have a function pointer signature:\", sigN);\n const memKey = tgt.memberKey(name);\n const fProxy = applyArgcCheck && !wasm.isPtr(func) ? callee.argcProxy(tgt, memKey, func, sigN) : func;\n if (wasm.isPtr(fProxy)) {\n if (fProxy && !wasm.functionEntry(fProxy)) toss(\"Pointer\", fProxy, \"is not a WASM function table entry.\");\n tgt[memKey] = fProxy;\n } else {\n const pFunc = wasm.installFunction(fProxy, tgt.memberSignature(name, true));\n tgt[memKey] = pFunc;\n if (!tgt.ondispose || !tgt.ondispose.__removeFuncList) {\n tgt.addOnDispose(\"ondispose.__removeFuncList handler\", callee.removeFuncList);\n tgt.ondispose.__removeFuncList = [];\n }\n tgt.ondispose.__removeFuncList.push(memKey, pFunc);\n }\n return (n, f) => callee(tgt, n, f, applyArgcCheck);\n };\n installMethod.installMethodArgcCheck = false;\n const installMethods = function(structInstance, methods, applyArgcCheck = installMethod.installMethodArgcCheck) {\n const seen = /* @__PURE__ */ new Map();\n for (const k of Object.keys(methods)) {\n const m = methods[k];\n const prior = seen.get(m);\n if (prior) {\n const mkey = structInstance.memberKey(k);\n structInstance[mkey] = structInstance[structInstance.memberKey(prior)];\n } else {\n installMethod(structInstance, k, m, applyArgcCheck);\n seen.set(m, k);\n }\n }\n return structInstance;\n };\n StructBinder.StructType.prototype.installMethod = function callee(name, func, applyArgcCheck = installMethod.installMethodArgcCheck) {\n return arguments.length < 3 && name && \"object\" === typeof name ? installMethods(this, ...arguments) : installMethod(this, ...arguments);\n };\n StructBinder.StructType.prototype.installMethods = function(methods, applyArgcCheck = installMethod.installMethodArgcCheck) {\n return installMethods(this, methods, applyArgcCheck);\n };\n });\n globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n sqlite3.version = {\n libVersion: \"3.50.4\",\n libVersionNumber: 3050004,\n sourceId: \"2025-07-30 19:33:53 4d8adfb30e03f9cf27f800a2c1ba3c48fb4ca1b08b0f5ed59a4d5ecbf45e20a3\",\n downloadVersion: 3500400\n };\n });\n globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n const toss3 = (...args) => {\n throw new sqlite3.SQLite3Error(...args);\n };\n const capi = sqlite3.capi, wasm = sqlite3.wasm, util = sqlite3.util;\n const __ptrMap = /* @__PURE__ */ new WeakMap();\n const __stmtMap = /* @__PURE__ */ new WeakMap();\n const getOwnOption = (opts, p, dflt) => {\n const d = Object.getOwnPropertyDescriptor(opts, p);\n return d ? d.value : dflt;\n };\n const checkSqlite3Rc = function(dbPtr, sqliteResultCode) {\n if (sqliteResultCode) {\n if (dbPtr instanceof DB) dbPtr = dbPtr.pointer;\n toss3(sqliteResultCode, \"sqlite3 result code\", sqliteResultCode + \":\", dbPtr ? capi.sqlite3_errmsg(dbPtr) : capi.sqlite3_errstr(sqliteResultCode));\n }\n return arguments[0];\n };\n const __dbTraceToConsole = wasm.installFunction(\"i(ippp)\", function(t, c, p, x) {\n if (capi.SQLITE_TRACE_STMT === t) console.log(\"SQL TRACE #\" + ++this.counter + \" via sqlite3@\" + c + \":\", wasm.cstrToJs(x));\n }.bind({ counter: 0 }));\n const __vfsPostOpenCallback = Object.create(null);\n const dbCtorHelper = function ctor(...args) {\n if (!ctor._name2vfs) {\n ctor._name2vfs = Object.create(null);\n const isWorkerThread = \"function\" === typeof importScripts ? (n) => toss3(\"The VFS for\", n, \"is only available in the main window thread.\") : false;\n ctor._name2vfs[\":localStorage:\"] = {\n vfs: \"kvvfs\",\n filename: isWorkerThread || (() => \"local\")\n };\n ctor._name2vfs[\":sessionStorage:\"] = {\n vfs: \"kvvfs\",\n filename: isWorkerThread || (() => \"session\")\n };\n }\n const opt = ctor.normalizeArgs(...args);\n let fn = opt.filename, vfsName = opt.vfs, flagsStr = opt.flags;\n if (\"string\" !== typeof fn && \"number\" !== typeof fn || \"string\" !== typeof flagsStr || vfsName && \"string\" !== typeof vfsName && \"number\" !== typeof vfsName) {\n sqlite3.config.error(\"Invalid DB ctor args\", opt, arguments);\n toss3(\"Invalid arguments for DB constructor.\");\n }\n let fnJs = \"number\" === typeof fn ? wasm.cstrToJs(fn) : fn;\n const vfsCheck = ctor._name2vfs[fnJs];\n if (vfsCheck) {\n vfsName = vfsCheck.vfs;\n fn = fnJs = vfsCheck.filename(fnJs);\n }\n let pDb$1, oflags = 0;\n if (flagsStr.indexOf(\"c\") >= 0) oflags |= capi.SQLITE_OPEN_CREATE | capi.SQLITE_OPEN_READWRITE;\n if (flagsStr.indexOf(\"w\") >= 0) oflags |= capi.SQLITE_OPEN_READWRITE;\n if (0 === oflags) oflags |= capi.SQLITE_OPEN_READONLY;\n oflags |= capi.SQLITE_OPEN_EXRESCODE;\n const stack = wasm.pstack.pointer;\n try {\n const pPtr = wasm.pstack.allocPtr();\n let rc = capi.sqlite3_open_v2(fn, pPtr, oflags, vfsName || 0);\n pDb$1 = wasm.peekPtr(pPtr);\n checkSqlite3Rc(pDb$1, rc);\n capi.sqlite3_extended_result_codes(pDb$1, 1);\n if (flagsStr.indexOf(\"t\") >= 0) capi.sqlite3_trace_v2(pDb$1, capi.SQLITE_TRACE_STMT, __dbTraceToConsole, pDb$1);\n } catch (e) {\n if (pDb$1) capi.sqlite3_close_v2(pDb$1);\n throw e;\n } finally {\n wasm.pstack.restore(stack);\n }\n this.filename = fnJs;\n __ptrMap.set(this, pDb$1);\n __stmtMap.set(this, Object.create(null));\n try {\n const postInitSql = __vfsPostOpenCallback[capi.sqlite3_js_db_vfs(pDb$1) || toss3(\"Internal error: cannot get VFS for new db handle.\")];\n if (postInitSql) if (postInitSql instanceof Function) postInitSql(this, sqlite3);\n else checkSqlite3Rc(pDb$1, capi.sqlite3_exec(pDb$1, postInitSql, 0, 0, 0));\n } catch (e) {\n this.close();\n throw e;\n }\n };\n dbCtorHelper.setVfsPostOpenCallback = function(pVfs, callback) {\n if (!(callback instanceof Function)) toss3(\"dbCtorHelper.setVfsPostOpenCallback() should not be used with a non-function argument.\", arguments);\n __vfsPostOpenCallback[pVfs] = callback;\n };\n dbCtorHelper.normalizeArgs = function(filename = \":memory:\", flags = \"c\", vfs = null) {\n const arg = {};\n if (1 === arguments.length && arguments[0] && \"object\" === typeof arguments[0]) {\n Object.assign(arg, arguments[0]);\n if (void 0 === arg.flags) arg.flags = \"c\";\n if (void 0 === arg.vfs) arg.vfs = null;\n if (void 0 === arg.filename) arg.filename = \":memory:\";\n } else {\n arg.filename = filename;\n arg.flags = flags;\n arg.vfs = vfs;\n }\n return arg;\n };\n const DB = function(...args) {\n dbCtorHelper.apply(this, args);\n };\n DB.dbCtorHelper = dbCtorHelper;\n const BindTypes = {\n null: 1,\n number: 2,\n string: 3,\n boolean: 4,\n blob: 5\n };\n BindTypes[\"undefined\"], BindTypes.null;\n if (wasm.bigIntEnabled) BindTypes.bigint = BindTypes.number;\n const Stmt = function() {\n if (BindTypes !== arguments[2]) toss3(capi.SQLITE_MISUSE, \"Do not call the Stmt constructor directly. Use DB.prepare().\");\n this.db = arguments[0];\n __ptrMap.set(this, arguments[1]);\n this.parameterCount = capi.sqlite3_bind_parameter_count(this.pointer);\n };\n const affirmDbOpen = function(db) {\n if (!db.pointer) toss3(\"DB has been closed.\");\n return db;\n };\n const affirmColIndex = function(stmt, ndx) {\n if (ndx !== (ndx | 0) || ndx < 0 || ndx >= stmt.columnCount) toss3(\"Column index\", ndx, \"is out of range.\");\n return stmt;\n };\n const parseExecArgs = function(db, args) {\n const out$1 = Object.create(null);\n out$1.opt = Object.create(null);\n switch (args.length) {\n case 1:\n if (\"string\" === typeof args[0] || util.isSQLableTypedArray(args[0])) out$1.sql = args[0];\n else if (Array.isArray(args[0])) out$1.sql = args[0];\n else if (args[0] && \"object\" === typeof args[0]) {\n out$1.opt = args[0];\n out$1.sql = out$1.opt.sql;\n }\n break;\n case 2:\n out$1.sql = args[0];\n out$1.opt = args[1];\n break;\n default: toss3(\"Invalid argument count for exec().\");\n }\n out$1.sql = util.flexibleString(out$1.sql);\n if (\"string\" !== typeof out$1.sql) toss3(\"Missing SQL argument or unsupported SQL value type.\");\n const opt = out$1.opt;\n switch (opt.returnValue) {\n case \"resultRows\":\n if (!opt.resultRows) opt.resultRows = [];\n out$1.returnVal = () => opt.resultRows;\n break;\n case \"saveSql\":\n if (!opt.saveSql) opt.saveSql = [];\n out$1.returnVal = () => opt.saveSql;\n break;\n case void 0:\n case \"this\":\n out$1.returnVal = () => db;\n break;\n default: toss3(\"Invalid returnValue value:\", opt.returnValue);\n }\n if (!opt.callback && !opt.returnValue && void 0 !== opt.rowMode) {\n if (!opt.resultRows) opt.resultRows = [];\n out$1.returnVal = () => opt.resultRows;\n }\n if (opt.callback || opt.resultRows) switch (void 0 === opt.rowMode ? \"array\" : opt.rowMode) {\n case \"object\":\n out$1.cbArg = (stmt, cache) => {\n if (!cache.columnNames) cache.columnNames = stmt.getColumnNames([]);\n const row = stmt.get([]);\n const rv = Object.create(null);\n for (const i in cache.columnNames) rv[cache.columnNames[i]] = row[i];\n return rv;\n };\n break;\n case \"array\":\n out$1.cbArg = (stmt) => stmt.get([]);\n break;\n case \"stmt\":\n if (Array.isArray(opt.resultRows)) toss3(\"exec(): invalid rowMode for a resultRows array: must\", \"be one of 'array', 'object',\", \"a result column number, or column name reference.\");\n out$1.cbArg = (stmt) => stmt;\n break;\n default:\n if (util.isInt32(opt.rowMode)) {\n out$1.cbArg = (stmt) => stmt.get(opt.rowMode);\n break;\n } else if (\"string\" === typeof opt.rowMode && opt.rowMode.length > 1 && \"$\" === opt.rowMode[0]) {\n const $colName = opt.rowMode.substr(1);\n out$1.cbArg = (stmt) => {\n const rc = stmt.get(Object.create(null))[$colName];\n return void 0 === rc ? toss3(capi.SQLITE_NOTFOUND, \"exec(): unknown result column:\", $colName) : rc;\n };\n break;\n }\n toss3(\"Invalid rowMode:\", opt.rowMode);\n }\n return out$1;\n };\n const __selectFirstRow = (db, sql, bind, ...getArgs) => {\n const stmt = db.prepare(sql);\n try {\n const rc = stmt.bind(bind).step() ? stmt.get(...getArgs) : void 0;\n stmt.reset();\n return rc;\n } finally {\n stmt.finalize();\n }\n };\n const __selectAll = (db, sql, bind, rowMode) => db.exec({\n sql,\n bind,\n rowMode,\n returnValue: \"resultRows\"\n });\n DB.checkRc = (db, resultCode) => checkSqlite3Rc(db, resultCode);\n DB.prototype = {\n isOpen: function() {\n return !!this.pointer;\n },\n affirmOpen: function() {\n return affirmDbOpen(this);\n },\n close: function() {\n if (this.pointer) {\n if (this.onclose && this.onclose.before instanceof Function) try {\n this.onclose.before(this);\n } catch (e) {}\n const pDb$1 = this.pointer;\n Object.keys(__stmtMap.get(this)).forEach((k, s) => {\n if (s && s.pointer) try {\n s.finalize();\n } catch (e) {}\n });\n __ptrMap.delete(this);\n __stmtMap.delete(this);\n capi.sqlite3_close_v2(pDb$1);\n if (this.onclose && this.onclose.after instanceof Function) try {\n this.onclose.after(this);\n } catch (e) {}\n delete this.filename;\n }\n },\n changes: function(total = false, sixtyFour = false) {\n const p = affirmDbOpen(this).pointer;\n if (total) return sixtyFour ? capi.sqlite3_total_changes64(p) : capi.sqlite3_total_changes(p);\n else return sixtyFour ? capi.sqlite3_changes64(p) : capi.sqlite3_changes(p);\n },\n dbFilename: function(dbName = \"main\") {\n return capi.sqlite3_db_filename(affirmDbOpen(this).pointer, dbName);\n },\n dbName: function(dbNumber = 0) {\n return capi.sqlite3_db_name(affirmDbOpen(this).pointer, dbNumber);\n },\n dbVfsName: function(dbName = 0) {\n let rc;\n const pVfs = capi.sqlite3_js_db_vfs(affirmDbOpen(this).pointer, dbName);\n if (pVfs) {\n const v$1 = new capi.sqlite3_vfs(pVfs);\n try {\n rc = wasm.cstrToJs(v$1.$zName);\n } finally {\n v$1.dispose();\n }\n }\n return rc;\n },\n prepare: function(sql) {\n affirmDbOpen(this);\n const stack = wasm.pstack.pointer;\n let ppStmt, pStmt;\n try {\n ppStmt = wasm.pstack.alloc(8);\n DB.checkRc(this, capi.sqlite3_prepare_v2(this.pointer, sql, -1, ppStmt, null));\n pStmt = wasm.peekPtr(ppStmt);\n } finally {\n wasm.pstack.restore(stack);\n }\n if (!pStmt) toss3(\"Cannot prepare empty SQL.\");\n const stmt = new Stmt(this, pStmt, BindTypes);\n __stmtMap.get(this)[pStmt] = stmt;\n return stmt;\n },\n exec: function() {\n affirmDbOpen(this);\n const arg = parseExecArgs(this, arguments);\n if (!arg.sql) return toss3(\"exec() requires an SQL string.\");\n const opt = arg.opt;\n const callback = opt.callback;\n const resultRows = Array.isArray(opt.resultRows) ? opt.resultRows : void 0;\n let stmt;\n let bind = opt.bind;\n let evalFirstResult = !!(arg.cbArg || opt.columnNames || resultRows);\n const stack = wasm.scopedAllocPush();\n const saveSql = Array.isArray(opt.saveSql) ? opt.saveSql : void 0;\n try {\n const isTA = util.isSQLableTypedArray(arg.sql);\n let sqlByteLen = isTA ? arg.sql.byteLength : wasm.jstrlen(arg.sql);\n const ppStmt = wasm.scopedAlloc(2 * wasm.ptrSizeof + (sqlByteLen + 1));\n const pzTail = ppStmt + wasm.ptrSizeof;\n let pSql = pzTail + wasm.ptrSizeof;\n const pSqlEnd = pSql + sqlByteLen;\n if (isTA) wasm.heap8().set(arg.sql, pSql);\n else wasm.jstrcpy(arg.sql, wasm.heap8(), pSql, sqlByteLen, false);\n wasm.poke(pSql + sqlByteLen, 0);\n while (pSql && wasm.peek(pSql, \"i8\")) {\n wasm.pokePtr([ppStmt, pzTail], 0);\n DB.checkRc(this, capi.sqlite3_prepare_v3(this.pointer, pSql, sqlByteLen, 0, ppStmt, pzTail));\n const pStmt = wasm.peekPtr(ppStmt);\n pSql = wasm.peekPtr(pzTail);\n sqlByteLen = pSqlEnd - pSql;\n if (!pStmt) continue;\n if (saveSql) saveSql.push(capi.sqlite3_sql(pStmt).trim());\n stmt = new Stmt(this, pStmt, BindTypes);\n if (bind && stmt.parameterCount) {\n stmt.bind(bind);\n bind = null;\n }\n if (evalFirstResult && stmt.columnCount) {\n let gotColNames = Array.isArray(opt.columnNames) ? 0 : 1;\n evalFirstResult = false;\n if (arg.cbArg || resultRows) {\n const cbArgCache = Object.create(null);\n for (; stmt.step(); stmt._lockedByExec = false) {\n if (0 === gotColNames++) stmt.getColumnNames(cbArgCache.columnNames = opt.columnNames || []);\n stmt._lockedByExec = true;\n const row = arg.cbArg(stmt, cbArgCache);\n if (resultRows) resultRows.push(row);\n if (callback && false === callback.call(opt, row, stmt)) break;\n }\n stmt._lockedByExec = false;\n }\n if (0 === gotColNames) stmt.getColumnNames(opt.columnNames);\n } else stmt.step();\n stmt.reset().finalize();\n stmt = null;\n }\n } finally {\n wasm.scopedAllocPop(stack);\n if (stmt) {\n delete stmt._lockedByExec;\n stmt.finalize();\n }\n }\n return arg.returnVal();\n },\n createFunction: function f(name, xFunc, opt) {\n const isFunc = (f$1) => f$1 instanceof Function;\n switch (arguments.length) {\n case 1:\n opt = name;\n name = opt.name;\n xFunc = opt.xFunc || 0;\n break;\n case 2:\n if (!isFunc(xFunc)) {\n opt = xFunc;\n xFunc = opt.xFunc || 0;\n }\n break;\n case 3: break;\n default: break;\n }\n if (!opt) opt = {};\n if (\"string\" !== typeof name) toss3(\"Invalid arguments: missing function name.\");\n let xStep = opt.xStep || 0;\n let xFinal = opt.xFinal || 0;\n const xValue = opt.xValue || 0;\n const xInverse = opt.xInverse || 0;\n let isWindow = void 0;\n if (isFunc(xFunc)) {\n isWindow = false;\n if (isFunc(xStep) || isFunc(xFinal)) toss3(\"Ambiguous arguments: scalar or aggregate?\");\n xStep = xFinal = null;\n } else if (isFunc(xStep)) {\n if (!isFunc(xFinal)) toss3(\"Missing xFinal() callback for aggregate or window UDF.\");\n xFunc = null;\n } else if (isFunc(xFinal)) toss3(\"Missing xStep() callback for aggregate or window UDF.\");\n else toss3(\"Missing function-type properties.\");\n if (false === isWindow) {\n if (isFunc(xValue) || isFunc(xInverse)) toss3(\"xValue and xInverse are not permitted for non-window UDFs.\");\n } else if (isFunc(xValue)) {\n if (!isFunc(xInverse)) toss3(\"xInverse must be provided if xValue is.\");\n isWindow = true;\n } else if (isFunc(xInverse)) toss3(\"xValue must be provided if xInverse is.\");\n const pApp = opt.pApp;\n if (void 0 !== pApp && null !== pApp && (\"number\" !== typeof pApp || !util.isInt32(pApp))) toss3(\"Invalid value for pApp property. Must be a legal WASM pointer value.\");\n const xDestroy = opt.xDestroy || 0;\n if (xDestroy && !isFunc(xDestroy)) toss3(\"xDestroy property must be a function.\");\n let fFlags = 0;\n if (getOwnOption(opt, \"deterministic\")) fFlags |= capi.SQLITE_DETERMINISTIC;\n if (getOwnOption(opt, \"directOnly\")) fFlags |= capi.SQLITE_DIRECTONLY;\n if (getOwnOption(opt, \"innocuous\")) fFlags |= capi.SQLITE_INNOCUOUS;\n name = name.toLowerCase();\n const xArity = xFunc || xStep;\n const arity = getOwnOption(opt, \"arity\");\n const arityArg = \"number\" === typeof arity ? arity : xArity.length ? xArity.length - 1 : 0;\n let rc;\n if (isWindow) rc = capi.sqlite3_create_window_function(this.pointer, name, arityArg, capi.SQLITE_UTF8 | fFlags, pApp || 0, xStep, xFinal, xValue, xInverse, xDestroy);\n else rc = capi.sqlite3_create_function_v2(this.pointer, name, arityArg, capi.SQLITE_UTF8 | fFlags, pApp || 0, xFunc, xStep, xFinal, xDestroy);\n DB.checkRc(this, rc);\n return this;\n },\n selectValue: function(sql, bind, asType) {\n return __selectFirstRow(this, sql, bind, 0, asType);\n },\n selectValues: function(sql, bind, asType) {\n const stmt = this.prepare(sql), rc = [];\n try {\n stmt.bind(bind);\n while (stmt.step()) rc.push(stmt.get(0, asType));\n stmt.reset();\n } finally {\n stmt.finalize();\n }\n return rc;\n },\n selectArray: function(sql, bind) {\n return __selectFirstRow(this, sql, bind, []);\n },\n selectObject: function(sql, bind) {\n return __selectFirstRow(this, sql, bind, {});\n },\n selectArrays: function(sql, bind) {\n return __selectAll(this, sql, bind, \"array\");\n },\n selectObjects: function(sql, bind) {\n return __selectAll(this, sql, bind, \"object\");\n },\n openStatementCount: function() {\n return this.pointer ? Object.keys(__stmtMap.get(this)).length : 0;\n },\n transaction: function(callback) {\n let opener = \"BEGIN\";\n if (arguments.length > 1) {\n if (/[^a-zA-Z]/.test(arguments[0])) toss3(capi.SQLITE_MISUSE, \"Invalid argument for BEGIN qualifier.\");\n opener += \" \" + arguments[0];\n callback = arguments[1];\n }\n affirmDbOpen(this).exec(opener);\n try {\n const rc = callback(this);\n this.exec(\"COMMIT\");\n return rc;\n } catch (e) {\n this.exec(\"ROLLBACK\");\n throw e;\n }\n },\n savepoint: function(callback) {\n affirmDbOpen(this).exec(\"SAVEPOINT oo1\");\n try {\n const rc = callback(this);\n this.exec(\"RELEASE oo1\");\n return rc;\n } catch (e) {\n this.exec(\"ROLLBACK to SAVEPOINT oo1; RELEASE SAVEPOINT oo1\");\n throw e;\n }\n },\n checkRc: function(resultCode) {\n return checkSqlite3Rc(this, resultCode);\n }\n };\n const affirmStmtOpen = function(stmt) {\n if (!stmt.pointer) toss3(\"Stmt has been closed.\");\n return stmt;\n };\n const isSupportedBindType = function(v$1) {\n let t = BindTypes[null === v$1 || void 0 === v$1 ? \"null\" : typeof v$1];\n switch (t) {\n case BindTypes.boolean:\n case BindTypes.null:\n case BindTypes.number:\n case BindTypes.string: return t;\n case BindTypes.bigint: if (wasm.bigIntEnabled) return t;\n default: return util.isBindableTypedArray(v$1) ? BindTypes.blob : void 0;\n }\n };\n const affirmSupportedBindType = function(v$1) {\n return isSupportedBindType(v$1) || toss3(\"Unsupported bind() argument type:\", typeof v$1);\n };\n const affirmParamIndex = function(stmt, key) {\n const n = \"number\" === typeof key ? key : capi.sqlite3_bind_parameter_index(stmt.pointer, key);\n if (0 === n || !util.isInt32(n)) toss3(\"Invalid bind() parameter name: \" + key);\n else if (n < 1 || n > stmt.parameterCount) toss3(\"Bind index\", key, \"is out of range.\");\n return n;\n };\n const affirmNotLockedByExec = function(stmt, currentOpName) {\n if (stmt._lockedByExec) toss3(\"Operation is illegal when statement is locked:\", currentOpName);\n return stmt;\n };\n const bindOne = function f(stmt, ndx, bindType, val) {\n affirmNotLockedByExec(affirmStmtOpen(stmt), \"bind()\");\n if (!f._) {\n f._tooBigInt = (v$1) => toss3(\"BigInt value is too big to store without precision loss:\", v$1);\n f._ = { string: function(stmt$1, ndx$1, val$1, asBlob) {\n const [pStr, n] = wasm.allocCString(val$1, true);\n return (asBlob ? capi.sqlite3_bind_blob : capi.sqlite3_bind_text)(stmt$1.pointer, ndx$1, pStr, n, capi.SQLITE_WASM_DEALLOC);\n } };\n }\n affirmSupportedBindType(val);\n ndx = affirmParamIndex(stmt, ndx);\n let rc = 0;\n switch (null === val || void 0 === val ? BindTypes.null : bindType) {\n case BindTypes.null:\n rc = capi.sqlite3_bind_null(stmt.pointer, ndx);\n break;\n case BindTypes.string:\n rc = f._.string(stmt, ndx, val, false);\n break;\n case BindTypes.number: {\n let m;\n if (util.isInt32(val)) m = capi.sqlite3_bind_int;\n else if (\"bigint\" === typeof val) if (!util.bigIntFits64(val)) f._tooBigInt(val);\n else if (wasm.bigIntEnabled) m = capi.sqlite3_bind_int64;\n else if (util.bigIntFitsDouble(val)) {\n val = Number(val);\n m = capi.sqlite3_bind_double;\n } else f._tooBigInt(val);\n else {\n val = Number(val);\n if (wasm.bigIntEnabled && Number.isInteger(val)) m = capi.sqlite3_bind_int64;\n else m = capi.sqlite3_bind_double;\n }\n rc = m(stmt.pointer, ndx, val);\n break;\n }\n case BindTypes.boolean:\n rc = capi.sqlite3_bind_int(stmt.pointer, ndx, val ? 1 : 0);\n break;\n case BindTypes.blob: {\n if (\"string\" === typeof val) {\n rc = f._.string(stmt, ndx, val, true);\n break;\n } else if (val instanceof ArrayBuffer) val = new Uint8Array(val);\n else if (!util.isBindableTypedArray(val)) toss3(\"Binding a value as a blob requires\", \"that it be a string, Uint8Array, Int8Array, or ArrayBuffer.\");\n const pBlob = wasm.alloc(val.byteLength || 1);\n wasm.heap8().set(val.byteLength ? val : [0], pBlob);\n rc = capi.sqlite3_bind_blob(stmt.pointer, ndx, pBlob, val.byteLength, capi.SQLITE_WASM_DEALLOC);\n break;\n }\n default:\n sqlite3.config.warn(\"Unsupported bind() argument type:\", val);\n toss3(\"Unsupported bind() argument type: \" + typeof val);\n }\n if (rc) DB.checkRc(stmt.db.pointer, rc);\n stmt._mayGet = false;\n return stmt;\n };\n Stmt.prototype = {\n finalize: function() {\n if (this.pointer) {\n affirmNotLockedByExec(this, \"finalize()\");\n const rc = capi.sqlite3_finalize(this.pointer);\n delete __stmtMap.get(this.db)[this.pointer];\n __ptrMap.delete(this);\n delete this._mayGet;\n delete this.parameterCount;\n delete this._lockedByExec;\n delete this.db;\n return rc;\n }\n },\n clearBindings: function() {\n affirmNotLockedByExec(affirmStmtOpen(this), \"clearBindings()\");\n capi.sqlite3_clear_bindings(this.pointer);\n this._mayGet = false;\n return this;\n },\n reset: function(alsoClearBinds) {\n affirmNotLockedByExec(this, \"reset()\");\n if (alsoClearBinds) this.clearBindings();\n const rc = capi.sqlite3_reset(affirmStmtOpen(this).pointer);\n this._mayGet = false;\n checkSqlite3Rc(this.db, rc);\n return this;\n },\n bind: function() {\n affirmStmtOpen(this);\n let ndx, arg;\n switch (arguments.length) {\n case 1:\n ndx = 1;\n arg = arguments[0];\n break;\n case 2:\n ndx = arguments[0];\n arg = arguments[1];\n break;\n default: toss3(\"Invalid bind() arguments.\");\n }\n if (void 0 === arg) return this;\n else if (!this.parameterCount) toss3(\"This statement has no bindable parameters.\");\n this._mayGet = false;\n if (null === arg) return bindOne(this, ndx, BindTypes.null, arg);\n else if (Array.isArray(arg)) {\n if (1 !== arguments.length) toss3(\"When binding an array, an index argument is not permitted.\");\n arg.forEach((v$1, i) => bindOne(this, i + 1, affirmSupportedBindType(v$1), v$1));\n return this;\n } else if (arg instanceof ArrayBuffer) arg = new Uint8Array(arg);\n if (\"object\" === typeof arg && !util.isBindableTypedArray(arg)) {\n if (1 !== arguments.length) toss3(\"When binding an object, an index argument is not permitted.\");\n Object.keys(arg).forEach((k) => bindOne(this, k, affirmSupportedBindType(arg[k]), arg[k]));\n return this;\n } else return bindOne(this, ndx, affirmSupportedBindType(arg), arg);\n toss3(\"Should not reach this point.\");\n },\n bindAsBlob: function(ndx, arg) {\n affirmStmtOpen(this);\n if (1 === arguments.length) {\n arg = ndx;\n ndx = 1;\n }\n const t = affirmSupportedBindType(arg);\n if (BindTypes.string !== t && BindTypes.blob !== t && BindTypes.null !== t) toss3(\"Invalid value type for bindAsBlob()\");\n return bindOne(this, ndx, BindTypes.blob, arg);\n },\n step: function() {\n affirmNotLockedByExec(this, \"step()\");\n const rc = capi.sqlite3_step(affirmStmtOpen(this).pointer);\n switch (rc) {\n case capi.SQLITE_DONE: return this._mayGet = false;\n case capi.SQLITE_ROW: return this._mayGet = true;\n default:\n this._mayGet = false;\n sqlite3.config.warn(\"sqlite3_step() rc=\", rc, capi.sqlite3_js_rc_str(rc), \"SQL =\", capi.sqlite3_sql(this.pointer));\n DB.checkRc(this.db.pointer, rc);\n }\n },\n stepReset: function() {\n this.step();\n return this.reset();\n },\n stepFinalize: function() {\n try {\n const rc = this.step();\n this.reset();\n return rc;\n } finally {\n try {\n this.finalize();\n } catch (e) {}\n }\n },\n get: function(ndx, asType) {\n if (!affirmStmtOpen(this)._mayGet) toss3(\"Stmt.step() has not (recently) returned true.\");\n if (Array.isArray(ndx)) {\n let i = 0;\n const n = this.columnCount;\n while (i < n) ndx[i] = this.get(i++);\n return ndx;\n } else if (ndx && \"object\" === typeof ndx) {\n let i = 0;\n const n = this.columnCount;\n while (i < n) ndx[capi.sqlite3_column_name(this.pointer, i)] = this.get(i++);\n return ndx;\n }\n affirmColIndex(this, ndx);\n switch (void 0 === asType ? capi.sqlite3_column_type(this.pointer, ndx) : asType) {\n case capi.SQLITE_NULL: return null;\n case capi.SQLITE_INTEGER: if (wasm.bigIntEnabled) {\n const rc = capi.sqlite3_column_int64(this.pointer, ndx);\n if (rc >= Number.MIN_SAFE_INTEGER && rc <= Number.MAX_SAFE_INTEGER) return Number(rc).valueOf();\n return rc;\n } else {\n const rc = capi.sqlite3_column_double(this.pointer, ndx);\n if (rc > Number.MAX_SAFE_INTEGER || rc < Number.MIN_SAFE_INTEGER) toss3(\"Integer is out of range for JS integer range: \" + rc);\n return util.isInt32(rc) ? rc | 0 : rc;\n }\n case capi.SQLITE_FLOAT: return capi.sqlite3_column_double(this.pointer, ndx);\n case capi.SQLITE_TEXT: return capi.sqlite3_column_text(this.pointer, ndx);\n case capi.SQLITE_BLOB: {\n const n = capi.sqlite3_column_bytes(this.pointer, ndx), ptr = capi.sqlite3_column_blob(this.pointer, ndx), rc = new Uint8Array(n);\n if (n) rc.set(wasm.heap8u().slice(ptr, ptr + n), 0);\n if (n && this.db._blobXfer instanceof Array) this.db._blobXfer.push(rc.buffer);\n return rc;\n }\n default: toss3(\"Don't know how to translate\", \"type of result column #\" + ndx + \".\");\n }\n toss3(\"Not reached.\");\n },\n getInt: function(ndx) {\n return this.get(ndx, capi.SQLITE_INTEGER);\n },\n getFloat: function(ndx) {\n return this.get(ndx, capi.SQLITE_FLOAT);\n },\n getString: function(ndx) {\n return this.get(ndx, capi.SQLITE_TEXT);\n },\n getBlob: function(ndx) {\n return this.get(ndx, capi.SQLITE_BLOB);\n },\n getJSON: function(ndx) {\n const s = this.get(ndx, capi.SQLITE_STRING);\n return null === s ? s : JSON.parse(s);\n },\n getColumnName: function(ndx) {\n return capi.sqlite3_column_name(affirmColIndex(affirmStmtOpen(this), ndx).pointer, ndx);\n },\n getColumnNames: function(tgt = []) {\n affirmColIndex(affirmStmtOpen(this), 0);\n const n = this.columnCount;\n for (let i = 0; i < n; ++i) tgt.push(capi.sqlite3_column_name(this.pointer, i));\n return tgt;\n },\n getParamIndex: function(name) {\n return affirmStmtOpen(this).parameterCount ? capi.sqlite3_bind_parameter_index(this.pointer, name) : void 0;\n },\n getParamName: function(ndx) {\n return affirmStmtOpen(this).parameterCount ? capi.sqlite3_bind_parameter_name(this.pointer, ndx) : void 0;\n },\n isBusy: function() {\n return 0 !== capi.sqlite3_stmt_busy(affirmStmtOpen(this));\n },\n isReadOnly: function() {\n return 0 !== capi.sqlite3_stmt_readonly(affirmStmtOpen(this));\n }\n };\n {\n const prop = {\n enumerable: true,\n get: function() {\n return __ptrMap.get(this);\n },\n set: () => toss3(\"The pointer property is read-only.\")\n };\n Object.defineProperty(Stmt.prototype, \"pointer\", prop);\n Object.defineProperty(DB.prototype, \"pointer\", prop);\n }\n Object.defineProperty(Stmt.prototype, \"columnCount\", {\n enumerable: false,\n get: function() {\n return capi.sqlite3_column_count(this.pointer);\n },\n set: () => toss3(\"The columnCount property is read-only.\")\n });\n sqlite3.oo1 = {\n DB,\n Stmt\n };\n if (util.isUIThread()) {\n sqlite3.oo1.JsStorageDb = function(storageName = \"session\") {\n const opt = dbCtorHelper.normalizeArgs(...arguments);\n storageName = opt.filename;\n if (\"session\" !== storageName && \"local\" !== storageName) toss3(\"JsStorageDb db name must be one of 'session' or 'local'.\");\n opt.vfs = \"kvvfs\";\n dbCtorHelper.call(this, opt);\n };\n const jdb = sqlite3.oo1.JsStorageDb;\n jdb.prototype = Object.create(DB.prototype);\n jdb.clearStorage = capi.sqlite3_js_kvvfs_clear;\n jdb.prototype.clearStorage = function() {\n return jdb.clearStorage(affirmDbOpen(this).filename);\n };\n jdb.storageSize = capi.sqlite3_js_kvvfs_size;\n jdb.prototype.storageSize = function() {\n return jdb.storageSize(affirmDbOpen(this).filename);\n };\n }\n });\n globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n const util = sqlite3.util;\n sqlite3.initWorker1API = function() {\n const toss = (...args) => {\n throw new Error(args.join(\" \"));\n };\n if (!(globalThis.WorkerGlobalScope instanceof Function)) toss(\"initWorker1API() must be run from a Worker thread.\");\n const sqlite3$1 = this.sqlite3 || toss(\"Missing this.sqlite3 object.\");\n const DB = sqlite3$1.oo1.DB;\n const getDbId = function(db) {\n let id = wState.idMap.get(db);\n if (id) return id;\n id = \"db#\" + ++wState.idSeq + \"@\" + db.pointer;\n wState.idMap.set(db, id);\n return id;\n };\n const wState = {\n dbList: [],\n idSeq: 0,\n idMap: /* @__PURE__ */ new WeakMap(),\n xfer: [],\n open: function(opt) {\n const db = new DB(opt);\n this.dbs[getDbId(db)] = db;\n if (this.dbList.indexOf(db) < 0) this.dbList.push(db);\n return db;\n },\n close: function(db, alsoUnlink) {\n if (db) {\n delete this.dbs[getDbId(db)];\n const filename = db.filename;\n const pVfs = util.sqlite3__wasm_db_vfs(db.pointer, 0);\n db.close();\n const ddNdx = this.dbList.indexOf(db);\n if (ddNdx >= 0) this.dbList.splice(ddNdx, 1);\n if (alsoUnlink && filename && pVfs) util.sqlite3__wasm_vfs_unlink(pVfs, filename);\n }\n },\n post: function(msg, xferList) {\n if (xferList && xferList.length) {\n globalThis.postMessage(msg, Array.from(xferList));\n xferList.length = 0;\n } else globalThis.postMessage(msg);\n },\n dbs: Object.create(null),\n getDb: function(id, require = true) {\n return this.dbs[id] || (require ? toss(\"Unknown (or closed) DB ID:\", id) : void 0);\n }\n };\n const affirmDbOpen = function(db = wState.dbList[0]) {\n return db && db.pointer ? db : toss(\"DB is not opened.\");\n };\n const getMsgDb = function(msgData, affirmExists = true) {\n const db = wState.getDb(msgData.dbId, false) || wState.dbList[0];\n return affirmExists ? affirmDbOpen(db) : db;\n };\n const getDefaultDbId = function() {\n return wState.dbList[0] && getDbId(wState.dbList[0]);\n };\n const wMsgHandler = {\n open: function(ev) {\n const oargs = Object.create(null), args = ev.args || Object.create(null);\n if (args.simulateError) toss(\"Throwing because of simulateError flag.\");\n const rc = Object.create(null);\n oargs.vfs = args.vfs;\n oargs.filename = args.filename || \"\";\n const db = wState.open(oargs);\n rc.filename = db.filename;\n rc.persistent = !!sqlite3$1.capi.sqlite3_js_db_uses_vfs(db.pointer, \"opfs\");\n rc.dbId = getDbId(db);\n rc.vfs = db.dbVfsName();\n return rc;\n },\n close: function(ev) {\n const db = getMsgDb(ev, false);\n const response = { filename: db && db.filename };\n if (db) {\n const doUnlink = ev.args && \"object\" === typeof ev.args ? !!ev.args.unlink : false;\n wState.close(db, doUnlink);\n }\n return response;\n },\n exec: function(ev) {\n const rc = \"string\" === typeof ev.args ? { sql: ev.args } : ev.args || Object.create(null);\n if (\"stmt\" === rc.rowMode) toss(\"Invalid rowMode for 'exec': stmt mode\", \"does not work in the Worker API.\");\n else if (!rc.sql) toss(\"'exec' requires input SQL.\");\n const db = getMsgDb(ev);\n if (rc.callback || Array.isArray(rc.resultRows)) db._blobXfer = wState.xfer;\n const theCallback = rc.callback;\n let rowNumber = 0;\n const hadColNames = !!rc.columnNames;\n if (\"string\" === typeof theCallback) {\n if (!hadColNames) rc.columnNames = [];\n rc.callback = function(row, stmt) {\n wState.post({\n type: theCallback,\n columnNames: rc.columnNames,\n rowNumber: ++rowNumber,\n row\n }, wState.xfer);\n };\n }\n try {\n const changeCount = !!rc.countChanges ? db.changes(true, 64 === rc.countChanges) : void 0;\n db.exec(rc);\n if (void 0 !== changeCount) rc.changeCount = db.changes(true, 64 === rc.countChanges) - changeCount;\n const lastInsertRowId = !!rc.lastInsertRowId ? sqlite3$1.capi.sqlite3_last_insert_rowid(db) : void 0;\n if (void 0 !== lastInsertRowId) rc.lastInsertRowId = lastInsertRowId;\n if (rc.callback instanceof Function) {\n rc.callback = theCallback;\n wState.post({\n type: theCallback,\n columnNames: rc.columnNames,\n rowNumber: null,\n row: void 0\n });\n }\n } finally {\n delete db._blobXfer;\n if (rc.callback) rc.callback = theCallback;\n }\n return rc;\n },\n \"config-get\": function() {\n const rc = Object.create(null), src = sqlite3$1.config;\n [\"bigIntEnabled\"].forEach(function(k) {\n if (Object.getOwnPropertyDescriptor(src, k)) rc[k] = src[k];\n });\n rc.version = sqlite3$1.version;\n rc.vfsList = sqlite3$1.capi.sqlite3_js_vfs_list();\n return rc;\n },\n export: function(ev) {\n const db = getMsgDb(ev);\n const response = {\n byteArray: sqlite3$1.capi.sqlite3_js_db_export(db.pointer),\n filename: db.filename,\n mimetype: \"application/x-sqlite3\"\n };\n wState.xfer.push(response.byteArray.buffer);\n return response;\n },\n toss: function(ev) {\n toss(\"Testing worker exception\");\n }\n };\n globalThis.onmessage = async function(ev) {\n ev = ev.data;\n let result, dbId = ev.dbId, evType = ev.type;\n const arrivalTime = performance.now();\n try {\n if (wMsgHandler.hasOwnProperty(evType) && wMsgHandler[evType] instanceof Function) result = await wMsgHandler[evType](ev);\n else toss(\"Unknown db worker message type:\", ev.type);\n } catch (err$1) {\n evType = \"error\";\n result = {\n operation: ev.type,\n message: err$1.message,\n errorClass: err$1.name,\n input: ev\n };\n if (err$1.stack) result.stack = \"string\" === typeof err$1.stack ? err$1.stack.split(/\\n\\s*/) : err$1.stack;\n }\n if (!dbId) dbId = result.dbId || getDefaultDbId();\n wState.post({\n type: evType,\n dbId,\n messageId: ev.messageId,\n workerReceivedTime: arrivalTime,\n workerRespondTime: performance.now(),\n departureTime: ev.departureTime,\n result\n }, wState.xfer);\n };\n globalThis.postMessage({\n type: \"sqlite3-api\",\n result: \"worker1-ready\"\n });\n }.bind({ sqlite3 });\n });\n globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n const wasm = sqlite3.wasm, capi = sqlite3.capi, toss = sqlite3.util.toss3;\n const vfs = Object.create(null);\n sqlite3.vfs = vfs;\n capi.sqlite3_vfs.prototype.registerVfs = function(asDefault = false) {\n if (!(this instanceof sqlite3.capi.sqlite3_vfs)) toss(\"Expecting a sqlite3_vfs-type argument.\");\n const rc = capi.sqlite3_vfs_register(this, asDefault ? 1 : 0);\n if (rc) toss(\"sqlite3_vfs_register(\", this, \") failed with rc\", rc);\n if (this.pointer !== capi.sqlite3_vfs_find(this.$zName)) toss(\"BUG: sqlite3_vfs_find(vfs.$zName) failed for just-installed VFS\", this);\n return this;\n };\n vfs.installVfs = function(opt) {\n let count = 0;\n const propList = [\"io\", \"vfs\"];\n for (const key of propList) {\n const o = opt[key];\n if (o) {\n ++count;\n o.struct.installMethods(o.methods, !!o.applyArgcCheck);\n if (\"vfs\" === key) {\n if (!o.struct.$zName && \"string\" === typeof o.name) o.struct.addOnDispose(o.struct.$zName = wasm.allocCString(o.name));\n o.struct.registerVfs(!!o.asDefault);\n }\n }\n }\n if (!count) toss(\"Misuse: installVfs() options object requires at least\", \"one of:\", propList);\n return this;\n };\n });\n globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n if (!sqlite3.wasm.exports.sqlite3_declare_vtab) return;\n const wasm = sqlite3.wasm, capi = sqlite3.capi, toss = sqlite3.util.toss3;\n const vtab = Object.create(null);\n sqlite3.vtab = vtab;\n const sii = capi.sqlite3_index_info;\n sii.prototype.nthConstraint = function(n, asPtr = false) {\n if (n < 0 || n >= this.$nConstraint) return false;\n const ptr = this.$aConstraint + sii.sqlite3_index_constraint.structInfo.sizeof * n;\n return asPtr ? ptr : new sii.sqlite3_index_constraint(ptr);\n };\n sii.prototype.nthConstraintUsage = function(n, asPtr = false) {\n if (n < 0 || n >= this.$nConstraint) return false;\n const ptr = this.$aConstraintUsage + sii.sqlite3_index_constraint_usage.structInfo.sizeof * n;\n return asPtr ? ptr : new sii.sqlite3_index_constraint_usage(ptr);\n };\n sii.prototype.nthOrderBy = function(n, asPtr = false) {\n if (n < 0 || n >= this.$nOrderBy) return false;\n const ptr = this.$aOrderBy + sii.sqlite3_index_orderby.structInfo.sizeof * n;\n return asPtr ? ptr : new sii.sqlite3_index_orderby(ptr);\n };\n const __xWrapFactory = function(methodName, StructType) {\n return function(ptr, removeMapping = false) {\n if (0 === arguments.length) ptr = new StructType();\n if (ptr instanceof StructType) {\n this.set(ptr.pointer, ptr);\n return ptr;\n } else if (!wasm.isPtr(ptr)) sqlite3.SQLite3Error.toss(\"Invalid argument to\", methodName + \"()\");\n let rc = this.get(ptr);\n if (removeMapping) this.delete(ptr);\n return rc;\n }.bind(/* @__PURE__ */ new Map());\n };\n const StructPtrMapper = function(name, StructType) {\n const __xWrap = __xWrapFactory(name, StructType);\n return Object.assign(Object.create(null), {\n StructType,\n create: (ppOut) => {\n const rc = __xWrap();\n wasm.pokePtr(ppOut, rc.pointer);\n return rc;\n },\n get: (pCObj) => __xWrap(pCObj),\n unget: (pCObj) => __xWrap(pCObj, true),\n dispose: (pCObj) => {\n const o = __xWrap(pCObj, true);\n if (o) o.dispose();\n }\n });\n };\n vtab.xVtab = StructPtrMapper(\"xVtab\", capi.sqlite3_vtab);\n vtab.xCursor = StructPtrMapper(\"xCursor\", capi.sqlite3_vtab_cursor);\n vtab.xIndexInfo = (pIdxInfo) => new capi.sqlite3_index_info(pIdxInfo);\n vtab.xError = function f(methodName, err$1, defaultRc) {\n if (f.errorReporter instanceof Function) try {\n f.errorReporter(\"sqlite3_module::\" + methodName + \"(): \" + err$1.message);\n } catch (e) {}\n let rc;\n if (err$1 instanceof sqlite3.WasmAllocError) rc = capi.SQLITE_NOMEM;\n else if (arguments.length > 2) rc = defaultRc;\n else if (err$1 instanceof sqlite3.SQLite3Error) rc = err$1.resultCode;\n return rc || capi.SQLITE_ERROR;\n };\n vtab.xError.errorReporter = console.error.bind(console);\n vtab.xRowid = (ppRowid64, value) => wasm.poke(ppRowid64, value, \"i64\");\n vtab.setupModule = function(opt) {\n let createdMod = false;\n const mod = this instanceof capi.sqlite3_module ? this : opt.struct || (createdMod = new capi.sqlite3_module());\n try {\n const methods = opt.methods || toss(\"Missing 'methods' object.\");\n for (const e of Object.entries({\n xConnect: \"xCreate\",\n xDisconnect: \"xDestroy\"\n })) {\n const k = e[0], v$1 = e[1];\n if (true === methods[k]) methods[k] = methods[v$1];\n else if (true === methods[v$1]) methods[v$1] = methods[k];\n }\n if (opt.catchExceptions) {\n const fwrap = function(methodName, func) {\n if ([\"xConnect\", \"xCreate\"].indexOf(methodName) >= 0) return function(pDb$1, pAux, argc, argv, ppVtab, pzErr) {\n try {\n return func(...arguments) || 0;\n } catch (e) {\n if (!(e instanceof sqlite3.WasmAllocError)) {\n wasm.dealloc(wasm.peekPtr(pzErr));\n wasm.pokePtr(pzErr, wasm.allocCString(e.message));\n }\n return vtab.xError(methodName, e);\n }\n };\n else return function(...args) {\n try {\n return func(...args) || 0;\n } catch (e) {\n return vtab.xError(methodName, e);\n }\n };\n };\n const mnames = [\n \"xCreate\",\n \"xConnect\",\n \"xBestIndex\",\n \"xDisconnect\",\n \"xDestroy\",\n \"xOpen\",\n \"xClose\",\n \"xFilter\",\n \"xNext\",\n \"xEof\",\n \"xColumn\",\n \"xRowid\",\n \"xUpdate\",\n \"xBegin\",\n \"xSync\",\n \"xCommit\",\n \"xRollback\",\n \"xFindFunction\",\n \"xRename\",\n \"xSavepoint\",\n \"xRelease\",\n \"xRollbackTo\",\n \"xShadowName\"\n ];\n const remethods = Object.create(null);\n for (const k of mnames) {\n const m = methods[k];\n if (!(m instanceof Function)) continue;\n else if (\"xConnect\" === k && methods.xCreate === m) remethods[k] = methods.xCreate;\n else if (\"xCreate\" === k && methods.xConnect === m) remethods[k] = methods.xConnect;\n else remethods[k] = fwrap(k, m);\n }\n mod.installMethods(remethods, false);\n } else mod.installMethods(methods, !!opt.applyArgcCheck);\n if (0 === mod.$iVersion) {\n let v$1;\n if (\"number\" === typeof opt.iVersion) v$1 = opt.iVersion;\n else if (mod.$xShadowName) v$1 = 3;\n else if (mod.$xSavePoint || mod.$xRelease || mod.$xRollbackTo) v$1 = 2;\n else v$1 = 1;\n mod.$iVersion = v$1;\n }\n } catch (e) {\n if (createdMod) createdMod.dispose();\n throw e;\n }\n return mod;\n };\n capi.sqlite3_module.prototype.setupModule = function(opt) {\n return vtab.setupModule.call(this, opt);\n };\n });\n globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n const installOpfsVfs = function callee(options) {\n if (!globalThis.SharedArrayBuffer || !globalThis.Atomics) return Promise.reject(/* @__PURE__ */ new Error(\"Cannot install OPFS: Missing SharedArrayBuffer and/or Atomics. The server must emit the COOP/COEP response headers to enable those. See https://sqlite.org/wasm/doc/trunk/persistence.md#coop-coep\"));\n else if (\"undefined\" === typeof WorkerGlobalScope) return Promise.reject(/* @__PURE__ */ new Error(\"The OPFS sqlite3_vfs cannot run in the main thread because it requires Atomics.wait().\"));\n else if (!globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle || !globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle || !navigator?.storage?.getDirectory) return Promise.reject(/* @__PURE__ */ new Error(\"Missing required OPFS APIs.\"));\n if (!options || \"object\" !== typeof options) options = Object.create(null);\n const urlParams = new URL(globalThis.location.href).searchParams;\n if (urlParams.has(\"opfs-disable\")) return Promise.resolve(sqlite3);\n if (void 0 === options.verbose) options.verbose = urlParams.has(\"opfs-verbose\") ? +urlParams.get(\"opfs-verbose\") || 2 : 1;\n if (void 0 === options.sanityChecks) options.sanityChecks = urlParams.has(\"opfs-sanity-check\");\n if (void 0 === options.proxyUri) options.proxyUri = callee.defaultProxyUri;\n if (\"function\" === typeof options.proxyUri) options.proxyUri = options.proxyUri();\n return new Promise(function(promiseResolve_, promiseReject_) {\n const loggers = [\n sqlite3.config.error,\n sqlite3.config.warn,\n sqlite3.config.log\n ];\n const logImpl = (level, ...args) => {\n if (options.verbose > level) loggers[level](\"OPFS syncer:\", ...args);\n };\n const log = (...args) => logImpl(2, ...args);\n const warn = (...args) => logImpl(1, ...args);\n const error = (...args) => logImpl(0, ...args);\n const toss = sqlite3.util.toss;\n const capi = sqlite3.capi;\n const util = sqlite3.util;\n const wasm = sqlite3.wasm;\n const sqlite3_vfs = capi.sqlite3_vfs;\n const sqlite3_file = capi.sqlite3_file;\n const sqlite3_io_methods = capi.sqlite3_io_methods;\n const opfsUtil = Object.create(null);\n const thisThreadHasOPFS = () => {\n return globalThis.FileSystemHandle && globalThis.FileSystemDirectoryHandle && globalThis.FileSystemFileHandle && globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle && navigator?.storage?.getDirectory;\n };\n opfsUtil.metrics = {\n dump: function() {\n let k, n = 0, t = 0, w = 0;\n for (k in state$1.opIds) {\n const m = metrics[k];\n n += m.count;\n t += m.time;\n w += m.wait;\n m.avgTime = m.count && m.time ? m.time / m.count : 0;\n m.avgWait = m.count && m.wait ? m.wait / m.count : 0;\n }\n sqlite3.config.log(globalThis.location.href, \"metrics for\", globalThis.location.href, \":\", metrics, \"\\nTotal of\", n, \"op(s) for\", t, \"ms (incl. \" + w + \" ms of waiting on the async side)\");\n sqlite3.config.log(\"Serialization metrics:\", metrics.s11n);\n W.postMessage({ type: \"opfs-async-metrics\" });\n },\n reset: function() {\n let k;\n const r = (m) => m.count = m.time = m.wait = 0;\n for (k in state$1.opIds) r(metrics[k] = Object.create(null));\n let s = metrics.s11n = Object.create(null);\n s = s.serialize = Object.create(null);\n s.count = s.time = 0;\n s = metrics.s11n.deserialize = Object.create(null);\n s.count = s.time = 0;\n }\n };\n const opfsIoMethods = new sqlite3_io_methods();\n const opfsVfs = new sqlite3_vfs().addOnDispose(() => opfsIoMethods.dispose());\n let promiseWasRejected = void 0;\n const promiseReject = (err$1) => {\n promiseWasRejected = true;\n opfsVfs.dispose();\n return promiseReject_(err$1);\n };\n const promiseResolve = () => {\n promiseWasRejected = false;\n return promiseResolve_(sqlite3);\n };\n const W = new Worker(new URL(\n /* @vite-ignore */\n \"\" + new URL(\"sqlite3-opfs-async-proxy-vVtmDGHX.js\", import.meta.url).href,\n \"\" + import.meta.url\n ));\n setTimeout(() => {\n if (void 0 === promiseWasRejected) promiseReject(/* @__PURE__ */ new Error(\"Timeout while waiting for OPFS async proxy worker.\"));\n }, 4e3);\n W._originalOnError = W.onerror;\n W.onerror = function(err$1) {\n error(\"Error initializing OPFS asyncer:\", err$1);\n promiseReject(/* @__PURE__ */ new Error(\"Loading OPFS async Worker failed for unknown reasons.\"));\n };\n const pDVfs = capi.sqlite3_vfs_find(null);\n const dVfs = pDVfs ? new sqlite3_vfs(pDVfs) : null;\n opfsIoMethods.$iVersion = 1;\n opfsVfs.$iVersion = 2;\n opfsVfs.$szOsFile = capi.sqlite3_file.structInfo.sizeof;\n opfsVfs.$mxPathname = 1024;\n opfsVfs.$zName = wasm.allocCString(\"opfs\");\n opfsVfs.$xDlOpen = opfsVfs.$xDlError = opfsVfs.$xDlSym = opfsVfs.$xDlClose = null;\n opfsVfs.addOnDispose(\"$zName\", opfsVfs.$zName, \"cleanup default VFS wrapper\", () => dVfs ? dVfs.dispose() : null);\n const state$1 = Object.create(null);\n state$1.verbose = options.verbose;\n state$1.littleEndian = (() => {\n const buffer = /* @__PURE__ */ new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true);\n return new Int16Array(buffer)[0] === 256;\n })();\n state$1.asyncIdleWaitTime = 150;\n state$1.asyncS11nExceptions = 1;\n state$1.fileBufferSize = 1024 * 64;\n state$1.sabS11nOffset = state$1.fileBufferSize;\n state$1.sabS11nSize = opfsVfs.$mxPathname * 2;\n state$1.sabIO = new SharedArrayBuffer(state$1.fileBufferSize + state$1.sabS11nSize);\n state$1.opIds = Object.create(null);\n const metrics = Object.create(null);\n {\n let i = 0;\n state$1.opIds.whichOp = i++;\n state$1.opIds.rc = i++;\n state$1.opIds.xAccess = i++;\n state$1.opIds.xClose = i++;\n state$1.opIds.xDelete = i++;\n state$1.opIds.xDeleteNoWait = i++;\n state$1.opIds.xFileSize = i++;\n state$1.opIds.xLock = i++;\n state$1.opIds.xOpen = i++;\n state$1.opIds.xRead = i++;\n state$1.opIds.xSleep = i++;\n state$1.opIds.xSync = i++;\n state$1.opIds.xTruncate = i++;\n state$1.opIds.xUnlock = i++;\n state$1.opIds.xWrite = i++;\n state$1.opIds.mkdir = i++;\n state$1.opIds[\"opfs-async-metrics\"] = i++;\n state$1.opIds[\"opfs-async-shutdown\"] = i++;\n state$1.opIds.retry = i++;\n state$1.sabOP = new SharedArrayBuffer(i * 4);\n opfsUtil.metrics.reset();\n }\n state$1.sq3Codes = Object.create(null);\n [\n \"SQLITE_ACCESS_EXISTS\",\n \"SQLITE_ACCESS_READWRITE\",\n \"SQLITE_BUSY\",\n \"SQLITE_CANTOPEN\",\n \"SQLITE_ERROR\",\n \"SQLITE_IOERR\",\n \"SQLITE_IOERR_ACCESS\",\n \"SQLITE_IOERR_CLOSE\",\n \"SQLITE_IOERR_DELETE\",\n \"SQLITE_IOERR_FSYNC\",\n \"SQLITE_IOERR_LOCK\",\n \"SQLITE_IOERR_READ\",\n \"SQLITE_IOERR_SHORT_READ\",\n \"SQLITE_IOERR_TRUNCATE\",\n \"SQLITE_IOERR_UNLOCK\",\n \"SQLITE_IOERR_WRITE\",\n \"SQLITE_LOCK_EXCLUSIVE\",\n \"SQLITE_LOCK_NONE\",\n \"SQLITE_LOCK_PENDING\",\n \"SQLITE_LOCK_RESERVED\",\n \"SQLITE_LOCK_SHARED\",\n \"SQLITE_LOCKED\",\n \"SQLITE_MISUSE\",\n \"SQLITE_NOTFOUND\",\n \"SQLITE_OPEN_CREATE\",\n \"SQLITE_OPEN_DELETEONCLOSE\",\n \"SQLITE_OPEN_MAIN_DB\",\n \"SQLITE_OPEN_READONLY\"\n ].forEach((k) => {\n if (void 0 === (state$1.sq3Codes[k] = capi[k])) toss(\"Maintenance required: not found:\", k);\n });\n state$1.opfsFlags = Object.assign(Object.create(null), {\n OPFS_UNLOCK_ASAP: 1,\n OPFS_UNLINK_BEFORE_OPEN: 2,\n defaultUnlockAsap: false\n });\n const opRun = (op, ...args) => {\n const opNdx = state$1.opIds[op] || toss(\"Invalid op ID:\", op);\n state$1.s11n.serialize(...args);\n Atomics.store(state$1.sabOPView, state$1.opIds.rc, -1);\n Atomics.store(state$1.sabOPView, state$1.opIds.whichOp, opNdx);\n Atomics.notify(state$1.sabOPView, state$1.opIds.whichOp);\n const t = performance.now();\n while (\"not-equal\" !== Atomics.wait(state$1.sabOPView, state$1.opIds.rc, -1));\n const rc = Atomics.load(state$1.sabOPView, state$1.opIds.rc);\n metrics[op].wait += performance.now() - t;\n if (rc && state$1.asyncS11nExceptions) {\n const err$1 = state$1.s11n.deserialize();\n if (err$1) error(op + \"() async error:\", ...err$1);\n }\n return rc;\n };\n opfsUtil.debug = {\n asyncShutdown: () => {\n warn(\"Shutting down OPFS async listener. The OPFS VFS will no longer work.\");\n opRun(\"opfs-async-shutdown\");\n },\n asyncRestart: () => {\n warn(\"Attempting to restart OPFS VFS async listener. Might work, might not.\");\n W.postMessage({ type: \"opfs-async-restart\" });\n }\n };\n const initS11n = () => {\n if (state$1.s11n) return state$1.s11n;\n const textDecoder = new TextDecoder(), textEncoder = new TextEncoder(\"utf-8\"), viewU8 = new Uint8Array(state$1.sabIO, state$1.sabS11nOffset, state$1.sabS11nSize), viewDV = new DataView(state$1.sabIO, state$1.sabS11nOffset, state$1.sabS11nSize);\n state$1.s11n = Object.create(null);\n const TypeIds = Object.create(null);\n TypeIds.number = {\n id: 1,\n size: 8,\n getter: \"getFloat64\",\n setter: \"setFloat64\"\n };\n TypeIds.bigint = {\n id: 2,\n size: 8,\n getter: \"getBigInt64\",\n setter: \"setBigInt64\"\n };\n TypeIds.boolean = {\n id: 3,\n size: 4,\n getter: \"getInt32\",\n setter: \"setInt32\"\n };\n TypeIds.string = { id: 4 };\n const getTypeId = (v$1) => TypeIds[typeof v$1] || toss(\"Maintenance required: this value type cannot be serialized.\", v$1);\n const getTypeIdById = (tid) => {\n switch (tid) {\n case TypeIds.number.id: return TypeIds.number;\n case TypeIds.bigint.id: return TypeIds.bigint;\n case TypeIds.boolean.id: return TypeIds.boolean;\n case TypeIds.string.id: return TypeIds.string;\n default: toss(\"Invalid type ID:\", tid);\n }\n };\n state$1.s11n.deserialize = function(clear = false) {\n ++metrics.s11n.deserialize.count;\n const t = performance.now();\n const argc = viewU8[0];\n const rc = argc ? [] : null;\n if (argc) {\n const typeIds = [];\n let offset = 1, i, n, v$1;\n for (i = 0; i < argc; ++i, ++offset) typeIds.push(getTypeIdById(viewU8[offset]));\n for (i = 0; i < argc; ++i) {\n const t$1 = typeIds[i];\n if (t$1.getter) {\n v$1 = viewDV[t$1.getter](offset, state$1.littleEndian);\n offset += t$1.size;\n } else {\n n = viewDV.getInt32(offset, state$1.littleEndian);\n offset += 4;\n v$1 = textDecoder.decode(viewU8.slice(offset, offset + n));\n offset += n;\n }\n rc.push(v$1);\n }\n }\n if (clear) viewU8[0] = 0;\n metrics.s11n.deserialize.time += performance.now() - t;\n return rc;\n };\n state$1.s11n.serialize = function(...args) {\n const t = performance.now();\n ++metrics.s11n.serialize.count;\n if (args.length) {\n const typeIds = [];\n let i = 0, offset = 1;\n viewU8[0] = args.length & 255;\n for (; i < args.length; ++i, ++offset) {\n typeIds.push(getTypeId(args[i]));\n viewU8[offset] = typeIds[i].id;\n }\n for (i = 0; i < args.length; ++i) {\n const t$1 = typeIds[i];\n if (t$1.setter) {\n viewDV[t$1.setter](offset, args[i], state$1.littleEndian);\n offset += t$1.size;\n } else {\n const s = textEncoder.encode(args[i]);\n viewDV.setInt32(offset, s.byteLength, state$1.littleEndian);\n offset += 4;\n viewU8.set(s, offset);\n offset += s.byteLength;\n }\n }\n } else viewU8[0] = 0;\n metrics.s11n.serialize.time += performance.now() - t;\n };\n return state$1.s11n;\n };\n const randomFilename = function f(len = 16) {\n if (!f._chars) {\n f._chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012346789\";\n f._n = f._chars.length;\n }\n const a = [];\n let i = 0;\n for (; i < len; ++i) {\n const ndx = Math.random() * (f._n * 64) % f._n | 0;\n a[i] = f._chars[ndx];\n }\n return a.join(\"\");\n };\n const __openFiles = Object.create(null);\n const opTimer = Object.create(null);\n opTimer.op = void 0;\n opTimer.start = void 0;\n const mTimeStart = (op) => {\n opTimer.start = performance.now();\n opTimer.op = op;\n ++metrics[op].count;\n };\n const mTimeEnd = () => metrics[opTimer.op].time += performance.now() - opTimer.start;\n const ioSyncWrappers = {\n xCheckReservedLock: function(pFile, pOut) {\n wasm.poke(pOut, 0, \"i32\");\n return 0;\n },\n xClose: function(pFile) {\n mTimeStart(\"xClose\");\n let rc = 0;\n const f = __openFiles[pFile];\n if (f) {\n delete __openFiles[pFile];\n rc = opRun(\"xClose\", pFile);\n if (f.sq3File) f.sq3File.dispose();\n }\n mTimeEnd();\n return rc;\n },\n xDeviceCharacteristics: function(pFile) {\n return capi.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n },\n xFileControl: function(pFile, opId, pArg) {\n return capi.SQLITE_NOTFOUND;\n },\n xFileSize: function(pFile, pSz64) {\n mTimeStart(\"xFileSize\");\n let rc = opRun(\"xFileSize\", pFile);\n if (0 == rc) try {\n const sz = state$1.s11n.deserialize()[0];\n wasm.poke(pSz64, sz, \"i64\");\n } catch (e) {\n error(\"Unexpected error reading xFileSize() result:\", e);\n rc = state$1.sq3Codes.SQLITE_IOERR;\n }\n mTimeEnd();\n return rc;\n },\n xLock: function(pFile, lockType) {\n mTimeStart(\"xLock\");\n const f = __openFiles[pFile];\n let rc = 0;\n if (!f.lockType) {\n rc = opRun(\"xLock\", pFile, lockType);\n if (0 === rc) f.lockType = lockType;\n } else f.lockType = lockType;\n mTimeEnd();\n return rc;\n },\n xRead: function(pFile, pDest, n, offset64) {\n mTimeStart(\"xRead\");\n const f = __openFiles[pFile];\n let rc;\n try {\n rc = opRun(\"xRead\", pFile, n, Number(offset64));\n if (0 === rc || capi.SQLITE_IOERR_SHORT_READ === rc) wasm.heap8u().set(f.sabView.subarray(0, n), pDest);\n } catch (e) {\n error(\"xRead(\", arguments, \") failed:\", e, f);\n rc = capi.SQLITE_IOERR_READ;\n }\n mTimeEnd();\n return rc;\n },\n xSync: function(pFile, flags) {\n mTimeStart(\"xSync\");\n ++metrics.xSync.count;\n const rc = opRun(\"xSync\", pFile, flags);\n mTimeEnd();\n return rc;\n },\n xTruncate: function(pFile, sz64) {\n mTimeStart(\"xTruncate\");\n const rc = opRun(\"xTruncate\", pFile, Number(sz64));\n mTimeEnd();\n return rc;\n },\n xUnlock: function(pFile, lockType) {\n mTimeStart(\"xUnlock\");\n const f = __openFiles[pFile];\n let rc = 0;\n if (capi.SQLITE_LOCK_NONE === lockType && f.lockType) rc = opRun(\"xUnlock\", pFile, lockType);\n if (0 === rc) f.lockType = lockType;\n mTimeEnd();\n return rc;\n },\n xWrite: function(pFile, pSrc, n, offset64) {\n mTimeStart(\"xWrite\");\n const f = __openFiles[pFile];\n let rc;\n try {\n f.sabView.set(wasm.heap8u().subarray(pSrc, pSrc + n));\n rc = opRun(\"xWrite\", pFile, n, Number(offset64));\n } catch (e) {\n error(\"xWrite(\", arguments, \") failed:\", e, f);\n rc = capi.SQLITE_IOERR_WRITE;\n }\n mTimeEnd();\n return rc;\n }\n };\n const vfsSyncWrappers = {\n xAccess: function(pVfs, zName, flags, pOut) {\n mTimeStart(\"xAccess\");\n const rc = opRun(\"xAccess\", wasm.cstrToJs(zName));\n wasm.poke(pOut, rc ? 0 : 1, \"i32\");\n mTimeEnd();\n return 0;\n },\n xCurrentTime: function(pVfs, pOut) {\n wasm.poke(pOut, 2440587.5 + (/* @__PURE__ */ new Date()).getTime() / 864e5, \"double\");\n return 0;\n },\n xCurrentTimeInt64: function(pVfs, pOut) {\n wasm.poke(pOut, 2440587.5 * 864e5 + (/* @__PURE__ */ new Date()).getTime(), \"i64\");\n return 0;\n },\n xDelete: function(pVfs, zName, doSyncDir) {\n mTimeStart(\"xDelete\");\n const rc = opRun(\"xDelete\", wasm.cstrToJs(zName), doSyncDir, false);\n mTimeEnd();\n return rc;\n },\n xFullPathname: function(pVfs, zName, nOut, pOut) {\n return wasm.cstrncpy(pOut, zName, nOut) < nOut ? 0 : capi.SQLITE_CANTOPEN;\n },\n xGetLastError: function(pVfs, nOut, pOut) {\n warn(\"OPFS xGetLastError() has nothing sensible to return.\");\n return 0;\n },\n xOpen: function f(pVfs, zName, pFile, flags, pOutFlags) {\n mTimeStart(\"xOpen\");\n let opfsFlags = 0;\n if (0 === zName) zName = randomFilename();\n else if (wasm.isPtr(zName)) {\n if (capi.sqlite3_uri_boolean(zName, \"opfs-unlock-asap\", 0)) opfsFlags |= state$1.opfsFlags.OPFS_UNLOCK_ASAP;\n if (capi.sqlite3_uri_boolean(zName, \"delete-before-open\", 0)) opfsFlags |= state$1.opfsFlags.OPFS_UNLINK_BEFORE_OPEN;\n zName = wasm.cstrToJs(zName);\n }\n const fh = Object.create(null);\n fh.fid = pFile;\n fh.filename = zName;\n fh.sab = new SharedArrayBuffer(state$1.fileBufferSize);\n fh.flags = flags;\n fh.readOnly = !(sqlite3.SQLITE_OPEN_CREATE & flags) && !!(flags & capi.SQLITE_OPEN_READONLY);\n const rc = opRun(\"xOpen\", pFile, zName, flags, opfsFlags);\n if (!rc) {\n if (fh.readOnly) wasm.poke(pOutFlags, capi.SQLITE_OPEN_READONLY, \"i32\");\n __openFiles[pFile] = fh;\n fh.sabView = state$1.sabFileBufView;\n fh.sq3File = new sqlite3_file(pFile);\n fh.sq3File.$pMethods = opfsIoMethods.pointer;\n fh.lockType = capi.SQLITE_LOCK_NONE;\n }\n mTimeEnd();\n return rc;\n }\n };\n if (dVfs) {\n opfsVfs.$xRandomness = dVfs.$xRandomness;\n opfsVfs.$xSleep = dVfs.$xSleep;\n }\n if (!opfsVfs.$xRandomness) vfsSyncWrappers.xRandomness = function(pVfs, nOut, pOut) {\n const heap = wasm.heap8u();\n let i = 0;\n for (; i < nOut; ++i) heap[pOut + i] = Math.random() * 255e3 & 255;\n return i;\n };\n if (!opfsVfs.$xSleep) vfsSyncWrappers.xSleep = function(pVfs, ms) {\n Atomics.wait(state$1.sabOPView, state$1.opIds.xSleep, 0, ms);\n return 0;\n };\n opfsUtil.getResolvedPath = function(filename, splitIt) {\n const p = new URL(filename, \"file://irrelevant\").pathname;\n return splitIt ? p.split(\"/\").filter((v$1) => !!v$1) : p;\n };\n opfsUtil.getDirForFilename = async function f(absFilename, createDirs = false) {\n const path = opfsUtil.getResolvedPath(absFilename, true);\n const filename = path.pop();\n let dh = opfsUtil.rootDirectory;\n for (const dirName of path) if (dirName) dh = await dh.getDirectoryHandle(dirName, { create: !!createDirs });\n return [dh, filename];\n };\n opfsUtil.mkdir = async function(absDirName) {\n try {\n await opfsUtil.getDirForFilename(absDirName + \"/filepart\", true);\n return true;\n } catch (e) {\n return false;\n }\n };\n opfsUtil.entryExists = async function(fsEntryName) {\n try {\n const [dh, fn] = await opfsUtil.getDirForFilename(fsEntryName);\n await dh.getFileHandle(fn);\n return true;\n } catch (e) {\n return false;\n }\n };\n opfsUtil.randomFilename = randomFilename;\n opfsUtil.treeList = async function() {\n const doDir = async function callee$1(dirHandle, tgt) {\n tgt.name = dirHandle.name;\n tgt.dirs = [];\n tgt.files = [];\n for await (const handle of dirHandle.values()) if (\"directory\" === handle.kind) {\n const subDir = Object.create(null);\n tgt.dirs.push(subDir);\n await callee$1(handle, subDir);\n } else tgt.files.push(handle.name);\n };\n const root = Object.create(null);\n await doDir(opfsUtil.rootDirectory, root);\n return root;\n };\n opfsUtil.rmfr = async function() {\n const dir = opfsUtil.rootDirectory, opt = { recurse: true };\n for await (const handle of dir.values()) dir.removeEntry(handle.name, opt);\n };\n opfsUtil.unlink = async function(fsEntryName, recursive = false, throwOnError = false) {\n try {\n const [hDir, filenamePart] = await opfsUtil.getDirForFilename(fsEntryName, false);\n await hDir.removeEntry(filenamePart, { recursive });\n return true;\n } catch (e) {\n if (throwOnError) throw new Error(\"unlink(\", arguments[0], \") failed: \" + e.message, { cause: e });\n return false;\n }\n };\n opfsUtil.traverse = async function(opt) {\n const defaultOpt = {\n recursive: true,\n directory: opfsUtil.rootDirectory\n };\n if (\"function\" === typeof opt) opt = { callback: opt };\n opt = Object.assign(defaultOpt, opt || {});\n (async function callee$1(dirHandle, depth) {\n for await (const handle of dirHandle.values()) if (false === opt.callback(handle, dirHandle, depth)) return false;\n else if (opt.recursive && \"directory\" === handle.kind) {\n if (false === await callee$1(handle, depth + 1)) break;\n }\n })(opt.directory, 0);\n };\n const importDbChunked = async function(filename, callback) {\n const [hDir, fnamePart] = await opfsUtil.getDirForFilename(filename, true);\n let sah = await (await hDir.getFileHandle(fnamePart, { create: true })).createSyncAccessHandle(), nWrote = 0, chunk, checkedHeader = false;\n try {\n sah.truncate(0);\n while (void 0 !== (chunk = await callback())) {\n if (chunk instanceof ArrayBuffer) chunk = new Uint8Array(chunk);\n if (0 === nWrote && chunk.byteLength >= 15) {\n util.affirmDbHeader(chunk);\n checkedHeader = true;\n }\n sah.write(chunk, { at: nWrote });\n nWrote += chunk.byteLength;\n }\n if (nWrote < 512 || 0 !== nWrote % 512) toss(\"Input size\", nWrote, \"is not correct for an SQLite database.\");\n if (!checkedHeader) {\n const header = new Uint8Array(20);\n sah.read(header, { at: 0 });\n util.affirmDbHeader(header);\n }\n sah.write(new Uint8Array([1, 1]), { at: 18 });\n return nWrote;\n } catch (e) {\n await sah.close();\n sah = void 0;\n await hDir.removeEntry(fnamePart).catch(() => {});\n throw e;\n } finally {\n if (sah) await sah.close();\n }\n };\n opfsUtil.importDb = async function(filename, bytes) {\n if (bytes instanceof Function) return importDbChunked(filename, bytes);\n if (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n util.affirmIsDb(bytes);\n const n = bytes.byteLength;\n const [hDir, fnamePart] = await opfsUtil.getDirForFilename(filename, true);\n let sah, nWrote = 0;\n try {\n sah = await (await hDir.getFileHandle(fnamePart, { create: true })).createSyncAccessHandle();\n sah.truncate(0);\n nWrote = sah.write(bytes, { at: 0 });\n if (nWrote != n) toss(\"Expected to write \" + n + \" bytes but wrote \" + nWrote + \".\");\n sah.write(new Uint8Array([1, 1]), { at: 18 });\n return nWrote;\n } catch (e) {\n if (sah) {\n await sah.close();\n sah = void 0;\n }\n await hDir.removeEntry(fnamePart).catch(() => {});\n throw e;\n } finally {\n if (sah) await sah.close();\n }\n };\n if (sqlite3.oo1) {\n const OpfsDb = function(...args) {\n const opt = sqlite3.oo1.DB.dbCtorHelper.normalizeArgs(...args);\n opt.vfs = opfsVfs.$zName;\n sqlite3.oo1.DB.dbCtorHelper.call(this, opt);\n };\n OpfsDb.prototype = Object.create(sqlite3.oo1.DB.prototype);\n sqlite3.oo1.OpfsDb = OpfsDb;\n OpfsDb.importDb = opfsUtil.importDb;\n sqlite3.oo1.DB.dbCtorHelper.setVfsPostOpenCallback(opfsVfs.pointer, function(oo1Db, sqlite3$1) {\n sqlite3$1.capi.sqlite3_busy_timeout(oo1Db, 1e4);\n });\n }\n const sanityCheck = function() {\n const scope = wasm.scopedAllocPush();\n const sq3File = new sqlite3_file();\n try {\n const fid = sq3File.pointer;\n const openFlags = capi.SQLITE_OPEN_CREATE | capi.SQLITE_OPEN_READWRITE | capi.SQLITE_OPEN_MAIN_DB;\n const pOut = wasm.scopedAlloc(8);\n const dbFile = \"/sanity/check/file\" + randomFilename(8);\n const zDbFile = wasm.scopedAllocCString(dbFile);\n let rc;\n state$1.s11n.serialize(\"This is ä string.\");\n rc = state$1.s11n.deserialize();\n log(\"deserialize() says:\", rc);\n if (\"This is ä string.\" !== rc[0]) toss(\"String d13n error.\");\n vfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n rc = wasm.peek(pOut, \"i32\");\n log(\"xAccess(\", dbFile, \") exists ?=\", rc);\n rc = vfsSyncWrappers.xOpen(opfsVfs.pointer, zDbFile, fid, openFlags, pOut);\n log(\"open rc =\", rc, \"state.sabOPView[xOpen] =\", state$1.sabOPView[state$1.opIds.xOpen]);\n if (0 !== rc) {\n error(\"open failed with code\", rc);\n return;\n }\n vfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n rc = wasm.peek(pOut, \"i32\");\n if (!rc) toss(\"xAccess() failed to detect file.\");\n rc = ioSyncWrappers.xSync(sq3File.pointer, 0);\n if (rc) toss(\"sync failed w/ rc\", rc);\n rc = ioSyncWrappers.xTruncate(sq3File.pointer, 1024);\n if (rc) toss(\"truncate failed w/ rc\", rc);\n wasm.poke(pOut, 0, \"i64\");\n rc = ioSyncWrappers.xFileSize(sq3File.pointer, pOut);\n if (rc) toss(\"xFileSize failed w/ rc\", rc);\n log(\"xFileSize says:\", wasm.peek(pOut, \"i64\"));\n rc = ioSyncWrappers.xWrite(sq3File.pointer, zDbFile, 10, 1);\n if (rc) toss(\"xWrite() failed!\");\n const readBuf = wasm.scopedAlloc(16);\n rc = ioSyncWrappers.xRead(sq3File.pointer, readBuf, 6, 2);\n wasm.poke(readBuf + 6, 0);\n let jRead = wasm.cstrToJs(readBuf);\n log(\"xRead() got:\", jRead);\n if (\"sanity\" !== jRead) toss(\"Unexpected xRead() value.\");\n if (vfsSyncWrappers.xSleep) {\n log(\"xSleep()ing before close()ing...\");\n vfsSyncWrappers.xSleep(opfsVfs.pointer, 2e3);\n log(\"waking up from xSleep()\");\n }\n rc = ioSyncWrappers.xClose(fid);\n log(\"xClose rc =\", rc, \"sabOPView =\", state$1.sabOPView);\n log(\"Deleting file:\", dbFile);\n vfsSyncWrappers.xDelete(opfsVfs.pointer, zDbFile, 4660);\n vfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n rc = wasm.peek(pOut, \"i32\");\n if (rc) toss(\"Expecting 0 from xAccess(\", dbFile, \") after xDelete().\");\n warn(\"End of OPFS sanity checks.\");\n } finally {\n sq3File.dispose();\n wasm.scopedAllocPop(scope);\n }\n };\n W.onmessage = function({ data }) {\n switch (data.type) {\n case \"opfs-unavailable\":\n promiseReject(new Error(data.payload.join(\" \")));\n break;\n case \"opfs-async-loaded\":\n W.postMessage({\n type: \"opfs-async-init\",\n args: state$1\n });\n break;\n case \"opfs-async-inited\":\n if (true === promiseWasRejected) break;\n try {\n sqlite3.vfs.installVfs({\n io: {\n struct: opfsIoMethods,\n methods: ioSyncWrappers\n },\n vfs: {\n struct: opfsVfs,\n methods: vfsSyncWrappers\n }\n });\n state$1.sabOPView = new Int32Array(state$1.sabOP);\n state$1.sabFileBufView = new Uint8Array(state$1.sabIO, 0, state$1.fileBufferSize);\n state$1.sabS11nView = new Uint8Array(state$1.sabIO, state$1.sabS11nOffset, state$1.sabS11nSize);\n initS11n();\n if (options.sanityChecks) {\n warn(\"Running sanity checks because of opfs-sanity-check URL arg...\");\n sanityCheck();\n }\n if (thisThreadHasOPFS()) navigator.storage.getDirectory().then((d) => {\n W.onerror = W._originalOnError;\n delete W._originalOnError;\n sqlite3.opfs = opfsUtil;\n opfsUtil.rootDirectory = d;\n log(\"End of OPFS sqlite3_vfs setup.\", opfsVfs);\n promiseResolve();\n }).catch(promiseReject);\n else promiseResolve();\n } catch (e) {\n error(e);\n promiseReject(e);\n }\n break;\n default: {\n const errMsg = \"Unexpected message from the OPFS async worker: \" + JSON.stringify(data);\n error(errMsg);\n promiseReject(new Error(errMsg));\n break;\n }\n }\n };\n });\n };\n installOpfsVfs.defaultProxyUri = \"sqlite3-opfs-async-proxy.js\";\n globalThis.sqlite3ApiBootstrap.initializersAsync.push(async (sqlite3$1) => {\n try {\n let proxyJs = installOpfsVfs.defaultProxyUri;\n if (sqlite3$1.scriptInfo.sqlite3Dir) installOpfsVfs.defaultProxyUri = sqlite3$1.scriptInfo.sqlite3Dir + proxyJs;\n return installOpfsVfs().catch((e) => {\n sqlite3$1.config.warn(\"Ignoring inability to install OPFS sqlite3_vfs:\", e.message);\n });\n } catch (e) {\n sqlite3$1.config.error(\"installOpfsVfs() exception:\", e);\n return Promise.reject(e);\n }\n });\n });\n globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n const toss = sqlite3.util.toss;\n const toss3 = sqlite3.util.toss3;\n const initPromises = Object.create(null);\n const capi = sqlite3.capi;\n const util = sqlite3.util;\n const wasm = sqlite3.wasm;\n const SECTOR_SIZE = 4096;\n const HEADER_MAX_PATH_SIZE = 512;\n const HEADER_FLAGS_SIZE = 4;\n const HEADER_DIGEST_SIZE = 8;\n const HEADER_CORPUS_SIZE = HEADER_MAX_PATH_SIZE + HEADER_FLAGS_SIZE;\n const HEADER_OFFSET_FLAGS = HEADER_MAX_PATH_SIZE;\n const HEADER_OFFSET_DIGEST = HEADER_CORPUS_SIZE;\n const HEADER_OFFSET_DATA = SECTOR_SIZE;\n const PERSISTENT_FILE_TYPES = capi.SQLITE_OPEN_MAIN_DB | capi.SQLITE_OPEN_MAIN_JOURNAL | capi.SQLITE_OPEN_SUPER_JOURNAL | capi.SQLITE_OPEN_WAL;\n const FLAG_COMPUTE_DIGEST_V2 = capi.SQLITE_OPEN_MEMORY;\n const OPAQUE_DIR_NAME = \".opaque\";\n const getRandomName = () => Math.random().toString(36).slice(2);\n const textDecoder = new TextDecoder();\n const textEncoder = new TextEncoder();\n const optionDefaults = Object.assign(Object.create(null), {\n name: \"opfs-sahpool\",\n directory: void 0,\n initialCapacity: 6,\n clearOnInit: false,\n verbosity: 2,\n forceReinitIfPreviouslyFailed: false\n });\n const loggers = [\n sqlite3.config.error,\n sqlite3.config.warn,\n sqlite3.config.log\n ];\n sqlite3.config.log;\n const warn = sqlite3.config.warn;\n sqlite3.config.error;\n const __mapVfsToPool = /* @__PURE__ */ new Map();\n const getPoolForVfs = (pVfs) => __mapVfsToPool.get(pVfs);\n const setPoolForVfs = (pVfs, pool) => {\n if (pool) __mapVfsToPool.set(pVfs, pool);\n else __mapVfsToPool.delete(pVfs);\n };\n const __mapSqlite3File = /* @__PURE__ */ new Map();\n const getPoolForPFile = (pFile) => __mapSqlite3File.get(pFile);\n const setPoolForPFile = (pFile, pool) => {\n if (pool) __mapSqlite3File.set(pFile, pool);\n else __mapSqlite3File.delete(pFile);\n };\n const ioMethods = {\n xCheckReservedLock: function(pFile, pOut) {\n const pool = getPoolForPFile(pFile);\n pool.log(\"xCheckReservedLock\");\n pool.storeErr();\n wasm.poke32(pOut, 1);\n return 0;\n },\n xClose: function(pFile) {\n const pool = getPoolForPFile(pFile);\n pool.storeErr();\n const file = pool.getOFileForS3File(pFile);\n if (file) try {\n pool.log(`xClose ${file.path}`);\n pool.mapS3FileToOFile(pFile, false);\n file.sah.flush();\n if (file.flags & capi.SQLITE_OPEN_DELETEONCLOSE) pool.deletePath(file.path);\n } catch (e) {\n return pool.storeErr(e, capi.SQLITE_IOERR);\n }\n return 0;\n },\n xDeviceCharacteristics: function(pFile) {\n return capi.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n },\n xFileControl: function(pFile, opId, pArg) {\n return capi.SQLITE_NOTFOUND;\n },\n xFileSize: function(pFile, pSz64) {\n const pool = getPoolForPFile(pFile);\n pool.log(`xFileSize`);\n const size = pool.getOFileForS3File(pFile).sah.getSize() - HEADER_OFFSET_DATA;\n wasm.poke64(pSz64, BigInt(size));\n return 0;\n },\n xLock: function(pFile, lockType) {\n const pool = getPoolForPFile(pFile);\n pool.log(`xLock ${lockType}`);\n pool.storeErr();\n const file = pool.getOFileForS3File(pFile);\n file.lockType = lockType;\n return 0;\n },\n xRead: function(pFile, pDest, n, offset64) {\n const pool = getPoolForPFile(pFile);\n pool.storeErr();\n const file = pool.getOFileForS3File(pFile);\n pool.log(`xRead ${file.path} ${n} @ ${offset64}`);\n try {\n const nRead = file.sah.read(wasm.heap8u().subarray(pDest, pDest + n), { at: HEADER_OFFSET_DATA + Number(offset64) });\n if (nRead < n) {\n wasm.heap8u().fill(0, pDest + nRead, pDest + n);\n return capi.SQLITE_IOERR_SHORT_READ;\n }\n return 0;\n } catch (e) {\n return pool.storeErr(e, capi.SQLITE_IOERR);\n }\n },\n xSectorSize: function(pFile) {\n return SECTOR_SIZE;\n },\n xSync: function(pFile, flags) {\n const pool = getPoolForPFile(pFile);\n pool.log(`xSync ${flags}`);\n pool.storeErr();\n const file = pool.getOFileForS3File(pFile);\n try {\n file.sah.flush();\n return 0;\n } catch (e) {\n return pool.storeErr(e, capi.SQLITE_IOERR);\n }\n },\n xTruncate: function(pFile, sz64) {\n const pool = getPoolForPFile(pFile);\n pool.log(`xTruncate ${sz64}`);\n pool.storeErr();\n const file = pool.getOFileForS3File(pFile);\n try {\n file.sah.truncate(HEADER_OFFSET_DATA + Number(sz64));\n return 0;\n } catch (e) {\n return pool.storeErr(e, capi.SQLITE_IOERR);\n }\n },\n xUnlock: function(pFile, lockType) {\n const pool = getPoolForPFile(pFile);\n pool.log(\"xUnlock\");\n const file = pool.getOFileForS3File(pFile);\n file.lockType = lockType;\n return 0;\n },\n xWrite: function(pFile, pSrc, n, offset64) {\n const pool = getPoolForPFile(pFile);\n pool.storeErr();\n const file = pool.getOFileForS3File(pFile);\n pool.log(`xWrite ${file.path} ${n} ${offset64}`);\n try {\n return n === file.sah.write(wasm.heap8u().subarray(pSrc, pSrc + n), { at: HEADER_OFFSET_DATA + Number(offset64) }) ? 0 : toss(\"Unknown write() failure.\");\n } catch (e) {\n return pool.storeErr(e, capi.SQLITE_IOERR);\n }\n }\n };\n const opfsIoMethods = new capi.sqlite3_io_methods();\n opfsIoMethods.$iVersion = 1;\n sqlite3.vfs.installVfs({ io: {\n struct: opfsIoMethods,\n methods: ioMethods\n } });\n const vfsMethods = {\n xAccess: function(pVfs, zName, flags, pOut) {\n const pool = getPoolForVfs(pVfs);\n pool.storeErr();\n try {\n const name = pool.getPath(zName);\n wasm.poke32(pOut, pool.hasFilename(name) ? 1 : 0);\n } catch (e) {\n wasm.poke32(pOut, 0);\n }\n return 0;\n },\n xCurrentTime: function(pVfs, pOut) {\n wasm.poke(pOut, 2440587.5 + (/* @__PURE__ */ new Date()).getTime() / 864e5, \"double\");\n return 0;\n },\n xCurrentTimeInt64: function(pVfs, pOut) {\n wasm.poke(pOut, 2440587.5 * 864e5 + (/* @__PURE__ */ new Date()).getTime(), \"i64\");\n return 0;\n },\n xDelete: function(pVfs, zName, doSyncDir) {\n const pool = getPoolForVfs(pVfs);\n pool.log(`xDelete ${wasm.cstrToJs(zName)}`);\n pool.storeErr();\n try {\n pool.deletePath(pool.getPath(zName));\n return 0;\n } catch (e) {\n pool.storeErr(e);\n return capi.SQLITE_IOERR_DELETE;\n }\n },\n xFullPathname: function(pVfs, zName, nOut, pOut) {\n return wasm.cstrncpy(pOut, zName, nOut) < nOut ? 0 : capi.SQLITE_CANTOPEN;\n },\n xGetLastError: function(pVfs, nOut, pOut) {\n const pool = getPoolForVfs(pVfs);\n const e = pool.popErr();\n pool.log(`xGetLastError ${nOut} e =`, e);\n if (e) {\n const scope = wasm.scopedAllocPush();\n try {\n const [cMsg, n] = wasm.scopedAllocCString(e.message, true);\n wasm.cstrncpy(pOut, cMsg, nOut);\n if (n > nOut) wasm.poke8(pOut + nOut - 1, 0);\n } catch (e$1) {\n return capi.SQLITE_NOMEM;\n } finally {\n wasm.scopedAllocPop(scope);\n }\n }\n return e ? e.sqlite3Rc || capi.SQLITE_IOERR : 0;\n },\n xOpen: function f(pVfs, zName, pFile, flags, pOutFlags) {\n const pool = getPoolForVfs(pVfs);\n try {\n flags &= ~FLAG_COMPUTE_DIGEST_V2;\n pool.log(`xOpen ${wasm.cstrToJs(zName)} ${flags}`);\n const path = zName && wasm.peek8(zName) ? pool.getPath(zName) : getRandomName();\n let sah = pool.getSAHForPath(path);\n if (!sah && flags & capi.SQLITE_OPEN_CREATE) if (pool.getFileCount() < pool.getCapacity()) {\n sah = pool.nextAvailableSAH();\n pool.setAssociatedPath(sah, path, flags);\n } else toss(\"SAH pool is full. Cannot create file\", path);\n if (!sah) toss(\"file not found:\", path);\n const file = {\n path,\n flags,\n sah\n };\n pool.mapS3FileToOFile(pFile, file);\n file.lockType = capi.SQLITE_LOCK_NONE;\n const sq3File = new capi.sqlite3_file(pFile);\n sq3File.$pMethods = opfsIoMethods.pointer;\n sq3File.dispose();\n wasm.poke32(pOutFlags, flags);\n return 0;\n } catch (e) {\n pool.storeErr(e);\n return capi.SQLITE_CANTOPEN;\n }\n }\n };\n const createOpfsVfs = function(vfsName) {\n if (sqlite3.capi.sqlite3_vfs_find(vfsName)) toss3(\"VFS name is already registered:\", vfsName);\n const opfsVfs = new capi.sqlite3_vfs();\n const pDVfs = capi.sqlite3_vfs_find(null);\n const dVfs = pDVfs ? new capi.sqlite3_vfs(pDVfs) : null;\n opfsVfs.$iVersion = 2;\n opfsVfs.$szOsFile = capi.sqlite3_file.structInfo.sizeof;\n opfsVfs.$mxPathname = HEADER_MAX_PATH_SIZE;\n opfsVfs.addOnDispose(opfsVfs.$zName = wasm.allocCString(vfsName), () => setPoolForVfs(opfsVfs.pointer, 0));\n if (dVfs) {\n opfsVfs.$xRandomness = dVfs.$xRandomness;\n opfsVfs.$xSleep = dVfs.$xSleep;\n dVfs.dispose();\n }\n if (!opfsVfs.$xRandomness && !vfsMethods.xRandomness) vfsMethods.xRandomness = function(pVfs, nOut, pOut) {\n const heap = wasm.heap8u();\n let i = 0;\n for (; i < nOut; ++i) heap[pOut + i] = Math.random() * 255e3 & 255;\n return i;\n };\n if (!opfsVfs.$xSleep && !vfsMethods.xSleep) vfsMethods.xSleep = (pVfs, ms) => 0;\n sqlite3.vfs.installVfs({ vfs: {\n struct: opfsVfs,\n methods: vfsMethods\n } });\n return opfsVfs;\n };\n class OpfsSAHPool {\n vfsDir;\n #dhVfsRoot;\n #dhOpaque;\n #dhVfsParent;\n #mapSAHToName = /* @__PURE__ */ new Map();\n #mapFilenameToSAH = /* @__PURE__ */ new Map();\n #availableSAH = /* @__PURE__ */ new Set();\n #mapS3FileToOFile_ = /* @__PURE__ */ new Map();\n #apBody = new Uint8Array(HEADER_CORPUS_SIZE);\n #dvBody;\n #cVfs;\n #verbosity;\n constructor(options = Object.create(null)) {\n this.#verbosity = options.verbosity ?? optionDefaults.verbosity;\n this.vfsName = options.name || optionDefaults.name;\n this.#cVfs = createOpfsVfs(this.vfsName);\n setPoolForVfs(this.#cVfs.pointer, this);\n this.vfsDir = options.directory || \".\" + this.vfsName;\n this.#dvBody = new DataView(this.#apBody.buffer, this.#apBody.byteOffset);\n this.isReady = this.reset(!!(options.clearOnInit ?? optionDefaults.clearOnInit)).then(() => {\n if (this.$error) throw this.$error;\n return this.getCapacity() ? Promise.resolve(void 0) : this.addCapacity(options.initialCapacity || optionDefaults.initialCapacity);\n });\n }\n #logImpl(level, ...args) {\n if (this.#verbosity > level) loggers[level](this.vfsName + \":\", ...args);\n }\n log(...args) {\n this.#logImpl(2, ...args);\n }\n warn(...args) {\n this.#logImpl(1, ...args);\n }\n error(...args) {\n this.#logImpl(0, ...args);\n }\n getVfs() {\n return this.#cVfs;\n }\n getCapacity() {\n return this.#mapSAHToName.size;\n }\n getFileCount() {\n return this.#mapFilenameToSAH.size;\n }\n getFileNames() {\n const rc = [];\n for (const n of this.#mapFilenameToSAH.keys()) rc.push(n);\n return rc;\n }\n async addCapacity(n) {\n for (let i = 0; i < n; ++i) {\n const name = getRandomName();\n const ah = await (await this.#dhOpaque.getFileHandle(name, { create: true })).createSyncAccessHandle();\n this.#mapSAHToName.set(ah, name);\n this.setAssociatedPath(ah, \"\", 0);\n }\n return this.getCapacity();\n }\n async reduceCapacity(n) {\n let nRm = 0;\n for (const ah of Array.from(this.#availableSAH)) {\n if (nRm === n || this.getFileCount() === this.getCapacity()) break;\n const name = this.#mapSAHToName.get(ah);\n ah.close();\n await this.#dhOpaque.removeEntry(name);\n this.#mapSAHToName.delete(ah);\n this.#availableSAH.delete(ah);\n ++nRm;\n }\n return nRm;\n }\n releaseAccessHandles() {\n for (const ah of this.#mapSAHToName.keys()) ah.close();\n this.#mapSAHToName.clear();\n this.#mapFilenameToSAH.clear();\n this.#availableSAH.clear();\n }\n async acquireAccessHandles(clearFiles = false) {\n const files = [];\n for await (const [name, h] of this.#dhOpaque) if (\"file\" === h.kind) files.push([name, h]);\n return Promise.all(files.map(async ([name, h]) => {\n try {\n const ah = await h.createSyncAccessHandle();\n this.#mapSAHToName.set(ah, name);\n if (clearFiles) {\n ah.truncate(HEADER_OFFSET_DATA);\n this.setAssociatedPath(ah, \"\", 0);\n } else {\n const path = this.getAssociatedPath(ah);\n if (path) this.#mapFilenameToSAH.set(path, ah);\n else this.#availableSAH.add(ah);\n }\n } catch (e) {\n this.storeErr(e);\n this.releaseAccessHandles();\n throw e;\n }\n }));\n }\n getAssociatedPath(sah) {\n sah.read(this.#apBody, { at: 0 });\n const flags = this.#dvBody.getUint32(HEADER_OFFSET_FLAGS);\n if (this.#apBody[0] && (flags & capi.SQLITE_OPEN_DELETEONCLOSE || (flags & PERSISTENT_FILE_TYPES) === 0)) {\n warn(`Removing file with unexpected flags ${flags.toString(16)}`, this.#apBody);\n this.setAssociatedPath(sah, \"\", 0);\n return \"\";\n }\n const fileDigest = new Uint32Array(HEADER_DIGEST_SIZE / 4);\n sah.read(fileDigest, { at: HEADER_OFFSET_DIGEST });\n const compDigest = this.computeDigest(this.#apBody, flags);\n if (fileDigest.every((v$1, i) => v$1 === compDigest[i])) {\n const pathBytes = this.#apBody.findIndex((v$1) => 0 === v$1);\n if (0 === pathBytes) sah.truncate(HEADER_OFFSET_DATA);\n return pathBytes ? textDecoder.decode(this.#apBody.subarray(0, pathBytes)) : \"\";\n } else {\n warn(\"Disassociating file with bad digest.\");\n this.setAssociatedPath(sah, \"\", 0);\n return \"\";\n }\n }\n setAssociatedPath(sah, path, flags) {\n const enc = textEncoder.encodeInto(path, this.#apBody);\n if (HEADER_MAX_PATH_SIZE <= enc.written + 1) toss(\"Path too long:\", path);\n if (path && flags) flags |= FLAG_COMPUTE_DIGEST_V2;\n this.#apBody.fill(0, enc.written, HEADER_MAX_PATH_SIZE);\n this.#dvBody.setUint32(HEADER_OFFSET_FLAGS, flags);\n const digest = this.computeDigest(this.#apBody, flags);\n sah.write(this.#apBody, { at: 0 });\n sah.write(digest, { at: HEADER_OFFSET_DIGEST });\n sah.flush();\n if (path) {\n this.#mapFilenameToSAH.set(path, sah);\n this.#availableSAH.delete(sah);\n } else {\n sah.truncate(HEADER_OFFSET_DATA);\n this.#availableSAH.add(sah);\n }\n }\n computeDigest(byteArray, fileFlags) {\n if (fileFlags & FLAG_COMPUTE_DIGEST_V2) {\n let h1 = 3735928559;\n let h2 = 1103547991;\n for (const v$1 of byteArray) {\n h1 = Math.imul(h1 ^ v$1, 2654435761);\n h2 = Math.imul(h2 ^ v$1, 104729);\n }\n return new Uint32Array([h1 >>> 0, h2 >>> 0]);\n } else return new Uint32Array([0, 0]);\n }\n async reset(clearFiles) {\n await this.isReady;\n let h = await navigator.storage.getDirectory(), prev;\n for (const d of this.vfsDir.split(\"/\")) if (d) {\n prev = h;\n h = await h.getDirectoryHandle(d, { create: true });\n }\n this.#dhVfsRoot = h;\n this.#dhVfsParent = prev;\n this.#dhOpaque = await this.#dhVfsRoot.getDirectoryHandle(OPAQUE_DIR_NAME, { create: true });\n this.releaseAccessHandles();\n return this.acquireAccessHandles(clearFiles);\n }\n getPath(arg) {\n if (wasm.isPtr(arg)) arg = wasm.cstrToJs(arg);\n return (arg instanceof URL ? arg : new URL(arg, \"file://localhost/\")).pathname;\n }\n deletePath(path) {\n const sah = this.#mapFilenameToSAH.get(path);\n if (sah) {\n this.#mapFilenameToSAH.delete(path);\n this.setAssociatedPath(sah, \"\", 0);\n }\n return !!sah;\n }\n storeErr(e, code) {\n if (e) {\n e.sqlite3Rc = code || capi.SQLITE_IOERR;\n this.error(e);\n }\n this.$error = e;\n return code;\n }\n popErr() {\n const rc = this.$error;\n this.$error = void 0;\n return rc;\n }\n nextAvailableSAH() {\n const [rc] = this.#availableSAH.keys();\n return rc;\n }\n getOFileForS3File(pFile) {\n return this.#mapS3FileToOFile_.get(pFile);\n }\n mapS3FileToOFile(pFile, file) {\n if (file) {\n this.#mapS3FileToOFile_.set(pFile, file);\n setPoolForPFile(pFile, this);\n } else {\n this.#mapS3FileToOFile_.delete(pFile);\n setPoolForPFile(pFile, false);\n }\n }\n hasFilename(name) {\n return this.#mapFilenameToSAH.has(name);\n }\n getSAHForPath(path) {\n return this.#mapFilenameToSAH.get(path);\n }\n async removeVfs() {\n if (!this.#cVfs.pointer || !this.#dhOpaque) return false;\n capi.sqlite3_vfs_unregister(this.#cVfs.pointer);\n this.#cVfs.dispose();\n delete initPromises[this.vfsName];\n try {\n this.releaseAccessHandles();\n await this.#dhVfsRoot.removeEntry(OPAQUE_DIR_NAME, { recursive: true });\n this.#dhOpaque = void 0;\n await this.#dhVfsParent.removeEntry(this.#dhVfsRoot.name, { recursive: true });\n this.#dhVfsRoot = this.#dhVfsParent = void 0;\n } catch (e) {\n sqlite3.config.error(this.vfsName, \"removeVfs() failed with no recovery strategy:\", e);\n }\n return true;\n }\n pauseVfs() {\n if (this.#mapS3FileToOFile_.size > 0) sqlite3.SQLite3Error.toss(capi.SQLITE_MISUSE, \"Cannot pause VFS\", this.vfsName, \"because it has opened files.\");\n if (this.#mapSAHToName.size > 0) {\n capi.sqlite3_vfs_unregister(this.vfsName);\n this.releaseAccessHandles();\n }\n return this;\n }\n isPaused() {\n return 0 === this.#mapSAHToName.size;\n }\n async unpauseVfs() {\n if (0 === this.#mapSAHToName.size) return this.acquireAccessHandles(false).then(() => capi.sqlite3_vfs_register(this.#cVfs, 0), this);\n return this;\n }\n exportFile(name) {\n const sah = this.#mapFilenameToSAH.get(name) || toss(\"File not found:\", name);\n const n = sah.getSize() - HEADER_OFFSET_DATA;\n const b = new Uint8Array(n > 0 ? n : 0);\n if (n > 0) {\n const nRead = sah.read(b, { at: HEADER_OFFSET_DATA });\n if (nRead != n) toss(\"Expected to read \" + n + \" bytes but read \" + nRead + \".\");\n }\n return b;\n }\n async importDbChunked(name, callback) {\n const sah = this.#mapFilenameToSAH.get(name) || this.nextAvailableSAH() || toss(\"No available handles to import to.\");\n sah.truncate(0);\n let nWrote = 0, chunk, checkedHeader = false;\n try {\n while (void 0 !== (chunk = await callback())) {\n if (chunk instanceof ArrayBuffer) chunk = new Uint8Array(chunk);\n if (0 === nWrote && chunk.byteLength >= 15) {\n util.affirmDbHeader(chunk);\n checkedHeader = true;\n }\n sah.write(chunk, { at: HEADER_OFFSET_DATA + nWrote });\n nWrote += chunk.byteLength;\n }\n if (nWrote < 512 || 0 !== nWrote % 512) toss(\"Input size\", nWrote, \"is not correct for an SQLite database.\");\n if (!checkedHeader) {\n const header = new Uint8Array(20);\n sah.read(header, { at: 0 });\n util.affirmDbHeader(header);\n }\n sah.write(new Uint8Array([1, 1]), { at: HEADER_OFFSET_DATA + 18 });\n } catch (e) {\n this.setAssociatedPath(sah, \"\", 0);\n throw e;\n }\n this.setAssociatedPath(sah, name, capi.SQLITE_OPEN_MAIN_DB);\n return nWrote;\n }\n importDb(name, bytes) {\n if (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n else if (bytes instanceof Function) return this.importDbChunked(name, bytes);\n const sah = this.#mapFilenameToSAH.get(name) || this.nextAvailableSAH() || toss(\"No available handles to import to.\");\n const n = bytes.byteLength;\n if (n < 512 || n % 512 != 0) toss(\"Byte array size is invalid for an SQLite db.\");\n const header = \"SQLite format 3\";\n for (let i = 0; i < 15; ++i) if (header.charCodeAt(i) !== bytes[i]) toss(\"Input does not contain an SQLite database header.\");\n const nWrote = sah.write(bytes, { at: HEADER_OFFSET_DATA });\n if (nWrote != n) {\n this.setAssociatedPath(sah, \"\", 0);\n toss(\"Expected to write \" + n + \" bytes but wrote \" + nWrote + \".\");\n } else {\n sah.write(new Uint8Array([1, 1]), { at: HEADER_OFFSET_DATA + 18 });\n this.setAssociatedPath(sah, name, capi.SQLITE_OPEN_MAIN_DB);\n }\n return nWrote;\n }\n }\n class OpfsSAHPoolUtil {\n #p;\n constructor(sahPool) {\n this.#p = sahPool;\n this.vfsName = sahPool.vfsName;\n }\n async addCapacity(n) {\n return this.#p.addCapacity(n);\n }\n async reduceCapacity(n) {\n return this.#p.reduceCapacity(n);\n }\n getCapacity() {\n return this.#p.getCapacity(this.#p);\n }\n getFileCount() {\n return this.#p.getFileCount();\n }\n getFileNames() {\n return this.#p.getFileNames();\n }\n async reserveMinimumCapacity(min) {\n const c = this.#p.getCapacity();\n return c < min ? this.#p.addCapacity(min - c) : c;\n }\n exportFile(name) {\n return this.#p.exportFile(name);\n }\n importDb(name, bytes) {\n return this.#p.importDb(name, bytes);\n }\n async wipeFiles() {\n return this.#p.reset(true);\n }\n unlink(filename) {\n return this.#p.deletePath(filename);\n }\n async removeVfs() {\n return this.#p.removeVfs();\n }\n pauseVfs() {\n this.#p.pauseVfs();\n return this;\n }\n async unpauseVfs() {\n return this.#p.unpauseVfs().then(() => this);\n }\n isPaused() {\n return this.#p.isPaused();\n }\n }\n const apiVersionCheck = async () => {\n const dh = await navigator.storage.getDirectory();\n const fn = \".opfs-sahpool-sync-check-\" + getRandomName();\n const close = (await (await dh.getFileHandle(fn, { create: true })).createSyncAccessHandle()).close();\n await close;\n await dh.removeEntry(fn);\n if (close?.then) toss(\"The local OPFS API is too old for opfs-sahpool:\", \"it has an async FileSystemSyncAccessHandle.close() method.\");\n return true;\n };\n sqlite3.installOpfsSAHPoolVfs = async function(options = Object.create(null)) {\n options = Object.assign(Object.create(null), optionDefaults, options || {});\n const vfsName = options.name;\n if (options.$testThrowPhase1) throw options.$testThrowPhase1;\n if (initPromises[vfsName]) try {\n return await initPromises[vfsName];\n } catch (e) {\n if (options.forceReinitIfPreviouslyFailed) delete initPromises[vfsName];\n else throw e;\n }\n if (!globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle || !globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle || !navigator?.storage?.getDirectory) return initPromises[vfsName] = Promise.reject(/* @__PURE__ */ new Error(\"Missing required OPFS APIs.\"));\n return initPromises[vfsName] = apiVersionCheck().then(async function() {\n if (options.$testThrowPhase2) throw options.$testThrowPhase2;\n const thePool = new OpfsSAHPool(options);\n return thePool.isReady.then(async () => {\n const poolUtil = new OpfsSAHPoolUtil(thePool);\n if (sqlite3.oo1) {\n const oo1 = sqlite3.oo1;\n const theVfs = thePool.getVfs();\n const OpfsSAHPoolDb = function(...args) {\n const opt = oo1.DB.dbCtorHelper.normalizeArgs(...args);\n opt.vfs = theVfs.$zName;\n oo1.DB.dbCtorHelper.call(this, opt);\n };\n OpfsSAHPoolDb.prototype = Object.create(oo1.DB.prototype);\n poolUtil.OpfsSAHPoolDb = OpfsSAHPoolDb;\n }\n thePool.log(\"VFS initialized.\");\n return poolUtil;\n }).catch(async (e) => {\n await thePool.removeVfs().catch(() => {});\n throw e;\n });\n }).catch((err$1) => {\n return initPromises[vfsName] = Promise.reject(err$1);\n });\n };\n });\n if (\"undefined\" !== typeof Module) {\n const SABC = Object.assign(Object.create(null), {\n exports: \"undefined\" === typeof wasmExports ? Module[\"asm\"] : wasmExports,\n memory: Module.wasmMemory\n }, globalThis.sqlite3ApiConfig || {});\n globalThis.sqlite3ApiConfig = SABC;\n let sqlite3;\n try {\n sqlite3 = globalThis.sqlite3ApiBootstrap();\n } catch (e) {\n console.error(\"sqlite3ApiBootstrap() error:\", e);\n throw e;\n } finally {\n delete globalThis.sqlite3ApiBootstrap;\n delete globalThis.sqlite3ApiConfig;\n }\n Module.sqlite3 = sqlite3;\n } else console.warn(\"This is not running in an Emscripten module context, so\", \"globalThis.sqlite3ApiBootstrap() is _not_ being called due to lack\", \"of config info for the WASM environment.\", \"It must be called manually.\");\n };\n moduleRtn = readyPromise;\n return moduleRtn;\n };\n})();\nsqlite3InitModule = (function() {\n const originalInit = sqlite3InitModule;\n if (!originalInit) throw new Error(\"Expecting globalThis.sqlite3InitModule to be defined by the Emscripten build.\");\n const initModuleState = globalThis.sqlite3InitModuleState = Object.assign(Object.create(null), {\n moduleScript: globalThis?.document?.currentScript,\n isWorker: \"undefined\" !== typeof WorkerGlobalScope,\n location: globalThis.location,\n urlParams: globalThis?.location?.href ? new URL(globalThis.location.href).searchParams : new URLSearchParams()\n });\n initModuleState.debugModule = initModuleState.urlParams.has(\"sqlite3.debugModule\") ? (...args) => console.warn(\"sqlite3.debugModule:\", ...args) : () => {};\n if (initModuleState.urlParams.has(\"sqlite3.dir\")) initModuleState.sqlite3Dir = initModuleState.urlParams.get(\"sqlite3.dir\") + \"/\";\n else if (initModuleState.moduleScript) {\n const li = initModuleState.moduleScript.src.split(\"/\");\n li.pop();\n initModuleState.sqlite3Dir = li.join(\"/\") + \"/\";\n }\n globalThis.sqlite3InitModule = function ff(...args) {\n return originalInit(...args).then((EmscriptenModule) => {\n EmscriptenModule.runSQLite3PostLoadInit(EmscriptenModule);\n const s = EmscriptenModule.sqlite3;\n s.scriptInfo = initModuleState;\n if (ff.__isUnderTest) s.__isUnderTest = true;\n const f = s.asyncPostInit;\n delete s.asyncPostInit;\n return f();\n }).catch((e) => {\n console.error(\"Exception loading sqlite3 module:\", e);\n throw e;\n });\n };\n globalThis.sqlite3InitModule.ready = originalInit.ready;\n if (globalThis.sqlite3InitModuleState.moduleScript) {\n const sim = globalThis.sqlite3InitModuleState;\n let src = sim.moduleScript.src.split(\"/\");\n src.pop();\n sim.scriptDir = src.join(\"/\") + \"/\";\n }\n initModuleState.debugModule(\"sqlite3InitModuleState =\", initModuleState);\n return globalThis.sqlite3InitModule;\n})();\nglobalThis.sqlite3Worker1Promiser = function callee(config = callee.defaultConfig) {\n if (1 === arguments.length && \"function\" === typeof arguments[0]) {\n const f = config;\n config = Object.assign(Object.create(null), callee.defaultConfig);\n config.onready = f;\n } else config = Object.assign(Object.create(null), callee.defaultConfig, config);\n const handlerMap = Object.create(null);\n const noop = function() {};\n const err = config.onerror || noop;\n const debug = config.debug || noop;\n const idTypeMap = config.generateMessageId ? void 0 : Object.create(null);\n const genMsgId = config.generateMessageId || function(msg) {\n return msg.type + \"#\" + (idTypeMap[msg.type] = (idTypeMap[msg.type] || 0) + 1);\n };\n const toss = (...args) => {\n throw new Error(args.join(\" \"));\n };\n if (!config.worker) config.worker = callee.defaultConfig.worker;\n if (\"function\" === typeof config.worker) config.worker = config.worker();\n let dbId;\n let promiserFunc;\n config.worker.onmessage = function(ev) {\n ev = ev.data;\n debug(\"worker1.onmessage\", ev);\n let msgHandler = handlerMap[ev.messageId];\n if (!msgHandler) {\n if (ev && \"sqlite3-api\" === ev.type && \"worker1-ready\" === ev.result) {\n if (config.onready) config.onready(promiserFunc);\n return;\n }\n msgHandler = handlerMap[ev.type];\n if (msgHandler && msgHandler.onrow) {\n msgHandler.onrow(ev);\n return;\n }\n if (config.onunhandled) config.onunhandled(arguments[0]);\n else err(\"sqlite3Worker1Promiser() unhandled worker message:\", ev);\n return;\n }\n delete handlerMap[ev.messageId];\n switch (ev.type) {\n case \"error\":\n msgHandler.reject(ev);\n return;\n case \"open\":\n if (!dbId) dbId = ev.dbId;\n break;\n case \"close\":\n if (ev.dbId === dbId) dbId = void 0;\n break;\n default: break;\n }\n try {\n msgHandler.resolve(ev);\n } catch (e) {\n msgHandler.reject(e);\n }\n };\n return promiserFunc = function() {\n let msg;\n if (1 === arguments.length) msg = arguments[0];\n else if (2 === arguments.length) {\n msg = Object.create(null);\n msg.type = arguments[0];\n msg.args = arguments[1];\n msg.dbId = msg.args.dbId;\n } else toss(\"Invalid arguments for sqlite3Worker1Promiser()-created factory.\");\n if (!msg.dbId && msg.type !== \"open\") msg.dbId = dbId;\n msg.messageId = genMsgId(msg);\n msg.departureTime = performance.now();\n const proxy$1 = Object.create(null);\n proxy$1.message = msg;\n let rowCallbackId;\n if (\"exec\" === msg.type && msg.args) {\n if (\"function\" === typeof msg.args.callback) {\n rowCallbackId = msg.messageId + \":row\";\n proxy$1.onrow = msg.args.callback;\n msg.args.callback = rowCallbackId;\n handlerMap[rowCallbackId] = proxy$1;\n } else if (\"string\" === typeof msg.args.callback) toss(\"exec callback may not be a string when using the Promise interface.\");\n }\n let p = new Promise(function(resolve, reject) {\n proxy$1.resolve = resolve;\n proxy$1.reject = reject;\n handlerMap[msg.messageId] = proxy$1;\n debug(\"Posting\", msg.type, \"message to Worker dbId=\" + (dbId || \"default\") + \":\", msg);\n config.worker.postMessage(msg);\n });\n if (rowCallbackId) p = p.finally(() => delete handlerMap[rowCallbackId]);\n return p;\n };\n};\nglobalThis.sqlite3Worker1Promiser.defaultConfig = {\n worker: function() {\n return new Worker(new URL(\n /* @vite-ignore */\n \"\" + new URL(\"sqlite3-worker1-bundler-friendly-DLarOZDL.js\", import.meta.url).href,\n \"\" + import.meta.url\n ), { type: \"module\" });\n },\n onerror: (...args) => console.error(\"worker1 promiser error\", ...args)\n};\nsqlite3Worker1Promiser.v2 = function(config) {\n let oldFunc;\n if (\"function\" == typeof config) {\n oldFunc = config;\n config = {};\n } else if (\"function\" === typeof config?.onready) {\n oldFunc = config.onready;\n delete config.onready;\n }\n const promiseProxy = Object.create(null);\n config = Object.assign(config || Object.create(null), { onready: async function(func) {\n try {\n if (oldFunc) await oldFunc(func);\n promiseProxy.resolve(func);\n } catch (e) {\n promiseProxy.reject(e);\n }\n } });\n const p = new Promise(function(resolve, reject) {\n promiseProxy.resolve = resolve;\n promiseProxy.reject = reject;\n });\n try {\n this.original(config);\n } catch (e) {\n promiseProxy.reject(e);\n }\n return p;\n}.bind({ original: sqlite3Worker1Promiser });\nsqlite3Worker1Promiser.v2;\nconst sqlite3Worker1Promiser$1 = globalThis.sqlite3Worker1Promiser;\nasync function initializeDatabase(config) {\n const promiser = await new Promise((resolve) => {\n const _promiser = sqlite3Worker1Promiser$1({ onready: () => resolve(_promiser) });\n });\n if (!promiser) throw new Error(\"Failed to initialize promiser\");\n const cfg = await promiser(\"config-get\", {});\n const openResponse = await promiser(\"open\", { filename: config.filename });\n if (openResponse.type === \"error\") throw new Error(openResponse.result.message);\n const dbId = openResponse.result.dbId;\n for (const table of Object.values(config.tables)) await promiser(\"exec\", {\n dbId,\n sql: table.schema\n });\n return {\n promiser,\n dbId,\n cfg\n };\n}\nconst state = {\n initialized: false,\n promiser: void 0,\n dbId: void 0\n};\nexpose({\n async initialize() {\n if (state.initialized) return;\n const { promiser, dbId } = await initializeDatabase(databaseConfig);\n state.promiser = promiser;\n state.dbId = dbId;\n state.initialized = true;\n },\n onNodeExecuteAfterData(buffer) {\n const data = new TextDecoder(\"utf-8\").decode(new Uint8Array(buffer));\n let parsedData;\n try {\n parsedData = JSON.parse(data);\n } catch (error) {\n return;\n }\n console.log(\"nodeExecuteAfterData in worker\", parsedData);\n }\n});\n";
420
+ var blob = typeof self !== "undefined" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", jsContent], { type: "text/javascript;charset=utf-8" });
421
+ function WorkerWrapper(options) {
422
+ let objURL;
423
+ try {
424
+ objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);
425
+ if (!objURL) throw "";
426
+ const worker$1 = new Worker(objURL, {
427
+ type: "module",
428
+ name: options?.name
429
+ });
430
+ worker$1.addEventListener("error", () => {
431
+ (self.URL || self.webkitURL).revokeObjectURL(objURL);
432
+ });
433
+ return worker$1;
434
+ } catch (e) {
435
+ return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent), {
436
+ type: "module",
437
+ name: options?.name
438
+ });
439
+ }
440
+ }
441
+ const runDataWorker = wrap(new WorkerWrapper());
442
+ const usePushConnectionStore = defineStore(STORES.PUSH, () => {
443
+ const rootStore = useRootStore();
444
+ const settingsStore = useSettingsStore();
445
+ const isRunDataWorkerEnabled = useLocalStorage(LOCAL_STORAGE_RUN_DATA_WORKER, false);
446
+ const outgoingQueue = ref([]);
447
+ const isConnectionRequested = ref(false);
448
+ const onMessageReceivedHandlers = ref([]);
449
+ const addEventListener = (handler) => {
450
+ onMessageReceivedHandlers.value.push(handler);
451
+ return () => {
452
+ const index = onMessageReceivedHandlers.value.indexOf(handler);
453
+ if (index !== -1) onMessageReceivedHandlers.value.splice(index, 1);
454
+ };
455
+ };
456
+ const useWebSockets = computed(() => settingsStore.pushBackend === "websocket");
457
+ const getConnectionUrl = () => {
458
+ const restUrl = rootStore.restUrl;
459
+ const url$1 = `/push?pushRef=${rootStore.pushRef}`;
460
+ if (useWebSockets.value) {
461
+ const { protocol, host } = window.location;
462
+ return `${restUrl.startsWith("http") ? restUrl.replace(/^http/, "ws") : `${protocol === "https:" ? "wss" : "ws"}://${host + restUrl}`}${url$1}`;
463
+ } else return `${restUrl}${url$1}`;
464
+ };
465
+ async function onMessage(data) {
466
+ if (data instanceof ArrayBuffer) if (isRunDataWorkerEnabled.value) {
467
+ await runDataWorker.onNodeExecuteAfterData(data);
468
+ return;
469
+ } else data = new TextDecoder("utf-8").decode(new Uint8Array(data));
470
+ let parsedData;
471
+ try {
472
+ parsedData = JSON.parse(data);
473
+ } catch (error) {
474
+ return;
475
+ }
476
+ onMessageReceivedHandlers.value.forEach((handler) => handler(parsedData));
477
+ }
478
+ const url = getConnectionUrl();
479
+ const client = computed(() => useWebSockets.value ? useWebSocketClient({
480
+ url,
481
+ onMessage
482
+ }) : useEventSourceClient({
483
+ url,
484
+ onMessage
485
+ }));
486
+ function serializeAndSend(message) {
487
+ if (client.value.isConnected.value) client.value.sendMessage(JSON.stringify(message));
488
+ else outgoingQueue.value.push(message);
489
+ }
490
+ const pushConnect = () => {
491
+ isConnectionRequested.value = true;
492
+ client.value.connect();
493
+ };
494
+ const pushDisconnect = () => {
495
+ isConnectionRequested.value = false;
496
+ client.value.disconnect();
497
+ };
498
+ watch(() => client.value.isConnected.value, (didConnect) => {
499
+ if (!didConnect) return;
500
+ if (outgoingQueue.value.length) {
501
+ for (const message of outgoingQueue.value) serializeAndSend(message);
502
+ outgoingQueue.value = [];
503
+ }
504
+ });
505
+ const clearQueue = () => {
506
+ outgoingQueue.value = [];
507
+ };
508
+ return {
509
+ isConnected: computed(() => client.value.isConnected.value),
510
+ isConnectionRequested,
511
+ onMessageReceivedHandlers,
512
+ addEventListener,
513
+ pushConnect,
514
+ pushDisconnect,
515
+ send: serializeAndSend,
516
+ clearQueue
517
+ };
518
+ });
519
+ function shouldCommandMarkDirty(command, nodeName, siblingCommands, getIncomingConnections, getOutgoingConnectors) {
520
+ if (command instanceof BulkCommand) return command.commands.some((cmd) => shouldCommandMarkDirty(cmd, nodeName, command.commands, getIncomingConnections, getOutgoingConnectors));
521
+ if (command instanceof AddConnectionCommand) return command.connectionData[1]?.node === nodeName;
522
+ if (command instanceof RemoveConnectionCommand) {
523
+ const [from, to] = command.connectionData;
524
+ if (to.node !== nodeName) return false;
525
+ return siblingCommands.some((sibling) => sibling instanceof RemoveNodeCommand && sibling.node.name === from.node);
526
+ }
527
+ const incomingNodes = Object.values(getIncomingConnections(nodeName)).flat().flat().filter((connection) => connection !== null).map((connection) => connection.node);
528
+ if (command instanceof AddNodeCommand) return incomingNodes.includes(command.node.name);
529
+ if (command instanceof EnableNodeToggleCommand) return incomingNodes.includes(command.nodeName) && (command.newState || Object.keys(getOutgoingConnectors(command.nodeName)).some((type) => type !== NodeConnectionTypes.Main));
530
+ return false;
531
+ }
532
+ function findLoop(nodeName, visited, getIncomingConnections) {
533
+ const index = visited.indexOf(nodeName);
534
+ if (index >= 0) return visited.slice(index);
535
+ const newVisited = [...visited, nodeName];
536
+ for (const [type, typeConnections] of Object.entries(getIncomingConnections(nodeName))) {
537
+ if (type !== NodeConnectionTypes.Main) continue;
538
+ for (const connections of typeConnections) for (const { node } of connections ?? []) {
539
+ const loop = findLoop(node, newVisited, getIncomingConnections);
540
+ if (loop) return loop;
541
+ }
542
+ }
543
+ }
544
+ function useNodeDirtiness() {
545
+ const historyStore = useHistoryStore();
546
+ const workflowsStore = useWorkflowsStore();
547
+ function getParentSubNodes(nodeName) {
548
+ return Object.entries(workflowsStore.incomingConnectionsByNodeName(nodeName)).filter(([type]) => type !== NodeConnectionTypes.Main).flatMap(([, typeConnections]) => typeConnections.flat().filter((conn) => conn !== null));
549
+ }
550
+ function getDirtinessByParametersUpdate(nodeName, after) {
551
+ if ((workflowsStore.getParametersLastUpdate(nodeName) ?? 0) > after) return CanvasNodeDirtiness.PARAMETERS_UPDATED;
552
+ for (const connection of getParentSubNodes(nodeName)) if (getDirtinessByParametersUpdate(connection.node, after) !== void 0) return CanvasNodeDirtiness.UPSTREAM_DIRTY;
553
+ }
554
+ function getDirtinessByConnectionsUpdate(nodeName, after) {
555
+ for (let i = historyStore.undoStack.length - 1; i >= 0; i--) {
556
+ const command = historyStore.undoStack[i];
557
+ if (command.getTimestamp() < after) break;
558
+ if (shouldCommandMarkDirty(command, nodeName, [], workflowsStore.incomingConnectionsByNodeName, workflowsStore.outgoingConnectionsByNodeName)) return CanvasNodeDirtiness.INCOMING_CONNECTIONS_UPDATED;
559
+ }
560
+ for (const connection of getParentSubNodes(nodeName)) if (getDirtinessByConnectionsUpdate(connection.node, after) !== void 0) return CanvasNodeDirtiness.UPSTREAM_DIRTY;
561
+ }
562
+ const depthByName = computed(() => {
563
+ const depth = {};
564
+ function setDepthRecursively(nodeName, current, visited) {
565
+ if (visited.has(nodeName)) return;
566
+ const myVisited = new Set(visited);
567
+ myVisited.add(nodeName);
568
+ for (const [type, typeConnections] of Object.entries(workflowsStore.outgoingConnectionsByNodeName(nodeName))) {
569
+ if (type !== NodeConnectionTypes.Main) continue;
570
+ for (const connections of typeConnections) for (const { node } of connections ?? []) {
571
+ if (!depth[node] || depth[node] > current) depth[node] = current;
572
+ setDepthRecursively(node, current + 1, myVisited);
573
+ }
574
+ }
575
+ }
576
+ for (const startNode of workflowsStore.allNodes) {
577
+ if (Object.keys(workflowsStore.incomingConnectionsByNodeName(startNode.name)).length > 0) continue;
578
+ depth[startNode.name] = 0;
579
+ setDepthRecursively(startNode.name, 1, /* @__PURE__ */ new Set());
580
+ }
581
+ return depth;
582
+ });
583
+ return { dirtinessByName: computed(() => {
584
+ const dirtiness = {};
585
+ const runDataByNode = workflowsStore.getWorkflowRunData ?? {};
586
+ function setDirtiness(nodeName, value) {
587
+ dirtiness[nodeName] = dirtiness[nodeName] ?? value;
588
+ const loop = findLoop(nodeName, [], workflowsStore.incomingConnectionsByNodeName);
589
+ if (!loop) return;
590
+ const loopEntryNodeName = [...loop].sort((a, b) => (depthByName.value[a] ?? Number.MAX_SAFE_INTEGER) - (depthByName.value[b] ?? Number.MAX_SAFE_INTEGER))?.[0];
591
+ if (loopEntryNodeName && depthByName.value[loopEntryNodeName]) dirtiness[loopEntryNodeName] = dirtiness[loopEntryNodeName] ?? CanvasNodeDirtiness.UPSTREAM_DIRTY;
592
+ }
593
+ for (const [nodeName, runData] of Object.entries(runDataByNode)) {
594
+ const runAt = runData[0]?.startTime ?? 0;
595
+ if (!runAt) continue;
596
+ const parameterUpdate = getDirtinessByParametersUpdate(nodeName, runAt);
597
+ if (parameterUpdate) {
598
+ setDirtiness(nodeName, parameterUpdate);
599
+ continue;
600
+ }
601
+ const connectionUpdate = getDirtinessByConnectionsUpdate(nodeName, runAt);
602
+ if (connectionUpdate) {
603
+ setDirtiness(nodeName, connectionUpdate);
604
+ continue;
605
+ }
606
+ if (Object.values(workflowsStore.incomingConnectionsByNodeName(nodeName)).flat().flat().filter((connection) => connection !== null).some((connection) => {
607
+ return (workflowsStore.getPinnedDataLastUpdate(connection.node) ?? 0) > runAt;
608
+ })) {
609
+ setDirtiness(nodeName, CanvasNodeDirtiness.PINNED_DATA_UPDATED);
610
+ continue;
611
+ }
612
+ if ((workflowsStore.getPinnedDataLastRemovedAt(nodeName) ?? 0) > runAt) {
613
+ setDirtiness(nodeName, CanvasNodeDirtiness.PINNED_DATA_UPDATED);
614
+ continue;
615
+ }
616
+ }
617
+ return dirtiness;
618
+ }) };
619
+ }
620
+ var LOCAL_STORAGE_AGENT_REQUESTS = "N8N_AGENT_REQUESTS";
621
+ const useAgentRequestStore = defineStore("agentRequest", () => {
622
+ const agentRequests = useLocalStorage(LOCAL_STORAGE_AGENT_REQUESTS, {});
623
+ const ensureWorkflowAndNodeExist = (workflowId, nodeId) => {
624
+ if (!agentRequests.value[workflowId]) agentRequests.value[workflowId] = {};
625
+ if (!agentRequests.value[workflowId][nodeId]) agentRequests.value[workflowId][nodeId] = { query: {} };
626
+ };
627
+ const getAgentRequests = (workflowId, nodeId) => {
628
+ return agentRequests.value[workflowId]?.[nodeId]?.query || {};
629
+ };
630
+ const getQueryValue = (workflowId, nodeId, paramName) => {
631
+ const query = agentRequests.value[workflowId]?.[nodeId]?.query;
632
+ if (typeof query === "string") return;
633
+ return query?.[paramName];
634
+ };
635
+ const setAgentRequestForNode = (workflowId, nodeId, request) => {
636
+ ensureWorkflowAndNodeExist(workflowId, nodeId);
637
+ agentRequests.value[workflowId][nodeId] = {
638
+ ...request,
639
+ query: typeof request.query === "string" ? request.query : { ...request.query }
640
+ };
641
+ };
642
+ const clearAgentRequests = (workflowId, nodeId) => {
643
+ if (agentRequests.value[workflowId]) agentRequests.value[workflowId][nodeId] = { query: {} };
644
+ };
645
+ const clearAllAgentRequests = (workflowId) => {
646
+ if (workflowId) agentRequests.value[workflowId] = {};
647
+ else agentRequests.value = {};
648
+ };
649
+ const getAgentRequest = (workflowId, nodeId) => {
650
+ if (agentRequests.value[workflowId]) return agentRequests.value[workflowId]?.[nodeId];
651
+ };
652
+ return {
653
+ agentRequests,
654
+ getAgentRequests,
655
+ getQueryValue,
656
+ setAgentRequestForNode,
657
+ clearAgentRequests,
658
+ clearAllAgentRequests,
659
+ getAgentRequest
660
+ };
661
+ });
662
+ var import_get = /* @__PURE__ */ __toESM(require_get());
663
+ function useRunWorkflow(useRunWorkflowOpts) {
664
+ const workflowHelpers = useWorkflowHelpers();
665
+ const i18n = useI18n();
666
+ const toast = useToast();
667
+ const telemetry = useTelemetry();
668
+ const externalHooks = useExternalHooks();
669
+ const settingsStore = useSettingsStore();
670
+ const agentRequestStore = useAgentRequestStore();
671
+ const rootStore = useRootStore();
672
+ const pushConnectionStore = usePushConnectionStore();
673
+ const workflowsStore = useWorkflowsStore();
674
+ const workflowState = useRunWorkflowOpts.workflowState ?? injectWorkflowState();
675
+ const nodeHelpers = useNodeHelpers({ workflowState });
676
+ const workflowSaving = useWorkflowSaving({
677
+ router: useRunWorkflowOpts.router,
678
+ workflowState
679
+ });
680
+ const executionsStore = useExecutionsStore();
681
+ const { dirtinessByName } = useNodeDirtiness();
682
+ const { startChat } = useCanvasOperations();
683
+ const workflowObject = computed(() => workflowsStore.workflowObject);
684
+ function sortNodesByYPosition(nodes) {
685
+ return [...nodes].sort((a, b) => {
686
+ const nodeA = workflowsStore.getNodeByName(a)?.position ?? [0, 0];
687
+ const nodeB = workflowsStore.getNodeByName(b)?.position ?? [0, 0];
688
+ const nodeAYPosition = nodeA[1];
689
+ const nodeBYPosition = nodeB[1];
690
+ if (nodeAYPosition === nodeBYPosition) return 0;
691
+ return nodeAYPosition > nodeBYPosition ? 1 : -1;
692
+ });
693
+ }
694
+ async function runWorkflowApi(runData) {
695
+ if (!pushConnectionStore.isConnected) throw new Error(i18n.baseText("workflowRun.noActiveConnectionToTheServer"));
696
+ workflowsStore.subWorkflowExecutionError = null;
697
+ workflowState.setActiveExecutionId(null);
698
+ let response;
699
+ try {
700
+ response = await workflowsStore.runWorkflow(runData);
701
+ } catch (error) {
702
+ workflowState.setActiveExecutionId(void 0);
703
+ throw error;
704
+ }
705
+ const workflowExecutionIdIsNew = workflowsStore.previousExecutionId !== response.executionId;
706
+ const workflowExecutionIdIsPending = workflowsStore.activeExecutionId === null;
707
+ if (response.executionId && workflowExecutionIdIsNew && workflowExecutionIdIsPending) workflowState.setActiveExecutionId(response.executionId);
708
+ if (response.waitingForWebhook === true) workflowsStore.executionWaitingForWebhook = true;
709
+ return response;
710
+ }
711
+ async function runWorkflow(options) {
712
+ if (workflowsStore.activeExecutionId) return;
713
+ toast.clearAllStickyNotifications();
714
+ try {
715
+ let directParentNodes = [];
716
+ if (options.destinationNode !== void 0) directParentNodes = workflowObject.value.getParentNodes(options.destinationNode.nodeName, NodeConnectionTypes.Main, -1);
717
+ const runData = workflowsStore.getWorkflowRunData;
718
+ if (!workflowsStore.isWorkflowSaved[workflowsStore.workflowId]) await workflowSaving.saveCurrentWorkflow();
719
+ const workflowData = await workflowHelpers.getWorkflowDataToSave();
720
+ const { startNodeNames } = consolidateRunDataAndStartNodes(directParentNodes, runData, workflowData.pinData, workflowObject.value);
721
+ const destinationNodeType = options.destinationNode ? workflowsStore.getNodeByName(options.destinationNode.nodeName)?.type : "";
722
+ let executedNode;
723
+ let triggerToStartFrom;
724
+ if (startNodeNames.length === 0 && directParentNodes.length === 0 && "destinationNode" in options && options.destinationNode !== void 0) {
725
+ executedNode = options.destinationNode.nodeName;
726
+ startNodeNames.push(options.destinationNode.nodeName);
727
+ } else if (options.triggerNode && options.nodeData && !options.rerunTriggerNode) startNodeNames.push(...workflowObject.value.getChildNodes(options.triggerNode, NodeConnectionTypes.Main, 1));
728
+ else if (options.destinationNode) executedNode = options.destinationNode.nodeName;
729
+ if (options.triggerNode) triggerToStartFrom = {
730
+ name: options.triggerNode,
731
+ data: options.nodeData
732
+ };
733
+ if (options.destinationNode && (workflowsStore.checkIfNodeHasChatParent(options.destinationNode.nodeName) || destinationNodeType === "@n8n/n8n-nodes-langchain.chatTrigger") && options.source !== "RunData.ManualChatMessage") {
734
+ const startNode = workflowObject.value.getStartNode(options.destinationNode.nodeName);
735
+ if (startNode && startNode.type === "@n8n/n8n-nodes-langchain.chatTrigger") {
736
+ const chatHasInputData = nodeHelpers.getNodeInputData(startNode, 0, 0, "input")?.length > 0;
737
+ const chatHasPinData = !!workflowData.pinData?.[startNode.name];
738
+ if (!chatHasInputData && !chatHasPinData) {
739
+ workflowsStore.chatPartialExecutionDestinationNode = options.destinationNode.nodeName;
740
+ startChat();
741
+ return;
742
+ }
743
+ }
744
+ }
745
+ const triggers = workflowData.nodes.filter((node) => node.type.toLowerCase().includes("trigger") && !node.disabled);
746
+ if (!options.destinationNode && options.source !== "RunData.ManualChatMessage" && workflowData.nodes.some((node) => node.type === "@n8n/n8n-nodes-langchain.chatTrigger")) {
747
+ if (triggers.filter((node) => node.type !== "@n8n/n8n-nodes-langchain.chatTrigger").length) {
748
+ const chatTriggerNode = workflowData.nodes.find((node) => node.type === CHAT_TRIGGER_NODE_TYPE);
749
+ if (chatTriggerNode) chatTriggerNode.disabled = true;
750
+ }
751
+ }
752
+ const isPartialExecution = options.destinationNode !== void 0;
753
+ const startNodes = sortNodesByYPosition(startNodeNames).map((name) => {
754
+ let sourceData = (0, import_get.default)(runData, [
755
+ name,
756
+ 0,
757
+ "source",
758
+ 0
759
+ ], null);
760
+ if (sourceData === null) {
761
+ const parentNodes = workflowObject.value.getParentNodes(name, NodeConnectionTypes.Main, 1);
762
+ sourceData = (0, import_get.default)(workflowHelpers.executeData(workflowObject.value.connectionsBySourceNode, parentNodes, name, NodeConnectionTypes.Main, 0), [
763
+ "source",
764
+ NodeConnectionTypes.Main,
765
+ 0
766
+ ], null);
767
+ }
768
+ return {
769
+ name,
770
+ sourceData
771
+ };
772
+ }).filter((node) => {
773
+ if (options.destinationNode && workflowsStore.checkIfNodeHasChatParent(options.destinationNode.nodeName)) return node.name !== options.destinationNode.nodeName;
774
+ return true;
775
+ });
776
+ const startRunData = {
777
+ workflowData,
778
+ runData: isPartialExecution ? runData ?? void 0 : void 0,
779
+ startNodes,
780
+ triggerToStartFrom
781
+ };
782
+ if ("destinationNode" in options) {
783
+ startRunData.destinationNode = options.destinationNode;
784
+ const nodeId = workflowsStore.getNodeByName(options.destinationNode?.nodeName ?? "")?.id;
785
+ if (workflowObject.value.id && nodeId) {
786
+ const agentRequest = agentRequestStore.getAgentRequest(workflowObject.value.id, nodeId);
787
+ if (agentRequest) startRunData.agentRequest = {
788
+ query: agentRequest.query ?? {},
789
+ tool: { name: agentRequest.toolName ?? "" }
790
+ };
791
+ }
792
+ }
793
+ if (startRunData.runData) {
794
+ const nodeNames = Object.entries(dirtinessByName.value).flatMap(([nodeName, dirtiness]) => dirtiness ? [nodeName] : []);
795
+ startRunData.dirtyNodeNames = nodeNames.length > 0 ? nodeNames : void 0;
796
+ }
797
+ const executionData = {
798
+ id: IN_PROGRESS_EXECUTION_ID,
799
+ finished: false,
800
+ mode: "manual",
801
+ status: "running",
802
+ createdAt: /* @__PURE__ */ new Date(),
803
+ startedAt: /* @__PURE__ */ new Date(),
804
+ stoppedAt: void 0,
805
+ workflowId: workflowObject.value.id,
806
+ executedNode,
807
+ triggerNode: triggerToStartFrom?.name,
808
+ data: createRunExecutionData({ resultData: {
809
+ runData: startRunData.runData ?? {},
810
+ pinData: workflowData.pinData
811
+ } }),
812
+ workflowData: {
813
+ id: workflowsStore.workflowId,
814
+ name: workflowData.name,
815
+ active: workflowData.active,
816
+ createdAt: 0,
817
+ updatedAt: 0,
818
+ ...workflowData
819
+ }
820
+ };
821
+ workflowState.setWorkflowExecutionData(executionData);
822
+ nodeHelpers.updateNodesExecutionIssues();
823
+ useDocumentTitle().setDocumentTitle(workflowObject.value.name, "EXECUTING");
824
+ const runWorkflowApiResponse = await runWorkflowApi(startRunData);
825
+ const pinData = workflowData.pinData ?? {};
826
+ const getTestUrl = (() => {
827
+ return (node) => {
828
+ const path = node.parameters.path || node.parameters.options?.path || node.webhookId;
829
+ return `${rootStore.formTestUrl}/${path}`;
830
+ };
831
+ })();
832
+ try {
833
+ await displayForm({
834
+ nodes: workflowData.nodes,
835
+ runData: workflowsStore.getWorkflowExecution?.data?.resultData?.runData,
836
+ destinationNode: options.destinationNode?.nodeName,
837
+ triggerNode: options.triggerNode,
838
+ pinData,
839
+ directParentNodes,
840
+ source: options.source,
841
+ getTestUrl
842
+ });
843
+ } catch (error) {}
844
+ await externalHooks.run("workflowRun.runWorkflow", {
845
+ nodeName: options.destinationNode?.nodeName,
846
+ source: options.source
847
+ });
848
+ return runWorkflowApiResponse;
849
+ } catch (error) {
850
+ workflowState.setWorkflowExecutionData(null);
851
+ useDocumentTitle().setDocumentTitle(workflowObject.value.name, "ERROR");
852
+ toast.showError(error, i18n.baseText("workflowRun.showError.title"));
853
+ return;
854
+ }
855
+ }
856
+ function consolidateRunDataAndStartNodes(directParentNodes, runData, pinData, workflow) {
857
+ const startNodeNames = /* @__PURE__ */ new Set();
858
+ let newRunData;
859
+ if (runData !== null && Object.keys(runData).length !== 0) {
860
+ newRunData = {};
861
+ for (const directParentNode of directParentNodes) {
862
+ const parentNodes = workflow.getParentNodes(directParentNode, NodeConnectionTypes.Main);
863
+ if (workflow.nodes[directParentNode].disabled) continue;
864
+ parentNodes.push(directParentNode);
865
+ for (const parentNode of parentNodes) {
866
+ if (!runData[parentNode]?.length && !pinData?.[parentNode]?.length || runData[parentNode]?.[0]?.error !== void 0) {
867
+ startNodeNames.add(parentNode);
868
+ break;
869
+ }
870
+ if (runData[parentNode] && !runData[parentNode]?.[0]?.error) newRunData[parentNode] = runData[parentNode]?.slice(0, 1);
871
+ }
872
+ }
873
+ if (isEmpty(newRunData)) newRunData = void 0;
874
+ }
875
+ return {
876
+ runData: newRunData,
877
+ startNodeNames: [...startNodeNames]
878
+ };
879
+ }
880
+ async function stopCurrentExecution() {
881
+ const executionId = workflowsStore.activeExecutionId;
882
+ let stopData;
883
+ if (!executionId) return;
884
+ try {
885
+ stopData = await executionsStore.stopCurrentExecution(executionId);
886
+ } catch (error) {
887
+ const execution = await workflowsStore.getExecution(executionId);
888
+ if (execution === void 0) toast.showMessage({
889
+ title: i18n.baseText("nodeView.showMessage.stopExecutionCatch.unsaved.title"),
890
+ message: i18n.baseText("nodeView.showMessage.stopExecutionCatch.unsaved.message"),
891
+ type: "success"
892
+ });
893
+ else if (execution?.finished) {
894
+ const executedData = {
895
+ data: execution.data,
896
+ workflowData: workflowsStore.workflow,
897
+ finished: execution.finished,
898
+ mode: execution.mode,
899
+ startedAt: execution.startedAt,
900
+ stoppedAt: execution.stoppedAt
901
+ };
902
+ workflowState.setWorkflowExecutionData(executedData);
903
+ toast.showMessage({
904
+ title: i18n.baseText("nodeView.showMessage.stopExecutionCatch.title"),
905
+ message: i18n.baseText("nodeView.showMessage.stopExecutionCatch.message"),
906
+ type: "success"
907
+ });
908
+ } else toast.showError(error, i18n.baseText("nodeView.showError.stopExecution.title"));
909
+ } finally {
910
+ if (!await retry(async () => {
911
+ const execution = await workflowsStore.getExecution(executionId);
912
+ if (!["running", "waiting"].includes(execution?.status)) {
913
+ workflowState.markExecutionAsStopped(stopData);
914
+ return true;
915
+ }
916
+ return false;
917
+ }, 250, 20)) workflowState.markExecutionAsStopped(stopData);
918
+ }
919
+ }
920
+ async function stopWaitingForWebhook() {
921
+ try {
922
+ await workflowsStore.removeTestWebhook(workflowsStore.workflowId);
923
+ } catch (error) {
924
+ toast.showError(error, i18n.baseText("nodeView.showError.stopWaitingForWebhook.title"));
925
+ return;
926
+ }
927
+ }
928
+ async function runEntireWorkflow(source, triggerNode) {
929
+ workflowHelpers.getWorkflowDataToSave().then((workflowData) => {
930
+ const telemetryPayload = {
931
+ workflow_id: workflowObject.value.id,
932
+ node_graph_string: JSON.stringify(generateNodesGraph(workflowData, workflowHelpers.getNodeTypes(), { isCloudDeployment: settingsStore.isCloudDeployment }).nodeGraph),
933
+ button_type: source
934
+ };
935
+ telemetry.track("User clicked execute workflow button", telemetryPayload);
936
+ externalHooks.run("nodeView.onRunWorkflow", telemetryPayload);
937
+ });
938
+ runWorkflow({ triggerNode: triggerNode ?? workflowsStore.selectedTriggerNodeName });
939
+ }
940
+ return {
941
+ consolidateRunDataAndStartNodes,
942
+ runEntireWorkflow,
943
+ runWorkflow,
944
+ runWorkflowApi,
945
+ stopCurrentExecution,
946
+ stopWaitingForWebhook,
947
+ sortNodesByYPosition
948
+ };
949
+ }
950
+ export { proxy as a, usePushConnectionStore as i, useAgentRequestStore as n, wrap as o, useNodeDirtiness as r, useRunWorkflow as t };