machinaos 0.0.76 → 0.0.78

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 (393) hide show
  1. package/README.md +143 -107
  2. package/client/dist/assets/ActionBar-Du2MSFSz.js +1 -0
  3. package/client/dist/assets/ApiKeyInput-k2LBmBjb.js +1 -0
  4. package/client/dist/assets/ApiKeyPanel-C_bV9U0X.js +1 -0
  5. package/client/dist/assets/ApiUsageSection-CmVfwZzL.js +1 -0
  6. package/client/dist/assets/EmailPanel-CeKIMGu-.js +1 -0
  7. package/client/dist/assets/OAuthPanel-KA3t3Q2K.js +1 -0
  8. package/client/dist/assets/QrPairingPanel-NgNpJNuk.js +1 -0
  9. package/client/dist/assets/RateLimitSection-Du5YNVIA.js +1 -0
  10. package/client/dist/assets/StatusCard-DNLyayXc.js +1 -0
  11. package/client/dist/assets/index-DQ0nwhec.js +257 -0
  12. package/client/dist/assets/index-DxmbVskS.css +1 -0
  13. package/client/dist/assets/vendor-flow-CZmBvHRo.js +1 -0
  14. package/client/dist/assets/vendor-icons-CVrPjN2Q.js +22 -0
  15. package/client/dist/assets/vendor-markdown-CRou3yQ5.js +62 -0
  16. package/client/dist/assets/vendor-misc-C4VxKHs5.js +1 -0
  17. package/client/dist/assets/vendor-query-SzWcOU0G.js +1 -0
  18. package/client/dist/assets/vendor-radix-Dnos29jG.js +56 -0
  19. package/client/dist/assets/vendor-react-DvWIbVx0.js +1 -0
  20. package/client/dist/index.html +37 -3
  21. package/client/index.html +28 -1
  22. package/client/package.json +44 -40
  23. package/client/src/App.tsx +2 -0
  24. package/client/src/Dashboard.tsx +157 -45
  25. package/client/src/ParameterPanel.tsx +3 -5
  26. package/client/src/adapters/nodeSpecToDescription.ts +1 -0
  27. package/client/src/assets/icons/NodeIcon.tsx +32 -0
  28. package/client/src/assets/icons/index.ts +4 -0
  29. package/client/src/assets/icons/stripe.svg +1 -0
  30. package/client/src/assets/icons/themedGlyphs.ts +404 -0
  31. package/client/src/components/AIAgentNode.tsx +77 -53
  32. package/client/src/components/GenericNode.tsx +34 -52
  33. package/client/src/components/OutputPanel.tsx +64 -147
  34. package/client/src/components/ParameterRenderer.tsx +5 -3
  35. package/client/src/components/SkillEditorModal.tsx +9 -18
  36. package/client/src/components/SquareNode.tsx +97 -115
  37. package/client/src/components/StartNode.tsx +32 -42
  38. package/client/src/components/SvgFilterDefs.tsx +54 -0
  39. package/client/src/components/TeamMonitorNode.tsx +12 -14
  40. package/client/src/components/ToolkitNode.tsx +35 -60
  41. package/client/src/components/TriggerNode.tsx +43 -77
  42. package/client/src/components/__tests__/CredentialsModal.test.tsx +49 -45
  43. package/client/src/components/credentials/CredentialsModal.tsx +98 -30
  44. package/client/src/components/credentials/CredentialsPalette.tsx +73 -5
  45. package/client/src/components/credentials/catalogueAdapter.ts +17 -1
  46. package/client/src/components/credentials/panels/ApiKeyPanel.tsx +102 -37
  47. package/client/src/components/credentials/panels/EmailPanel.tsx +7 -19
  48. package/client/src/components/credentials/panels/OAuthPanel.tsx +5 -1
  49. package/client/src/components/credentials/panels/QrPairingPanel.tsx +1 -3
  50. package/client/src/components/credentials/primitives/ActionBar.tsx +7 -11
  51. package/client/src/components/credentials/primitives/OAuthConnect.tsx +19 -28
  52. package/client/src/components/credentials/sections/ProviderDefaultsSection.tsx +24 -3
  53. package/client/src/components/credentials/types.ts +12 -2
  54. package/client/src/components/credentials/useCredentialPanel.ts +43 -19
  55. package/client/src/components/icons/AIProviderIcons.tsx +16 -0
  56. package/client/src/components/onboarding/OnboardingWizard.tsx +23 -63
  57. package/client/src/components/onboarding/nodeRoleClasses.ts +23 -0
  58. package/client/src/components/onboarding/steps/CanvasStep.tsx +15 -21
  59. package/client/src/components/onboarding/steps/ConceptsStep.tsx +2 -11
  60. package/client/src/components/onboarding/steps/GetStartedStep.tsx +2 -10
  61. package/client/src/components/parameterPanel/InputSection.tsx +9 -7
  62. package/client/src/components/parameterPanel/MasterSkillEditor.tsx +84 -198
  63. package/client/src/components/parameterPanel/MiddleSection.tsx +57 -80
  64. package/client/src/components/parameterPanel/ToolSchemaEditor.tsx +31 -25
  65. package/client/src/components/parameterPanel/__tests__/InputSection.test.tsx +7 -2
  66. package/client/src/components/ui/AIResultModal.tsx +1 -1
  67. package/client/src/components/ui/CollapsibleSection.tsx +9 -5
  68. package/client/src/components/ui/CommandPalette.tsx +147 -0
  69. package/client/src/components/ui/CommandPaletteHost.tsx +189 -0
  70. package/client/src/components/ui/ComponentItem.tsx +13 -7
  71. package/client/src/components/ui/ComponentPalette.tsx +24 -13
  72. package/client/src/components/ui/ConsolePanel.tsx +19 -11
  73. package/client/src/components/ui/DropCap.tsx +28 -0
  74. package/client/src/components/ui/EditableNodeLabel.tsx +10 -2
  75. package/client/src/components/ui/InputNodesPanel.tsx +1 -1
  76. package/client/src/components/ui/Modal.tsx +38 -6
  77. package/client/src/components/ui/OutputDisplayPanel.tsx +1 -1
  78. package/client/src/components/ui/SettingsPanel.tsx +42 -13
  79. package/client/src/components/ui/StatusBar.tsx +108 -0
  80. package/client/src/components/ui/ThemeSwitcher.tsx +109 -0
  81. package/client/src/components/ui/TopToolbar.tsx +42 -25
  82. package/client/src/components/ui/WorkflowSidebar.tsx +32 -16
  83. package/client/src/components/ui/action-button.tsx +40 -15
  84. package/client/src/components/ui/button.tsx +24 -1
  85. package/client/src/components/ui/dropdown-menu.tsx +24 -2
  86. package/client/src/components/ui/input.tsx +19 -2
  87. package/client/src/components/ui/select.tsx +15 -0
  88. package/client/src/components/ui/textarea.tsx +15 -2
  89. package/client/src/contexts/AuthContext.tsx +148 -109
  90. package/client/src/contexts/ThemeContext.tsx +93 -17
  91. package/client/src/contexts/WebSocketContext.tsx +373 -206
  92. package/client/src/contexts/__tests__/AuthContext.test.tsx +221 -0
  93. package/client/src/hooks/__tests__/useDragVariable.test.ts +7 -1
  94. package/client/src/hooks/__tests__/useWorkflowOpsListener.test.ts +142 -0
  95. package/client/src/hooks/useAppTheme.ts +209 -7
  96. package/client/src/hooks/useAutoSkillEdges.ts +7 -2
  97. package/client/src/hooks/useCatalogueQuery.ts +67 -1
  98. package/client/src/hooks/useDragVariable.ts +1 -1
  99. package/client/src/hooks/useNodeAllowlist.ts +115 -8
  100. package/client/src/hooks/useOnboarding.ts +20 -8
  101. package/client/src/hooks/useParameterPanel.ts +2 -1
  102. package/client/src/hooks/useReactFlowNodes.ts +2 -1
  103. package/client/src/hooks/useSound.ts +185 -0
  104. package/client/src/hooks/useWorkflowManagement.ts +6 -8
  105. package/client/src/hooks/useWorkflowOpsListener.ts +90 -0
  106. package/client/src/index.css +65 -3
  107. package/client/src/lib/__tests__/connectionConfig.test.ts +91 -0
  108. package/client/src/lib/aiModelProviders.ts +8 -0
  109. package/client/src/lib/connectionConfig.ts +107 -0
  110. package/client/src/lib/queryPersist.ts +13 -5
  111. package/client/src/lib/sound.ts +393 -0
  112. package/client/src/main.tsx +20 -0
  113. package/client/src/store/useAppStore.ts +26 -0
  114. package/client/src/styles/canvasAnimations.ts +37 -36
  115. package/client/src/styles/theme.ts +36 -20
  116. package/client/src/test/setup.ts +1 -0
  117. package/client/src/themes/atomic.css +253 -0
  118. package/client/src/themes/base.css +373 -0
  119. package/client/src/themes/cyber.css +890 -0
  120. package/client/src/themes/dark.css +70 -0
  121. package/client/src/themes/edo.css +246 -0
  122. package/client/src/themes/greek.css +293 -0
  123. package/client/src/themes/light.css +78 -0
  124. package/client/src/themes/plague.css +253 -0
  125. package/client/src/themes/renaissance.css +727 -0
  126. package/client/src/themes/rot.css +249 -0
  127. package/client/src/themes/steampunk.css +272 -0
  128. package/client/src/themes/surveillance.css +289 -0
  129. package/client/src/themes/wasteland.css +250 -0
  130. package/client/src/types/INodeProperties.ts +5 -0
  131. package/client/src/types/NodeTypes.ts +11 -1
  132. package/client/src/types/__tests__/cloudEvents.test.ts +99 -0
  133. package/client/src/types/cloudEvents.ts +78 -0
  134. package/client/src/vite-env.d.ts +7 -0
  135. package/client/tsconfig.json +1 -1
  136. package/client/vite.config.js +62 -2
  137. package/install.ps1 +1 -1
  138. package/install.sh +1 -1
  139. package/machina/commands/build.py +51 -7
  140. package/machina/pyproject.toml +4 -0
  141. package/machina/supervisor.py +12 -2
  142. package/machina/tree.py +71 -21
  143. package/package.json +4 -4
  144. package/scripts/install.js +16 -1
  145. package/server/config/ai_cli_providers.json +54 -0
  146. package/server/config/credential_providers.json +109 -2
  147. package/server/config/llm_defaults.json +24 -0
  148. package/server/config/model_registry.json +338 -499
  149. package/server/config/node_allowlist.json +16 -1
  150. package/server/config/pricing.json +8 -0
  151. package/server/constants.py +38 -15
  152. package/server/core/container.py +2 -2
  153. package/server/core/credentials_database.py +35 -2
  154. package/server/core/logging.py +4 -3
  155. package/server/main.py +99 -13
  156. package/server/models/node_metadata.py +1 -0
  157. package/server/nodejs/package.json +8 -6
  158. package/server/nodejs/src/index.ts +22 -5
  159. package/server/nodes/README.md +31 -4
  160. package/server/nodes/agent/_inline.py +2 -0
  161. package/server/nodes/agent/_specialized.py +6 -3
  162. package/server/nodes/agent/ai_agent.py +13 -3
  163. package/server/nodes/agent/chat_agent.py +6 -3
  164. package/server/nodes/agent/claude_code_agent.py +287 -75
  165. package/server/nodes/agent/codex_agent.py +239 -0
  166. package/server/nodes/agent/deep_agent.py +3 -3
  167. package/server/nodes/agent/rlm_agent.py +3 -3
  168. package/server/nodes/android/__init__.py +31 -1
  169. package/server/nodes/android/_base.py +9 -5
  170. package/server/{services/android_service.py → nodes/android/_dispatcher.py} +2 -2
  171. package/server/nodes/android/_handlers.py +154 -0
  172. package/server/nodes/android/_option_loaders.py +44 -0
  173. package/server/nodes/android/_refresh.py +127 -0
  174. package/server/{services/android → nodes/android/_relay}/client.py +4 -4
  175. package/server/{routers/android.py → nodes/android/_router.py} +27 -8
  176. package/server/nodes/browser/browser.py +2 -2
  177. package/server/nodes/code/_base.py +6 -2
  178. package/server/nodes/code/_claude_code.py +134 -0
  179. package/server/nodes/document/embedding_generator.py +3 -3
  180. package/server/nodes/document/http_scraper.py +3 -3
  181. package/server/nodes/document/vector_store.py +5 -5
  182. package/server/nodes/email/__init__.py +11 -1
  183. package/server/nodes/email/_filters.py +21 -0
  184. package/server/{services/himalaya_service.py → nodes/email/_himalaya.py} +6 -10
  185. package/server/{services/email_service.py → nodes/email/_service.py} +9 -13
  186. package/server/nodes/email/email_read.py +1 -1
  187. package/server/nodes/email/email_receive.py +54 -5
  188. package/server/nodes/email/email_send.py +1 -1
  189. package/server/nodes/filesystem/shell.py +24 -1
  190. package/server/nodes/google/__init__.py +55 -1
  191. package/server/{services/handlers/google_auth.py → nodes/google/_auth_helper.py} +8 -5
  192. package/server/nodes/google/_base.py +2 -2
  193. package/server/nodes/google/_credentials.py +5 -5
  194. package/server/nodes/google/_filters.py +25 -0
  195. package/server/nodes/google/_handlers.py +57 -0
  196. package/server/{services/google_oauth.py → nodes/google/_oauth.py} +195 -162
  197. package/server/nodes/google/_option_loaders.py +107 -0
  198. package/server/nodes/google/_refresh.py +66 -0
  199. package/server/nodes/google/_router.py +131 -0
  200. package/server/nodes/google/gmail_receive.py +41 -4
  201. package/server/nodes/groups.py +1 -0
  202. package/server/nodes/location/_credentials.py +45 -1
  203. package/server/{services/maps.py → nodes/location/_service.py} +18 -3
  204. package/server/nodes/location/gmaps_create.py +4 -4
  205. package/server/nodes/location/gmaps_locations.py +4 -4
  206. package/server/nodes/location/gmaps_nearby_places.py +4 -4
  207. package/server/nodes/model/_base.py +8 -3
  208. package/server/nodes/model/_credentials.py +96 -8
  209. package/server/nodes/model/_local_validator.py +345 -0
  210. package/server/nodes/model/lmstudio_chat_model.py +23 -0
  211. package/server/nodes/model/ollama_chat_model.py +25 -0
  212. package/server/nodes/proxy/_usage.py +2 -2
  213. package/server/nodes/proxy/proxy_config.py +14 -14
  214. package/server/nodes/proxy/proxy_request.py +4 -4
  215. package/server/nodes/scraper/_credentials.py +29 -1
  216. package/server/nodes/scraper/apify_actor.py +9 -9
  217. package/server/nodes/scraper/crawlee_scraper.py +5 -5
  218. package/server/nodes/search/brave_search.py +4 -0
  219. package/server/nodes/search/perplexity_search.py +9 -0
  220. package/server/nodes/search/serper_search.py +3 -0
  221. package/server/nodes/skill/simple_memory.py +12 -0
  222. package/server/nodes/social/_base.py +2 -2
  223. package/server/nodes/stripe/__init__.py +46 -0
  224. package/server/nodes/stripe/_credentials.py +33 -0
  225. package/server/nodes/stripe/_handlers.py +270 -0
  226. package/server/nodes/stripe/_install.py +127 -0
  227. package/server/nodes/stripe/_source.py +174 -0
  228. package/server/nodes/stripe/stripe_action.py +81 -0
  229. package/server/nodes/stripe/stripe_receive.py +92 -0
  230. package/server/nodes/telegram/_credentials.py +52 -1
  231. package/server/nodes/telegram/_handlers.py +19 -18
  232. package/server/nodes/telegram/_service.py +134 -32
  233. package/server/nodes/telegram/telegram_send.py +5 -6
  234. package/server/nodes/text/file_handler.py +2 -2
  235. package/server/nodes/text/text_generator.py +2 -2
  236. package/server/nodes/tool/agent_builder.py +630 -0
  237. package/server/nodes/tool/task_manager.py +144 -2
  238. package/server/nodes/twitter/__init__.py +38 -1
  239. package/server/nodes/twitter/_base.py +7 -7
  240. package/server/nodes/twitter/_credentials.py +1 -1
  241. package/server/nodes/twitter/_filters.py +37 -0
  242. package/server/nodes/twitter/_handlers.py +77 -0
  243. package/server/nodes/twitter/_oauth.py +124 -0
  244. package/server/nodes/twitter/_refresh.py +78 -0
  245. package/server/nodes/twitter/_router.py +29 -0
  246. package/server/nodes/twitter/twitter_receive.py +4 -0
  247. package/server/nodes/visuals.json +64 -19
  248. package/server/nodes/whatsapp/__init__.py +45 -5
  249. package/server/nodes/whatsapp/_base.py +3 -3
  250. package/server/nodes/whatsapp/_filters.py +137 -0
  251. package/server/nodes/whatsapp/_handlers.py +167 -0
  252. package/server/nodes/whatsapp/_option_loaders.py +68 -0
  253. package/server/nodes/whatsapp/_refresh.py +62 -0
  254. package/server/nodes/whatsapp/_runtime.py +1 -1
  255. package/server/pyproject.toml +29 -7
  256. package/server/routers/schemas.py +2 -2
  257. package/server/routers/webhook.py +26 -9
  258. package/server/routers/websocket.py +149 -810
  259. package/server/services/ai.py +89 -8
  260. package/server/services/auth.py +220 -43
  261. package/server/services/claude_oauth.py +126 -100
  262. package/server/services/cli_agent/__init__.py +78 -0
  263. package/server/services/cli_agent/_handlers.py +237 -0
  264. package/server/services/cli_agent/config.py +112 -0
  265. package/server/services/cli_agent/factory.py +48 -0
  266. package/server/services/cli_agent/lockfile.py +141 -0
  267. package/server/services/cli_agent/mcp_server.py +482 -0
  268. package/server/services/cli_agent/protocol.py +173 -0
  269. package/server/services/cli_agent/providers/__init__.py +9 -0
  270. package/server/services/cli_agent/providers/anthropic_claude.py +419 -0
  271. package/server/services/cli_agent/providers/google_gemini.py +80 -0
  272. package/server/services/cli_agent/providers/openai_codex.py +310 -0
  273. package/server/services/cli_agent/service.py +607 -0
  274. package/server/services/cli_agent/session.py +618 -0
  275. package/server/services/cli_agent/types.py +227 -0
  276. package/server/services/cli_agent/workflow_tools.py +233 -0
  277. package/server/services/credential_registry.py +26 -1
  278. package/server/services/deployment/manager.py +26 -145
  279. package/server/services/deployment/poll_registry.py +59 -0
  280. package/server/services/event_waiter.py +76 -246
  281. package/server/services/events/__init__.py +54 -0
  282. package/server/services/events/cli.py +78 -0
  283. package/server/services/events/daemon.py +163 -0
  284. package/server/services/events/envelope.py +281 -0
  285. package/server/services/events/lifecycle.py +99 -0
  286. package/server/services/events/oauth_lifecycle.py +534 -0
  287. package/server/services/events/polling.py +60 -0
  288. package/server/services/events/push.py +36 -0
  289. package/server/services/events/source.py +63 -0
  290. package/server/services/events/triggers.py +118 -0
  291. package/server/services/events/verifiers/__init__.py +25 -0
  292. package/server/services/events/verifiers/base.py +28 -0
  293. package/server/services/events/verifiers/github.py +25 -0
  294. package/server/services/events/verifiers/hmac_basic.py +32 -0
  295. package/server/services/events/verifiers/standard_webhooks.py +47 -0
  296. package/server/services/events/verifiers/stripe.py +42 -0
  297. package/server/services/events/webhook.py +105 -0
  298. package/server/services/handlers/tools.py +28 -186
  299. package/server/services/llm/config.py +7 -0
  300. package/server/services/llm/factory.py +8 -2
  301. package/server/services/memory/__init__.py +52 -0
  302. package/server/services/memory/jsonl.py +80 -0
  303. package/server/services/memory/markdown.py +65 -0
  304. package/server/services/memory/state.py +112 -0
  305. package/server/services/memory/vector_store.py +40 -0
  306. package/server/services/model_registry.py +76 -0
  307. package/server/services/node_allowlist.py +71 -15
  308. package/server/services/node_executor.py +2 -2
  309. package/server/services/node_output_schemas.py +21 -10
  310. package/server/services/node_spec.py +1 -1
  311. package/server/services/oauth_utils.py +1 -1
  312. package/server/services/plugin/__init__.py +2 -0
  313. package/server/services/plugin/base.py +44 -2
  314. package/server/services/plugin/credential.py +288 -1
  315. package/server/services/plugin/deps.py +105 -0
  316. package/server/services/plugin/edge_walker.py +12 -4
  317. package/server/services/plugin/oauth.py +381 -0
  318. package/server/services/plugin/polling.py +247 -0
  319. package/server/services/plugin/registry.py +145 -0
  320. package/server/services/plugin/singleton.py +65 -0
  321. package/server/services/plugin/ws.py +81 -0
  322. package/server/services/process_service.py +31 -2
  323. package/server/services/status_broadcaster.py +155 -238
  324. package/server/services/temporal/workflow.py +7 -7
  325. package/server/services/workflow.py +21 -3
  326. package/server/services/ws_handler_registry.py +111 -28
  327. package/server/skills/GUIDE.md +16 -1
  328. package/server/skills/assistant/agent-builder-skill/SKILL.md +166 -0
  329. package/server/skills/payments_agent/stripe-skill/SKILL.md +306 -0
  330. package/server/tests/credentials/test_auth_service.py +16 -9
  331. package/server/tests/credentials/test_credential_broadcasts.py +219 -0
  332. package/server/tests/credentials/test_google_oauth.py +6 -6
  333. package/server/tests/credentials/test_oauth_utils.py +1 -1
  334. package/server/tests/credentials/test_twitter_oauth.py +2 -2
  335. package/server/tests/credentials/test_websocket_handlers.py +44 -20
  336. package/server/tests/llm/test_factory.py +1 -0
  337. package/server/tests/llm/test_wiring.py +5 -1
  338. package/server/tests/nodes/_compat.py +24 -24
  339. package/server/tests/nodes/test_agent_builder.py +439 -0
  340. package/server/tests/nodes/test_ai_tools.py +18 -14
  341. package/server/tests/nodes/test_code_fs_process.py +17 -8
  342. package/server/tests/nodes/test_email.py +10 -9
  343. package/server/tests/nodes/test_google_workspace.py +2 -2
  344. package/server/tests/nodes/test_specialized_agents.py +100 -53
  345. package/server/tests/nodes/test_stripe_plugin.py +293 -0
  346. package/server/tests/nodes/test_telegram_social.py +4 -4
  347. package/server/tests/nodes/test_twitter.py +1 -1
  348. package/server/tests/nodes/test_web_automation.py +2 -2
  349. package/server/tests/nodes/test_whatsapp.py +9 -9
  350. package/server/tests/services/cli_agent/__init__.py +0 -0
  351. package/server/tests/services/cli_agent/test_mcp_server.py +432 -0
  352. package/server/tests/services/cli_agent/test_providers.py +358 -0
  353. package/server/tests/services/cli_agent/test_service.py +298 -0
  354. package/server/tests/services/memory/__init__.py +0 -0
  355. package/server/tests/services/memory/test_jsonl.py +188 -0
  356. package/server/tests/services/test_events.py +333 -0
  357. package/server/tests/test_node_spec.py +56 -16
  358. package/server/tests/test_plugin_helpers.py +116 -0
  359. package/server/tests/test_plugin_self_containment.py +486 -0
  360. package/server/tests/test_status_broadcasts.py +425 -0
  361. package/workflows/{AI Assistant_workflow-1777421105154-0m4snkzjf.json → AI Assistant_workflow-1778504793388-ou1m1tz2x.json } +70 -266
  362. package/workflows/{AI Employee_workflow-1777720598005-u4cm858dv.json → AI Employee_example_workflow-1777720598005-u4cm858dv.json } +112 -112
  363. package/workflows/Claude Assistant_workflow-1778380124051-mdibn807c.json +709 -0
  364. package/client/dist/assets/ActionBar-vzPpSR77.js +0 -1
  365. package/client/dist/assets/ApiKeyInput-Ds7AKFe8.js +0 -1
  366. package/client/dist/assets/ApiKeyPanel-gfblELep.js +0 -1
  367. package/client/dist/assets/ApiUsageSection-BMNWTe2r.js +0 -1
  368. package/client/dist/assets/EmailPanel-B1Om64p5.js +0 -1
  369. package/client/dist/assets/OAuthPanel-CXyQYGBz.js +0 -1
  370. package/client/dist/assets/QrPairingPanel-BgNuI1we.js +0 -1
  371. package/client/dist/assets/RateLimitSection-YYK8sx1T.js +0 -1
  372. package/client/dist/assets/StatusCard-DuYA5hJR.js +0 -1
  373. package/client/dist/assets/index-D9tZfgvi.js +0 -363
  374. package/client/dist/assets/index-al7snTkG.css +0 -1
  375. package/client/src/components/credentials/providers.tsx +0 -177
  376. package/server/routers/google.py +0 -277
  377. package/server/routers/maps.py +0 -142
  378. package/server/routers/twitter.py +0 -365
  379. package/server/services/claude_code_service.py +0 -106
  380. package/server/services/memory.py +0 -159
  381. package/server/services/node_option_loaders/__init__.py +0 -77
  382. package/server/services/node_option_loaders/android_loaders.py +0 -55
  383. package/server/services/node_option_loaders/google_loaders.py +0 -97
  384. package/server/services/node_option_loaders/whatsapp_loaders.py +0 -69
  385. package/server/services/twitter_oauth.py +0 -411
  386. package/server/services/websocket_client.py +0 -29
  387. /package/server/{services/android → nodes/android/_relay}/__init__.py +0 -0
  388. /package/server/{services/android → nodes/android/_relay}/broadcaster.py +0 -0
  389. /package/server/{services/android → nodes/android/_relay}/manager.py +0 -0
  390. /package/server/{services/android → nodes/android/_relay}/protocol.py +0 -0
  391. /package/server/{services/browser_service.py → nodes/browser/_service.py} +0 -0
  392. /package/server/{services/whatsapp_service.py → nodes/whatsapp/_service.py} +0 -0
  393. /package/server/skills/{task_agent → assistant}/write-todos-skill/SKILL.md +0 -0
@@ -0,0 +1 @@
1
+ import{r as Yn,g as ao,R as N,a as b}from"./vendor-query-SzWcOU0G.js";var hn={exports:{}},ie={};var dr;function ls(){if(dr)return ie;dr=1;var e=Yn();function t(l){var a="https://react.dev/errors/"+l;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var u=2;u<arguments.length;u++)a+="&args[]="+encodeURIComponent(arguments[u])}return"Minified React error #"+l+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var r={d:{f:n,r:function(){throw Error(t(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},o=Symbol.for("react.portal");function s(l,a,u){var f=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:f==null?null:""+f,children:l,containerInfo:a,implementation:u}}var i=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function c(l,a){if(l==="font")return"";if(typeof a=="string")return a==="use-credentials"?a:""}return ie.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,ie.createPortal=function(l,a){var u=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!a||a.nodeType!==1&&a.nodeType!==9&&a.nodeType!==11)throw Error(t(299));return s(l,a,null,u)},ie.flushSync=function(l){var a=i.T,u=r.p;try{if(i.T=null,r.p=2,l)return l()}finally{i.T=a,r.p=u,r.d.f()}},ie.preconnect=function(l,a){typeof l=="string"&&(a?(a=a.crossOrigin,a=typeof a=="string"?a==="use-credentials"?a:"":void 0):a=null,r.d.C(l,a))},ie.prefetchDNS=function(l){typeof l=="string"&&r.d.D(l)},ie.preinit=function(l,a){if(typeof l=="string"&&a&&typeof a.as=="string"){var u=a.as,f=c(u,a.crossOrigin),h=typeof a.integrity=="string"?a.integrity:void 0,g=typeof a.fetchPriority=="string"?a.fetchPriority:void 0;u==="style"?r.d.S(l,typeof a.precedence=="string"?a.precedence:void 0,{crossOrigin:f,integrity:h,fetchPriority:g}):u==="script"&&r.d.X(l,{crossOrigin:f,integrity:h,fetchPriority:g,nonce:typeof a.nonce=="string"?a.nonce:void 0})}},ie.preinitModule=function(l,a){if(typeof l=="string")if(typeof a=="object"&&a!==null){if(a.as==null||a.as==="script"){var u=c(a.as,a.crossOrigin);r.d.M(l,{crossOrigin:u,integrity:typeof a.integrity=="string"?a.integrity:void 0,nonce:typeof a.nonce=="string"?a.nonce:void 0})}}else a==null&&r.d.M(l)},ie.preload=function(l,a){if(typeof l=="string"&&typeof a=="object"&&a!==null&&typeof a.as=="string"){var u=a.as,f=c(u,a.crossOrigin);r.d.L(l,u,{crossOrigin:f,integrity:typeof a.integrity=="string"?a.integrity:void 0,nonce:typeof a.nonce=="string"?a.nonce:void 0,type:typeof a.type=="string"?a.type:void 0,fetchPriority:typeof a.fetchPriority=="string"?a.fetchPriority:void 0,referrerPolicy:typeof a.referrerPolicy=="string"?a.referrerPolicy:void 0,imageSrcSet:typeof a.imageSrcSet=="string"?a.imageSrcSet:void 0,imageSizes:typeof a.imageSizes=="string"?a.imageSizes:void 0,media:typeof a.media=="string"?a.media:void 0})}},ie.preloadModule=function(l,a){if(typeof l=="string")if(a){var u=c(a.as,a.crossOrigin);r.d.m(l,{as:typeof a.as=="string"&&a.as!=="script"?a.as:void 0,crossOrigin:u,integrity:typeof a.integrity=="string"?a.integrity:void 0})}else r.d.m(l)},ie.requestFormReset=function(l){r.d.r(l)},ie.unstable_batchedUpdates=function(l,a){return l(a)},ie.useFormState=function(l,a,u){return i.H.useFormState(l,a,u)},ie.useFormStatus=function(){return i.H.useHostTransitionStatus()},ie.version="19.2.6",ie}var hr;function us(){if(hr)return hn.exports;hr=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),hn.exports=ls(),hn.exports}function ae(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n<e.length;n++)(r=ae(e[n]))!==""&&(t+=(t&&" ")+r);else for(let n in e)e[n]&&(t+=(t&&" ")+n);return t}var gn={exports:{}},pn={},mn={exports:{}},yn={};var gr;function fs(){if(gr)return yn;gr=1;var e=Yn();function t(f,h){return f===h&&(f!==0||1/f===1/h)||f!==f&&h!==h}var n=typeof Object.is=="function"?Object.is:t,r=e.useState,o=e.useEffect,s=e.useLayoutEffect,i=e.useDebugValue;function c(f,h){var g=h(),x=r({inst:{value:g,getSnapshot:h}}),p=x[0].inst,w=x[1];return s(function(){p.value=g,p.getSnapshot=h,l(p)&&w({inst:p})},[f,g,h]),o(function(){return l(p)&&w({inst:p}),f(function(){l(p)&&w({inst:p})})},[f]),i(g),g}function l(f){var h=f.getSnapshot;f=f.value;try{var g=h();return!n(f,g)}catch{return!0}}function a(f,h){return h()}var u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?a:c;return yn.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:u,yn}var pr;function ds(){return pr||(pr=1,mn.exports=fs()),mn.exports}var mr;function hs(){if(mr)return pn;mr=1;var e=Yn(),t=ds();function n(a,u){return a===u&&(a!==0||1/a===1/u)||a!==a&&u!==u}var r=typeof Object.is=="function"?Object.is:n,o=t.useSyncExternalStore,s=e.useRef,i=e.useEffect,c=e.useMemo,l=e.useDebugValue;return pn.useSyncExternalStoreWithSelector=function(a,u,f,h,g){var x=s(null);if(x.current===null){var p={hasValue:!1,value:null};x.current=p}else p=x.current;x=c(function(){function m(M){if(!E){if(E=!0,C=M,M=h(M),g!==void 0&&p.hasValue){var D=p.value;if(g(D,M))return y=D}return y=M}if(D=y,r(C,M))return D;var z=h(M);return g!==void 0&&g(D,z)?(C=M,D):(C=M,y=z)}var E=!1,C,y,A=f===void 0?null:f;return[function(){return m(u())},A===null?void 0:function(){return m(A())}]},[u,f,h,g]);var w=o(a,x[0],x[1]);return i(function(){p.hasValue=!0,p.value=w},[w]),l(w),w},pn}var yr;function gs(){return yr||(yr=1,gn.exports=hs()),gn.exports}var ps=gs();const ms=ao(ps),ys={},xr=e=>{let t;const n=new Set,r=(u,f)=>{const h=typeof u=="function"?u(t):u;if(!Object.is(h,t)){const g=t;t=f??(typeof h!="object"||h===null)?h:Object.assign({},t,h),n.forEach(x=>x(t,g))}},o=()=>t,l={setState:r,getState:o,getInitialState:()=>a,subscribe:u=>(n.add(u),()=>n.delete(u)),destroy:()=>{(ys?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},a=t=e(r,o,l);return l},xs=e=>e?xr(e):xr,{useDebugValue:ws}=N,{useSyncExternalStoreWithSelector:vs}=ms,_s=e=>e;function co(e,t=_s,n){const r=vs(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return ws(r),r}const wr=(e,t)=>{const n=xs(e),r=(o,s=t)=>co(n,o,s);return Object.assign(r,n),r},Es=(e,t)=>e?wr(e,t):wr;function re(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[r,o]of e)if(!Object.is(o,t.get(r)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var Ss={value:()=>{}};function nn(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new Ft(n)}function Ft(e){this._=e}function bs(e,t){return e.trim().split(/^|\s+/).map(function(n){var r="",o=n.indexOf(".");if(o>=0&&(r=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}Ft.prototype=nn.prototype={constructor:Ft,on:function(e,t){var n=this._,r=bs(e+"",n),o,s=-1,i=r.length;if(arguments.length<2){for(;++s<i;)if((o=(e=r[s]).type)&&(o=Ns(n[o],e.name)))return o;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++s<i;)if(o=(e=r[s]).type)n[o]=vr(n[o],e.name,t);else if(t==null)for(o in n)n[o]=vr(n[o],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new Ft(e)},call:function(e,t){if((o=arguments.length-2)>0)for(var n=new Array(o),r=0,o,s;r<o;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(s=this._[e],r=0,o=s.length;r<o;++r)s[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var r=this._[e],o=0,s=r.length;o<s;++o)r[o].value.apply(t,n)}};function Ns(e,t){for(var n=0,r=e.length,o;n<r;++n)if((o=e[n]).name===t)return o.value}function vr(e,t,n){for(var r=0,o=e.length;r<o;++r)if(e[r].name===t){e[r]=Ss,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Mn="http://www.w3.org/1999/xhtml";const _r={svg:"http://www.w3.org/2000/svg",xhtml:Mn,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function rn(e){var t=e+="",n=t.indexOf(":");return n>=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),_r.hasOwnProperty(t)?{space:_r[t],local:e}:e}function Cs(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Mn&&t.documentElement.namespaceURI===Mn?t.createElement(e):t.createElementNS(n,e)}}function Ms(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function lo(e){var t=rn(e);return(t.local?Ms:Cs)(t)}function As(){}function Xn(e){return e==null?As:function(){return this.querySelector(e)}}function Ts(e){typeof e!="function"&&(e=Xn(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var s=t[o],i=s.length,c=r[o]=new Array(i),l,a,u=0;u<i;++u)(l=s[u])&&(a=e.call(l,l.__data__,u,s))&&("__data__"in l&&(a.__data__=l.__data__),c[u]=a);return new le(r,this._parents)}function $s(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Rs(){return[]}function uo(e){return e==null?Rs:function(){return this.querySelectorAll(e)}}function ks(e){return function(){return $s(e.apply(this,arguments))}}function Is(e){typeof e=="function"?e=ks(e):e=uo(e);for(var t=this._groups,n=t.length,r=[],o=[],s=0;s<n;++s)for(var i=t[s],c=i.length,l,a=0;a<c;++a)(l=i[a])&&(r.push(e.call(l,l.__data__,a,i)),o.push(l));return new le(r,o)}function fo(e){return function(){return this.matches(e)}}function ho(e){return function(t){return t.matches(e)}}var Ds=Array.prototype.find;function zs(e){return function(){return Ds.call(this.children,e)}}function Hs(){return this.firstElementChild}function Ps(e){return this.select(e==null?Hs:zs(typeof e=="function"?e:ho(e)))}var Os=Array.prototype.filter;function Vs(){return Array.from(this.children)}function Ls(e){return function(){return Os.call(this.children,e)}}function Bs(e){return this.selectAll(e==null?Vs:Ls(typeof e=="function"?e:ho(e)))}function Fs(e){typeof e!="function"&&(e=fo(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var s=t[o],i=s.length,c=r[o]=[],l,a=0;a<i;++a)(l=s[a])&&e.call(l,l.__data__,a,s)&&c.push(l);return new le(r,this._parents)}function go(e){return new Array(e.length)}function Ys(){return new le(this._enter||this._groups.map(go),this._parents)}function Zt(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}Zt.prototype={constructor:Zt,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function Xs(e){return function(){return e}}function Us(e,t,n,r,o,s){for(var i=0,c,l=t.length,a=s.length;i<a;++i)(c=t[i])?(c.__data__=s[i],r[i]=c):n[i]=new Zt(e,s[i]);for(;i<l;++i)(c=t[i])&&(o[i]=c)}function Zs(e,t,n,r,o,s,i){var c,l,a=new Map,u=t.length,f=s.length,h=new Array(u),g;for(c=0;c<u;++c)(l=t[c])&&(h[c]=g=i.call(l,l.__data__,c,t)+"",a.has(g)?o[c]=l:a.set(g,l));for(c=0;c<f;++c)g=i.call(e,s[c],c,s)+"",(l=a.get(g))?(r[c]=l,l.__data__=s[c],a.delete(g)):n[c]=new Zt(e,s[c]);for(c=0;c<u;++c)(l=t[c])&&a.get(h[c])===l&&(o[c]=l)}function qs(e){return e.__data__}function Ws(e,t){if(!arguments.length)return Array.from(this,qs);var n=t?Zs:Us,r=this._parents,o=this._groups;typeof e!="function"&&(e=Xs(e));for(var s=o.length,i=new Array(s),c=new Array(s),l=new Array(s),a=0;a<s;++a){var u=r[a],f=o[a],h=f.length,g=Gs(e.call(u,u&&u.__data__,a,r)),x=g.length,p=c[a]=new Array(x),w=i[a]=new Array(x),m=l[a]=new Array(h);n(u,f,p,w,m,g,t);for(var E=0,C=0,y,A;E<x;++E)if(y=p[E]){for(E>=C&&(C=E+1);!(A=w[C])&&++C<x;);y._next=A||null}}return i=new le(i,r),i._enter=c,i._exit=l,i}function Gs(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Ks(){return new le(this._exit||this._groups.map(go),this._parents)}function Qs(e,t,n){var r=this.enter(),o=this,s=this.exit();return typeof e=="function"?(r=e(r),r&&(r=r.selection())):r=r.append(e+""),t!=null&&(o=t(o),o&&(o=o.selection())),n==null?s.remove():n(s),r&&o?r.merge(o).order():o}function Js(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,o=n.length,s=r.length,i=Math.min(o,s),c=new Array(o),l=0;l<i;++l)for(var a=n[l],u=r[l],f=a.length,h=c[l]=new Array(f),g,x=0;x<f;++x)(g=a[x]||u[x])&&(h[x]=g);for(;l<o;++l)c[l]=n[l];return new le(c,this._parents)}function js(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],o=r.length-1,s=r[o],i;--o>=0;)(i=r[o])&&(s&&i.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(i,s),s=i);return this}function ea(e){e||(e=ta);function t(f,h){return f&&h?e(f.__data__,h.__data__):!f-!h}for(var n=this._groups,r=n.length,o=new Array(r),s=0;s<r;++s){for(var i=n[s],c=i.length,l=o[s]=new Array(c),a,u=0;u<c;++u)(a=i[u])&&(l[u]=a);l.sort(t)}return new le(o,this._parents).order()}function ta(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function na(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function ra(){return Array.from(this)}function oa(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],o=0,s=r.length;o<s;++o){var i=r[o];if(i)return i}return null}function ia(){let e=0;for(const t of this)++e;return e}function sa(){return!this.node()}function aa(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var o=t[n],s=0,i=o.length,c;s<i;++s)(c=o[s])&&e.call(c,c.__data__,s,o);return this}function ca(e){return function(){this.removeAttribute(e)}}function la(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ua(e,t){return function(){this.setAttribute(e,t)}}function fa(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function da(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function ha(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function ga(e,t){var n=rn(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?la:ca:typeof t=="function"?n.local?ha:da:n.local?fa:ua)(n,t))}function po(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function pa(e){return function(){this.style.removeProperty(e)}}function ma(e,t,n){return function(){this.style.setProperty(e,t,n)}}function ya(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function xa(e,t,n){return arguments.length>1?this.each((t==null?pa:typeof t=="function"?ya:ma)(e,t,n??"")):lt(this.node(),e)}function lt(e,t){return e.style.getPropertyValue(t)||po(e).getComputedStyle(e,null).getPropertyValue(t)}function wa(e){return function(){delete this[e]}}function va(e,t){return function(){this[e]=t}}function _a(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Ea(e,t){return arguments.length>1?this.each((t==null?wa:typeof t=="function"?_a:va)(e,t)):this.node()[e]}function mo(e){return e.trim().split(/^|\s+/)}function Un(e){return e.classList||new yo(e)}function yo(e){this._node=e,this._names=mo(e.getAttribute("class")||"")}yo.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function xo(e,t){for(var n=Un(e),r=-1,o=t.length;++r<o;)n.add(t[r])}function wo(e,t){for(var n=Un(e),r=-1,o=t.length;++r<o;)n.remove(t[r])}function Sa(e){return function(){xo(this,e)}}function ba(e){return function(){wo(this,e)}}function Na(e,t){return function(){(t.apply(this,arguments)?xo:wo)(this,e)}}function Ca(e,t){var n=mo(e+"");if(arguments.length<2){for(var r=Un(this.node()),o=-1,s=n.length;++o<s;)if(!r.contains(n[o]))return!1;return!0}return this.each((typeof t=="function"?Na:t?Sa:ba)(n,t))}function Ma(){this.textContent=""}function Aa(e){return function(){this.textContent=e}}function Ta(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function $a(e){return arguments.length?this.each(e==null?Ma:(typeof e=="function"?Ta:Aa)(e)):this.node().textContent}function Ra(){this.innerHTML=""}function ka(e){return function(){this.innerHTML=e}}function Ia(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function Da(e){return arguments.length?this.each(e==null?Ra:(typeof e=="function"?Ia:ka)(e)):this.node().innerHTML}function za(){this.nextSibling&&this.parentNode.appendChild(this)}function Ha(){return this.each(za)}function Pa(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Oa(){return this.each(Pa)}function Va(e){var t=typeof e=="function"?e:lo(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function La(){return null}function Ba(e,t){var n=typeof e=="function"?e:lo(e),r=t==null?La:typeof t=="function"?t:Xn(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function Fa(){var e=this.parentNode;e&&e.removeChild(this)}function Ya(){return this.each(Fa)}function Xa(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Ua(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Za(e){return this.select(e?Ua:Xa)}function qa(e){return arguments.length?this.property("__data__",e):this.node().__data__}function Wa(e){return function(t){e.call(this,t,this.__data__)}}function Ga(e){return e.trim().split(/^|\s+/).map(function(t){var n="",r=t.indexOf(".");return r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function Ka(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,o=t.length,s;n<o;++n)s=t[n],(!e.type||s.type===e.type)&&s.name===e.name?this.removeEventListener(s.type,s.listener,s.options):t[++r]=s;++r?t.length=r:delete this.__on}}}function Qa(e,t,n){return function(){var r=this.__on,o,s=Wa(t);if(r){for(var i=0,c=r.length;i<c;++i)if((o=r[i]).type===e.type&&o.name===e.name){this.removeEventListener(o.type,o.listener,o.options),this.addEventListener(o.type,o.listener=s,o.options=n),o.value=t;return}}this.addEventListener(e.type,s,n),o={type:e.type,name:e.name,value:t,listener:s,options:n},r?r.push(o):this.__on=[o]}}function Ja(e,t,n){var r=Ga(e+""),o,s=r.length,i;if(arguments.length<2){var c=this.node().__on;if(c){for(var l=0,a=c.length,u;l<a;++l)for(o=0,u=c[l];o<s;++o)if((i=r[o]).type===u.type&&i.name===u.name)return u.value}return}for(c=t?Qa:Ka,o=0;o<s;++o)this.each(c(r[o],t,n));return this}function vo(e,t,n){var r=po(e),o=r.CustomEvent;typeof o=="function"?o=new o(t,n):(o=r.document.createEvent("Event"),n?(o.initEvent(t,n.bubbles,n.cancelable),o.detail=n.detail):o.initEvent(t,!1,!1)),e.dispatchEvent(o)}function ja(e,t){return function(){return vo(this,e,t)}}function ec(e,t){return function(){return vo(this,e,t.apply(this,arguments))}}function tc(e,t){return this.each((typeof t=="function"?ec:ja)(e,t))}function*nc(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],o=0,s=r.length,i;o<s;++o)(i=r[o])&&(yield i)}var _o=[null];function le(e,t){this._groups=e,this._parents=t}function $t(){return new le([[document.documentElement]],_o)}function rc(){return this}le.prototype=$t.prototype={constructor:le,select:Ts,selectAll:Is,selectChild:Ps,selectChildren:Bs,filter:Fs,data:Ws,enter:Ys,exit:Ks,join:Qs,merge:Js,selection:rc,order:js,sort:ea,call:na,nodes:ra,node:oa,size:ia,empty:sa,each:aa,attr:ga,style:xa,property:Ea,classed:Ca,text:$a,html:Da,raise:Ha,lower:Oa,append:Va,insert:Ba,remove:Ya,clone:Za,datum:qa,on:Ja,dispatch:tc,[Symbol.iterator]:nc};function pe(e){return typeof e=="string"?new le([[document.querySelector(e)]],[document.documentElement]):new le([[e]],_o)}function oc(e){let t;for(;t=e.sourceEvent;)e=t;return e}function _e(e,t){if(e=oc(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var o=t.getBoundingClientRect();return[e.clientX-o.left-t.clientLeft,e.clientY-o.top-t.clientTop]}}return[e.pageX,e.pageY]}const ic={passive:!1},St={capture:!0,passive:!1};function xn(e){e.stopImmediatePropagation()}function it(e){e.preventDefault(),e.stopImmediatePropagation()}function Eo(e){var t=e.document.documentElement,n=pe(e).on("dragstart.drag",it,St);"onselectstart"in t?n.on("selectstart.drag",it,St):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function So(e,t){var n=e.document.documentElement,r=pe(e).on("dragstart.drag",null);t&&(r.on("click.drag",it,St),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const It=e=>()=>e;function An(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:s,x:i,y:c,dx:l,dy:a,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:i,enumerable:!0,configurable:!0},y:{value:c,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:a,enumerable:!0,configurable:!0},_:{value:u}})}An.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function sc(e){return!e.ctrlKey&&!e.button}function ac(){return this.parentNode}function cc(e,t){return t??{x:e.x,y:e.y}}function lc(){return navigator.maxTouchPoints||"ontouchstart"in this}function uc(){var e=sc,t=ac,n=cc,r=lc,o={},s=nn("start","drag","end"),i=0,c,l,a,u,f=0;function h(y){y.on("mousedown.drag",g).filter(r).on("touchstart.drag",w).on("touchmove.drag",m,ic).on("touchend.drag touchcancel.drag",E).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(y,A){if(!(u||!e.call(this,y,A))){var M=C(this,t.call(this,y,A),y,A,"mouse");M&&(pe(y.view).on("mousemove.drag",x,St).on("mouseup.drag",p,St),Eo(y.view),xn(y),a=!1,c=y.clientX,l=y.clientY,M("start",y))}}function x(y){if(it(y),!a){var A=y.clientX-c,M=y.clientY-l;a=A*A+M*M>f}o.mouse("drag",y)}function p(y){pe(y.view).on("mousemove.drag mouseup.drag",null),So(y.view,a),it(y),o.mouse("end",y)}function w(y,A){if(e.call(this,y,A)){var M=y.changedTouches,D=t.call(this,y,A),z=M.length,R,O;for(R=0;R<z;++R)(O=C(this,D,y,A,M[R].identifier,M[R]))&&(xn(y),O("start",y,M[R]))}}function m(y){var A=y.changedTouches,M=A.length,D,z;for(D=0;D<M;++D)(z=o[A[D].identifier])&&(it(y),z("drag",y,A[D]))}function E(y){var A=y.changedTouches,M=A.length,D,z;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),D=0;D<M;++D)(z=o[A[D].identifier])&&(xn(y),z("end",y,A[D]))}function C(y,A,M,D,z,R){var O=s.copy(),V=_e(R||M,A),L,P,d;if((d=n.call(y,new An("beforestart",{sourceEvent:M,target:h,identifier:z,active:i,x:V[0],y:V[1],dx:0,dy:0,dispatch:O}),D))!=null)return L=d.x-V[0]||0,P=d.y-V[1]||0,function S(v,T,I){var _=V,$;switch(v){case"start":o[z]=S,$=i++;break;case"end":delete o[z],--i;case"drag":V=_e(I||T,A),$=i;break}O.call(v,y,new An(v,{sourceEvent:T,subject:d,target:h,identifier:z,active:$,x:V[0]+L,y:V[1]+P,dx:V[0]-_[0],dy:V[1]-_[1],dispatch:O}),D)}}return h.filter=function(y){return arguments.length?(e=typeof y=="function"?y:It(!!y),h):e},h.container=function(y){return arguments.length?(t=typeof y=="function"?y:It(y),h):t},h.subject=function(y){return arguments.length?(n=typeof y=="function"?y:It(y),h):n},h.touchable=function(y){return arguments.length?(r=typeof y=="function"?y:It(!!y),h):r},h.on=function(){var y=s.on.apply(s,arguments);return y===s?h:y},h.clickDistance=function(y){return arguments.length?(f=(y=+y)*y,h):Math.sqrt(f)},h}function Zn(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function bo(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Rt(){}var bt=.7,qt=1/bt,st="\\s*([+-]?\\d+)\\s*",Nt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ee="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",fc=/^#([0-9a-f]{3,8})$/,dc=new RegExp(`^rgb\\(${st},${st},${st}\\)$`),hc=new RegExp(`^rgb\\(${Ee},${Ee},${Ee}\\)$`),gc=new RegExp(`^rgba\\(${st},${st},${st},${Nt}\\)$`),pc=new RegExp(`^rgba\\(${Ee},${Ee},${Ee},${Nt}\\)$`),mc=new RegExp(`^hsl\\(${Nt},${Ee},${Ee}\\)$`),yc=new RegExp(`^hsla\\(${Nt},${Ee},${Ee},${Nt}\\)$`),Er={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Zn(Rt,Ct,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Sr,formatHex:Sr,formatHex8:xc,formatHsl:wc,formatRgb:br,toString:br});function Sr(){return this.rgb().formatHex()}function xc(){return this.rgb().formatHex8()}function wc(){return No(this).formatHsl()}function br(){return this.rgb().formatRgb()}function Ct(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=fc.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?Nr(t):n===3?new se(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Dt(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Dt(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=dc.exec(e))?new se(t[1],t[2],t[3],1):(t=hc.exec(e))?new se(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=gc.exec(e))?Dt(t[1],t[2],t[3],t[4]):(t=pc.exec(e))?Dt(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=mc.exec(e))?Ar(t[1],t[2]/100,t[3]/100,1):(t=yc.exec(e))?Ar(t[1],t[2]/100,t[3]/100,t[4]):Er.hasOwnProperty(e)?Nr(Er[e]):e==="transparent"?new se(NaN,NaN,NaN,0):null}function Nr(e){return new se(e>>16&255,e>>8&255,e&255,1)}function Dt(e,t,n,r){return r<=0&&(e=t=n=NaN),new se(e,t,n,r)}function vc(e){return e instanceof Rt||(e=Ct(e)),e?(e=e.rgb(),new se(e.r,e.g,e.b,e.opacity)):new se}function Tn(e,t,n,r){return arguments.length===1?vc(e):new se(e,t,n,r??1)}function se(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Zn(se,Tn,bo(Rt,{brighter(e){return e=e==null?qt:Math.pow(qt,e),new se(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?bt:Math.pow(bt,e),new se(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new se(Ue(this.r),Ue(this.g),Ue(this.b),Wt(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Cr,formatHex:Cr,formatHex8:_c,formatRgb:Mr,toString:Mr}));function Cr(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function _c(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye((isNaN(this.opacity)?1:this.opacity)*255)}`}function Mr(){const e=Wt(this.opacity);return`${e===1?"rgb(":"rgba("}${Ue(this.r)}, ${Ue(this.g)}, ${Ue(this.b)}${e===1?")":`, ${e})`}`}function Wt(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ue(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ye(e){return e=Ue(e),(e<16?"0":"")+e.toString(16)}function Ar(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new me(e,t,n,r)}function No(e){if(e instanceof me)return new me(e.h,e.s,e.l,e.opacity);if(e instanceof Rt||(e=Ct(e)),!e)return new me;if(e instanceof me)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),s=Math.max(t,n,r),i=NaN,c=s-o,l=(s+o)/2;return c?(t===s?i=(n-r)/c+(n<r)*6:n===s?i=(r-t)/c+2:i=(t-n)/c+4,c/=l<.5?s+o:2-s-o,i*=60):c=l>0&&l<1?0:i,new me(i,c,l,e.opacity)}function Ec(e,t,n,r){return arguments.length===1?No(e):new me(e,t,n,r??1)}function me(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Zn(me,Ec,bo(Rt,{brighter(e){return e=e==null?qt:Math.pow(qt,e),new me(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?bt:Math.pow(bt,e),new me(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new se(wn(e>=240?e-240:e+120,o,r),wn(e,o,r),wn(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new me(Tr(this.h),zt(this.s),zt(this.l),Wt(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Wt(this.opacity);return`${e===1?"hsl(":"hsla("}${Tr(this.h)}, ${zt(this.s)*100}%, ${zt(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Tr(e){return e=(e||0)%360,e<0?e+360:e}function zt(e){return Math.max(0,Math.min(1,e||0))}function wn(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const Co=e=>()=>e;function Sc(e,t){return function(n){return e+n*t}}function bc(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function Nc(e){return(e=+e)==1?Mo:function(t,n){return n-t?bc(t,n,e):Co(isNaN(t)?n:t)}}function Mo(e,t){var n=t-e;return n?Sc(e,n):Co(isNaN(e)?t:e)}const $r=(function e(t){var n=Nc(t);function r(o,s){var i=n((o=Tn(o)).r,(s=Tn(s)).r),c=n(o.g,s.g),l=n(o.b,s.b),a=Mo(o.opacity,s.opacity);return function(u){return o.r=i(u),o.g=c(u),o.b=l(u),o.opacity=a(u),o+""}}return r.gamma=e,r})(1);function $e(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var $n=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,vn=new RegExp($n.source,"g");function Cc(e){return function(){return e}}function Mc(e){return function(t){return e(t)+""}}function Ac(e,t){var n=$n.lastIndex=vn.lastIndex=0,r,o,s,i=-1,c=[],l=[];for(e=e+"",t=t+"";(r=$n.exec(e))&&(o=vn.exec(t));)(s=o.index)>n&&(s=t.slice(n,s),c[i]?c[i]+=s:c[++i]=s),(r=r[0])===(o=o[0])?c[i]?c[i]+=o:c[++i]=o:(c[++i]=null,l.push({i,x:$e(r,o)})),n=vn.lastIndex;return n<t.length&&(s=t.slice(n),c[i]?c[i]+=s:c[++i]=s),c.length<2?l[0]?Mc(l[0].x):Cc(t):(t=l.length,function(a){for(var u=0,f;u<t;++u)c[(f=l[u]).i]=f.x(a);return c.join("")})}var Rr=180/Math.PI,Rn={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Ao(e,t,n,r,o,s){var i,c,l;return(i=Math.sqrt(e*e+t*t))&&(e/=i,t/=i),(l=e*n+t*r)&&(n-=e*l,r-=t*l),(c=Math.sqrt(n*n+r*r))&&(n/=c,r/=c,l/=c),e*r<t*n&&(e=-e,t=-t,l=-l,i=-i),{translateX:o,translateY:s,rotate:Math.atan2(t,e)*Rr,skewX:Math.atan(l)*Rr,scaleX:i,scaleY:c}}var Ht;function Tc(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?Rn:Ao(t.a,t.b,t.c,t.d,t.e,t.f)}function $c(e){return e==null||(Ht||(Ht=document.createElementNS("http://www.w3.org/2000/svg","g")),Ht.setAttribute("transform",e),!(e=Ht.transform.baseVal.consolidate()))?Rn:(e=e.matrix,Ao(e.a,e.b,e.c,e.d,e.e,e.f))}function To(e,t,n,r){function o(a){return a.length?a.pop()+" ":""}function s(a,u,f,h,g,x){if(a!==f||u!==h){var p=g.push("translate(",null,t,null,n);x.push({i:p-4,x:$e(a,f)},{i:p-2,x:$e(u,h)})}else(f||h)&&g.push("translate("+f+t+h+n)}function i(a,u,f,h){a!==u?(a-u>180?u+=360:u-a>180&&(a+=360),h.push({i:f.push(o(f)+"rotate(",null,r)-2,x:$e(a,u)})):u&&f.push(o(f)+"rotate("+u+r)}function c(a,u,f,h){a!==u?h.push({i:f.push(o(f)+"skewX(",null,r)-2,x:$e(a,u)}):u&&f.push(o(f)+"skewX("+u+r)}function l(a,u,f,h,g,x){if(a!==f||u!==h){var p=g.push(o(g)+"scale(",null,",",null,")");x.push({i:p-4,x:$e(a,f)},{i:p-2,x:$e(u,h)})}else(f!==1||h!==1)&&g.push(o(g)+"scale("+f+","+h+")")}return function(a,u){var f=[],h=[];return a=e(a),u=e(u),s(a.translateX,a.translateY,u.translateX,u.translateY,f,h),i(a.rotate,u.rotate,f,h),c(a.skewX,u.skewX,f,h),l(a.scaleX,a.scaleY,u.scaleX,u.scaleY,f,h),a=u=null,function(g){for(var x=-1,p=h.length,w;++x<p;)f[(w=h[x]).i]=w.x(g);return f.join("")}}}var Rc=To(Tc,"px, ","px)","deg)"),kc=To($c,", ",")",")"),Ic=1e-12;function kr(e){return((e=Math.exp(e))+1/e)/2}function Dc(e){return((e=Math.exp(e))-1/e)/2}function zc(e){return((e=Math.exp(2*e))-1)/(e+1)}const Hc=(function e(t,n,r){function o(s,i){var c=s[0],l=s[1],a=s[2],u=i[0],f=i[1],h=i[2],g=u-c,x=f-l,p=g*g+x*x,w,m;if(p<Ic)m=Math.log(h/a)/t,w=function(D){return[c+D*g,l+D*x,a*Math.exp(t*D*m)]};else{var E=Math.sqrt(p),C=(h*h-a*a+r*p)/(2*a*n*E),y=(h*h-a*a-r*p)/(2*h*n*E),A=Math.log(Math.sqrt(C*C+1)-C),M=Math.log(Math.sqrt(y*y+1)-y);m=(M-A)/t,w=function(D){var z=D*m,R=kr(A),O=a/(n*E)*(R*zc(t*z+A)-Dc(A));return[c+O*g,l+O*x,a*R/kr(t*z+A)]}}return w.duration=m*1e3*t/Math.SQRT2,w}return o.rho=function(s){var i=Math.max(.001,+s),c=i*i,l=c*c;return e(i,c,l)},o})(Math.SQRT2,2,4);var ut=0,vt=0,pt=0,$o=1e3,Gt,_t,Kt=0,Ze=0,on=0,Mt=typeof performance=="object"&&performance.now?performance:Date,Ro=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function qn(){return Ze||(Ro(Pc),Ze=Mt.now()+on)}function Pc(){Ze=0}function Qt(){this._call=this._time=this._next=null}Qt.prototype=ko.prototype={constructor:Qt,restart:function(e,t,n){if(typeof e!="function")throw new TypeError("callback is not a function");n=(n==null?qn():+n)+(t==null?0:+t),!this._next&&_t!==this&&(_t?_t._next=this:Gt=this,_t=this),this._call=e,this._time=n,kn()},stop:function(){this._call&&(this._call=null,this._time=1/0,kn())}};function ko(e,t,n){var r=new Qt;return r.restart(e,t,n),r}function Oc(){qn(),++ut;for(var e=Gt,t;e;)(t=Ze-e._time)>=0&&e._call.call(void 0,t),e=e._next;--ut}function Ir(){Ze=(Kt=Mt.now())+on,ut=vt=0;try{Oc()}finally{ut=0,Lc(),Ze=0}}function Vc(){var e=Mt.now(),t=e-Kt;t>$o&&(on-=t,Kt=e)}function Lc(){for(var e,t=Gt,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Gt=n);_t=e,kn(r)}function kn(e){if(!ut){vt&&(vt=clearTimeout(vt));var t=e-Ze;t>24?(e<1/0&&(vt=setTimeout(Ir,e-Mt.now()-on)),pt&&(pt=clearInterval(pt))):(pt||(Kt=Mt.now(),pt=setInterval(Vc,$o)),ut=1,Ro(Ir))}}function Dr(e,t,n){var r=new Qt;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var Bc=nn("start","end","cancel","interrupt"),Fc=[],Io=0,zr=1,In=2,Yt=3,Hr=4,Dn=5,Xt=6;function sn(e,t,n,r,o,s){var i=e.__transition;if(!i)e.__transition={};else if(n in i)return;Yc(e,n,{name:t,index:r,group:o,on:Bc,tween:Fc,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:Io})}function Wn(e,t){var n=ye(e,t);if(n.state>Io)throw new Error("too late; already scheduled");return n}function Se(e,t){var n=ye(e,t);if(n.state>Yt)throw new Error("too late; already running");return n}function ye(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Yc(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=ko(s,0,n.time);function s(a){n.state=zr,n.timer.restart(i,n.delay,n.time),n.delay<=a&&i(a-n.delay)}function i(a){var u,f,h,g;if(n.state!==zr)return l();for(u in r)if(g=r[u],g.name===n.name){if(g.state===Yt)return Dr(i);g.state===Hr?(g.state=Xt,g.timer.stop(),g.on.call("interrupt",e,e.__data__,g.index,g.group),delete r[u]):+u<t&&(g.state=Xt,g.timer.stop(),g.on.call("cancel",e,e.__data__,g.index,g.group),delete r[u])}if(Dr(function(){n.state===Yt&&(n.state=Hr,n.timer.restart(c,n.delay,n.time),c(a))}),n.state=In,n.on.call("start",e,e.__data__,n.index,n.group),n.state===In){for(n.state=Yt,o=new Array(h=n.tween.length),u=0,f=-1;u<h;++u)(g=n.tween[u].value.call(e,e.__data__,n.index,n.group))&&(o[++f]=g);o.length=f+1}}function c(a){for(var u=a<n.duration?n.ease.call(null,a/n.duration):(n.timer.restart(l),n.state=Dn,1),f=-1,h=o.length;++f<h;)o[f].call(e,u);n.state===Dn&&(n.on.call("end",e,e.__data__,n.index,n.group),l())}function l(){n.state=Xt,n.timer.stop(),delete r[t];for(var a in r)return;delete e.__transition}}function Ut(e,t){var n=e.__transition,r,o,s=!0,i;if(n){t=t==null?null:t+"";for(i in n){if((r=n[i]).name!==t){s=!1;continue}o=r.state>In&&r.state<Dn,r.state=Xt,r.timer.stop(),r.on.call(o?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[i]}s&&delete e.__transition}}function Xc(e){return this.each(function(){Ut(this,e)})}function Uc(e,t){var n,r;return function(){var o=Se(this,e),s=o.tween;if(s!==n){r=n=s;for(var i=0,c=r.length;i<c;++i)if(r[i].name===t){r=r.slice(),r.splice(i,1);break}}o.tween=r}}function Zc(e,t,n){var r,o;if(typeof n!="function")throw new Error;return function(){var s=Se(this,e),i=s.tween;if(i!==r){o=(r=i).slice();for(var c={name:t,value:n},l=0,a=o.length;l<a;++l)if(o[l].name===t){o[l]=c;break}l===a&&o.push(c)}s.tween=o}}function qc(e,t){var n=this._id;if(e+="",arguments.length<2){for(var r=ye(this.node(),n).tween,o=0,s=r.length,i;o<s;++o)if((i=r[o]).name===e)return i.value;return null}return this.each((t==null?Uc:Zc)(n,e,t))}function Gn(e,t,n){var r=e._id;return e.each(function(){var o=Se(this,r);(o.value||(o.value={}))[t]=n.apply(this,arguments)}),function(o){return ye(o,r).value[t]}}function Do(e,t){var n;return(typeof t=="number"?$e:t instanceof Ct?$r:(n=Ct(t))?(t=n,$r):Ac)(e,t)}function Wc(e){return function(){this.removeAttribute(e)}}function Gc(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Kc(e,t,n){var r,o=n+"",s;return function(){var i=this.getAttribute(e);return i===o?null:i===r?s:s=t(r=i,n)}}function Qc(e,t,n){var r,o=n+"",s;return function(){var i=this.getAttributeNS(e.space,e.local);return i===o?null:i===r?s:s=t(r=i,n)}}function Jc(e,t,n){var r,o,s;return function(){var i,c=n(this),l;return c==null?void this.removeAttribute(e):(i=this.getAttribute(e),l=c+"",i===l?null:i===r&&l===o?s:(o=l,s=t(r=i,c)))}}function jc(e,t,n){var r,o,s;return function(){var i,c=n(this),l;return c==null?void this.removeAttributeNS(e.space,e.local):(i=this.getAttributeNS(e.space,e.local),l=c+"",i===l?null:i===r&&l===o?s:(o=l,s=t(r=i,c)))}}function el(e,t){var n=rn(e),r=n==="transform"?kc:Do;return this.attrTween(e,typeof t=="function"?(n.local?jc:Jc)(n,r,Gn(this,"attr."+e,t)):t==null?(n.local?Gc:Wc)(n):(n.local?Qc:Kc)(n,r,t))}function tl(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function nl(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function rl(e,t){var n,r;function o(){var s=t.apply(this,arguments);return s!==r&&(n=(r=s)&&nl(e,s)),n}return o._value=t,o}function ol(e,t){var n,r;function o(){var s=t.apply(this,arguments);return s!==r&&(n=(r=s)&&tl(e,s)),n}return o._value=t,o}function il(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;var r=rn(e);return this.tween(n,(r.local?rl:ol)(r,t))}function sl(e,t){return function(){Wn(this,e).delay=+t.apply(this,arguments)}}function al(e,t){return t=+t,function(){Wn(this,e).delay=t}}function cl(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?sl:al)(t,e)):ye(this.node(),t).delay}function ll(e,t){return function(){Se(this,e).duration=+t.apply(this,arguments)}}function ul(e,t){return t=+t,function(){Se(this,e).duration=t}}function fl(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?ll:ul)(t,e)):ye(this.node(),t).duration}function dl(e,t){if(typeof t!="function")throw new Error;return function(){Se(this,e).ease=t}}function hl(e){var t=this._id;return arguments.length?this.each(dl(t,e)):ye(this.node(),t).ease}function gl(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!="function")throw new Error;Se(this,e).ease=n}}function pl(e){if(typeof e!="function")throw new Error;return this.each(gl(this._id,e))}function ml(e){typeof e!="function"&&(e=fo(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var s=t[o],i=s.length,c=r[o]=[],l,a=0;a<i;++a)(l=s[a])&&e.call(l,l.__data__,a,s)&&c.push(l);return new Me(r,this._parents,this._name,this._id)}function yl(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,n=e._groups,r=t.length,o=n.length,s=Math.min(r,o),i=new Array(r),c=0;c<s;++c)for(var l=t[c],a=n[c],u=l.length,f=i[c]=new Array(u),h,g=0;g<u;++g)(h=l[g]||a[g])&&(f[g]=h);for(;c<r;++c)i[c]=t[c];return new Me(i,this._parents,this._name,this._id)}function xl(e){return(e+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||t==="start"})}function wl(e,t,n){var r,o,s=xl(t)?Wn:Se;return function(){var i=s(this,e),c=i.on;c!==r&&(o=(r=c).copy()).on(t,n),i.on=o}}function vl(e,t){var n=this._id;return arguments.length<2?ye(this.node(),n).on.on(e):this.each(wl(n,e,t))}function _l(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function El(){return this.on("end.remove",_l(this._id))}function Sl(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Xn(e));for(var r=this._groups,o=r.length,s=new Array(o),i=0;i<o;++i)for(var c=r[i],l=c.length,a=s[i]=new Array(l),u,f,h=0;h<l;++h)(u=c[h])&&(f=e.call(u,u.__data__,h,c))&&("__data__"in u&&(f.__data__=u.__data__),a[h]=f,sn(a[h],t,n,h,a,ye(u,n)));return new Me(s,this._parents,t,n)}function bl(e){var t=this._name,n=this._id;typeof e!="function"&&(e=uo(e));for(var r=this._groups,o=r.length,s=[],i=[],c=0;c<o;++c)for(var l=r[c],a=l.length,u,f=0;f<a;++f)if(u=l[f]){for(var h=e.call(u,u.__data__,f,l),g,x=ye(u,n),p=0,w=h.length;p<w;++p)(g=h[p])&&sn(g,t,n,p,h,x);s.push(h),i.push(u)}return new Me(s,i,t,n)}var Nl=$t.prototype.constructor;function Cl(){return new Nl(this._groups,this._parents)}function Ml(e,t){var n,r,o;return function(){var s=lt(this,e),i=(this.style.removeProperty(e),lt(this,e));return s===i?null:s===n&&i===r?o:o=t(n=s,r=i)}}function zo(e){return function(){this.style.removeProperty(e)}}function Al(e,t,n){var r,o=n+"",s;return function(){var i=lt(this,e);return i===o?null:i===r?s:s=t(r=i,n)}}function Tl(e,t,n){var r,o,s;return function(){var i=lt(this,e),c=n(this),l=c+"";return c==null&&(l=c=(this.style.removeProperty(e),lt(this,e))),i===l?null:i===r&&l===o?s:(o=l,s=t(r=i,c))}}function $l(e,t){var n,r,o,s="style."+t,i="end."+s,c;return function(){var l=Se(this,e),a=l.on,u=l.value[s]==null?c||(c=zo(t)):void 0;(a!==n||o!==u)&&(r=(n=a).copy()).on(i,o=u),l.on=r}}function Rl(e,t,n){var r=(e+="")=="transform"?Rc:Do;return t==null?this.styleTween(e,Ml(e,r)).on("end.style."+e,zo(e)):typeof t=="function"?this.styleTween(e,Tl(e,r,Gn(this,"style."+e,t))).each($l(this._id,e)):this.styleTween(e,Al(e,r,t),n).on("end.style."+e,null)}function kl(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Il(e,t,n){var r,o;function s(){var i=t.apply(this,arguments);return i!==o&&(r=(o=i)&&kl(e,i,n)),r}return s._value=t,s}function Dl(e,t,n){var r="style."+(e+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;return this.tween(r,Il(e,t,n??""))}function zl(e){return function(){this.textContent=e}}function Hl(e){return function(){var t=e(this);this.textContent=t??""}}function Pl(e){return this.tween("text",typeof e=="function"?Hl(Gn(this,"text",e)):zl(e==null?"":e+""))}function Ol(e){return function(t){this.textContent=e.call(this,t)}}function Vl(e){var t,n;function r(){var o=e.apply(this,arguments);return o!==n&&(t=(n=o)&&Ol(o)),t}return r._value=e,r}function Ll(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,Vl(e))}function Bl(){for(var e=this._name,t=this._id,n=Ho(),r=this._groups,o=r.length,s=0;s<o;++s)for(var i=r[s],c=i.length,l,a=0;a<c;++a)if(l=i[a]){var u=ye(l,t);sn(l,e,n,a,i,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new Me(r,this._parents,e,n)}function Fl(){var e,t,n=this,r=n._id,o=n.size();return new Promise(function(s,i){var c={value:i},l={value:function(){--o===0&&s()}};n.each(function(){var a=Se(this,r),u=a.on;u!==e&&(t=(e=u).copy(),t._.cancel.push(c),t._.interrupt.push(c),t._.end.push(l)),a.on=t}),o===0&&s()})}var Yl=0;function Me(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Ho(){return++Yl}var Ne=$t.prototype;Me.prototype={constructor:Me,select:Sl,selectAll:bl,selectChild:Ne.selectChild,selectChildren:Ne.selectChildren,filter:ml,merge:yl,selection:Cl,transition:Bl,call:Ne.call,nodes:Ne.nodes,node:Ne.node,size:Ne.size,empty:Ne.empty,each:Ne.each,on:vl,attr:el,attrTween:il,style:Rl,styleTween:Dl,text:Pl,textTween:Ll,remove:El,tween:qc,delay:cl,duration:fl,ease:hl,easeVarying:pl,end:Fl,[Symbol.iterator]:Ne[Symbol.iterator]};function Xl(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var Ul={time:null,delay:0,duration:250,ease:Xl};function Zl(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return n}function ql(e){var t,n;e instanceof Me?(t=e._id,e=e._name):(t=Ho(),(n=Ul).time=qn(),e=e==null?null:e+"");for(var r=this._groups,o=r.length,s=0;s<o;++s)for(var i=r[s],c=i.length,l,a=0;a<c;++a)(l=i[a])&&sn(l,e,t,a,i,n||Zl(l,t));return new Me(r,this._parents,e,t)}$t.prototype.interrupt=Xc;$t.prototype.transition=ql;const Pt=e=>()=>e;function Wl(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function Ce(e,t,n){this.k=e,this.x=t,this.y=n}Ce.prototype={constructor:Ce,scale:function(e){return e===1?this:new Ce(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Ce(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Ie=new Ce(1,0,0);Ce.prototype;function _n(e){e.stopImmediatePropagation()}function mt(e){e.preventDefault(),e.stopImmediatePropagation()}function Gl(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Kl(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function Pr(){return this.__zoom||Ie}function Ql(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Jl(){return navigator.maxTouchPoints||"ontouchstart"in this}function jl(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],s=e.invertY(t[0][1])-n[0][1],i=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),i>s?(s+i)/2:Math.min(0,s)||Math.max(0,i))}function eu(){var e=Gl,t=Kl,n=jl,r=Ql,o=Jl,s=[0,1/0],i=[[-1/0,-1/0],[1/0,1/0]],c=250,l=Hc,a=nn("start","zoom","end"),u,f,h,g=500,x=150,p=0,w=10;function m(d){d.property("__zoom",Pr).on("wheel.zoom",z,{passive:!1}).on("mousedown.zoom",R).on("dblclick.zoom",O).filter(o).on("touchstart.zoom",V).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(d,S,v,T){var I=d.selection?d.selection():d;I.property("__zoom",Pr),d!==I?A(d,S,v,T):I.interrupt().each(function(){M(this,arguments).event(T).start().zoom(null,typeof S=="function"?S.apply(this,arguments):S).end()})},m.scaleBy=function(d,S,v,T){m.scaleTo(d,function(){var I=this.__zoom.k,_=typeof S=="function"?S.apply(this,arguments):S;return I*_},v,T)},m.scaleTo=function(d,S,v,T){m.transform(d,function(){var I=t.apply(this,arguments),_=this.__zoom,$=v==null?y(I):typeof v=="function"?v.apply(this,arguments):v,k=_.invert($),H=typeof S=="function"?S.apply(this,arguments):S;return n(C(E(_,H),$,k),I,i)},v,T)},m.translateBy=function(d,S,v,T){m.transform(d,function(){return n(this.__zoom.translate(typeof S=="function"?S.apply(this,arguments):S,typeof v=="function"?v.apply(this,arguments):v),t.apply(this,arguments),i)},null,T)},m.translateTo=function(d,S,v,T,I){m.transform(d,function(){var _=t.apply(this,arguments),$=this.__zoom,k=T==null?y(_):typeof T=="function"?T.apply(this,arguments):T;return n(Ie.translate(k[0],k[1]).scale($.k).translate(typeof S=="function"?-S.apply(this,arguments):-S,typeof v=="function"?-v.apply(this,arguments):-v),_,i)},T,I)};function E(d,S){return S=Math.max(s[0],Math.min(s[1],S)),S===d.k?d:new Ce(S,d.x,d.y)}function C(d,S,v){var T=S[0]-v[0]*d.k,I=S[1]-v[1]*d.k;return T===d.x&&I===d.y?d:new Ce(d.k,T,I)}function y(d){return[(+d[0][0]+ +d[1][0])/2,(+d[0][1]+ +d[1][1])/2]}function A(d,S,v,T){d.on("start.zoom",function(){M(this,arguments).event(T).start()}).on("interrupt.zoom end.zoom",function(){M(this,arguments).event(T).end()}).tween("zoom",function(){var I=this,_=arguments,$=M(I,_).event(T),k=t.apply(I,_),H=v==null?y(k):typeof v=="function"?v.apply(I,_):v,F=Math.max(k[1][0]-k[0][0],k[1][1]-k[0][1]),B=I.__zoom,U=typeof S=="function"?S.apply(I,_):S,q=l(B.invert(H).concat(F/B.k),U.invert(H).concat(F/U.k));return function(W){if(W===1)W=U;else{var G=q(W),j=F/G[2];W=new Ce(j,H[0]-G[0]*j,H[1]-G[1]*j)}$.zoom(null,W)}})}function M(d,S,v){return!v&&d.__zooming||new D(d,S)}function D(d,S){this.that=d,this.args=S,this.active=0,this.sourceEvent=null,this.extent=t.apply(d,S),this.taps=0}D.prototype={event:function(d){return d&&(this.sourceEvent=d),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(d,S){return this.mouse&&d!=="mouse"&&(this.mouse[1]=S.invert(this.mouse[0])),this.touch0&&d!=="touch"&&(this.touch0[1]=S.invert(this.touch0[0])),this.touch1&&d!=="touch"&&(this.touch1[1]=S.invert(this.touch1[0])),this.that.__zoom=S,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(d){var S=pe(this.that).datum();a.call(d,this.that,new Wl(d,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:a}),S)}};function z(d,...S){if(!e.apply(this,arguments))return;var v=M(this,S).event(d),T=this.__zoom,I=Math.max(s[0],Math.min(s[1],T.k*Math.pow(2,r.apply(this,arguments)))),_=_e(d);if(v.wheel)(v.mouse[0][0]!==_[0]||v.mouse[0][1]!==_[1])&&(v.mouse[1]=T.invert(v.mouse[0]=_)),clearTimeout(v.wheel);else{if(T.k===I)return;v.mouse=[_,T.invert(_)],Ut(this),v.start()}mt(d),v.wheel=setTimeout($,x),v.zoom("mouse",n(C(E(T,I),v.mouse[0],v.mouse[1]),v.extent,i));function $(){v.wheel=null,v.end()}}function R(d,...S){if(h||!e.apply(this,arguments))return;var v=d.currentTarget,T=M(this,S,!0).event(d),I=pe(d.view).on("mousemove.zoom",H,!0).on("mouseup.zoom",F,!0),_=_e(d,v),$=d.clientX,k=d.clientY;Eo(d.view),_n(d),T.mouse=[_,this.__zoom.invert(_)],Ut(this),T.start();function H(B){if(mt(B),!T.moved){var U=B.clientX-$,q=B.clientY-k;T.moved=U*U+q*q>p}T.event(B).zoom("mouse",n(C(T.that.__zoom,T.mouse[0]=_e(B,v),T.mouse[1]),T.extent,i))}function F(B){I.on("mousemove.zoom mouseup.zoom",null),So(B.view,T.moved),mt(B),T.event(B).end()}}function O(d,...S){if(e.apply(this,arguments)){var v=this.__zoom,T=_e(d.changedTouches?d.changedTouches[0]:d,this),I=v.invert(T),_=v.k*(d.shiftKey?.5:2),$=n(C(E(v,_),T,I),t.apply(this,S),i);mt(d),c>0?pe(this).transition().duration(c).call(A,$,T,d):pe(this).call(m.transform,$,T,d)}}function V(d,...S){if(e.apply(this,arguments)){var v=d.touches,T=v.length,I=M(this,S,d.changedTouches.length===T).event(d),_,$,k,H;for(_n(d),$=0;$<T;++$)k=v[$],H=_e(k,this),H=[H,this.__zoom.invert(H),k.identifier],I.touch0?!I.touch1&&I.touch0[2]!==H[2]&&(I.touch1=H,I.taps=0):(I.touch0=H,_=!0,I.taps=1+!!u);u&&(u=clearTimeout(u)),_&&(I.taps<2&&(f=H[0],u=setTimeout(function(){u=null},g)),Ut(this),I.start())}}function L(d,...S){if(this.__zooming){var v=M(this,S).event(d),T=d.changedTouches,I=T.length,_,$,k,H;for(mt(d),_=0;_<I;++_)$=T[_],k=_e($,this),v.touch0&&v.touch0[2]===$.identifier?v.touch0[0]=k:v.touch1&&v.touch1[2]===$.identifier&&(v.touch1[0]=k);if($=v.that.__zoom,v.touch1){var F=v.touch0[0],B=v.touch0[1],U=v.touch1[0],q=v.touch1[1],W=(W=U[0]-F[0])*W+(W=U[1]-F[1])*W,G=(G=q[0]-B[0])*G+(G=q[1]-B[1])*G;$=E($,Math.sqrt(W/G)),k=[(F[0]+U[0])/2,(F[1]+U[1])/2],H=[(B[0]+q[0])/2,(B[1]+q[1])/2]}else if(v.touch0)k=v.touch0[0],H=v.touch0[1];else return;v.zoom("touch",n(C($,k,H),v.extent,i))}}function P(d,...S){if(this.__zooming){var v=M(this,S).event(d),T=d.changedTouches,I=T.length,_,$;for(_n(d),h&&clearTimeout(h),h=setTimeout(function(){h=null},g),_=0;_<I;++_)$=T[_],v.touch0&&v.touch0[2]===$.identifier?delete v.touch0:v.touch1&&v.touch1[2]===$.identifier&&delete v.touch1;if(v.touch1&&!v.touch0&&(v.touch0=v.touch1,delete v.touch1),v.touch0)v.touch0[1]=this.__zoom.invert(v.touch0[0]);else if(v.end(),v.taps===2&&($=_e($,this),Math.hypot(f[0]-$[0],f[1]-$[1])<w)){var k=pe(this).on("dblclick.zoom");k&&k.apply(this,arguments)}}}return m.wheelDelta=function(d){return arguments.length?(r=typeof d=="function"?d:Pt(+d),m):r},m.filter=function(d){return arguments.length?(e=typeof d=="function"?d:Pt(!!d),m):e},m.touchable=function(d){return arguments.length?(o=typeof d=="function"?d:Pt(!!d),m):o},m.extent=function(d){return arguments.length?(t=typeof d=="function"?d:Pt([[+d[0][0],+d[0][1]],[+d[1][0],+d[1][1]]]),m):t},m.scaleExtent=function(d){return arguments.length?(s[0]=+d[0],s[1]=+d[1],m):[s[0],s[1]]},m.translateExtent=function(d){return arguments.length?(i[0][0]=+d[0][0],i[1][0]=+d[1][0],i[0][1]=+d[0][1],i[1][1]=+d[1][1],m):[[i[0][0],i[0][1]],[i[1][0],i[1][1]]]},m.constrain=function(d){return arguments.length?(n=d,m):n},m.duration=function(d){return arguments.length?(c=+d,m):c},m.interpolate=function(d){return arguments.length?(l=d,m):l},m.on=function(){var d=a.on.apply(a,arguments);return d===a?m:d},m.clickDistance=function(d){return arguments.length?(p=(d=+d)*d,m):Math.sqrt(p)},m.tapDistance=function(d){return arguments.length?(w=+d,m):w},m}var Po=us();const td=ao(Po),an=b.createContext(null),tu=an.Provider,Ae={error001:()=>"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,t)=>`Couldn't create edge for ${e?"target":"source"} handle id: "${e?t.targetHandle:t.sourceHandle}", edge id: ${t.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},Oo=Ae.error001();function J(e,t){const n=b.useContext(an);if(n===null)throw new Error(Oo);return co(n,e,t)}const ne=()=>{const e=b.useContext(an);if(e===null)throw new Error(Oo);return b.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},nu=e=>e.userSelectionActive?"none":"all";function Vo({position:e,children:t,className:n,style:r,...o}){const s=J(nu),i=`${e}`.split("-");return N.createElement("div",{className:ae(["react-flow__panel",n,...i]),style:{...r,pointerEvents:s},...o},t)}function ru({proOptions:e,position:t="bottom-right"}){return e?.hideAttribution?null:N.createElement(Vo,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},N.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const ou=({x:e,y:t,label:n,labelStyle:r={},labelShowBg:o=!0,labelBgStyle:s={},labelBgPadding:i=[2,4],labelBgBorderRadius:c=2,children:l,className:a,...u})=>{const f=b.useRef(null),[h,g]=b.useState({x:0,y:0,width:0,height:0}),x=ae(["react-flow__edge-textwrapper",a]);return b.useEffect(()=>{if(f.current){const p=f.current.getBBox();g({x:p.x,y:p.y,width:p.width,height:p.height})}},[n]),typeof n>"u"||!n?null:N.createElement("g",{transform:`translate(${e-h.width/2} ${t-h.height/2})`,className:x,visibility:h.width?"visible":"hidden",...u},o&&N.createElement("rect",{width:h.width+2*i[0],x:-i[0],y:-i[1],height:h.height+2*i[1],className:"react-flow__edge-textbg",style:s,rx:c,ry:c}),N.createElement("text",{className:"react-flow__edge-text",y:h.height/2,dy:"0.3em",ref:f,style:r},n),l)};var iu=b.memo(ou);const Kn=e=>({width:e.offsetWidth,height:e.offsetHeight}),ft=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Qn=(e={x:0,y:0},t)=>({x:ft(e.x,t[0][0],t[1][0]),y:ft(e.y,t[0][1],t[1][1])}),Or=(e,t,n)=>e<t?ft(Math.abs(e-t),1,50)/50:e>n?-ft(Math.abs(e-n),1,50)/50:0,Lo=(e,t)=>{const n=Or(e.x,35,t.width-35)*20,r=Or(e.y,35,t.height-35)*20;return[n,r]},Bo=e=>e.getRootNode?.()||window?.document,su=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Jn=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),au=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Vr=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),zn=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},cu=e=>de(e.width)&&de(e.height)&&de(e.x)&&de(e.y),de=e=>!isNaN(e)&&isFinite(e),ee=Symbol.for("internals"),Fo=["Enter"," ","Escape"],lu=(e,t)=>{},uu=e=>"nativeEvent"in e;function Hn(e){const n=(uu(e)?e.nativeEvent:e).composedPath?.()?.[0]||e.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const Yo=e=>"clientX"in e,De=(e,t)=>{const n=Yo(e),r=n?e.clientX:e.touches?.[0].clientX,o=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:o-(t?.top??0)}},Jt=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,kt=({id:e,path:t,labelX:n,labelY:r,label:o,labelStyle:s,labelShowBg:i,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:a,style:u,markerEnd:f,markerStart:h,interactionWidth:g=20})=>N.createElement(N.Fragment,null,N.createElement("path",{id:e,style:u,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:f,markerStart:h}),g&&N.createElement("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:g,className:"react-flow__edge-interaction"}),o&&de(n)&&de(r)?N.createElement(iu,{x:n,y:r,label:o,labelStyle:s,labelShowBg:i,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:a}):null);kt.displayName="BaseEdge";function yt(e,t,n){return n===void 0?n:r=>{const o=t().edges.find(s=>s.id===e);o&&n(r,{...o})}}function Xo({sourceX:e,sourceY:t,targetX:n,targetY:r}){const o=Math.abs(n-e)/2,s=n<e?n+o:n-o,i=Math.abs(r-t)/2,c=r<t?r+i:r-i;return[s,c,o,i]}function Uo({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:o,sourceControlY:s,targetControlX:i,targetControlY:c}){const l=e*.125+o*.375+i*.375+n*.125,a=t*.125+s*.375+c*.375+r*.125,u=Math.abs(l-e),f=Math.abs(a-t);return[l,a,u,f]}var qe;(function(e){e.Strict="strict",e.Loose="loose"})(qe||(qe={}));var Xe;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(Xe||(Xe={}));var At;(function(e){e.Partial="partial",e.Full="full"})(At||(At={}));var ke;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(ke||(ke={}));var jt;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(jt||(jt={}));var Y;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})(Y||(Y={}));function Lr({pos:e,x1:t,y1:n,x2:r,y2:o}){return e===Y.Left||e===Y.Right?[.5*(t+r),n]:[t,.5*(n+o)]}function Zo({sourceX:e,sourceY:t,sourcePosition:n=Y.Bottom,targetX:r,targetY:o,targetPosition:s=Y.Top}){const[i,c]=Lr({pos:n,x1:e,y1:t,x2:r,y2:o}),[l,a]=Lr({pos:s,x1:r,y1:o,x2:e,y2:t}),[u,f,h,g]=Uo({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:i,sourceControlY:c,targetControlX:l,targetControlY:a});return[`M${e},${t} C${i},${c} ${l},${a} ${r},${o}`,u,f,h,g]}const jn=b.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o=Y.Bottom,targetPosition:s=Y.Top,label:i,labelStyle:c,labelShowBg:l,labelBgStyle:a,labelBgPadding:u,labelBgBorderRadius:f,style:h,markerEnd:g,markerStart:x,interactionWidth:p})=>{const[w,m,E]=Zo({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s});return N.createElement(kt,{path:w,labelX:m,labelY:E,label:i,labelStyle:c,labelShowBg:l,labelBgStyle:a,labelBgPadding:u,labelBgBorderRadius:f,style:h,markerEnd:g,markerStart:x,interactionWidth:p})});jn.displayName="SimpleBezierEdge";const Br={[Y.Left]:{x:-1,y:0},[Y.Right]:{x:1,y:0},[Y.Top]:{x:0,y:-1},[Y.Bottom]:{x:0,y:1}},fu=({source:e,sourcePosition:t=Y.Bottom,target:n})=>t===Y.Left||t===Y.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},Fr=(e,t)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function du({source:e,sourcePosition:t=Y.Bottom,target:n,targetPosition:r=Y.Top,center:o,offset:s}){const i=Br[t],c=Br[r],l={x:e.x+i.x*s,y:e.y+i.y*s},a={x:n.x+c.x*s,y:n.y+c.y*s},u=fu({source:l,sourcePosition:t,target:a}),f=u.x!==0?"x":"y",h=u[f];let g=[],x,p;const w={x:0,y:0},m={x:0,y:0},[E,C,y,A]=Xo({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(i[f]*c[f]===-1){x=o.x??E,p=o.y??C;const D=[{x,y:l.y},{x,y:a.y}],z=[{x:l.x,y:p},{x:a.x,y:p}];i[f]===h?g=f==="x"?D:z:g=f==="x"?z:D}else{const D=[{x:l.x,y:a.y}],z=[{x:a.x,y:l.y}];if(f==="x"?g=i.x===h?z:D:g=i.y===h?D:z,t===r){const P=Math.abs(e[f]-n[f]);if(P<=s){const d=Math.min(s-1,s-P);i[f]===h?w[f]=(l[f]>e[f]?-1:1)*d:m[f]=(a[f]>n[f]?-1:1)*d}}if(t!==r){const P=f==="x"?"y":"x",d=i[f]===c[P],S=l[P]>a[P],v=l[P]<a[P];(i[f]===1&&(!d&&S||d&&v)||i[f]!==1&&(!d&&v||d&&S))&&(g=f==="x"?D:z)}const R={x:l.x+w.x,y:l.y+w.y},O={x:a.x+m.x,y:a.y+m.y},V=Math.max(Math.abs(R.x-g[0].x),Math.abs(O.x-g[0].x)),L=Math.max(Math.abs(R.y-g[0].y),Math.abs(O.y-g[0].y));V>=L?(x=(R.x+O.x)/2,p=g[0].y):(x=g[0].x,p=(R.y+O.y)/2)}return[[e,{x:l.x+w.x,y:l.y+w.y},...g,{x:a.x+m.x,y:a.y+m.y},n],x,p,y,A]}function hu(e,t,n,r){const o=Math.min(Fr(e,t)/2,Fr(t,n)/2,r),{x:s,y:i}=t;if(e.x===s&&s===n.x||e.y===i&&i===n.y)return`L${s} ${i}`;if(e.y===i){const a=e.x<n.x?-1:1,u=e.y<n.y?1:-1;return`L ${s+o*a},${i}Q ${s},${i} ${s},${i+o*u}`}const c=e.x<n.x?1:-1,l=e.y<n.y?-1:1;return`L ${s},${i+o*l}Q ${s},${i} ${s+o*c},${i}`}function Pn({sourceX:e,sourceY:t,sourcePosition:n=Y.Bottom,targetX:r,targetY:o,targetPosition:s=Y.Top,borderRadius:i=5,centerX:c,centerY:l,offset:a=20}){const[u,f,h,g,x]=du({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:o},targetPosition:s,center:{x:c,y:l},offset:a});return[u.reduce((w,m,E)=>{let C="";return E>0&&E<u.length-1?C=hu(u[E-1],m,u[E+1],i):C=`${E===0?"M":"L"}${m.x} ${m.y}`,w+=C,w},""),f,h,g,x]}const cn=b.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,label:o,labelStyle:s,labelShowBg:i,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:a,style:u,sourcePosition:f=Y.Bottom,targetPosition:h=Y.Top,markerEnd:g,markerStart:x,pathOptions:p,interactionWidth:w})=>{const[m,E,C]=Pn({sourceX:e,sourceY:t,sourcePosition:f,targetX:n,targetY:r,targetPosition:h,borderRadius:p?.borderRadius,offset:p?.offset});return N.createElement(kt,{path:m,labelX:E,labelY:C,label:o,labelStyle:s,labelShowBg:i,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:a,style:u,markerEnd:g,markerStart:x,interactionWidth:w})});cn.displayName="SmoothStepEdge";const er=b.memo(e=>N.createElement(cn,{...e,pathOptions:b.useMemo(()=>({borderRadius:0,offset:e.pathOptions?.offset}),[e.pathOptions?.offset])}));er.displayName="StepEdge";function gu({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[o,s,i,c]=Xo({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,o,s,i,c]}const tr=b.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,label:o,labelStyle:s,labelShowBg:i,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:a,style:u,markerEnd:f,markerStart:h,interactionWidth:g})=>{const[x,p,w]=gu({sourceX:e,sourceY:t,targetX:n,targetY:r});return N.createElement(kt,{path:x,labelX:p,labelY:w,label:o,labelStyle:s,labelShowBg:i,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:a,style:u,markerEnd:f,markerStart:h,interactionWidth:g})});tr.displayName="StraightEdge";function Ot(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Yr({pos:e,x1:t,y1:n,x2:r,y2:o,c:s}){switch(e){case Y.Left:return[t-Ot(t-r,s),n];case Y.Right:return[t+Ot(r-t,s),n];case Y.Top:return[t,n-Ot(n-o,s)];case Y.Bottom:return[t,n+Ot(o-n,s)]}}function qo({sourceX:e,sourceY:t,sourcePosition:n=Y.Bottom,targetX:r,targetY:o,targetPosition:s=Y.Top,curvature:i=.25}){const[c,l]=Yr({pos:n,x1:e,y1:t,x2:r,y2:o,c:i}),[a,u]=Yr({pos:s,x1:r,y1:o,x2:e,y2:t,c:i}),[f,h,g,x]=Uo({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:c,sourceControlY:l,targetControlX:a,targetControlY:u});return[`M${e},${t} C${c},${l} ${a},${u} ${r},${o}`,f,h,g,x]}const en=b.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o=Y.Bottom,targetPosition:s=Y.Top,label:i,labelStyle:c,labelShowBg:l,labelBgStyle:a,labelBgPadding:u,labelBgBorderRadius:f,style:h,markerEnd:g,markerStart:x,pathOptions:p,interactionWidth:w})=>{const[m,E,C]=qo({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s,curvature:p?.curvature});return N.createElement(kt,{path:m,labelX:E,labelY:C,label:i,labelStyle:c,labelShowBg:l,labelBgStyle:a,labelBgPadding:u,labelBgBorderRadius:f,style:h,markerEnd:g,markerStart:x,interactionWidth:w})});en.displayName="BezierEdge";const nr=b.createContext(null),pu=nr.Provider;nr.Consumer;const mu=()=>b.useContext(nr),yu=e=>"id"in e&&"source"in e&&"target"in e,xu=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,On=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,wu=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),vu=(e,t)=>{if(!e.source||!e.target)return t;let n;return yu(e)?n={...e}:n={...e,id:xu(e)},wu(n,t)?t:t.concat(n)},Vn=({x:e,y:t},[n,r,o],s,[i,c])=>{const l={x:(e-n)/o,y:(t-r)/o};return s?{x:i*Math.round(l.x/i),y:c*Math.round(l.y/c)}:l},Wo=({x:e,y:t},[n,r,o])=>({x:e*o+n,y:t*o+r}),at=(e,t=[0,0])=>{if(!e)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(e.width??0)*t[0],r=(e.height??0)*t[1],o={x:e.position.x-n,y:e.position.y-r};return{...o,positionAbsolute:e.positionAbsolute?{x:e.positionAbsolute.x-n,y:e.positionAbsolute.y-r}:o}},rr=(e,t=[0,0])=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,o)=>{const{x:s,y:i}=at(o,t).positionAbsolute;return su(r,Jn({x:s,y:i,width:o.width||0,height:o.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return au(n)},Go=(e,t,[n,r,o]=[0,0,1],s=!1,i=!1,c=[0,0])=>{const l={x:(t.x-n)/o,y:(t.y-r)/o,width:t.width/o,height:t.height/o},a=[];return e.forEach(u=>{const{width:f,height:h,selectable:g=!0,hidden:x=!1}=u;if(i&&!g||x)return!1;const{positionAbsolute:p}=at(u,c),w={x:p.x,y:p.y,width:f||0,height:h||0},m=zn(l,w),E=typeof f>"u"||typeof h>"u"||f===null||h===null,C=s&&m>0,y=(f||0)*(h||0);(E||C||m>=y||u.dragging)&&a.push(u)}),a},Ko=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},Qo=(e,t,n,r,o,s=.1)=>{const i=t/(e.width*(1+s)),c=n/(e.height*(1+s)),l=Math.min(i,c),a=ft(l,r,o),u=e.x+e.width/2,f=e.y+e.height/2,h=t/2-u*a,g=n/2-f*a;return{x:h,y:g,zoom:a}},Fe=(e,t=0)=>e.transition().duration(t);function Xr(e,t,n,r){return(t[n]||[]).reduce((o,s)=>(`${e.id}-${s.id}-${n}`!==r&&o.push({id:s.id||null,type:n,nodeId:e.id,x:(e.positionAbsolute?.x??0)+s.x+s.width/2,y:(e.positionAbsolute?.y??0)+s.y+s.height/2}),o),[])}function _u(e,t,n,r,o,s){const{x:i,y:c}=De(e),a=t.elementsFromPoint(i,c).find(x=>x.classList.contains("react-flow__handle"));if(a){const x=a.getAttribute("data-nodeid");if(x){const p=or(void 0,a),w=a.getAttribute("data-handleid"),m=s({nodeId:x,id:w,type:p});if(m){const E=o.find(C=>C.nodeId===x&&C.type===p&&C.id===w);return{handle:{id:w,type:p,nodeId:x,x:E?.x||n.x,y:E?.y||n.y},validHandleResult:m}}}}let u=[],f=1/0;if(o.forEach(x=>{const p=Math.sqrt((x.x-n.x)**2+(x.y-n.y)**2);if(p<=r){const w=s(x);p<=f&&(p<f?u=[{handle:x,validHandleResult:w}]:p===f&&u.push({handle:x,validHandleResult:w}),f=p)}}),!u.length)return{handle:null,validHandleResult:Jo()};if(u.length===1)return u[0];const h=u.some(({validHandleResult:x})=>x.isValid),g=u.some(({handle:x})=>x.type==="target");return u.find(({handle:x,validHandleResult:p})=>g?x.type==="target":h?p.isValid:!0)||u[0]}const Eu={source:null,target:null,sourceHandle:null,targetHandle:null},Jo=()=>({handleDomNode:null,isValid:!1,connection:Eu,endHandle:null});function jo(e,t,n,r,o,s,i){const c=o==="target",l=i.querySelector(`.react-flow__handle[data-id="${e?.nodeId}-${e?.id}-${e?.type}"]`),a={...Jo(),handleDomNode:l};if(l){const u=or(void 0,l),f=l.getAttribute("data-nodeid"),h=l.getAttribute("data-handleid"),g=l.classList.contains("connectable"),x=l.classList.contains("connectableend"),p={source:c?f:n,sourceHandle:c?h:r,target:c?n:f,targetHandle:c?r:h};a.connection=p,g&&x&&(t===qe.Strict?c&&u==="source"||!c&&u==="target":f!==n||h!==r)&&(a.endHandle={nodeId:f,handleId:h,type:u},a.isValid=s(p))}return a}function Su({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((o,s)=>{if(s[ee]){const{handleBounds:i}=s[ee];let c=[],l=[];i&&(c=Xr(s,i,"source",`${t}-${n}-${r}`),l=Xr(s,i,"target",`${t}-${n}-${r}`)),o.push(...c,...l)}return o},[])}function or(e,t){return e||(t?.classList.contains("target")?"target":t?.classList.contains("source")?"source":null)}function En(e){e?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function bu(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function ei({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:o,getState:s,setState:i,isValidConnection:c,edgeUpdaterType:l,onReconnectEnd:a}){const u=Bo(e.target),{connectionMode:f,domNode:h,autoPanOnConnect:g,connectionRadius:x,onConnectStart:p,panBy:w,getNodes:m,cancelConnection:E}=s();let C=0,y;const{x:A,y:M}=De(e),D=u?.elementFromPoint(A,M),z=or(l,D),R=h?.getBoundingClientRect();if(!R||!z)return;let O,V=De(e,R),L=!1,P=null,d=!1,S=null;const v=Su({nodes:m(),nodeId:n,handleId:t,handleType:z}),T=()=>{if(!g)return;const[$,k]=Lo(V,R);w({x:$,y:k}),C=requestAnimationFrame(T)};i({connectionPosition:V,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:z,connectionStartHandle:{nodeId:n,handleId:t,type:z},connectionEndHandle:null}),p?.(e,{nodeId:n,handleId:t,handleType:z});function I($){const{transform:k}=s();V=De($,R);const{handle:H,validHandleResult:F}=_u($,u,Vn(V,k,!1,[1,1]),x,v,B=>jo(B,f,n,t,o?"target":"source",c,u));if(y=H,L||(T(),L=!0),S=F.handleDomNode,P=F.connection,d=F.isValid,i({connectionPosition:y&&d?Wo({x:y.x,y:y.y},k):V,connectionStatus:bu(!!y,d),connectionEndHandle:F.endHandle}),!y&&!d&&!S)return En(O);P.source!==P.target&&S&&(En(O),O=S,S.classList.add("connecting","react-flow__handle-connecting"),S.classList.toggle("valid",d),S.classList.toggle("react-flow__handle-valid",d))}function _($){(y||S)&&P&&d&&r?.(P),s().onConnectEnd?.($),l&&a?.($),En(O),E(),cancelAnimationFrame(C),L=!1,d=!1,P=null,S=null,u.removeEventListener("mousemove",I),u.removeEventListener("mouseup",_),u.removeEventListener("touchmove",I),u.removeEventListener("touchend",_)}u.addEventListener("mousemove",I),u.addEventListener("mouseup",_),u.addEventListener("touchmove",I),u.addEventListener("touchend",_)}const Ur=()=>!0,Nu=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),Cu=(e,t,n)=>r=>{const{connectionStartHandle:o,connectionEndHandle:s,connectionClickStartHandle:i}=r;return{connecting:o?.nodeId===e&&o?.handleId===t&&o?.type===n||s?.nodeId===e&&s?.handleId===t&&s?.type===n,clickConnecting:i?.nodeId===e&&i?.handleId===t&&i?.type===n}},ti=b.forwardRef(({type:e="source",position:t=Y.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:o=!0,isConnectableEnd:s=!0,id:i,onConnect:c,children:l,className:a,onMouseDown:u,onTouchStart:f,...h},g)=>{const x=i||null,p=e==="target",w=ne(),m=mu(),{connectOnClick:E,noPanClassName:C}=J(Nu,re),{connecting:y,clickConnecting:A}=J(Cu(m,x,e),re);m||w.getState().onError?.("010",Ae.error010());const M=R=>{const{defaultEdgeOptions:O,onConnect:V,hasDefaultEdges:L}=w.getState(),P={...O,...R};if(L){const{edges:d,setEdges:S}=w.getState();S(vu(P,d))}V?.(P),c?.(P)},D=R=>{if(!m)return;const O=Yo(R);o&&(O&&R.button===0||!O)&&ei({event:R,handleId:x,nodeId:m,onConnect:M,isTarget:p,getState:w.getState,setState:w.setState,isValidConnection:n||w.getState().isValidConnection||Ur}),O?u?.(R):f?.(R)},z=R=>{const{onClickConnectStart:O,onClickConnectEnd:V,connectionClickStartHandle:L,connectionMode:P,isValidConnection:d}=w.getState();if(!m||!L&&!o)return;if(!L){O?.(R,{nodeId:m,handleId:x,handleType:e}),w.setState({connectionClickStartHandle:{nodeId:m,type:e,handleId:x}});return}const S=Bo(R.target),v=n||d||Ur,{connection:T,isValid:I}=jo({nodeId:m,id:x,type:e},P,L.nodeId,L.handleId||null,L.type,v,S);I&&M(T),V?.(R),w.setState({connectionClickStartHandle:null})};return N.createElement("div",{"data-handleid":x,"data-nodeid":m,"data-handlepos":t,"data-id":`${m}-${x}-${e}`,className:ae(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",C,a,{source:!p,target:p,connectable:r,connectablestart:o,connectableend:s,connecting:A,connectionindicator:r&&(o&&!y||s&&y)}]),onMouseDown:D,onTouchStart:D,onClick:E?z:void 0,ref:g,...h},l)});ti.displayName="Handle";var tn=b.memo(ti);const ni=({data:e,isConnectable:t,targetPosition:n=Y.Top,sourcePosition:r=Y.Bottom})=>N.createElement(N.Fragment,null,N.createElement(tn,{type:"target",position:n,isConnectable:t}),e?.label,N.createElement(tn,{type:"source",position:r,isConnectable:t}));ni.displayName="DefaultNode";var Ln=b.memo(ni);const ri=({data:e,isConnectable:t,sourcePosition:n=Y.Bottom})=>N.createElement(N.Fragment,null,e?.label,N.createElement(tn,{type:"source",position:n,isConnectable:t}));ri.displayName="InputNode";var oi=b.memo(ri);const ii=({data:e,isConnectable:t,targetPosition:n=Y.Top})=>N.createElement(N.Fragment,null,N.createElement(tn,{type:"target",position:n,isConnectable:t}),e?.label);ii.displayName="OutputNode";var si=b.memo(ii);const ir=()=>null;ir.displayName="GroupNode";const Mu=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected).map(t=>({...t}))}),Vt=e=>e.id;function Au(e,t){return re(e.selectedNodes.map(Vt),t.selectedNodes.map(Vt))&&re(e.selectedEdges.map(Vt),t.selectedEdges.map(Vt))}const ai=b.memo(({onSelectionChange:e})=>{const t=ne(),{selectedNodes:n,selectedEdges:r}=J(Mu,Au);return b.useEffect(()=>{const o={nodes:n,edges:r};e?.(o),t.getState().onSelectionChange.forEach(s=>s(o))},[n,r,e]),null});ai.displayName="SelectionListener";const Tu=e=>!!e.onSelectionChange;function $u({onSelectionChange:e}){const t=J(Tu);return e||t?N.createElement(ai,{onSelectionChange:e}):null}const Ru=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset});function et(e,t){b.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function Z(e,t,n){b.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const ku=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:o,onConnectStart:s,onConnectEnd:i,onClickConnectStart:c,onClickConnectEnd:l,nodesDraggable:a,nodesConnectable:u,nodesFocusable:f,edgesFocusable:h,edgesUpdatable:g,elevateNodesOnSelect:x,minZoom:p,maxZoom:w,nodeExtent:m,onNodesChange:E,onEdgesChange:C,elementsSelectable:y,connectionMode:A,snapGrid:M,snapToGrid:D,translateExtent:z,connectOnClick:R,defaultEdgeOptions:O,fitView:V,fitViewOptions:L,onNodesDelete:P,onEdgesDelete:d,onNodeDrag:S,onNodeDragStart:v,onNodeDragStop:T,onSelectionDrag:I,onSelectionDragStart:_,onSelectionDragStop:$,noPanClassName:k,nodeOrigin:H,rfId:F,autoPanOnConnect:B,autoPanOnNodeDrag:U,onError:q,connectionRadius:W,isValidConnection:G,nodeDragThreshold:j})=>{const{setNodes:K,setEdges:he,setDefaultNodesAndEdges:ue,setMinZoom:ge,setMaxZoom:fe,setTranslateExtent:te,setNodeExtent:xe,reset:Q}=J(Ru,re),X=ne();return b.useEffect(()=>{const ce=r?.map(ze=>({...ze,...O}));return ue(n,ce),()=>{Q()}},[]),Z("defaultEdgeOptions",O,X.setState),Z("connectionMode",A,X.setState),Z("onConnect",o,X.setState),Z("onConnectStart",s,X.setState),Z("onConnectEnd",i,X.setState),Z("onClickConnectStart",c,X.setState),Z("onClickConnectEnd",l,X.setState),Z("nodesDraggable",a,X.setState),Z("nodesConnectable",u,X.setState),Z("nodesFocusable",f,X.setState),Z("edgesFocusable",h,X.setState),Z("edgesUpdatable",g,X.setState),Z("elementsSelectable",y,X.setState),Z("elevateNodesOnSelect",x,X.setState),Z("snapToGrid",D,X.setState),Z("snapGrid",M,X.setState),Z("onNodesChange",E,X.setState),Z("onEdgesChange",C,X.setState),Z("connectOnClick",R,X.setState),Z("fitViewOnInit",V,X.setState),Z("fitViewOnInitOptions",L,X.setState),Z("onNodesDelete",P,X.setState),Z("onEdgesDelete",d,X.setState),Z("onNodeDrag",S,X.setState),Z("onNodeDragStart",v,X.setState),Z("onNodeDragStop",T,X.setState),Z("onSelectionDrag",I,X.setState),Z("onSelectionDragStart",_,X.setState),Z("onSelectionDragStop",$,X.setState),Z("noPanClassName",k,X.setState),Z("nodeOrigin",H,X.setState),Z("rfId",F,X.setState),Z("autoPanOnConnect",B,X.setState),Z("autoPanOnNodeDrag",U,X.setState),Z("onError",q,X.setState),Z("connectionRadius",W,X.setState),Z("isValidConnection",G,X.setState),Z("nodeDragThreshold",j,X.setState),et(e,K),et(t,he),et(p,ge),et(w,fe),et(z,te),et(m,xe),null},Zr={display:"none"},Iu={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},ci="react-flow__node-desc",li="react-flow__edge-desc",Du="react-flow__aria-live",zu=e=>e.ariaLiveMessage;function Hu({rfId:e}){const t=J(zu);return N.createElement("div",{id:`${Du}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Iu},t)}function Pu({rfId:e,disableKeyboardA11y:t}){return N.createElement(N.Fragment,null,N.createElement("div",{id:`${ci}-${e}`,style:Zr},"Press enter or space to select a node.",!t&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),N.createElement("div",{id:`${li}-${e}`,style:Zr},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!t&&N.createElement(Hu,{rfId:e}))}var Tt=(e=null,t={actInsideInputWithModifier:!0})=>{const[n,r]=b.useState(!1),o=b.useRef(!1),s=b.useRef(new Set([])),[i,c]=b.useMemo(()=>{if(e!==null){const a=(Array.isArray(e)?e:[e]).filter(f=>typeof f=="string").map(f=>f.split("+")),u=a.reduce((f,h)=>f.concat(...h),[]);return[a,u]}return[[],[]]},[e]);return b.useEffect(()=>{const l=typeof document<"u"?document:null,a=t?.target||l;if(e!==null){const u=g=>{if(o.current=g.ctrlKey||g.metaKey||g.shiftKey,(!o.current||o.current&&!t.actInsideInputWithModifier)&&Hn(g))return!1;const p=Wr(g.code,c);s.current.add(g[p]),qr(i,s.current,!1)&&(g.preventDefault(),r(!0))},f=g=>{if((!o.current||o.current&&!t.actInsideInputWithModifier)&&Hn(g))return!1;const p=Wr(g.code,c);qr(i,s.current,!0)?(r(!1),s.current.clear()):s.current.delete(g[p]),g.key==="Meta"&&s.current.clear(),o.current=!1},h=()=>{s.current.clear(),r(!1)};return a?.addEventListener("keydown",u),a?.addEventListener("keyup",f),window.addEventListener("blur",h),()=>{a?.removeEventListener("keydown",u),a?.removeEventListener("keyup",f),window.removeEventListener("blur",h)}}},[e,r]),n};function qr(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(o=>t.has(o)))}function Wr(e,t){return t.includes(e)?"code":"key"}function ui(e,t,n,r){const o=e.parentNode||e.parentId;if(!o)return n;const s=t.get(o),i=at(s,r);return ui(s,t,{x:(n.x??0)+i.x,y:(n.y??0)+i.y,z:(s[ee]?.z??0)>(n.z??0)?s[ee]?.z??0:n.z??0},r)}function fi(e,t,n){e.forEach(r=>{const o=r.parentNode||r.parentId;if(o&&!e.has(o))throw new Error(`Parent node ${o} not found`);if(o||n?.[r.id]){const{x:s,y:i,z:c}=ui(r,e,{...r.position,z:r[ee]?.z??0},t);r.positionAbsolute={x:s,y:i},r[ee].z=c,n?.[r.id]&&(r[ee].isParent=!0)}})}function Sn(e,t,n,r){const o=new Map,s={},i=r?1e3:0;return e.forEach(c=>{const l=(de(c.zIndex)?c.zIndex:0)+(c.selected?i:0),a=t.get(c.id),u={...c,positionAbsolute:{x:c.position.x,y:c.position.y}},f=c.parentNode||c.parentId;f&&(s[f]=!0);const h=a?.type&&a?.type!==c.type;Object.defineProperty(u,ee,{enumerable:!1,value:{handleBounds:h?void 0:a?.[ee]?.handleBounds,z:l}}),o.set(c.id,u)}),fi(o,n,s),o}function di(e,t={}){const{getNodes:n,width:r,height:o,minZoom:s,maxZoom:i,d3Zoom:c,d3Selection:l,fitViewOnInitDone:a,fitViewOnInit:u,nodeOrigin:f}=e(),h=t.initial&&!a&&u;if(c&&l&&(h||!t.initial)){const x=n().filter(w=>{const m=t.includeHiddenNodes?w.width&&w.height:!w.hidden;return t.nodes?.length?m&&t.nodes.some(E=>E.id===w.id):m}),p=x.every(w=>w.width&&w.height);if(x.length>0&&p){const w=rr(x,f),{x:m,y:E,zoom:C}=Qo(w,r,o,t.minZoom??s,t.maxZoom??i,t.padding??.1),y=Ie.translate(m,E).scale(C);return typeof t.duration=="number"&&t.duration>0?c.transform(Fe(l,t.duration),y):c.transform(l,y),!0}}return!1}function Ou(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[ee]:r[ee],selected:n.selected})}),new Map(t)}function Vu(e,t){return t.map(n=>{const r=e.find(o=>o.id===n.id);return r&&(n.selected=r.selected),n})}function Lt({changedNodes:e,changedEdges:t,get:n,set:r}){const{nodeInternals:o,edges:s,onNodesChange:i,onEdgesChange:c,hasDefaultNodes:l,hasDefaultEdges:a}=n();e?.length&&(l&&r({nodeInternals:Ou(e,o)}),i?.(e)),t?.length&&(a&&r({edges:Vu(t,s)}),c?.(t))}const tt=()=>{},Lu={zoomIn:tt,zoomOut:tt,zoomTo:tt,getZoom:()=>1,setViewport:tt,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:tt,fitBounds:tt,project:e=>e,screenToFlowPosition:e=>e,flowToScreenPosition:e=>e,viewportInitialized:!1},Bu=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),Fu=()=>{const e=ne(),{d3Zoom:t,d3Selection:n}=J(Bu,re);return b.useMemo(()=>n&&t?{zoomIn:o=>t.scaleBy(Fe(n,o?.duration),1.2),zoomOut:o=>t.scaleBy(Fe(n,o?.duration),1/1.2),zoomTo:(o,s)=>t.scaleTo(Fe(n,s?.duration),o),getZoom:()=>e.getState().transform[2],setViewport:(o,s)=>{const[i,c,l]=e.getState().transform,a=Ie.translate(o.x??i,o.y??c).scale(o.zoom??l);t.transform(Fe(n,s?.duration),a)},getViewport:()=>{const[o,s,i]=e.getState().transform;return{x:o,y:s,zoom:i}},fitView:o=>di(e.getState,o),setCenter:(o,s,i)=>{const{width:c,height:l,maxZoom:a}=e.getState(),u=typeof i?.zoom<"u"?i.zoom:a,f=c/2-o*u,h=l/2-s*u,g=Ie.translate(f,h).scale(u);t.transform(Fe(n,i?.duration),g)},fitBounds:(o,s)=>{const{width:i,height:c,minZoom:l,maxZoom:a}=e.getState(),{x:u,y:f,zoom:h}=Qo(o,i,c,l,a,s?.padding??.1),g=Ie.translate(u,f).scale(h);t.transform(Fe(n,s?.duration),g)},project:o=>{const{transform:s,snapToGrid:i,snapGrid:c}=e.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),Vn(o,s,i,c)},screenToFlowPosition:o=>{const{transform:s,snapToGrid:i,snapGrid:c,domNode:l}=e.getState();if(!l)return o;const{x:a,y:u}=l.getBoundingClientRect(),f={x:o.x-a,y:o.y-u};return Vn(f,s,i,c)},flowToScreenPosition:o=>{const{transform:s,domNode:i}=e.getState();if(!i)return o;const{x:c,y:l}=i.getBoundingClientRect(),a=Wo(o,s);return{x:a.x+c,y:a.y+l}},viewportInitialized:!0}:Lu,[t,n])};function sr(){const e=Fu(),t=ne(),n=b.useCallback(()=>t.getState().getNodes().map(p=>({...p})),[]),r=b.useCallback(p=>t.getState().nodeInternals.get(p),[]),o=b.useCallback(()=>{const{edges:p=[]}=t.getState();return p.map(w=>({...w}))},[]),s=b.useCallback(p=>{const{edges:w=[]}=t.getState();return w.find(m=>m.id===p)},[]),i=b.useCallback(p=>{const{getNodes:w,setNodes:m,hasDefaultNodes:E,onNodesChange:C}=t.getState(),y=w(),A=typeof p=="function"?p(y):p;if(E)m(A);else if(C){const M=A.length===0?y.map(D=>({type:"remove",id:D.id})):A.map(D=>({item:D,type:"reset"}));C(M)}},[]),c=b.useCallback(p=>{const{edges:w=[],setEdges:m,hasDefaultEdges:E,onEdgesChange:C}=t.getState(),y=typeof p=="function"?p(w):p;if(E)m(y);else if(C){const A=y.length===0?w.map(M=>({type:"remove",id:M.id})):y.map(M=>({item:M,type:"reset"}));C(A)}},[]),l=b.useCallback(p=>{const w=Array.isArray(p)?p:[p],{getNodes:m,setNodes:E,hasDefaultNodes:C,onNodesChange:y}=t.getState();if(C){const M=[...m(),...w];E(M)}else if(y){const A=w.map(M=>({item:M,type:"add"}));y(A)}},[]),a=b.useCallback(p=>{const w=Array.isArray(p)?p:[p],{edges:m=[],setEdges:E,hasDefaultEdges:C,onEdgesChange:y}=t.getState();if(C)E([...m,...w]);else if(y){const A=w.map(M=>({item:M,type:"add"}));y(A)}},[]),u=b.useCallback(()=>{const{getNodes:p,edges:w=[],transform:m}=t.getState(),[E,C,y]=m;return{nodes:p().map(A=>({...A})),edges:w.map(A=>({...A})),viewport:{x:E,y:C,zoom:y}}},[]),f=b.useCallback(({nodes:p,edges:w})=>{const{nodeInternals:m,getNodes:E,edges:C,hasDefaultNodes:y,hasDefaultEdges:A,onNodesDelete:M,onEdgesDelete:D,onNodesChange:z,onEdgesChange:R}=t.getState(),O=(p||[]).map(S=>S.id),V=(w||[]).map(S=>S.id),L=E().reduce((S,v)=>{const T=v.parentNode||v.parentId,I=!O.includes(v.id)&&T&&S.find($=>$.id===T);return(typeof v.deletable!="boolean"||v.deletable)&&(O.includes(v.id)||I)&&S.push(v),S},[]),P=C.filter(S=>typeof S.deletable=="boolean"?S.deletable:!0),d=P.filter(S=>V.includes(S.id));if(L||d){const S=Ko(L,P),v=[...d,...S],T=v.reduce((I,_)=>(I.includes(_.id)||I.push(_.id),I),[]);if((A||y)&&(A&&t.setState({edges:C.filter(I=>!T.includes(I.id))}),y&&(L.forEach(I=>{m.delete(I.id)}),t.setState({nodeInternals:new Map(m)}))),T.length>0&&(D?.(v),R&&R(T.map(I=>({id:I,type:"remove"})))),L.length>0&&(M?.(L),z)){const I=L.map(_=>({id:_.id,type:"remove"}));z(I)}}},[]),h=b.useCallback(p=>{const w=cu(p),m=w?null:t.getState().nodeInternals.get(p.id);return!w&&!m?[null,null,w]:[w?p:Vr(m),m,w]},[]),g=b.useCallback((p,w=!0,m)=>{const[E,C,y]=h(p);return E?(m||t.getState().getNodes()).filter(A=>{if(!y&&(A.id===C.id||!A.positionAbsolute))return!1;const M=Vr(A),D=zn(M,E);return w&&D>0||D>=E.width*E.height}):[]},[]),x=b.useCallback((p,w,m=!0)=>{const[E]=h(p);if(!E)return!1;const C=zn(E,w);return m&&C>0||C>=E.width*E.height},[]);return b.useMemo(()=>({...e,getNodes:n,getNode:r,getEdges:o,getEdge:s,setNodes:i,setEdges:c,addNodes:l,addEdges:a,toObject:u,deleteElements:f,getIntersectingNodes:g,isNodeIntersecting:x}),[e,n,r,o,s,i,c,l,a,u,f,g,x])}const Yu={actInsideInputWithModifier:!1};var Xu=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=ne(),{deleteElements:r}=sr(),o=Tt(e,Yu),s=Tt(t);b.useEffect(()=>{if(o){const{edges:i,getNodes:c}=n.getState(),l=c().filter(u=>u.selected),a=i.filter(u=>u.selected);r({nodes:l,edges:a}),n.setState({nodesSelectionActive:!1})}},[o]),b.useEffect(()=>{n.setState({multiSelectionActive:s})},[s])};function Uu(e){const t=ne();b.useEffect(()=>{let n;const r=()=>{if(!e.current)return;const o=Kn(e.current);(o.height===0||o.width===0)&&t.getState().onError?.("004",Ae.error004()),t.setState({width:o.width||500,height:o.height||500})};return r(),window.addEventListener("resize",r),e.current&&(n=new ResizeObserver(()=>r()),n.observe(e.current)),()=>{window.removeEventListener("resize",r),n&&e.current&&n.unobserve(e.current)}},[])}const ar={position:"absolute",width:"100%",height:"100%",top:0,left:0},Zu=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,Bt=e=>({x:e.x,y:e.y,zoom:e.k}),nt=(e,t)=>e.target.closest(`.${t}`),Gr=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Kr=e=>{const t=e.ctrlKey&&Jt()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t},qu=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),Wu=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:o=!0,zoomOnPinch:s=!0,panOnScroll:i=!1,panOnScrollSpeed:c=.5,panOnScrollMode:l=Xe.Free,zoomOnDoubleClick:a=!0,elementsSelectable:u,panOnDrag:f=!0,defaultViewport:h,translateExtent:g,minZoom:x,maxZoom:p,zoomActivationKeyCode:w,preventScrolling:m=!0,children:E,noWheelClassName:C,noPanClassName:y})=>{const A=b.useRef(),M=ne(),D=b.useRef(!1),z=b.useRef(!1),R=b.useRef(null),O=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:V,d3Selection:L,d3ZoomHandler:P,userSelectionActive:d}=J(qu,re),S=Tt(w),v=b.useRef(0),T=b.useRef(!1),I=b.useRef();return Uu(R),b.useEffect(()=>{if(R.current){const _=R.current.getBoundingClientRect(),$=eu().scaleExtent([x,p]).translateExtent(g),k=pe(R.current).call($),H=Ie.translate(h.x,h.y).scale(ft(h.zoom,x,p)),F=[[0,0],[_.width,_.height]],B=$.constrain()(H,F,g);$.transform(k,B),$.wheelDelta(Kr),M.setState({d3Zoom:$,d3Selection:k,d3ZoomHandler:k.on("wheel.zoom"),transform:[B.x,B.y,B.k],domNode:R.current.closest(".react-flow")})}},[]),b.useEffect(()=>{L&&V&&(i&&!S&&!d?L.on("wheel.zoom",_=>{if(nt(_,C))return!1;_.preventDefault(),_.stopImmediatePropagation();const $=L.property("__zoom").k||1;if(_.ctrlKey&&s){const G=_e(_),j=Kr(_),K=$*Math.pow(2,j);V.scaleTo(L,K,G,_);return}const k=_.deltaMode===1?20:1;let H=l===Xe.Vertical?0:_.deltaX*k,F=l===Xe.Horizontal?0:_.deltaY*k;!Jt()&&_.shiftKey&&l!==Xe.Vertical&&(H=_.deltaY*k,F=0),V.translateBy(L,-(H/$)*c,-(F/$)*c,{internal:!0});const B=Bt(L.property("__zoom")),{onViewportChangeStart:U,onViewportChange:q,onViewportChangeEnd:W}=M.getState();clearTimeout(I.current),T.current||(T.current=!0,t?.(_,B),U?.(B)),T.current&&(e?.(_,B),q?.(B),I.current=setTimeout(()=>{n?.(_,B),W?.(B),T.current=!1},150))},{passive:!1}):typeof P<"u"&&L.on("wheel.zoom",function(_,$){if(!m&&_.type==="wheel"&&!_.ctrlKey||nt(_,C))return null;_.preventDefault(),P.call(this,_,$)},{passive:!1}))},[d,i,l,L,V,P,S,s,m,C,t,e,n]),b.useEffect(()=>{V&&V.on("start",_=>{if(!_.sourceEvent||_.sourceEvent.internal)return null;v.current=_.sourceEvent?.button;const{onViewportChangeStart:$}=M.getState(),k=Bt(_.transform);D.current=!0,O.current=k,_.sourceEvent?.type==="mousedown"&&M.setState({paneDragging:!0}),$?.(k),t?.(_.sourceEvent,k)})},[V,t]),b.useEffect(()=>{V&&(d&&!D.current?V.on("zoom",null):d||V.on("zoom",_=>{const{onViewportChange:$}=M.getState();if(M.setState({transform:[_.transform.x,_.transform.y,_.transform.k]}),z.current=!!(r&&Gr(f,v.current??0)),(e||$)&&!_.sourceEvent?.internal){const k=Bt(_.transform);$?.(k),e?.(_.sourceEvent,k)}}))},[d,V,e,f,r]),b.useEffect(()=>{V&&V.on("end",_=>{if(!_.sourceEvent||_.sourceEvent.internal)return null;const{onViewportChangeEnd:$}=M.getState();if(D.current=!1,M.setState({paneDragging:!1}),r&&Gr(f,v.current??0)&&!z.current&&r(_.sourceEvent),z.current=!1,(n||$)&&Zu(O.current,_.transform)){const k=Bt(_.transform);O.current=k,clearTimeout(A.current),A.current=setTimeout(()=>{$?.(k),n?.(_.sourceEvent,k)},i?150:0)}})},[V,i,f,n,r]),b.useEffect(()=>{V&&V.filter(_=>{const $=S||o,k=s&&_.ctrlKey;if((f===!0||Array.isArray(f)&&f.includes(1))&&_.button===1&&_.type==="mousedown"&&(nt(_,"react-flow__node")||nt(_,"react-flow__edge")))return!0;if(!f&&!$&&!i&&!a&&!s||d||!a&&_.type==="dblclick"||nt(_,C)&&_.type==="wheel"||nt(_,y)&&(_.type!=="wheel"||i&&_.type==="wheel"&&!S)||!s&&_.ctrlKey&&_.type==="wheel"||!$&&!i&&!k&&_.type==="wheel"||!f&&(_.type==="mousedown"||_.type==="touchstart")||Array.isArray(f)&&!f.includes(_.button)&&_.type==="mousedown")return!1;const H=Array.isArray(f)&&f.includes(_.button)||!_.button||_.button<=1;return(!_.ctrlKey||_.type==="wheel")&&H})},[d,V,o,s,i,a,f,u,S]),N.createElement("div",{className:"react-flow__renderer",ref:R,style:ar},E)},Gu=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Ku(){const{userSelectionActive:e,userSelectionRect:t}=J(Gu,re);return e&&t?N.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}function Qr(e,t){const n=t.parentNode||t.parentId,r=e.find(o=>o.id===n);if(r){const o=t.position.x+t.width-r.width,s=t.position.y+t.height-r.height;if(o>0||s>0||t.position.x<0||t.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,o>0&&(r.style.width+=o),s>0&&(r.style.height+=s),t.position.x<0){const i=Math.abs(t.position.x);r.position.x=r.position.x-i,r.style.width+=i,t.position.x=0}if(t.position.y<0){const i=Math.abs(t.position.y);r.position.y=r.position.y-i,r.style.height+=i,t.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function hi(e,t){if(e.some(r=>r.type==="reset"))return e.filter(r=>r.type==="reset").map(r=>r.item);const n=e.filter(r=>r.type==="add").map(r=>r.item);return t.reduce((r,o)=>{const s=e.filter(c=>c.id===o.id);if(s.length===0)return r.push(o),r;const i={...o};for(const c of s)if(c)switch(c.type){case"select":{i.selected=c.selected;break}case"position":{typeof c.position<"u"&&(i.position=c.position),typeof c.positionAbsolute<"u"&&(i.positionAbsolute=c.positionAbsolute),typeof c.dragging<"u"&&(i.dragging=c.dragging),i.expandParent&&Qr(r,i);break}case"dimensions":{typeof c.dimensions<"u"&&(i.width=c.dimensions.width,i.height=c.dimensions.height),typeof c.updateStyle<"u"&&(i.style={...i.style||{},...c.dimensions}),typeof c.resizing=="boolean"&&(i.resizing=c.resizing),i.expandParent&&Qr(r,i);break}case"remove":return r}return r.push(i),r},n)}function gi(e,t){return hi(e,t)}function Qu(e,t){return hi(e,t)}const Re=(e,t)=>({id:e,type:"select",selected:t});function ot(e,t){return e.reduce((n,r)=>{const o=t.includes(r.id);return!r.selected&&o?(r.selected=!0,n.push(Re(r.id,!0))):r.selected&&!o&&(r.selected=!1,n.push(Re(r.id,!1))),n},[])}const bn=(e,t)=>n=>{n.target===t.current&&e?.(n)},Ju=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),pi=b.memo(({isSelecting:e,selectionMode:t=At.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:o,onPaneClick:s,onPaneContextMenu:i,onPaneScroll:c,onPaneMouseEnter:l,onPaneMouseMove:a,onPaneMouseLeave:u,children:f})=>{const h=b.useRef(null),g=ne(),x=b.useRef(0),p=b.useRef(0),w=b.useRef(),{userSelectionActive:m,elementsSelectable:E,dragging:C}=J(Ju,re),y=()=>{g.setState({userSelectionActive:!1,userSelectionRect:null}),x.current=0,p.current=0},A=P=>{s?.(P),g.getState().resetSelectedElements(),g.setState({nodesSelectionActive:!1})},M=P=>{if(Array.isArray(n)&&n?.includes(2)){P.preventDefault();return}i?.(P)},D=c?P=>c(P):void 0,z=P=>{const{resetSelectedElements:d,domNode:S}=g.getState();if(w.current=S?.getBoundingClientRect(),!E||!e||P.button!==0||P.target!==h.current||!w.current)return;const{x:v,y:T}=De(P,w.current);d(),g.setState({userSelectionRect:{width:0,height:0,startX:v,startY:T,x:v,y:T}}),r?.(P)},R=P=>{const{userSelectionRect:d,nodeInternals:S,edges:v,transform:T,onNodesChange:I,onEdgesChange:_,nodeOrigin:$,getNodes:k}=g.getState();if(!e||!w.current||!d)return;g.setState({userSelectionActive:!0,nodesSelectionActive:!1});const H=De(P,w.current),F=d.startX??0,B=d.startY??0,U={...d,x:H.x<F?H.x:F,y:H.y<B?H.y:B,width:Math.abs(H.x-F),height:Math.abs(H.y-B)},q=k(),W=Go(S,U,T,t===At.Partial,!0,$),G=Ko(W,v).map(K=>K.id),j=W.map(K=>K.id);if(x.current!==j.length){x.current=j.length;const K=ot(q,j);K.length&&I?.(K)}if(p.current!==G.length){p.current=G.length;const K=ot(v,G);K.length&&_?.(K)}g.setState({userSelectionRect:U})},O=P=>{if(P.button!==0)return;const{userSelectionRect:d}=g.getState();!m&&d&&P.target===h.current&&A?.(P),g.setState({nodesSelectionActive:x.current>0}),y(),o?.(P)},V=P=>{m&&(g.setState({nodesSelectionActive:x.current>0}),o?.(P)),y()},L=E&&(e||m);return N.createElement("div",{className:ae(["react-flow__pane",{dragging:C,selection:e}]),onClick:L?void 0:bn(A,h),onContextMenu:bn(M,h),onWheel:bn(D,h),onMouseEnter:L?void 0:l,onMouseDown:L?z:void 0,onMouseMove:L?R:a,onMouseUp:L?O:void 0,onMouseLeave:L?V:u,ref:h,style:ar},f,N.createElement(Ku,null))});pi.displayName="Pane";function mi(e,t){const n=e.parentNode||e.parentId;if(!n)return!1;const r=t.get(n);return r?r.selected?!0:mi(r,t):!1}function Jr(e,t,n){let r=e;do{if(r?.matches(t))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function ju(e,t,n,r){return Array.from(e.values()).filter(o=>(o.selected||o.id===r)&&(!o.parentNode||o.parentId||!mi(o,e))&&(o.draggable||t&&typeof o.draggable>"u")).map(o=>({id:o.id,position:o.position||{x:0,y:0},positionAbsolute:o.positionAbsolute||{x:0,y:0},distance:{x:n.x-(o.positionAbsolute?.x??0),y:n.y-(o.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:o.extent,parentNode:o.parentNode||o.parentId,parentId:o.parentNode||o.parentId,width:o.width,height:o.height,expandParent:o.expandParent}))}function ef(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function yi(e,t,n,r,o=[0,0],s){const i=ef(e,e.extent||r);let c=i;const l=e.parentNode||e.parentId;if(e.extent==="parent"&&!e.expandParent)if(l&&e.width&&e.height){const f=n.get(l),{x:h,y:g}=at(f,o).positionAbsolute;c=f&&de(h)&&de(g)&&de(f.width)&&de(f.height)?[[h+e.width*o[0],g+e.height*o[1]],[h+f.width-e.width+e.width*o[0],g+f.height-e.height+e.height*o[1]]]:c}else s?.("005",Ae.error005()),c=i;else if(e.extent&&l&&e.extent!=="parent"){const f=n.get(l),{x:h,y:g}=at(f,o).positionAbsolute;c=[[e.extent[0][0]+h,e.extent[0][1]+g],[e.extent[1][0]+h,e.extent[1][1]+g]]}let a={x:0,y:0};if(l){const f=n.get(l);a=at(f,o).positionAbsolute}const u=c&&c!=="parent"?Qn(t,c):t;return{position:{x:u.x-a.x,y:u.y-a.y},positionAbsolute:u}}function Nn({nodeId:e,dragItems:t,nodeInternals:n}){const r=t.map(o=>({...n.get(o.id),position:o.position,positionAbsolute:o.positionAbsolute}));return[e?r.find(o=>o.id===e):r[0],r]}const jr=(e,t,n,r)=>{const o=t.querySelectorAll(e);if(!o||!o.length)return null;const s=Array.from(o),i=t.getBoundingClientRect(),c={x:i.width*r[0],y:i.height*r[1]};return s.map(l=>{const a=l.getBoundingClientRect();return{id:l.getAttribute("data-handleid"),position:l.getAttribute("data-handlepos"),x:(a.left-i.left-c.x)/n,y:(a.top-i.top-c.y)/n,...Kn(l)}})};function xt(e,t,n){return n===void 0?n:r=>{const o=t().nodeInternals.get(e);o&&n(r,{...o})}}function Bn({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:o,unselectNodesAndEdges:s,multiSelectionActive:i,nodeInternals:c,onError:l}=t.getState(),a=c.get(e);if(!a){l?.("012",Ae.error012(e));return}t.setState({nodesSelectionActive:!1}),a.selected?(n||a.selected&&i)&&(s({nodes:[a],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):o([e])}function tf(){const e=ne();return b.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:o,snapToGrid:s}=e.getState(),i=n.touches?n.touches[0].clientX:n.clientX,c=n.touches?n.touches[0].clientY:n.clientY,l={x:(i-r[0])/r[2],y:(c-r[1])/r[2]};return{xSnapped:s?o[0]*Math.round(l.x/o[0]):l.x,ySnapped:s?o[1]*Math.round(l.y/o[1]):l.y,...l}},[])}function Cn(e){return(t,n,r)=>e?.(t,r)}function xi({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:o,isSelectable:s,selectNodesOnDrag:i}){const c=ne(),[l,a]=b.useState(!1),u=b.useRef([]),f=b.useRef({x:null,y:null}),h=b.useRef(0),g=b.useRef(null),x=b.useRef({x:0,y:0}),p=b.useRef(null),w=b.useRef(!1),m=b.useRef(!1),E=b.useRef(!1),C=tf();return b.useEffect(()=>{if(e?.current){const y=pe(e.current),A=({x:z,y:R})=>{const{nodeInternals:O,onNodeDrag:V,onSelectionDrag:L,updateNodePositions:P,nodeExtent:d,snapGrid:S,snapToGrid:v,nodeOrigin:T,onError:I}=c.getState();f.current={x:z,y:R};let _=!1,$={x:0,y:0,x2:0,y2:0};if(u.current.length>1&&d){const H=rr(u.current,T);$=Jn(H)}if(u.current=u.current.map(H=>{const F={x:z-H.distance.x,y:R-H.distance.y};v&&(F.x=S[0]*Math.round(F.x/S[0]),F.y=S[1]*Math.round(F.y/S[1]));const B=[[d[0][0],d[0][1]],[d[1][0],d[1][1]]];u.current.length>1&&d&&!H.extent&&(B[0][0]=H.positionAbsolute.x-$.x+d[0][0],B[1][0]=H.positionAbsolute.x+(H.width??0)-$.x2+d[1][0],B[0][1]=H.positionAbsolute.y-$.y+d[0][1],B[1][1]=H.positionAbsolute.y+(H.height??0)-$.y2+d[1][1]);const U=yi(H,F,O,B,T,I);return _=_||H.position.x!==U.position.x||H.position.y!==U.position.y,H.position=U.position,H.positionAbsolute=U.positionAbsolute,H}),!_)return;P(u.current,!0,!0),a(!0);const k=o?V:Cn(L);if(k&&p.current){const[H,F]=Nn({nodeId:o,dragItems:u.current,nodeInternals:O});k(p.current,H,F)}},M=()=>{if(!g.current)return;const[z,R]=Lo(x.current,g.current);if(z!==0||R!==0){const{transform:O,panBy:V}=c.getState();f.current.x=(f.current.x??0)-z/O[2],f.current.y=(f.current.y??0)-R/O[2],V({x:z,y:R})&&A(f.current)}h.current=requestAnimationFrame(M)},D=z=>{const{nodeInternals:R,multiSelectionActive:O,nodesDraggable:V,unselectNodesAndEdges:L,onNodeDragStart:P,onSelectionDragStart:d}=c.getState();m.current=!0;const S=o?P:Cn(d);(!i||!s)&&!O&&o&&(R.get(o)?.selected||L()),o&&s&&i&&Bn({id:o,store:c,nodeRef:e});const v=C(z);if(f.current=v,u.current=ju(R,V,v,o),S&&u.current){const[T,I]=Nn({nodeId:o,dragItems:u.current,nodeInternals:R});S(z.sourceEvent,T,I)}};if(t)y.on(".drag",null);else{const z=uc().on("start",R=>{const{domNode:O,nodeDragThreshold:V}=c.getState();V===0&&D(R),E.current=!1;const L=C(R);f.current=L,g.current=O?.getBoundingClientRect()||null,x.current=De(R.sourceEvent,g.current)}).on("drag",R=>{const O=C(R),{autoPanOnNodeDrag:V,nodeDragThreshold:L}=c.getState();if(R.sourceEvent.type==="touchmove"&&R.sourceEvent.touches.length>1&&(E.current=!0),!E.current){if(!w.current&&m.current&&V&&(w.current=!0,M()),!m.current){const P=O.xSnapped-(f?.current?.x??0),d=O.ySnapped-(f?.current?.y??0);Math.sqrt(P*P+d*d)>L&&D(R)}(f.current.x!==O.xSnapped||f.current.y!==O.ySnapped)&&u.current&&m.current&&(p.current=R.sourceEvent,x.current=De(R.sourceEvent,g.current),A(O))}}).on("end",R=>{if(!(!m.current||E.current)&&(a(!1),w.current=!1,m.current=!1,cancelAnimationFrame(h.current),u.current)){const{updateNodePositions:O,nodeInternals:V,onNodeDragStop:L,onSelectionDragStop:P}=c.getState(),d=o?L:Cn(P);if(O(u.current,!1,!1),d){const[S,v]=Nn({nodeId:o,dragItems:u.current,nodeInternals:V});d(R.sourceEvent,S,v)}}}).filter(R=>{const O=R.target;return!R.button&&(!n||!Jr(O,`.${n}`,e))&&(!r||Jr(O,r,e))});return y.call(z),()=>{y.on(".drag",null)}}}},[e,t,n,r,s,c,o,i,C]),l}function wi(){const e=ne();return b.useCallback(n=>{const{nodeInternals:r,nodeExtent:o,updateNodePositions:s,getNodes:i,snapToGrid:c,snapGrid:l,onError:a,nodesDraggable:u}=e.getState(),f=i().filter(E=>E.selected&&(E.draggable||u&&typeof E.draggable>"u")),h=c?l[0]:5,g=c?l[1]:5,x=n.isShiftPressed?4:1,p=n.x*h*x,w=n.y*g*x,m=f.map(E=>{if(E.positionAbsolute){const C={x:E.positionAbsolute.x+p,y:E.positionAbsolute.y+w};c&&(C.x=l[0]*Math.round(C.x/l[0]),C.y=l[1]*Math.round(C.y/l[1]));const{positionAbsolute:y,position:A}=yi(E,C,r,o,void 0,a);E.position=A,E.positionAbsolute=y}return E});s(m,!0,!1)},[])}const ct={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var wt=e=>{const t=({id:n,type:r,data:o,xPos:s,yPos:i,xPosOrigin:c,yPosOrigin:l,selected:a,onClick:u,onMouseEnter:f,onMouseMove:h,onMouseLeave:g,onContextMenu:x,onDoubleClick:p,style:w,className:m,isDraggable:E,isSelectable:C,isConnectable:y,isFocusable:A,selectNodesOnDrag:M,sourcePosition:D,targetPosition:z,hidden:R,resizeObserver:O,dragHandle:V,zIndex:L,isParent:P,noDragClassName:d,noPanClassName:S,initialized:v,disableKeyboardA11y:T,ariaLabel:I,rfId:_,hasHandleBounds:$})=>{const k=ne(),H=b.useRef(null),F=b.useRef(null),B=b.useRef(D),U=b.useRef(z),q=b.useRef(r),W=C||E||u||f||h||g,G=wi(),j=xt(n,k.getState,f),K=xt(n,k.getState,h),he=xt(n,k.getState,g),ue=xt(n,k.getState,x),ge=xt(n,k.getState,p),fe=Q=>{const{nodeDragThreshold:X}=k.getState();if(C&&(!M||!E||X>0)&&Bn({id:n,store:k,nodeRef:H}),u){const ce=k.getState().nodeInternals.get(n);ce&&u(Q,{...ce})}},te=Q=>{if(!Hn(Q)&&!T)if(Fo.includes(Q.key)&&C){const X=Q.key==="Escape";Bn({id:n,store:k,unselect:X,nodeRef:H})}else E&&a&&Object.prototype.hasOwnProperty.call(ct,Q.key)&&(k.setState({ariaLiveMessage:`Moved selected node ${Q.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~s}, y: ${~~i}`}),G({x:ct[Q.key].x,y:ct[Q.key].y,isShiftPressed:Q.shiftKey}))};b.useEffect(()=>()=>{F.current&&(O?.unobserve(F.current),F.current=null)},[]),b.useEffect(()=>{if(H.current&&!R){const Q=H.current;(!v||!$||F.current!==Q)&&(F.current&&O?.unobserve(F.current),O?.observe(Q),F.current=Q)}},[R,v,$]),b.useEffect(()=>{const Q=q.current!==r,X=B.current!==D,ce=U.current!==z;H.current&&(Q||X||ce)&&(Q&&(q.current=r),X&&(B.current=D),ce&&(U.current=z),k.getState().updateNodeDimensions([{id:n,nodeElement:H.current,forceUpdate:!0}]))},[n,r,D,z]);const xe=xi({nodeRef:H,disabled:R||!E,noDragClassName:d,handleSelector:V,nodeId:n,isSelectable:C,selectNodesOnDrag:M});return R?null:N.createElement("div",{className:ae(["react-flow__node",`react-flow__node-${r}`,{[S]:E},m,{selected:a,selectable:C,parent:P,dragging:xe}]),ref:H,style:{zIndex:L,transform:`translate(${c}px,${l}px)`,pointerEvents:W?"all":"none",visibility:v?"visible":"hidden",...w},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:j,onMouseMove:K,onMouseLeave:he,onContextMenu:ue,onClick:fe,onDoubleClick:ge,onKeyDown:A?te:void 0,tabIndex:A?0:void 0,role:A?"button":void 0,"aria-describedby":T?void 0:`${ci}-${_}`,"aria-label":I},N.createElement(pu,{value:n},N.createElement(e,{id:n,data:o,type:r,xPos:s,yPos:i,selected:a,isConnectable:y,sourcePosition:D,targetPosition:z,dragging:xe,dragHandle:V,zIndex:L})))};return t.displayName="NodeWrapper",b.memo(t)};const nf=e=>{const t=e.getNodes().filter(n=>n.selected);return{...rr(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function rf({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=ne(),{width:o,height:s,x:i,y:c,transformString:l,userSelectionActive:a}=J(nf,re),u=wi(),f=b.useRef(null);if(b.useEffect(()=>{n||f.current?.focus({preventScroll:!0})},[n]),xi({nodeRef:f}),a||!o||!s)return null;const h=e?x=>{const p=r.getState().getNodes().filter(w=>w.selected);e(x,p)}:void 0,g=x=>{Object.prototype.hasOwnProperty.call(ct,x.key)&&u({x:ct[x.key].x,y:ct[x.key].y,isShiftPressed:x.shiftKey})};return N.createElement("div",{className:ae(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l}},N.createElement("div",{ref:f,className:"react-flow__nodesselection-rect",onContextMenu:h,tabIndex:n?void 0:-1,onKeyDown:n?void 0:g,style:{width:o,height:s,top:c,left:i}}))}var of=b.memo(rf);const sf=e=>e.nodesSelectionActive,vi=({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:s,onPaneScroll:i,deleteKeyCode:c,onMove:l,onMoveStart:a,onMoveEnd:u,selectionKeyCode:f,selectionOnDrag:h,selectionMode:g,onSelectionStart:x,onSelectionEnd:p,multiSelectionKeyCode:w,panActivationKeyCode:m,zoomActivationKeyCode:E,elementsSelectable:C,zoomOnScroll:y,zoomOnPinch:A,panOnScroll:M,panOnScrollSpeed:D,panOnScrollMode:z,zoomOnDoubleClick:R,panOnDrag:O,defaultViewport:V,translateExtent:L,minZoom:P,maxZoom:d,preventScrolling:S,onSelectionContextMenu:v,noWheelClassName:T,noPanClassName:I,disableKeyboardA11y:_})=>{const $=J(sf),k=Tt(f),H=Tt(m),F=H||O,B=H||M,U=k||h&&F!==!0;return Xu({deleteKeyCode:c,multiSelectionKeyCode:w}),N.createElement(Wu,{onMove:l,onMoveStart:a,onMoveEnd:u,onPaneContextMenu:s,elementsSelectable:C,zoomOnScroll:y,zoomOnPinch:A,panOnScroll:B,panOnScrollSpeed:D,panOnScrollMode:z,zoomOnDoubleClick:R,panOnDrag:!k&&F,defaultViewport:V,translateExtent:L,minZoom:P,maxZoom:d,zoomActivationKeyCode:E,preventScrolling:S,noWheelClassName:T,noPanClassName:I},N.createElement(pi,{onSelectionStart:x,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:s,onPaneScroll:i,panOnDrag:F,isSelecting:!!U,selectionMode:g},e,$&&N.createElement(of,{onSelectionContextMenu:v,noPanClassName:I,disableKeyboardA11y:_})))};vi.displayName="FlowRenderer";var af=b.memo(vi);function cf(e){return J(b.useCallback(n=>e?Go(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}function lf(e){const t={input:wt(e.input||oi),default:wt(e.default||Ln),output:wt(e.output||si),group:wt(e.group||ir)},n={},r=Object.keys(e).filter(o=>!["input","default","output","group"].includes(o)).reduce((o,s)=>(o[s]=wt(e[s]||Ln),o),n);return{...t,...r}}const uf=({x:e,y:t,width:n,height:r,origin:o})=>!n||!r?{x:e,y:t}:o[0]<0||o[1]<0||o[0]>1||o[1]>1?{x:e,y:t}:{x:e-n*o[0],y:t-r*o[1]},ff=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),_i=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:o,updateNodeDimensions:s,onError:i}=J(ff,re),c=cf(e.onlyRenderVisibleElements),l=b.useRef(),a=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const u=new ResizeObserver(f=>{const h=f.map(g=>({id:g.target.getAttribute("data-id"),nodeElement:g.target,forceUpdate:!0}));s(h)});return l.current=u,u},[]);return b.useEffect(()=>()=>{l?.current?.disconnect()},[]),N.createElement("div",{className:"react-flow__nodes",style:ar},c.map(u=>{let f=u.type||"default";e.nodeTypes[f]||(i?.("003",Ae.error003(f)),f="default");const h=e.nodeTypes[f]||e.nodeTypes.default,g=!!(u.draggable||t&&typeof u.draggable>"u"),x=!!(u.selectable||o&&typeof u.selectable>"u"),p=!!(u.connectable||n&&typeof u.connectable>"u"),w=!!(u.focusable||r&&typeof u.focusable>"u"),m=e.nodeExtent?Qn(u.positionAbsolute,e.nodeExtent):u.positionAbsolute,E=m?.x??0,C=m?.y??0,y=uf({x:E,y:C,width:u.width??0,height:u.height??0,origin:e.nodeOrigin});return N.createElement(h,{key:u.id,id:u.id,className:u.className,style:u.style,type:f,data:u.data,sourcePosition:u.sourcePosition||Y.Bottom,targetPosition:u.targetPosition||Y.Top,hidden:u.hidden,xPos:E,yPos:C,xPosOrigin:y.x,yPosOrigin:y.y,selectNodesOnDrag:e.selectNodesOnDrag,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,selected:!!u.selected,isDraggable:g,isSelectable:x,isConnectable:p,isFocusable:w,resizeObserver:a,dragHandle:u.dragHandle,zIndex:u[ee]?.z??0,isParent:!!u[ee]?.isParent,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,initialized:!!u.width&&!!u.height,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,ariaLabel:u.ariaLabel,hasHandleBounds:!!u[ee]?.handleBounds})}))};_i.displayName="NodeRenderer";var df=b.memo(_i);const hf=(e,t,n)=>n===Y.Left?e-t:n===Y.Right?e+t:e,gf=(e,t,n)=>n===Y.Top?e-t:n===Y.Bottom?e+t:e,eo="react-flow__edgeupdater",to=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:o,onMouseEnter:s,onMouseOut:i,type:c})=>N.createElement("circle",{onMouseDown:o,onMouseEnter:s,onMouseOut:i,className:ae([eo,`${eo}-${c}`]),cx:hf(t,r,e),cy:gf(n,r,e),r,stroke:"transparent",fill:"transparent"}),pf=()=>!0;var rt=e=>{const t=({id:n,className:r,type:o,data:s,onClick:i,onEdgeDoubleClick:c,selected:l,animated:a,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:g,labelBgPadding:x,labelBgBorderRadius:p,style:w,source:m,target:E,sourceX:C,sourceY:y,targetX:A,targetY:M,sourcePosition:D,targetPosition:z,elementsSelectable:R,hidden:O,sourceHandleId:V,targetHandleId:L,onContextMenu:P,onMouseEnter:d,onMouseMove:S,onMouseLeave:v,reconnectRadius:T,onReconnect:I,onReconnectStart:_,onReconnectEnd:$,markerEnd:k,markerStart:H,rfId:F,ariaLabel:B,isFocusable:U,isReconnectable:q,pathOptions:W,interactionWidth:G,disableKeyboardA11y:j})=>{const K=b.useRef(null),[he,ue]=b.useState(!1),[ge,fe]=b.useState(!1),te=ne(),xe=b.useMemo(()=>`url('#${On(H,F)}')`,[H,F]),Q=b.useMemo(()=>`url('#${On(k,F)}')`,[k,F]);if(O)return null;const X=oe=>{const{edges:we,addSelectedEdges:Oe,unselectNodesAndEdges:Ve,multiSelectionActive:je}=te.getState(),ve=we.find(Le=>Le.id===n);ve&&(R&&(te.setState({nodesSelectionActive:!1}),ve.selected&&je?(Ve({nodes:[],edges:[ve]}),K.current?.blur()):Oe([n])),i&&i(oe,ve))},ce=yt(n,te.getState,c),ze=yt(n,te.getState,P),dt=yt(n,te.getState,d),We=yt(n,te.getState,S),Ge=yt(n,te.getState,v),be=(oe,we)=>{if(oe.button!==0)return;const{edges:Oe,isValidConnection:Ve}=te.getState(),je=we?E:m,ve=(we?L:V)||null,Le=we?"target":"source",ln=Ve||pf,un=we,gt=Oe.find(Be=>Be.id===n);fe(!0),_?.(oe,gt,Le);const fn=Be=>{fe(!1),$?.(Be,gt,Le)};ei({event:oe,handleId:ve,nodeId:je,onConnect:Be=>I?.(gt,Be),isTarget:un,getState:te.getState,setState:te.setState,isValidConnection:ln,edgeUpdaterType:Le,onReconnectEnd:fn})},Ke=oe=>be(oe,!0),He=oe=>be(oe,!1),Pe=()=>ue(!0),Qe=()=>ue(!1),Je=!R&&!i,ht=oe=>{if(!j&&Fo.includes(oe.key)&&R){const{unselectNodesAndEdges:we,addSelectedEdges:Oe,edges:Ve}=te.getState();oe.key==="Escape"?(K.current?.blur(),we({edges:[Ve.find(ve=>ve.id===n)]})):Oe([n])}};return N.createElement("g",{className:ae(["react-flow__edge",`react-flow__edge-${o}`,r,{selected:l,animated:a,inactive:Je,updating:he}]),onClick:X,onDoubleClick:ce,onContextMenu:ze,onMouseEnter:dt,onMouseMove:We,onMouseLeave:Ge,onKeyDown:U?ht:void 0,tabIndex:U?0:void 0,role:U?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":B===null?void 0:B||`Edge from ${m} to ${E}`,"aria-describedby":U?`${li}-${F}`:void 0,ref:K},!ge&&N.createElement(e,{id:n,source:m,target:E,selected:l,animated:a,label:u,labelStyle:f,labelShowBg:h,labelBgStyle:g,labelBgPadding:x,labelBgBorderRadius:p,data:s,style:w,sourceX:C,sourceY:y,targetX:A,targetY:M,sourcePosition:D,targetPosition:z,sourceHandleId:V,targetHandleId:L,markerStart:xe,markerEnd:Q,pathOptions:W,interactionWidth:G}),q&&N.createElement(N.Fragment,null,(q==="source"||q===!0)&&N.createElement(to,{position:D,centerX:C,centerY:y,radius:T,onMouseDown:Ke,onMouseEnter:Pe,onMouseOut:Qe,type:"source"}),(q==="target"||q===!0)&&N.createElement(to,{position:z,centerX:A,centerY:M,radius:T,onMouseDown:He,onMouseEnter:Pe,onMouseOut:Qe,type:"target"})))};return t.displayName="EdgeWrapper",b.memo(t)};function mf(e){const t={default:rt(e.default||en),straight:rt(e.bezier||tr),step:rt(e.step||er),smoothstep:rt(e.step||cn),simplebezier:rt(e.simplebezier||jn)},n={},r=Object.keys(e).filter(o=>!["default","bezier"].includes(o)).reduce((o,s)=>(o[s]=rt(e[s]||en),o),n);return{...t,...r}}function no(e,t,n=null){const r=(n?.x||0)+t.x,o=(n?.y||0)+t.y,s=n?.width||t.width,i=n?.height||t.height;switch(e){case Y.Top:return{x:r+s/2,y:o};case Y.Right:return{x:r+s,y:o+i/2};case Y.Bottom:return{x:r+s/2,y:o+i};case Y.Left:return{x:r,y:o+i/2}}}function ro(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const yf=(e,t,n,r,o,s)=>{const i=no(n,e,t),c=no(s,r,o);return{sourceX:i.x,sourceY:i.y,targetX:c.x,targetY:c.y}};function xf({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:r,targetWidth:o,targetHeight:s,width:i,height:c,transform:l}){const a={x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x+n,t.x+o),y2:Math.max(e.y+r,t.y+s)};a.x===a.x2&&(a.x2+=1),a.y===a.y2&&(a.y2+=1);const u=Jn({x:(0-l[0])/l[2],y:(0-l[1])/l[2],width:i/l[2],height:c/l[2]}),f=Math.max(0,Math.min(u.x2,a.x2)-Math.max(u.x,a.x)),h=Math.max(0,Math.min(u.y2,a.y2)-Math.max(u.y,a.y));return Math.ceil(f*h)>0}function oo(e){const t=e?.[ee]?.handleBounds||null,n=t&&e?.width&&e?.height&&typeof e?.positionAbsolute?.x<"u"&&typeof e?.positionAbsolute?.y<"u";return[{x:e?.positionAbsolute?.x||0,y:e?.positionAbsolute?.y||0,width:e?.width||0,height:e?.height||0},t,!!n]}const wf=[{level:0,isMaxLevel:!0,edges:[]}];function vf(e,t,n=!1){let r=-1;const o=e.reduce((i,c)=>{const l=de(c.zIndex);let a=l?c.zIndex:0;if(n){const u=t.get(c.target),f=t.get(c.source),h=c.selected||u?.selected||f?.selected,g=Math.max(f?.[ee]?.z||0,u?.[ee]?.z||0,1e3);a=(l?c.zIndex:0)+(h?g:0)}return i[a]?i[a].push(c):i[a]=[c],r=a>r?a:r,i},{}),s=Object.entries(o).map(([i,c])=>{const l=+i;return{edges:c,level:l,isMaxLevel:l===r}});return s.length===0?wf:s}function _f(e,t,n){const r=J(b.useCallback(o=>e?o.edges.filter(s=>{const i=t.get(s.source),c=t.get(s.target);return i?.width&&i?.height&&c?.width&&c?.height&&xf({sourcePos:i.positionAbsolute||{x:0,y:0},targetPos:c.positionAbsolute||{x:0,y:0},sourceWidth:i.width,sourceHeight:i.height,targetWidth:c.width,targetHeight:c.height,width:o.width,height:o.height,transform:o.transform})}):o.edges,[e,t]));return vf(r,t,n)}const Ef=({color:e="none",strokeWidth:t=1})=>N.createElement("polyline",{style:{stroke:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),Sf=({color:e="none",strokeWidth:t=1})=>N.createElement("polyline",{style:{stroke:e,fill:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),io={[jt.Arrow]:Ef,[jt.ArrowClosed]:Sf};function bf(e){const t=ne();return b.useMemo(()=>Object.prototype.hasOwnProperty.call(io,e)?io[e]:(t.getState().onError?.("009",Ae.error009(e)),null),[e])}const Nf=({id:e,type:t,color:n,width:r=12.5,height:o=12.5,markerUnits:s="strokeWidth",strokeWidth:i,orient:c="auto-start-reverse"})=>{const l=bf(t);return l?N.createElement("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${o}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:c,refX:"0",refY:"0"},N.createElement(l,{color:n,strokeWidth:i})):null},Cf=({defaultColor:e,rfId:t})=>n=>{const r=[];return n.edges.reduce((o,s)=>([s.markerStart,s.markerEnd].forEach(i=>{if(i&&typeof i=="object"){const c=On(i,t);r.includes(c)||(o.push({id:c,color:i.color||e,...i}),r.push(c))}}),o),[]).sort((o,s)=>o.id.localeCompare(s.id))},Ei=({defaultColor:e,rfId:t})=>{const n=J(b.useCallback(Cf({defaultColor:e,rfId:t}),[e,t]),(r,o)=>!(r.length!==o.length||r.some((s,i)=>s.id!==o[i].id)));return N.createElement("defs",null,n.map(r=>N.createElement(Nf,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};Ei.displayName="MarkerDefinitions";var Mf=b.memo(Ei);const Af=e=>({nodesConnectable:e.nodesConnectable,edgesFocusable:e.edgesFocusable,edgesUpdatable:e.edgesUpdatable,elementsSelectable:e.elementsSelectable,width:e.width,height:e.height,connectionMode:e.connectionMode,nodeInternals:e.nodeInternals,onError:e.onError}),Si=({defaultMarkerColor:e,onlyRenderVisibleElements:t,elevateEdgesOnSelect:n,rfId:r,edgeTypes:o,noPanClassName:s,onEdgeContextMenu:i,onEdgeMouseEnter:c,onEdgeMouseMove:l,onEdgeMouseLeave:a,onEdgeClick:u,onEdgeDoubleClick:f,onReconnect:h,onReconnectStart:g,onReconnectEnd:x,reconnectRadius:p,children:w,disableKeyboardA11y:m})=>{const{edgesFocusable:E,edgesUpdatable:C,elementsSelectable:y,width:A,height:M,connectionMode:D,nodeInternals:z,onError:R}=J(Af,re),O=_f(t,z,n);return A?N.createElement(N.Fragment,null,O.map(({level:V,edges:L,isMaxLevel:P})=>N.createElement("svg",{key:V,style:{zIndex:V},width:A,height:M,className:"react-flow__edges react-flow__container"},P&&N.createElement(Mf,{defaultColor:e,rfId:r}),N.createElement("g",null,L.map(d=>{const[S,v,T]=oo(z.get(d.source)),[I,_,$]=oo(z.get(d.target));if(!T||!$)return null;let k=d.type||"default";o[k]||(R?.("011",Ae.error011(k)),k="default");const H=o[k]||o.default,F=D===qe.Strict?_.target:(_.target??[]).concat(_.source??[]),B=ro(v.source,d.sourceHandle),U=ro(F,d.targetHandle),q=B?.position||Y.Bottom,W=U?.position||Y.Top,G=!!(d.focusable||E&&typeof d.focusable>"u"),j=d.reconnectable||d.updatable,K=typeof h<"u"&&(j||C&&typeof j>"u");if(!B||!U)return R?.("008",Ae.error008(B,d)),null;const{sourceX:he,sourceY:ue,targetX:ge,targetY:fe}=yf(S,B,q,I,U,W);return N.createElement(H,{key:d.id,id:d.id,className:ae([d.className,s]),type:k,data:d.data,selected:!!d.selected,animated:!!d.animated,hidden:!!d.hidden,label:d.label,labelStyle:d.labelStyle,labelShowBg:d.labelShowBg,labelBgStyle:d.labelBgStyle,labelBgPadding:d.labelBgPadding,labelBgBorderRadius:d.labelBgBorderRadius,style:d.style,source:d.source,target:d.target,sourceHandleId:d.sourceHandle,targetHandleId:d.targetHandle,markerEnd:d.markerEnd,markerStart:d.markerStart,sourceX:he,sourceY:ue,targetX:ge,targetY:fe,sourcePosition:q,targetPosition:W,elementsSelectable:y,onContextMenu:i,onMouseEnter:c,onMouseMove:l,onMouseLeave:a,onClick:u,onEdgeDoubleClick:f,onReconnect:h,onReconnectStart:g,onReconnectEnd:x,reconnectRadius:p,rfId:r,ariaLabel:d.ariaLabel,isFocusable:G,isReconnectable:K,pathOptions:"pathOptions"in d?d.pathOptions:void 0,interactionWidth:d.interactionWidth,disableKeyboardA11y:m})})))),w):null};Si.displayName="EdgeRenderer";var Tf=b.memo(Si);const $f=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function Rf({children:e}){const t=J($f);return N.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:t}},e)}function kf(e){const t=sr(),n=b.useRef(!1);b.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const If={[Y.Left]:Y.Right,[Y.Right]:Y.Left,[Y.Top]:Y.Bottom,[Y.Bottom]:Y.Top},bi=({nodeId:e,handleType:t,style:n,type:r=ke.Bezier,CustomComponent:o,connectionStatus:s})=>{const{fromNode:i,handleId:c,toX:l,toY:a,connectionMode:u}=J(b.useCallback(M=>({fromNode:M.nodeInternals.get(e),handleId:M.connectionHandleId,toX:(M.connectionPosition.x-M.transform[0])/M.transform[2],toY:(M.connectionPosition.y-M.transform[1])/M.transform[2],connectionMode:M.connectionMode}),[e]),re),f=i?.[ee]?.handleBounds;let h=f?.[t];if(u===qe.Loose&&(h=h||f?.[t==="source"?"target":"source"]),!i||!h)return null;const g=c?h.find(M=>M.id===c):h[0],x=g?g.x+g.width/2:(i.width??0)/2,p=g?g.y+g.height/2:i.height??0,w=(i.positionAbsolute?.x??0)+x,m=(i.positionAbsolute?.y??0)+p,E=g?.position,C=E?If[E]:null;if(!E||!C)return null;if(o)return N.createElement(o,{connectionLineType:r,connectionLineStyle:n,fromNode:i,fromHandle:g,fromX:w,fromY:m,toX:l,toY:a,fromPosition:E,toPosition:C,connectionStatus:s});let y="";const A={sourceX:w,sourceY:m,sourcePosition:E,targetX:l,targetY:a,targetPosition:C};return r===ke.Bezier?[y]=qo(A):r===ke.Step?[y]=Pn({...A,borderRadius:0}):r===ke.SmoothStep?[y]=Pn(A):r===ke.SimpleBezier?[y]=Zo(A):y=`M${w},${m} ${l},${a}`,N.createElement("path",{d:y,fill:"none",className:"react-flow__connection-path",style:n})};bi.displayName="ConnectionLine";const Df=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function zf({containerStyle:e,style:t,type:n,component:r}){const{nodeId:o,handleType:s,nodesConnectable:i,width:c,height:l,connectionStatus:a}=J(Df,re);return!(o&&s&&c&&i)?null:N.createElement("svg",{style:e,width:c,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container"},N.createElement("g",{className:ae(["react-flow__connection",a])},N.createElement(bi,{nodeId:o,handleType:s,style:t,type:n,CustomComponent:r,connectionStatus:a})))}function so(e,t){return b.useRef(null),ne(),b.useMemo(()=>t(e),[e])}const Ni=({nodeTypes:e,edgeTypes:t,onMove:n,onMoveStart:r,onMoveEnd:o,onInit:s,onNodeClick:i,onEdgeClick:c,onNodeDoubleClick:l,onEdgeDoubleClick:a,onNodeMouseEnter:u,onNodeMouseMove:f,onNodeMouseLeave:h,onNodeContextMenu:g,onSelectionContextMenu:x,onSelectionStart:p,onSelectionEnd:w,connectionLineType:m,connectionLineStyle:E,connectionLineComponent:C,connectionLineContainerStyle:y,selectionKeyCode:A,selectionOnDrag:M,selectionMode:D,multiSelectionKeyCode:z,panActivationKeyCode:R,zoomActivationKeyCode:O,deleteKeyCode:V,onlyRenderVisibleElements:L,elementsSelectable:P,selectNodesOnDrag:d,defaultViewport:S,translateExtent:v,minZoom:T,maxZoom:I,preventScrolling:_,defaultMarkerColor:$,zoomOnScroll:k,zoomOnPinch:H,panOnScroll:F,panOnScrollSpeed:B,panOnScrollMode:U,zoomOnDoubleClick:q,panOnDrag:W,onPaneClick:G,onPaneMouseEnter:j,onPaneMouseMove:K,onPaneMouseLeave:he,onPaneScroll:ue,onPaneContextMenu:ge,onEdgeContextMenu:fe,onEdgeMouseEnter:te,onEdgeMouseMove:xe,onEdgeMouseLeave:Q,onReconnect:X,onReconnectStart:ce,onReconnectEnd:ze,reconnectRadius:dt,noDragClassName:We,noWheelClassName:Ge,noPanClassName:be,elevateEdgesOnSelect:Ke,disableKeyboardA11y:He,nodeOrigin:Pe,nodeExtent:Qe,rfId:Je})=>{const ht=so(e,lf),oe=so(t,mf);return kf(s),N.createElement(af,{onPaneClick:G,onPaneMouseEnter:j,onPaneMouseMove:K,onPaneMouseLeave:he,onPaneContextMenu:ge,onPaneScroll:ue,deleteKeyCode:V,selectionKeyCode:A,selectionOnDrag:M,selectionMode:D,onSelectionStart:p,onSelectionEnd:w,multiSelectionKeyCode:z,panActivationKeyCode:R,zoomActivationKeyCode:O,elementsSelectable:P,onMove:n,onMoveStart:r,onMoveEnd:o,zoomOnScroll:k,zoomOnPinch:H,zoomOnDoubleClick:q,panOnScroll:F,panOnScrollSpeed:B,panOnScrollMode:U,panOnDrag:W,defaultViewport:S,translateExtent:v,minZoom:T,maxZoom:I,onSelectionContextMenu:x,preventScrolling:_,noDragClassName:We,noWheelClassName:Ge,noPanClassName:be,disableKeyboardA11y:He},N.createElement(Rf,null,N.createElement(Tf,{edgeTypes:oe,onEdgeClick:c,onEdgeDoubleClick:a,onlyRenderVisibleElements:L,onEdgeContextMenu:fe,onEdgeMouseEnter:te,onEdgeMouseMove:xe,onEdgeMouseLeave:Q,onReconnect:X,onReconnectStart:ce,onReconnectEnd:ze,reconnectRadius:dt,defaultMarkerColor:$,noPanClassName:be,elevateEdgesOnSelect:!!Ke,disableKeyboardA11y:He,rfId:Je},N.createElement(zf,{style:E,type:m,component:C,containerStyle:y})),N.createElement("div",{className:"react-flow__edgelabel-renderer"}),N.createElement(df,{nodeTypes:ht,onNodeClick:i,onNodeDoubleClick:l,onNodeMouseEnter:u,onNodeMouseMove:f,onNodeMouseLeave:h,onNodeContextMenu:g,selectNodesOnDrag:d,onlyRenderVisibleElements:L,noPanClassName:be,noDragClassName:We,disableKeyboardA11y:He,nodeOrigin:Pe,nodeExtent:Qe,rfId:Je})))};Ni.displayName="GraphView";var Hf=b.memo(Ni);const Fn=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Te={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:Fn,nodeExtent:Fn,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:qe.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:lu,isValidConnection:void 0},Pf=()=>Es((e,t)=>({...Te,setNodes:n=>{const{nodeInternals:r,nodeOrigin:o,elevateNodesOnSelect:s}=t();e({nodeInternals:Sn(n,r,o,s)})},getNodes:()=>Array.from(t().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=t();e({edges:n.map(o=>({...r,...o}))})},setDefaultNodesAndEdges:(n,r)=>{const o=typeof n<"u",s=typeof r<"u",i=o?Sn(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:i,edges:s?r:[],hasDefaultNodes:o,hasDefaultEdges:s})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:o,fitViewOnInit:s,fitViewOnInitDone:i,fitViewOnInitOptions:c,domNode:l,nodeOrigin:a}=t(),u=l?.querySelector(".react-flow__viewport");if(!u)return;const f=window.getComputedStyle(u),{m22:h}=new window.DOMMatrixReadOnly(f.transform),g=n.reduce((p,w)=>{const m=o.get(w.id);if(m?.hidden)o.set(m.id,{...m,[ee]:{...m[ee],handleBounds:void 0}});else if(m){const E=Kn(w.nodeElement);E.width&&E.height&&(m.width!==E.width||m.height!==E.height||w.forceUpdate)&&(o.set(m.id,{...m,[ee]:{...m[ee],handleBounds:{source:jr(".source",w.nodeElement,h,a),target:jr(".target",w.nodeElement,h,a)}},...E}),p.push({id:m.id,type:"dimensions",dimensions:E}))}return p},[]);fi(o,a);const x=i||s&&!i&&di(t,{initial:!0,...c});e({nodeInternals:new Map(o),fitViewOnInitDone:x}),g?.length>0&&r?.(g)},updateNodePositions:(n,r=!0,o=!1)=>{const{triggerNodeChanges:s}=t(),i=n.map(c=>{const l={id:c.id,type:"position",dragging:o};return r&&(l.positionAbsolute=c.positionAbsolute,l.position=c.position),l});s(i)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:o,hasDefaultNodes:s,nodeOrigin:i,getNodes:c,elevateNodesOnSelect:l}=t();if(n?.length){if(s){const a=gi(n,c()),u=Sn(a,o,i,l);e({nodeInternals:u})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:o,getNodes:s}=t();let i,c=null;r?i=n.map(l=>Re(l,!0)):(i=ot(s(),n),c=ot(o,[])),Lt({changedNodes:i,changedEdges:c,get:t,set:e})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:o,getNodes:s}=t();let i,c=null;r?i=n.map(l=>Re(l,!0)):(i=ot(o,n),c=ot(s(),[])),Lt({changedNodes:c,changedEdges:i,get:t,set:e})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:o,getNodes:s}=t(),i=n||s(),c=r||o,l=i.map(u=>(u.selected=!1,Re(u.id,!1))),a=c.map(u=>Re(u.id,!1));Lt({changedNodes:l,changedEdges:a,get:t,set:e})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:o}=t();r?.scaleExtent([n,o]),e({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:o}=t();r?.scaleExtent([o,n]),e({maxZoom:n})},setTranslateExtent:n=>{t().d3Zoom?.translateExtent(n),e({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=t(),s=r().filter(c=>c.selected).map(c=>Re(c.id,!1)),i=n.filter(c=>c.selected).map(c=>Re(c.id,!1));Lt({changedNodes:s,changedEdges:i,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(o=>{o.positionAbsolute=Qn(o.position,n)}),e({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:o,height:s,d3Zoom:i,d3Selection:c,translateExtent:l}=t();if(!i||!c||!n.x&&!n.y)return!1;const a=Ie.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),u=[[0,0],[o,s]],f=i?.constrain()(a,u,l);return i.transform(c,f),r[0]!==f.x||r[1]!==f.y||r[2]!==f.k},cancelConnection:()=>e({connectionNodeId:Te.connectionNodeId,connectionHandleId:Te.connectionHandleId,connectionHandleType:Te.connectionHandleType,connectionStatus:Te.connectionStatus,connectionStartHandle:Te.connectionStartHandle,connectionEndHandle:Te.connectionEndHandle}),reset:()=>e({...Te})}),Object.is),Ci=({children:e})=>{const t=b.useRef(null);return t.current||(t.current=Pf()),N.createElement(tu,{value:t.current},e)};Ci.displayName="ReactFlowProvider";const Mi=({children:e})=>b.useContext(an)?N.createElement(N.Fragment,null,e):N.createElement(Ci,null,e);Mi.displayName="ReactFlowWrapper";const Of={input:oi,default:Ln,output:si,group:ir},Vf={default:en,straight:tr,step:er,smoothstep:cn,simplebezier:jn},Lf=[0,0],Bf=[15,15],Ff={x:0,y:0,zoom:1},Yf={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},Xf=b.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:o,nodeTypes:s=Of,edgeTypes:i=Vf,onNodeClick:c,onEdgeClick:l,onInit:a,onMove:u,onMoveStart:f,onMoveEnd:h,onConnect:g,onConnectStart:x,onConnectEnd:p,onClickConnectStart:w,onClickConnectEnd:m,onNodeMouseEnter:E,onNodeMouseMove:C,onNodeMouseLeave:y,onNodeContextMenu:A,onNodeDoubleClick:M,onNodeDragStart:D,onNodeDrag:z,onNodeDragStop:R,onNodesDelete:O,onEdgesDelete:V,onSelectionChange:L,onSelectionDragStart:P,onSelectionDrag:d,onSelectionDragStop:S,onSelectionContextMenu:v,onSelectionStart:T,onSelectionEnd:I,connectionMode:_=qe.Strict,connectionLineType:$=ke.Bezier,connectionLineStyle:k,connectionLineComponent:H,connectionLineContainerStyle:F,deleteKeyCode:B="Backspace",selectionKeyCode:U="Shift",selectionOnDrag:q=!1,selectionMode:W=At.Full,panActivationKeyCode:G="Space",multiSelectionKeyCode:j=Jt()?"Meta":"Control",zoomActivationKeyCode:K=Jt()?"Meta":"Control",snapToGrid:he=!1,snapGrid:ue=Bf,onlyRenderVisibleElements:ge=!1,selectNodesOnDrag:fe=!0,nodesDraggable:te,nodesConnectable:xe,nodesFocusable:Q,nodeOrigin:X=Lf,edgesFocusable:ce,edgesUpdatable:ze,elementsSelectable:dt,defaultViewport:We=Ff,minZoom:Ge=.5,maxZoom:be=2,translateExtent:Ke=Fn,preventScrolling:He=!0,nodeExtent:Pe,defaultMarkerColor:Qe="#b1b1b7",zoomOnScroll:Je=!0,zoomOnPinch:ht=!0,panOnScroll:oe=!1,panOnScrollSpeed:we=.5,panOnScrollMode:Oe=Xe.Free,zoomOnDoubleClick:Ve=!0,panOnDrag:je=!0,onPaneClick:ve,onPaneMouseEnter:Le,onPaneMouseMove:ln,onPaneMouseLeave:un,onPaneScroll:gt,onPaneContextMenu:fn,children:cr,onEdgeContextMenu:Be,onEdgeDoubleClick:$i,onEdgeMouseEnter:Ri,onEdgeMouseMove:ki,onEdgeMouseLeave:Ii,onEdgeUpdate:Di,onEdgeUpdateStart:zi,onEdgeUpdateEnd:Hi,onReconnect:Pi,onReconnectStart:Oi,onReconnectEnd:Vi,reconnectRadius:Li=10,edgeUpdaterRadius:Bi=10,onNodesChange:Fi,onEdgesChange:Yi,noDragClassName:Xi="nodrag",noWheelClassName:Ui="nowheel",noPanClassName:lr="nopan",fitView:Zi=!1,fitViewOptions:qi,connectOnClick:Wi=!0,attributionPosition:Gi,proOptions:Ki,defaultEdgeOptions:Qi,elevateNodesOnSelect:Ji=!0,elevateEdgesOnSelect:ji=!1,disableKeyboardA11y:ur=!1,autoPanOnConnect:es=!0,autoPanOnNodeDrag:ts=!0,connectionRadius:ns=20,isValidConnection:rs,onError:os,style:is,id:fr,nodeDragThreshold:ss,...as},cs)=>{const dn=fr||"1";return N.createElement("div",{...as,style:{...is,...Yf},ref:cs,className:ae(["react-flow",o]),"data-testid":"rf__wrapper",id:fr},N.createElement(Mi,null,N.createElement(Hf,{onInit:a,onMove:u,onMoveStart:f,onMoveEnd:h,onNodeClick:c,onEdgeClick:l,onNodeMouseEnter:E,onNodeMouseMove:C,onNodeMouseLeave:y,onNodeContextMenu:A,onNodeDoubleClick:M,nodeTypes:s,edgeTypes:i,connectionLineType:$,connectionLineStyle:k,connectionLineComponent:H,connectionLineContainerStyle:F,selectionKeyCode:U,selectionOnDrag:q,selectionMode:W,deleteKeyCode:B,multiSelectionKeyCode:j,panActivationKeyCode:G,zoomActivationKeyCode:K,onlyRenderVisibleElements:ge,selectNodesOnDrag:fe,defaultViewport:We,translateExtent:Ke,minZoom:Ge,maxZoom:be,preventScrolling:He,zoomOnScroll:Je,zoomOnPinch:ht,zoomOnDoubleClick:Ve,panOnScroll:oe,panOnScrollSpeed:we,panOnScrollMode:Oe,panOnDrag:je,onPaneClick:ve,onPaneMouseEnter:Le,onPaneMouseMove:ln,onPaneMouseLeave:un,onPaneScroll:gt,onPaneContextMenu:fn,onSelectionContextMenu:v,onSelectionStart:T,onSelectionEnd:I,onEdgeContextMenu:Be,onEdgeDoubleClick:$i,onEdgeMouseEnter:Ri,onEdgeMouseMove:ki,onEdgeMouseLeave:Ii,onReconnect:Pi??Di,onReconnectStart:Oi??zi,onReconnectEnd:Vi??Hi,reconnectRadius:Li??Bi,defaultMarkerColor:Qe,noDragClassName:Xi,noWheelClassName:Ui,noPanClassName:lr,elevateEdgesOnSelect:ji,rfId:dn,disableKeyboardA11y:ur,nodeOrigin:X,nodeExtent:Pe}),N.createElement(ku,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:g,onConnectStart:x,onConnectEnd:p,onClickConnectStart:w,onClickConnectEnd:m,nodesDraggable:te,nodesConnectable:xe,nodesFocusable:Q,edgesFocusable:ce,edgesUpdatable:ze,elementsSelectable:dt,elevateNodesOnSelect:Ji,minZoom:Ge,maxZoom:be,nodeExtent:Pe,onNodesChange:Fi,onEdgesChange:Yi,snapToGrid:he,snapGrid:ue,connectionMode:_,translateExtent:Ke,connectOnClick:Wi,defaultEdgeOptions:Qi,fitView:Zi,fitViewOptions:qi,onNodesDelete:O,onEdgesDelete:V,onNodeDragStart:D,onNodeDrag:z,onNodeDragStop:R,onSelectionDrag:d,onSelectionDragStart:P,onSelectionDragStop:S,noPanClassName:lr,nodeOrigin:X,rfId:dn,autoPanOnConnect:es,autoPanOnNodeDrag:ts,onError:os,connectionRadius:ns,isValidConnection:rs,nodeDragThreshold:ss}),N.createElement($u,{onSelectionChange:L}),cr,N.createElement(ru,{proOptions:Ki,position:Gi}),N.createElement(Pu,{rfId:dn,disableKeyboardA11y:ur})))});Xf.displayName="ReactFlow";const Uf=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");function nd({children:e}){const t=J(Uf);return t?Po.createPortal(e,t):null}const Zf=e=>e.getNodes();function rd(){return J(Zf,re)}const qf=e=>e.edges;function od(){return J(qf,re)}function Ai(e){return t=>{const[n,r]=b.useState(t),o=b.useCallback(s=>r(i=>e(s,i)),[]);return[n,r,o]}}const id=Ai(gi),sd=Ai(Qu);function Wf(){return N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},N.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function Gf(){return N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},N.createElement("path",{d:"M0 0h32v4.2H0z"}))}function Kf(){return N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},N.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function Qf(){return N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},N.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function Jf(){return N.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},N.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const Et=({children:e,className:t,...n})=>N.createElement("button",{type:"button",className:ae(["react-flow__controls-button",t]),...n},e);Et.displayName="ControlButton";const jf=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom}),Ti=({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:o,onZoomIn:s,onZoomOut:i,onFitView:c,onInteractiveChange:l,className:a,children:u,position:f="bottom-left"})=>{const h=ne(),[g,x]=b.useState(!1),{isInteractive:p,minZoomReached:w,maxZoomReached:m}=J(jf,re),{zoomIn:E,zoomOut:C,fitView:y}=sr();if(b.useEffect(()=>{x(!0)},[]),!g)return null;const A=()=>{E(),s?.()},M=()=>{C(),i?.()},D=()=>{y(o),c?.()},z=()=>{h.setState({nodesDraggable:!p,nodesConnectable:!p,elementsSelectable:!p}),l?.(!p)};return N.createElement(Vo,{className:ae(["react-flow__controls",a]),position:f,style:e,"data-testid":"rf__controls"},t&&N.createElement(N.Fragment,null,N.createElement(Et,{onClick:A,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:m},N.createElement(Wf,null)),N.createElement(Et,{onClick:M,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:w},N.createElement(Gf,null))),n&&N.createElement(Et,{className:"react-flow__controls-fitview",onClick:D,title:"fit view","aria-label":"fit view"},N.createElement(Kf,null)),r&&N.createElement(Et,{className:"react-flow__controls-interactive",onClick:z,title:"toggle interactivity","aria-label":"toggle interactivity"},p?N.createElement(Jf,null):N.createElement(Qf,null)),u)};Ti.displayName="Controls";var ad=b.memo(Ti);export{kt as B,ke as C,nd as E,tn as H,Y as P,Ci as R,td as S,us as a,rd as b,vu as c,id as d,sd as e,sr as f,Pn as g,Xf as h,At as i,qe as j,ad as k,Po as r,od as u};